{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./jslib/common/src/abstractions/i18n.service.ts","webpack:///./jslib/common/src/abstractions/log.service.ts","webpack:///./jslib/common/src/abstractions/platformUtils.service.ts","webpack:///./jslib/common/src/abstractions/api.service.ts","webpack:///./jslib/common/src/abstractions/user.service.ts","webpack:///./jslib/angular/src/pipes/i18n.pipe.ts","webpack:///./jslib/common/src/abstractions/messaging.service.ts","webpack:///./jslib/angular/src/directives/a11y-title.directive.ts","webpack:///./jslib/angular/src/directives/api-action.directive.ts","webpack:///./jslib/common/src/abstractions/crypto.service.ts","webpack:///./jslib/common/src/abstractions/cipher.service.ts","webpack:///./jslib/angular/src/components/callout.component.ts","webpack:///./jslib/angular/src/components/callout.component.html","webpack:///./jslib/common/src/models/response/baseResponse.ts","webpack:///./jslib/common/src/abstractions/policy.service.ts","webpack:///./jslib/angular/src/services/modal.service.ts","webpack:///./jslib/common/src/misc/utils.ts","webpack:///./jslib/common/src/importers/baseImporter.ts","webpack:///./jslib/common/src/models/domain/importResult.ts","webpack:///./jslib/common/src/abstractions/passwordGeneration.service.ts","webpack:///./jslib/common/src/abstractions/state.service.ts","webpack:///./jslib/angular/src/directives/stop-click.directive.ts","webpack:///./jslib/common/src/abstractions/storage.service.ts","webpack:///./jslib/common/src/enums/cipherType.ts","webpack:///./jslib/common/src/abstractions/sync.service.ts","webpack:///./jslib/common/src/abstractions/passwordReprompt.service.ts","webpack:///./jslib/common/src/abstractions/collection.service.ts","webpack:///./jslib/common/src/abstractions/environment.service.ts","webpack:///./jslib/common/src/abstractions/userVerification.service.ts","webpack:///./jslib/angular/src/directives/input-verbatim.directive.ts","webpack:///./jslib/common/src/abstractions/auth.service.ts","webpack:///./jslib/common/src/abstractions/folder.service.ts","webpack:///./jslib/angular/src/directives/stop-prop.directive.ts","webpack:///./jslib/common/src/abstractions/event.service.ts","webpack:///./jslib/common/src/enums/policyType.ts","webpack:///./jslib/common/src/services/constants.service.ts","webpack:///./jslib/common/src/abstractions/search.service.ts","webpack:///./jslib/angular/src/directives/autofocus.directive.ts","webpack:///./jslib/common/src/abstractions/keyConnector.service.ts","webpack:///./jslib/common/src/models/domain/domainBase.ts","webpack:///./jslib/common/src/models/view/cardView.ts","webpack:///./jslib/angular/src/pipes/user-name.pipe.ts","webpack:///./jslib/common/src/abstractions/vaultTimeout.service.ts","webpack:///./jslib/common/src/models/domain/encString.ts","webpack:///./jslib/common/src/abstractions/cryptoFunction.service.ts","webpack:///./jslib/common/src/abstractions/audit.service.ts","webpack:///./jslib/common/src/models/request/secretVerificationRequest.ts","webpack:///./jslib/common/src/models/view/secureNoteView.ts","webpack:///./jslib/common/src/enums/secureNoteType.ts","webpack:///./jslib/angular/src/components/icon.component.ts","webpack:///./jslib/angular/src/components/icon.component.html","webpack:///./jslib/angular/src/services/broadcaster.service.ts","webpack:///./jslib/common/src/abstractions/token.service.ts","webpack:///./jslib/angular/src/components/avatar.component.ts","webpack:///./jslib/common/src/enums/twoFactorProviderType.ts","webpack:///./jslib/common/src/abstractions/export.service.ts","webpack:///./jslib/common/src/abstractions/totp.service.ts","webpack:///./jslib/common/src/enums/fieldType.ts","webpack:///./jslib/common/src/abstractions/send.service.ts","webpack:///./src/app/organizations/policies/base-policy.component.ts","webpack:///./src/app/settings/payment.component.ts","webpack:///./src/app/settings/payment.component.html","webpack:///./jslib/common/src/models/view/cipherView.ts","webpack:///./jslib/common/src/models/view/identityView.ts","webpack:///./jslib/common/src/models/view/folderView.ts","webpack:///./jslib/angular/src/services/validation.service.ts","webpack:///./jslib/angular/src/components/verify-master-password.component.ts","webpack:///./jslib/angular/src/components/verify-master-password.component.html","webpack:///./src/app/settings/tax-info.component.ts","webpack:///./src/app/settings/tax-info.component.html","webpack:///./jslib/common/src/models/view/loginView.ts","webpack:///./jslib/common/src/models/domain/collection.ts","webpack:///./jslib/common/src/models/view/collectionView.ts","webpack:///./jslib/angular/src/pipes/search.pipe.ts","webpack:///./jslib/common/src/models/data/cipherData.ts","webpack:///./jslib/common/src/enums/cipherRepromptType.ts","webpack:///./jslib/common/src/enums/sendType.ts","webpack:///./jslib/common/src/models/response/errorResponse.ts","webpack:///./src/app/components/password-strength.component.ts","webpack:///./src/app/components/password-strength.component.html","webpack:///./jslib/common/src/models/data/collectionData.ts","webpack:///./jslib/common/src/enums/organizationUserStatusType.ts","webpack:///./src/app/services/event.service.ts","webpack:///./jslib/common/src/enums/eventType.ts","webpack:///./src/app/settings/two-factor-verify.component.ts","webpack:///./src/app/settings/two-factor-verify.component.html","webpack:///./jslib/common/src/models/domain/cipher.ts","webpack:///./jslib/common/src/enums/organizationUserType.ts","webpack:///./jslib/common/src/models/domain/symmetricCryptoKey.ts","webpack:///./src/app/settings/organization-plans.component.ts","webpack:///./src/app/settings/organization-plans.component.html","webpack:///./jslib/common/src/models/request/cipherRequest.ts","webpack:///./src/app/services/policy-list.service.ts","webpack:///./src/app/services/router.service.ts","webpack:///./jslib/common/src/enums/kdfType.ts","webpack:///./jslib/angular/src/components/modal/modal.ref.ts","webpack:///./jslib/common/src/models/api/permissionsApi.ts","webpack:///./jslib/common/src/enums/paymentMethodType.ts","webpack:///./jslib/common/src/enums/planType.ts","webpack:///./src/app/settings/two-factor-base.component.ts","webpack:///./src/app/tools/cipher-report.component.ts","webpack:///./jslib/common/src/models/view/fieldView.ts","webpack:///./src/app/vault/add-edit.component.ts","webpack:///./src/app/vault/add-edit.component.html","webpack:///./jslib/common/src/abstractions/import.service.ts","webpack:///./src/app/vault/ciphers.component.ts","webpack:///./src/app/vault/ciphers.component.html","webpack:///./jslib/common/src/models/domain/organization.ts","webpack:///./jslib/common/src/models/response/policyResponse.ts","webpack:///./src/app/layouts/navbar.component.ts","webpack:///./src/app/layouts/navbar.component.html","webpack:///./src/app/layouts/footer.component.ts","webpack:///./src/app/layouts/footer.component.html","webpack:///./jslib/common/src/models/request/organizationUserResetPasswordEnrollmentRequest.ts","webpack:///./jslib/common/src/enums/hashPurpose.ts","webpack:///./jslib/common/src/models/request/keysRequest.ts","webpack:///./jslib/common/src/models/data/policyData.ts","webpack:///./jslib/angular/src/components/change-password.component.ts","webpack:///./jslib/common/src/models/request/selectionReadOnlyRequest.ts","webpack:///./jslib/common/src/enums/themeType.ts","webpack:///./jslib/common/src/enums/productType.ts","webpack:///./jslib/common/src/models/view/itemView.ts","webpack:///./jslib/common/src/models/view/loginUriView.ts","webpack:///./jslib/common/src/enums/uriMatchType.ts","webpack:///./src/app/vault/add-edit-custom-fields.component.ts","webpack:///./src/app/vault/add-edit-custom-fields.component.html","webpack:///./src/app/vault/groupings.component.ts","webpack:///./src/app/vault/groupings.component.html","webpack:///./jslib/common/src/models/view/sendFileView.ts","webpack:///./jslib/common/src/models/view/sendTextView.ts","webpack:///./src/app/settings/organizations.component.ts","webpack:///./src/app/settings/organizations.component.html","webpack:///./jslib/common/src/models/response/cipherResponse.ts","webpack:///./jslib/common/src/models/response/selectionReadOnlyResponse.ts","webpack:///./jslib/common/src/abstractions/notifications.service.ts","webpack:///./jslib/common/src/abstractions/settings.service.ts","webpack:///./jslib/common/src/enums/encryptionType.ts","webpack:///./jslib/common/src/models/domain/policy.ts","webpack:///./jslib/common/src/services/auth.service.ts","webpack:///./src/app/organizations/manage/entity-users.component.ts","webpack:///./src/app/organizations/manage/entity-users.component.html","webpack:///./jslib/common/src/enums/deviceType.ts","webpack:///./jslib/common/src/models/request/organizationKeysRequest.ts","webpack:///./jslib/common/src/models/request/organizationUserBulkRequest.ts","webpack:///./src/app/organizations/manage/entity-events.component.ts","webpack:///./src/app/organizations/manage/entity-events.component.html","webpack:///./src/app/settings/api-key.component.ts","webpack:///./src/app/settings/api-key.component.html","webpack:///./jslib/common/src/enums/verificationType.ts","webpack:///./src/app/settings/purge-vault.component.ts","webpack:///./src/app/settings/purge-vault.component.html","webpack:///./src/app/organizations/settings/delete-organization.component.ts","webpack:///./src/app/organizations/settings/delete-organization.component.html","webpack:///./src/app/settings/user-billing.component.ts","webpack:///./src/app/settings/user-billing.component.html","webpack:///./src/app/settings/add-credit.component.ts","webpack:///./src/app/settings/add-credit.component.html","webpack:///./src/app/settings/adjust-payment.component.ts","webpack:///./src/app/settings/adjust-payment.component.html","webpack:///./src/app/settings/adjust-storage.component.ts","webpack:///./src/app/settings/adjust-storage.component.html","webpack:///./src/app/settings/update-license.component.ts","webpack:///./src/app/settings/update-license.component.html","webpack:///./src/app/settings/two-factor-duo.component.ts","webpack:///./src/app/settings/two-factor-duo.component.html","webpack:///./src/app/settings/two-factor-setup.component.ts","webpack:///./src/app/settings/two-factor-setup.component.html","webpack:///./src/app/tools/export.component.ts","webpack:///./src/app/tools/export.component.html","webpack:///./src/app/tools/exposed-passwords-report.component.ts","webpack:///./src/app/tools/exposed-passwords-report.component.html","webpack:///./src/app/organizations/vault/add-edit.component.ts","webpack:///./jslib/common/src/enums/linkedIdType.ts","webpack:///./jslib/common/src/misc/linkedFieldOption.decorator.ts","webpack:///./jslib/common/src/models/domain/card.ts","webpack:///./jslib/common/src/models/domain/field.ts","webpack:///./jslib/common/src/models/domain/identity.ts","webpack:///./jslib/common/src/models/domain/login.ts","webpack:///./jslib/common/src/models/domain/loginUri.ts","webpack:///./jslib/common/src/models/view/passwordHistoryView.ts","webpack:///./jslib/common/src/models/domain/secureNote.ts","webpack:///./src/app/tools/import.component.ts","webpack:///./src/app/tools/import.component.html","webpack:///./src/app/tools/inactive-two-factor-report.component.ts","webpack:///./src/app/tools/inactive-two-factor-report.component.html","webpack:///./src/app/tools/reused-passwords-report.component.ts","webpack:///./src/app/tools/reused-passwords-report.component.html","webpack:///./src/app/tools/unsecured-websites-report.component.ts","webpack:///./src/app/tools/unsecured-websites-report.component.html","webpack:///./src/app/tools/weak-passwords-report.component.ts","webpack:///./src/app/tools/weak-passwords-report.component.html","webpack:///./src/app/vault/attachments.component.ts","webpack:///./src/app/vault/attachments.component.html","webpack:///./src/app/organizations/vault/ciphers.component.ts","webpack:///./src/app/vault/collections.component.ts","webpack:///./src/app/vault/collections.component.html","webpack:///./src/app/organizations/vault/groupings.component.ts","webpack:///./src/app/vault/bulk-actions.component.ts","webpack:///./src/app/vault/bulk-actions.component.html","webpack:///./jslib/common/src/models/domain/sendFile.ts","webpack:///./jslib/common/src/models/domain/sendText.ts","webpack:///./jslib/common/src/models/request/cipherWithIdRequest.ts","webpack:///./jslib/common/src/models/request/folderRequest.ts","webpack:///./jslib/common/src/models/api/sendFileApi.ts","webpack:///./jslib/common/src/models/api/sendTextApi.ts","webpack:///./jslib/angular/src/directives/select-copy.directive.ts","webpack:///./jslib/angular/src/pipes/color-password.pipe.ts","webpack:///./jslib/common/src/models/response/profileResponse.ts","webpack:///./jslib/common/src/models/response/sendResponse.ts","webpack:///./$_lazy_route_resource lazy namespace object","webpack:///./src/app/organizations/policies/disable-send.component.ts","webpack:///./src/app/organizations/policies/disable-send.component.html","webpack:///./jslib/common/src/models/domain/masterPasswordPolicyOptions.ts","webpack:///./src/app/organizations/policies/master-password.component.ts","webpack:///./src/app/organizations/policies/master-password.component.html","webpack:///./src/app/organizations/policies/password-generator.component.ts","webpack:///./src/app/organizations/policies/password-generator.component.html","webpack:///./src/app/organizations/policies/personal-ownership.component.ts","webpack:///./src/app/organizations/policies/personal-ownership.component.html","webpack:///./src/app/organizations/policies/require-sso.component.ts","webpack:///./src/app/organizations/policies/require-sso.component.html","webpack:///./src/app/organizations/policies/reset-password.component.ts","webpack:///./src/app/organizations/policies/reset-password.component.html","webpack:///./src/app/organizations/policies/send-options.component.ts","webpack:///./src/app/organizations/policies/send-options.component.html","webpack:///./src/app/organizations/policies/single-org.component.ts","webpack:///./src/app/organizations/policies/single-org.component.html","webpack:///./src/app/organizations/policies/two-factor-authentication.component.ts","webpack:///./src/app/organizations/policies/two-factor-authentication.component.html","webpack:///./src/app/layouts/frontend-layout.component.ts","webpack:///./src/app/layouts/frontend-layout.component.html","webpack:///./src/app/layouts/organization-layout.component.ts","webpack:///./src/app/layouts/organization-layout.component.html","webpack:///./src/app/layouts/user-layout.component.ts","webpack:///./src/app/layouts/user-layout.component.html","webpack:///./src/app/accounts/accept-emergency.component.ts","webpack:///./src/app/accounts/accept-emergency.component.html","webpack:///./src/app/common/base.accept.component.ts","webpack:///./src/app/accounts/accept-organization.component.ts","webpack:///./src/app/accounts/accept-organization.component.html","webpack:///./src/app/accounts/hint.component.ts","webpack:///./src/app/accounts/hint.component.html","webpack:///./src/app/accounts/lock.component.ts","webpack:///./src/app/accounts/lock.component.html","webpack:///./src/app/accounts/login.component.ts","webpack:///./src/app/accounts/login.component.html","webpack:///./jslib/angular/src/components/captchaProtected.component.ts","webpack:///./src/app/accounts/recover-delete.component.ts","webpack:///./src/app/accounts/recover-delete.component.html","webpack:///./src/app/accounts/recover-two-factor.component.ts","webpack:///./src/app/accounts/recover-two-factor.component.html","webpack:///./src/app/accounts/register.component.ts","webpack:///./src/app/accounts/register.component.html","webpack:///./src/app/accounts/remove-password.component.ts","webpack:///./src/app/accounts/remove-password.component.html","webpack:///./src/app/accounts/set-password.component.ts","webpack:///./src/app/accounts/set-password.component.html","webpack:///./src/app/accounts/sso.component.ts","webpack:///./src/app/accounts/sso.component.html","webpack:///./jslib/angular/src/components/sso.component.ts","webpack:///./src/app/accounts/two-factor.component.ts","webpack:///./src/app/accounts/two-factor.component.html","webpack:///./jslib/common/src/models/request/twoFactorEmailRequest.ts","webpack:///./jslib/common/src/models/request/keyConnectorUserKeyRequest.ts","webpack:///./src/app/accounts/two-factor-options.component.ts","webpack:///./src/app/accounts/two-factor-options.component.html","webpack:///./src/app/accounts/update-temp-password.component.ts","webpack:///./src/app/accounts/update-temp-password.component.html","webpack:///./jslib/common/src/models/request/organizationUserResetPasswordRequest.ts","webpack:///./src/app/accounts/verify-email-token.component.ts","webpack:///./src/app/accounts/verify-email-token.component.html","webpack:///./src/app/accounts/verify-recover-delete.component.ts","webpack:///./src/app/accounts/verify-recover-delete.component.html","webpack:///./src/app/organizations/manage/collections.component.ts","webpack:///./src/app/organizations/manage/collections.component.html","webpack:///./src/app/organizations/manage/collection-add-edit.component.ts","webpack:///./src/app/organizations/manage/collection-add-edit.component.html","webpack:///./jslib/common/src/models/request/collectionRequest.ts","webpack:///./src/app/organizations/manage/events.component.ts","webpack:///./src/app/organizations/manage/events.component.html","webpack:///./src/app/organizations/manage/groups.component.ts","webpack:///./src/app/organizations/manage/groups.component.html","webpack:///./src/app/organizations/manage/group-add-edit.component.ts","webpack:///./src/app/organizations/manage/group-add-edit.component.html","webpack:///./src/app/organizations/manage/manage.component.ts","webpack:///./src/app/organizations/manage/manage.component.html","webpack:///./src/app/organizations/manage/people.component.ts","webpack:///./src/app/organizations/manage/people.component.html","webpack:///./src/app/organizations/manage/user-confirm.component.ts","webpack:///./src/app/organizations/manage/user-confirm.component.html","webpack:///./src/app/organizations/manage/bulk/bulk-confirm.component.ts","webpack:///./src/app/organizations/manage/bulk/bulk-confirm.component.html","webpack:///./src/app/organizations/manage/bulk/bulk-remove.component.ts","webpack:///./src/app/organizations/manage/bulk/bulk-remove.component.html","webpack:///./src/app/organizations/manage/bulk/bulk-status.component.ts","webpack:///./src/app/organizations/manage/bulk/bulk-status.component.html","webpack:///./src/app/organizations/manage/reset-password.component.ts","webpack:///./src/app/organizations/manage/reset-password.component.html","webpack:///./src/app/organizations/manage/user-add-edit.component.ts","webpack:///./src/app/organizations/manage/user-add-edit.component.html","webpack:///./src/app/components/nested-checkbox.component.ts","webpack:///./src/app/components/nested-checkbox.component.html","webpack:///./src/app/organizations/manage/user-groups.component.ts","webpack:///./src/app/organizations/manage/user-groups.component.html","webpack:///./src/app/organizations/manage/policies.component.ts","webpack:///./src/app/organizations/manage/policies.component.html","webpack:///./src/app/organizations/manage/policy-edit.component.ts","webpack:///./src/app/organizations/manage/policy-edit.component.html","webpack:///./src/app/organizations/settings/account.component.ts","webpack:///./src/app/organizations/settings/account.component.html","webpack:///./jslib/common/src/models/request/organizationTaxInfoUpdateRequest.ts","webpack:///./jslib/common/src/models/request/taxInfoUpdateRequest.ts","webpack:///./src/app/organizations/settings/organization-billing.component.ts","webpack:///./src/app/organizations/settings/organization-subscription.component.ts","webpack:///./src/app/organizations/settings/organization-subscription.component.html","webpack:///./src/app/organizations/settings/change-plan.component.ts","webpack:///./src/app/organizations/settings/change-plan.component.html","webpack:///./src/app/organizations/settings/adjust-subscription.component.ts","webpack:///./src/app/organizations/settings/adjust-subscription.component.html","webpack:///./src/app/organizations/settings/download-license.component.ts","webpack:///./src/app/organizations/settings/download-license.component.html","webpack:///./src/app/organizations/settings/settings.component.ts","webpack:///./src/app/organizations/settings/settings.component.html","webpack:///./src/app/organizations/settings/two-factor-setup.component.ts","webpack:///./src/app/settings/two-factor-authenticator.component.ts","webpack:///./src/app/settings/two-factor-authenticator.component.html","webpack:///./src/app/settings/two-factor-email.component.ts","webpack:///./src/app/settings/two-factor-email.component.html","webpack:///./src/app/settings/two-factor-recovery.component.ts","webpack:///./src/app/settings/two-factor-recovery.component.html","webpack:///./src/app/settings/two-factor-webauthn.component.ts","webpack:///./src/app/settings/two-factor-webauthn.component.html","webpack:///./src/app/settings/two-factor-yubikey.component.ts","webpack:///./src/app/settings/two-factor-yubikey.component.html","webpack:///./src/app/organizations/sponsorships/families-for-enterprise-setup.component.ts","webpack:///./src/app/organizations/sponsorships/families-for-enterprise-setup.component.html","webpack:///./jslib/common/src/enums/planSponsorshipType.ts","webpack:///./src/app/organizations/tools/export.component.ts","webpack:///./src/app/organizations/tools/exposed-passwords-report.component.ts","webpack:///./jslib/common/src/models/data/attachmentData.ts","webpack:///./jslib/common/src/models/data/cardData.ts","webpack:///./jslib/common/src/models/data/fieldData.ts","webpack:///./jslib/common/src/models/data/identityData.ts","webpack:///./jslib/common/src/models/data/loginData.ts","webpack:///./jslib/common/src/models/data/loginUriData.ts","webpack:///./jslib/common/src/models/data/passwordHistoryData.ts","webpack:///./jslib/common/src/models/data/secureNoteData.ts","webpack:///./jslib/common/src/models/domain/attachment.ts","webpack:///./jslib/common/src/models/domain/password.ts","webpack:///./jslib/common/src/models/request/cipherCreateRequest.ts","webpack:///./jslib/common/src/models/api/cardApi.ts","webpack:///./jslib/common/src/models/api/fieldApi.ts","webpack:///./jslib/common/src/models/api/identityApi.ts","webpack:///./jslib/common/src/models/api/loginApi.ts","webpack:///./jslib/common/src/models/api/loginUriApi.ts","webpack:///./jslib/common/src/models/api/secureNoteApi.ts","webpack:///./jslib/angular/src/directives/true-false-value.directive.ts","webpack:///./jslib/angular/src/directives/fallback-src.directive.ts","webpack:///./src/app/organizations/tools/import.component.ts","webpack:///./src/app/organizations/tools/inactive-two-factor-report.component.ts","webpack:///./src/app/organizations/tools/reused-passwords-report.component.ts","webpack:///./src/app/organizations/tools/tools.component.ts","webpack:///./src/app/organizations/tools/tools.component.html","webpack:///./src/app/organizations/tools/unsecured-websites-report.component.ts","webpack:///./src/app/organizations/tools/weak-passwords-report.component.ts","webpack:///./src/app/organizations/vault/vault.component.ts","webpack:///./src/app/organizations/vault/vault.component.html","webpack:///./src/app/organizations/vault/attachments.component.ts","webpack:///./jslib/angular/src/components/attachments.component.ts","webpack:///./src/app/organizations/vault/collections.component.ts","webpack:///./jslib/common/src/models/request/cipherCollectionsRequest.ts","webpack:///./src/app/vault/bulk-delete.component.ts","webpack:///./src/app/vault/bulk-delete.component.html","webpack:///./jslib/common/src/models/request/cipherBulkDeleteRequest.ts","webpack:///./src/app/vault/bulk-move.component.ts","webpack:///./src/app/vault/bulk-move.component.html","webpack:///./src/app/vault/bulk-restore.component.ts","webpack:///./src/app/vault/bulk-restore.component.html","webpack:///./src/app/vault/bulk-share.component.ts","webpack:///./src/app/vault/bulk-share.component.html","webpack:///./src/app/send/access.component.ts","webpack:///./src/app/send/access.component.html","webpack:///./src/app/send/send.component.ts","webpack:///./src/app/send/send.component.html","webpack:///./src/app/send/add-edit.component.ts","webpack:///./src/app/send/add-edit.component.html","webpack:///./jslib/common/src/models/view/sendView.ts","webpack:///./src/app/send/efflux-dates.component.ts","webpack:///./src/app/send/efflux-dates.component.html","webpack:///./src/app/settings/account.component.ts","webpack:///./src/app/settings/account.component.html","webpack:///./src/app/settings/deauthorize-sessions.component.ts","webpack:///./src/app/settings/deauthorize-sessions.component.html","webpack:///./src/app/settings/delete-account.component.ts","webpack:///./src/app/settings/delete-account.component.html","webpack:///./src/app/settings/profile.component.ts","webpack:///./src/app/settings/profile.component.html","webpack:///./src/app/settings/change-email.component.ts","webpack:///./src/app/settings/change-email.component.html","webpack:///./jslib/common/src/models/request/emailTokenRequest.ts","webpack:///./src/app/settings/change-password.component.ts","webpack:///./src/app/settings/change-password.component.html","webpack:///./jslib/common/src/enums/emergencyAccessStatusType.ts","webpack:///./jslib/common/src/models/request/emergencyAccessUpdateRequest.ts","webpack:///./jslib/common/src/models/request/folderWithIdRequest.ts","webpack:///./jslib/common/src/models/request/passwordRequest.ts","webpack:///./jslib/common/src/models/request/sendRequest.ts","webpack:///./jslib/common/src/models/request/updateKeyRequest.ts","webpack:///./src/app/settings/change-kdf.component.ts","webpack:///./src/app/settings/change-kdf.component.html","webpack:///./src/app/settings/create-organization.component.ts","webpack:///./src/app/settings/create-organization.component.html","webpack:///./src/app/settings/domain-rules.component.ts","webpack:///./src/app/settings/domain-rules.component.html","webpack:///./src/app/settings/options.component.ts","webpack:///./src/app/settings/options.component.html","webpack:///./src/app/settings/vault-timeout-input.component.ts","webpack:///./src/app/settings/vault-timeout-input.component.html","webpack:///./src/app/settings/link-sso.component.ts","webpack:///./src/app/settings/link-sso.component.html","webpack:///./src/app/settings/premium.component.ts","webpack:///./src/app/settings/premium.component.html","webpack:///./src/app/settings/settings.component.ts","webpack:///./src/app/settings/settings.component.html","webpack:///./src/app/settings/user-subscription.component.ts","webpack:///./src/app/settings/user-subscription.component.html","webpack:///./src/app/tools/breach-report.component.ts","webpack:///./src/app/tools/breach-report.component.html","webpack:///./src/app/tools/password-generator.component.ts","webpack:///./src/app/tools/password-generator.component.html","webpack:///./src/app/tools/password-generator-history.component.ts","webpack:///./src/app/tools/password-generator-history.component.html","webpack:///./src/app/tools/tools.component.ts","webpack:///./src/app/tools/tools.component.html","webpack:///./src/app/vault/vault.component.ts","webpack:///./src/app/vault/vault.component.html","webpack:///./src/app/settings/update-key.component.ts","webpack:///./src/app/settings/update-key.component.html","webpack:///./src/app/vault/folder-add-edit.component.ts","webpack:///./src/app/vault/folder-add-edit.component.html","webpack:///./src/app/vault/share.component.ts","webpack:///./src/app/vault/share.component.html","webpack:///./src/app/settings/verify-email.component.ts","webpack:///./src/app/settings/verify-email.component.html","webpack:///./src/app/providers/providers.component.ts","webpack:///./src/app/providers/providers.component.html","webpack:///./src/app/services/organization-guard.service.ts","webpack:///./src/app/services/organization-type-guard.service.ts","webpack:///./jslib/common/src/enums/permissions.ts","webpack:///./jslib/angular/src/services/auth-guard.service.ts","webpack:///./jslib/angular/src/services/lock-guard.service.ts","webpack:///./jslib/angular/src/services/unauth-guard.service.ts","webpack:///./src/app/settings/emergency-access-view.component.ts","webpack:///./src/app/settings/emergency-access-view.component.html","webpack:///./src/app/settings/emergency-access-attachments.component.ts","webpack:///./src/app/settings/emergency-add-edit.component.ts","webpack:///./src/app/settings/emergency-access.component.ts","webpack:///./src/app/settings/emergency-access.component.html","webpack:///./jslib/common/src/enums/emergencyAccessType.ts","webpack:///./jslib/common/src/models/response/emergencyAccessResponse.ts","webpack:///./jslib/common/src/models/response/attachmentResponse.ts","webpack:///./src/app/settings/emergency-access-add-edit.component.ts","webpack:///./src/app/settings/emergency-access-add-edit.component.html","webpack:///./src/app/settings/emergency-access-confirm.component.ts","webpack:///./src/app/settings/emergency-access-confirm.component.html","webpack:///./src/app/settings/emergency-access-takeover.component.ts","webpack:///./src/app/settings/emergency-access-takeover.component.html","webpack:///./src/app/settings/sponsored-families.component.ts","webpack:///./src/app/settings/sponsored-families.component.html","webpack:///./src/app/settings/sponsoring-org-row.component.ts","webpack:///./src/app/settings/sponsoring-org-row.component.html","webpack:///./src/app/components/password-reprompt.component.ts","webpack:///./src/app/components/password-reprompt.component.html","webpack:///./jslib/angular/src/components/password-reprompt.component.ts","webpack:///./jslib/angular/src/directives/blur-click.directive.ts","webpack:///./jslib/common/src/models/response/collectionResponse.ts","webpack:///./jslib/common/src/models/response/domainsResponse.ts","webpack:///./jslib/common/src/models/response/folderResponse.ts","webpack:///./jslib/common/src/models/response/organizationResponse.ts","webpack:///./jslib/common/src/models/response/planResponse.ts","webpack:///./jslib/common/src/models/response/subscriptionResponse.ts","webpack:///./jslib/common/src/models/response/organizationUserBulkPublicKeyResponse.ts","webpack:///./jslib/common/src/models/response/profileOrganizationResponse.ts","webpack:///./jslib/common/src/models/response/twoFactorWebAuthnResponse.ts","webpack:///./jslib/common/src/misc/sequentialize.ts","webpack:///./jslib/common/src/misc/serviceUtils.ts","webpack:///./jslib/common/src/services/consoleLog.service.ts","webpack:///./jslib/common/src/misc/wordlist.ts","webpack:///./jslib/common/src/models/export/cipherWithIds.ts","webpack:///./jslib/common/src/models/export/collectionWithId.ts","webpack:///./jslib/common/src/models/export/folderWithId.ts","webpack:///./jslib/common/src/models/domain/folder.ts","webpack:///./jslib/common/src/models/data/folderData.ts","webpack:///./jslib/common/src/importers/onepasswordImporters/onepasswordCsvImporter.ts","webpack:///./jslib/common/src/enums/notificationType.ts","webpack:///./jslib/common/src/models/data/sendData.ts","webpack:///./src/app/main.ts","webpack:///./src/scss/styles.scss?580e","webpack:///./src/app/app.module.ts","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.component.html","webpack:///./jslib/common/src/services/broadcaster.service.ts","webpack:///./jslib/common/src/models/request/policyRequest.ts","webpack:///./jslib/common/src/misc/tldjs.noop.ts","webpack:///./src/app/oss-routing.module.ts","webpack:///./jslib/common/src/models/request/emergencyAccessAcceptRequest.ts","webpack:///./jslib/common/src/models/request/organizationUserAcceptRequest.ts","webpack:///./jslib/angular/src/components/hint.component.ts","webpack:///./jslib/common/src/models/request/passwordHintRequest.ts","webpack:///./jslib/angular/src/components/lock.component.ts","webpack:///./jslib/angular/src/components/login.component.ts","webpack:///./jslib/common/src/misc/captcha_iframe.ts","webpack:///./jslib/common/src/misc/iframe_component.ts","webpack:///./jslib/common/src/models/request/deleteRecoverRequest.ts","webpack:///./jslib/common/src/models/request/twoFactorRecoveryRequest.ts","webpack:///./jslib/angular/src/components/register.component.ts","webpack:///./jslib/common/src/models/request/registerRequest.ts","webpack:///./jslib/common/src/models/request/referenceEventRequest.ts","webpack:///./jslib/angular/src/components/remove-password.component.ts","webpack:///./jslib/angular/src/components/set-password.component.ts","webpack:///./jslib/common/src/models/request/setPasswordRequest.ts","webpack:///./jslib/angular/src/components/modal/dynamic-modal.component.ts","webpack:///./jslib/angular/src/components/modal/modal-injector.ts","webpack:///./jslib/angular/src/components/two-factor.component.ts","webpack:///./jslib/common/src/models/domain/authResult.ts","webpack:///./jslib/common/src/models/request/account/setKeyConnectorKeyRequest.ts","webpack:///./jslib/common/src/models/request/deviceRequest.ts","webpack:///./jslib/common/src/models/request/preloginRequest.ts","webpack:///./jslib/common/src/models/request/tokenRequest.ts","webpack:///./jslib/common/src/misc/webauthn_iframe.ts","webpack:///./jslib/angular/src/components/two-factor-options.component.ts","webpack:///./jslib/angular/src/components/update-temp-password.component.ts","webpack:///./jslib/common/src/models/request/updateTempPasswordRequest.ts","webpack:///./jslib/common/src/models/request/verifyEmailRequest.ts","webpack:///./jslib/common/src/models/request/verifyDeleteRecoverRequest.ts","webpack:///./src/app/common/base.events.component.ts","webpack:///./jslib/common/src/models/view/eventView.ts","webpack:///./jslib/common/src/models/request/groupRequest.ts","webpack:///./jslib/common/src/models/request/organizationUserConfirmRequest.ts","webpack:///./src/app/common/base.people.component.ts","webpack:///./jslib/common/src/models/request/organizationUserBulkConfirmRequest.ts","webpack:///./jslib/common/src/models/request/organizationUserInviteRequest.ts","webpack:///./jslib/common/src/models/request/organizationUserUpdateRequest.ts","webpack:///./jslib/common/src/models/request/organizationUserUpdateGroupsRequest.ts","webpack:///./jslib/common/src/models/request/organizationUpdateRequest.ts","webpack:///./jslib/common/src/enums/transactionType.ts","webpack:///./jslib/common/src/models/request/verifyBankRequest.ts","webpack:///./jslib/common/src/models/request/bitPayInvoiceRequest.ts","webpack:///./jslib/common/src/models/request/paymentRequest.ts","webpack:///./src/scss/export.module.scss","webpack:///./jslib/common/src/models/request/organizationCreateRequest.ts","webpack:///./jslib/common/src/models/request/organizationUpgradeRequest.ts","webpack:///./jslib/common/src/models/request/provider/providerOrganizationCreateRequest.ts","webpack:///./jslib/common/src/models/request/organizationSubscriptionUpdateRequest.ts","webpack:///./jslib/common/src/models/request/storageRequest.ts","webpack:///./jslib/common/src/models/request/updateTwoFactorDuoRequest.ts","webpack:///./jslib/common/src/models/request/twoFactorProviderRequest.ts","webpack:///./jslib/common/src/models/request/updateTwoFactorAuthenticatorRequest.ts","webpack:///./jslib/common/src/models/request/updateTwoFactorEmailRequest.ts","webpack:///./jslib/common/src/models/request/updateTwoFactorWebAuthnDeleteRequest.ts","webpack:///./jslib/common/src/models/request/updateTwoFactorWebAuthnRequest.ts","webpack:///./jslib/common/src/models/request/updateTwoFactorYubioOtpRequest.ts","webpack:///./jslib/common/src/models/request/organization/organizationSponsorshipRedeemRequest.ts","webpack:///./jslib/angular/src/components/export.component.ts","webpack:///./jslib/common/src/models/view/attachmentView.ts","webpack:///./jslib/common/src/models/request/attachmentRequest.ts","webpack:///./jslib/angular/src/components/add-edit.component.ts","webpack:///./jslib/angular/src/components/add-edit-custom-fields.component.ts","webpack:///./jslib/angular/src/components/ciphers.component.ts","webpack:///./jslib/angular/src/components/collections.component.ts","webpack:///./jslib/angular/src/components/groupings.component.ts","webpack:///./jslib/common/src/models/domain/sendAccess.ts","webpack:///./jslib/common/src/models/view/sendAccessView.ts","webpack:///./jslib/common/src/models/request/sendAccessRequest.ts","webpack:///./jslib/angular/src/components/send/send.component.ts","webpack:///./jslib/angular/src/components/send/add-edit.component.ts","webpack:///./jslib/angular/src/components/send/efflux-dates.component.ts","webpack:///./jslib/common/src/models/request/updateProfileRequest.ts","webpack:///./jslib/common/src/models/request/emailRequest.ts","webpack:///./jslib/common/src/models/request/sendWithIdRequest.ts","webpack:///./jslib/common/src/models/request/kdfRequest.ts","webpack:///./jslib/common/src/models/request/updateDomainsRequest.ts","webpack:///./jslib/angular/src/components/settings/vault-timeout-input.component.ts","webpack:///./jslib/angular/src/components/password-generator.component.ts","webpack:///./jslib/angular/src/components/password-generator-history.component.ts","webpack:///./jslib/angular/src/components/folder-add-edit.component.ts","webpack:///./jslib/angular/src/components/share.component.ts","webpack:///./jslib/common/src/models/request/emergencyAccessConfirmRequest.ts","webpack:///./jslib/common/src/models/response/passwordHistoryResponse.ts","webpack:///./jslib/common/src/models/request/emergencyAccessInviteRequest.ts","webpack:///./jslib/common/src/models/request/emergencyAccessPasswordRequest.ts","webpack:///./src/app/oss.module.ts","webpack:///./jslib/angular/src/directives/box-row.directive.ts","webpack:///./jslib/angular/src/pipes/search-ciphers.pipe.ts","webpack:///./src/app/services/services.module.ts","webpack:///./src/services/broadcasterMessaging.service.ts","webpack:///./src/services/htmlStorage.service.ts","webpack:///./src/services/i18n.service.ts","webpack:///./jslib/common/src/services/i18n.service.ts","webpack:///./src/services/memoryStorage.service.ts","webpack:///./src/services/passwordReprompt.service.ts","webpack:///./jslib/angular/src/services/passwordReprompt.service.ts","webpack:///./src/services/webPlatformUtils.service.ts","webpack:///./jslib/common/src/services/api.service.ts","webpack:///./jslib/common/src/models/response/apiKeyResponse.ts","webpack:///./jslib/common/src/models/response/attachmentUploadDataResponse.ts","webpack:///./jslib/common/src/models/response/billingResponse.ts","webpack:///./jslib/common/src/models/response/breachAccountResponse.ts","webpack:///./jslib/common/src/models/response/globalDomainResponse.ts","webpack:///./jslib/common/src/models/response/eventResponse.ts","webpack:///./jslib/common/src/models/response/groupResponse.ts","webpack:///./jslib/common/src/models/response/identityCaptchaResponse.ts","webpack:///./jslib/common/src/models/response/identityTokenResponse.ts","webpack:///./jslib/common/src/models/response/identityTwoFactorResponse.ts","webpack:///./jslib/common/src/models/response/listResponse.ts","webpack:///./jslib/common/src/models/response/organization/organizationSsoResponse.ts","webpack:///./jslib/common/src/models/api/ssoConfigApi.ts","webpack:///./jslib/common/src/models/response/organizationAutoEnrollStatusResponse.ts","webpack:///./jslib/common/src/models/response/organizationKeysResponse.ts","webpack:///./jslib/common/src/models/response/keysResponse.ts","webpack:///./jslib/common/src/models/response/organizationSubscriptionResponse.ts","webpack:///./jslib/common/src/models/response/organizationUserBulkResponse.ts","webpack:///./jslib/common/src/models/response/organizationUserResponse.ts","webpack:///./jslib/common/src/models/response/paymentResponse.ts","webpack:///./jslib/common/src/models/response/profileProviderOrganizationResponse.ts","webpack:///./jslib/common/src/models/response/profileProviderResponse.ts","webpack:///./jslib/common/src/models/response/preloginResponse.ts","webpack:///./jslib/common/src/models/response/provider/providerOrganizationResponse.ts","webpack:///./jslib/common/src/models/response/provider/providerResponse.ts","webpack:///./jslib/common/src/models/response/provider/providerUserBulkPublicKeyResponse.ts","webpack:///./jslib/common/src/models/response/provider/providerUserBulkResponse.ts","webpack:///./jslib/common/src/models/response/provider/providerUserResponse.ts","webpack:///./jslib/common/src/models/response/sendAccessResponse.ts","webpack:///./jslib/common/src/models/response/sendFileDownloadDataResponse.ts","webpack:///./jslib/common/src/models/response/sendFileUploadDataResponse.ts","webpack:///./jslib/common/src/models/response/syncResponse.ts","webpack:///./jslib/common/src/models/response/taxInfoResponse.ts","webpack:///./jslib/common/src/models/response/taxRateResponse.ts","webpack:///./jslib/common/src/models/response/twoFactorAuthenticatorResponse.ts","webpack:///./jslib/common/src/models/response/twoFactorDuoResponse.ts","webpack:///./jslib/common/src/models/response/twoFactorEmailResponse.ts","webpack:///./jslib/common/src/models/response/twoFactorProviderResponse.ts","webpack:///./jslib/common/src/models/response/twoFactorRescoverResponse.ts","webpack:///./jslib/common/src/models/response/twoFactorYubiKeyResponse.ts","webpack:///./jslib/common/src/models/response/userKeyResponse.ts","webpack:///./jslib/common/src/models/response/keyConnectorUserKeyResponse.ts","webpack:///./jslib/common/src/services/appId.service.ts","webpack:///./jslib/common/src/services/audit.service.ts","webpack:///./jslib/common/src/misc/throttle.ts","webpack:///./jslib/common/src/services/cipher.service.ts","webpack:///./jslib/common/src/models/request/cipherBulkMoveRequest.ts","webpack:///./jslib/common/src/models/request/cipherBulkRestoreRequest.ts","webpack:///./jslib/common/src/models/request/cipherBulkShareRequest.ts","webpack:///./jslib/common/src/models/request/cipherShareRequest.ts","webpack:///./jslib/common/src/models/domain/sortedCiphersCache.ts","webpack:///./jslib/common/src/services/collection.service.ts","webpack:///./jslib/common/src/models/domain/treeNode.ts","webpack:///./jslib/common/src/enums/logLevelType.ts","webpack:///./jslib/common/src/services/container.service.ts","webpack:///./jslib/common/src/services/crypto.service.ts","webpack:///./jslib/common/src/models/domain/encArrayBuffer.ts","webpack:///./jslib/common/src/models/domain/encryptedObject.ts","webpack:///./jslib/common/src/services/environment.service.ts","webpack:///./jslib/common/src/models/domain/environmentUrls.ts","webpack:///./jslib/common/src/services/event.service.ts","webpack:///./jslib/common/src/models/data/eventData.ts","webpack:///./jslib/common/src/models/request/eventRequest.ts","webpack:///./jslib/common/src/services/export.service.ts","webpack:///./jslib/common/src/models/export/cipher.ts","webpack:///./jslib/common/src/models/export/card.ts","webpack:///./jslib/common/src/models/export/field.ts","webpack:///./jslib/common/src/models/export/identity.ts","webpack:///./jslib/common/src/models/export/login.ts","webpack:///./jslib/common/src/models/export/loginUri.ts","webpack:///./jslib/common/src/models/export/secureNote.ts","webpack:///./jslib/common/src/models/export/collection.ts","webpack:///./jslib/common/src/models/export/event.ts","webpack:///./jslib/common/src/models/export/folder.ts","webpack:///./jslib/common/src/services/fileUpload.service.ts","webpack:///./jslib/common/src/enums/fileUploadType.ts","webpack:///./jslib/common/src/services/azureFileUpload.service.ts","webpack:///./jslib/common/src/services/bitwardenFileUpload.service.ts","webpack:///./jslib/common/src/services/folder.service.ts","webpack:///./jslib/common/src/services/import.service.ts","webpack:///./jslib/common/src/models/request/importCiphersRequest.ts","webpack:///./jslib/common/src/models/request/importOrganizationCiphersRequest.ts","webpack:///./jslib/common/src/models/request/kvpRequest.ts","webpack:///./jslib/common/src/importers/ascendoCsvImporter.ts","webpack:///./jslib/common/src/importers/avastCsvImporter.ts","webpack:///./jslib/common/src/importers/avastJsonImporter.ts","webpack:///./jslib/common/src/importers/aviraCsvImporter.ts","webpack:///./jslib/common/src/importers/bitwardenCsvImporter.ts","webpack:///./jslib/common/src/importers/bitwardenJsonImporter.ts","webpack:///./jslib/common/src/importers/blackBerryCsvImporter.ts","webpack:///./jslib/common/src/importers/blurCsvImporter.ts","webpack:///./jslib/common/src/importers/buttercupCsvImporter.ts","webpack:///./jslib/common/src/importers/chromeCsvImporter.ts","webpack:///./jslib/common/src/importers/clipperzHtmlImporter.ts","webpack:///./jslib/common/src/importers/codebookCsvImporter.ts","webpack:///./jslib/common/src/importers/dashlaneJsonImporter.ts","webpack:///./jslib/common/src/importers/encryptrCsvImporter.ts","webpack:///./jslib/common/src/importers/enpassCsvImporter.ts","webpack:///./jslib/common/src/importers/enpassJsonImporter.ts","webpack:///./jslib/common/src/importers/firefoxCsvImporter.ts","webpack:///./jslib/common/src/importers/fsecureFskImporter.ts","webpack:///./jslib/common/src/importers/gnomeJsonImporter.ts","webpack:///./jslib/common/src/importers/kasperskyTxtImporter.ts","webpack:///./jslib/common/src/importers/keepass2XmlImporter.ts","webpack:///./jslib/common/src/importers/keepassxCsvImporter.ts","webpack:///./jslib/common/src/importers/keeperCsvImporter.ts","webpack:///./jslib/common/src/importers/lastpassCsvImporter.ts","webpack:///./jslib/common/src/importers/logMeOnceCsvImporter.ts","webpack:///./jslib/common/src/importers/meldiumCsvImporter.ts","webpack:///./jslib/common/src/importers/msecureCsvImporter.ts","webpack:///./jslib/common/src/importers/mykiCsvImporter.ts","webpack:///./jslib/common/src/importers/nordpassCsvImporter.ts","webpack:///./jslib/common/src/importers/onepasswordImporters/onepassword1PifImporter.ts","webpack:///./jslib/common/src/importers/onepasswordImporters/onepasswordMacCsvImporter.ts","webpack:///./jslib/common/src/importers/onepasswordImporters/cipherImportContext.ts","webpack:///./jslib/common/src/importers/onepasswordImporters/onepasswordWinCsvImporter.ts","webpack:///./jslib/common/src/importers/padlockCsvImporter.ts","webpack:///./jslib/common/src/importers/passkeepCsvImporter.ts","webpack:///./jslib/common/src/importers/passmanJsonImporter.ts","webpack:///./jslib/common/src/importers/passpackCsvImporter.ts","webpack:///./jslib/common/src/importers/passwordAgentCsvImporter.ts","webpack:///./jslib/common/src/importers/passwordBossJsonImporter.ts","webpack:///./jslib/common/src/importers/passwordDragonXmlImporter.ts","webpack:///./jslib/common/src/importers/passwordSafeXmlImporter.ts","webpack:///./jslib/common/src/importers/passwordWalletTxtImporter.ts","webpack:///./jslib/common/src/importers/rememBearCsvImporter.ts","webpack:///./jslib/common/src/importers/roboformCsvImporter.ts","webpack:///./jslib/common/src/importers/safariCsvImporter.ts","webpack:///./jslib/common/src/importers/safeInCloudXmlImporter.ts","webpack:///./jslib/common/src/importers/saferpassCsvImport.ts","webpack:///./jslib/common/src/importers/secureSafeCsvImporter.ts","webpack:///./jslib/common/src/importers/splashIdCsvImporter.ts","webpack:///./jslib/common/src/importers/stickyPasswordXmlImporter.ts","webpack:///./jslib/common/src/importers/truekeyCsvImporter.ts","webpack:///./jslib/common/src/importers/upmCsvImporter.ts","webpack:///./jslib/common/src/importers/yotiCsvImporter.ts","webpack:///./jslib/common/src/importers/zohoVaultCsvImporter.ts","webpack:///./jslib/common/src/services/keyConnector.service.ts","webpack:///./jslib/common/src/services/notifications.service.ts","webpack:///./jslib/common/src/models/response/notificationResponse.ts","webpack:///./jslib/common/src/services/passwordGeneration.service.ts","webpack:///./jslib/common/src/models/domain/generatedPasswordHistory.ts","webpack:///./jslib/common/src/models/domain/passwordGeneratorPolicyOptions.ts","webpack:///./jslib/common/src/services/policy.service.ts","webpack:///./jslib/common/src/models/domain/resetPasswordPolicyOptions.ts","webpack:///./jslib/common/src/services/search.service.ts","webpack:///./jslib/common/src/services/send.service.ts","webpack:///./jslib/common/src/models/data/sendFileData.ts","webpack:///./jslib/common/src/models/data/sendTextData.ts","webpack:///./jslib/common/src/models/domain/send.ts","webpack:///./jslib/common/src/services/settings.service.ts","webpack:///./jslib/common/src/services/state.service.ts","webpack:///./jslib/common/src/services/sync.service.ts","webpack:///./jslib/common/src/models/data/organizationData.ts","webpack:///./jslib/common/src/models/data/providerData.ts","webpack:///./jslib/common/src/services/token.service.ts","webpack:///./jslib/common/src/services/totp.service.ts","webpack:///./jslib/common/src/services/user.service.ts","webpack:///./jslib/common/src/models/domain/provider.ts","webpack:///./jslib/common/src/enums/providerUserStatusType.ts","webpack:///./jslib/common/src/enums/providerUserType.ts","webpack:///./jslib/common/src/services/userVerification.service.ts","webpack:///./jslib/common/src/models/request/account/verifyOTPRequest.ts","webpack:///./jslib/common/src/services/vaultTimeout.service.ts","webpack:///./jslib/common/src/services/webCryptoFunction.service.ts","webpack:///./jslib/common/src/models/domain/decryptParameters.ts","webpack:///./jslib/common/src/abstractions/fileUpload.service.ts","webpack:///./src/app/services/modal.service.ts","webpack:///./src/app/wildcard-routing.module.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","I18nService","LogService","PlatformUtilsService","ApiService","UserService","i18nService","transform","id","p1","p2","p3","this","I18nPipe","Pipe","MessagingService","el","renderer","title","ngOnInit","nativeElement","hasAttribute","setAttribute","A11yTitleDirective","Directive","selector","appA11yTitle","Input","validationService","logService","ngOnChanges","changes","appApiAction","then","loading","response","e","ErrorResponse","constructor","captchaRequired","error","getSingleMessage","showError","ApiActionDirective","CryptoService","CipherService","type","useAlertRole","calloutStyle","undefined","enforcedPolicyMessage","icon","getPasswordScoreAlertDisplay","enforcedPolicyOptions","str","minComplexity","CalloutComponent","Component","templateUrl","clickable","getResponseProperty","propertyName","exactName","Error","otherCasePropertyName","charAt","toUpperCase","toLowerCase","BaseResponse","PolicyService","allowMultipleModals","ModalConfig","componentFactoryResolver","applicationRef","injector","modalList","factoryResolvers","Map","document","addEventListener","event","modalCount","topModal","instance","close","openViewRef","componentType","viewContainerRef","setComponentParameters","openInternal","modalRef","modalComponentRef","insert","hostView","onCreated","pipe","first","toPromise","componentRef","open","config","registerComponentFactoryResolver","set","resolveComponentFactory","has","attachToDom","createModalComponent","childComponentType","attachView","domElem","rootNodes","body","appendChild","onClosed","subscribe","detachView","destroy","pop","getFocus","setupHandlers","backdrop","classList","add","modalEl","querySelector","dialogEl","createElement","className","style","zIndex","prepend","stopPropagation","Array","from","querySelectorAll","onClose","closed","remove","ModalRef","map","WeakMap","DynamicModalComponent","ModalInjector","ModalService","Injectable","nodeURL","init","Utils","inited","isNode","process","release","isBrowser","isNativeScript","isMobileBrowser","isMobile","isAppleMobileBrowser","isAppleMobile","global","fromB64ToArray","Uint8Array","Buffer","binaryString","atob","bytes","charCodeAt","fromUrlB64ToArray","fromUrlB64ToB64","fromHexToArray","parseInt","substr","fromUtf8ToArray","strUtf8","unescape","encodeURIComponent","arr","fromByteStringToArray","fromBufferToB64","buffer","toString","binary","byteLength","String","fromCharCode","btoa","fromBufferToUrlB64","fromB64toUrlB64","b64Str","replace","fromBufferToUtf8","encodedString","decodeURIComponent","escape","fromBufferToByteString","fromBufferToHex","x","join","urlB64Str","output","fromUrlB64ToUtf8","fromB64ToUtf8","fromUtf8ToB64","utfStr","fromUtf8ToUrlB64","newGuid","Math","random","isGuid","RegExp","test","getHostname","uriString","url","getUrl","hostname","getHost","host","getDomain","trim","startsWith","httpUrl","indexOf","tldEndingRegex","getUrlObject","tldjs","isValid","validIpAddress","urlDomain","domain","getQueryParams","search","split","forEach","pair","parts","getSortFunction","prop","a","b","collator","compare","localeCompare","isNullOrWhitespace","nameOf","assign","target","source","iterateEnum","obj","keys","filter","k","Number","isNaN","camelToPascalCase","ipString","win","mobile","navigator","userAgent","vendor","opera","match","URL","parse","hasProtocol","anchor","href","regexpEmojiPresentation","organizationId","ConsoleLogService","newLineRegex","passwordFieldNames","usernameFieldNames","notesFieldNames","uriFieldNames","parseCsvOptions","encoding","skipEmptyLines","parseXml","doc","DOMParser","parseFromString","parseCsv","header","options","parseOptions","splitNewLine","papa","errors","row","warning","message","parseSingleRowCsv","rowData","parsedRow","makeUriArray","uri","loginUri","LoginUriView","fixUri","u","substring","nameFromUrl","getValueOrDefault","defaultValue","getCardBrand","cardNum","re","setCardExpiration","cipher","expiration","month","year","card","expMonth","expYear","moveFoldersToCollections","folderRelationships","collectionRelationships","collections","folders","f","collection","CollectionView","querySelectorDirectChild","parentEl","query","els","querySelectorAllDirectChild","parentNode","initLoginCipher","CipherView","favorite","notes","fields","login","LoginView","CipherType","Login","cleanupCipher","processKvp","FieldType","Text","field","FieldView","processFolder","folderName","folderIndex","hasFolder","addFolder","FolderView","ciphers","convertToNoteIfNeeded","username","password","uris","SecureNote","secureNote","SecureNoteView","SecureNoteType","Generic","BaseImporter","success","ImportResult","PasswordGenerationService","StateService","onClick","$event","preventDefault","StopClickDirective","HostListener","StorageService","SyncService","PasswordRepromptService","CollectionService","EnvironmentService","UserVerificationService","condition","disableComplete","InputVerbatimDirective","appInputVerbatim","AuthService","FolderService","StopPropDirective","EventService","PolicyType","environmentUrlsKey","ConstantsService","disableGaKey","disableAddLoginNotificationKey","disableContextMenuItemKey","disableFaviconKey","disableBadgeCounterKey","disableAutoTotpCopyKey","disableAutoBiometricsPromptKey","enableAutoFillOnPageLoadKey","autoFillOnPageLoadDefaultKey","vaultTimeoutKey","vaultTimeoutActionKey","lastActiveKey","neverDomainsKey","installedVersionKey","localeKey","themeKey","collapsedGroupingsKey","autoConfirmFingerprints","dontShowCardsCurrentTab","dontShowIdentitiesCurrentTab","defaultUriMatch","pinProtectedKey","protectedPin","clearClipboardKey","eventCollectionKey","ssoCodeVerifierKey","ssoStateKey","biometricUnlockKey","biometricText","biometricAwaitingAcceptance","biometricFingerprintValidated","disableChangedPasswordNotificationKey","indexedEntityId","SearchService","ngZone","autofocus","isStable","focus","onStable","take","AutofocusDirective","appAutofocus","KeyConnectorService","buildDomainModel","dataObj","alreadyEncrypted","notEncList","objProp","EncString","buildDataModel","notEncStringList","encryptedString","decryptObj","viewModel","orgId","promises","self","theProp","Promise","resolve","mapProp","decrypt","val","all","cardholderName","code","_brand","_number","_subTitle","repeat","number","brand","count","exp","formatYear","linkedFieldOption","CardholderName","ExpMonth","ExpYear","Code","Brand","ItemView","CardView","user","email","UserNamePipe","VaultTimeoutService","encryptedStringOrType","iv","mac","encType","encryptionType","headerPieces","encPieces","EncryptionType","AesCbc128_HmacSha256_B64","AesCbc256_B64","AesCbc256_HmacSha256_B64","Rsa2048_OaepSha256_B64","Rsa2048_OaepSha1_B64","decryptedValue","containerService","bitwardenContainerService","cryptoService","getCryptoService","getOrgKey","decryptToUtf8","CryptoFunctionService","AuditService","SecretVerificationRequest","IconMap","environmentService","stateService","iconsUrl","getIconsUrl","image","fallbackImage","imageEnabled","load","setLoginIcon","Card","Identity","hostnameUri","isWebsite","IconComponent","BroadcasterService","TokenService","TwoFactorProviderType","ExportService","TotpService","SendService","display","organization","BasePolicy","enabled","FormControl","setValue","policyResponse","loadData","patchValue","buildRequestData","buildRequest","policiesEnabledMap","request","PolicyRequest","policy","BasePolicyComponent","lightInputColor","lightInputPlaceholderColor","darkInputColor","darkInputPlaceholderColor","platformUtilsService","apiService","showMethods","showOptions","method","PaymentMethodType","hideBank","hidePaypal","hideCredit","bank","routing_number","account_number","account_holder_name","account_holder_type","currency","country","paymentMethodType","btInstance","stripe","stripeElements","stripeCardNumberElement","stripeCardExpiryElement","stripeCardCvcElement","stripeScript","src","async","onload","Stripe","elements","setStripeElement","btScript","StripeElementStyle","base","color","fontFamily","fontSize","fontSmoothing","invalid","StripeElementClasses","empty","PayPal","BankAccount","Credit","setTheme","head","ngOnDestroy","removeChild","setTimeout","btStylesheet","changeMethod","braintree","dropin","authorization","container","paymentOptionPriority","paypal","flow","buttonStyle","label","size","shape","tagline","createErr","console","createPaymentToken","reject","requestPaymentMethod","payload","nonce","catch","err","postSetupPayment","clientSecret","handleCardSetup","setupIntent","status","payment_method","createToken","token","handleStripeCardPayment","successCallback","paymentIntent","classes","placeholder","mount","getEffectiveTheme","ThemeType","Dark","PaymentComponent","folderId","organizationUseTotp","edit","viewPassword","identity","IdentityView","attachments","passwordHistory","collectionIds","revisionDate","deletedDate","reprompt","CipherRepromptType","None","localData","item","subTitle","hasAttachments","passwordRevisionDate","linkedFieldOptions","linkedFieldValue","propertyKey","linkedFieldI18nKey","i18nKey","middleName","address1","address2","address3","city","state","postalCode","company","phone","ssn","passportNumber","licenseNumber","_firstName","_lastName","firstName","lastName","address","addressPart2","Title","MiddleName","Address1","Address2","Address3","City","State","PostalCode","Country","Company","Email","Phone","Ssn","Username","PassportNumber","LicenseNumber","FirstName","LastName","FullName","defaultErrorMessage","validationErrors","concat","getAllMessages","showToast","timeout","ValidationService","keyConnectorService","userVerificationService","usesKeyConnector","disableRequestOTP","sentCode","secret","getUsesKeyConnector","processChanges","valueChanges","requestOTP","writeValue","registerOnChange","fn","onChange","registerOnTouched","setDisabledState","isDisabled","disable","enable","VerificationType","OTP","MasterPassword","VerifyMasterPasswordComponent","provide","NG_VALUE_ACCESSOR","multi","useExisting","trigger","transition","opacity","animate","providers","animations","route","onCountryChanged","EventEmitter","taxInfo","taxId","line1","line2","includeTaxId","pristine","parent","params","getOrganizationTaxInfo","getTaxInfo","emit","getTaxRates","taxRates","localTaxRate","find","rate","getTaxInfoRequest","OrganizationTaxInfoUpdateRequest","TaxInfoUpdateRequest","submitTaxInfo","hasChanged","putOrganizationTaxInfo","putTaxInfo","changeCountry","TaxInfoComponent","Output","totp","autofillOnPageLoad","hasUris","some","canLaunch","launchUri","Password","externalId","readOnly","hidePasswords","Collection","items","searchText","prop1","prop2","prop3","SearchPipe","userId","LoginData","SecureNoteData","CardData","IdentityData","FieldData","AttachmentData","ph","PasswordHistoryData","CipherData","SendType","identityResponse","errorModel","responseErrorModel","captchaSiteKey","HCaptcha_SiteKey","statusCode","messages","prefix","lastSep","lastIndexOf","showText","scoreWidth","score","text","PasswordStrengthComponent","CollectionData","OrganizationUserStatusType","policyService","getDefaultDateFilters","Date","end","getFullYear","getMonth","getDate","setDate","start","toDateTimeLocalString","formatDateFilters","filterStart","filterEnd","getTime","toISOString","getEventInfo","ev","EventOptions","appInfo","getAppInfo","deviceType","getEventMessage","humanReadableMessage","appIcon","appName","msg","humanReadableMsg","EventType","User_LoggedIn","User_ChangedPassword","User_Updated2fa","User_Disabled2fa","User_Recovered2fa","User_FailedLogIn","User_FailedLogIn2fa","User_ClientExportedVault","User_UpdatedTempPassword","User_MigratedKeyToKeyConnector","Cipher_Created","Cipher_Updated","Cipher_Deleted","Cipher_SoftDeleted","Cipher_Restored","Cipher_AttachmentCreated","Cipher_AttachmentDeleted","Cipher_Shared","Cipher_ClientViewed","Cipher_ClientToggledPasswordVisible","Cipher_ClientToggledHiddenFieldVisible","Cipher_ClientToggledCardCodeVisible","Cipher_ClientCopiedHiddenField","Cipher_ClientCopiedPassword","Cipher_ClientCopiedCardCode","Cipher_ClientAutofilled","Cipher_UpdatedCollections","Collection_Created","Collection_Updated","Collection_Deleted","Group_Created","Group_Updated","Group_Deleted","OrganizationUser_Invited","OrganizationUser_Confirmed","OrganizationUser_Updated","OrganizationUser_Removed","OrganizationUser_UpdatedGroups","OrganizationUser_UnlinkedSso","OrganizationUser_ResetPassword_Enroll","OrganizationUser_ResetPassword_Withdraw","OrganizationUser_AdminResetPassword","OrganizationUser_ResetSsoLink","OrganizationUser_FirstSsoLogin","Organization_Updated","Organization_PurgedVault","Organization_VaultAccessed","Organization_EnabledSso","Organization_DisabledSso","Organization_EnabledKeyConnector","Organization_DisabledKeyConnector","Policy_Updated","ProviderUser_Invited","ProviderUser_Confirmed","ProviderUser_Updated","ProviderUser_Removed","ProviderOrganization_Created","ProviderOrganization_Added","ProviderOrganization_Removed","ProviderOrganization_VaultAccessed","formatCipherId","getShortId","cipherId","formatCollectionId","collectionId","formatGroupId","groupId","formatOrgUserId","organizationUserId","formatPolicyId","getAll","policies","policyId","formatProviderUserId","providerUserId","formatProviderOrganizationId","providerOrganizationId","DeviceType","Android","iOS","UWP","ChromeExtension","FirefoxExtension","OperaExtension","EdgeExtension","VivaldiExtension","SafariExtension","WindowsDesktop","MacOsDesktop","LinuxDesktop","ChromeBrowser","FirefoxBrowser","OperaBrowser","SafariBrowser","VivaldiBrowser","EdgeBrowser","IEBrowser","UnknownBrowser","shortId","cipherInfo","makeAnchor","outerHTML","providerId","innerHTML","date","pad","getHours","getMinutes","num","norm","floor","abs","EventInfo","onAuthed","submit","formPromise","hashedSecret","masterPasswordHash","otp","apiCall","verificationType","getTwoFactorRecover","Duo","OrganizationDuo","getTwoFactorOrganizationDuo","getTwoFactorDuo","getTwoFactorEmail","WebAuthn","getTwoFactorWebAuthn","Authenticator","getTwoFactorAuthenticator","Yubikey","getTwoFactorYubiKey","TwoFactorVerifyComponent","Attachment","Field","encKey","model","reduce","promise","attachment","decAttachment","decField","decPh","toCipherData","toLoginData","toSecureNoteData","toCardData","toIdentityData","toFieldData","toAttachmentData","toPasswordHistoryData","Cipher","OrganizationUserType","macKey","keyB64","encKeyB64","macKeyB64","SymmetricCryptoKey","toasterService","router","syncService","userService","showFree","showCancel","acceptingSponsorship","product","ProductType","Free","plan","PlanType","onSuccess","onCanceled","selfHosted","ownedBusiness","premiumAccessAddon","additionalStorage","additionalSeats","productTypes","singleOrgPolicyBlock","discount","isSelfHost","getPlans","plans","Enterprise","Teams","changedOwnedBusiness","selectedPlan","isAnnual","validPlans","Custom","canBeUsedByBusiness","legacyYear","disabled","familyPlan","FamiliesAnnually","basePrice","additionalStoragePriceMonthly","additionalStoragePricePerGb","seatPriceMonthly","seatPrice","additionalStorageTotal","hasAdditionalStorageOption","seatTotal","hasAdditionalSeatsOption","subTotal","hasPremiumAccessOption","premiumAccessOptionPrice","trialPeriodDays","taxComponent","taxRate","subtotal","taxCharges","freeTrial","createOrganization","selectedPlanInterval","changedProduct","selectablePlans","baseSeats","TeamsAnnually","changedCountry","paymentComponent","cancel","userHasBlockingSingleOrgPolicy","doSubmit","makeShareKey","shareKey","encrypt","collectionCt","makeKeyPair","orgKeys","createSelfHosted","createCloudHosted","popAsync","updateOrganization","refreshIdentityToken","fullSync","navigate","policyAppliesToUser","SingleOrg","OrganizationUpgradeRequest","businessName","additionalStorageGb","planType","billingAddressCountry","billingAddressPostalCode","getOrganization","hasPublicAndPrivateKeys","orgShareKey","OrganizationKeysRequest","postOrganizationUpgrade","paymentIntentClientSecret","orgKey","OrganizationCreateRequest","collectionName","billingEmail","tokenResult","paymentToken","taxIdNumber","billingAddressLine1","billingAddressLine2","billingAddressCity","billingAddressState","providerRequest","ProviderOrganizationCreateRequest","clientOwnerEmail","getProviderKey","providerKey","organizationCreateRequest","postProviderCreateOrganization","postOrganization","fileEl","getElementById","files","fd","FormData","append","postOrganizationLicense","postOrganizationKeys","OrganizationPlansComponent","ViewChild","lastKnownRevisionDate","LoginApi","LoginUriApi","SecureNoteApi","CardApi","IdentityApi","FieldApi","linkedId","lastUsedDate","attachments2","fileName","attachmentRequest","AttachmentRequest","CipherRequest","addPolicies","getPolicies","PolicyListService","activatedRoute","titleService","previousUrl","currentUrl","events","NavigationEnd","titleId","rawTitle","child","firstChild","snapshot","newTitle","setTitle","getPreviousUrl","setPreviousUrl","RouterService","KdfType","_onCreated","Subject","_onClose","_onClosed","_onShow","_onShown","asObservable","onShow","onShown","show","next","shown","lastResult","created","onClosedPromise","accessEventLogs","accessImportExport","accessReports","manageAllCollections","manageAssignedCollections","createNewCollections","editAnyCollection","deleteAnyCollection","editAssignedCollections","deleteAssignedCollections","manageCiphers","manageGroups","manageSso","managePolicies","manageUsers","manageResetPassword","PermissionsApi","onUpdated","twoFactorProviderType","authed","auth","authResponse","enableFunction","showDialog","buildRequestModel","TwoFactorProviderRequest","putTwoFactorOrganizationDisable","putTwoFactorDisable","requestClass","TwoFactorBaseComponent","modalService","messagingService","passwordRepromptService","requiresPaid","hasLoaded","setCiphers","selectCipher","repromptCipher","AddEditComponent","cipherAddEditModalRef","comp","onSavedCipher","modal","onDeletedCipher","onRestoredCipher","checkAccess","useTotp","send","canAccessPremium","accessPremium","showPasswordPrompt","CipherReportComponent","ViewContainerRef","read","static","newField","showValue","cipherService","folderService","auditService","collectionService","totpService","passwordGenerationService","eventService","showRevisionDate","hasPasswordHistory","viewingPasswordHistory","viewOnly","passwordRevisionDisplayDate","cleanUp","totpUpdateCode","getTimeInterval","totpTick","totpInterval","setInterval","toggleFavorite","launch","copy","typeI18nKey","aType","copyToClipboard","editMode","collect","generatePassword","confirmed","getOptions","premiumRequired","upgradeOrganization","viewHistory","clearInterval","getCode","totpCode","half","totpCodeFormatted","allowOwnershipAssignment","cloneMode","ownershipOptions","allowPersonal","intervalSeconds","epoch","round","mod","totpSec","totpDash","totpLow","ImportService","searchService","showAddNew","onAttachmentsClicked","onShareClicked","onCollectionsClicked","onCloneClicked","pagedCiphers","pageSize","cipherType","userHasPremiumAccess","didScroll","pagedCiphersCount","refreshing","selectAll","loadMore","pagedLength","pagedSize","refresh","reload","deleted","isPaging","searching","isSearching","resetPaging","doSearch","indexedCiphers","searchCiphers","deletedFilter","share","clone","delete","actionPromise","permanent","isDeleted","deleteCipher","restore","restoreWithServer","protectedFields","includes","displayTotpCopyButton","select","selectCount","checkCipher","checked","getSelected","getSelectedIds","hasTotp","deleteWithServer","softDeleteWithServer","showFixOldAttachments","hasOldAttachments","CiphersComponent","usePolicies","useGroups","useDirectory","useEvents","use2fa","useApi","useSso","useKeyConnector","useResetPassword","selfHost","usersGetPremium","seats","maxCollections","maxStorageGb","ssoBound","identifier","permissions","resetPasswordEnrolled","providerName","isProviderUser","familySponsorshipFriendlyName","familySponsorshipAvailable","planProductType","keyConnectorEnabled","keyConnectorUrl","Owner","Confirmed","Manager","Admin","isAdmin","isManager","canCreateNewCollections","canEditAnyCollection","canDeleteAnyCollection","canDeleteAssignedCollections","canEditAssignedCollections","canManagePolicies","Organization","PolicyResponse","tokenService","getName","getEmail","getLastSync","getAllProviders","lock","logOut","NavbarComponent","getApplicationVersion","version","FooterComponent","OrganizationUserResetPasswordEnrollmentRequest","HashPurpose","publicKey","encryptedPrivateKey","KeysRequest","PolicyData","getMasterPasswordPolicyOptions","strongPassword","setupSubmitActions","kdf","getKdf","kdfIterations","getKdfIterations","makeKey","masterPassword","hashPassword","getEncKey","makeEncKey","remakeEncKey","performSubmitActions","masterPasswordRetype","strengthResult","passwordStrength","getPasswordStrengthUserInput","evaluateMasterPassword","updatePasswordStrength","masterPasswordStrengthTimeout","clearTimeout","masterPasswordScore","userInput","atPosition","ChangePasswordComponent","SelectionReadOnlyRequest","CanLaunchWhitelist","_uri","_domain","_hostname","_host","_canLaunch","UriMatchType","RegularExpression","AddEditCustomFieldsComponent","storageService","onSearchTextChanged","searchPlaceholder","searchTextChanged","GroupingsComponent","selectType","sizeName","SendFileView","hidden","SendTextView","vault","loaded","getAllOrganizations","orgs","sort","organizations","ResetPassword","allowEnrollmentChanges","org","autoEnrollEnabled","showEnrolledStatus","unlinkSso","deleteSsoUser","leave","postLeaveOrganization","toggleResetPasswordEnrollment","keyString","toastStringRef","getOrganizationKeys","rsaEncrypt","encryptedKey","resetPasswordKey","putOrganizationUserResetPasswordEnrollment","OrganizationsComponent","AttachmentResponse","h","PasswordHistoryResponse","CipherResponse","SelectionReadOnlyResponse","NotificationsService","SettingsService","Policy","TwoFactorProviders","description","priority","premium","appIdService","vaultTimeoutService","cryptoFunctionService","setCryptoKeys","selectedTwoFactorProviderType","logIn","captchaToken","makePreloginKey","hashedPassword","LocalAuthorization","localHashedPassword","logInHelper","logInSso","codeVerifier","redirectUrl","logInApiKey","clientId","logInTwoFactor","twoFactorProvider","twoFactorToken","remember","localMasterPasswordHash","ssoRedirectUrl","logInComplete","logInSsoComplete","logInApiKeyComplete","callback","getSupportedTwoFactorProviders","twoFactorProvidersData","supportsDuo","supportsWebAuthn","getDefaultTwoFactorProvider","webAuthnSupported","providerType","providerPriority","provider","postPrelogin","PreloginRequest","preloginResponse","authingWithApiKey","authingWithSso","authingWithPassword","getTwoFactorToken","storedTwoFactorToken","getAppId","appId","deviceRequest","DeviceRequest","emailPassword","codeCodeVerifier","clientIdClientSecret","TokenRequest","Remember","postIdentityToken","clearState","AuthResult","siteKey","twoFactor","twoFactorProviders2","twoFactorResponse","twoFactorProviders","tokenResponse","resetMasterPassword","forcePasswordReset","setTwoFactorToken","setTokens","accessToken","refreshToken","setInformation","getUserId","setKey","setKeyHash","getAndSetKey","apiUseKeyConnector","getKeyConnectorUrl","setEncKey","privateKey","keyPair","postAccountKeys","setEncPrivateKey","randomBytes","keyConnectorRequest","KeyConnectorUserKeyRequest","pubKey","privKey","postUserKeyToKeyConnector","setPasswordRequest","SetKeyConnectorKeyRequest","postSetKeyConnectorKey","biometricLocked","onEditedUsers","organizationUserType","organizationUserStatusType","showSelected","selectedCount","allUsers","loadUsers","getOrganizationUsers","users","entity","getGroupUsers","entityId","getCollectionUsers","accessAll","check","selectedChanged","filterSelected","selections","putGroupUsers","putCollectionUsers","EntityUsersComponent","entityName","ids","OrganizationUserBulkRequest","userNamePipe","showUser","orgUsersUserIdMap","orgUsersIdMap","defaultDates","loadEvents","clearExisting","refreshPromise","morePromise","dates","getEventsProviderUser","continuationToken","getEventsOrganizationUser","getEventsCipher","actingUserId","eventInfo","userName","userEmail","ip","ipAddress","EntityEventsComponent","postKey","apiKey","keyType","ApiKeyComponent","postPurgeCiphers","PurgeVaultComponent","descriptionKey","deleteOrganization","DeleteOrganizationComponent","firstLoaded","showAdjustPayment","showAddCredit","transactionType","TransactionType","getOrganizationBilling","billing","getUserBilling","verifyBank","VerifyBankRequest","amount1","verifyAmount1","amount2","verifyAmount2","verifyBankPromise","postOrganizationVerifyBank","addCredit","paymentSourceInApp","closeAddCredit","changePayment","closePayment","balance","paymentSource","AppleInApp","GoogleInApp","invoices","transactions","UserBillingComponent","onAdded","ppLoading","payPalConfig","ppButtonFormAction","ppButtonBusinessId","creditAmount","ppButtonCustomField","subject","returnUrl","location","ppButtonFormRef","BitPay","req","BitPayInvoiceRequest","credit","amount","creditAmountNumber","postBitPayInvoice","bitPayUrl","formatAmount","floatAmount","parseFloat","toFixed","AddCreditComponent","ElementRef","onAdjusted","PaymentRequest","taxInfoComponent","postAccountPayment","postOrganizationPayment","AdjustPaymentComponent","currentType","storageGbPrice","interval","storageAdjustment","StorageRequest","storageGbAdjustment","action","postAccountStorage","postOrganizationStorage","relativeTo","AdjustStorageComponent","updatePromise","postAccountLicense","postOrganizationLicenseUpdate","UpdateLicenseComponent","processResponse","UpdateTwoFactorDuoRequest","integrationKey","ikey","secretKey","skey","putTwoFactorOrganizationDuo","putTwoFactorDuo","TwoFactorDuoComponent","showPolicyWarning","filterProvider","getTwoFactorProviders","evaluatePolicies","manage","openModal","authenticatorModalRef","TwoFactorAuthenticatorComponent","updateStatus","yubikeyModalRef","TwoFactorYubiKeyComponent","duoModalRef","emailModalRef","TwoFactorEmailComponent","webAuthnModalRef","TwoFactorWebAuthnComponent","recoveryCode","recoveryModalRef","TwoFactorRecoveryComponent","ref","childComponent","TwoFactorAuthentication","TwoFactorSetupComponent","exportService","fb","saved","ExportComponent","exposedPasswordMap","getAllCiphers","allCiphers","exposedPasswordCiphers","passwordLeaked","exposedCount","getAllDecrypted","canManageCipher","ExposedPasswordsReportComponent","originalCipher","loadCollections","loadCipher","getCipherAdmin","encryptCipher","saveCipher","putCipherAdmin","CipherCreateRequest","postCipherAdmin","deleteCipherAdmin","putDeleteCipherAdmin","LoginLinkedId","CardLinkedId","IdentityLinkedId","_i18nKey","LinkedMetadata","LoginUri","view","toLoginUriData","LoginUriData","PasswordHistoryView","importService","format","importBlockedByPolicy","successNavigate","setImportOptions","importOptions","PersonalOwnership","importer","getImporter","fileContents","getFileContents","content","import","getFormatInstructionTitle","results","featuredImportOptions","regularImportOptions","fire","heightAuto","buttonsStyling","iconHtml","input","inputValue","inputAttributes","titleText","showConfirmButton","confirmButtonText","onOpen","popupEl","scrollTo","file","reader","FileReader","readAsText","evt","pre","textContent","onerror","ImportComponent","services","cipherDocs","load2fa","fetch","Request","json","categoryName","responseJson","serviceName","category","service","InactiveTwoFactorReportComponent","ciphersWithPasswords","passwordUseMap","reusedPasswordCiphers","ReusedPasswordsReportComponent","unsecuredCiphers","UnsecuredWebsitesReportComponent","passwordStrengthMap","passwordStrengthCache","weakPasswordCiphers","isUserNameNotEmpty","getCacheKey","hasUserName","cacheKey","scoreKey","WeakPasswordsReportComponent","reupload","reuploadCipherAttachment","AttachmentsComponent","onEventsClicked","accessEvents","getAllFromApiForOrganization","indexCiphers","applyFilter","canViewAllCollections","CollectionsComponent","getCollections","collectionDomains","decryptMany","unassignedCollection","getAllNested","nestedCollections","collapse","grouping","isCollapsed","bulkDelete","promptPassword","selectedIds","ciphersComponent","BulkDeleteComponent","bulkDeleteModalRef","cipherIds","onDeleted","bulkRestore","BulkRestoreComponent","bulkRestoreModalRef","onRestored","bulkShare","selectedCiphers","BulkShareComponent","bulkShareModalRef","onShared","bulkMove","BulkMoveComponent","bulkMoveModalRef","onMoved","notProtected","BulkActionsComponent","SendFile","SendText","CipherWithIdRequest","folder","FolderRequest","SendFileApi","SendTextApi","onCopy","copyText","selection","getSelection","rangeCount","getRangeAt","stringEndPos","newLinePos","SelectCopyDirective","passwordArray","colorizedPassword","character","isSpecial","ColorPasswordPipe","providerOrganizations","emailVerified","masterPasswordHint","culture","twoFactorEnabled","securityStamp","ProfileOrganizationResponse","ProfileProviderResponse","ProfileProviderOrganizationResponse","ProfileResponse","accessId","maxAccessCount","accessCount","expirationDate","deletionDate","hideEmail","SendResponse","webpackEmptyAsyncContext","DisableSend","component","DisableSendPolicyComponent","DisableSendPolicy","minLength","requireUpper","requireLower","requireNumbers","requireSpecial","MasterPasswordPolicyOptions","MasterPasswordPolicyComponent","MasterPasswordPolicy","group","showKeyConnectorInfo","passwordScores","PasswordGenerator","PasswordGeneratorPolicyComponent","PasswordGeneratorPolicy","defaultType","useUpper","useLower","useNumbers","useSpecial","minNumbers","minSpecial","minNumberWords","capitalize","includeNumber","defaultTypes","PersonalOwnershipPolicyComponent","PersonalOwnershipPolicy","RequireSso","RequireSsoPolicyComponent","RequireSsoPolicy","singleOrgEnabled","ResetPasswordPolicyComponent","ResetPasswordPolicy","SendOptions","SendOptionsPolicyComponent","SendOptionsPolicy","disableHideEmail","SingleOrgPolicyComponent","SingleOrgPolicy","MaximumVaultTimeout","TwoFactorAuthenticationPolicyComponent","TwoFactorAuthenticationPolicy","FrontendLayoutComponent","BroadcasterSubscriptionId","broadcasterService","run","command","unsubscribe","showManageTab","showToolsTab","isOwner","canManageUsers","canViewAssignedCollections","canManageGroups","canAccessEventLogs","canAccessImportExport","canAccessReports","OrganizationLayoutComponent","UserLayoutComponent","requiredParameters","failedShortMessage","failedMessage","authedHandler","qParams","EmergencyAccessAcceptRequest","postEmergencyAccessAccept","toast","unauthedHandler","AcceptEmergencyComponent","BaseAcceptComponent","queryParams","errorMessage","isAuthenticated","save","getRedirectRoute","urlTree","parseUrl","OrganizationUserAcceptRequest","performResetPasswordAutoEnroll","postOrganizationUserAccept","resetRequest","orgName","organizationName","policyList","getPoliciesByToken","mapPoliciesFromToken","getResetPasswordPolicyOptions","AcceptOrganizationComponent","HintComponent","routerService","onSuccessfulSubmit","successRoute","LockComponent","togglePassword","authService","showResetPasswordAutoEnrollWarning","onSuccessfulLoginNavigate","goAfterLogIn","sponsorshipToken","invite","loginRedirect","LoginComponent","setupCaptcha","webVaultUrl","getWebVaultUrl","captcha","CaptchaIFrame","info","showCaptcha","handleCaptchaRequired","CaptchaProtectedComponent","DeleteRecoverRequest","postAccountRecoverDelete","RecoverDeleteComponent","TwoFactorRecoveryRequest","postTwoFactorRecover","RecoverTwoFactorComponent","showCreateOrgMessage","layout","referenceData","ReferenceEventRequest","reference","cookie","policiesData","RegisterComponent","RemovePasswordComponent","SetPasswordComponent","IdentifierStorageKey","redirectUri","origin","storedIdentifier","SsoComponent","loggingIn","twoFactorRoute","changePasswordRoute","forcePasswordResetRoute","checkState","getOrgIdentifierFromState","codeChallenge","returnUri","includeUserIdentifier","initiateSsoFormPromise","preValidate","buildAuthorizeUrl","authorizeUrl","sameWindow","preValidateSso","passwordOptions","uppercase","lowercase","numbers","special","hash","codeVerifierHash","getIdentityUrl","getSsoUserIdentifier","userIdentifier","orgIdFromState","onSuccessfulLoginTwoFactorNavigate","sso","onSuccessfulLoginChangePasswordNavigate","onSuccessfulLoginForceResetNavigate","disableFavicon","onSuccessfulLogin","stateSplit","checkStateSplit","anotherMethod","TwoFactorOptionsComponent","twoFactorOptionsModal","onProviderSelected","selectedProviderType","onRecoverSelected","TwoFactorComponent","TwoFactorEmailRequest","recover","UpdateTempPasswordComponent","OrganizationUserResetPasswordRequest","postAccountVerifyEmailToken","VerifyEmailRequest","VerifyEmailTokenComponent","VerifyDeleteRecoverRequest","postAccountRecoverDeleteToken","VerifyRecoverDeleteComponent","canCreate","pagedCollectionsCount","decryptCollections","getUserCollections","assignedCollections","pagedCollections","canEdit","canDelete","CollectionAddEditComponent","addEditModalRef","canSave","onSavedCollection","onDeletedCollection","removeCollection","deleteCollection","usersModalRef","isSearchable","index","accessGroups","groups","getGroups","groupsResponse","getCollectionDetails","g","CollectionRequest","putCollection","postCollection","deletePromise","exportFileName","getProvider","getProviderUsers","requestEvents","startDate","endDate","getEventsOrganization","getUserName","EventsComponent","exportEvents","BaseEventsComponent","pagedGroupsCount","pagedGroups","GroupAddEditComponent","onSavedGroup","onDeletedGroup","removeGroup","deleteGroup","GroupsComponent","access","getGroupDetails","GroupRequest","putGroup","postGroup","accessPolicies","accessSso","ManageComponent","searchPipe","userType","userStatusType","canResetPassword","orgUseResetPassword","orgHasKeys","orgResetPasswordPolicyEnabled","callingUserType","canManageUsersPassword","viewEvents","getPolicyForOrganization","resetPasswordPolicy","getUsers","deleteUser","deleteOrganizationUser","reinviteUser","postOrganizationUserReinvite","confirmUser","OrganizationUserConfirmRequest","postOrganizationUserConfirm","allowResetPassword","orgUser","callingUserHasPermission","UserAddEditComponent","onSavedUser","onDeletedUser","removeUser","UserGroupsComponent","groupsModalRef","bulkRemove","BulkRemoveComponent","bulkRemoveModalRef","getCheckedUsers","bulkReinvite","filteredUsers","Invited","postManyOrganizationUserReinvite","showBulkStatus","bulkConfirm","BulkConfirmComponent","bulkConfirmModalRef","eventsModalRef","resetPassword","ResetPasswordComponent","resetPasswordModalRef","onPasswordReset","deleteWarningMessage","successfullMessage","BulkStatusComponent","bulkStatusModalRef","PeopleComponent","BasePeopleComponent","confirmModalRef","onConfirmedUser","dontAskAgain","getFingerprint","fingerprint","UserConfirmComponent","publicKeys","fingerprints","statuses","done","excludedUsers","isAccepted","getPublicKeys","entry","getCryptoKey","userIdsWithKeys","postConfirmRequest","Accepted","postOrganizationUsersPublicKey","OrganizationUserBulkConfirmRequest","postOrganizationUserBulkConfirm","deleteUsers","deleteManyOrganizationUsers","newPassword","showPassword","getOrganizationUserResetPasswordDetails","kdfType","orgSymKey","decryptToBytes","decPrivateKey","rsaDecrypt","decValue","userEncKey","newKey","newPasswordHash","newEncKey","newMasterPasswordHash","putOrganizationUserResetPassword","newPasswordStrengthTimeout","User","showCustom","manageAllCollectionsCheckboxes","v","manageAssignedCollectionsCheckboxes","getOrganizationUser","setRequestPermissions","clearPermissions","handleDependentPermissions","OrganizationUserUpdateRequest","putOrganizationUser","OrganizationUserInviteRequest","emails","postOrganizationUserInvite","parentChecked","checkboxes","every","pascalize","NestedCheckboxComponent","parentId","getOrganizationUserGroups","userGroups","ug","OrganizationUserUpdateGroupsRequest","groupIds","putOrganizationUserGroups","policyListService","policyIdFromEvents","orgPolicies","orgPolicy","op","PolicyEditComponent","editModalRef","onSavedPolicy","PoliciesComponent","cdr","policyType","ngAfterViewInit","factory","policyComponent","policyFormRef","createComponent","detectChanges","getPolicy","Enabled","putPolicy","canUseApi","OrganizationUpdateRequest","putOrganization","taxFormPromise","deleteModalRef","purgeVault","purgeModalRef","viewApiKey","apiKeyModalRef","postOrganizationApiKey","scope","grantType","apiKeyTitle","apiKeyWarning","apiKeyDescription","rotateApiKey","rotateApiKeyModalRef","isRotation","postOrganizationRotateApiKey","AccountComponent","OrganizationBillingComponent","adjustSeatsAdd","showAdjustSeats","showAdjustSeatAutoscale","adjustStorageAdd","showAdjustStorage","showUpdateLicense","showDownloadLicense","showChangePlan","userOrg","getOrganizationSubscription","sub","reinstate","reinstatePromise","postOrganizationReinstate","cancelPromise","postOrganizationCancel","changePlan","closeChangePlan","changed","downloadLicense","closeDownloadLicense","updateLicense","closeUpdateLicense","updated","subscriptionAdjusted","adjustStorage","closeStorage","removeSponsorship","removeSponsorshipPromise","deleteRemoveSponsorship","subscription","cancelled","cancelAtEndDate","upcomingInvoice","storageGb","storagePercentage","maxAutoscaleSeats","sponsoredSubscriptionItem","FamiliesAnnually2019","isSponsoredSubscription","OrganizationSubscriptionComponent","onChanged","defaultUpgradePlan","defaultUpgradeProduct","Families","ChangePlanComponent","limitSubscription","newSeatCount","currentSeatCount","newMaxSeats","seatAdjustment","OrganizationSubscriptionUpdateRequest","postOrganizationUpdateSubscription","limitSubscriptionChanged","AdjustSubscription","onDownloaded","installationId","getOrganizationLicense","license","licenseString","JSON","stringify","saveFile","DownloadLicenseComponent","access2fa","SettingsComponent","duoComp","getTwoFactorOrganizationProviders","qrScript","UpdateTwoFactorAuthenticatorRequest","putTwoFactorAuthenticator","QRious","element","sendEmail","emailPromise","postTwoFactorEmailSetup","sentEmail","UpdateTwoFactorEmailRequest","putTwoFactorEmail","print","w","write","onafterprint","formatString","keyIdAvailable","keysConfiguredCount","webAuthnResponse","UpdateTwoFactorWebAuthnRequest","deviceResponse","putTwoFactorWebAuthn","removePromise","UpdateTwoFactorWebAuthnDeleteRequest","deleteTwoFactorWebAuthn","readKey","challengePromise","getTwoFactorWebAuthnChallenge","challenge","readDevice","webAuthnChallenge","log","resetWebAuthn","credentials","webAuthnListening","webAuthnError","listening","configured","migrated","nfc","UpdateTwoFactorYubioOtpRequest","key1","key2","key3","key4","key5","putTwoFactorYubiKey","disablePromise","existingKey","padRight","max","badToken","showNewOrganization","_selectedFamilyOrganizationId","onOrganizationCreateSuccess","postPreValidateSponsorshipToken","existingFamilyOrganizations","selectedFamilyOrganizationId","OrganizationSponsorshipRedeemRequest","planSponsorshipType","PlanSponsorshipType","FamiliesForEnterprise","sponsoredOrganizationId","postRedeemSponsorship","FamiliesForEnterpriseSetupComponent","organizationPlansComponent","checkExportDisabled","getExportData","getOrganizationExport","getFileName","collectEvent","manageableCiphers","AttachmentView","elementRef","trueValue","falseValue","propagateChange","_","onHostChange","setProperty","TrueFalseValueDirective","forwardRef","onError","appFallbackSrc","FallbackSrcDirective","ToolsComponent","changeDetectorRef","trashCleanupWarning","groupingsComponent","successfully","selectedAll","selectedTrash","filterDeleted","selectedType","filterCipherType","selectedCollectionId","filterCollection","clearGroupingFilters","clearFilters","go","filterSearchText","editCipherAttachments","madeAttachmentChanges","attachmentsModalRef","onUploadedAttachment","onDeletedAttachment","editCipherCollections","collectionsModalRef","onSavedCollections","addCipher","editCipher","cloneCipher","replaceUrl","VaultComponent","saveCipherAttachment","saveAttachmentWithServer","cipherDomain","deleteCipherAttachment","attachmentId","deleteCipherAttachmentAdmin","onReuploadedAttachment","deletePromises","reuploadPromises","emergencyAccessId","hasUpdatedKey","download","downloading","canAccessAttachments","getAttachmentData","attachmentDownloadResponse","cache","arrayBuffer","buf","decryptFromBytes","decBuf","hasEncKey","admin","saveAttachmentRawWithServer","foundAttachment","a2","deleteAttachmentWithServer","Window","allowSelectNone","loadCipherCollections","saveCollections","CipherCollectionsRequest","putCipherCollectionsAdmin","deleteCiphers","deleteCiphersAdmin","deleteManyWithServer","softDeleteManyWithServer","deleteRequest","CipherBulkDeleteRequest","deleteManyCiphersAdmin","putDeleteManyCiphersAdmin","moveManyWithServer","restoreManyWithServer","nonShareableCount","shareableCiphers","writeableCollections","allCollections","filterCollections","checkedCollectionIds","shareManyWithServer","sendType","passwordRequired","unavailable","maskedText","creatorIdentifier","sendId","decKey","getSendFileDownloadData","accessRequest","downloadData","toggleText","keyArray","SendAccessRequest","pbkdf2","passwordHash","sendResponse","postSendAccess","sendAccess","SendAccess","makeSendKey","AccessComponent","sendService","addSend","disableSend","editSend","sendAddEditModalRef","onSavedSend","onDeletedSend","SendComponent","datePipe","copyLinkToClipboard","link","SendView","EffluxDatesComponent","ControlContainer","NgForm","viewProviders","showChangePassword","showChangeKdf","showChangeEmail","deauthorizeSessions","DeauthorizeSessionsComponent","deauthModalRef","deleteAccount","DeleteAccountComponent","viewUserApiKey","viewUserApiKeyModalRef","postUserApiKey","rotateUserApiKey","rotateUserApiKeyModalRef","postUserRotateApiKey","postSecurityStamp","hidePasswordHint","getProfile","profile","UpdateProfileRequest","putProfile","ProfileComponent","tokenSent","showTwoFactorEmailWarning","newEmail","EmailTokenRequest","postEmailToken","EmailRequest","postEmail","reset","ChangeEmailComponent","rotateEncKey","rotateEncKeyClicked","currentMasterPassword","PasswordRequest","postPassword","updateKey","getPrivateKey","encPrivateKey","UpdateKeyRequest","FolderWithIdRequest","sends","cryptoKey","SendWithIdRequest","postAccountKey","updateEmergencyAccesses","updateAllResetPasswordKeys","getEmergencyAccessTrusted","emergencyAccess","allowedStatuses","EmergencyAccessStatusType","RecoveryInitiated","RecoveryApproved","filteredAccesses","details","getUserPublicKey","granteeId","publicKeyResponse","updateRequest","EmergencyAccessUpdateRequest","waitTimeDays","keyEncrypted","putEmergencyAccess","fileLength","File","SendRequest","PBKDF2_SHA256","kdfOptions","KdfRequest","postAccountKdf","ChangeKdfComponent","orgPlansComponent","EnterpriseAnnually","CreateOrganizationComponent","custom","getSettingsDomains","equivalentDomains","globalEquivalentDomains","domains","excluded","toggleExcluded","globalDomain","customize","UpdateDomainsRequest","excludedGlobalEquivalentDomains","d2","putSettingsDomains","indexTrackBy","DomainRulesComponent","vaultTimeoutAction","theme","vaultTimeout","vaultTimeouts","isDev","localeOptions","supportedTranslationLocales","locale","localeNames","themeOptions","System","getVaultTimeout","disableIcons","enableGravatars","enableFullWidth","startingLocale","startingTheme","valid","setVaultTimeoutOptions","effectiveTheme","htmlEl","documentElement","Light","vaultTimeoutActionChanged","newValue","OptionsComponent","VaultTimeoutInputComponent","NG_VALIDATORS","ngAfterContentInit","LinkSsoComponent","premiumPrice","getPremium","getEmailVerified","finalizePremium","postPremium","paymentResponse","PremiumComponent","canManageSponsorships","hasFamilySponsorshipAvailable","getUserSubscription","usingInAppPurchase","postReinstatePremium","postCancelPremium","UserSubscriptionComponent","breachedAccounts","checkedUsername","BreachReportComponent","history","PasswordGeneratorHistoryComponent","historyModalRef","lengthChanged","minNumberChanged","minSpecialChanged","PasswordGeneratorComponent","regenerate","clear","favorites","showVerifyEmail","showBrowserOutdated","showUpdateKey","showPremiumCallout","showRedeemSponsorship","showProviders","allOrgs","organizationsComponent","selectedFavorites","filterFavorites","selectedFolder","selectedFolderId","filterFolder","shareCipher","ShareComponent","shareModalRef","onSharedCipher","FolderAddEditComponent","folderAddEditModalRef","onSavedFolder","loadFolders","editFolder","onDeletedFolder","UpdateKeyComponent","updateKeyModalRef","makeRequest","getKey","postAccountVerifyEmail","VerifyEmailComponent","ProvidersComponent","canActivate","OrganizationGuardService","Permissions","AccessEventLogs","AccessImportExport","AccessReports","CreateNewCollections","EditAnyCollection","DeleteAnyCollection","EditAssignedCollections","DeleteAssignedCollections","ManageGroups","ManageOrganization","ManagePolicies","ManageUsers","ManageUsersPassword","ManageSso","canManageSso","OrganizationTypeGuardService","routerState","isLocked","promptBiometric","getConvertAccountRequired","AuthGuardService","homepage","LockGuardService","UnauthGuardService","EmergencyAddEditComponent","postEmergencyAccessView","viewAttachments","EmergencyAccessAttachmentsComponent","decCiphers","oldKeyBuffer","oldEncKey","cipherResponse","cipherData","getLocaleSortingFunction","EmergencyAccessViewComponent","emergencyAccessType","EmergencyAccessType","emergencyAccessStatusType","isOrganizationOwner","trustedContacts","getEmergencyAccessGranted","grantedContacts","EmergencyAccessAddEditComponent","onSaved","reinvite","contact","postEmergencyAccessReinvite","confirm","updateUser","autoConfirm","EmergencyAccessConfirmComponent","onConfirmed","doConfirmation","deleteEmergencyAccess","EmergencyAccessGranteeDetailsResponse","removeGrantee","removeGrantor","requestAccess","postEmergencyAccessInitiate","approve","View","postEmergencyAccessApprove","postEmergencyAccessReject","takeover","EmergencyAccessTakeoverComponent","takeoverModalRef","onDone","debug","EmergencyAccessConfirmRequest","postEmergencyAccessConfirm","EmergencyAccessComponent","creationDate","grantorId","EmergencyAccessGrantorDetailsResponse","EmergencyAccessTakeoverResponse","EmergencyAccessViewResponse","waitTimes","getEmergencyAccess","waitTime","EmergencyAccessInviteRequest","postEmergencyAccessInvite","getEmergencyGrantorPolicies","postEmergencyAccessTakeover","takeoverResponse","EmergencyAccessPasswordRequest","postEmergencyAccessPassword","availableSponsorshipOrgs","activeSponsorshipOrgs","selectedSponsorshipOrgId","sponsorshipEmail","postCreateSponsorship","sponsoredEmail","friendlyName","resetForm","forceReload","SponsoredFamiliesComponent","sponsoringOrg","sponsorshipRemoved","revokeSponsorship","revokeSponsorshipPromise","doRevokeSponsorship","resendEmail","resendEmailPromise","postResendSponsorshipOffer","deleteRevokeSponsorship","SponsoringOrgRowComponent","PasswordRepromptComponent","compareAndUpdateKeyHash","blur","BlurClickDirective","CollectionResponse","CollectionDetailsResponse","CollectionGroupDetailsResponse","GlobalDomainResponse","DomainsResponse","FolderResponse","businessAddress1","businessAddress2","businessAddress3","businessCountry","businessTaxNumber","PlanResponse","OrganizationResponse","nameLocalizationKey","descriptionLocalizationKey","baseStorageGb","maxUsers","maxAdditionalSeats","maxAdditionalStorage","hasSelfHost","hasPolicies","hasGroups","hasDirectory","hasEvents","has2fa","hasApi","hasSso","hasResetPassword","upgradeSortOrder","displaySortOrder","stripePlanId","stripeSeatPlanId","stripeStoragePlanId","stripePremiumAccessPlanId","storageName","BillingSubscriptionResponse","BillingSubscriptionUpcomingInvoiceResponse","SubscriptionResponse","trialEndDate","periodStartDate","periodEndDate","cancelledDate","BillingSubscriptionItemResponse","quantity","OrganizationUserBulkPublicKeyResponse","KeyResponse","TwoFactorWebAuthnResponse","attestation","authenticatorSelection","excludeCredentials","extensions","pubKeyCredParams","rp","ChallengeResponse","descriptor","originalMethod","caches","getCache","argsCacheKey","args","onFinally","nestedTraverse","nodeTree","partIndex","delimiter","partName","node","TreeNode","ServiceUtils","children","newPartName","getTreeNodeObject","timersMap","LogLevelType","Debug","Info","Warning","level","warn","time","hrtime","timeEnd","elapsed","EEFLongWordList","build","CipherWithIds","CollectionWithId","Folder","FolderWithId","FolderData","IgnoredProperties","loginPropertyParsers","setLoginUsername","setLoginPassword","setLoginUris","creditCardPropertyParsers","setCreditCardNumber","setCreditCardVerification","setCreditCardCardholderName","setCreditCardExpiry","identityPropertyParsers","setIdentityFirstName","setIdentityInitial","setIdentityLastName","setIdentityUserName","setIdentityEmail","setIdentityPhone","setIdentityCompany","quoteChar","escapeChar","getProp","setNotes","setCipherType","altUsername","context","CipherImportContext","setKnownLoginValue","setKnownCreditCardValue","setKnownIdentityValue","setUnknownValue","entries","agg","getPropByRegexp","regexp","matchingKeys","getPropIncluding","includesMap","importRecord","func","lowerProperty","readableDate","toUTCString","Hidden","urls","OnePasswordCsvImporter","NotificationType","SendTextData","SendFileData","SendData","enableProdMode","platformBrowser","bootstrapModule","preserveWhitespaces","AppModule","AppComponent","OssModule","BrowserAnimationsModule","FormsModule","ServicesModule","ToasterModule","forRoot","InfiniteScrollModule","DragDropModule","OssRoutingModule","WildcardRoutingModule","NgModule","imports","declarations","bootstrap","settingsService","sanitizer","notificationsService","toasterConfig","ToasterConfig","showCloseButton","mouseoverTimerStop","animation","limit","lastActivity","idleTimer","isIdle","runOutsideAngular","onmousemove","recordActivity","onmousedown","ontouchstart","onclick","onscroll","onkeypress","updateConnection","expired","crypto","subtle","setFullWidth","setConvertAccountRequired","jq","uploadEvents","clearEvents","setLastSync","clearToken","clearKeys","purge","clearIndex","now","idleStateChanged","sanitize","SecurityContext","HTML","bodyOutputType","BodyOutputType","TrustedHtml","trustedHtml","disconnectFromInactivity","reconnectFromActivity","subscribers","messageCallback","routes","path","pathMatch","redirectTo","RouterModule","useHash","paramsInheritanceStrategy","postPasswordHint","PasswordHintRequest","pin","pinLock","webVaultHostname","invalidPinAttempts","isPinLockSet","pinSet","supportsBiometric","isBiometricLockSet","hasKeyStored","supportsSecureStorage","biometricLock","hideInput","vaultUrl","failed","makeKeyFromPin","decPin","setKeyAndContinue","getKeyHash","storedKeyHash","passwordValid","ServerAuthorization","serverKeyHash","postAccountVerifyPassword","localKeyHash","makePinKey","pinKey","unlockBiometric","doContinue","everBeenUnlocked","Keys","rememberEmail","focusInput","launchSsoBrowser","ssoRedirectUri","ssoCodeVerifier","webUrl","errorCallback","infoCallback","parsedMessage","iframe","height","width","initComponent","createParams","translationLocale","IFrameComponent","iframeId","parseFunction","parseMessage","connectorLink","stop","sendMessage","contentWindow","postMessage","base64Encode","cleanup","removeEventListener","URLSearchParams","validMessage","confirmMasterPassword","hint","showTerms","acceptPolicies","useLowerKdf","isIE","RegisterRequest","orgInvite","postRegister","confirmField","captchaResponse","continuing","leaving","getManagingOrganization","convert","migrateUser","removeConvertAccountRequired","syncLoading","resetPasswordAutoEnroll","getOrganizationAutoEnrollStatus","resetPasswordEnabled","getMasterPasswordPoliciesForInvitedUsers","SetPasswordRequest","setPassword","onSetPasswordSuccess","onSuccessfulChangePassword","orgIdentifier","cd","focusTrapFactory","loadChildComponent","focusTrap","focusFirstTabbableElementWhenReady","componentFactory","modalContentRef","autoFocusEl","template","_parentInjector","_additionalTokens","notFoundValue","flags","webAuthnReady","webAuthnNewTab","webAuthn","twoFactorEmail","loginRoute","authing","needsLock","WebAuthnIFrame","cleanupWebAuthn","providerData","authWebAuthn","DuoWebSDK","Host","sig_request","Signature","submit_callback","sig","doToast","postTwoFactorEmail","getDevice","getDeviceString","pushToken","codes","device","toIdentityToken","client_id","grant_type","client_secret","code_verifier","redirect_uri","deviceIdentifier","deviceName","twoFactorRemember","alterIdentityTokenHeaders","headers","btnText","allow","choose","UpdateTempPasswordRequest","putUpdateTempPassword","dirtyDates","appApiPromiseUnfulfilled","parseDates","exportPromise","export","loadAndParseEvents","EventView","getEventExport","statusMap","pagedUsers","pagedUsersCount","confirmedCount","acceptedCount","checkUser","mapIndex","disabledByPolicy","exportForm","formatOptions","DisablePersonalVaultExport","warningDialog","verifyUser","downloadFile","encryptedFormat","getExport","extension","csv","onCancelled","onEditAttachments","onShareCipher","onEditCollections","onGeneratePassword","showCardNumber","showCardCode","currentDate","canUseReprompt","typeOptions","cardBrandOptions","cardExpMonthOptions","identityTitleOptions","uriMatchOptions","Domain","StartsWith","Exact","Never","autofillOnPageLoadOptions","myEmail","addEditCipherInfo","organizationChanged","previousCipherId","addUri","removeUri","trackByFunction","editCollections","restorePromise","restoreCipher","toggleCardNumber","Cipher_ClientToggledCardNumberVisible","toggleCardCode","toggleUriOptions","loginUriMatchChanged","checkPassword","checkPasswordPromise","matches","repromptChanged","saveWithServer","addFieldType","fieldType","eventType","addFieldTypeOptions","Boolean","addFieldLinkedTypeOption","Linked","thisCipherType","setLinkedFieldOptions","firstChange","resetCipherLinkedFields","addField","removeField","toggleFieldValue","drop","moveItemInArray","previousIndex","currentIndex","activeCipherId","onCipherClicked","onCipherRightClicked","onAddCipher","onAddCipherOptions","searchPending","searchTimeout","rightClickCipher","addCipherOptions","selectedCollectionIds","saveCollectionsWithServer","showFolders","showCollections","showFavorites","showTrash","onAllClicked","onFavoritesClicked","onTrashClicked","onCipherTypeClicked","onFolderClicked","onAddFolder","onEditFolder","onCollectionClicked","setLoaded","collapsedGroupings","Set","nestedFolders","clearSelections","selectFavorites","selectTrash","selectFolder","selectCollection","idPrefix","SendAccessView","filteredSends","hasSearched","onSuccessfulLoad","applyTextSearch","removePassword","removePasswordWithServer","onSuccessfulRemovePassword","onSuccessfulDelete","getSendUrl","urlB64Key","searchSends","copyLink","alertShown","sendLinkBaseUrl","isSafari","isFirefox","setDates","loadSend","hasPassword","encryptSend","encSend","copySuccess","typeChanged","toggleOptions","sendData","togglePasswordVisible","BrowserPath","DateField","DatePreset","datesChanged","datesForm","FormGroup","selectedDeletionDatePreset","selectedExpirationDatePreset","defaultDeletionDateTime","defaultExpirationDateTime","fallbackDeletionDate","fallbackDeletionTime","fallbackExpirationDate","fallbackExpirationTime","deletionDatePresets","OneHour","OneDay","TwoDays","ThreeDays","SevenDays","ThirtyDays","expirationDatePresets","Firefox","Safari","Default","formattedDeletionDate","browserPath","miliseconds","setTime","safariTimePresetOptions","DeletionDate","ExpriationDate","nextWeek","setInitialFormValues","emitDates","onDeletionDatePresetSelect","clearExpiration","formattedExpirationDate","initialDeletionDate","toTimeString","initialExpirationDate","twentyFourHour","noon","midnight","ams","pms","hour","minutes","midnightOption","twelveHour","noonOption","amOption","pmOption","validTimes","previousValue","form","hours","CUSTOM_VALUE","vaultTimeoutPolicy","vaultTimeoutPolicyHours","vaultTimeoutPolicyMinutes","validatorChange","current","onTouched","validate","control","policyError","registerOnValidatorChange","showSelect","onSelected","avoidAmbiguous","passTypeOptions","optionsResponse","ambiguous","addHistory","sliderChanged","saveOptions","sliderInput","normalizeOptions","copyOptions","getHistory","cipherView","shareWithServer","registerLocaleData","DatePipe","CommonModule","forChild","ReactiveFormsModule","AvatarComponent","BoxRowDirective","SearchCiphersPipe","elRef","formEls","formEl","contains","tagName","inputEl","click","language","BroadcasterMessagingService","consoleLogService","WebPlatformUtilsService","HtmlStorageService","secureStorageService","MemoryStorageService","WebCryptoFunctionService","AppIdService","fileUploadService","FileUploadService","ContainerService","eventLoggingService","initFactory","setUrls","baseUrl","onDefaultSystemThemeChange","sysTheme","attachToWindow","useClass","useValue","APP_INITIALIZER","useFactory","deps","LOCALE_ID","subscriber","arg","localStorageKeys","localStorageStartsWithKeys","memoryStorageStartsWithKeys","memoryStorage","isLocalStorage","localStorage","getItem","isMemoryStorage","sessionStorage","setItem","removeItem","swKey","systemLanguage","localesDirectory","formattedLocale","filePath","getLocalesJson","defaultMessages","localeMessages","Intl","Collator","numeric","sensitivity","loadMessages","translate","messagesObj","locales","placeholders","placeProp","replaceToken","replaceContent","store","identityClientId","browserCache","prefersColorSchemeDark","matchMedia","chrome","isChrome","isEdge","isOpera","isVivaldi","isMacAppStore","isViewOpen","rel","blobData","blobOptions","blob","fileNameLower","doDownload","endsWith","Blob","msSaveOrOpenBlob","msSaveBlob","createObjectURL","position","confirmText","cancelText","bodyIsHtml","iconClasses","bootstrapModal","removeAttribute","iconHtmlStr","html","showCancelButton","cancelButtonText","clipboardData","setData","queryCommandSupported","textarea","copyEl","execCommand","readFromClipboard","authenticateBiometric","getDefaultSystemTheme","addListener","logoutCallback","customUserAgent","isWebClient","isDesktopClient","Headers","qsStringify","getCredentials","isJsonResponse","IdentityTokenResponse","TwoFactorProviders2","clearTwoFactorToken","IdentityTwoFactorResponse","IdentityCaptchaResponse","doAuthRefresh","BillingResponse","TaxInfoResponse","PreloginResponse","getAccountRevisionDate","PaymentResponse","postIapCheck","ApiKeyResponse","postAccountRequestOTP","postAccountVerifyOTP","postConvertToKeyConnector","getFolder","postFolder","putFolder","deleteFolder","getSend","apiUrl","addSendIdHeader","SendAccessResponse","SendFileDownloadDataResponse","getSends","ListResponse","postSend","postFileTypeSend","SendFileUploadDataResponse","renewSendFileUploadUrl","fileId","postSendFile","postSendFileLegacy","putSend","putSendRemovePassword","deleteSend","getCipher","getCiphersOrganization","postCipher","postCipherCreate","putCipher","deleteManyCiphers","putMoveCiphers","putShareCipher","putShareCiphers","putCipherCollections","postImportCiphers","postImportOrganizationCiphers","putDeleteCipher","putDeleteManyCiphers","putRestoreCipher","putRestoreCipherAdmin","putRestoreManyCiphers","postCipherAttachment","AttachmentUploadDataResponse","postCipherAttachmentLegacy","postCipherAttachmentAdminLegacy","postShareCipherAttachment","renewAttachmentUploadUrl","postAttachmentFile","dr","deleteCollectionUser","GroupDetailsResponse","GroupResponse","deleteGroupUser","getPoliciesByInvitedUser","OrganizationUserDetailsResponse","OrganizationUserUserDetailsResponse","OrganizationUserResetPasswordDetailsReponse","OrganizationAutoEnrollStatusResponse","OrganizationUserBulkResponse","postImportDirectory","postPublicImportDirectory","TaxRateResponse","getSync","SyncResponse","TwoFactorProviderResponse","TwoFactorAuthenticatorResponse","TwoFactorEmailResponse","TwoFactorDuoResponse","TwoFactorYubiKeyResponse","TwoFactorRecoverResponse","rawId","getClientExtensionResults","AttestationObject","attestationObject","clientDataJson","clientDataJSON","OrganizationSubscriptionResponse","getOrganizationSso","OrganizationSsoResponse","postOrganizationSso","postOrganizationSeat","OrganizationKeysResponse","postProviderSetup","ProviderResponse","putProvider","ProviderUserUserDetailsResponse","getProviderUser","ProviderUserResponse","postProviderUserInvite","postProviderUserReinvite","postManyProviderUserReinvite","ProviderUserBulkResponse","postProviderUserBulkConfirm","deleteManyProviderUsers","postProviderUserAccept","postProviderUserConfirm","postProviderUsersPublicKey","ProviderUserBulkPublicKeyResponse","putProviderUser","deleteProviderUser","getProviderClients","ProviderOrganizationOrganizationDetailsResponse","postProviderAddOrganization","ProviderOrganizationResponse","deleteProviderOrganization","getEvents","addEventParameters","EventResponse","getEventsProvider","postEventsCollect","getActiveBearerToken","authHeader","getEventsUrl","UserKeyResponse","getHibpBreach","BreachAccountResponse","getUserKeyFromKeyConnector","handleError","KeyConnectorUserKeyResponse","getKeyConnectorAlive","getToken","tokenNeedsRefresh","nativeFetch","sponsoredOrgId","sponsoringOrganizationId","sponsoringOrgId","getRefreshToken","doRefreshToken","getClientId","getClientSecret","doApiTokenRefresh","apiKeyRefresh","decodedToken","decodeToken","refresh_token","hasResponse","alterHeaders","getApiUrl","requestUrl","requestInit","tokenError","isTextResponse","Message","hasBaseUrl","typeHeader","fileUploadType","cipherMiniResponse","BillingSourceResponse","BillingTransactionResponse","BillingInvoiceResponse","cardBrand","needsVerification","pdfUrl","paid","createdDate","refunded","partiallyRefunded","refundedAmount","addedDate","breachDate","dataClasses","isActive","isVerified","logoPath","modifiedDate","pwnCount","access_token","expiresIn","expires_in","tokenType","token_type","SsoConfigApi","SsoUrls","callbackPath","signedOutCallbackPath","spEntityId","spMetadataUrl","spAcsUrl","SsoType","OpenIdConnectRedirectBehavior","Saml2BindingType","Saml2NameIdFormat","Saml2SigningBehavior","configType","authority","metadataAddress","redirectBehavior","getClaimsFromUserInfoEndpoint","additionalScopes","additionalUserIdClaimTypes","additionalEmailClaimTypes","additionalNameClaimTypes","acrValues","expectedReturnAcrValue","spNameIdFormat","spOutboundSigningAlgorithm","spSigningBehavior","spMinIncomingSigningAlgorithm","spWantAssertionsSigned","spValidateCertificates","idpEntityId","idpBindingType","idpSingleSignOnServiceUrl","idpSingleLogoutServiceUrl","idpArtifactResolutionServiceUrl","idpX509PublicCert","idpOutboundSigningAlgorithm","idpAllowUnsolicitedAuthnResponse","idpDisableOutboundLogoutRequests","idpWantAuthnRequestsSigned","KeysResponse","OrganizationUserResponse","userProfile","settings","taxIdType","makeAndGetAppId","getAnonymousAppId","existingId","guid","hashBytes","hashStart","hashEnding","leakedHashes","throttle","throttleKey","allThrottles","getThrottles","throttles","argsThrottleKey","queue","exec","DomainMatchBlacklist","sortedCiphersCache","SortedCiphersCache","sortCiphersByLastUsed","_decryptedCipherCache","clearCache","decryptedCipherCache","existingCipher","hasFields","existingHiddenFields","ef","matchedField","encryptObjProperty","encryptCipherData","encryptFields","encryptPasswordHistories","encryptAttachments","attachmentsModel","encAttachments","fieldsModel","encFields","encryptField","encField","fieldModel","phModels","encPhs","encryptPasswordHistory","encPh","phModel","hasKey","getAllDecryptedForGrouping","groupingId","getAllDecryptedForUrl","includeOtherTypes","defaultMatch","eqDomainsPromise","getEquivalentDomains","eqDomains","eqDomain","matchingDomains","domainUrlHost","urlHost","getLastUsedForUrl","getCipherForUrl","getLastLaunchedForUrl","getNextCipherForUrl","updateLastUsedIndexForUrl","updateLastUsedIndex","updateLastUsedDate","ciphersLocalData","cached","updateLastLaunchedDate","lastLaunched","saveNeverDomain","upsert","attachmentPromises","shareAttachmentWithServer","encCipher","CipherShareRequest","encCiphers","CipherBulkShareRequest","unencryptedFile","readAsArrayBuffer","cData","filename","encFileName","dataEncKey","encryptToBytes","encData","fileSize","adminRequest","uploadDataResponse","uploadCipherAttachment","legacyServerAttachmentFileUpload","filepath","contentType","CipherBulkMoveRequest","deleteAttachment","aLastUsed","bLastUsed","bothNotNull","sortCiphersByLastUsedThenName","aName","bName","softDelete","setDeletedDate","clearDeletedDate","CipherBulkRestoreRequest","restores","attachmentView","attachmentResponse","theObj","modelProp","lastUsed","isCached","addCiphers","getLastLaunched","getLastUsed","getNext","sequentialize","comparator","sortedCiphersByUrl","timeouts","Ciphers","resetTimer","lastUsedIndex","y","valueOf","getNextIndex","decryptedCollectionCache","decCollections","nodes","collectionCopy","getNested","attachToGlobal","encOrgKeys","encProviderKeys","keyHash","platformUtilService","storeKey","setOrgKeys","providerOrgs","providerOrg","setProviderKeys","providerKeys","keySuffix","getKeyFromStorage","symmetricKey","retrieveKeyFromStorage","validateKey","encKeyCipher","decEncKey","stretchKey","getPublicKey","rsaExtractPublicKey","keyFingerprint","hkdfExpand","userFingerprint","hashPhrase","getOrgKeys","getProviderKeys","hasKeyInMemory","clearKey","clearSecretStorage","legacyEtmKey","clearStoredKey","clearKeyHash","clearEncKey","memoryOnly","clearKeyPair","clearOrgKeys","clearProviderKeys","clearPinProtectedKey","toggleKey","salt","protectedKeyCs","rsaGenerateKeyPair","publicB64","privateEnc","keyMaterial","hkdf","sendKey","hashPurpose","iterations","getKeyForEncryption","theKey","buildEncKey","plainValue","plainBuf","aesEncrypt","encObj","encValue","macLen","encBytes","EncArrayBuffer","privateKeyValue","Rsa2048_OaepSha256_HmacSha256_B64","Rsa2048_OaepSha1_HmacSha256_B64","alg","encString","aesDecryptToBytes","decipher","aesDecryptToUtf8","encBuf","ctBytes","ivBytes","macBytes","randomNumber","min","rval","range","bitsNeeded","ceil","log2","bytesNeeded","mask","pow","byteArray","shouldStoreKey","biometricUnlock","EncryptedObject","macData","hmac","keyForEnc","resolveLegacyKey","fastParams","aesDecryptFastParameters","hmacFast","computedMac","compareFast","aesDecryptFast","aesDecrypt","minimumEntropy","entropyPerWord","numWords","hashArr","entropyAvailable","phrase","hashNumber","bigInt","fromArray","remainder","divide","encKeyEnc","urlsSubject","getNotificationsUrl","notificationsUrl","identityUrl","eventsUrl","setUrlsFromStorage","urlsObj","api","icons","notifications","webVault","keyConnector","envUrls","EnvironmentUrls","saveSettings","formatUrl","getUrls","checkOnInterval","uploadImmediately","orgIds","eventCollection","EventData","EventRequest","getEncryptedExport","getDecryptedExport","getOrganizationEncryptedExport","getOrganizationDecryptedExport","unparse","Event","padNumber","getSeconds","decFolders","buildCommonCipher","encrypted","encKeyValidation","jsonDoc","encKeyValidation_DO_NOT_EDIT","collectionPromises","decCol","cipherPromises","decCipher","padCharacter","numString","login_uri","login_username","login_password","login_totp","toView","values","toDomain","azureFileUploadService","AzureFileUploadService","bitwardenFileUploadService","BitwardenFileUploadService","uploadSendFile","uploadData","encryptedFileData","FileUploadType","Direct","Azure","upload","renewalCallback","encryptedFileName","azureUploadBlob","azureUploadBlocks","urlObject","searchParams","blobResponse","blockSize","getMaxBlockSize","blockIndex","numBlocks","blocksStaged","renewUrlIfNecessary","blockUrl","blockId","encodedBlockId","blockData","blockHeaders","blockRequest","blockResponse","blockListUrl","blockListXml","expiry","utfBlockId","blockIdList","xml","Version","day","compareTo","decryptedFolderCache","noneFolder","folderCopy","cId","updates","getImportOptions","importResult","halfway","last","badData","postImport","errorResponse","handleServerError","getImporterInstance","BitwardenCsvImporter","BitwardenJsonImporter","LastPassCsvImporter","KeePassXCsvImporter","AviraCsvImporter","BlurCsvImporter","SafeInCloudXmlImporter","PadlockCsvImporter","KeePass2XmlImporter","ChromeCsvImporter","FirefoxCsvImporter","UpmCsvImporter","SaferPassCsvImporter","SafariCsvImporter","MeldiumCsvImporter","OnePassword1PifImporter","OnePasswordWinCsvImporter","OnePasswordMacCsvImporter","KeeperCsvImporter","PasswordDragonXmlImporter","EnpassCsvImporter","EnpassJsonImporter","PasswordSafeXmlImporter","DashlaneJsonImporter","MSecureCsvImporter","StickyPasswordXmlImporter","TrueKeyCsvImporter","ClipperzHtmlImporter","RoboFormCsvImporter","AscendoCsvImporter","PasswordBossJsonImporter","ZohoVaultCsvImporter","SplashIdCsvImporter","PassKeepCsvImporter","GnomeJsonImporter","PasswordAgentCsvImporter","PasspackCsvImporter","PassmanJsonImporter","AvastCsvImporter","AvastJsonImporter","FSecureFskImporter","KasperskyTxtImporter","RememBearCsvImporter","PasswordWalletTxtImporter","MykiCsvImporter","SecureSafeCsvImporter","LogMeOnceCsvImporter","BlackBerryCsvImporter","ButtercupCsvImporter","CodebookCsvImporter","EncryptrCsvImporter","YotiCsvImporter","NordPassCsvImporter","ImportCiphersRequest","KvpRequest","ImportOrganizationCiphersRequest","itemType","fieldLower","web","logins","custName","note","pwd","loginName","cards","holderName","cardNumber","cvv","website","secondary_username","col","addCollection","collectionIndex","delimPosition","parseEncrypted","parseDecrypted","groupingsMap","fav","extra","OfficialProps","processingCustomFields","currentVersion","actionType","labelLower","Category","Favorite","Entry","Note","TOTP","Website","PIN","Account","HandledResults","ADDRESS","processAddress","AUTHENTIFIANT","processAuth","BANKSTATEMENT","processNote","IDCARD","PAYMENTMEANS_CREDITCARD","processCard","IDENTITY","processIdentity","credential","secondaryLogin","fullName","nameParts","pseudo","addressName","addressFull","zipcode","owner","nameProperty","Label","Notes","CVV","Expiry","expParts","firstRow","containsField","fieldValue","fieldName","fieldNameLower","foldersMap","foldersIndexMap","folderTree","buildFolderTree","flattenFolderTree","template_type","processLogin","sensitive","uuid","parent_uuid","titlePrefix","tree","creditNumber","creditCvv","creditExpiry","keyRing","display_name","attributes","attr","username_value","NotesHeader","ApplicationsHeader","WebsitesHeader","Delimiter","notesData","applicationsData","websitesData","workingData","parseDataCategory","applications","websites","nameKey","itemComment","itemCommentKey","colonIndex","rootGroup","traverse","isRootNode","groupPrefixName","groupName","nameEl","cipherIndex","entryString","valueEl","keyEl","attrs","ProtectInMemory","Group","buildBaseCipher","parseSecureNote","parseCard","parseIdentity","ccnum","cardCipher","profilename","firstname","lastname","ccname","cccsc","ccexp","ccexpParts","middlename","zip","extraParts","processedNote","typeParts","mappedData","parseSecureNoteMapping","monthString","processingNotes","extraPart","DisplayName","UserName","Url","nickname","additionalInfo","twoFactAuthToken","cardName","exp_month","exp_year","firstAddressLine","secondAddressLine","zipCode","record","recordType","evaluateType","cardholdername","cardnumber","cvc","expirydate","processName","full_name","phone_number","line","trashed","processStandardItem","processWinOpVaultItem","overview","URLs","parsePasswordHistory","notesPlain","parseFields","sections","section","openContents","faveIndex","typeName","secureContents","maxSize","designationKey","valueKey","fieldDesignation","street","setIdentityAddress","expSplit","tags","tag","getValue","custom_fields","customField","field_type","tagsJson","Tags","tagJson","__parsed_extra","fieldsJson","extraFields","fieldJson","newVersion","altFormat","login_url","identifiers","valObj","expDate","cf","records","categoryText","accountName","passwordSafe","notesDelimiter","getAttribute","groupText","trash","cardholder","verification","expiryMonth","expMonthNumber","expiryYear","expYearNumber","Name","Pwd","Rf_fields","OTPAuth","labelEl","cardEl","labelIdEl","labelId","fieldEl","notesEl","candidates","choice","Comment","parseFieldsToNotes","startIndex","loginNodes","loginNode","accountId","usernameText","passwordText","linkText","notesText","accountLogin","account","parentElement","buildGroupText","PropertiesToIgnore","memo","kind","expiryDate","document_content","ChamberName","parseData","SecretData","CustomData","setUsesKeyConnector","userNeedsMigration","loggedInUsingSso","getIsExternal","requiredByOrganization","userIsNotUsingKeyConnector","userKeyResponse","keyArr","connected","inactive","reconnectTimer","signalrConnection","off","signalR","HubConnectionBuilder","withUrl","accessTokenFactory","skipNegotiation","transport","HttpTransportType","WebSockets","withHubProtocol","signalRMsgPack","MessagePackHubProtocol","on","processNotification","NotificationResponse","onclose","reconnect","isAuthedAndUnlocked","sync","notification","contextId","payloadUserId","UserId","myUserId","SyncCipherCreate","SyncCipherUpdate","SyncCipherDelete","SyncLoginDelete","SyncFolderCreate","SyncFolderUpdate","SyncFolderDelete","SyncVault","SyncCiphers","SyncSettings","SyncOrgKeys","LogOut","SyncSendCreate","SyncSendUpdate","SyncSendDelete","syncUpsertCipher","syncDeleteCipher","syncUpsertFolder","syncDeleteFolder","syncUpsertSend","syncDeleteSend","SyncCipherNotification","SyncFolderNotification","UserNotification","SyncSendNotification","DefaultOptions","minNumber","minUppercase","minLowercase","wordSeparator","generatePassphrase","sanitizePasswordLength","positions","shuffleArray","allCharSet","lowercaseCharSet","uppercaseCharSet","numberCharSet","specialCharSet","positionChars","randomCharIndex","listLength","wordList","wordIndex","appendRandomNumberToRandomWord","optionsCache","enforcePasswordGeneratorPoliciesOnOptions","enforcedOptions","getPasswordGeneratorPolicyOptions","useUppercase","useLowercase","numberCount","specialCount","PasswordGeneratorPolicyOptions","currentPolicy","decryptHistory","currentHistory","matchesPrevious","unshift","GeneratedPasswordHistory","encryptHistory","newHistory","userInputs","globalUserInputs","finalUserInputs","zxcvbn","decrypted","array","forGeneration","minUppercaseCalc","minLowercaseCalc","minNumberCalc","minSpecialCalc","inEffect","policyCache","toLocaleLowerCase","toLocaleUpperCase","resetPasswordPolicyOptions","ResetPasswordPolicyOptions","policiesResponse","policyFilter","filteredPolicies","policySet","isExcemptFromPolicies","isExemptFromPolicies","indexing","searchableMinLength","builder","lunr","Builder","boost","extractor","uriExtractor","fieldExtractor","attachmentExtractor","isArray","getIndexForSearch","searchCiphersBasic","ciphersMap","searchResults","Query","wildcard","LEADING","TRAILING","q","tokenizer","term","joined","protocolIndex","queryIndex","decryptedSendCache","fileData","Send","ArrayBuffer","encryptFileData","parseFile","decSends","legacyServerSendFileUpload","encFileData","settingsCache","getSettingsKey","setEquivalentDomains","setSettingsKey","getSettings","syncInProgress","lastSync","toJSON","forceSync","allowThrowOnError","syncStarted","syncCompleted","needsSync","needsSyncing","syncProfile","syncFolders","syncCollections","syncCiphers","syncSends","syncSettings","syncPolicies","isEdit","localFolder","remoteFolder","shouldUpdate","localCipher","checkCollections","remoteCipher","localSend","remoteSend","getSecurityStamp","stamp","setSecurityStamp","setEmailVerified","setForcePasswordReset","OrganizationData","ProviderData","replaceOrganizations","replaceProviders","setToken","setRefreshToken","setClientId","setClientSecret","storeTokenValue","toggleTokens","decoded","getTokenExpirationDate","setUTCSeconds","tokenSecondsRemaining","offsetSeconds","msRemaining","email_verified","getIssuer","iss","amr","skipTokenStorage","B32Chars","SteamChars","period","digits","keyB32","isOtpAuth","isSteamAuth","digitParams","periodParam","algParam","timeHex","leftPad","decToHex","timeBytes","keyBytes","b32ToBytes","sign","offset","fullCode","trunc","isAutoCopyEnabled","b32ToHex","cleanedInput","bits","hex","byteIndex","chunk","signature","getForcePasswordReset","clearOrganizations","clearProviders","getOrganizationByIdentifier","Provider","isProviderAdmin","ProviderUserStatusType","ProviderUserType","ProviderAdmin","alreadyHashed","validateInput","VerifyOTPRequest","lockedCallback","loggedOutCallback","startCheck","checkVaultTimeout","lastActive","vaultTimeoutSeconds","allowSoftLock","ua","isOldSafari","algorithm","forgeLen","passwordBytes","toByteString","saltBytes","derivedKeyBytes","forge","wcLen","passwordBuf","toBuf","saltBuf","pbkdf2Params","toWebCryptoAlgorithm","importKey","impKey","deriveBits","ikm","outputByteSize","infoBuf","hkdfParams","prk","hashLen","infoArr","runningOkmLength","previousT","okm","md","md5","sha1","valueBytes","update","digest","valueBuf","signingAlgorithm","mac1","mac2","arr1","arr2","getBytes","rand","Uint32Array","util","createBuffer","putInt32","DecryptParameters","meta","encKeyByteString","macKeyByteString","decode64","parameters","dataBuffer","createDecipher","finish","rsaParams","impPrivateKey","exportKey","jwkPrivateKey","jwkPublicKeyParams","kty","ext","impPublicKey","modulusLength","publicExponent","generateKey","getRandomValues","encodeUtf8","modalOpen","modals"],"mappings":"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ACA,YACA,UACA,WACA,WACA,WACA,UACA,WACA,SACA,OACA,QACA,WACA,UACA,OACA,UACA,UACA,SACA,SACA,WACA,YACA,SACA,WACA,WACA,WACA,UACA,OACA,UACA,YACA,WACA,WACA,UACA,YACA,OACA,SACA,WACA,YACA,YACA,YACA,YACA,SACA,QACA,YACA,WACA,SACA,UACA,SACA,SACA,WACA,QACA,SACA,YACA,YACA,YACA,YACA,YACA,OACA,UACA,SACA,SACA,QACA,YACA,SACA,QACA,UACA,QACA,WACA,UACA,YACA,QACA,YACA,YACA,SACA,WACA,YACA,UACA,QACA,OACA,OACA,OACA,MACA,OACA,YACA,QACA,YACA,QACA,UACA,UACA,YACA,QACA,QACA,YACA,WACA,SACA,QACA,QACA,WACA,WACA,UACA,WACA,SACA,OACA,QACA,QACA,QACA,YACA,QACA,WACA,UACA,WACA,WACA,OACA,WACA,SACA,SACA,WACA,QACA,YACA,QACA,WACA,YACA,YACA,WACA,YACA,YACA,SACA,YACA,YACA,SACA,UACA,UACA,WACA,OACA,QACA,QACA,QACA,UACA,WACA,UACA,WACA,QACA,SACA,WACA,QACA,YACA,UACA,QACA,QACA,SACA,WACA,SACA,YACA,SACA,UACA,WACA,YACA,UACA,YACA,UACA,SACA,UACA,UACA,UACA,SACA,SACA,WACA,OACA,YACA,UACA,QACA,SACA,SACA,SACA,UACA,UACA,YACA,YACA,UACA,SACA,UACA,YACA,YACA,WACA,QACA,YACA,QACA,QACA,WACA,YACA,WACA,WACA,UACA,WACA,UACA,YACA,UACA,YACA,WACA,WACA,WACA,SACA,UACA,YACA,WACA,SACA,WACA,WACA,YACA,WACA,YACA,WACA,YACA,YACA,YACA,YACA,SACA,UACA,QACA,QACA,UACA,SACA,UACA,SACA,WACA,WACA,UACA,SACA,WACA,QACA,SACA,UACA,YACA,SACA,UACA,YACA,YACA,WACA,WACA,YACA,UACA,WACA,QACA,YACA,YACA,UACA,QACA,YACA,YACA,YACA,YACA,WACA,WACA,UACA,UACA,QACA,QACA,WACA,QACA,OACA,WACA,YACA,YACA,WACA,OACA,QACA,WACA,WACA,QACA,QACA,YACA,UACA,WACA,QACA,SACA,UACA,SACA,UACA,UACA,UACA,SACA,UACA,OACA,QACA,QACA,SACA,UACA,UACA,QACA,SACA,UACA,SACA,YACA,WACA,QACA,MACA,SACA,YACA,SACA,YACA,UACA,QACA,QACA,OACA,QACA,QACA,SACA,YACA,SACA,WACA,SACA,UACA,WACA,UACA,UACA,YACA,YACA,YACA,SACA,WACA,QACA,OACA,WACA,OACA,SACA,YACA,UACA,SACA,SACA,UACA,YACA,WACA,YACA,YACA,SACA,QACA,SACA,WACA,YACA,YACA,WACA,UACA,YACA,WACA,UACA,UACA,WACA,QACA,WACA,YACA,SACA,YACA,SACA,SACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,SACA,SACA,WACA,SACA,UACA,WACA,QACA,WACA,UACA,OACA,QACA,QACA,SACA,QACA,QACA,SACA,UACA,SACA,QACA,OACA,OACA,SACA,WACA,SACA,SACA,WACA,YACA,YACA,WACA,SACA,SACA,YACA,WACA,WACA,UACA,YACA,WACA,WACA,YACA,UACA,UACA,WACA,YACA,WACA,WACA,YACA,WACA,WACA,YACA,WACA,WACA,YACA,WACA,YACA,SACA,WACA,WACA,YACA,WACA,QACA,WACA,YACA,SACA,QACA,UACA,QACA,UACA,SACA,WACA,QACA,SACA,UACA,SACA,SACA,YACA,UACA,QACA,UACA,WACA,QACA,SACA,WACA,SACA,UACA,YACA,UACA,QACA,WACA,SACA,SACA,SACA,WACA,QACA,WACA,WACA,SACA,SACA,UACA,WACA,WACA,SACA,YACA,UACA,SACA,WACA,SACA,UACA,SACA,UACA,QACA,WACA,UACA,WACA,SACA,UACA,SACA,OACA,YACA,UACA,YACA,SACA,WACA,YACA,UACA,WACA,YACA,WACA,OACA,YACA,SACA,QACA,QACA,QACA,SACA,SACA,QACA,OACA,QACA,OACA,YACA,WACA,YACA,UACA,UACA,SACA,SACA,UACA,UACA,UACA,QACA,OACA,QACA,UACA,YACA,YACA,QACA,YACA,YACA,QACA,WACA,YACA,SACA,UACA,SACA,QACA,QACA,UACA,QACA,QACA,WACA,QACA,QACA,UACA,UACA,WACA,SACA,OACA,WACA,QACA,WACA,UACA,WACA,OACA,OACA,WACA,WACA,UACA,OACA,SACA,UACA,QACA,SACA,YACA,QACA,QACA,UACA,SACA,QACA,QACA,WACA,UACA,WACA,WACA,OACA,SACA,UACA,SACA,SACA,UACA,UACA,YACA,OACA,SACA,SACA,QACA,OACA,MACA,UACA,OACA,UACA,SACA,UACA,WACA,QACA,WACA,WACA,WACA,QACA,UACA,SACA,SACA,QACA,OACA,YACA,YACA,OACA,YACA,SACA,QACA,SACA,UACA,WACA,UACA,QACA,QACA,QACA,SACA,UACA,WACA,YACA,OACA,YACA,WACA,SACA,QACA,OACA,SACA,WACA,SACA,SACA,WACA,SACA,WACA,YACA,YACA,SACA,SACA,QACA,SACA,UACA,OACA,SACA,SACA,WACA,YACA,UACA,WACA,SACA,SACA,WACA,UACA,UACA,QACA,QACA,QACA,QACA,UACA,UACA,SACA,YACA,OACA,QACA,QACA,UACA,UACA,YACA,UACA,UACA,YACA,YACA,UACA,UACA,YACA,YACA,YACA,UACA,WACA,SACA,SACA,YACA,SACA,SACA,WACA,QACA,QACA,UACA,WACA,YACA,SACA,WACA,WACA,SACA,WACA,QACA,QACA,WACA,QACA,YACA,SACA,WACA,SACA,YACA,SACA,SACA,SACA,WACA,WACA,YACA,YACA,WACA,WACA,UACA,QACA,SACA,UACA,SACA,SACA,UACA,UACA,QACA,OACA,QACA,YACA,SACA,OACA,UACA,YACA,YACA,WACA,WACA,UACA,UACA,UACA,WACA,WACA,WACA,QACA,QACA,SACA,SACA,SACA,UACA,YACA,WACA,QACA,OACA,SACA,OACA,SACA,UACA,OACA,WACA,OACA,SACA,UACA,SACA,YACA,QACA,UACA,QACA,SACA,QACA,SACA,SACA,QACA,QACA,WACA,UACA,OACA,UACA,OACA,WACA,WACA,UACA,YACA,WACA,UACA,YACA,OACA,UACA,UACA,UACA,YACA,QACA,SACA,WACA,SACA,WACA,UACA,WACA,SACA,QACA,SACA,SACA,UACA,SACA,QACA,OACA,SACA,WACA,WACA,SACA,UACA,SACA,SACA,SACA,QACA,YACA,SACA,UACA,SACA,UACA,UACA,WACA,OACA,YACA,UACA,UACA,SACA,YACA,UACA,UACA,UACA,YACA,UACA,YACA,UACA,UACA,QACA,UACA,SACA,YACA,SACA,UACA,WACA,WACA,YACA,YACA,YACA,WACA,SACA,YACA,QACA,SACA,UACA,UACA,WACA,UACA,YACA,WACA,YACA,QACA,YACA,YACA,UACA,UACA,UACA,SACA,YACA,QACA,SACA,WACA,SACA,UACA,YACA,YACA,QACA,UACA,UACA,UACA,OACA,OACA,SACA,SACA,SACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,YACA,UACA,YACA,UACA,WACA,SACA,UACA,WACA,WACA,UACA,YACA,WACA,UACA,SACA,SACA,SACA,UACA,YACA,SACA,QACA,UACA,YACA,SACA,SACA,YACA,QACA,UACA,YACA,UACA,WACA,WACA,UACA,SACA,SACA,QACA,SACA,YACA,WACA,WACA,SACA,SACA,SACA,WACA,WACA,YACA,YACA,YACA,UACA,WACA,WACA,QACA,WACA,QACA,QACA,UACA,YACA,UACA,YACA,WACA,SACA,SACA,UACA,QACA,QACA,YACA,WACA,UACA,QACA,UACA,YACA,YACA,WACA,UACA,WACA,UACA,UACA,QACA,UACA,UACA,WACA,QACA,UACA,SACA,WACA,WACA,WACA,UACA,WACA,SACA,WACA,UACA,QACA,QACA,SACA,SACA,OACA,YACA,UACA,QACA,YACA,SACA,QACA,QACA,UACA,QACA,WACA,SACA,UACA,QACA,QACA,YACA,YACA,YACA,WACA,YACA,YACA,QACA,QACA,QACA,OACA,WACA,SACA,WACA,WACA,QACA,WACA,WACA,SACA,YACA,UACA,QACA,UACA,WACA,SACA,OACA,SACA,UACA,WACA,SACA,SACA,QACA,OACA,SACA,QACA,QACA,QACA,QACA,QACA,WACA,QACA,SACA,WACA,SACA,WACA,WACA,YACA,SACA,UACA,UACA,WACA,UACA,SACA,SACA,OACA,QACA,QACA,OACA,QACA,WACA,SACA,SACA,QACA,YACA,QACA,WACA,UACA,UACA,WACA,UACA,WACA,UACA,QACA,QACA,QACA,UACA,SACA,WACA,OACA,OACA,QACA,QACA,QACA,UACA,QACA,SACA,YACA,WACA,QACA,SACA,UACA,SACA,UACA,WACA,QACA,SACA,WACA,OACA,SACA,QACA,UACA,QACA,QACA,UACA,WACA,UACA,UACA,WACA,QACA,SACA,UACA,WACA,YACA,QACA,WACA,SACA,SACA,YACA,SACA,UACA,QACA,YACA,UACA,UACA,WACA,YACA,YACA,OACA,WACA,SACA,UACA,SACA,QACA,UACA,MACA,WACA,SACA,UACA,SACA,YACA,YACA,YACA,WACA,YACA,WACA,WACA,OACA,OACA,OACA,OACA,WACA,WACA,UACA,WACA,SACA,YACA,YACA,UACA,SACA,YACA,WACA,WACA,WACA,SACA,WACA,OACA,OACA,OACA,UACA,QACA,QACA,SACA,QACA,WACA,UACA,UACA,WACA,UACA,YACA,YACA,SACA,YACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,UACA,UACA,SACA,UACA,SACA,YACA,WACA,WACA,YACA,UACA,YACA,WACA,WACA,YACA,WACA,YACA,UACA,UACA,UACA,WACA,UACA,YACA,UACA,QACA,YACA,UACA,WACA,WACA,SACA,WACA,YACA,YACA,UACA,YACA,YACA,UACA,OACA,UACA,WACA,YACA,YACA,WACA,YACA,YACA,WACA,YACA,UACA,WACA,UACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,WACA,WACA,UACA,YACA,UACA,WACA,YACA,YACA,YACA,UACA,UACA,YACA,YACA,YACA,WACA,YACA,YACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,UACA,YACA,YACA,WACA,UACA,UACA,UACA,UACA,WACA,UACA,YACA,UACA,UACA,YACA,OACA,SACA,SACA,UACA,SACA,UACA,SACA,OACA,QACA,OACA,WACA,YACA,UACA,SACA,SACA,SACA,YACA,YACA,WACA,WACA,YACA,QACA,WACA,UACA,WACA,YACA,SACA,UACA,WACA,UACA,YACA,YACA,UACA,SACA,SACA,WACA,YACA,SACA,SACA,YACA,OACA,UACA,SACA,QACA,QACA,QACA,YACA,YACA,WACA,YACA,UACA,SACA,UACA,WACA,QACA,UACA,WACA,UACA,SACA,WACA,OACA,WACA,YACA,WACA,WACA,SACA,WACA,UACA,WACA,YACA,YACA,SACA,QACA,YACA,QACA,UACA,UACA,QACA,QACA,QACA,UACA,WACA,WACA,WACA,WACA,SACA,SACA,UACA,YACA,QACA,UACA,UACA,YACA,SACA,WACA,YACA,SACA,WACA,WACA,WACA,WACA,WACA,SACA,QACA,QACA,SACA,QACA,QACA,WACA,UACA,WACA,YACA,UACA,WACA,UACA,WACA,OACA,UACA,QACA,QACA,QACA,UACA,SACA,WACA,UACA,UACA,UACA,WACA,UACA,YACA,SACA,WACA,UACA,QACA,QACA,QACA,QACA,OACA,QACA,SACA,UACA,UACA,QACA,QACA,UACA,UACA,YACA,UACA,YACA,UACA,QACA,YACA,SACA,UACA,WACA,WACA,YACA,UACA,WACA,YACA,UACA,UACA,WACA,QACA,OACA,SACA,UACA,UACA,YACA,OACA,UACA,UACA,WACA,SACA,SACA,WACA,WACA,YACA,WACA,UACA,YACA,WACA,UACA,YACA,UACA,QACA,SACA,UACA,UACA,UACA,SACA,OACA,SACA,SACA,SACA,SACA,YACA,UACA,QACA,QACA,QACA,UACA,SACA,UACA,SACA,SACA,YACA,QACA,QACA,QACA,OACA,SACA,UACA,YACA,UACA,YACA,WACA,YACA,UACA,MACA,QACA,SACA,UACA,UACA,WACA,SACA,YACA,YACA,MACA,MACA,WACA,SACA,QACA,WACA,SACA,QACA,QACA,WACA,QACA,UACA,YACA,SACA,WACA,QACA,SACA,SACA,WACA,YACA,QACA,WACA,WACA,YACA,UACA,WACA,WACA,UACA,OACA,OACA,YACA,OACA,YACA,OACA,WACA,SACA,WACA,WACA,UACA,OACA,SACA,WACA,UACA,WACA,WACA,UACA,UACA,UACA,UACA,WACA,SACA,YACA,WACA,SACA,UACA,YACA,QACA,OACA,YACA,SACA,WACA,QACA,UACA,WACA,SACA,QACA,SACA,SACA,QACA,QACA,YACA,QACA,WACA,SACA,WACA,YACA,WACA,UACA,SACA,YACA,YACA,UACA,YACA,UACA,YACA,WACA,OACA,WACA,UACA,SACA,YACA,YACA,YACA,QACA,WACA,SACA,WACA,YACA,SACA,SACA,OACA,OACA,SACA,SACA,WACA,SACA,WACA,SACA,UACA,SACA,YACA,YACA,YACA,WACA,UACA,YACA,WACA,WACA,WACA,UACA,SACA,WACA,SACA,WACA,UACA,YACA,WACA,YACA,YACA,QACA,WACA,UACA,UACA,SACA,SACA,OACA,WACA,YACA,WACA,SACA,YACA,QACA,WACA,QACA,WACA,YACA,SACA,WACA,WACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,UACA,QACA,SACA,WACA,SACA,YACA,YACA,WACA,SACA,YACA,WACA,SACA,WACA,YACA,YACA,WACA,SACA,QACA,SACA,QACA,UACA,SACA,UACA,UACA,OACA,YACA,YACA,WACA,YACA,SACA,UACA,YACA,WACA,SACA,SACA,SACA,WACA,YACA,YACA,UACA,UACA,QACA,WACA,SACA,SACA,WACA,QACA,UACA,YACA,UACA,YACA,YACA,WACA,WACA,YACA,YACA,UACA,WACA,WACA,UACA,UACA,UACA,UACA,YACA,WACA,WACA,SACA,YACA,YACA,WACA,YACA,YACA,SACA,WACA,YACA,WACA,UACA,QACA,UACA,WACA,UACA,UACA,YACA,WACA,SACA,UACA,YACA,UACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,WACA,YACA,YACA,UACA,OACA,WACA,SACA,YACA,QACA,OACA,SACA,UACA,YACA,WACA,YACA,WACA,WACA,YACA,YACA,MACA,WACA,YACA,WACA,OACA,SACA,OACA,WACA,QACA,SACA,SACA,UACA,SACA,QACA,UACA,SACA,YACA,QACA,QACA,SACA,SACA,UACA,UACA,UACA,SACA,SACA,UACA,WACA,YACA,YACA,WACA,YACA,WACA,YACA,WACA,WACA,WACA,SACA,WACA,WACA,UACA,YACA,WACA,UACA,UACA,YACA,WACA,WACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,WACA,OACA,YACA,UACA,OACA,UACA,YACA,YACA,WACA,WACA,YACA,SACA,UACA,WACA,UACA,WACA,SACA,YACA,YACA,WACA,WACA,YACA,YACA,YACA,WACA,UACA,YACA,WACA,UACA,WACA,UACA,YACA,UACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,QACA,QACA,QACA,YACA,UACA,WACA,WACA,WACA,WACA,SACA,WACA,YACA,YACA,WACA,WACA,WACA,YACA,QACA,SACA,SACA,OACA,WACA,WACA,QACA,QACA,QACA,QACA,OACA,SACA,YACA,SACA,QACA,UACA,SACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,QACA,QACA,SACA,WACA,YACA,WACA,UACA,UACA,WACA,WACA,WACA,WACA,UACA,QACA,OACA,YACA,SACA,SACA,OACA,SACA,WACA,SACA,OACA,OACA,QACA,OACA,OACA,WACA,YACA,YACA,WACA,YACA,WACA,UACA,UACA,YACA,WACA,YACA,QACA,UACA,UACA,OACA,UACA,WACA,YACA,YACA,WACA,YACA,YACA,YACA,SACA,SACA,WACA,SACA,SACA,QACA,OACA,UACA,QACA,QACA,QACA,UACA,WACA,YACA,WACA,WACA,SACA,WACA,SACA,SACA,WACA,UACA,UACA,UACA,QACA,QACA,QACA,YACA,UACA,WACA,UACA,UACA,UACA,QACA,QACA,WACA,SACA,OACA,MACA,SACA,YACA,UACA,WACA,UACA,WACA,WACA,QACA,OACA,OACA,SACA,SACA,MACA,OACA,SACA,WACA,OACA,UACA,WACA,WACA,MACA,OACA,SACA,YACA,YACA,UACA,UACA,WACA,SACA,SACA,OACA,OACA,UACA,OACA,QACA,QACA,QACA,UACA,UACA,WACA,UACA,YACA,UACA,WACA,UACA,WACA,WACA,OACA,QACA,UACA,UACA,UACA,SACA,UACA,QACA,UACA,UACA,WACA,WACA,WACA,UACA,UACA,UACA,YACA,YACA,UACA,YACA,SACA,SACA,UACA,QACA,UACA,SACA,WACA,SACA,YACA,YACA,SACA,WACA,UACA,QACA,SACA,SACA,OACA,OACA,QACA,QACA,QACA,YACA,OACA,SACA,UACA,YACA,UACA,WACA,YACA,UACA,YACA,YACA,OACA,WACA,SACA,OACA,UACA,SACA,WACA,YACA,WACA,MACA,YACA,UACA,YACA,SACA,YACA,SACA,SACA,WACA,WACA,YACA,UACA,YACA,SACA,QACA,YACA,UACA,SACA,QACA,YACA,UACA,SACA,YACA,WACA,WACA,WACA,UACA,YACA,YACA,WACA,SACA,MACA,WACA,WACA,YACA,QACA,UACA,SACA,MACA,UACA,WACA,MACA,YACA,QACA,YACA,WACA,YACA,QACA,UACA,QACA,QACA,UACA,SACA,UACA,YACA,YACA,QACA,WACA,UACA,SACA,SACA,WACA,SACA,YACA,QACA,UACA,YACA,WACA,OACA,QACA,WACA,UACA,WACA,UACA,UACA,WACA,WACA,YACA,WACA,YACA,WACA,WACA,WACA,WACA,UACA,UACA,YACA,QACA,MACA,SACA,YACA,SACA,YACA,YACA,WACA,UACA,YACA,SACA,SACA,YACA,YACA,WACA,UACA,UACA,WACA,WACA,YACA,QACA,SACA,UACA,UACA,YACA,YACA,UACA,YACA,WACA,YACA,YACA,WACA,YACA,WACA,SACA,WACA,WACA,UACA,WACA,SACA,UACA,WACA,WACA,YACA,UACA,SACA,UACA,YACA,YACA,YACA,UACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,SACA,SACA,SACA,UACA,UACA,SACA,SACA,YACA,WACA,YACA,WACA,SACA,UACA,SACA,SACA,YACA,SACA,SACA,WACA,UACA,WACA,UACA,YACA,WACA,WACA,WACA,UACA,WACA,QACA,OACA,SACA,OACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,WACA,UACA,QACA,SACA,WACA,UACA,UACA,YACA,SACA,YACA,YACA,WACA,SACA,SACA,UACA,YACA,SACA,SACA,UACA,QACA,QACA,WACA,YACA,YACA,WACA,WACA,WACA,SACA,YACA,YACA,WACA,UACA,QACA,UACA,YACA,YACA,SACA,WACA,WACA,YACA,YACA,WACA,UACA,UACA,WACA,UACA,QACA,YACA,SACA,YACA,WACA,UACA,QACA,WACA,YACA,YACA,UACA,UACA,OACA,YACA,YACA,YACA,WACA,WACA,QACA,WACA,UACA,OACA,QACA,YACA,SACA,QACA,UACA,UACA,WACA,YACA,YACA,YACA,SACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,SACA,YACA,YACA,YACA,YACA,QACA,OACA,YACA,SACA,UACA,SACA,QACA,WACA,OACA,SACA,YACA,WACA,WACA,SACA,UACA,YACA,YACA,YACA,YACA,YACA,QACA,SACA,WACA,YACA,SACA,SACA,WACA,UACA,YACA,WACA,UACA,UACA,UACA,YACA,WACA,WACA,YACA,SACA,WACA,UACA,YACA,YACA,WACA,YACA,SACA,YACA,WACA,WACA,UACA,YACA,YACA,SACA,YACA,UACA,YACA,YACA,QACA,SACA,WACA,WACA,YACA,WACA,WACA,WACA,YACA,UACA,SACA,WACA,SACA,YACA,UACA,UACA,SACA,YACA,UACA,UACA,OACA,SACA,UACA,SACA,OACA,QACA,UACA,OACA,WACA,SACA,SACA,WACA,UACA,UACA,YACA,QACA,UACA,OACA,UACA,YACA,YACA,UACA,UACA,WACA,SACA,UACA,WACA,SACA,YACA,YACA,UACA,WACA,WACA,MACA,QACA,UACA,SACA,SACA,OACA,OACA,SACA,SACA,WACA,WACA,WACA,WACA,WACA,QACA,QACA,UACA,SACA,UACA,WACA,YACA,WACA,SACA,SACA,QACA,SACA,SACA,WACA,UACA,YACA,QACA,QACA,QACA,QACA,UACA,SACA,WACA,WACA,YACA,UACA,UACA,QACA,WACA,QACA,UACA,SACA,WACA,SACA,SACA,SACA,UACA,OACA,SACA,QACA,WACA,SACA,WACA,WACA,UACA,UACA,YACA,QACA,WACA,QACA,UACA,WACA,WACA,YACA,SACA,UACA,UACA,WACA,MACA,OACA,UACA,UACA,WACA,WACA,YACA,YACA,QACA,UACA,QACA,QACA,YACA,UACA,WACA,WACA,OACA,UACA,YACA,YACA,YACA,WACA,WACA,SACA,QACA,UACA,WACA,SACA,WACA,UACA,YACA,YACA,WACA,UACA,WACA,WACA,WACA,YACA,YACA,WACA,OACA,UACA,SACA,QACA,QACA,SACA,SACA,QACA,QACA,OACA,QACA,QACA,QACA,WACA,OACA,SACA,UACA,QACA,WACA,UACA,UACA,QACA,SACA,UACA,WACA,OACA,MACA,MACA,OACA,QACA,OACA,WACA,SACA,WACA,SACA,WACA,SACA,OACA,OACA,OACA,UACA,WACA,WACA,YACA,SACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,YACA,WACA,UACA,WACA,WACA,WACA,SACA,SACA,UACA,WACA,WACA,MACA,QACA,WACA,WACA,UACA,YACA,WACA,YACA,WACA,QACA,QACA,UACA,UACA,YACA,SACA,UACA,QACA,WACA,WACA,WACA,UACA,UACA,UACA,WACA,WACA,UACA,WACA,SACA,YACA,WACA,YACA,WACA,UACA,WACA,YACA,WACA,UACA,SACA,WACA,SACA,YACA,WACA,QACA,UACA,UACA,WACA,SACA,SACA,QACA,SACA,WACA,YACA,YACA,WACA,QACA,SACA,UACA,QACA,UACA,YACA,SACA,OACA,QACA,YACA,UACA,WACA,WACA,YACA,SACA,QACA,QACA,SACA,WACA,YACA,WACA,QACA,YACA,SACA,MACA,QACA,MACA,YACA,UACA,QACA,OACA,YACA,WACA,UACA,SACA,SACA,UACA,YACA,SACA,YACA,WACA,OACA,SACA,QACA,SACA,SACA,WACA,UACA,MACA,SACA,UACA,SACA,SACA,UACA,SACA,UACA,SACA,UACA,SACA,MACA,WACA,YACA,SACA,UACA,WACA,QACA,OACA,OACA,SACA,OACA,QACA,OACA,SACA,MACA,SACA,UACA,WACA,WACA,QACA,UACA,YACA,SACA,QACA,YACA,WACA,YACA,UACA,YACA,WACA,WACA,SACA,YACA,YACA,YACA,WACA,YACA,UACA,YACA,UACA,UACA,UACA,QACA,QACA,YACA,SACA,UACA,YACA,QACA,OACA,WACA,YACA,WACA,SACA,WACA,SACA,SACA,SACA,QACA,UACA,SACA,WACA,QACA,QACA,SACA,QACA,UACA,UACA,UACA,QACA,YACA,SACA,YACA,UACA,SACA,WACA,YACA,QACA,UACA,QACA,WACA,UACA,WACA,UACA,SACA,UACA,UACA,UACA,UACA,SACA,UACA,SACA,UACA,WACA,WACA,SACA,YACA,YACA,UACA,WACA,QACA,QACA,QACA,UACA,WACA,UACA,OACA,SACA,YACA,UACA,SACA,OACA,OACA,WACA,OACA,UACA,QACA,WACA,WACA,YACA,OACA,UACA,QACA,UACA,OACA,OACA,OACA,QACA,WACA,YACA,QACA,SACA,OACA,SACA,OACA,SACA,WACA,OACA,UACA,SACA,SACA,SACA,OACA,OACA,OACA,WACA,YACA,WACA,YACA,SACA,SACA,WACA,UACA,YACA,WACA,WACA,UACA,WACA,QACA,WACA,WACA,UACA,UACA,UACA,WACA,UACA,SACA,UACA,QACA,WACA,QACA,QACA,UACA,YACA,QACA,QACA,YACA,UACA,UACA,YACA,WACA,SACA,YACA,SACA,YACA,YACA,UACA,QACA,OACA,UACA,WACA,WACA,YACA,SACA,QACA,UACA,WACA,OACA,YACA,OACA,QACA,YACA,WACA,WACA,QACA,UACA,YACA,QACA,YACA,QACA,SACA,WACA,OACA,UACA,OACA,WACA,SACA,QACA,QACA,SACA,WACA,SACA,QACA,SACA,UACA,QACA,QACA,SACA,UACA,QACA,OACA,SACA,WACA,WACA,UACA,UACA,YACA,UACA,WACA,SACA,QACA,YACA,WACA,WACA,QACA,UACA,YACA,QACA,OACA,WACA,QACA,OACA,UACA,UACA,YACA,UACA,QACA,SACA,WACA,OACA,OACA,QACA,QACA,UACA,OACA,SACA,MACA,UACA,WACA,YACA,WACA,UACA,WACA,SACA,SACA,UACA,UACA,MACA,UACA,QACA,OACA,UACA,OACA,SACA,SACA,YACA,SACA,UACA,SACA,UACA,YACA,UACA,WACA,WACA,YACA,WACA,WACA,YACA,YACA,WACA,SACA,UACA,WACA,UACA,WACA,YACA,YACA,YACA,UACA,UACA,WACA,WACA,UACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,YACA,WACA,WACA,YACA,YACA,WACA,WACA,UACA,WACA,SACA,YACA,SACA,QACA,YACA,YACA,UACA,WACA,UACA,YACA,QACA,SACA,WACA,WACA,YACA,WACA,WACA,WACA,YACA,UACA,WACA,YACA,SACA,WACA,WACA,WACA,YACA,WACA,QACA,UACA,WACA,YACA,YACA,YACA,UACA,UACA,UACA,QACA,UACA,OACA,SACA,QACA,UACA,YACA,QACA,SACA,YACA,WACA,UACA,WACA,YACA,OACA,UACA,SACA,QACA,QACA,SACA,WACA,SACA,WACA,SACA,OACA,WACA,WACA,YACA,YACA,YACA,SACA,SACA,YACA,WACA,UACA,WACA,WACA,WACA,YACA,YACA,WACA,WACA,YACA,UACA,WACA,YACA,YACA,UACA,WACA,OACA,OACA,QACA,UACA,YACA,UACA,QACA,UACA,YACA,QACA,SACA,SACA,SACA,UACA,UACA,WACA,WACA,UACA,YACA,QACA,WACA,QACA,SACA,SACA,YACA,QACA,WACA,SACA,UACA,UACA,UACA,UACA,QACA,YACA,WACA,WACA,UACA,WACA,SACA,SACA,WACA,OACA,MACA,OACA,OACA,OACA,QACA,SACA,WACA,SACA,QACA,YACA,WACA,UACA,SACA,YACA,WACA,YACA,WACA,WACA,SACA,SACA,YACA,YACA,SACA,WACA,SACA,OACA,SACA,UACA,WACA,WACA,SACA,SACA,SACA,UACA,SACA,YACA,UACA,QACA,OACA,UACA,OACA,SACA,YACA,MACA,SACA,UACA,WACA,YACA,WACA,YACA,YACA,YACA,SACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,MACA,UACA,QACA,OACA,OACA,MACA,WACA,WACA,WACA,UACA,YACA,YACA,WACA,WACA,WACA,SACA,QACA,OACA,QACA,WACA,SACA,SACA,YACA,WACA,WACA,QACA,YACA,WACA,UACA,WACA,UACA,YACA,WACA,UACA,YACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,WACA,SACA,SACA,YACA,UACA,WACA,YACA,YACA,WACA,SACA,UACA,YACA,YACA,WACA,UACA,YACA,YACA,QACA,WACA,YACA,WACA,SACA,WACA,YACA,YACA,WACA,UACA,YACA,UACA,WACA,YACA,WACA,UACA,YACA,YACA,YACA,UACA,YACA,SACA,WACA,SACA,SACA,MACA,OACA,SACA,OACA,QACA,MACA,OACA,YACA,WACA,YACA,YACA,WACA,WACA,UACA,WACA,WACA,YACA,YACA,UACA,QACA,UACA,YACA,UACA,OACA,YACA,SACA,QACA,MACA,MACA,SACA,SACA,YACA,UACA,WACA,YACA,SACA,YACA,WACA,MACA,UACA,UACA,SACA,UACA,UACA,WACA,QACA,OACA,QACA,UACA,UACA,OACA,UACA,YACA,OACA,OACA,YACA,UACA,QACA,SACA,SACA,MACA,QACA,SACA,QACA,SACA,WACA,OACA,UACA,UACA,MACA,SACA,YACA,SACA,UACA,OACA,UACA,WACA,WACA,YACA,QACA,OACA,MACA,SACA,WACA,YACA,SACA,UACA,WACA,YACA,WACA,QACA,YACA,WACA,YACA,OACA,SACA,WACA,UACA,QACA,YACA,QACA,UACA,UACA,OACA,SACA,QACA,OACA,WACA,WACA,OACA,SACA,UACA,SACA,UACA,WACA,SACA,QACA,OACA,UACA,YACA,UACA,SACA,WACA,WACA,QACA,WACA,UACA,SACA,QACA,QACA,SACA,WACA,OACA,MACA,OACA,SACA,OACA,WACA,WACA,SACA,OACA,OACA,WACA,WACA,YACA,WACA,OACA,SACA,SACA,WACA,SACA,WACA,UACA,UACA,UACA,OACA,UACA,UACA,YACA,WACA,SACA,UACA,UACA,OACA,SACA,QACA,OACA,UACA,WACA,OACA,QACA,WACA,QACA,QACA,QACA,SACA,UACA,QACA,OACA,UACA,UACA,WACA,YACA,WACA,SACA,SACA,QACA,UACA,WACA,SACA,UACA,SACA,OACA,OACA,QACA,SACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YACA,YACA,WACA,YACA,WACA,YACA,QACA,UACA,SACA,QACA,SACA,UACA,SACA,OACA,QACA,OACA,OACA,QACA,OACA,QACA,OACA,SACA,WACA,UACA,SACA,WACA,SACA,UACA,UACA,SACA,WACA,SACA,WACA,SACA,WACA,OACA,WACA,OACA,SACA,QACA,SACA,SACA,WACA,UACA,UACA,YACA,OACA,UACA,SACA,YACA,UACA,QACA,OACA,SACA,OACA,OACA,UACA,SACA,UACA,YACA,WACA,SACA,UACA,QACA,WACA,SACA,WACA,YACA,YACA,SACA,UACA,YACA,UACA,UACA,WACA,MACA,OACA,SACA,UACA,UACA,WACA,SACA,WACA,WACA,SACA,QACA,QACA,OACA,OACA,UACA,YACA,QACA,QACA,UACA,WACA,OACA,QACA,WACA,WACA,SACA,SACA,WACA,UACA,OACA,OACA,MACA,UACA,UACA,SACA,OACA,OACA,WACA,YACA,SACA,SACA,SACA,UACA,QACA,SACA,QACA,YACA,UACA,SACA,SACA,YACA,YACA,QACA,UACA,YACA,WACA,YACA,YACA,SACA,WACA,UACA,SACA,YACA,WACA,YACA,UACA,UACA,SACA,QACA,WACA,WACA,YACA,YACA,OACA,QACA,OACA,YACA,OACA,SACA,WACA,SACA,YACA,UACA,YACA,WACA,QACA,YACA,SACA,QACA,YACA,WACA,WACA,SACA,WACA,WACA,QACA,OACA,UACA,YACA,WACA,UACA,SACA,UACA,WACA,QACA,YACA,WACA,YACA,YACA,YACA,UACA,YACA,WACA,WACA,SACA,WACA,UACA,YACA,WACA,WACA,QACA,YACA,SACA,YACA,OACA,OACA,SACA,UACA,YACA,UACA,WACA,UACA,WACA,UACA,YACA,WACA,SACA,SACA,QACA,QACA,YACA,UACA,UACA,UACA,YACA,WACA,YACA,SACA,UACA,UACA,YACA,QACA,UACA,SACA,UACA,QACA,WACA,SACA,SACA,SACA,OACA,MACA,WACA,YACA,UACA,UACA,WACA,QACA,QACA,YACA,YACA,SACA,WACA,SACA,SACA,UACA,WACA,SACA,YACA,SACA,UACA,SACA,QACA,YACA,SACA,YACA,YACA,UACA,SACA,YACA,SACA,UACA,WACA,SACA,UACA,UACA,UACA,YACA,WACA,UACA,WACA,YACA,WACA,WACA,YACA,OACA,SACA,YACA,YACA,SACA,SACA,SACA,SACA,WACA,WACA,WACA,QACA,WACA,WACA,UACA,QACA,SACA,YACA,SACA,UACA,SACA,WACA,WACA,UACA,QACA,SACA,SACA,WACA,SACA,UACA,YACA,SACA,UACA,YACA,WACA,QACA,WACA,OACA,YACA,WACA,WACA,UACA,MACA,YACA,SACA,WACA,WACA,YACA,YACA,YACA,WACA,UACA,UACA,WACA,WACA,WACA,YACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,YACA,UACA,WACA,UACA,YACA,QACA,SACA,WACA,SACA,YACA,WACA,UACA,WACA,YACA,YACA,YACA,WACA,MACA,SACA,WACA,UACA,YACA,WACA,WACA,WACA,QACA,YACA,WACA,YACA,YACA,UACA,WACA,SACA,QACA,OACA,WACA,YACA,SACA,WACA,YACA,SACA,YACA,QACA,QACA,YACA,WACA,UACA,WACA,UACA,WACA,QACA,YACA,YACA,QACA,QACA,UACA,OACA,QACA,SACA,QACA,SACA,OACA,OACA,MACA,MACA,WACA,QACA,OACA,SACA,UACA,WACA,WACA,YACA,YACA,SACA,WACA,QACA,YACA,UACA,QACA,QACA,WACA,UACA,YACA,SACA,QACA,YACA,QACA,YACA,WACA,SACA,UACA,YACA,WACA,QACA,QACA,SACA,YACA,QACA,UACA,UACA,SACA,YACA,QACA,UACA,SACA,WACA,OACA,YACA,YACA,SACA,OACA,SACA,SACA,SACA,UACA,YACA,UACA,OACA,QACA,MACA,OACA,OACA,SACA,QACA,YACA,OACA,SACA,SACA,UACA,QACA,SACA,UACA,YACA,WACA,SACA,WACA,UACA,SACA,WACA,WACA,WACA,YACA,OACA,SACA,UACA,SACA,WACA,SACA,WACA,SACA,YACA,SACA,SACA,WACA,WACA,YACA,WACA,YACA,YACA,UACA,UACA,OACA,SACA,OACA,UACA,QACA,OACA,MACA,YACA,SACA,WACA,WACA,SACA,UACA,QACA,OACA,SACA,WACA,WACA,QACA,QACA,SACA,SACA,WACA,YACA,QACA,WACA,QACA,UACA,SACA,UACA,SACA,UACA,SACA,UACA,SACA,WACA,UACA,WACA,YACA,UACA,WACA,WACA,UACA,UACA,UACA,UACA,UACA,SACA,WACA,WACA,YACA,QACA,SACA,QACA,MACA,MACA,QACA,MACA,YACA,WACA,WACA,SACA,WACA,UACA,WACA,YACA,SACA,YACA,OACA,UACA,YACA,YACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,SACA,YACA,SACA,UACA,YACA,YACA,WACA,WACA,SACA,QACA,SACA,UACA,SACA,UACA,UACA,OACA,MACA,OACA,WACA,OACA,MACA,QACA,WACA,QACA,OACA,UACA,WACA,OACA,WACA,UACA,WACA,UACA,QACA,SACA,WACA,OACA,WACA,QACA,UACA,YACA,UACA,OACA,SACA,OACA,OACA,OACA,OACA,UACA,OACA,OACA,WACA,UACA,YACA,YACA,YACA,WACA,QACA,UACA,WACA,SACA,WACA,WACA,YACA,YACA,MACA,YACA,UACA,QACA,QACA,OACA,QACA,QACA,SACA,UACA,SACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,QACA,WACA,SACA,WACA,WACA,UACA,WACA,SACA,UACA,SACA,UACA,UACA,WACA,WACA,UACA,YACA,YACA,UACA,UACA,SACA,UACA,UACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,WACA,UACA,WACA,SACA,OACA,QACA,OACA,UACA,UACA,WACA,UACA,WACA,WACA,YACA,YACA,WACA,YACA,WACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,UACA,YACA,YACA,YACA,UACA,WACA,WACA,WACA,WACA,YACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YACA,WACA,YACA,WACA,UACA,UACA,WACA,WACA,WACA,YACA,YACA,WACA,UACA,YACA,WACA,YACA,YACA,WACA,YACA,YACA,WACA,WACA,WACA,UACA,YACA,WACA,YACA,YACA,YACA,WACA,YACA,YACA,WACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,UACA,WACA,WACA,WACA,UACA,YACA,WACA,YACA,MACA,SACA,UACA,YACA,UACA,YACA,SACA,WACA,SACA,QACA,QACA,YACA,UACA,WACA,WACA,WACA,SACA,SACA,UACA,SACA,WACA,UACA,QACA,QACA,SACA,UACA,SACA,YACA,OACA,WACA,YACA,SACA,WACA,WACA,UACA,WACA,SACA,UACA,WACA,QACA,WACA,OACA,YACA,QACA,UACA,WACA,YACA,UACA,YACA,SACA,QACA,YACA,YACA,SACA,QACA,UACA,UACA,WACA,YACA,SACA,UACA,YACA,WACA,YACA,YACA,YACA,WACA,YACA,YACA,YACA,WACA,WACA,YACA,SACA,UACA,YACA,SACA,SACA,QACA,UACA,UACA,SACA,WACA,SACA,SACA,UACA,UACA,UACA,SACA,UACA,YACA,SACA,UACA,YACA,QACA,WACA,WACA,UACA,WACA,YACA,WACA,UACA,UACA,UACA,YACA,WACA,WACA,WACA,QACA,SACA,SACA,UACA,SACA,WACA,UACA,QACA,YACA,SACA,WACA,YACA,OACA,WACA,UACA,QACA,YACA,UACA,SACA,YACA,YACA,SACA,WACA,QACA,YACA,WACA,SACA,SACA,UACA,UACA,WACA,SACA,QACA,QACA,SACA,UACA,WACA,UACA,SACA,SACA,QACA,SACA,WACA,WACA,YACA,WACA,WACA,YACA,WACA,UACA,SACA,OACA,SACA,WACA,UACA,SACA,UACA,UACA,YACA,WACA,UACA,YACA,QACA,SACA,UACA,WACA,YACA,MACA,WACA,UACA,QACA,YACA,YACA,YACA,YACA,UACA,YACA,SACA,WACA,UACA,YACA,QACA,OACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,QACA,OACA,YACA,YACA,SACA,YACA,QACA,SACA,WACA,QACA,YACA,SACA,YACA,YACA,QACA,UACA,UACA,SACA,UACA,YACA,SACA,UACA,YACA,QACA,YACA,QACA,SACA,WACA,UACA,UACA,WACA,QACA,UACA,QACA,SACA,UACA,UACA,SACA,WACA,UACA,WACA,WACA,UACA,WACA,YACA,YACA,WACA,WACA,SACA,UACA,YACA,YACA,UACA,WACA,YACA,WACA,UACA,UACA,WACA,UACA,YACA,WACA,QACA,WACA,QACA,SACA,YACA,SACA,WACA,YACA,UACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,UACA,WACA,SACA,OACA,YACA,UACA,QACA,MACA,OACA,OACA,OACA,UACA,UACA,WACA,YACA,SACA,QACA,SACA,QACA,SACA,QACA,SACA,SACA,QACA,SACA,WACA,QACA,OACA,YACA,UACA,YACA,UACA,SACA,OACA,OACA,UACA,OACA,SACA,SACA,QACA,WACA,WACA,UACA,WACA,YACA,OACA,SACA,WACA,WACA,SACA,YACA,WACA,UACA,SACA,WACA,QACA,OACA,SACA,WACA,WACA,SACA,UACA,SACA,UACA,WACA,SACA,SACA,UACA,YACA,UACA,UACA,QACA,SACA,WACA,QACA,UACA,OACA,WACA,YACA,UACA,QACA,SACA,MACA,WACA,SACA,WACA,UACA,WACA,YACA,SACA,UACA,WACA,YACA,UACA,WACA,WACA,UACA,YACA,UACA,SACA,WACA,YACA,UACA,UACA,SACA,YACA,YACA,UACA,YACA,WACA,YACA,YACA,SACA,UACA,WACA,WACA,UACA,WACA,YACA,WACA,UACA,SACA,UACA,SACA,YACA,YACA,YACA,SACA,UACA,YACA,UACA,QACA,UACA,YACA,UACA,YACA,YACA,WACA,UACA,SACA,UACA,UACA,YACA,UACA,UACA,WACA,SACA,YACA,WACA,QACA,SACA,YACA,UACA,UACA,SACA,QACA,WACA,QACA,QACA,QACA,SACA,SACA,WACA,UACA,UACA,YACA,QACA,YACA,WACA,WACA,YACA,QACA,UACA,YACA,UACA,YACA,UACA,WACA,YACA,WACA,WACA,UACA,UACA,UACA,UACA,YACA,YACA,YACA,UACA,WACA,YACA,UACA,YACA,UACA,WACA,YACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,WACA,QACA,QACA,YACA,SACA,WACA,YACA,SACA,YACA,WACA,WACA,YACA,WACA,UACA,QACA,UACA,YACA,WACA,SACA,YACA,YACA,WACA,WACA,QACA,WACA,SACA,SACA,WACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,UACA,UACA,WACA,YACA,QACA,SACA,QACA,YACA,QACA,UACA,MACA,UACA,SACA,YACA,SACA,SACA,MACA,OACA,YACA,OACA,UACA,QACA,YACA,OACA,SACA,SACA,QACA,WACA,YACA,YACA,UACA,WACA,OACA,QACA,SACA,QACA,WACA,YACA,WACA,SACA,WACA,YACA,QACA,UACA,WACA,SACA,SACA,UACA,SACA,SACA,WACA,YACA,OACA,QACA,YACA,WACA,UACA,WACA,WACA,YACA,SACA,YACA,UACA,WACA,UACA,SACA,QACA,UACA,OACA,SACA,WACA,UACA,YACA,SACA,QACA,WACA,QACA,WACA,QACA,UACA,YACA,YACA,UACA,UACA,QACA,UACA,UACA,SACA,YACA,YACA,WACA,UACA,SACA,QACA,UACA,UACA,YACA,YACA,YACA,QACA,QACA,QACA,UACA,YACA,QACA,OACA,SACA,YACA,WACA,YACA,QACA,QACA,OACA,SACA,SACA,OACA,SACA,QACA,SACA,WACA,YACA,WACA,YACA,WACA,QACA,SACA,SACA,OACA,OACA,SACA,SACA,UACA,SACA,UACA,UACA,WACA,UACA,SACA,OACA,SACA,QACA,SACA,WACA,OACA,SACA,QACA,YACA,SACA,SACA,SACA,UACA,SACA,UACA,UACA,UACA,QACA,OACA,SACA,SACA,OACA,UACA,SACA,QACA,SACA,SACA,UACA,YACA,WACA,QACA,YACA,WACA,WACA,UACA,WACA,OACA,YACA,WACA,UACA,YACA,YACA,YACA,WACA,SACA,WACA,WACA,WACA,UACA,YACA,SACA,QACA,UACA,SACA,SACA,UACA,SACA,UACA,UACA,WACA,WACA,SACA,SACA,YACA,SACA,SACA,SACA,SACA,YACA,YACA,UACA,SACA,WACA,UACA,WACA,YACA,UACA,YACA,YACA,SACA,YACA,UACA,YACA,YACA,YACA,SACA,SACA,UACA,SACA,WACA,WACA,SACA,YACA,YACA,UACA,WACA,WACA,YACA,WACA,UACA,UACA,UACA,YACA,YACA,UACA,YACA,SACA,YACA,UACA,WACA,WACA,WACA,YACA,YACA,SACA,SACA,UACA,SACA,WACA,WACA,WACA,WACA,YACA,UACA,UACA,WACA,UACA,UACA,YACA,SACA,YACA,YACA,UACA,SACA,WACA,YACA,SACA,SACA,UACA,UACA,SACA,SACA,SACA,WACA,YACA,WACA,UACA,YACA,UACA,UACA,WACA,YACA,QACA,SACA,SACA,YACA,YACA,UACA,YACA,UACA,YACA,SACA,WACA,UACA,YACA,YACA,UACA,WACA,WACA,QACA,QACA,UACA,UACA,YACA,WACA,WACA,WACA,UACA,QACA,UACA,YACA,UACA,SACA,SACA,SACA,WACA,SACA,YACA,OACA,SACA,SACA,UACA,UACA,WACA,SACA,WACA,WACA,YACA,YACA,QACA,UACA,YACA,SACA,UACA,SACA,YACA,UACA,UACA,UACA,WACA,SACA,WACA,YACA,YACA,WACA,YACA,YACA,UACA,UACA,WACA,WACA,YACA,WACA,SACA,SACA,SACA,WACA,UACA,SACA,UACA,YACA,YACA,UACA,SACA,SACA,WACA,YACA,SACA,WACA,WACA,SACA,WACA,UACA,SACA,UACA,QACA,WACA,SACA,YACA,SACA,YACA,YACA,UACA,UACA,WACA,YACA,YACA,YACA,OACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,UACA,UACA,YACA,UACA,QACA,SACA,WACA,UACA,SACA,WACA,WACA,WACA,WACA,SACA,SACA,QACA,UACA,UACA,YACA,YACA,YACA,WACA,WACA,UACA,WACA,YACA,YACA,YACA,SACA,WACA,WACA,WACA,WACA,SACA,WACA,UACA,WACA,SACA,SACA,WACA,YACA,YACA,SACA,WACA,YACA,SACA,YACA,YACA,UACA,UACA,UACA,UACA,WACA,SACA,SACA,WACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YACA,YACA,QACA,SACA,UACA,SACA,UACA,UACA,WACA,QACA,SACA,UACA,UACA,UACA,SACA,UACA,YACA,WACA,WACA,UACA,YACA,YACA,SACA,YACA,SACA,WACA,UACA,YACA,UACA,UACA,WACA,YACA,SACA,SACA,WACA,YACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UACA,QACA,SACA,UACA,OACA,SACA,SACA,WACA,UACA,UACA,WACA,SACA,OACA,SACA,UACA,OACA,UACA,QACA,QACA,UACA,SACA,OACA,OACA,QACA,UACA,OACA,UACA,WACA,WACA,UACA,SACA,WACA,UACA,OACA,SACA,OACA,UACA,UACA,QACA,QACA,YACA,WACA,YACA,YACA,UACA,WACA,SACA,UACA,QACA,UACA,OACA,QACA,WACA,SACA,WACA,SACA,SACA,WACA,YACA,UACA,WACA,YACA,WACA,QACA,QACA,QACA,OACA,OACA,SACA,SACA,OACA,SACA,UACA,UACA,WACA,WACA,WACA,YACA,UACA,YACA,UACA,UACA,QACA,SACA,QACA,SACA,SACA,UACA,SACA,UACA,OACA,SACA,SACA,MACA,SACA,OACA,SACA,WACA,UACA,QACA,YACA,UACA,SACA,UACA,QACA,OACA,SACA,UACA,QACA,OACA,OACA,OACA,MACA,UACA,WACA,YACA,SACA,YACA,SACA,YACA,UACA,WACA,QACA,UACA,SACA,YACA,YACA,SACA,WACA,UACA,OACA,OACA,UACA,QACA,OACA,QACA,OACA,QACA,SACA,WACA,SACA,SACA,QACA,SACA,QACA,OACA,WACA,SACA,UACA,YACA,YACA,OACA,SACA,WACA,WACA,WACA,YACA,SACA,UACA,WACA,UACA,YACA,UACA,SACA,WACA,UACA,UACA,YACA,UACA,YACA,YACA,WACA,QACA,WACA,YACA,OACA,QACA,UACA,YACA,QACA,UACA,YACA,UACA,OACA,YACA,QACA,UACA,WACA,QACA,YACA,YACA,UACA,WACA,WACA,YACA,QACA,QACA,SACA,UACA,QACA,UACA,SACA,QACA,YACA,MACA,UACA,SACA,UACA,WACA,QACA,UACA,WACA,UACA,WACA,OACA,UACA,UACA,WACA,QACA,YACA,SACA,WACA,YACA,SACA,QACA,UACA,YACA,WACA,QACA,YACA,SACA,WACA,YACA,SACA,WACA,YACA,WACA,UACA,UACA,YACA,QACA,QACA,WACA,QACA,QACA,UACA,QACA,SACA,YACA,YACA,SACA,YACA,SACA,UACA,QACA,WACA,SACA,YACA,UACA,WACA,WACA,SACA,WACA,WACA,WACA,YACA,YACA,QACA,UACA,UACA,SACA,WACA,SACA,WACA,YACA,SACA,SACA,UACA,YACA,WACA,WACA,UACA,UACA,WACA,QACA,QACA,WACA,YACA,SACA,UACA,WACA,YACA,YACA,SACA,UACA,SACA,YACA,SACA,UACA,WACA,WACA,QACA,SACA,WACA,WACA,WACA,SACA,WACA,UACA,UACA,UACA,SACA,WACA,YACA,YACA,WACA,OACA,UACA,WACA,WACA,YACA,YACA,UACA,WACA,YACA,SACA,UACA,OACA,SACA,WACA,YACA,YACA,YACA,YACA,WACA,QACA,YACA,SACA,SACA,SACA,WACA,YACA,SACA,SACA,YACA,UACA,WACA,QACA,UACA,UACA,SACA,WACA,UACA,UACA,SACA,WACA,QACA,YACA,YACA,UACA,UACA,WACA,SACA,QACA,SACA,UACA,YACA,UACA,SACA,QACA,QACA,WACA,UACA,YACA,UACA,QACA,QACA,UACA,UACA,QACA,UACA,WACA,QACA,SACA,QACA,UACA,QACA,YACA,UACA,UACA,UACA,YACA,QACA,SACA,OACA,QACA,QACA,QACA,QACA,UACA,SACA,WACA,SACA,SACA,UACA,WACA,YACA,SACA,UACA,SACA,UACA,QACA,UACA,YACA,UACA,QACA,OACA,QACA,YACA,QACA,QACA,WACA,UACA,WACA,WACA,QACA,WACA,YACA,WACA,UACA,UACA,YACA,YACA,UACA,YACA,SACA,YACA,SACA,QACA,QACA,UACA,WACA,WACA,SACA,WACA,UACA,UACA,QACA,UACA,YACA,YACA,WACA,QACA,SACA,WACA,WACA,YACA,WACA,SACA,SACA,SACA,SACA,SACA,UACA,WACA,YACA,SACA,QACA,SACA,WACA,UACA,UACA,YACA,OACA,QACA,OACA,MACA,UACA,WACA,UACA,SACA,SACA,SACA,OACA,UACA,WACA,WACA,SACA,SACA,UACA,OACA,YACA,QACA,OACA,OACA,SACA,YACA,SACA,YACA,SACA,WACA,SACA,UACA,YACA,SACA,UACA,SACA,WACA,WACA,UACA,SACA,UACA,MACA,QACA,SACA,SACA,SACA,UACA,WACA,YACA,UACA,UACA,QACA,UACA,WACA,YACA,UACA,UACA,OACA,SACA,SACA,WACA,SACA,UACA,YACA,WACA,WACA,UACA,SACA,SACA,SACA,OACA,QACA,QACA,QACA,SACA,UACA,UACA,WACA,UACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,SACA,YACA,UACA,WACA,WACA,QACA,UACA,WACA,WACA,UACA,QACA,YACA,UACA,OACA,UACA,UACA,WACA,YACA,SACA,QACA,OACA,UACA,QACA,WACA,YACA,UACA,WACA,QACA,UACA,OACA,OACA,QACA,QACA,QACA,SACA,QACA,YACA,SACA,SACA,UACA,QACA,SACA,YACA,UACA,WACA,YACA,WACA,WACA,QACA,WACA,YACA,SACA,OACA,OACA,SACA,WACA,SACA,SACA,UACA,WACA,SACA,OACA,YACA,UACA,SACA,OACA,OACA,QACA,QACA,MACA,QACA,UACA,YACA,UACA,WACA,UACA,QACA,WACA,QACA,YACA,QACA,QACA,QACA,UACA,QACA,OACA,SACA,YACA,YACA,UACA,QACA,UACA,SACA,UACA,SACA,SACA,WACA,YACA,SACA,WACA,QACA,UACA,UACA,OACA,QACA,QACA,SACA,QACA,QACA,SACA,WACA,QACA,QACA,UACA,WACA,SACA,UACA,SACA,QACA,UACA,UACA,QACA,QACA,WACA,YACA,YACA,UACA,YACA,WACA,WACA,YACA,YACA,YACA,WACA,UACA,WACA,WACA,YACA,WACA,QACA,OACA,QACA,UACA,SACA,WACA,QACA,YACA,YACA,WACA,YACA,UACA,WACA,UACA,WACA,SACA,YACA,YACA,WACA,YACA,SACA,QACA,YACA,UACA,WACA,YACA,UACA,WACA,QACA,OACA,SACA,YACA,SACA,SACA,QACA,SACA,QACA,QACA,UACA,SACA,UACA,UACA,WACA,UACA,WACA,QACA,SACA,WACA,YACA,UACA,YACA,WACA,YACA,UACA,WACA,SACA,WACA,WACA,SACA,WACA,WACA,WACA,UACA,WACA,UACA,UACA,WACA,SACA,SACA,YACA,SACA,SACA,UACA,QACA,WACA,SACA,QACA,QACA,QACA,WACA,SACA,SACA,WACA,YACA,UACA,UACA,WACA,SACA,UACA,SACA,QACA,SACA,SACA,SACA,QACA,QACA,QACA,SACA,YACA,YACA,SACA,SACA,SACA,SACA,SACA,OACA,OACA,OACA,UACA,WACA,WACA,QACA,SACA,WACA,SACA,WACA,WACA,YACA,SACA,WACA,YACA,YACA,WACA,UACA,YACA,QACA,WACA,WACA,SACA,SACA,SACA,YACA,UACA,YACA,YACA,SACA,QACA,UACA,QACA,QACA,UACA,WACA,WACA,YACA,UACA,WACA,YACA,YACA,YACA,WACA,WACA,UACA,UACA,QACA,QACA,QACA,SACA,WACA,YACA,SACA,UACA,WACA,WACA,YACA,UACA,QACA,WACA,UACA,YACA,UACA,WACA,SACA,WACA,UACA,WACA,UACA,YACA,UACA,UACA,WACA,QACA,QACA,SACA,YACA,SACA,UACA,SACA,UACA,YACA,UACA,QACA,YACA,WACA,WACA,YACA,QACA,QACA,QACA,YACA,WACA,YACA,YACA,UACA,OACA,SACA,UACA,OACA,SACA,UACA,YACA,YACA,WACA,YACA,UACA,OACA,QACA,UACA,UACA,YACA,SACA,WACA,YACA,QACA,YACA,YACA,UACA,WACA,UACA,WACA,WACA,WACA,SACA,WACA,SACA,UACA,YACA,OACA,SACA,QACA,QACA,QACA,QACA,QACA,YACA,YACA,YACA,UACA,QACA,QACA,SACA,QACA,QACA,YACA,YACA,WACA,UACA,UACA,WACA,YACA,WACA,UACA,YACA,YACA,QACA,QACA,QACA,WACA,UACA,WACA,YACA,WACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,UACA,QACA,QACA,SACA,SACA,SACA,WACA,YACA,QACA,SACA,UACA,SACA,WACA,SACA,SACA,SACA,SACA,WACA,SACA,WACA,SACA,SACA,WACA,YACA,WACA,YACA,SACA,YACA,UACA,WACA,QACA,SACA,QACA,UACA,UACA,UACA,WACA,SACA,QACA,UACA,UACA,SACA,QACA,UACA,WACA,SACA,UACA,YACA,QACA,QACA,UACA,UACA,WACA,QACA,SACA,WACA,SACA,UACA,YACA,UACA,WACA,SACA,QACA,YACA,YACA,YACA,UACA,WACA,WACA,WACA,YACA,UACA,WACA,SACA,WACA,UACA,YACA,WACA,YACA,YACA,WACA,SACA,UACA,WACA,YACA,YACA,YACA,UACA,YACA,YACA,UACA,UACA,WACA,YACA,YACA,UACA,WACA,SACA,WACA,WACA,UACA,SACA,SACA,YACA,UACA,YACA,OACA,UACA,SACA,SACA,OACA,WACA,YACA,UACA,SACA,YACA,WACA,QACA,UACA,QACA,WACA,WACA,WACA,SACA,UACA,UACA,UACA,SACA,OACA,SACA,WACA,YACA,SACA,YACA,YACA,YACA,WACA,WACA,WACA,WACA,YACA,YACA,SACA,WACA,SACA,UACA,YACA,UACA,YACA,SACA,WACA,UACA,YACA,YACA,SACA,UACA,WACA,UACA,UACA,UACA,UACA,WACA,UACA,YACA,YACA,WACA,SACA,WACA,UACA,YACA,WACA,QACA,UACA,UACA,WACA,YACA,YACA,OACA,YACA,UACA,YACA,OACA,WACA,QACA,OACA,QACA,QACA,QACA,QACA,QACA,SACA,UACA,UACA,YACA,YACA,UACA,WACA,WACA,WACA,UACA,WACA,QACA,QACA,SACA,SACA,UACA,UACA,QACA,SACA,QACA,QACA,QACA,WACA,WACA,YACA,WACA,UACA,UACA,WACA,UACA,WACA,WACA,YACA,YACA,QACA,SACA,UACA,UACA,QACA,WACA,SACA,SACA,YACA,UACA,YACA,UACA,SACA,WACA,QACA,OACA,UACA,WACA,UACA,UACA,WACA,UACA,YACA,MACA,UACA,OACA,SACA,SACA,WACA,OACA,QACA,SACA,WACA,QACA,SACA,OACA,SACA,UACA,UACA,UACA,WACA,UACA,WACA,WACA,UACA,UACA,OACA,YACA,SACA,SACA,UACA,QACA,SACA,SACA,WACA,OACA,SACA,QACA,YACA,UACA,QACA,WACA,SACA,WACA,SACA,QACA,SACA,QACA,OACA,OACA,UACA,YACA,OACA,QACA,QACA,WACA,WACA,UACA,UACA,YACA,QACA,SACA,WACA,UACA,UACA,YACA,WACA,WACA,QACA,UACA,QACA,QACA,SACA,UACA,WACA,WACA,YACA,YACA,UACA,WACA,SACA,QACA,QACA,QACA,WACA,SACA,SACA,WACA,YACA,SACA,SACA,SACA,WACA,SACA,YACA,SACA,WACA,YACA,YACA,UACA,WACA,OACA,QACA,WACA,WACA,OACA,YACA,UACA,QACA,QACA,QACA,SACA,WACA,UACA,OACA,QACA,UACA,UACA,YACA,YACA,WACA,UACA,OACA,SACA,OACA,OACA,QACA,SACA,UACA,YACA,UACA,SACA,WACA,SACA,SACA,WACA,SACA,WACA,OACA,UACA,OACA,SACA,SACA,SACA,UACA,YACA,SACA,SACA,SACA,QACA,UACA,QACA,WACA,UACA,QACA,UACA,YACA,UACA,UACA,WACA,YACA,QACA,UACA,SACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,WACA,UACA,YACA,UACA,UACA,WACA,QACA,QACA,SACA,WACA,WACA,OACA,YACA,WACA,YACA,UACA,QACA,SACA,OACA,UACA,UACA,YACA,SACA,SACA,QACA,WACA,SACA,QACA,WACA,YACA,WACA,UACA,YACA,UACA,UACA,WACA,WACA,WACA,UACA,YACA,SACA,WACA,WACA,UACA,QACA,SACA,YACA,WACA,UACA,YACA,UACA,WACA,WACA,UACA,OACA,SACA,WACA,UACA,UACA,UACA,WACA,WACA,SACA,WACA,UACA,UACA,YACA,SACA,WACA,QACA,SACA,QACA,QACA,UACA,QACA,SACA,YACA,UACA,WACA,WACA,YACA,QACA,MACA,QACA,WACA,UACA,UACA,UACA,MACA,UACA,QACA,SACA,WACA,QACA,SACA,UACA,WACA,WACA,YACA,OACA,SACA,UACA,SACA,SACA,OACA,QACA,OACA,MACA,QACA,QACA,QACA,WACA,SACA,YACA,SACA,QACA,QACA,UACA,YACA,OACA,WACA,QACA,QACA,QACA,YACA,UACA,UACA,WACA,SACA,SACA,UACA,SACA,QACA,OACA,QACA,WACA,YACA,QACA,YACA,WACA,SACA,YACA,SACA,YACA,YACA,WACA,UACA,YACA,YACA,YACA,YACA,YACA,UACA,UACA,UACA,YACA,WACA,SACA,SACA,WACA,WACA,YACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,WACA,YACA,WACA,WACA,WACA,UACA,WACA,WACA,YACA,UACA,YACA,YACA,UACA,UACA,SACA,YACA,YACA,UACA,QACA,SACA,UACA,SACA,YACA,WACA,WACA,YACA,WACA,WACA,WACA,SACA,YACA,YACA,WACA,UACA,UACA,UACA,UACA,YACA,UACA,YACA,WACA,QACA,YACA,UACA,YACA,SACA,YACA,YACA,WACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,YACA,YACA,UACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,YACA,YACA,YACA,YACA,WACA,WACA,YACA,YACA,YACA,YACA,YACA,YACA,WACA,UACA,SACA,YACA,UACA,YACA,WACA,UACA,WACA,UACA,SACA,WACA,SACA,YACA,UACA,WACA,YACA,WACA,YACA,WACA,UACA,YACA,SACA,YACA,YACA,YACA,SACA,WACA,UACA,YACA,UACA,WACA,WACA,YACA,YACA,UACA,WACA,YACA,SACA,YACA,WACA,WACA,YACA,WACA,WACA,WACA,WACA,SACA,UACA,WACA,YACA,YACA,WACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,YACA,WACA,UACA,YACA,SACA,SACA,UACA,WACA,UACA,UACA,YACA,YACA,QACA,YACA,YACA,YACA,YACA,YACA,QACA,WACA,YACA,SACA,WACA,OACA,YACA,WACA,WACA,UACA,SACA,YACA,YACA,UACA,UACA,UACA,WACA,WACA,YACA,UACA,SACA,YACA,YACA,YACA,YACA,UACA,WACA,WACA,QACA,YACA,WACA,WACA,WACA,YACA,YACA,UACA,WACA,WACA,YACA,UACA,SACA,YACA,WACA,WACA,WACA,WACA,YACA,YACA,YACA,YACA,UACA,WACA,UACA,YACA,UACA,WACA,YACA,UACA,YACA,WACA,UACA,YACA,YACA,WACA,YACA,SACA,WACA,SACA,YACA,WACA,UACA,WACA,WACA,YACA,WACA,YACA,YACA,YACA,YACA,WACA,SACA,YACA,WACA,UACA,WACA,UACA,YACA,YACA,SACA,SACA,YACA,YACA,YACA,WACA,SACA,YACA,YACA,WACA,SACA,YACA,YACA,UACA,SACA,YACA,SACA,WACA,WACA,SACA,SACA,WACA,UACA,WACA,YACA,YACA,UACA,WACA,WACA,YACA,WACA,WACA,SACA,WACA,YACA,SACA,YACA,YACA,WACA,WACA,WACA,YACA,YACA,YACA,WACA,YACA,WACA,WACA,SACA,WACA,WACA,SACA,WACA,WACA,YACA,WACA,WACA,YACA,YACA,WACA,YACA,YACA,WACA,YACA,UACA,YACA,YACA,WACA,WACA,WACA,SACA,UACA,WACA,YACA,UACA,UACA,YACA,WACA,UACA,WACA,WACA,SACA,QACA,QACA,UACA,WACA,WACA,YACA,SACA,YACA,YACA,YACA,YACA,UACA,YACA,SACA,UACA,WACA,UACA,UACA,WACA,SACA,UACA,WACA,WACA,YACA,WACA,YACA,WACA,WACA,YACA,UACA,WACA,YACA,SACA,WACA,YACA,UACA,QACA,YACA,SACA,WACA,YACA,SACA,UACA,YACA,YACA,YACA,SACA,YACA,WACA,UACA,UACA,YACA,YACA,QACA,SACA,UACA,WACA,YACA,SACA,UACA,UACA,WACA,SACA,SACA,SACA,WACA,YACA,SACA,OACA,QACA,UACA,WACA,UACA,SACA,SACA,UACA,SACA,UACA,WACA,UACA,UACA,WACA,WACA,UACA,SACA,UACA,SACA,WACA,SACA,SACA,UACA,QACA,SACA,WACA,UACA,SACA,SACA,YACA,UACA,SACA,QACA,UACA,OACA,YACA,OACA,QACA,QACA,UACA,UACA,UACA,SACA,SACA,QACA,UACA,SACA,SACA,WACA,WACA,WACA,YACA,UACA,YACA,UACA,QACA,SACA,SACA,YACA,QACA,UACA,SACA,SACA,WACA,UACA,YACA,WACA,WACA,SACA,UACA,UACA,UACA,UACA,UACA,UACA,WACA,WACA,SACA,WACA,OACA,QACA,SACA,YACA,SACA,WACA,SACA,WACA,UACA,SACA,YACA,WACA,WACA,YACA,UACA,QACA,QACA,YACA,WACA,UACA,UACA,SACA,QACA,UACA,SACA,YACA,WACA,UACA,OACA,SACA,OACA,UACA,OACA,WACA,YACA,SACA,QACA,OACA,WACA,UACA,QACA,WACA,SACA,UACA,WACA,YACA,WACA,UACA,UACA,YACA,WACA,UACA,UACA,YACA,WACA,SACA,SACA,QACA,QACA,UACA,WACA,QACA,OACA,YACA,UACA,WACA,UACA,UACA,SACA,WACA,UACA,QACA,QACA,WACA,WACA,UACA,WACA,YACA,UACA,YACA,QACA,WACA,WACA,UACA,WACA,QACA,UACA,OACA,WACA,SACA,UACA,UACA,QACA,SACA,UACA,QACA,QACA,SACA,YACA,MACA,QACA,SACA,QACA,QACA,QACA,SACA,QACA,OACA,SACA,OACA,UACA,SACA,SACA,QACA,OACA,UACA,SACA,UACA,SACA,WACA,YACA,YACA,WACA,YACA,UACA,SACA,SACA,YACA,UACA,UACA,WACA,YACA,UACA,OACA,UACA,QACA,QACA,WACA,SACA,OACA,WACA,SACA,OACA,QACA,QACA,WACA,QACA,YACA,SACA,QACA,WACA,UACA,QACA,WACA,UACA,WACA,SACA,MACA,OACA,SACA,QACA,SACA,QACA,QACA,YACA,UACA,OACA,OACA,YACA,WACA,UACA,SACA,WACA,WACA,WACA,WACA,SACA,WACA,SACA,YACA,UACA,SACA,YACA,OACA,OACA,QACA,UACA,OACA,OACA,UACA,SACA,WACA,SACA,OACA,QACA,WACA,SACA,OACA,SACA,OACA,OACA,WACA,QACA,UACA,SACA,SACA,WACA,SACA,MACA,OACA,YACA,YACA,YACA,YACA,YACA,UACA,OACA,OACA,SACA,OACA,QACA,OACA,OACA,UACA,UACA,YACA,QACA,YACA,YACA,QACA,QACA,QACA,MACA,UACA,QACA,SACA,WACA,UACA,WACA,SACA,UACA,UACA,UACA,UACA,QACA,UACA,UACA,YACA,UACA,WACA,UACA,YACA,UACA,OACA,QACA,QACA,MACA,UACA,UACA,OACA,OACA,OACA,WACA,WACA,SACA,WACA,QACA,UACA,OACA,MACA,YACA,UACA,QACA,MACA,SACA,QACA,QACA,OACA,SACA,SACA,OACA,QACA,MACA,UACA,QACA,MACA,WACA,OACA,YACA,QACA,YACA,UACA,UACA,QACA,OACA,MACA,SACA,SACA,OACA,SACA,YACA,YACA,UACA,S,6cCjmPJ,IAMA,2B,+CAUA,OAVmC,OAK/B,YAAAC,MAAA,SAAMx4F,GACFkC,KAAKJ,GAAK9B,EAAE8B,GACZ,YAAM02F,MAAK,UAACx4F,GACZkC,KAAKinB,cAAgBnpB,EAAEmpB,eAE/B,EAVA,CANA,QAMmC2V,QAAtB,EAAA25D,iB,+cCNb,IAMA,2B,+CAQA,OARsC,OAIlC,YAAAD,MAAA,SAAMx4F,GACFkC,KAAKJ,GAAK9B,EAAE8B,GACZ,YAAM02F,MAAK,UAACx4F,IAEpB,EARA,CANA,QAMsCuxB,YAAzB,EAAAmnE,oB,2cCNb,IAMA,2B,+CAQA,OARkC,OAI9B,YAAAF,MAAA,SAAMx4F,GACFkC,KAAKJ,GAAK9B,EAAE8B,GACZ,YAAM02F,MAAK,UAACx4F,IAEpB,EARA,CANA,QAMkC24F,QAArB,EAAAC,gB,qcCJb,aAKA,cAKI,WAAY9nF,EAAkB0L,QAAA,IAAAA,OAAA,GAA9B,MACI,cAAO,KACP,OAAW,MAAP1L,IAIJ,EAAKwL,iBAAiB,EAAMxL,EAAK,CAC7BhP,GAAI,KACJhC,KAAM,MACP0c,EAAkB,CAAC,OAEtB,EAAK4M,aAAmC,MAApBtY,EAAIsY,aAAuB,IAAIwK,KAAK9iB,EAAIsY,cAAgB,M,EAQpF,OAxB4B,OAmBxB,YAAA5L,QAAA,WACI,OAAOtb,KAAK6a,WAAW,IAAI,EAAA1F,WAAWnV,MAAO,CACzCpC,KAAM,MACP,OAEX,EAxBA,CAHA,MAG4B,SAAf,EAAA64F,U,kGCLb,MAMI,SAAYl1F,EAA0BquB,GAClC5vB,KAAK4vB,OAASA,EACd5vB,KAAKpC,KAAO2D,EAAS3D,KACrBoC,KAAKJ,GAAK2B,EAAS3B,GACnBI,KAAKknB,aAAe3lB,EAAS2lB,cAVxB,EAAAyvE,c,yeCFb,YACA,QAGA,QACA,SAEA,UAEa,EAAAC,kBAAoB,CAAC,QAAS,aAAc,aAAc,KAAM,QAAS,OAAQ,QAAS,OAAQ,SAE/G,6E,OACc,EAAAC,qBAAuB,CAAC,EAAKC,iBAAkB,EAAKC,iBAAkB,EAAKC,cAC3E,EAAAC,0BAA4B,CAAC,EAAKC,oBAAqB,EAAKC,0BAA2B,EAAKC,4BAA6B,EAAKC,qBAC9H,EAAAC,wBAA0B,CAAC,EAAKC,qBAAsB,EAAKC,mBAAoB,EAAKC,oBAAqB,EAAKC,oBAAqB,EAAKC,iBAAkB,EAAKC,iBAAkB,EAAKC,oB,EAiRpM,OApRqD,OAOjD,YAAAjoF,MAAA,SAAMpU,GAAN,WACUqB,EAAS,IAAI,EAAAmZ,aACbg3C,EAAUhtD,KAAK+Q,SAASvV,GAAM,EAAM,CACtCs8F,UAAW,IACXC,WAAY,OAEhB,OAAe,MAAX/qC,GACAnwD,EAAOkZ,SAAU,EACVoF,QAAQC,QAAQve,KAG3BmwD,EAAQp/C,SAAQ,SAAAvP,GACZ,IAAI,EAAKiQ,mBAAmB,EAAK0pF,QAAQ35F,EAAO,UAAhD,CAIA,IAAMqU,EAAS,EAAKqB,kBACpBrB,EAAO9U,KAAO,EAAKwU,kBAAkB,EAAK4lF,QAAQ35F,EAAO,SAAU,MAEnE,EAAK45F,SAAS55F,EAAOqU,GAErB,EAAKwlF,cAAc75F,EAAOqU,GAE1B,IAAIylF,EAAsB,KAC1B,IAAK,IAAMp5F,KAAYV,EACnB,GAAKA,EAAMlC,eAAe4C,KAAa,EAAKuP,mBAAmBjQ,EAAMU,IAArE,CAIA,IAAMq5F,EAAU,IAAI,EAAAC,oBAAoBh6F,EAAOU,EAAU2T,GACrDA,EAAOxQ,OAAS,EAAAoS,WAAWC,OAAS,EAAK+jF,mBAAmBF,IAErD1lF,EAAOxQ,OAAS,EAAAoS,WAAW2K,MAAQ,EAAKs5E,wBAAwBH,IAEhE1lF,EAAOxQ,OAAS,EAAAoS,WAAW4K,UAAY,EAAKs5E,sBAAsBJ,KAI7ED,EAAc,EAAKM,gBAAgBL,EAASD,IAG5CzlF,EAAOxQ,OAAS,EAAAoS,WAAWC,QAAU,EAAKjG,mBAAmB6pF,IAC7D,EAAK7pF,mBAAmBoE,EAAO0B,MAAMkB,YAA6C,IAAhC6iF,EAAYlrF,QAAQ,SACtEyF,EAAO0B,MAAMkB,SAAW6iF,GAG5B,EAAK9iF,sBAAsB3C,GAC3B,EAAK8B,cAAc9B,GACnB7V,EAAOuY,QAAQ9Y,KAAKoW,OAGxB7V,EAAOkZ,SAAU,EACVoF,QAAQC,QAAQve,KAGjB,YAAAm7F,QAAV,SAAkBppF,EAAUhR,GAKxB,OAJiB3B,OAAOy8F,QAAQ9pF,GAAKktB,QAAO,SAAC68D,EAAUnwB,GAEnD,OADAmwB,EAAInwB,EAAM,GAAGjlE,eAAiBilE,EAAM,GAC7BmwB,IACR,IACa/6F,EAAK2F,gBAGf,YAAAq1F,gBAAV,SAA0BhqF,EAAUiqF,GAChC,IAAMC,EAAe78F,OAAO4S,KAAKD,GAAKktB,QAAO,SAAC68D,EAAeh6F,GAIzD,OAHIA,EAAI+Q,MAAMmpF,IACVF,EAAIr8F,KAAKqC,GAENg6F,IACR,IACH,OAA4B,IAAxBG,EAAa98F,OACN,KAEA4S,EAAIkqF,EAAa,KAItB,YAAAC,iBAAV,SAA2BnqF,EAAUhR,GACjC,IAAMo7F,EAAc/8F,OAAO4S,KAAKD,GAAKktB,QAAO,SAAC68D,EAAenwB,GAIxD,OAHIA,EAAMjlE,cAAcutC,SAASlzC,EAAK2F,gBAClCo1F,EAAIr8F,KAAKksE,GAENmwB,IACR,IACH,OAA2B,IAAvBK,EAAYh9F,OACL,KAEA4S,EAAIoqF,EAAY,KAIrB,YAAAf,SAAV,SAAmBgB,EAAmBvmF,GAClCA,EAAOwB,MAAQlU,KAAKoS,kBAAkBpS,KAAKg4F,QAAQiB,EAAc,cAAe,IAAM,KAClFj5F,KAAKoS,kBAAkBpS,KAAKg4F,QAAQiB,EAAc,SAAU,IAAM,KACtEvmF,EAAOwB,MAAMpH,QAIP,YAAAwrF,mBAAV,SAA6BF,GAA7B,WACI,OAAOp4F,KAAK62F,qBAAqB/6D,QAAO,SAAC68D,EAAcO,GAInD,OAHKP,IACDA,EAAMO,EAAKt6F,KAAK,EAAVs6F,CAAgBd,IAEnBO,KACR,IAGG,YAAAJ,wBAAV,SAAkCH,GAAlC,WACI,OAAOp4F,KAAKi3F,0BAA0Bn7D,QAAO,SAAC68D,EAAcO,GAIxD,OAHKP,IACDA,EAAMO,EAAKt6F,KAAK,EAAVs6F,CAAgBd,IAEnBO,KACR,IAGG,YAAAH,sBAAV,SAAgCJ,GAAhC,WACI,OAAOp4F,KAAKs3F,wBAAwBx7D,QAAO,SAAC68D,EAAcO,GAItD,OAHKP,IACDA,EAAMO,EAAKt6F,KAAK,EAAVs6F,CAAgBd,IAEnBO,KACR,IAGG,YAAAF,gBAAV,SAA0BL,EAA8BD,GACpD,IAA0D,IAAtD,EAAAvB,kBAAkB3pF,QAAQmrF,EAAQe,iBAA0Bf,EAAQe,cAAcpsF,WAAW,cAC5FqrF,EAAQe,cAAcpsF,WAAW,YAAa,CAC/C,GAAmB,MAAforF,GAAiD,UAA1BC,EAAQe,cAC/B,OAAOf,EAAQa,aAAab,EAAQr5F,UAEnC,GAA8B,iBAA1Bq5F,EAAQe,eAA8D,kBAA1Bf,EAAQe,cAAmC,CAC5F,IAAMC,EAAe,IAAI1nE,KAA4D,IAAvD7nB,SAASuuF,EAAQa,aAAab,EAAQr5F,UAAW,KAAYs6F,cAE3F,OADAr5F,KAAKyU,WAAW2jF,EAAQ1lF,OAAQ,aAAe0lF,EAAQr5F,SAAUq6F,GAC1D,KAEPhB,EAAQe,cAAcroD,SAAS,aAAesnD,EAAQe,cAAcroD,SAAS,QAAUsnD,EAAQe,cAAcroD,SAAS,UACtH9wC,KAAKyU,WAAW2jF,EAAQ1lF,OAAQ0lF,EAAQr5F,SAAUq5F,EAAQa,aAAab,EAAQr5F,UAAW,EAAA2V,UAAU4kF,QAEpGt5F,KAAKyU,WAAW2jF,EAAQ1lF,OAAQ0lF,EAAQr5F,SAAUq5F,EAAQa,aAAab,EAAQr5F,WAGvF,OAAO,MAGD,YAAAw4F,qBAAV,SAA+Ba,GAC3B,SAAIp4F,KAAKsO,mBAAmB8pF,EAAQ1lF,OAAOmU,SAASkC,aAAcqvE,EAAQe,cAAcroD,SAAS,iBAC7FsnD,EAAQ1lF,OAAOmU,SAASkC,UAAYqvE,EAAQa,aAAab,EAAQr5F,WAC1D,IAKL,YAAAy4F,mBAAV,SAA6BY,GACzB,SAAIp4F,KAAKsO,mBAAmB8pF,EAAQ1lF,OAAOmU,SAASoB,cAAemwE,EAAQe,cAAcroD,SAAS,cAC9FsnD,EAAQ1lF,OAAOmU,SAASoB,WAAamwE,EAAQa,aAAab,EAAQr5F,WAC3D,IAKL,YAAA04F,oBAAV,SAA8BW,GAC1B,SAAIp4F,KAAKsO,mBAAmB8pF,EAAQ1lF,OAAOmU,SAASmC,YAAaovE,EAAQe,cAAcroD,SAAS,gBAC5FsnD,EAAQ1lF,OAAOmU,SAASmC,SAAWovE,EAAQa,aAAab,EAAQr5F,WACzD,IAKL,YAAA24F,oBAAV,SAA8BU,GAC1B,SAAIp4F,KAAKsO,mBAAmB8pF,EAAQ1lF,OAAOmU,SAASvR,YAAa8iF,EAAQe,cAAcroD,SAAS,eAC5FsnD,EAAQ1lF,OAAOmU,SAASvR,SAAW8iF,EAAQa,aAAab,EAAQr5F,WACzD,IAKL,YAAA84F,mBAAV,SAA6BO,GACzB,SAAIp4F,KAAKsO,mBAAmB8pF,EAAQ1lF,OAAOmU,SAAS2B,WAAY4vE,EAAQe,cAAcroD,SAAS,cAC3FsnD,EAAQ1lF,OAAOmU,SAAS2B,QAAU4vE,EAAQa,aAAab,EAAQr5F,WACxD,IAKL,YAAA64F,iBAAV,SAA2BQ,GACvB,SAAIp4F,KAAKsO,mBAAmB8pF,EAAQ1lF,OAAOmU,SAAS4B,SAAU2vE,EAAQe,cAAcroD,SAAS,oBACzFsnD,EAAQ1lF,OAAOmU,SAAS4B,MAAQ2vE,EAAQa,aAAab,EAAQr5F,WACtD,IAKL,YAAA44F,iBAAV,SAA2BS,GACvB,SAAIp4F,KAAKsO,mBAAmB8pF,EAAQ1lF,OAAOmU,SAAShK,SAAUu7E,EAAQe,cAAcroD,SAAS,YACzFsnD,EAAQ1lF,OAAOmU,SAAShK,MAAQu7E,EAAQa,aAAab,EAAQr5F,WACtD,IAKL,YAAAm4F,oBAAV,SAA8BkB,GAC1B,SAAIp4F,KAAKsO,mBAAmB8pF,EAAQ1lF,OAAOI,KAAKiJ,UAAWq8E,EAAQe,cAAcroD,SAAS,aACtFsnD,EAAQ1lF,OAAOI,KAAKiJ,OAASq8E,EAAQa,aAAab,EAAQr5F,UAC1Dq5F,EAAQ1lF,OAAOI,KAAKkJ,MAAQhc,KAAKsS,aAAa8lF,EAAQ1lF,OAAOI,KAAKiJ,SAC3D,IAKL,YAAAo7E,0BAAV,SAAoCiB,GAChC,SAAIp4F,KAAKsO,mBAAmB8pF,EAAQ1lF,OAAOI,KAAK4I,QAAS08E,EAAQe,cAAcroD,SAAS,0BACpFsnD,EAAQ1lF,OAAOI,KAAK4I,KAAO08E,EAAQa,aAAab,EAAQr5F,WACjD,IAKL,YAAAq4F,4BAAV,SAAsCgB,GAClC,SAAIp4F,KAAKsO,mBAAmB8pF,EAAQ1lF,OAAOI,KAAK2I,kBAAmB28E,EAAQe,cAAcroD,SAAS,sBAC9FsnD,EAAQ1lF,OAAOI,KAAK2I,eAAiB28E,EAAQa,aAAab,EAAQr5F,WAC3D,IAKL,YAAAs4F,oBAAV,SAA8Be,GAC1B,SAAIp4F,KAAKsO,mBAAmB8pF,EAAQ1lF,OAAOI,KAAKH,cAAeylF,EAAQe,cAAcroD,SAAS,gBACxC,IAAlDsnD,EAAQa,aAAab,EAAQr5F,UAAU/C,UACvCo8F,EAAQ1lF,OAAOI,KAAKC,SAAYqlF,EAAQa,aAAab,EAAQr5F,UAAqB+K,OAAO,EAAG,GACpD,MAApCsuF,EAAQ1lF,OAAOI,KAAKC,SAAS,KAC7BqlF,EAAQ1lF,OAAOI,KAAKC,SAAWqlF,EAAQ1lF,OAAOI,KAAKC,SAASjJ,OAAO,EAAG,IAE1EsuF,EAAQ1lF,OAAOI,KAAKE,QAAWolF,EAAQa,aAAab,EAAQr5F,UAAqB+K,OAAO,EAAG,IACpF,IAKL,YAAAitF,iBAAV,SAA2BqB,GACvB,SAAIp4F,KAAKsO,mBAAmB8pF,EAAQ1lF,OAAO0B,MAAMmB,WAAuC,aAA1B6iF,EAAQe,iBAClEf,EAAQ1lF,OAAO0B,MAAMmB,SAAW6iF,EAAQa,aAAab,EAAQr5F,WACtD,IAKL,YAAA+3F,iBAAV,SAA2BsB,GACvB,SAAIp4F,KAAKsO,mBAAmB8pF,EAAQ1lF,OAAO0B,MAAMkB,WAAuC,aAA1B8iF,EAAQe,iBAClEf,EAAQ1lF,OAAO0B,MAAMkB,SAAW8iF,EAAQa,aAAab,EAAQr5F,WACtD,IAKL,YAAAi4F,aAAV,SAAuBoB,GACnB,IAAkC,MAA7BA,EAAQ1lF,OAAO0B,MAAMoB,MAAqD,IAArC4iF,EAAQ1lF,OAAO0B,MAAMoB,KAAKxZ,SAA2C,SAA1Bo8F,EAAQe,cAA0B,CACnH,IAAMI,EAAOnB,EAAQa,aAAab,EAAQr5F,UAAU4O,MAAM3N,KAAKmQ,cAE/D,OADAioF,EAAQ1lF,OAAO0B,MAAMoB,KAAOxV,KAAK4R,aAAa2nF,IACvC,EACJ,MAA+B,QAA1BnB,EAAQe,gBACiB,MAA7Bf,EAAQ1lF,OAAO0B,MAAMoB,OACrB4iF,EAAQ1lF,OAAO0B,MAAMoB,KAAO,IAEhC4iF,EAAQ1lF,OAAO0B,MAAMoB,KAAKgV,OAAOxqB,KAAK4R,aAAawmF,EAAQa,aAAab,EAAQr5F,aACzE,IAInB,EApRA,CAAqD,EAAA+W,cAA/B,EAAA0jF,0B,iHCXtB,SAAYC,GACR,2CACA,2CACA,yCACA,2CACA,iCAEA,6BACA,iCACA,2CACA,2CACA,2CACA,oCAEA,wBAEA,wCACA,wCACA,wCAlBJ,CAAY,EAAAA,mBAAA,EAAAA,iBAAgB,M,iGCA5B,aAEA,UACA,UAIA,EAmBI,SAAYl4F,EAAyBquB,GACjC,GAAgB,MAAZruB,EAoBJ,OAhBAvB,KAAKJ,GAAK2B,EAAS3B,GACnBI,KAAK60D,SAAWtzD,EAASszD,SACzB70D,KAAK4vB,OAASA,EACd5vB,KAAKkC,KAAOX,EAASW,KACrBlC,KAAKpC,KAAO2D,EAAS3D,KACrBoC,KAAKkU,MAAQ3S,EAAS2S,MACtBlU,KAAKrB,IAAM4C,EAAS5C,IACpBqB,KAAK80D,eAAiBvzD,EAASuzD,eAC/B90D,KAAK+0D,YAAcxzD,EAASwzD,YAC5B/0D,KAAKknB,aAAe3lB,EAAS2lB,aAC7BlnB,KAAKg1D,eAAiBzzD,EAASyzD,eAC/Bh1D,KAAKi1D,aAAe1zD,EAAS0zD,aAC7Bj1D,KAAKuV,SAAWhU,EAASgU,SACzBvV,KAAKq/B,SAAW99B,EAASuqB,QACzB9rB,KAAKk1D,UAAY3zD,EAAS2zD,UAElBl1D,KAAKkC,MACT,KAAK,EAAAouB,SAAS3b,KACV3U,KAAKoxB,KAAO,IAAI,EAAAsoE,aAAan4F,EAAS6vB,MACtC,MACJ,KAAK,EAAAd,SAAS2yD,KACVjjF,KAAKguD,KAAO,IAAI,EAAA2rC,aAAap4F,EAASysD,QA7CzC,EAAA4rC,Y,wVCPb,WAGA,OACA,OACA,OAGA,EAAQ,K,qBAKJ,EAAAC,iBAGJ,EAAAC,kBAAyBC,gBAAgB,EAAD,UAAY,CAAEC,qBAAqB,K,8BChB3E,Q,iGCAA,YACA,SAEA,SACA,OACA,QACA,SAEA,SACA,SACA,UACA,UACA,U,eAEA,2B,wCAiBaC,I,gCAAAA,EAAS,WAFN,EAAAC,gB,oCAdH,CACL,EAAAC,UACA,EAAAC,wBACA,EAAAC,YACA,EAAAC,eACA,EAAAC,cAAcC,UACd,EAAAC,qBACA,EAAAC,eACA,EAAAC,iBACA,EAAAC,0B,EAVR,GAiBa,EAAAX,a,gEAAAA,EAAS,eAJd,EAAAC,cAAY,SAXZ,EAAAC,UACA,EAAAC,wBACA,EAAAC,YACA,EAAAC,eAAc,gBAEd,EAAAG,qBACA,EAAAC,eACA,EAAAC,iBACA,EAAAC,0B,+DAOKX,EAAS,E,KAjBrB,EAAAY,S,MAAS,CACNC,QAAS,CACL,EAAAX,UACA,EAAAC,wBACA,EAAAC,YACA,EAAAC,eACA,EAAAC,cAAcC,UACd,EAAAC,qBACA,EAAAC,eACA,EAAAC,iBACA,EAAAC,uBAEJG,aAAc,CACV,EAAAb,cAEJc,UAAW,CAAC,EAAAd,kB,g/CC7BhB,aACA,SAEA,QAOA,OAQA,GADA,MACA,OA6BA,GAxBA,OAEA,MAEA,MACA,MACA,MACA,MACA,MACA,MACA,KACA,MACA,OACA,MACA,KACA,MACA,MACA,OACA,MACA,MACA,OACA,KACA,MAEA,OAKA,GAHA,OACA,OAEA,QACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,S,0NAEM9hC,EAA4B,eAGlC,aAiBI,WACYC,EAAgD/6B,EAChD6W,EAAoC3I,EACpCyvD,EAA0C59D,EAC1CuO,EAA8DL,EAC9DgwB,EAAkCn+B,EAClCD,EAAwCz9B,EACxCshB,EAAoDrH,EACpD4gC,EAAkD/C,EAClDx5B,EAAsC0tB,EACtCwvD,EAAiC1sD,EACjC2sD,EAAoDjgC,EACpDz8C,EAAoCotB,EACpCra,EAAwCo6C,EACxC/gD,GAbA,KAAAwtC,qBAAgD,KAAA/6B,cAChD,KAAA6W,eAAoC,KAAA3I,gBACpC,KAAAyvD,kBAA0C,KAAA59D,cAC1C,KAAAuO,4BAA8D,KAAAL,gBAC9D,KAAAgwB,cAAkC,KAAAn+B,SAClC,KAAAD,iBAAwC,KAAAz9B,cACxC,KAAAshB,uBAAoD,KAAArH,SACpD,KAAA4gC,sBAAkD,KAAA/C,iBAClD,KAAAx5B,gBAAsC,KAAA0tB,oBACtC,KAAAwvD,YAAiC,KAAA1sD,gBACjC,KAAA2sD,uBAAoD,KAAAjgC,gBACpD,KAAAz8C,eAAoC,KAAAotB,eACpC,KAAAra,gBAAwC,KAAAo6C,oBACxC,KAAA/gD,sBAzBZ,KAAAuwE,cAA+B,IAAI,EAAAC,cAAc,CAC7CC,iBAAiB,EACjBC,oBAAoB,EACpBC,UAAW,WACXC,MAAO,IAGH,KAAAC,aAAuB,KACvB,KAAAC,UAAoB,KACpB,KAAAC,QAAS,E,OAkBjB,YAAAr7F,SAAA,sBACIP,KAAK2Z,OAAOkiF,mBAAkB,WAC1B38F,OAAO48F,YAAc,WAAM,SAAKC,kBAChC78F,OAAO88F,YAAc,WAAM,SAAKD,kBAChC78F,OAAO+8F,aAAe,WAAM,SAAKF,kBACjC78F,OAAOg9F,QAAU,WAAM,SAAKH,kBAC5B78F,OAAOi9F,SAAW,WAAM,SAAKJ,kBAC7B78F,OAAOk9F,WAAa,WAAM,SAAKL,qBAGnC/7F,KAAKq4D,mBAAmB/xD,UAAU8xD,GAA2B,SAAO5mD,GAAY,qC,6CAC5ExR,KAAK2Z,OAAO2+C,KAAI,gD,oEACJ9mD,EAAQ+mD,S,IACP,W,IACA,Y,IACA,uB,IAGA,0B,IAGA,qB,IAGA,wB,IAGA,qB,IAIA,wB,IAGA,0B,IAEA,4B,IAEA,mC,IAQA,+B,IAQA,yC,IASA,yB,IAOA,4B,IAGA,4C,oBAxDD,OADAv4D,KAAKm7F,qBAAqBkB,kBAAiB,GAC3C,O,OAGA,OADAr8F,KAAKo9B,OAAO6E,SAAS,CAAC,MACtB,O,OAGA,OADAjiC,KAAKy0C,SAASjjC,EAAQ8qF,SACtB,O,OAEA,SAAMt8F,KAAKu6C,oBAAoB/F,Q,OAC/B,OADA,SACA,O,OAIA,OAFAx0C,KAAKm7F,qBAAqBkB,kBAAiB,GAC3Cr8F,KAAKo9B,OAAO6E,SAAS,CAAC,SACtB,O,OAGA,OADA/iC,OAAO6kB,YAAW,WAAM,SAAKm3C,cAAct0B,eAAep1B,EAAQhF,OAAM,KACxE,O,sBA6CA,a,QAvCyB,SAAMxM,KAAKghB,qBAAqBqoB,WACrDrpC,KAAKN,YAAYpB,EAAE,2BAA4B0B,KAAKN,YAAYpB,EAAE,uBAClE0B,KAAKN,YAAYpB,EAAE,uBAAwB0B,KAAKN,YAAYpB,EAAE,Y,QAIlE,OANyB,UAIrB0B,KAAKo9B,OAAO6E,SAAS,CAAC,gBAAiBzwB,EAAQvB,eAAgB,WAAY,YAE/E,O,QAEyB,SAAMjQ,KAAKghB,qBAAqBqoB,WACrDrpC,KAAKN,YAAYpB,EAAE,uBAAwB0B,KAAKN,YAAYpB,EAAE,mBAC9D0B,KAAKN,YAAYpB,EAAE,aAAc0B,KAAKN,YAAYpB,EAAE,Y,QAIxD,OANyB,UAIrB0B,KAAKo9B,OAAO6E,SAAS,CAAC,qBAE1B,O,QAEmC,SAAMjiC,KAAKghB,qBAAqBqoB,WAC/DrpC,KAAKN,YAAYpB,EAAE,iCACnB0B,KAAKN,YAAYpB,EAAE,6BACnB0B,KAAKN,YAAYpB,EAAE,aAAc0B,KAAKN,YAAYpB,EAAE,Y,QAIxD,OAPmC,UAK/B0B,KAAKghB,qBAAqBgO,UAAU,gEAExC,O,QAOA,MAL4B,iBAAjBxd,EAAQ4f,WAA8C,IAAlBmrE,OAAOC,SAClDhrF,EAAQlR,MAAM,mDACdkR,EAAQ4f,KAAK,8DAEjBpxB,KAAK0qB,UAAUlZ,GACf,O,QAGA,OADAxR,KAAKy8F,eACL,O,QAIA,OAFAz8F,KAAK6qB,oBAAoB6xE,2BAA0B,GACnD18F,KAAKo9B,OAAO6E,SAAS,CAAC,qBACtB,O,yCAOhBjiC,KAAKo9B,OAAO8I,OAAO5/B,WAAU,SAAAlC,GACzB,GAAIA,aAAiB,EAAA+hC,cAAe,CAEhC,IADA,IACoB,MADL3+B,MAAMC,KAAKvD,SAASwD,iBAAiB,WAChC,eAAQ,CAAvB,IAAM8iC,EAAK,KACXmyD,EAAGnyD,GAAeA,MAAM,QAGgB,MAAzCtmC,SAAS8C,cAAc,gBACvB,UAAKxC,WAAMnC,OAKvBrC,KAAK4rE,kBAAkBjmC,YAAY,CAC/B,IAAI,EAAAuyB,8BACJ,IAAI,EAAAlC,qBACJ,IAAI,EAAAM,wBACJ,IAAI,EAAAyB,gBACJ,IAAI,EAAAT,iBACJ,IAAI,EAAAH,wBACJ,IAAI,EAAA3B,kBACJ,IAAI,EAAAoC,kBACJ,IAAI,EAAAH,sBAGRz3D,KAAKy8F,gBAGT,YAAA54E,YAAA,WACI7jB,KAAKq4D,mBAAmBG,YAAYJ,IAG1B,YAAA3jB,OAAd,SAAqB6nD,G,uGACjB,SAAMt8F,KAAK6rC,aAAa+wD,gB,OACT,OADf,SACe,GAAM58F,KAAKs9B,YAAYqhB,a,OAEtC,OAFM/uB,EAAS,SAEf,GAAMzU,QAAQK,IAAI,CACdxb,KAAK6rC,aAAagxD,cAClB78F,KAAKq9B,YAAYy/D,YAAY,IAAIprE,KAAK,IACtC1xB,KAAKm0C,aAAa4oD,aAClB/8F,KAAKge,cAAcg/E,YACnBh9F,KAAKs9B,YAAY2qD,QACjBjoF,KAAKi7F,gBAAgBhT,MAAMr4D,GAC3B5vB,KAAKurC,cAAc08C,MAAMr4D,GACzB5vB,KAAKwrC,cAAcy8C,MAAMr4D,GACzB5vB,KAAK0rC,kBAAkBu8C,MAAMr4D,GAC7B5vB,KAAKwxB,cAAcy2D,MAAMr4D,GACzB5vB,KAAK4rC,0BAA0Bq8C,QAC/BjoF,KAAKye,aAAaw+E,QAClBj9F,KAAK6qB,oBAAoBo9D,W,cAb7B,SAgBAjoF,KAAKwuC,cAAc0uD,aACnBl9F,KAAKu7D,YAAY9mB,QAAO,gD,kCAChB6nD,GACAt8F,KAAKm9B,eAAe0E,SAAS,UAAW7hC,KAAKN,YAAYpB,EAAE,aACvD0B,KAAKN,YAAYpB,EAAE,iBAG3B,UAAKkG,QACLxE,KAAKo9B,OAAO6E,SAAS,CAAC,M,yBAIhB,YAAA85D,eAAd,W,gFAEI,OADMoB,GAAM,IAAKzrE,MAAQW,UACA,MAArBryB,KAAK07F,cAAwByB,EAAMn9F,KAAK07F,aAAe,MAI3D17F,KAAK07F,aAAeyB,EACpBn9F,KAAKw3C,eAAe0iB,KAAK,EAAA1iD,iBAAiBY,cAAe+kF,GAGrDn9F,KAAK47F,SACL57F,KAAK47F,QAAS,EACd57F,KAAKo9F,oBAEa,MAAlBp9F,KAAK27F,YACLz8F,OAAOu3C,aAAaz2C,KAAK27F,WACzB37F,KAAK27F,UAAY,MAErB37F,KAAK27F,UAAYz8F,OAAO6kB,YAAW,WAC1B,EAAK63E,SACN,EAAKA,QAAS,EACd,EAAKwB,sBA3MD,MAyLR,WAuBA,YAAA1yE,UAAR,SAAkBuI,GAAlB,WACU0mC,EAAe,CACjBz3D,KAAM+wB,EAAI/wB,KACV5B,MAAO2yB,EAAI3yB,OAEf,GAA0B,iBAAd2yB,EAAQ,KAChB0mC,EAAMxzD,KAAO8sB,EAAI7B,UACd,GAAwB,IAApB6B,EAAI7B,KAAKp1B,OAChB29D,EAAMxzD,KAAO8sB,EAAI7B,KAAK,OACnB,CACH,IAAI,EAAU,GACd6B,EAAI7B,KAAKxjB,SAAQ,SAACtP,GACd,UAAY,MAAQ,EAAK48F,UAAUmC,SAAS,EAAAC,gBAAgBC,KAAMj/F,GAAK,UAC3Eq7D,EAAMxzD,KAAO,EACbwzD,EAAM6jC,eAAiB,EAAAC,eAAeC,YAEvB,MAAfzqE,EAAIhiB,WAC4B,IAA5BgiB,EAAIhiB,QAAQ0sF,cACZhkC,EAAM6jC,eAAiB,EAAAC,eAAeC,aAEf,MAAvBzqE,EAAIhiB,QAAQ0Z,SAAmBsI,EAAIhiB,QAAQ0Z,QAAU,IACrDgvC,EAAMhvC,QAAUsI,EAAIhiB,QAAQ0Z,UAGpC3qB,KAAKm9B,eAAe0E,SAAS83B,IAGzB,YAAAyjC,iBAAR,WACQp9F,KAAK47F,OACL57F,KAAKm7F,qBAAqByC,2BAE1B59F,KAAKm7F,qBAAqB0C,yBAIpB,YAAApB,aAAd,W,0FAC4B,SAAMz8F,KAAKw3C,eAAev5C,IAAa,oB,cAAvC,SAEpBiG,SAASiC,KAAKU,UAAUC,IAAI,cAE5B5C,SAASiC,KAAKU,UAAUgB,OAAO,c,6CAlP9BqyF,GAAY,sgC,iCAAZA,EAAY,uHCrEzB,qCAA2F,+CAAgC,iB,KAAxG,+C,4EDiEnB,GAIa,EAAAA,gB,+DAAAA,EAAY,E,KAJxB,EAAAr3F,U,MAAU,CACPhC,SAAU,WACViC,YAAa,0B,gxBEjEjB,8BACI,KAAAg7F,YAAkD,IAAI75F,IAwB1D,OAtBI,YAAA4mC,KAAA,SAAKr5B,EAAc5R,GACL,MAANA,EAOJI,KAAK89F,YAAYlwF,SAAQ,SAAAvP,GACrBA,EAAMmT,MAPFxR,KAAK89F,YAAYl4F,IAAIhG,IACrBI,KAAK89F,YAAY7/F,IAAI2B,EAArBI,CAAyBwR,IAUrC,YAAAlL,UAAA,SAAU1G,EAAYm+F,GAClB/9F,KAAK89F,YAAYp4F,IAAI9F,EAAIm+F,IAG7B,YAAAvlC,YAAA,SAAY54D,GACJI,KAAK89F,YAAYl4F,IAAIhG,IACrBI,KAAK89F,YAAYxtD,OAAO1wC,IAGpC,EAzBA,GAAa,EAAA0f,sB,qGCAb,mBAAa,EAAAmB,iB,6GCFb,qBAA0B7T,GACtB,OAAO,MAGX,mBAAwBA,GACpB,OAAO,I,8GCLX,WACA,QAKA,SACA,SACA,SAEA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SAEA,SACA,SACA,SACA,SACA,SACA,SAEA,SACA,SACA,SACA,SACA,SAIA,SACA,SACA,SAGA,SACA,SAGA,SAGA,SACA,SAGA,SAIA,SAEA,SACA,SAEA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UAEA,UACA,UAEA,UACA,UACA,UAEA,UAEA,UACA,UACA,U,iBAEMoxF,GAAiB,CACnB,CACIC,KAAM,GACN3oC,UAAW,EAAA6C,wBACXo9B,SAAU,CACN,CAAE0I,KAAM,GAAIC,UAAW,OAAQ5oC,UAAW,EAAAwG,eAAgBmuB,YAAa,CAAC,GAAA0B,qBACxE,CAAEsS,KAAM,MAAO3oC,UAAW,EAAA+K,mBAAoB4pB,YAAa,CAAC,GAAA0B,qBAC5D,CACIsS,KAAM,WAAY3oC,UAAW,EAAA+H,kBAC7B4sB,YAAa,CAAC,GAAA0B,oBACdnwF,KAAM,CAAE4qC,QAAS,kBAErB,CACI63D,KAAM,MAAO3oC,UAAW,EAAAsI,aACxBqsB,YAAa,CAAC,GAAA0B,oBACdnwF,KAAM,CAAE4qC,QAAS,2BAErB,CACI63D,KAAM,eAAgB3oC,UAAW,EAAAiI,qBACjC/hE,KAAM,CAAE4qC,QAAS,sBAErB,CACI63D,KAAM,OAAQ3oC,UAAW,EAAA2F,cACzBgvB,YAAa,CAAC,GAAA0B,oBACdnwF,KAAM,CAAE4qC,QAAS,iBAErB,CACI63D,KAAM,OACN3oC,UAAW,EAAA+F,cACX4uB,YAAa,CAAC,GAAAyB,mBAElB,CAAEuS,KAAM,eAAgB3oC,UAAW,EAAAsL,2BACnC,CACIq9B,KAAM,sBACN3oC,UAAW,EAAA0F,4BACXx/D,KAAM,CAAE4qC,QAAS,qBAErB,CACI63D,KAAM,mBACN3oC,UAAW,EAAAuE,yBACXr+D,KAAM,CAAE4qC,QAAS,oBAErB,CAAE63D,KAAM,UAAWC,UAAW,OAAQC,WAAY,eAClD,CACIF,KAAM,cACN3oC,UAAW,EAAAuH,0BACXotB,YAAa,CAAC,GAAA0B,oBACdnwF,KAAM,CAAE4qC,QAAS,0BAErB,CACI63D,KAAM,iBACN3oC,UAAW,EAAAoH,uBACXutB,YAAa,CAAC,GAAA0B,oBACdnwF,KAAM,CAAE4qC,QAAS,kBAErB,CACI63D,KAAM,wBACN3oC,UAAW,EAAAyL,6BACXkpB,YAAa,CAAC,GAAA0B,oBACdnwF,KAAM,CAAE4qC,QAAS,kBAErB,CACI63D,KAAM,oBACN3oC,UAAW,EAAA2oB,gBACXziF,KAAM,CAAE8E,MAAO,mBAEnB,CACI29F,KAAM,uBACN3oC,UAAW,EAAAkL,4BACXypB,YAAa,CAAC,GAAAuB,kBACdhwF,KAAM,CAAE4qC,QAAS,uBAErB,CACI63D,KAAM,kBACN3oC,UAAW,EAAAgI,wBACX2sB,YAAa,CAAC,GAAAuB,kBACdhwF,KAAM,CAAE4qC,QAAS,2BAI7B,CACI63D,KAAM,GACN3oC,UAAW,EAAA6D,oBACX8wB,YAAa,CAAC,GAAAuB,kBACd+J,SAAU,CACN,CAAE0I,KAAM,QAAS3oC,UAAW,GAAAokB,eAAgBl+E,KAAM,CAAE4qC,QAAS,YAC7D,CAAE63D,KAAM,QAAS3oC,UAAW,EAAAmpB,cAAejjF,KAAM,CAAE8E,MAAO,SAC1D,CACI29F,KAAM,WACN3oC,UAAW,EAAAgd,kBACXijB,SAAU,CACN,CAAE0I,KAAM,GAAIC,UAAW,OAAQC,WAAY,WAC3C,CAAEF,KAAM,UAAW3oC,UAAW,EAAA6Y,iBAAkB3yE,KAAM,CAAE4qC,QAAS,cACjE,CAAE63D,KAAM,UAAW3oC,UAAW,EAAA6wB,iBAAkB3qF,KAAM,CAAE4qC,QAAS,YACjE,CAAE63D,KAAM,eAAgB3oC,UAAW,EAAAmvB,qBAAsBjpF,KAAM,CAAE4qC,QAAS,gBAC1E,CAAE63D,KAAM,aAAc3oC,UAAW,EAAAvL,wBAAyBvuD,KAAM,CAAE4qC,QAAS,iBAC3E,CAAE63D,KAAM,UAAW3oC,UAAW,EAAAwxB,iBAAkBtrF,KAAM,CAAE4qC,QAAS,cACjE,CAAE63D,KAAM,UAAW3oC,UAAW,GAAArQ,qBAAsBzpD,KAAM,CAAE4qC,QAAS,YACrE,CACI63D,KAAM,eACN3oC,UAAW,GAAA+xB,0BACX7rF,KAAM,CAAE4qC,QAAS,sBAErB,CAAE63D,KAAM,gBAAiB3oC,UAAW,EAAA7b,uBAAwBj+C,KAAM,CAAE4qC,QAAS,kBAC7E,CACI63D,KAAM,sBACN3oC,UAAW,EAAAouB,4BACXloF,KAAM,CAAE4qC,QAAS,oBAErB,CACI63D,KAAM,mBACN1I,SAAU,CACN,CACI0I,KAAM,GACN3oC,UAAW,GAAAo5B,yBACXlzF,KAAM,CAAE4qC,QAAS,oBAErB,CACI63D,KAAM,MACN3oC,UAAW,GAAAg3B,6BACX9wF,KAAM,CAAE4qC,QAAS,sBAI7B,CACI63D,KAAM,qBACN3oC,UAAW,GAAA66B,2BACX30F,KAAM,CAAE4qC,QAAS,wBAI7B,CACI63D,KAAM,QACN3oC,UAAW,GAAAwiB,eACXmS,YAAa,CAAC,GAAAuB,kBACd+J,SAAU,CACN,CAAE0I,KAAM,GAAIC,UAAW,OAAQC,WAAY,aAC3C,CAAEF,KAAM,SAAU3oC,UAAW,GAAA9G,gBAAiBhzD,KAAM,CAAE4qC,QAAS,eAC/D,CAAE63D,KAAM,SAAU3oC,UAAW,GAAAnL,gBAAiB3uD,KAAM,CAAE4qC,QAAS,gBAC/D,CACI63D,KAAM,YACN3oC,UAAW,GAAAyyB,2BACXvsF,KAAM,CAAE4qC,QAAS,sBAErB,CAAE63D,KAAM,gBAAiB3oC,UAAW,GAAAkyB,sBAAuBhsF,KAAM,CAAE4qC,QAAS,qBAC5E,CACI63D,KAAM,0BACN3oC,UAAW,GAAA9F,+BACXh0D,KAAM,CAAE4qC,QAAS,0BAErB,CACI63D,KAAM,4BACN3oC,UAAW,GAAA5F,iCACXl0D,KAAM,CAAE4qC,QAAS,4BAErB,CACI63D,KAAM,wBACN3oC,UAAW,GAAAnF,6BACX30D,KAAM,CAAE4qC,QAAS,wBAErB,CACI63D,KAAM,2BACN3oC,UAAW,GAAA1K,gCACXpvD,KAAM,CAAE4qC,QAAS,2BAErB,CACI63D,KAAM,6BACN3oC,UAAW,GAAAlG,iCACX5zD,KAAM,CAAE4qC,QAAS,wBAI7B,CAAE63D,KAAM,gCAAiC3oC,UAAW,EAAAmhB,uCAG5D,CACIwnB,KAAM,gCACN3oC,UAAW,EAAA4D,4BACX+wB,YAAa,CAAC,GAAAuB,iBAAkB,GAAAtB,0BAChCqL,SAAU,CACN,CAAE0I,KAAM,GAAIC,UAAW,OAAQC,WAAY,SAC3C,CAAEF,KAAM,QAAS3oC,UAAW,iBAAmB95D,KAAM,CAAE4qC,QAAS,UAChE,CACI63D,KAAM,QACN3oC,UAAW,iBACX20B,YAAa,CAAC,GAAAkB,8BACd3vF,KAAM,CAAEo3C,YAAa,CAAC,GAAAu3C,YAAYE,mBAAoB,GAAAF,YAAYG,gBAClEiL,SAAU,CACN,CACI0I,KAAM,GACNC,UAAW,OACXC,WAAY,UAEhB,CACIF,KAAM,SACN3oC,UAAW,kBACX20B,YAAa,CAAC,GAAAkB,8BACd3vF,KAAM,CACF4qC,QAAS,aACTwM,YAAa,CAAC,GAAAu3C,YAAYE,sBAGlC,CACI4T,KAAM,SACN3oC,UAAW,kBACX20B,YAAa,CAAC,GAAAkB,8BACd3vF,KAAM,CACF4qC,QAAS,cACTwM,YAAa,CAAC,GAAAu3C,YAAYE,sBAGlC,CACI4T,KAAM,2BACN3oC,UAAW,kCACX20B,YAAa,CAAC,GAAAkB,8BACd3vF,KAAM,CACF4qC,QAAS,yBACTwM,YAAa,CAAC,GAAAu3C,YAAYG,iBAGlC,CACI2T,KAAM,6BACN3oC,UAAW,mCACX20B,YAAa,CAAC,GAAAkB,8BACd3vF,KAAM,CACF4qC,QAAS,oBACTwM,YAAa,CAAC,GAAAu3C,YAAYG,iBAGlC,CACI2T,KAAM,0BACN3oC,UAAW,iCACX20B,YAAa,CAAC,GAAAkB,8BACd3vF,KAAM,CACF4qC,QAAS,wBACTwM,YAAa,CAAC,GAAAu3C,YAAYG,iBAGlC,CACI2T,KAAM,4BACN3oC,UAAW,mCACX20B,YAAa,CAAC,GAAAkB,8BACd3vF,KAAM,CACF4qC,QAAS,0BACTwM,YAAa,CAAC,GAAAu3C,YAAYG,iBAGlC,CACI2T,KAAM,wBACN3oC,UAAW,+BACX20B,YAAa,CAAC,GAAAkB,8BACd3vF,KAAM,CACF4qC,QAAS,sBACTwM,YAAa,CAAC,GAAAu3C,YAAYG,mBAK1C,CACI2T,KAAM,SACN3oC,UAAW,kBACX20B,YAAa,CAAC,GAAAkB,8BACd3vF,KAAM,CACFo3C,YAAa,CACT,GAAAu3C,YAAYI,qBACZ,GAAAJ,YAAYK,kBACZ,GAAAL,YAAYM,oBACZ,GAAAN,YAAYO,wBACZ,GAAAP,YAAYQ,0BACZ,GAAAR,YAAYC,gBACZ,GAAAD,YAAYS,aACZ,GAAAT,YAAYY,YACZ,GAAAZ,YAAYW,iBAGpByK,SAAU,CACN,CACI0I,KAAM,GACNC,UAAW,OACXC,WAAY,UAEhB,CACIF,KAAM,cACN3oC,UAAW,uBACX20B,YAAa,CAAC,GAAAkB,8BACd3vF,KAAM,CACF4qC,QAAS,cACTwM,YAAa,CACT,GAAAu3C,YAAYI,qBACZ,GAAAJ,YAAYK,kBACZ,GAAAL,YAAYM,oBACZ,GAAAN,YAAYO,wBACZ,GAAAP,YAAYQ,6BAIxB,CACIsT,KAAM,SACN3oC,UAAW,kBACX20B,YAAa,CAAC,GAAAkB,8BACd3vF,KAAM,CACF4qC,QAAS,YACTwM,YAAa,CAAC,GAAAu3C,YAAYC,mBAGlC,CACI6T,KAAM,SACN3oC,UAAW,kBACX20B,YAAa,CAAC,GAAAkB,8BACd3vF,KAAM,CACF4qC,QAAS,SACTwM,YAAa,CAAC,GAAAu3C,YAAYS,gBAGlC,CACIqT,KAAM,SACN3oC,UAAW,kBACX20B,YAAa,CAAC,GAAAkB,8BACd3vF,KAAM,CACF4qC,QAAS,SACTwM,YAAa,CAAC,GAAAu3C,YAAYY,YAAa,GAAAZ,YAAYa,uBAG3D,CACIiT,KAAM,WACN3oC,UAAW,oBACX20B,YAAa,CAAC,GAAAkB,8BACd3vF,KAAM,CACF4qC,QAAS,WACTwM,YAAa,CAAC,GAAAu3C,YAAYW,oBAK1C,CACImT,KAAM,WACN3oC,UAAW,oBACX20B,YAAa,CAAC,GAAAkB,8BACd3vF,KAAM,CAAEo3C,YAAa,CAAC,GAAAu3C,YAAYU,qBAClC0K,SAAU,CACN,CAAE0I,KAAM,GAAIC,UAAW,OAAQC,WAAY,WAC3C,CAAEF,KAAM,UAAW3oC,UAAW,mBAAqB95D,KAAM,CAAE4qC,QAAS,mBACpE,CAAE63D,KAAM,aAAc3oC,UAAW,0BAA4B95D,KAAM,CAAE4qC,QAAS,iBAC9E,CACI63D,KAAM,UACN3oC,UAAW,EAAA8Y,6BACX5yE,KAAM,CAAE4qC,QAAS,YAErB,CACI63D,KAAM,eACN3oC,UAAW,EAAAub,kCACXr1E,KAAM,CAAE4qC,QAAS,sBAQzC,4B,wCAQau0D,I,iCAAAA,I,qCAPA,CAAC,EAAAyD,aAAa5D,QAAQwD,GAAQ,CACnCK,SAAS,EACTC,0BAA2B,YAGrB,EAAAF,gB,EANd,GAQa,EAAAzD,qB,iEAAAA,GAAgB,oCAFf,EAAAyD,iB,gEAEDzD,GAAgB,E,KAR5B,EAAAE,S,MAAS,CACNC,QAAS,CAAC,EAAAsD,aAAa5D,QAAQwD,GAAQ,CACnCK,SAAS,EACTC,0BAA2B,YAG/BhhG,QAAS,CAAC,EAAA8gG,kB,gICpdd,mBAAa,EAAA3kC,gC,qHCAb,mBAAa,EAAAa,iC,o+CCEb,aAOA,aAOI,WAAsBl9B,EAA0B19B,EAClCuhB,EAAkCD,EACpC/f,GAFU,KAAAm8B,SAA0B,KAAA19B,cAClC,KAAAuhB,aAAkC,KAAAD,uBACpC,KAAA/f,aARZ,KAAA4b,MAAgB,GAGN,KAAAu+C,aAAe,QAgC7B,OAzBU,YAAA9gC,OAAN,W,gGACI,GAAkB,MAAdt6B,KAAK6c,OAAgC,KAAf7c,KAAK6c,MAG3B,OAFA7c,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAC5D0B,KAAKN,YAAYpB,EAAE,kBACvB,IAEJ,IAAiC,IAA7B0B,KAAK6c,MAAM5P,QAAQ,KAGnB,OAFAjN,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAC5D0B,KAAKN,YAAYpB,EAAE,iBACvB,I,iBAKA,O,sBADA0B,KAAKu6B,YAAcv6B,KAAKihB,WAAWs9E,iBAAiB,IAAI,EAAAC,oBAAoBx+F,KAAK6c,QACjF,GAAM7c,KAAKu6B,a,cAAX,SACAv6B,KAAKghB,qBAAqB0J,UAAU,UAAW,KAAM1qB,KAAKN,YAAYpB,EAAE,mBACzC,MAA3B0B,KAAKm7D,mBACLn7D,KAAKm7D,qBACiB,MAAfn7D,KAAKo9B,QACZp9B,KAAKo9B,OAAO6E,SAAS,CAACjiC,KAAKo7D,e,+BAG/Bp7D,KAAKiB,WAAWW,MAAM,G,+BAGlC,EApCA,GAAa,EAAAq5D,iB,2GCTb,MAGI,SAAYp+C,GACR7c,KAAK6c,MAAQA,GAJR,EAAA2hF,uB,o+CCAb,WAgBA,GAfA,MAEA,KACA,MACA,MACA,KACA,MACA,KACA,MACA,KACA,MACA,MACA,KACA,MAEA,OAEA,QAGA,SAEA,QAEA,S,0GAEA,aAoBI,WAAsBphE,EAA0B19B,EAClCshB,EAAsD6oB,EACtDvM,EAAoCtf,EACpCw5B,EAA0C+C,EAC1C/7B,EAAkDC,EAClDwC,EAAgChgB,EAClC4pB,GANU,KAAAuS,SAA0B,KAAA19B,cAClC,KAAAshB,uBAAsD,KAAA6oB,mBACtD,KAAAvM,cAAoC,KAAAtf,gBACpC,KAAAw5B,iBAA0C,KAAA+C,sBAC1C,KAAA/7B,qBAAkD,KAAAC,eAClD,KAAAwC,aAAgC,KAAAhgB,aAClC,KAAA4pB,sBAxBZ,KAAA+qB,eAAyB,GACzB,KAAA6oD,IAAc,GACd,KAAAt1B,cAAwB,EAExB,KAAAu1B,SAAmB,EACnB,KAAAC,iBAA2B,GAOjB,KAAAvjC,aAAuB,QAGzB,KAAAwjC,mBAAqB,E,OAWvB,YAAAr+F,SAAN,W,gHACkB,OAAd,EAAAP,KAAc,GAAMA,KAAKu6C,oBAAoBskD,gB,OAEpB,OAFzB,EAAKC,OAAS,SACd9+F,KAAK0+F,QAAW1+F,KAAK8+F,OAAO,IAAkD,MAA5C9+F,KAAKu6C,oBAAoBzhC,iBAA4B9Y,KAAK8+F,OAAO,GACnG,EAAA9+F,KAAyB,GAAMA,KAAKghB,qBAAqB+9E,qB,OACpC,OADrB,EAAKA,kBAAoB,SACzB,EAAA/+F,KAAqB,GAAMA,KAAKu6C,oBAAoBykD,sB,gBAA/B,UAChB,GAAMh/F,KAAKge,cAAcihF,aAAa,c,aAAvC,EAAC,WAAuDj/F,KAAKghB,qBAAqBk+E,wB,iBACjE,OAFrB,EAAKC,cAAgB,EAErB,EAAAn/F,KAAqB,GAAMA,KAAKw3C,eAAev5C,IAAI,EAAAuZ,iBAAiB6B,gB,OACvD,OADb,EAAKA,cAAgB,SACrB,EAAArZ,KAAa,GAAMA,KAAKs9B,YAAY+W,Y,OACX,OADzB,EAAKx3B,MAAQ,SACY,GAAM7c,KAAK6qB,oBAAoBM,uB,cAAlDJ,EAAmB,SACzB/qB,KAAKo/F,UAAYr0E,IAAqB/qB,KAAK0+F,SAGvC3zE,GAAsB/qB,KAAKm/F,eAAiBn/F,KAAK0+F,QAAjD,OACA,GAAM1+F,KAAKu6C,oBAAoB9F,U,OAA/B,S,0BAGEunB,EAAch8D,KAAKwe,mBAAmBy9C,iBACtCojC,EAA2B,gCAAhBrjC,EAAgD,wBAA0BA,EAC3Fh8D,KAAK2+F,iBAAmB,EAAAp2F,MAAM+D,YAAY+yF,G,YAGxC,YAAA/kE,OAAN,W,4HACI,OAAIt6B,KAAK0+F,SAAwB,MAAZ1+F,KAAKy+F,KAA4B,KAAbz+F,KAAKy+F,IAKzCz+F,KAAK0+F,SAAmC,MAAvB1+F,KAAK41C,gBAAkD,KAAxB51C,KAAK41C,eAM9C,GAAM51C,KAAKs9B,YAAYkY,WAL/Bx1C,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAC5D0B,KAAKN,YAAYpB,EAAE,uBACvB,MAPA0B,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAC5D0B,KAAKN,YAAYpB,EAAE,gBACvB,K,OASkB,OADhBi3C,EAAM,SACU,GAAMv1C,KAAKs9B,YAAYoY,oB,UAAvCD,EAAgB,UAElBz1C,KAAK0+F,QAAL,aACIY,GAAS,E,gDAELt/F,KAAK8+F,OAAO,GACA,GAAM9+F,KAAKge,cAAcuhF,eAAev/F,KAAKy+F,IAAKz+F,KAAK6c,MAAO04B,EAAKE,EAC3Ez1C,KAAKu6C,oBAAoBzhC,kBAF7B,O,OAGe,OAFTna,EAAM,SAEG,GAAMqB,KAAKge,cAAc83B,UAAUn3C,I,OAC7B,OADfi9B,EAAS,SACM,GAAM57B,KAAKw3C,eAAev5C,IAAY,EAAAuZ,iBAAiBuB,e,OAC7D,OADTA,EAAe,SACN,GAAM/Y,KAAKge,cAAcG,cAAc,IAAI,EAAA1D,UAAU1B,GAAe6iB,I,cAA7E4jE,EAAS,UACfF,EAASE,IAAWx/F,KAAKy+F,KACrB,MACA,GAAMz+F,KAAKy/F,kBAAkB9gG,I,OAA7B,S,sCAGQ,SAAMqB,KAAKge,cAAcuhF,eAAev/F,KAAKy+F,IAAKz+F,KAAK6c,MAAO04B,EAAKE,I,QAE/E,OAFM92C,EAAM,SACZ2gG,GAAS,EACT,GAAMt/F,KAAKy/F,kBAAkB9gG,I,QAA7B,S,wDAGJ2gG,GAAS,E,eAGb,GAAIA,EAAQ,CAER,GADAt/F,KAAK4+F,qBACD5+F,KAAK4+F,oBAAsB,EAE3B,OADA5+F,KAAK6pC,iBAAiBgB,KAAK,UAC3B,IAEJ7qC,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAC5D0B,KAAKN,YAAYpB,EAAE,e,qBAGf,SAAM0B,KAAKge,cAAc23B,QAAQ31C,KAAK41C,eAAgB51C,KAAK6c,MAAO04B,EAAKE,I,QAC7D,OADhB92C,EAAM,SACU,GAAMqB,KAAKge,cAAc0hF,c,eAAzCC,EAAgB,SAElBC,GAAgB,EAEC,MAAjBD,EAAA,OACgB,GAAM3/F,KAAKge,cAAc+yE,wBAAwB/wF,KAAK41C,eAAgBj3C,I,eAAtFihG,EAAgB,S,eAGM,OADhBp/E,EAAU,IAAI,EAAAlC,0BACE,GAAMte,KAAKge,cAAc63B,aAAa71C,KAAK41C,eAAgBj3C,EAC7E,EAAAo2C,YAAY8qD,sB,QADVC,EAAgB,SAEtBt/E,EAAQia,mBAAqBqlE,E,mBAGzB,O,yBADA9/F,KAAKu6B,YAAcv6B,KAAKihB,WAAW8+E,0BAA0Bv/E,GAC7D,GAAMxgB,KAAKu6B,a,QAEU,OAFrB,SACAqlE,GAAgB,EACK,GAAM5/F,KAAKge,cAAc63B,aAAa71C,KAAK41C,eAAgBj3C,EAC5E,EAAAo2C,YAAYgG,qB,QAChB,OAFMilD,EAAe,SAErB,GAAMhgG,KAAKge,cAAc6gC,WAAWmhD,I,eAApC,S,iCAEAhgG,KAAKiB,WAAWW,MAAM,G,sBAI1Bg+F,EACI5/F,KAAK8+F,OAAO,GACS,GAAM9+F,KAAKw3C,eAAev5C,IAAY,EAAAuZ,iBAAiBuB,eAD5E,OADJ,O,QAGmB,OADTA,EAAe,SACN,GAAM/Y,KAAKge,cAAc83B,UAAUn3C,I,QACnC,OADTi9B,EAAS,SACA,GAAM57B,KAAKge,cAAcG,cAAc,IAAI,EAAA1D,UAAU1B,GAAe6iB,I,QACpE,OADT4jE,EAAS,SACA,GAAMx/F,KAAKge,cAAciiF,WAAWT,EAAQx/F,KAAK6c,MAAO04B,EAAKE,I,QACjC,OADrCyqD,EAAS,SACf,EAAAlgG,KAAKu6C,oBAAsC,GAAMv6C,KAAKge,cAAcujB,QAAQ5iC,EAAIA,IAAKuhG,I,QAArF,EAAyBpnF,gBAAkB,S,0BAE/C9Y,KAAKy/F,kBAAkB9gG,G,eAEvBqB,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAC5D0B,KAAKN,YAAYpB,EAAE,0B,qCAK7B,YAAAm2C,OAAN,W,0FACsB,SAAMz0C,KAAKghB,qBAAqBqoB,WAAWrpC,KAAKN,YAAYpB,EAAE,sBAC5E0B,KAAKN,YAAYpB,EAAE,UAAW0B,KAAKN,YAAYpB,EAAE,UAAW0B,KAAKN,YAAYpB,EAAE,Y,cADjE,UAGd0B,KAAK6pC,iBAAiBgB,KAAK,U,YAI7B,YAAAs1D,gBAAN,W,gGACI,OAAKngG,KAAKm/F,cAIO,GAAMn/F,KAAKge,cAAc6rE,OAAO,cAH7C,I,cAGE9zE,EAA4D,MAAjD,UAGb,GAAM/V,KAAKogG,cADX,M,OACA,S,iBAGJ,MAAO,CAAP,EAAOrqF,WAGX,YAAAulD,eAAA,WACIt7D,KAAKmpE,cAAgBnpE,KAAKmpE,aAC1BjlE,SAASkgC,eAAepkC,KAAK0+F,QAAU,MAAQ,kBAAkB5kF,SAGvD,YAAA2lF,kBAAd,SAAgC9gG,G,0FAC5B,SAAMqB,KAAKge,cAAc4gC,OAAOjgD,I,cAAhC,SACAqB,KAAKogG,a,YAGK,YAAAA,WAAd,W,gGAG2B,OAFvBpgG,KAAKu6C,oBAAoBwF,iBAAkB,EAC3C//C,KAAKu6C,oBAAoB8lD,kBAAmB,EACrB,GAAMrgG,KAAKw3C,eAAev5C,IAAa,EAAAuZ,iBAAiBI,oB,OAC/E,OADM+nD,EAAiB,SACvB,GAAM3/D,KAAKye,aAAay7C,KAAK,EAAA1iD,iBAAiBI,oBAAqB+nD,I,cAAnE,SACA3/D,KAAK6pC,iBAAiBgB,KAAK,YACI,MAA3B7qC,KAAKm7D,mBACLn7D,KAAKm7D,qBACiB,MAAfn7D,KAAKo9B,QACZp9B,KAAKo9B,OAAO6E,SAAS,CAACjiC,KAAKo7D,e,6CAhL1BC,GAAa,6e,iCAAbA,I,EADb,GACa,EAAAA,iB,+DAAAA,EAAa,E,KADzB,EAAAz6D,a,ypEC3BD,WAoBA,GAdA,MAIA,MACA,OACA,MACA,KACA,KACA,MACA,KACA,MACA,MAEA,OAEA,QAEA,S,qFAEM0/F,EACe,kBADfA,EAEa,gBAGnB,cAiBI,WAAsB/kC,EAAoCn+B,EACtDpc,EAA4CthB,EAClC+e,EAA4BD,EAC5BotB,EACA4O,EAAsDhD,EACtDv2C,GALd,MAMI,YAAMud,EAAoB9e,EAAashB,IAAqB,K,OAN1C,EAAAu6C,cAAoC,EAAAn+B,SAE5C,EAAA3e,eACA,EAAAmtB,4BACA,EAAA4O,wBAAsD,EAAAhD,iBACtD,EAAAv2C,aApBL,EAAA4b,MAAgB,GAChB,EAAA0jF,eAAgB,EAEzB,EAAA3qD,eAAyB,GACzB,EAAAuzB,cAAwB,EAOd,EAAArL,eAAiB,MACjB,EAAA1C,aAAe,QACf,EAAA4C,wBAA0B,uB,SAdJ,OAyB1B,YAAAz9D,SAAN,W,yGACsB,MAAdP,KAAK6c,OAAgC,KAAf7c,KAAK6c,MAA3B,OACA,EAAA7c,KAAa,GAAMA,KAAKw3C,eAAev5C,IAAYqiG,K,OAAnD,EAAKzjF,MAAQ,SACK,MAAd7c,KAAK6c,QACL7c,KAAK6c,MAAQ,I,iBAGA,OAArB,EAAA7c,KAAqB,GAAMA,KAAKw3C,eAAev5C,IAAaqiG,I,cAA5D,EAAKC,cAAgB,SACK,MAAtBvgG,KAAKugG,gBACLvgG,KAAKugG,eAAgB,GAErB,EAAAh4F,MAAMK,YAAc,EAAAL,MAAME,QAC1BzI,KAAKwgG,a,YAIP,YAAAlmE,OAAN,W,oGACI,SAAMt6B,KAAK+7D,gB,OAEX,GAFA,SAEkB,MAAd/7D,KAAK6c,OAAgC,KAAf7c,KAAK6c,MAG3B,OAFA7c,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAC5D0B,KAAKN,YAAYpB,EAAE,kBACvB,IAEJ,IAAiC,IAA7B0B,KAAK6c,MAAM5P,QAAQ,KAGnB,OAFAjN,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAC5D0B,KAAKN,YAAYpB,EAAE,iBACvB,IAEJ,GAA2B,MAAvB0B,KAAK41C,gBAAkD,KAAxB51C,KAAK41C,eAGpC,OAFA51C,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAC5D0B,KAAKN,YAAYpB,EAAE,uBACvB,I,iBAKiB,O,wBADjB0B,KAAKu6B,YAAcv6B,KAAKu7D,YAAY5gB,MAAM36C,KAAK6c,MAAO7c,KAAK41C,eAAgB51C,KAAK46C,cAC/D,GAAM56C,KAAKu6B,a,OAC5B,OADMh5B,EAAW,SACjB,GAAMvB,KAAKw3C,eAAe0iB,KAAKomC,EAAoBtgG,KAAKugG,gB,cAAxD,SACIvgG,KAAKugG,cACL,GAAMvgG,KAAKw3C,eAAe0iB,KAAKomC,EAAsBtgG,KAAK6c,QAD1D,M,cACA,S,aAEA,SAAM7c,KAAKw3C,eAAe3vC,OAAOy4F,I,OAAjC,S,wBAEAtgG,KAAKs8D,sBAAsB/6D,GAC3B,IADA,M,cAEOA,EAASw8C,WAC+B,MAA3C/9C,KAAKu/D,mCACLv/D,KAAKu/D,qCAELv/D,KAAKo9B,OAAO6E,SAAS,CAACjiC,KAAK89D,iB,QAJxB,O,eAMAv8D,EAAS88C,oBACgC,MAA5Cr+C,KAAK0/D,oCACL1/D,KAAK0/D,sCAEL1/D,KAAKo9B,OAAO6E,SAAS,CAACjiC,KAAKg+D,0B,QAJxB,O,QAOgB,SAAMh+D,KAAKw3C,eAAev5C,IAAa,EAAAuZ,iBAAiBI,oB,QAC/E,OADM+nD,EAAiB,SACvB,GAAM3/D,KAAKye,aAAay7C,KAAK,EAAA1iD,iBAAiBI,oBAAqB+nD,I,QAAnE,SAC8B,MAA1B3/D,KAAK4/D,mBACL5/D,KAAK4/D,oBAE6B,MAAlC5/D,KAAKy7D,0BACLz7D,KAAKy7D,4BAELz7D,KAAKo9B,OAAO6E,SAAS,CAACjiC,KAAKo7D,e,0DAInCp7D,KAAKiB,WAAWW,MAAM,G,iCAI9B,YAAA05D,eAAA,WACIt7D,KAAKmpE,cAAgBnpE,KAAKmpE,aAC1BjlE,SAASkgC,eAAe,kBAAkBtqB,SAGxC,YAAA2mF,iBAAN,SAAuBnlD,EAAkBolD,G,0GAUvB,OARR9hC,EAAuB,CACzB18D,KAAM,WACNlG,OAAQ,GACR6iE,WAAW,EACXC,WAAW,EACXC,SAAS,EACTC,SAAS,GAEC,GAAMh/D,KAAK4rC,0BAA0BqB,iBAAiB2xB,I,OAC5C,OADlBt2C,EAAQ,SACU,GAAMtoB,KAAK4rC,0BAA0BqB,iBAAiB2xB,I,OACrD,OADnB+hC,EAAkB,SACC,GAAM3gG,KAAKw6C,sBAAsBykB,KAAK0hC,EAAiB,W,OAIhF,OAJMzhC,EAAmB,SACnBf,EAAgB,EAAA51D,MAAMsC,mBAAmBq0D,GAG/C,GAAMl/D,KAAKw3C,eAAe0iB,KAAK,EAAA1iD,iBAAiB2B,YAAamP,I,OAC7D,OADA,SACA,GAAMtoB,KAAKw3C,eAAe0iB,KAAK,EAAA1iD,iBAAiB0B,mBAAoBynF,I,cAApE,SAGMC,EAAS5gG,KAAKwe,mBAAmBy9C,iBAGvCj8D,KAAKghB,qBAAqBgO,UAAU4xE,EAAS,mBAAqBtlD,EAC9D,gBAAkBpxC,mBAAmBw2F,GACrC,UAAYp4E,EAAQ,kBAAoB61C,G,YAGtC,YAAAqiC,WAAV,WACIt8F,SAASkgC,eAA6B,MAAdpkC,KAAK6c,OAAgC,KAAf7c,KAAK6c,MAAe,QAAU,kBAAkB/C,S,iCAtIzFgiD,GAAc,sY,iCAAdA,EAAc,+F,EAD3B,CACoC,EAAAS,2BAAvB,EAAAT,kB,+DAAAA,EAAc,E,KAD1B,EAAAl7D,a,8QAEYic,MAAO,CAAF,C,KAAb,EAAA9b,QACQw/F,cAAa,E,KAArB,EAAAx/F,W,4cCjCL,IAEA,cACI,WAAYqO,EAAa4sD,EACbt8D,EAA0BsmB,EAA2C66E,EAC7EC,GAFJ,MAGI,YAAM1xF,EAAK4sD,EAAa,yBAA0B,kBAAmBh2C,EAAiB66E,GAAe,SAACrvF,GAClG,IAAMuvF,EAAgB9uB,KAAKriE,MAAM4B,GACF,iBAApB,GACP,EAAKwvF,OAAOC,OAAUF,EAAoB,OAAEx2F,WAC5C,EAAKy2F,OAAOE,MAASH,EAAmB,MAAEx2F,YAE1Cu2F,EAAaC,OAEnB,K,OAVM,EAAArhG,c,EAgBhB,OAlBmC,OAe/B,YAAA4I,KAAA,SAAKw1C,GACD,YAAMqjD,cAAa,UAACnhG,KAAKohG,aAAa,CAAEtjD,QAASA,EAASmnC,OAAQjlF,KAAKN,YAAY2hG,mBAAqB,KAEhH,EAlBA,CAFA,OAEmCC,iBAAtB,EAAAnlC,iB,uGCDb,iBAKI,WAAoB/sD,EAAuB4sD,EAA6BiiC,EAAsBsD,EACnFv7E,EACA66E,EAAiDC,GAFxC,KAAA1xF,MAAuB,KAAA4sD,cAA6B,KAAAiiC,OAAsB,KAAAsD,WACnF,KAAAv7E,kBACA,KAAA66E,gBAAiD,KAAAC,eAJpD,KAAAU,cAAgBxhG,KAAKyhG,aAAa7iG,KAAKoB,MAK3CA,KAAK0hG,cAAgBtyF,EAAIlL,SAASgD,cAAc,KAqExD,OAlEI,YAAAy6F,KAAA,WACI3hG,KAAK4hG,YAAY,SAGrB,YAAA5vE,MAAA,WACIhyB,KAAK4hG,YAAY,UAGrB,YAAAA,YAAA,SAAYpwF,GACHxR,KAAKghG,QAAWhhG,KAAKghG,OAAOx+E,KAAQxiB,KAAKghG,OAAOa,eAIrD7hG,KAAKghG,OAAOa,cAAcC,YAAYtwF,EAASxR,KAAKghG,OAAOx+E,MAG/D,YAAAu/E,aAAA,SAAar/F,GACT,OAAOkI,KAAKV,mBAAmBxH,GAAKsI,QAAQ,mBAAmB,SAAC0E,EAAO7P,GACnE,OAAO6K,OAAOC,aAAc,KAAO9K,QAI3C,YAAAmiG,QAAA,WACIhiG,KAAKoP,IAAI6yF,oBAAoB,UAAWjiG,KAAKwhG,eAAe,IAGtD,YAAAJ,aAAV,SAAuB5lG,EAAWo5C,GAC9B,OAAO,IAAIstD,gBAAgB,CACvB1mG,KAAMwE,KAAK+hG,aAAa9vB,KAAKC,UAAU12E,IACvC+xB,OAAQrjB,mBAAmBlK,KAAKoP,IAAIlL,SAASyhD,SAAS51C,MACtDs6D,EAAGz1B,EAAQrqC,cAIT,YAAA42F,cAAV,SAAwB3zE,GACpBxtB,KAAK0hG,cAAc3xF,KAAU/P,KAAKg8D,YAAW,IAAIh8D,KAAKi+F,KAAI,IAAIzwE,EAC9DxtB,KAAKghG,OAAShhG,KAAKoP,IAAIlL,SAASkgC,eAAepkC,KAAKuhG,UACpDvhG,KAAKghG,OAAOx+E,IAAMxiB,KAAK0hG,cAAc3xF,KAErC/P,KAAKoP,IAAIjL,iBAAiB,UAAWnE,KAAKwhG,eAAe,IAGrD,YAAAC,aAAR,SAAqBr9F,GACjB,GAAKpE,KAAKmiG,aAAa/9F,GAAvB,CAIA,IAAM0J,EAAkB1J,EAAM5I,KAAKmS,MAAM,KACxB,YAAbG,EAAM,IAAoB9N,KAAKgmB,gBAC/BhmB,KAAKgmB,gBAAgBlY,EAAM,IACP,UAAbA,EAAM,IAAkB9N,KAAK6gG,cACpC7gG,KAAK6gG,cAAc/yF,EAAM,IACL,SAAbA,EAAM,IAAiB9N,KAAK8gG,cACnC9gG,KAAK8gG,aAAahzF,EAAM,MAIxB,YAAAq0F,aAAR,SAAqB/9F,GACjB,OAAoB,MAAhBA,EAAMs5D,QAAmC,KAAjBt5D,EAAMs5D,QAAiBt5D,EAAMs5D,SAAY19D,KAAK0hG,cAAsBhkC,QAC9E,MAAdt5D,EAAM5I,MAAwC,iBAAhB4I,EAAU,OAIF,IAAnCA,EAAM5I,KAAKyR,QAAQ,aAAsD,IAAjC7I,EAAM5I,KAAKyR,QAAQ,WAC9B,IAAhC7I,EAAM5I,KAAKyR,QAAQ,WAE/B,EA7EA,GAAsB,EAAAq0F,mB,4GCFtB,mBAAa,EAAA9kC,wB,udCAb,IAEA,2B,+CAGA,OAH8C,OAG9C,EAHA,CAFA,OAE8Cl+C,2BAAjC,EAAAq+C,4B,20DCFb,WAGA,GAFA,MAEA,QAEA,SAYA,GAVA,KACA,MACA,MACA,MACA,KACA,KACA,MACA,KACA,MAEA,QAEA,S,mFAEA,cAiBI,WAAsBpB,EAAoCn+B,EACtD19B,EAAoCse,EAC1BiD,EAAkCxC,EAC5CuC,EACU4qB,EAAsDptB,EACtDvd,GALd,MAMI,YAAMud,EAAoB9e,EAAashB,IAAqB,K,OAN1C,EAAAu6C,cAAoC,EAAAn+B,SAClB,EAAApf,gBAC1B,EAAAiD,aAAkC,EAAAxC,eAElC,EAAAmtB,4BACA,EAAA3qC,aApBd,EAAArD,KAAe,GACf,EAAAif,MAAgB,GAChB,EAAA+4B,eAAyB,GACzB,EAAAwsD,sBAAgC,GAChC,EAAAC,KAAe,GACf,EAAAl5B,cAAwB,EAIxB,EAAAm5B,WAAY,EACZ,EAAAC,gBAA0B,EAEhB,EAAAnnC,aAAe,QAUrB,EAAKknC,WAAY,E,SAvBc,OA0B7B,YAAA/hG,SAAN,W,0EACIP,KAAK+7D,e,WAGT,sBAAI,uCAAwB,C,IAA5B,WACI,OAAmC,MAA5B/7D,KAAK02C,oBAA8B,EAAqC,IAAhC12C,KAAK02C,oBAAsB,I,gCAG9E,sBAAI,uCAAwB,C,IAA5B,WACI,OAAQ12C,KAAK02C,qBACT,KAAK,EACD,MAAO,UACX,KAAK,EACD,MAAO,UACX,KAAK,EACD,MAAO,UACX,QACI,MAAO,W,gCAInB,sBAAI,sCAAuB,C,IAA3B,WACI,OAAQ12C,KAAK02C,qBACT,KAAK,EACD,OAAO12C,KAAKN,YAAYpB,EAAE,UAC9B,KAAK,EACD,OAAO0B,KAAKN,YAAYpB,EAAE,QAC9B,KAAK,EACD,OAAO0B,KAAKN,YAAYpB,EAAE,QAC9B,QACI,OAAmC,MAA5B0B,KAAK02C,oBAA8B12C,KAAKN,YAAYpB,EAAE,QAAU,O,gCAI7E,YAAAg8B,OAAN,W,sHACI,YAA6B,IAAlBiiE,OAAOC,QACdx8F,KAAKghB,qBAAqB0J,UAAU,QAAS,mDACzC,8DACJ,MAGC1qB,KAAKuiG,gBAAkBviG,KAAKsiG,WAC7BtiG,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAC5D0B,KAAKN,YAAYpB,EAAE,wBACvB,KAGc,MAAd0B,KAAK6c,OAAgC,KAAf7c,KAAK6c,OAC3B7c,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAC5D0B,KAAKN,YAAYpB,EAAE,kBACvB,MAE6B,IAA7B0B,KAAK6c,MAAM5P,QAAQ,MACnBjN,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAC5D0B,KAAKN,YAAYpB,EAAE,iBACvB,KAEuB,MAAvB0B,KAAK41C,gBAAkD,KAAxB51C,KAAK41C,gBACpC51C,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAC5D0B,KAAKN,YAAYpB,EAAE,uBACvB,KAEA0B,KAAK41C,eAAe55C,OAAS,GAC7BgE,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAC5D0B,KAAKN,YAAYpB,EAAE,qBACvB,KAEA0B,KAAK41C,iBAAmB51C,KAAKoiG,uBAC7BpiG,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAC5D0B,KAAKN,YAAYpB,EAAE,0BACvB,KAKkB,OAFhB63C,EAAiBn2C,KAAK4rC,0BAA0BwK,iBAAiBp2C,KAAK41C,eACxE51C,KAAKq2C,kCACqBF,EAAehlB,MAAQ,EAClC,GAAMnxB,KAAKghB,qBAAqBqoB,WAAWrpC,KAAKN,YAAYpB,EAAE,0BACzE0B,KAAKN,YAAYpB,EAAE,sBAAuB0B,KAAKN,YAAYpB,EAAE,OAAQ0B,KAAKN,YAAYpB,EAAE,MACxF,YAHJ,M,OAIA,IAHe,SAIX,U,iBAIR,OAAI0B,KAAKqiG,OAASriG,KAAK41C,gBACnB51C,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAAkB0B,KAAKN,YAAYpB,EAAE,uBACrG,MAGJ0B,KAAKpC,KAAqB,KAAdoC,KAAKpC,KAAc,KAAOoC,KAAKpC,KAC3CoC,KAAK6c,MAAQ7c,KAAK6c,MAAM/P,OAAOvJ,cACzBgyC,EAAM,EAAAzO,QAAQq8C,cACdqf,EAAcxiG,KAAKghB,qBAAqByhF,OACxChtD,EAAgB+sD,EAAc,IAAQ,IAChC,GAAMxiG,KAAKge,cAAc23B,QAAQ31C,KAAK41C,eAAgB51C,KAAK6c,MAAO04B,EAAKE,K,OACpE,OADT92C,EAAM,SACG,GAAMqB,KAAKge,cAAc+3B,WAAWp3C,I,OAC5B,OADjBi9B,EAAS,SACQ,GAAM57B,KAAKge,cAAc63B,aAAa71C,KAAK41C,eAAgBj3C,I,OACrE,OADPm8C,EAAiB,SACV,GAAM96C,KAAKge,cAAcyjB,YAAY7F,EAAO,K,OAIvC,OAJZ/sB,EAAO,UACP2R,EAAU,IAAI,EAAAkiF,gBAAgB1iG,KAAK6c,MAAO7c,KAAKpC,KAAMk9C,EACvD96C,KAAKqiG,KAAMzmE,EAAO,GAAGhhB,gBAAiB26B,EAAKE,EAAez1C,KAAKg9D,cAAeh9D,KAAK46C,eAC/E/rC,KAAO,IAAI,EAAAqmC,YAAYrmC,EAAK,GAAIA,EAAK,GAAG+L,iBAC9B,GAAM5a,KAAKye,aAAaxgB,IAAS,kB,OAClC,OADX0kG,EAAY,WAC0B,MAAnBA,EAAU78E,OAAiD,MAAhC68E,EAAUnrE,qBAC1DhX,EAAQsF,MAAQ68E,EAAU78E,MAC1BtF,EAAQgX,mBAAqBmrE,EAAUnrE,oB,yCAIvCx3B,KAAKu6B,YAAcv6B,KAAKihB,WAAW2hF,aAAapiF,G,iBAE5C,O,wBAAA,GAAMxgB,KAAKu6B,a,eAAX,S,eAEA,G,WAAIv6B,KAAKs8D,sBAAsB,GAC3B,UAEA,MAAM,E,eAGdt8D,KAAKghB,qBAAqB0J,UAAU,UAAW,KAAM1qB,KAAKN,YAAYpB,EAAE,sBACxE0B,KAAKo9B,OAAO6E,SAAS,CAACjiC,KAAKo7D,cAAe,CAAErB,YAAa,CAAEl9C,MAAO7c,KAAK6c,S,iCAEvE7c,KAAKiB,WAAWW,MAAM,G,iCAI9B,YAAA05D,eAAA,SAAeunC,GACX7iG,KAAKmpE,cAAgBnpE,KAAKmpE,aAC1BjlE,SAASkgC,eAAey+D,EAAe,uBAAyB,kBAAkB/oF,SAGtF,YAAAy8B,uBAAA,sBAC8C,MAAtCv2C,KAAKw2C,+BACLC,aAAaz2C,KAAKw2C,+BAEtBx2C,KAAKw2C,8BAAgCzyB,YAAW,WAC5C,IAAMoyB,EAAiB,EAAKvK,0BAA0BwK,iBAAiB,EAAKR,eACxE,EAAKS,gCACT,EAAKK,oBAAwC,MAAlBP,EAAyB,KAAOA,EAAehlB,QAC3E,MAGC,YAAAklB,6BAAR,WACI,IAAIM,EAAsB,GACpBC,EAAa52C,KAAK6c,MAAM5P,QAAQ,KAOtC,OANI2pC,GAAc,IACdD,EAAYA,EAAUnsB,OAAOxqB,KAAK6c,MAAM/S,OAAO,EAAG8sC,GAAY9pC,OAAOvJ,cAAcoK,MAAM,kBAE5E,MAAb3N,KAAKpC,MAA8B,KAAdoC,KAAKpC,OAC1B+4C,EAAYA,EAAUnsB,OAAOxqB,KAAKpC,KAAKkP,OAAOvJ,cAAcoK,MAAM,OAE/DgpC,G,iCAhLF0mB,GAAiB,0X,iCAAjBA,EAAiB,0C,EAD9B,CACuC,EAAAd,2BAA1B,EAAAc,qB,+DAAAA,EAAiB,E,KAD7B,EAAAz8D,a,+WCdD,MAOI,SAAmBic,EAAsBjf,EAAqB68B,EAC1D45B,EAAmC11D,EAAoB42C,EAAqBE,EACrEunB,EAA6C8lC,GAFrC,KAAAjmF,QAAsB,KAAAjf,OAAqB,KAAA68B,qBACvB,KAAA97B,MAAoB,KAAA42C,MAAqB,KAAAE,gBACrE,KAAAunB,gBAA6C,KAAA8lC,kBACpD9iG,KAAKq0D,mBAAqBA,GAA0C,MAV/D,EAAAquC,mB,6GCPb,mBAAa,EAAAzlC,yB,8+CCAb,W,GAIA,MAEA,KACA,KACA,MACA,KACA,MACA,MACA,K,kEAMA,aAWI,WAAoB7/B,EAAwBE,EAChCrc,EAAgCoc,EAChCrc,EAAoDthB,EACpDmrB,EAAkD2sB,GAH1C,KAAApa,SAAwB,KAAAE,cAChC,KAAArc,aAAgC,KAAAoc,cAChC,KAAArc,uBAAoD,KAAAthB,cACpD,KAAAmrB,sBAAkD,KAAA2sB,iBAV9D,KAAAurD,YAAsB,EACtB,KAAAC,SAAmB,EAEnB,KAAA1hG,SAAmB,E,OASb,YAAAf,SAAN,W,kGACwB,OAApB,EAAAP,KAAoB,GAAMA,KAAK6qB,oBAAoBo4E,2B,OACtC,OADb,EAAKpjF,aAAe,SACpB,EAAA7f,KAAa,GAAMA,KAAKs9B,YAAY+W,Y,OACpC,OADA,EAAKx3B,MAAQ,SACb,GAAM7c,KAAKq9B,YAAY2E,UAAS,I,cAAhC,SACAhiC,KAAKsB,SAAU,E,YAGb,YAAA4hG,QAAN,W,gGACIljG,KAAK+iG,YAAa,EAClB/iG,KAAKuwC,cAAgBvwC,KAAK6qB,oBAAoBs4E,c,iBAG1C,O,sBAAA,GAAMnjG,KAAKuwC,e,OAEX,OAFA,SACAvwC,KAAKghB,qBAAqB0J,UAAU,UAAW,KAAM1qB,KAAKN,YAAYpB,EAAE,0BACxE,GAAM0B,KAAK6qB,oBAAoBu4E,gC,cAA/B,SACApjG,KAAKo9B,OAAO6E,SAAS,CAAC,K,+BAEtBjiC,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAAkB,EAAEkT,S,+BAItF,YAAAunC,MAAN,W,uGACsB,SAAM/4C,KAAKghB,qBAAqBqoB,WAC9CrpC,KAAKN,YAAYpB,EAAE,iCAAkC0B,KAAK6f,aAAajiB,KACvEoC,KAAKN,YAAYpB,EAAE,OAAQ0B,KAAKN,YAAYpB,EAAE,MAAO,Y,OACzD,IAHkB,SAId,MAAO,CAAP,GAAO,G,iBAQP,O,sBAJA0B,KAAKgjG,SAAU,EACfhjG,KAAKuwC,cAAgBvwC,KAAKihB,WAAW+3B,sBAAsBh5C,KAAK6f,aAAajgB,IAAIyB,MAAK,WAClF,OAAO,EAAKg8B,YAAY2E,UAAS,MAErC,GAAMhiC,KAAKuwC,e,OAEX,OAFA,SACAvwC,KAAKghB,qBAAqB0J,UAAU,UAAW,KAAM1qB,KAAKN,YAAYpB,EAAE,qBACxE,GAAM0B,KAAK6qB,oBAAoBu4E,gC,cAA/B,SACApjG,KAAKo9B,OAAO6E,SAAS,CAAC,K,+BAEtBjiC,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAAkB,G,gEAtDjFg/D,GAAuB,wS,iCAAvBA,I,EADb,GACa,EAAAA,2B,+DAAAA,EAAuB,E,KADnC,EAAA18D,a,giEClBD,WAMA,GALA,MAKA,OAeA,GAbA,KACA,MACA,KACA,MACA,MACA,KACA,MACA,MACA,KAKA,QACA,SACA,SAEA,SAEA,SACA,SAEA,Q,mFAEA,cAYI,WAAYlB,EAA0Bse,EAA8B6rB,EAChEvM,EAA0BsO,EAC1B5qB,EAA4CwQ,EAAwC4L,EAC5Enc,EAAgCoc,EAAkCvQ,GAH9E,MAII,YAAMptB,EAAase,EAAe6rB,EAAkBvM,EAAasO,EAC7D5qB,EAAsBwQ,IAAc,K,OAH4C,EAAA4L,SAC5E,EAAAnc,aAAgC,EAAAoc,cAAkC,EAAAvQ,QAb9E,EAAAu2E,aAAuB,EACvB,EAAAl6B,cAAwB,EACxB,EAAAk5B,KAAe,GACf,EAAA1vD,WAAqB,KAErB,EAAA2wD,yBAA0B,EAG1B,EAAAloC,aAAe,Q,SATuB,OAmBhC,YAAA76D,SAAN,W,yGACI,SAAMP,KAAKq9B,YAAY2E,UAAS,I,UAAhC,SACAhiC,KAAKqjG,aAAc,EAEnBrjG,KAAK8sB,MAAMitC,YAAY50D,KAAK,EAAAC,SAASkB,WAAU,SAAMkzD,GAAO,qC,kCAC9B,MAAtBA,EAAQ7mB,aACR3yC,KAAK2yC,WAAa6mB,EAAQ7mB,Y,aAKX,MAAnB3yC,KAAK2yC,WAAL,Y,iBAEqB,O,sBAAA,GAAM3yC,KAAKihB,WAAWsiF,gCAAgCvjG,KAAK2yC,a,OAI1E,OAJIpxC,EAAW,SACjBvB,KAAK+a,MAAQxZ,EAAS3B,GACtBI,KAAKsjG,wBAA0B/hG,EAASiiG,qBACxC,EAAAxjG,KACE,GAAMA,KAAKwxB,cAAciyE,yCAAyCzjG,KAAK+a,Q,cADzE,EAAKtY,sBACH,S,6BAEFzC,KAAKghB,qBAAqB0J,UAAU,QAAS,KAAM1qB,KAAKN,YAAYpB,EAAE,kB,oBAI9E,YAAMiC,SAAQ,W,YAGZ,YAAA+0C,mBAAN,W,yEAII,OAHAt1C,KAAKu1C,IAAM,EAAAzO,QAAQq8C,cACbqf,EAAcxiG,KAAKghB,qBAAqByhF,OAC9CziG,KAAKy1C,cAAgB+sD,EAAc,IAAQ,IACpC,CAAP,GAAO,UAGL,YAAAvsD,qBAAN,SAA2Bxb,EAA4B97B,EACnDi9B,G,yGACa,SAAM57B,KAAKge,cAAcyjB,YAAY7F,EAAO,K,OAAnD/sB,EAAO,SACP2R,EAAU,IAAI,EAAAkjF,mBAChBjpE,EACAmB,EAAO,GAAGhhB,gBACV5a,KAAKqiG,KACLriG,KAAKu1C,IACLv1C,KAAKy1C,cACLz1C,KAAK2yC,WACL,IAAI,EAAAuC,YAAYrmC,EAAK,GAAIA,EAAK,GAAG+L,kB,iBA6BjC,O,sBA1BI5a,KAAKsjG,wBACLtjG,KAAKu6B,YAAcv6B,KAAKihB,WAAW0iF,YAAYnjF,GAASnf,MAAK,gD,kDACzD,SAAMrB,KAAK4jG,qBAAqBjlG,EAAKi9B,EAAQ/sB,I,OAC7C,OADA,SACO,CAAP,EAAO7O,KAAKihB,WAAWm4B,oBAAoBp5C,KAAK+a,kBACjD1Z,MAAK,SAAME,GAAQ,qC,gEAClB,GAAgB,MAAZA,EACA,MAAM,IAAI4B,MAAMnD,KAAKN,YAAYpB,EAAE,8BAExB,SAAM0B,KAAKs9B,YAAYqhB,a,OAInB,OAJb/uB,EAAS,SACTolB,EAAY,EAAAzsC,MAAMY,eAAe5H,EAASyzC,WAG7B,GAAMh1C,KAAKge,cAAc83B,a,OACvB,OADf6zB,EAAa,SACE,GAAM3pE,KAAKge,cAAcq7B,WAAWswB,EAAWhrE,IAAKq2C,EAAU1qC,S,OAKnF,OALMgvC,EAAe,UAEfmhB,EAAe,IAAI,EAAA3lB,gDACZyE,iBAAmBD,EAAa1+B,gBAEtC,CAAP,EAAO5a,KAAKihB,WAAWu4B,2CAA2Cx5C,KAAK+a,MAAO6U,EAAQ6qC,cAG1Fz6D,KAAKu6B,YAAcv6B,KAAKihB,WAAW0iF,YAAYnjF,GAASnf,MAAK,gD,kDACzD,SAAMrB,KAAK4jG,qBAAqBjlG,EAAKi9B,EAAQ/sB,I,cAA7C,S,cAIR,GAAM7O,KAAKu6B,a,cAAX,SAEuC,MAAnCv6B,KAAK6jG,2BACL7jG,KAAK6jG,6BAEL7jG,KAAKo9B,OAAO6E,SAAS,CAACjiC,KAAKo7D,e,6BAG/Bp7D,KAAKghB,qBAAqB0J,UAAU,QAAS,KAAM1qB,KAAKN,YAAYpB,EAAE,kB,+BAI9E,YAAAg9D,eAAA,SAAeunC,GACX7iG,KAAKmpE,cAAgBnpE,KAAKmpE,aAC1BjlE,SAASkgC,eAAey+D,EAAe,uBAAyB,kBAAkB/oF,SAGxE,YAAA8pF,qBAAd,SAAmCjlG,EAAyBi9B,EAAyC/sB,G,sGAC3D,OAAhC,KAAA7O,KAAKs9B,aAAYohB,eAAe,GAAM1+C,KAAKs9B,YAAYqhB,a,OAAa,O,GAApC,UAAoC,GAAM3+C,KAAKs9B,YAAY+W,Y,OAAjG,SAAM,oBAAoE,SACtEr0C,KAAKu1C,IAAKv1C,KAAKy1C,kB,OACnB,OAFA,SAEA,GAAMz1C,KAAKge,cAAc4gC,OAAOjgD,I,OAChC,OADA,SACA,GAAMqB,KAAKge,cAAcihC,UAAUrjB,EAAO,GAAGhhB,kB,OAC7C,OADA,SACA,GAAM5a,KAAKge,cAAcqhC,iBAAiBxwC,EAAK,GAAG+L,kB,OAE7B,OAFrB,SAEqB,GAAM5a,KAAKge,cAAc63B,aAAa71C,KAAK41C,eAAgBj3C,EAC5E,EAAAo2C,YAAYgG,qB,OAChB,OAFMilD,EAAe,SAErB,GAAMhgG,KAAKge,cAAc6gC,WAAWmhD,I,cAApC,S,6CArHKziC,GAAoB,ga,iCAApBA,EAAoB,0C,EADjC,CAC0C,2BAA7B,EAAAA,wB,+DAAAA,EAAoB,E,KADhC,EAAA38D,a,0YC5BD,MASI,SAAY65B,EAA4B97B,EAAa01D,EAA4B9e,EAC7EE,EAAuBquD,EAAuBj1F,GAC9C7O,KAAKy6B,mBAAqBA,EAC1Bz6B,KAAKrB,IAAMA,EACXqB,KAAKq0D,mBAAqBA,EAC1Br0D,KAAKu1C,IAAMA,EACXv1C,KAAKy1C,cAAgBA,EACrBz1C,KAAK8jG,cAAgBA,EACrB9jG,KAAK6O,KAAOA,GAjBP,EAAA60F,sB,6GCJb,W,GAYA,OAKA,MAEA,O,oEAEA,iBAcI,WAAoB95D,EAAoCm6D,EAC5C3jG,EAAqC4jG,EACtCl/F,GAFS,KAAA8kC,eAAoC,KAAAm6D,KAC5C,KAAA3jG,KAAqC,KAAA4jG,mBACtC,KAAAl/F,W,OAEX,YAAAynE,gBAAA,WACIvsE,KAAKikG,mBAAmBjkG,KAAK+F,oBACM,MAA/B/F,KAAK4E,wBACL5E,KAAK4E,uBAAuB5E,KAAKsF,aAAaf,UAElDvE,KAAK+jG,GAAGn3B,gBAER5sE,KAAK8E,SAAS8iC,QAAQ5nC,KAAKI,GAAGI,eAC9BR,KAAKkkG,UAAYlkG,KAAKgkG,iBAAiBtlG,OAAOsB,KAAKI,GAAGI,cAAcwG,cAAc,kBACrB,MAAzDhH,KAAKI,GAAGI,cAAcwG,cAAc,mBACpChH,KAAKkkG,UAAUC,sCAIvB,YAAAF,mBAAA,SAAmBv/F,GACf,IAAM0/F,EAAmBpkG,KAAK4pC,aAAajkC,wBAAwBjB,GAEnE1E,KAAKqkG,gBAAgBpc,QACrBjoF,KAAKsF,aAAetF,KAAKqkG,gBAAgB13B,gBAAgBy3B,IAG7D,YAAAvgF,YAAA,WACQ7jB,KAAKsF,cACLtF,KAAKsF,aAAakB,UAEtBxG,KAAKkkG,UAAU19F,WAGnB,YAAAhC,MAAA,WACIxE,KAAK8E,SAASN,SAGlB,YAAAkC,SAAA,WACI,IAAM49F,EAActkG,KAAKI,GAAGI,cAAcwG,cAAc,kBACxDs9F,WAAaxqF,S,iCAhDR7R,GAAqB,qM,iCAArBA,EAAqB,kD,GAAA,K,kBAGK,EAAAijC,kB,sJALxB,qE,oBAFf,GAIa,EAAAjjC,yB,+DAAAA,EAAqB,E,KAJjC,EAAApF,U,MAAU,CACPhC,SAAU,YACV0jG,SAAU,iD,mJAK2DF,gBAAiB,CAAF,C,KAAnF,EAAAz/D,U,MAAU,eAAgB,CAAEuG,KAAM,EAAAD,iBAAkBE,QAAQ,S,qGCrBjE,iBACI,WAAoBo5D,EAAmCC,GAAnC,KAAAD,kBAAmC,KAAAC,oBAM3D,OAHI,YAAAxmG,IAAA,SAAI6nB,EAAY4+E,EAAqBC,G,MACjC,OAAwC,QAAxC,EAAO3kG,KAAKykG,kBAAkBxmG,IAAI6nB,UAAM,QAAI9lB,KAAKwkG,gBAAgBvmG,IAAS6nB,EAAO4+E,IAEzF,EAPA,GAAa,EAAAx8F,iB,y+CCPb,WAOA,GALA,MAKA,OAEA,SAEA,SAaA,GATA,KACA,MACA,MACA,KACA,KACA,KACA,MACA,MAEA,QACA,QAEA,SACA,U,2EAEA,aA0BI,WAAsBqzD,EAAoCn+B,EAC5C19B,EAAoCuhB,EACpCD,EAAsD5R,EACtDoP,EAAkDC,EAClD+4B,EAA0C1qB,EAC1C7rB,GALQ,KAAAs6D,cAAoC,KAAAn+B,SAC5C,KAAA19B,cAAoC,KAAAuhB,aACpC,KAAAD,uBAAsD,KAAA5R,MACtD,KAAAoP,qBAAkD,KAAAC,eAClD,KAAA+4B,iBAA0C,KAAA1qB,QAC1C,KAAA7rB,aA7Bd,KAAA6kB,MAAgB,GAChB,KAAA41B,UAAoB,EACpB,KAAAkpD,eAAyB,EACzB,KAAAC,gBAA0B,EAC1B,KAAAj4E,UAAY,EAAAstB,mBACZ,KAAAqC,aAAe,EAAA/8B,sBACf,KAAA2gD,qBAA8C,EAAA3gD,sBAAsB6b,cACpE,KAAAihB,mBAA6B,EAC7B,KAAAwoD,SAA2B,KAC3B,KAAAxkG,MAAgB,GAChB,KAAAykG,eAAyB,KAGzB,KAAApyD,WAAqB,KAQX,KAAAqyD,WAAa,QACb,KAAA5pC,aAAe,QAQrBp7D,KAAKs8C,kBAAoBt8C,KAAKghB,qBAAqBo7B,iBAAiBhtC,G,OAbxE,sBAAI,4BAAa,C,IAAjB,WACI,MAAO,6BAA6BpP,KAAKwe,mBAAmBy9C,kB,gCAe1D,YAAA17D,SAAN,W,uGACI,OAAKP,KAAKilG,SAAsD,MAA3CjlG,KAAKu7D,YAAYrf,wBAKtCl8C,KAAK8sB,MAAMitC,YAAY50D,KAAK,EAAAC,SAASkB,WAAU,SAAAkzD,GACjB,MAAtBA,EAAQ7mB,aACR,EAAKA,WAAa6mB,EAAQ7mB,eAI9B3yC,KAAKklG,YACLllG,KAAKo7D,aAAe,QAGR,MAAZp7D,KAAKoP,KAAepP,KAAKs8C,oBACnB0f,EAAch8D,KAAKwe,mBAAmBy9C,iBAC5Cj8D,KAAK8kG,SAAW,IAAI,EAAAK,eAAenlG,KAAKoP,IAAK4sD,EAAah8D,KAAK6kG,eAAgB7kG,KAAKghB,qBAChFhhB,KAAKN,aAAa,SAAComB,GACf,EAAKA,MAAQA,EACb,EAAKwU,YACN,SAAC14B,GACA,EAAKof,qBAAqB0J,UAAU,QAAS,EAAKhrB,YAAYpB,EAAE,iBAAkBsD,MACnF,SAACw6D,GACa,UAATA,IACA,EAAKwoC,eAAgB,OAMrC5kG,KAAKmgE,qBAAuBngE,KAAKu7D,YAAYlf,4BAA4Br8C,KAAKs8C,mBAC9E,GAAMt8C,KAAKsI,UA/BPtI,KAAKo9B,OAAO6E,SAAS,CAACjiC,KAAKglG,aAC3B,K,cA8BJ,S,YAGJ,YAAAnhF,YAAA,WACI7jB,KAAKolG,kBACLplG,KAAK8kG,SAAW,MAGd,YAAAx8F,KAAN,W,uGACI,GAAiC,MAA7BtI,KAAKmgE,qBAEL,OADAngE,KAAKM,MAAQN,KAAKN,YAAYpB,EAAE,oBAChC,I,OAGJ0B,KAAKolG,kBACLplG,KAAKM,MAAS,EAAA45C,mBAA2Bl6C,KAAKmgE,sBAAsBviE,KAC9DynG,EAAerlG,KAAKu7D,YAAYrf,uBAAuBj+C,IAAI+B,KAAKmgE,sBAC9DngE,KAAKmgE,sB,KACJ,EAAA3gD,sBAAsB2b,SAAtB,Y,KAOA,EAAA3b,sBAAsBsb,I,KACtB,EAAAtb,sBAAsBub,gBAAtB,Y,KAgBA,EAAAvb,sBAAsBqK,MAAtB,Y,mBAlBD,OALK7pB,KAAK6kG,gBACN9gF,YAAW,WACP,EAAKuhF,iBACN,KAEP,M,OAiBA,OAdAvhF,YAAW,WACPwhF,EAAUj9F,KAAK,CACX04F,YAAQ3+F,EACRuK,KAAMy4F,EAAaG,KACnBC,YAAaJ,EAAaK,UAC1BC,gBAAiB,SAAOryF,GAAkB,qC,+DAE3B,OADLsyF,EAAMtyF,EAAEtM,cAAc,+BACxB,OACAhH,KAAK8lB,MAAQ8/E,EAAIvnG,MACjB,GAAM2B,KAAKs6B,W,OAAX,S,uCAIb,GACH,M,cAEAt6B,KAAK+kG,eAAiBM,EAAax7E,MAC/B7pB,KAAKu7D,YAAYrf,uBAAuBv3B,KAAO,EAC/C,GAAM3kB,KAAK8yE,WAAU,IADrB,M,OACA,S,wBAIJ,Y,yBAIN,YAAAx4C,OAAN,W,0FACI,GAAkB,MAAdt6B,KAAK8lB,OAAgC,KAAf9lB,KAAK8lB,MAG3B,OAFA9lB,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAC5D0B,KAAKN,YAAYpB,EAAE,6BACvB,IAGJ,GAAI0B,KAAKmgE,uBAAyB,EAAA3gD,sBAAsB2b,SAAU,CAC9D,GAAqB,MAAjBn7B,KAAK8kG,SAGL,UAFA9kG,KAAK8kG,SAASnD,YAIX3hG,KAAKmgE,uBAAyB,EAAA3gD,sBAAsBqK,OAC3D7pB,KAAKmgE,uBAAyB,EAAA3gD,sBAAsB6b,gBACpDr7B,KAAK8lB,MAAQ9lB,KAAK8lB,MAAM9a,QAAQ,IAAK,IAAI8B,Q,iBAIzC,O,sBAAA,GAAM9M,KAAKohC,Y,cAAX,S,6BAEIphC,KAAKmgE,uBAAyB,EAAA3gD,sBAAsB2b,UAA6B,MAAjBn7B,KAAK8kG,UACrE9kG,KAAK8kG,SAAS9yE,Q,+BAKpB,YAAAoP,SAAN,W,kGAEiC,OAD7BphC,KAAKu6B,YAAcv6B,KAAKu7D,YAAYhgB,eAAev7C,KAAKmgE,qBAAsBngE,KAAK8lB,MAAO9lB,KAAK07C,UAClE,GAAM17C,KAAKu6B,a,OACjB,OADjBh5B,EAAuB,SACN,GAAMvB,KAAKw3C,eAAev5C,IAAa,EAAAuZ,iBAAiBI,oB,OAC/E,OADM+nD,EAAiB,SACvB,GAAM3/D,KAAKye,aAAay7C,KAAK,EAAA1iD,iBAAiBI,oBAAqB+nD,I,cAAnE,SAC8B,MAA1B3/D,KAAK4/D,mBACL5/D,KAAK4/D,oBAELr+D,EAAS68C,sBACTp+C,KAAKo7D,aAAe,gBAEpB75D,EAAS88C,qBACTr+C,KAAKo7D,aAAe,wBAEc,MAAlCp7D,KAAKy7D,0BACLz7D,KAAKy7D,4BAELz7D,KAAKo9B,OAAO6E,SAAS,CAACjiC,KAAKo7D,cAAe,CACtCrB,YAAa,CACTpnB,WAAY3yC,KAAK2yC,c,YAM3B,YAAAmgC,UAAN,SAAgB+yB,G,kGACZ,GAAI7lG,KAAKmgE,uBAAyB,EAAA3gD,sBAAsBqK,MACpD,UAGJ,GAAyB,MAArB7pB,KAAK+yE,aACL,U,iBAQA,O,uBAJMvyD,EAAU,IAAI,EAAA8/C,uBACZzjD,MAAQ7c,KAAKu7D,YAAY1+C,MACjC2D,EAAQia,mBAAqBz6B,KAAKu7D,YAAY9gC,mBAC9Cz6B,KAAK+yE,aAAe/yE,KAAKihB,WAAW6kF,mBAAmBtlF,GACvD,GAAMxgB,KAAK+yE,c,cAAX,SACI8yB,GACA7lG,KAAKghB,qBAAqB0J,UAAU,UAAW,KAC3C1qB,KAAKN,YAAYpB,EAAE,4BAA6B0B,KAAK+kG,iB,+BAG7D/kG,KAAKiB,WAAWW,MAAM,G,oBAG1B5B,KAAK+yE,aAAe,K,YAGxB,YAAAuyB,aAAA,WACI,IAAMD,EAAerlG,KAAKu7D,YAAYrf,uBAAuBj+C,IAAI+B,KAAKmgE,sBAEjEngE,KAAKs8C,mBAAsC,MAAjBt8C,KAAK8kG,UAIpC9kG,KAAK8kG,SAASx8F,KAAK+8F,IAGf,YAAAD,gBAAR,WACyB,MAAjBplG,KAAK8kG,WACL9kG,KAAK8kG,SAASnD,OACd3hG,KAAK8kG,SAAS9C,YAItB,sBAAI,sBAAO,C,IAAX,WACI,OAAOhiG,KAAKu7D,YAAYxe,uBAAyB/8C,KAAKu7D,YAAYze,kBAAoB98C,KAAKu7D,YAAY1e,qB,gCAG3G,sBAAI,wBAAS,C,IAAb,WACI,OAAO78C,KAAKu7D,YAAYze,kBAAoB98C,KAAKu7D,YAAY1e,qB,iEA5NxDwjB,GAAkB,sMA2B8Cib,QAAM,8L,iCA3BtEjb,I,EADb,GACa,EAAAA,sB,+DAAAA,EAAkB,E,KAD9B,EAAAz/D,a,oIA4B4E06E,QAAM,gI,kGCxDnF,iBACI,KAAAv9B,WAAqB,EACrB,KAAArtB,eAAyB,GACzB,KAAA0tB,qBAA+B,EAC/B,KAAAC,oBAA8B,EAC9B,KAAAH,mBAA6E,MALpE,EAAAL,c,iHCEb,MAOI,SAAYl/C,EAAa42C,EAAcE,EAAuBquD,EAAuBj1F,GACjF7O,KAAKrB,IAAMA,EACXqB,KAAKu1C,IAAMA,EACXv1C,KAAKy1C,cAAgBA,EACrBz1C,KAAK8jG,cAAgBA,EACrB9jG,KAAK6O,KAAOA,GAZP,EAAAgxC,6B,qGCAb,MAMI,SAAY1C,EAAen8B,GACvBhhB,KAAKkC,KAAO8e,EAAqB+kF,YACjC/lG,KAAKpC,KAAOojB,EAAqBglF,kBACjChmG,KAAK2yC,WAAawK,EAClBn9C,KAAKimG,UAAY,MAVZ,EAAA5oD,iB,uGCJb,MAGI,SAAYxgC,GACR7c,KAAK6c,MAAQA,GAJR,EAAA8/B,mB,oGCKb,YAEA,aAUI,WAAY+3B,EAAuBwxB,EAAiB1oD,EAAuCf,EAChF32B,EAAsB41B,EAA0BonD,EAAyBqD,GADO,KAAA1pD,WAChF,KAAA32B,QAAsB,KAAA41B,WAA0B,KAAAonD,kBACpC,MAAfpuB,GAAuBA,EAAY14E,OAAS,GAC5CgE,KAAK6c,MAAQ63D,EAAY,GACzB10E,KAAKy6B,mBAAqBi6C,EAAY,IACtB,MAATwxB,GAAiBA,EAAMlqG,OAAS,GACvCgE,KAAK0b,KAAOwqF,EAAM,GAClBlmG,KAAKm7C,aAAe+qD,EAAM,GAC1BlmG,KAAKy9D,YAAcyoC,EAAM,IACM,MAAxB1oD,GAAgCA,EAAqBxhD,OAAS,IACrEgE,KAAKs7C,SAAWkC,EAAqB,GACrCx9C,KAAKwlB,aAAeg4B,EAAqB,IAE7Cx9C,KAAKmmG,OAAmB,MAAVA,EAAiBA,EAAS,KAqDhD,OAlDI,YAAAC,gBAAA,SAAgB9qD,GACZ,IAAM1sC,EAAW,CACb8+D,MAAO,qBACP24B,UAAW/qD,GAGf,GAAyB,MAArBt7C,KAAKwlB,aACL5W,EAAI8+D,MAAQpyB,EAASvuC,WAAW,gBAAkB,mBAAqB,MACvE6B,EAAI03F,WAAa,qBACjB13F,EAAI23F,cAAgBvmG,KAAKwlB,kBACtB,GAA+B,MAA3BxlB,KAAKy6B,oBAA4C,MAAdz6B,KAAK6c,MAC/CjO,EAAI03F,WAAa,WACjB13F,EAAI0G,SAAWtV,KAAK6c,MACpBjO,EAAI2G,SAAWvV,KAAKy6B,uBACjB,IAAiB,MAAbz6B,KAAK0b,MAAqC,MAArB1b,KAAKm7C,cAA4C,MAApBn7C,KAAKy9D,YAM9D,MAAM,IAAIt6D,MAAM,qCALhByL,EAAI03F,WAAa,qBACjB13F,EAAI8M,KAAO1b,KAAK0b,KAChB9M,EAAI43F,cAAgBxmG,KAAKm7C,aACzBvsC,EAAI63F,aAAezmG,KAAKy9D,YAwB5B,OAnBIz9D,KAAKmmG,SACLv3F,EAAIgkB,WAAa5yB,KAAKmmG,OAAOjkG,KAC7B0M,EAAI83F,iBAAmB1mG,KAAKmmG,OAAOxzD,WACnC/jC,EAAI+3F,WAAa3mG,KAAKmmG,OAAOvoG,MAK7BoC,KAAK8lB,OAA0B,MAAjB9lB,KAAKy8C,WACnB7tC,EAAI6sC,eAAiBz7C,KAAK8lB,MAC1BlX,EAAI4sC,kBAAoBx7C,KAAKy8C,SAC7B7tC,EAAIg4F,kBAAoB5mG,KAAK07C,SAAW,IAAM,KAGtB,MAAxB17C,KAAK8iG,kBACLl0F,EAAIk0F,gBAAkB9iG,KAAK8iG,iBAIxBl0F,GAGX,YAAAi4F,0BAAA,SAA0BC,GACG,MAArB9mG,KAAKwlB,cAAmD,MAA3BxlB,KAAKy6B,oBAA4C,MAAdz6B,KAAK6c,OACrEiqF,EAAQphG,IAAI,aAAc,EAAA6C,MAAMwD,iBAAiB/L,KAAK6c,SAGlE,EA5EA,GAAa,EAAA4gC,gB,sGCJb,iBAKI,WAAoBruC,EAAqB4sD,EAA6B6oC,EAC1D7jF,EAAoDthB,EACpDsmB,EAAmC66E,EAAiCC,GAF5D,KAAA1xF,MAAqB,KAAA4sD,cAA6B,KAAA6oC,iBAC1D,KAAA7jF,uBAAoD,KAAAthB,cACpD,KAAAsmB,kBAAmC,KAAA66E,gBAAiC,KAAAC,eANxE,KAAAE,OAA4B,KAE5B,KAAAQ,cAAgBxhG,KAAKyhG,aAAa7iG,KAAKoB,MAK3CA,KAAK0hG,cAAgBtyF,EAAIlL,SAASgD,cAAc,KA2ExD,OAxEI,YAAAoB,KAAA,SAAK9M,GACD,IAAMgyB,EAAS,IAAI00E,gBAAgB,CAC/B1mG,KAAMwE,KAAK+hG,aAAa9vB,KAAKC,UAAU12E,IACvC+xB,OAAQrjB,mBAAmBlK,KAAKoP,IAAIlL,SAASyhD,SAAS51C,MACtDg3F,QAAS78F,mBAAmBlK,KAAKN,YAAYpB,EAAE,yBAC/C+rE,EAAG,MAGHrqE,KAAK6kG,gBAELr3E,EAAOgX,OAAO,SAAUxkC,KAAKN,YAAY2hG,mBACzCrhG,KAAKghB,qBAAqBgO,UAAahvB,KAAKg8D,YAAW,qCAAqCxuC,KAE5FxtB,KAAK0hG,cAAc3xF,KAAU/P,KAAKg8D,YAAW,4BAA4BxuC,EACzExtB,KAAKghG,OAAShhG,KAAKoP,IAAIlL,SAASkgC,eAAe,mBAC/CpkC,KAAKghG,OAAOgG,MAAQ,6BAA+B,IAAIr3F,IAAI3P,KAAKg8D,aAAa0B,OAC7E19D,KAAKghG,OAAOx+E,IAAMxiB,KAAK0hG,cAAc3xF,KAErC/P,KAAKoP,IAAIjL,iBAAiB,UAAWnE,KAAKwhG,eAAe,KAIjE,YAAAG,KAAA,WACI3hG,KAAK4hG,YAAY,SAGrB,YAAA5vE,MAAA,WACIhyB,KAAK4hG,YAAY,UAGrB,YAAAA,YAAA,SAAYpwF,GACHxR,KAAKghG,QAAWhhG,KAAKghG,OAAOx+E,KAAQxiB,KAAKghG,OAAOa,eAIrD7hG,KAAKghG,OAAOa,cAAcC,YAAYtwF,EAASxR,KAAKghG,OAAOx+E,MAG/D,YAAAu/E,aAAA,SAAar/F,GACT,OAAOkI,KAAKV,mBAAmBxH,GAAKsI,QAAQ,mBAAmB,SAAC0E,EAAO7P,GACnE,OAAO6K,OAAOC,aAAc,KAAO9K,QAI3C,YAAAmiG,QAAA,WACIhiG,KAAKoP,IAAI6yF,oBAAoB,UAAWjiG,KAAKwhG,eAAe,IAGxD,YAAAC,aAAR,SAAqBr9F,GACjB,GAAKpE,KAAKmiG,aAAa/9F,GAAvB,CAIA,IAAM0J,EAAkB1J,EAAM5I,KAAKmS,MAAM,KACxB,YAAbG,EAAM,IAAoB9N,KAAKgmB,gBAC/BhmB,KAAKgmB,gBAAgBlY,EAAM,IACP,UAAbA,EAAM,IAAkB9N,KAAK6gG,cACpC7gG,KAAK6gG,cAAc/yF,EAAM,IACL,SAAbA,EAAM,IAAiB9N,KAAK8gG,cACnC9gG,KAAK8gG,aAAahzF,EAAM,MAIxB,YAAAq0F,aAAR,SAAqB/9F,GACjB,OAAoB,MAAhBA,EAAMs5D,QAAmC,KAAjBt5D,EAAMs5D,QAAiBt5D,EAAMs5D,SAAY19D,KAAK0hG,cAAsBhkC,QAC9E,MAAdt5D,EAAM5I,MAAwC,iBAAhB4I,EAAU,OAIF,IAAnCA,EAAM5I,KAAKyR,QAAQ,aAAsD,IAAjC7I,EAAM5I,KAAKyR,QAAQ,WAC9B,IAAhC7I,EAAM5I,KAAKyR,QAAQ,WAE/B,EAnFA,GAAa,EAAAk4F,kB,iHCHb,W,GAMA,MAIA,MACA,KACA,K,oCAEA,aAOI,WAAsB5pC,EAAoCn+B,EAC5C19B,EAAoCshB,EACpC5R,GAFQ,KAAAmsD,cAAoC,KAAAn+B,SAC5C,KAAA19B,cAAoC,KAAAshB,uBACpC,KAAA5R,MAPJ,KAAA8wD,mBAAqB,IAAI,EAAAlzC,aACzB,KAAAozC,kBAAoB,IAAI,EAAApzC,aAElC,KAAAJ,UAAmB,G,OAMnB,YAAArsB,SAAA,WACIP,KAAK4sB,UAAY5sB,KAAKu7D,YAAYtf,+BAA+Bj8C,KAAKoP,MAG1E,YAAA63F,OAAA,SAAOjoG,GACHgB,KAAKkgE,mBAAmBvyC,KAAK3uB,EAAEkD,OAGnC,YAAAq+D,QAAA,WACIvgE,KAAKghB,qBAAqBgO,UAAU,4DACpChvB,KAAKogE,kBAAkBzyC,Q,iCApBlBqyC,GAAyB,oKAQfsb,U,iCARVtb,EAAyB,0F,EADtC,GACa,EAAAA,6B,+DAAAA,EAAyB,E,KADrC,EAAAp/D,a,gHASsB06E,WAAM,CAPfpb,mBAAkB,E,KAA3B,EAAAxxC,SACS0xC,kBAAiB,E,KAA1B,EAAA1xC,Y,q1DCjBL,WAaA,GAXA,KACA,MACA,KACA,KACA,MACA,MACA,KACA,MACA,MACA,KAEA,QAMA,U,kFAEA,cASI,WAAYhvB,EAA0BshB,EAClC4qB,EAAsDpa,EACtDxT,EAA8Bsf,EAC9BuM,EAA4C5oB,EACpCoc,EAAkCp8B,GAJ9C,MAKI,YAAMvB,EAAase,EAAe6rB,EAAkBvM,EAAasO,EAC7D5qB,EAAsBwQ,IAAc,K,OAHI,EAAAvQ,aACpC,EAAAoc,cAAkC,EAAAp8B,aAR9C,EAAAkoE,cAAwB,E,SAJqB,OAiBvC,YAAA5oE,SAAN,W,0FACI,SAAMP,KAAKq9B,YAAY2E,UAAS,I,cAAhC,SACA,YAAMzhC,SAAQ,W,YAGlB,YAAA+6D,eAAA,SAAeunC,GACX7iG,KAAKmpE,cAAgBnpE,KAAKmpE,aAC1BjlE,SAASkgC,eAAey+D,EAAe,uBAAyB,kBAAkB/oF,SAGhF,YAAAw7B,mBAAN,W,sGACiC,OAA7B,EAAAt1C,KAA6B,GAAMA,KAAKwxB,cAAc4jB,kC,OACzC,OADb,EAAK3yC,sBAAwB,SAC7B,EAAAzC,KAAa,GAAMA,KAAKs9B,YAAY+W,Y,OACzB,OADX,EAAKx3B,MAAQ,SACb,EAAA7c,KAAW,GAAMA,KAAKs9B,YAAYkY,U,OACb,OADrB,EAAKD,IAAM,SACX,EAAAv1C,KAAqB,GAAMA,KAAKs9B,YAAYoY,oB,OAC5C,OADA,EAAKD,cAAgB,SACd,CAAP,GAAO,WAGL,YAAAnb,OAAN,W,wGAES,SAAMt6B,KAAKq1C,kB,OAAhB,OAAK,SAIA,GAAMr1C,KAAKs1C,sBAHZ,I,OAGJ,IAAK,SACD,U,iBAKe,O,uBAAA,GAAMt1C,KAAKge,cAAc23B,QAAQ31C,KAAK41C,eAAgB51C,KAAK6c,MAAM/P,OAAOvJ,cACnFvD,KAAKu1C,IAAKv1C,KAAKy1C,gB,OACK,OAFlBm0B,EAAS,SAES,GAAM5pE,KAAKge,cAAc63B,aAAa71C,KAAK41C,eAAgBg0B,I,OAGhE,OAHbC,EAAkB,SAGL,GAAM7pE,KAAKge,cAAc83B,a,OAG1B,OAHZ6zB,EAAa,SAGD,GAAM3pE,KAAKge,cAAcg4B,aAAa4zB,EAAQD,I,OAEhE,OAFMG,EAAY,SAElB,GAAM9pE,KAAKi2C,qBAAqB4zB,EAAiBD,EAAQE,I,cAAzD,S,gCAEA9pE,KAAKiB,WAAWW,MAAM,G,iCAIxB,YAAAq0C,qBAAN,SAA2Bxb,EAA4B97B,EACnDi9B,G,kGAUI,O,uBAPMpb,EAAU,IAAI,EAAA0mF,2BACZvoG,IAAMi9B,EAAO,GAAGhhB,gBACxB4F,EAAQupD,sBAAwBtvC,EAChCja,EAAQ6zC,mBAAqBr0D,KAAKqiG,KAGlCriG,KAAKu6B,YAAcv6B,KAAKihB,WAAWkmF,sBAAsB3mF,GACzD,GAAMxgB,KAAKu6B,a,cAAX,SACAv6B,KAAKghB,qBAAqB0J,UAAU,UAAW,KAAM1qB,KAAKN,YAAYpB,EAAE,0BAEjC,MAAnC0B,KAAK6jG,2BACL7jG,KAAK6jG,6BAEL7jG,KAAK6pC,iBAAiBgB,KAAK,U,+BAG/B7qC,KAAKiB,WAAWW,MAAM,G,gEAnFrB4+D,GAA2B,8X,iCAA3BA,EAA2B,0C,EADxC,CACiD,2BAApC,EAAAA,+B,+DAAAA,EAA2B,E,KADvC,EAAA5/D,a,ouBCrBD,IAEA,2B,+CAEA,OAF+C,OAE/C,EAFA,CAFA,OAE+C6/D,sCAAlC,EAAAymC,6B,0GCFb,MAII,SAAYt3E,EAAgB9J,GACxB9lB,KAAK4vB,OAASA,EACd5vB,KAAK8lB,MAAQA,GANR,EAAA66C,sB,kHCAb,MAII,SAAY/wC,EAAgB9J,GACxB9lB,KAAK4vB,OAASA,EACd5vB,KAAK8lB,MAAQA,GANR,EAAA+6C,8B,0+CCAb,WAQA,GAPA,MAEA,OACA,KACA,KACA,KAEA,S,GAKA,O,qDAEA,aAeI,WAAsBh1B,EAAsCnsC,EAC9Cy9B,EAA0C6sB,EAC1ChpC,EAAsD/f,GAF9C,KAAA4qC,eAAsC,KAAAnsC,cAC9C,KAAAy9B,iBAA0C,KAAA6sB,gBAC1C,KAAAhpC,uBAAsD,KAAA/f,aAfpE,KAAAK,SAAU,EACV,KAAA62C,QAAS,EAIT,KAAAivD,YAAsB,EAWlB,IAAMxlD,EAAe5hD,KAAK6rC,aAAapa,wBACvCzxB,KAAKgyB,MAAQ4vB,EAAa,GAC1B5hD,KAAK2xB,IAAMiwB,EAAa,G,OAGtB,YAAAyhB,aAAN,W,kGACI,GAAIrjE,KAAKqnG,4BAA8BrnG,KAAKonG,WACxC,UAMJ,GAHApnG,KAAKsB,SAAU,EAGF,OADP2gD,EAAQjiD,KAAKsnG,cAEf,U,iBAMA,O,sBAFAtnG,KAAKunG,cAAgBvnG,KAAKwnG,OAAOvlD,EAAM,GAAIA,EAAM,IAEjD,GAAMjiD,KAAKunG,e,cAAX,S,+BAEAvnG,KAAKiB,WAAWW,MAAM,sBAAsB,G,oBAGhD5B,KAAKunG,cAAgB,KACrBvnG,KAAKsB,SAAU,E,YAGb,YAAAugD,WAAN,SAAiBC,G,wGACb,GAAI9hD,KAAKqnG,2BACL,UAIJ,GAAa,OADPplD,EAAQjiD,KAAKsnG,cAEf,UAGJtnG,KAAKsB,SAAU,EACX4kC,EAAsB,G,iBAQP,O,sBANTnK,EAAU/7B,KAAKynG,mBAAmBxlD,EAAM,GAAIA,EAAM,GAAIH,EAAgB,KAAO9hD,KAAKmiD,mBACpFL,EACA9hD,KAAK+hD,eAAiBhmB,EAEtB/7B,KAAKgiD,YAAcjmB,EAER,GAAMA,G,cAAfl/B,EAAS,SACfmD,KAAKmiD,kBAAoBtlD,EAAOslD,kBAChCjc,EAASrpC,EAAOqpC,O,+BAEhBlmC,KAAKiB,WAAWW,MAAM,sBAAsB,G,oBAG3CkgD,GAAgC,MAAf9hD,KAAKkmC,QAAkBlmC,KAAKkmC,OAAOlqC,OAAS,EAC9DgE,KAAKkmC,OAASlmC,KAAKkmC,OAAO1b,OAAO0b,GAEjClmC,KAAKkmC,OAASA,EAGlBlmC,KAAKonG,YAAa,EAClBpnG,KAAKsB,SAAU,EACftB,KAAKgiD,YAAc,KACnBhiD,KAAK+hD,eAAiB,K,YAMV,YAAA0lD,mBAAhB,SAAmCzkC,EAAmBC,EAAiB9gB,G,yGAClD,SAAMniD,KAAK+iE,cAAcC,EAAWC,EAAS9gB,I,OAE/C,OAFT5gD,EAAW,SAEF,GAAM4Z,QAAQK,IAAIja,EAAS/F,KAAKuM,KAAI,SAAM7J,GAAC,qC,4DAEpC,OADZ0xB,EAA2B,MAAlB1xB,EAAEokD,aAAuBpkD,EAAE0xB,OAAS1xB,EAAEokD,aACnC,GAAMtiD,KAAK6rC,aAAatZ,aAAar0B,I,OAEvD,OAFMqkD,EAAY,SACZ3lC,EAAO5c,KAAKmjE,YAAYjlE,EAAG0xB,GAC1B,CAAP,EAAO,IAAI,EAAA83E,UAAU,CACjBl2F,QAAS+wC,EAAU/wC,QACnBshB,qBAAsByvB,EAAUzvB,qBAChCC,QAASwvB,EAAUxvB,QACnBC,QAASuvB,EAAUvvB,QACnBpD,OAAQA,EACR4yB,SAAkB,MAAR5lC,EAAeA,EAAKhf,KAAOoC,KAAKN,YAAYpB,EAAE,WACxDmkD,UAAmB,MAAR7lC,EAAeA,EAAKC,MAAQ,GACvC+c,KAAM17B,EAAE07B,KACR8oB,GAAIxkD,EAAEykD,UACNzgD,KAAMhE,EAAEgE,oB,OAGhB,OAjBMgkC,EAAS,SAiBR,CAAP,EAAO,CAAEic,kBAAmB5gD,EAAS4gD,kBAAmBjc,OAAQA,YAG1D,YAAAohE,WAAV,WACI,IAAIrlD,EAAkB,KACtB,IACIA,EAAQjiD,KAAK6rC,aAAa3Z,kBAAkBlyB,KAAKgyB,MAAOhyB,KAAK2xB,KAC/D,MAAOnwB,GAGL,OAFAxB,KAAKm9B,eAAe0E,SAAS,QAAS7hC,KAAKN,YAAYpB,EAAE,iBACrD0B,KAAKN,YAAYpB,EAAE,qBAChB,KAEX,OAAO2jD,GAGD,YAAAolD,yBAAV,WACI,OAA8B,MAAvBrnG,KAAK+hD,gBAA8C,MAApB/hD,KAAKgiD,aAA6C,MAAtBhiD,KAAKunG,eAG7D,YAAAC,OAAd,SAAqBx1E,EAAeL,G,wGAC5BwwB,EAAoBniD,KAAKmiD,kBACzBjc,EAAS,GAAG1b,OAAOxqB,KAAKkmC,Q,wBAEA,MAArBic,EAAyB,MACb,GAAMniD,KAAKynG,mBAAmBz1E,EAAOL,EAAKwwB,I,cAAnDtlD,EAAS,SACfslD,EAAoBtlD,EAAOslD,kBAC3Bjc,EAASA,EAAO1b,OAAO3tB,EAAOqpC,Q,aAGrB,SAAMlmC,KAAKgqD,cAAc29C,eAAezhE,I,cAA/C1qC,EAAO,SACP+pC,EAAWvlC,KAAKgqD,cAAc8sB,YAAY92E,KAAK4iE,eAAgB,OACrE5iE,KAAKghB,qBAAqBmxD,SAASjzE,OAAQ1D,EAAM,CAAE0G,KAAM,cAAgBqjC,G,6CA1I3D+9B,GAAmB,kO,iCAAnBA,I,EADtB,GACsB,EAAAA,uB,+DAAAA,EAAmB,E,KADxC,EAAA1iE,a,yQCbD,MAYI,SAAYpF,GACRwE,KAAKwR,QAAUhW,EAAKgW,QACpBxR,KAAK8yB,qBAAuBt3B,EAAKs3B,qBACjC9yB,KAAK+yB,QAAUv3B,EAAKu3B,QACpB/yB,KAAKgzB,QAAUx3B,EAAKw3B,QACpBhzB,KAAK4vB,OAASp0B,EAAKo0B,OACnB5vB,KAAKwiD,SAAWhnD,EAAKgnD,SACrBxiD,KAAKyiD,UAAYjnD,EAAKinD,UACtBziD,KAAK45B,KAAOp+B,EAAKo+B,KACjB55B,KAAK0iD,GAAKlnD,EAAKknD,GACf1iD,KAAKkC,KAAO1G,EAAK0G,MAtBZ,EAAAwlG,a,oGCAb,iBAII,KAAAt0F,YAA0C,IAJjC,EAAA6wD,gB,sHCFb,mBAAa,EAAAwB,kC,0+CCAb,WAgBA,GAXA,MAEA,OACA,KACA,MACA,KACA,KACA,KACA,MACA,MAEA,OAgBA,GAdA,MAEA,OACA,MAWA,OAEA,S,2HAMA,aAmDI,WAAsBxkD,EAAgCutB,EACxC9uC,EAAkCshB,EAClCmc,EAA0Cnf,EAC5Cw5B,EAA0Cx2C,EACxC4oC,EAAoC3oC,EACtCsjE,EAAkC/iB,GALxB,KAAAvgC,aAAgC,KAAAutB,gBACxC,KAAA9uC,cAAkC,KAAAshB,uBAClC,KAAAmc,iBAA0C,KAAAnf,gBAC5C,KAAAw5B,iBAA0C,KAAAx2C,oBACxC,KAAA4oC,eAAoC,KAAA3oC,aACtC,KAAAsjE,aAAkC,KAAA/iB,eApB9C,KAAAlgD,SAAU,EACV,KAAAsmG,UAAY,IAAI3jG,IAEhB,KAAAu8C,MAAoB,GACpB,KAAAqnD,WAAyB,GAIf,KAAAxnD,SAAuB,GAEvB,KAAAnR,WAAY,EACZ,KAAAH,SAAW,IAEb,KAAA+4D,gBAAkB,E,OA5C1B,sBAAI,uBAAQ,C,IAAZ,WACI,OAAwB,MAAjB9nG,KAAKqgD,SAAmBrgD,KAAKqgD,SAASrkD,OAAS,G,gCAG1D,sBAAI,2BAAY,C,IAAhB,WACI,OAAOgE,KAAK4nG,UAAUhiG,IAAI5F,KAAKykE,eAAeiC,SAC1C1mE,KAAK4nG,UAAU3pG,IAAI+B,KAAKykE,eAAeiC,SAAS1qE,OAAS,G,gCAGjE,sBAAI,4BAAa,C,IAAjB,WACI,OAAOgE,KAAK4nG,UAAUhiG,IAAI5F,KAAKykE,eAAemE,UAC1C5oE,KAAK4nG,UAAU3pG,IAAI+B,KAAKykE,eAAemE,UAAU5sE,OAAS,G,gCAGlE,sBAAI,6BAAc,C,IAAlB,WACI,OAAOgE,KAAK4nG,UAAUhiG,IAAI5F,KAAKykE,eAAenxB,WAC1CtzC,KAAK4nG,UAAU3pG,IAAI+B,KAAKykE,eAAenxB,WAAWt3C,OAAS,G,gCAGnE,sBAAI,+BAAgB,C,IAApB,WACI,OAAwB,MAAjBgE,KAAKqgD,UAAsC,MAAlBrgD,KAAK4nG,WAAqB5nG,KAAKqgD,SAASrkD,OAAS,GAC7EgE,KAAK+nG,eAAiB,GAAK/nG,KAAK+nG,eAAiB,GAAK/nG,KAAKgoG,cAAgB,G,gCAGnF,sBAAI,mCAAoB,C,IAAxB,WACI,OAAOhoG,KAAKgoG,cAAgB,G,gCAkC1B,YAAAjpF,KAAN,W,6GACqB,SAAM/e,KAAKmlE,Y,OAE5B,IAFM5jE,EAAW,SACjBvB,KAAK4nG,UAAU3f,QACV,EAAL,EAAqB,IAAA1/E,MAAMoG,YAAY3O,KAAKykE,gBAAvB,eAAhB,OACDzkE,KAAK4nG,UAAUliG,IAAI,EAAQ,I,OAG/B1F,KAAKqgD,SAA4B,MAAjB9+C,EAAS/F,MAAgB+F,EAAS/F,KAAKQ,OAAS,EAAIuF,EAAS/F,KAAO,GACpFwE,KAAKqgD,SAAS/H,KAAK,EAAA/vC,MAAMwF,gBAAgB/N,KAAKN,YAAa,UAC3DM,KAAKqgD,SAASzyC,SAAQ,SAAAqE,GACb,EAAK21F,UAAUhiG,IAAIqM,EAAE0T,QAGtB,EAAKiiF,UAAU3pG,IAAIgU,EAAE0T,QAAQrpB,KAAK2V,GAFlC,EAAK21F,UAAUliG,IAAIuM,EAAE0T,OAAQ,CAAC1T,OAKtCjS,KAAK8O,OAAO9O,KAAK2lB,QACjB3lB,KAAKsB,SAAU,E,YAGnB,YAAAwN,OAAA,SAAO6W,GACH3lB,KAAK2lB,OAASA,EACK,MAAf3lB,KAAK2lB,OACL3lB,KAAKwgD,MAAQxgD,KAAK4nG,UAAU3pG,IAAI+B,KAAK2lB,QAErC3lB,KAAKwgD,MAAQxgD,KAAKqgD,SAGtBrgD,KAAKqvC,WAAU,GACfrvC,KAAK+vC,eAGT,YAAAT,SAAA,WACI,GAAKtvC,KAAKwgD,SAASxgD,KAAKwgD,MAAMxkD,QAAUgE,KAAK+uC,UAA7C,CAGA,IAAMQ,EAAcvvC,KAAK6nG,WAAW7rG,OAChCwzC,EAAYxvC,KAAK+uC,SACD,IAAhBQ,GAAqBvvC,KAAK8nG,gBAAkB9nG,KAAK+uC,WACjDS,EAAYxvC,KAAK8nG,iBAEjB9nG,KAAKwgD,MAAMxkD,OAASuzC,IACpBvvC,KAAK6nG,WAAa7nG,KAAK6nG,WAAWr9E,OAAOxqB,KAAKwgD,MAAMphD,MAAMmwC,EAAaA,EAAcC,KAEzFxvC,KAAK8nG,gBAAkB9nG,KAAK6nG,WAAW7rG,OACvCgE,KAAKkvC,UAAYlvC,KAAK6nG,WAAW7rG,OAASgE,KAAK+uC,WAGnD,YAAAk5D,UAAA,SAAUrrF,EAA2Co0B,GAChDp0B,EAAau0B,QAAoB,MAAVH,GAAmBp0B,EAAau0B,QAAUH,GAGtE,YAAA3B,UAAA,SAAU2B,GACFA,GACAhxC,KAAKqvC,WAAU,GAQnB,IALA,IAAMo3B,EAAgBzmE,KAAKukE,WAAW5kE,UAAUK,KAAKwgD,MAAOxgD,KAAKuvB,WAAY,OAAQ,QAAS,MAExF0hB,EAAcD,GAAUy1B,EAAczqE,OA7H5B,QA+HVyqE,EAAczqE,OACXF,EAAI,EAAGA,EAAIm1C,EAAan1C,IAC7BkE,KAAKioG,UAAUxhC,EAAc3qE,GAAIk1C,IAInC,YAAAjB,YAAN,W,0EACI/vC,KAAK6nG,WAAa,GAClB7nG,KAAKsvC,W,WAGT,YAAAssB,OAAA,WACI57D,KAAK2mB,KAAK,OAGR,YAAA9e,OAAN,SAAa+U,G,gGACS,SAAM5c,KAAKghB,qBAAqBqoB,WAC9CrpC,KAAKqnE,qBAAqBzqD,GAAO5c,KAAKwhD,aAAa7hD,UAAUid,GAC7D5c,KAAKN,YAAYpB,EAAE,OAAQ0B,KAAKN,YAAYpB,EAAE,MAAO,Y,OAEzD,IAJkB,SAKd,MAAO,CAAP,GAAO,GAGX0B,KAAKuwC,cAAgBvwC,KAAKolE,WAAWxoD,EAAKhd,I,iBAEtC,O,sBAAA,GAAMI,KAAKuwC,e,cAAX,SACAvwC,KAAKm9B,eAAe0E,SAAS,UAAW,KAAM7hC,KAAKN,YAAYpB,EAAE,gBAAiB0B,KAAKwhD,aAAa7hD,UAAUid,KAC9G5c,KAAKimE,WAAWrpD,G,+BAEhB5c,KAAKgB,kBAAkBc,UAAU,G,oBAErC9B,KAAKuwC,cAAgB,K,YAGnB,YAAAy8C,SAAN,SAAepwE,G,gGACX,GAA0B,MAAtB5c,KAAKuwC,cACL,UAGJvwC,KAAKuwC,cAAgBvwC,KAAKslE,aAAa1oD,EAAKhd,I,iBAExC,O,sBAAA,GAAMI,KAAKuwC,e,cAAX,SACAvwC,KAAKm9B,eAAe0E,SAAS,UAAW,KAAM7hC,KAAKN,YAAYpB,EAAE,mBAAoB0B,KAAKwhD,aAAa7hD,UAAUid,K,+BAEjH5c,KAAKgB,kBAAkBc,UAAU,G,oBAErC9B,KAAKuwC,cAAgB,K,YAGnB,YAAA48C,QAAN,SAAcvwE,G,qHAwBV,GAdM4oD,EAAc,SAAOxwB,GAAqB,qC,wDAGxC,O,uBADAh1C,KAAKuwC,cAAgBvwC,KAAKwlE,YAAY5oD,EAAMo4B,GAC5C,GAAMh1C,KAAKuwC,e,cAAX,SAZR,SAAoBt1B,GAChB2B,EAAK+I,OAAS1K,EAAKwpD,eAAenxB,UAClC,IAAM40D,EAAWjtF,EAAK2sF,UAAU3pG,IAAIgd,EAAKwpD,eAAemE,UAAU37D,QAAQ2P,GACtEsrF,GAAY,IACZjtF,EAAK2sF,UAAU3pG,IAAIgd,EAAKwpD,eAAemE,UAAU1rE,OAAOgrG,EAAU,GAClEjtF,EAAK2sF,UAAU3pG,IAAIgd,EAAKwpD,eAAenxB,WAAWh3C,KAAKsgB,IAQvDwwE,CAAWptF,MACXA,KAAKm9B,eAAe0E,SAAS,UAAW,KAAM7hC,KAAKN,YAAYpB,EAAE,mBAAoB0B,KAAKwhD,aAAa7hD,UAAUid,K,aAGjH,M,WADA5c,KAAKgB,kBAAkBc,UAAU,GAC3B,E,cAEN9B,KAAKuwC,cAAgB,K,6BAIH,MAAtBvwC,KAAKuwC,cACL,U,iBAI0B,O,wBAAA,GAAMvwC,KAAKihB,WAAWuhE,iBAAiB5lE,EAAKgT,S,OAGlD,OAHd8yD,EAAoB,SACpB,EAAY,EAAAn6E,MAAMY,eAAeu5E,EAAkB1tC,WAErC,GAAMh1C,KAAKw3C,eAAev5C,IAAa,EAAAuZ,iBAAiBkB,0B,cACzD,OADb20E,EAAc,WACQA,EAAxB,MACgB,GAAMrtF,KAAK4pC,aAAanlC,YAAY,EAAAujE,qBAAsBhoE,KAAK2nE,iBAAiB,SAAAr9B,GAC5FA,EAAK1sC,KAAO,EAAK4jD,aAAa7hD,UAAUid,GACxC0tB,EAAK1a,OAAiB,MAARhT,EAAeA,EAAKgT,OAAS,KAC3C0a,EAAK0K,UAAY,EACjB1K,EAAKs9B,gBAAgBthE,WAAU,gD,wDAGvB,O,sBADAgkC,EAAK/P,YAAcirC,EAAY,GAC/B,GAAMl7B,EAAK/P,a,cAAX,SACA,EAAM/1B,Q,+BAENxE,KAAKiB,WAAWW,MAAM,G,4CAIlC,OAdO,EAAS,SAad,GACF,I,OAIoB,O,sBAAA,GAAM5B,KAAKge,cAAc8pD,eAAelrD,EAAKgT,OAAQ,EAAUtlB,S,cAA7Ey9D,EAAc,SACpB/nE,KAAKiB,WAAWm7D,KAAK,uBAAuB2L,EAAYv8D,KAAK,M,+BAE7DxL,KAAKiB,WAAWW,MAAM,G,aAE1B,SAAM4jE,EAAY,I,cAAlB,S,iCAEAxlE,KAAKiB,WAAWW,MAAM,sBAAsB,G,iCAIpD,YAAAkuC,YAAA,WACI,OAAO9vC,KAAKwuC,cAAcwzB,aAAahiE,KAAKuvB,aAGhD,YAAAqgB,SAAA,WACI,IAAMC,EAAY7vC,KAAK8vC,cAIvB,OAHID,GAAa7vC,KAAKkvC,WAClBlvC,KAAK+vC,eAEDF,GAAa7vC,KAAKwgD,OAASxgD,KAAKwgD,MAAMxkD,OAASgE,KAAK+uC,UAGtD,YAAAs4B,qBAAV,SAA+BzqD,GAC3B,OAAO5c,KAAKN,YAAYpB,EAAE,2BAGpB,YAAAioE,gBAAV,WACI,OAAOvmE,KAAKwgD,MAAM1xC,QAAO,SAAAmD,GAAK,OAACA,EAAUk/B,YAGnC,YAAA80B,WAAV,SAAqBrpD,GACjB,IAAIqlD,EAAQjiE,KAAKwgD,MAAMvzC,QAAQ2P,GAC3BqlD,GAAS,IACTjiE,KAAKwgD,MAAMtjD,OAAO+kE,EAAO,GACzBjiE,KAAK+vC,eAEL/vC,KAAK4nG,UAAUhiG,IAAIgX,EAAK+I,UACxBs8C,EAAQjiE,KAAK4nG,UAAU3pG,IAAI2e,EAAK+I,QAAQ1Y,QAAQ2P,KACnC,GACT5c,KAAK4nG,UAAU3pG,IAAI2e,EAAK+I,QAAQzoB,OAAO+kE,EAAO,I,iCA1QxCyF,GAAmB,8b,iCAAnBA,EAAmB,wB,GAAA,K,kBAEC,EAAAx8B,kB,kFAH1C,GACsB,EAAAw8B,uB,+DAAAA,EAAmB,E,KADxC,EAAA9mE,a,0SAG2E+mE,gBAAiB,CAAF,C,KAAtF,EAAA/iC,U,MAAU,kBAAmB,CAAEuG,KAAM,EAAAD,iBAAkBE,QAAQ,S,0HCtCpE,MAGI,SAAYv8B,GACR7O,KAAK6O,KAAOA,GAJP,EAAAi6D,sC,qHCAb,iBACI,KAAAgC,OAAmB,GAGnB,KAAA13D,YAA0C,IAJjC,EAAAy3D,iC,qHCAb,iBAGI,KAAAz3D,YAA0C,IAHjC,EAAAu3D,iC,2HCLb,iBACI,KAAAe,SAAqB,IADZ,EAAAD,uC,iHCEb,mBAAa,EAAAwB,6B,uGCFb,SAAYvpB,GACR,uBACA,uBACA,6CACA,uCACA,uBALJ,CAAY,EAAAA,kBAAA,EAAAA,gBAAe,M,yGCA3B,mBAAa,EAAAK,qB,4GCAb,mBAAa,EAAAgC,wB,6cCCb,IAEA,2B,+CAGA,OAHoC,OAGpC,EAHA,CAFA,OAEoC73B,kCAAvB,EAAA04B,kB,6BCHb,OACe,WAAC,eAAiB,OAAO,0BAA4B,UAAU,gBAAkB,UAAU,2BAA6B,Y,iHCIvI,mBAAa,EAAA3jB,6B,kHCDb,mBAAa,EAAAb,8B,yHCFb,MACI,SAAmByB,EAAiCG,GAAjC,KAAAH,mBAAiC,KAAAG,6BAD3C,EAAAJ,qC,6HCFb,MACI,SAAmB2tC,EAA+Bd,GAA/B,KAAAc,iBAA+B,KAAAd,qBADzC,EAAAe,yC,sGCAb,mBAAa,EAAAnqB,kB,wdCAb,IAEA,2B,+CAIA,OAJ+C,OAI/C,EAJA,CAFA,OAE+C/oC,2BAAlC,EAAA2pC,6B,udCFb,IAIA,2B,+CAEA,OAF8C,OAE9C,EAFA,CAJA,OAI8C3pC,2BAAjC,EAAAirB,4B,keCJb,IAEA,2B,+CAGA,OAHyD,OAGzD,EAHA,CAFA,OAEyDjrB,2BAA5C,EAAAo0D,uC,0dCFb,IAEA,2B,+CAGA,OAHiD,OAGjD,EAHA,CAFA,OAEiDp0D,2BAApC,EAAA40D,+B,meCFb,IAEA,2B,+CAEA,OAF0D,OAE1D,EAFA,CAFA,OAE0D50D,2BAA7C,EAAA01D,wC,6dCFb,IAEA,2B,+CAIA,OAJoD,OAIpD,EAJA,CAFA,OAEoD11D,2BAAvC,EAAAs1D,kC,6dCFb,IAEA,2B,+CAOA,OAPoD,OAOpD,EAPA,CAFA,OAEoDt1D,2BAAvC,EAAA22D,kC,4HCAb,mBAAa,EAAAkB,wC,s+CCFb,WAiBA,GAXA,MAEA,MACA,MACA,OACA,KACA,KACA,KACA,MACA,MAEA,QACA,Q,6EAEA,aAkBI,WAAsBn4D,EAAwCte,EAChDshB,EAAsDgpC,EACtDne,EAAoCra,EAAwCpiB,EAC9EnO,EAAgC6pB,EAChCm/B,GAJU,KAAAjsC,gBAAwC,KAAAte,cAChD,KAAAshB,uBAAsD,KAAAgpC,gBACtD,KAAAne,eAAoC,KAAAra,gBAAwC,KAAApiB,MAC9E,KAAAnO,aAAgC,KAAA6pB,0BAChC,KAAAm/B,KApBF,KAAA8iC,QAAU,IAAI,EAAA//D,aAGxB,KAAAm7E,kBAA4B,EAE5B,KAAAC,WAAapoG,KAAKiqD,GAAGgM,MAAM,CACvB9J,OAAQ,CAAC,QACTjhC,OAAQ,CAAC,MAGb,KAAAm9E,cAAgB,CACZ,CAAEzqG,KAAM,QAASS,MAAO,QACxB,CAAET,KAAM,OAAQS,MAAO,OACvB,CAAET,KAAM,oBAAqBS,MAAO,mB,OASlC,YAAAkC,SAAN,W,0FACI,SAAMP,KAAK22E,uB,cAAX,S,YAGE,YAAAA,oBAAN,W,gGAC4B,OAAxB,EAAA32E,KAAwB,GAAMA,KAAKwxB,cAAc0Q,oBAAoB,EAAA5qB,WAAWgxF,6B,cAAhF,EAAKH,iBAAmB,SACpBnoG,KAAKmoG,kBACLnoG,KAAKooG,WAAWt8E,U,YAIxB,sBAAI,8BAAe,C,IAAnB,WACI,MAAuB,mBAAhB9rB,KAAKmsD,Q,gCAGV,YAAA7xB,OAAN,W,sGACI,OAAIt6B,KAAKmoG,kBACLnoG,KAAKghB,qBAAqB0J,UAAU,QAAS,KAAM1qB,KAAKN,YAAYpB,EAAE,sCACtE,KAGoB,GAAM0B,KAAKuoG,iB,OACnC,IADwB,SAEpB,UAGEr9E,EAASlrB,KAAKooG,WAAWnqG,IAAI,UAAUI,M,iBAEzC,O,sBAAA,GAAM2B,KAAK8qB,wBAAwB09E,WAAWt9E,I,cAA9C,S,aAGA,O,WADAlrB,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAAkB,EAAEkT,SACpF,I,OAKa,O,sBADbxR,KAAKu6B,YAAcv6B,KAAK42E,gBACX,GAAM52E,KAAKu6B,a,OAGxB,OAHM/+B,EAAO,SACbwE,KAAKyoG,aAAajtG,GAClBwE,KAAKkqD,QACL,GAAMlqD,KAAK+2E,gB,cAAX,SACA/2E,KAAKooG,WAAWnqG,IAAI,UAAUgiB,SAAS,I,+BAEvCjgB,KAAKiB,WAAWW,MAAM,G,+BAIxB,YAAA2mG,cAAN,W,iGACQvoG,KAAK0oG,gBACE,GAAM1oG,KAAKghB,qBAAqBqoB,WACnC,MAAQrpC,KAAKN,YAAYpB,EAAE,2BAC3B,MAAQ0B,KAAKN,YAAYpB,EAAE,+BAC3B0B,KAAKN,YAAYpB,EAAE,sBAAuB0B,KAAKN,YAAYpB,EAAE,eAC7D0B,KAAKN,YAAYpB,EAAE,UAAW,WAC9B,IANJ,M,cAQA,MAAO,CAAP,EAAO,U,OAAA,SAAM0B,KAAKghB,qBAAqBqoB,WACnCrpC,KAAKN,YAAYpB,EAAE,qBACnB0B,KAAKN,YAAYpB,EAAE,sBAAuB0B,KAAKN,YAAYpB,EAAE,eAC7D0B,KAAKN,YAAYpB,EAAE,UAAW,oBAIhC,YAAA4rD,MAAV,WACIlqD,KAAK+sF,QAAQp/D,QAGP,YAAAipD,cAAV,WACI,OAAO52E,KAAKgqD,cAAc2+C,UAAU3oG,KAAKmsD,SAGnC,YAAA2qB,YAAV,SAAsBhmD,GAClB,IAAI83E,EAAY5oG,KAAKmsD,OASrB,MARoB,mBAAhBnsD,KAAKmsD,SAEDr7B,EADU,MAAVA,EACS,YAEA,aAAeA,EAE5B83E,EAAY,QAET5oG,KAAKgqD,cAAc8sB,YAAYhmD,EAAQ83E,IAGlC,YAAA7xB,aAAhB,W,0FACI,SAAM/2E,KAAK6rC,aAAamB,QAAQ,EAAA7Z,UAAUQ,2B,cAA1C,S,YAGJ,sBAAI,qBAAM,C,IAAV,WACI,OAAO3zB,KAAKooG,WAAWnqG,IAAI,UAAUI,O,gCAGjC,YAAAoqG,aAAR,SAAqBI,GACjB,IAAMtjE,EAAWvlC,KAAK82E,cACtB92E,KAAKghB,qBAAqBmxD,SAASnyE,KAAKoP,IAAKy5F,EAAK,CAAE3mG,KAAM,cAAgBqjC,I,iCApHrE4kB,GAAe,sPAmBuEmxB,QAAM,sH,iCAnB5FnxB,EAAe,8B,EAD5B,GACa,EAAAA,mB,+DAAAA,EAAe,E,KAD3B,EAAAvpD,a,sKAoBkG06E,QAAM,8EAlB3FyR,QAAO,E,KAAhB,EAAAr+D,Y,sGCjBL,iBAQI,WAAYzgB,GAPZ,KAAArO,GAAa,KACb,KAAA4M,IAAc,KACd,KAAAmY,KAAe,KACf,KAAAmzB,SAAmB,KACnB,KAAAvS,SAAmB,KACnB,KAAA5mC,IAA0B,KAGjBsP,IAILjO,KAAKJ,GAAKqO,EAAErO,GACZI,KAAKwM,IAAMyB,EAAEzB,IACbxM,KAAK2kB,KAAO1W,EAAE0W,KACd3kB,KAAK83C,SAAW7pC,EAAE6pC,UAa1B,OAVI,sBAAI,uBAAQ,C,IAAZ,WACI,IACI,GAAiB,MAAb93C,KAAK2kB,KACL,OAAO9a,SAAS7J,KAAK2kB,KAAM,MAEjC,UAGF,OAAO,G,gCAEf,EA7BA,GAAa,EAAAsyD,kB,yGCLb,mBAAa,EAAAxxC,qB,u+CCAb,WAQA,SACA,QACA,SACA,SACA,QACA,SACA,SAkBA,GAhBA,OACA,MACA,MACA,MACA,MACA,KACA,KACA,MACA,MACA,KACA,MACA,MACA,KAIA,OACA,SAGA,SACA,SACA,SACA,SAEA,Q,4GAEA,aA6CI,WAAsB8F,EAAwCC,EAChD9rC,EAAoCshB,EACpCyqB,EAAsChtB,EACtC6e,EAAoCoO,EACpC7B,EAA8CgC,EAC9Cra,EAAwCsY,EAC1C7oC,GANU,KAAAsqC,gBAAwC,KAAAC,gBAChD,KAAA9rC,cAAoC,KAAAshB,uBACpC,KAAAyqB,eAAsC,KAAAhtB,eACtC,KAAA6e,cAAoC,KAAAoO,oBACpC,KAAA7B,mBAA8C,KAAAgC,eAC9C,KAAAra,gBAAwC,KAAAsY,0BAC1C,KAAA7oC,aAjDH,KAAA4sC,WAAqB,EACrB,KAAApnB,SAAmB,KAInB,KAAAxW,eAAyB,KACxB,KAAAs6B,cAAgB,IAAI,EAAAvd,aACpB,KAAAyd,gBAAkB,IAAI,EAAAzd,aACtB,KAAA0d,iBAAmB,IAAI,EAAA1d,aACvB,KAAA87E,YAAc,IAAI,EAAA97E,aAClB,KAAA+7E,kBAAoB,IAAI,EAAA/7E,aACxB,KAAAg8E,cAAgB,IAAI,EAAAh8E,aACpB,KAAAi8E,kBAAoB,IAAI,EAAAj8E,aACxB,KAAAk8E,mBAAqB,IAAI,EAAAl8E,aAEnC,KAAA+f,UAAoB,EAGpB,KAAA35B,YAAgC,GAMhC,KAAA+1D,cAAwB,EACxB,KAAAggC,gBAA0B,EAC1B,KAAAC,cAAwB,EACxB,KAAAp6D,WAAa,EAAA16B,WAMb,KAAAw5B,iBAA0B,GAE1B,KAAAu7D,YAAc,IAAI33E,KAClB,KAAAqc,eAAgB,EAChB,KAAA3mB,UAAoB,EACpB,KAAAkiF,gBAA0B,EAYtBtpG,KAAKupG,YAAc,CACf,CAAE3rG,KAAM8B,EAAYpB,EAAE,aAAcD,MAAO,EAAAiW,WAAWC,OACtD,CAAE3W,KAAM8B,EAAYpB,EAAE,YAAaD,MAAO,EAAAiW,WAAW2K,MACrD,CAAErhB,KAAM8B,EAAYpB,EAAE,gBAAiBD,MAAO,EAAAiW,WAAW4K,UACzD,CAAEthB,KAAM8B,EAAYpB,EAAE,kBAAmBD,MAAO,EAAAiW,WAAWmB,aAE/DzV,KAAKwpG,iBAAmB,CACpB,CAAE5rG,KAAM,MAAQ8B,EAAYpB,EAAE,UAAY,MAAOD,MAAO,MACxD,CAAET,KAAM,OAAQS,MAAO,QACvB,CAAET,KAAM,aAAcS,MAAO,cAC7B,CAAET,KAAM,mBAAoBS,MAAO,QACnC,CAAET,KAAM,WAAYS,MAAO,YAC3B,CAAET,KAAM,cAAeS,MAAO,eAC9B,CAAET,KAAM,MAAOS,MAAO,OACtB,CAAET,KAAM,UAAWS,MAAO,WAC1B,CAAET,KAAM,WAAYS,MAAO,YAC3B,CAAET,KAAM8B,EAAYpB,EAAE,SAAUD,MAAO,UAE3C2B,KAAKypG,oBAAsB,CACvB,CAAE7rG,KAAM,MAAQ8B,EAAYpB,EAAE,UAAY,MAAOD,MAAO,MACxD,CAAET,KAAM,QAAU8B,EAAYpB,EAAE,WAAYD,MAAO,KACnD,CAAET,KAAM,QAAU8B,EAAYpB,EAAE,YAAaD,MAAO,KACpD,CAAET,KAAM,QAAU8B,EAAYpB,EAAE,SAAUD,MAAO,KACjD,CAAET,KAAM,QAAU8B,EAAYpB,EAAE,SAAUD,MAAO,KACjD,CAAET,KAAM,QAAU8B,EAAYpB,EAAE,OAAQD,MAAO,KAC/C,CAAET,KAAM,QAAU8B,EAAYpB,EAAE,QAASD,MAAO,KAChD,CAAET,KAAM,QAAU8B,EAAYpB,EAAE,QAASD,MAAO,KAChD,CAAET,KAAM,QAAU8B,EAAYpB,EAAE,UAAWD,MAAO,KAClD,CAAET,KAAM,QAAU8B,EAAYpB,EAAE,aAAcD,MAAO,KACrD,CAAET,KAAM,QAAU8B,EAAYpB,EAAE,WAAYD,MAAO,MACnD,CAAET,KAAM,QAAU8B,EAAYpB,EAAE,YAAaD,MAAO,MACpD,CAAET,KAAM,QAAU8B,EAAYpB,EAAE,YAAaD,MAAO,OAExD2B,KAAK0pG,qBAAuB,CACxB,CAAE9rG,KAAM,MAAQ8B,EAAYpB,EAAE,UAAY,MAAOD,MAAO,MACxD,CAAET,KAAM8B,EAAYpB,EAAE,MAAOD,MAAOqB,EAAYpB,EAAE,OAClD,CAAEV,KAAM8B,EAAYpB,EAAE,OAAQD,MAAOqB,EAAYpB,EAAE,QACnD,CAAEV,KAAM8B,EAAYpB,EAAE,MAAOD,MAAOqB,EAAYpB,EAAE,OAClD,CAAEV,KAAM8B,EAAYpB,EAAE,MAAOD,MAAOqB,EAAYpB,EAAE,QAEtD0B,KAAK2pG,gBAAkB,CACnB,CAAE/rG,KAAM8B,EAAYpB,EAAE,yBAA0BD,MAAO,MACvD,CAAET,KAAM8B,EAAYpB,EAAE,cAAeD,MAAO,EAAAg5C,aAAauyD,QACzD,CAAEhsG,KAAM8B,EAAYpB,EAAE,QAASD,MAAO,EAAAg5C,aAAamuD,MACnD,CAAE5nG,KAAM8B,EAAYpB,EAAE,cAAeD,MAAO,EAAAg5C,aAAawyD,YACzD,CAAEjsG,KAAM8B,EAAYpB,EAAE,SAAUD,MAAO,EAAAg5C,aAAaC,mBACpD,CAAE15C,KAAM8B,EAAYpB,EAAE,SAAUD,MAAO,EAAAg5C,aAAayyD,OACpD,CAAElsG,KAAM8B,EAAYpB,EAAE,SAAUD,MAAO,EAAAg5C,aAAa0yD,QAExD/pG,KAAKgqG,0BAA4B,CAC7B,CAAEpsG,KAAM8B,EAAYpB,EAAE,gCAAiCD,MAAO,MAC9D,CAAET,KAAM8B,EAAYpB,EAAE,yBAA0BD,OAAO,GACvD,CAAET,KAAM8B,EAAYpB,EAAE,wBAAyBD,OAAO,I,OAIxD,YAAAkC,SAAN,W,0FACI,SAAMP,KAAKsI,Q,cAAX,S,YAGE,YAAAA,KAAN,W,2GACQ,SAAMtI,KAAKwxB,cAAc0Q,oBAAoB,EAAA5qB,WAAWk1C,oB,cAAxD,UACAxsD,KAAK+tC,eAAgB,E,OADrB,M,OAGgB,SAAM/tC,KAAKs9B,YAAY+W,Y,OAAjC41D,EAAU,SAChBjqG,KAAK8tC,iBAAiBxxC,KAAK,CAAEsB,KAAMqsG,EAAS5rG,MAAO,O,iBAG1C,SAAM2B,KAAKs9B,YAAY8a,uB,OAUR,OAVf,SACRE,KAAK,EAAA/vC,MAAMwF,gBAAgB/N,KAAKN,YAAa,SAASkO,SAAQ,SAAA9P,GAC3DA,EAAEiiB,SAAWjiB,EAAE6nB,SAAW,EAAA4L,2BAA2B+hB,WACrD,EAAKxF,iBAAiBxxC,KAAK,CAAEsB,KAAME,EAAEF,KAAMS,MAAOP,EAAE8B,QAGvDI,KAAK+tC,gBACN/tC,KAAKiQ,eAAiBjQ,KAAK8tC,iBAAiB,GAAGzvC,OAGnD,EAAA2B,KAA4B,GAAMA,KAAK8qD,mB,OAEjB,OAFtB,EAAK0xB,qBAAuB,SAE5B,EAAAx8E,KAAsB,GAAMA,KAAK8pC,wBAAwB/pB,W,cAAzD,EAAKupF,eAAiB,S,YAGpB,YAAAvqF,KAAN,W,6GAcmC,OAb/B/e,KAAK+sC,SAA4B,MAAjB/sC,KAAKk3B,SACjBl3B,KAAK+sC,UACL/sC,KAAK+sC,UAAW,EACZ/sC,KAAK6tC,WACL7tC,KAAK6tC,WAAY,EACjB7tC,KAAKM,MAAQN,KAAKN,YAAYpB,EAAE,YAEhC0B,KAAKM,MAAQN,KAAKN,YAAYpB,EAAE,aAGpC0B,KAAKM,MAAQN,KAAKN,YAAYpB,EAAE,WAGL,GAAM0B,KAAKye,aAAaxgB,IAAS,sB,OAKhE,OAJyB,OADnBisG,EAAyB,YAE3BlqG,KAAK0S,OAASw3F,EAAkBx3F,OAChC1S,KAAKinB,cAAgBijF,EAAkBjjF,eAE3C,GAAMjnB,KAAKye,aAAa5W,OAAO,sB,cAA/B,SAEmB,MAAf7H,KAAK0S,OAAL,MACI1S,KAAK+sC,SACU,GAAM/sC,KAAK+qD,cAD1B,M,OAEc,OADRr4C,EAAS,SACf,EAAA1S,KAAc,GAAM0S,EAAO4I,W,cAA3B,EAAK5I,OAAS,SAGV1S,KAAK6tC,YACL7tC,KAAK0S,OAAO9U,MAAQ,MAAQoC,KAAKN,YAAYpB,EAAE,SAEb,MAA9B0B,KAAK0S,OAAOzC,gBAA2BjQ,KAAK+tC,gBAC5C/tC,KAAK0S,OAAOzC,eAAiBjQ,KAAKiQ,iB,aAI1CjQ,KAAK0S,OAAS,IAAI,EAAAsB,WAClBhU,KAAK0S,OAAOzC,eAAwC,MAAvBjQ,KAAKiQ,eAAyB,KAAOjQ,KAAKiQ,eACvEjQ,KAAK0S,OAAO+T,SAAWzmB,KAAKymB,SAC5BzmB,KAAK0S,OAAOxQ,KAAoB,MAAblC,KAAKkC,KAAe,EAAAoS,WAAWC,MAAQvU,KAAKkC,KAC/DlC,KAAK0S,OAAO0B,MAAQ,IAAI,EAAAC,UACxBrU,KAAK0S,OAAO0B,MAAMoB,KAAO,CAAC,IAAI,EAAAzD,cAC9B/R,KAAK0S,OAAOI,KAAO,IAAI,EAAA6J,SACvB3c,KAAK0S,OAAOmU,SAAW,IAAI,EAAAC,aAC3B9mB,KAAK0S,OAAOgD,WAAa,IAAI,EAAAC,eAC7B3V,KAAK0S,OAAOgD,WAAWxT,KAAO,EAAA0T,eAAeC,QAC7C7V,KAAK0S,OAAO0U,SAAW,EAAAC,mBAAmBC,K,wBAI/B,MAAftnB,KAAK0S,QAAoB1S,KAAK+sC,UAAiC,MAArBm9D,IAA6BlqG,KAAK6tC,UAA5E,MACA,GAAM7tC,KAAKmqG,uB,OAAX,SAC0B,MAAtBnqG,KAAKinB,eAAyBjnB,KAAKinB,cAAcjrB,OAAS,GAAKgE,KAAKoT,YAAYpX,OAAS,GACzFgE,KAAKoT,YAAYxF,SAAQ,SAAAlQ,GACjB,EAAKupB,cAAcha,QAAQvP,EAAEkC,KAAO,IACnClC,EAAUyzC,SAAU,M,iBAMtB,OAAf,EAAAnxC,KAAe,GAAMA,KAAKwrC,cAAckf,mB,cAAxC,EAAKr3C,QAAU,SAEXrT,KAAK+sC,UAAY/sC,KAAKoqG,mBAAqBpqG,KAAKk3B,UAChDl3B,KAAK6rC,aAAamB,QAAQ,EAAA7Z,UAAUmB,oBAAqBt0B,KAAKk3B,UAElEl3B,KAAKoqG,iBAAmBpqG,KAAKk3B,SAC7Bl3B,KAAKonB,SAAWpnB,KAAK0S,OAAO0U,WAAa,EAAAC,mBAAmBC,K,YAG1D,YAAAgT,OAAN,W,kGACI,OAAIt6B,KAAK0S,OAAO+9B,UACL,CAAP,EAAOzwC,KAAK2wC,WAGQ,MAApB3wC,KAAK0S,OAAO9U,MAAqC,KAArBoC,KAAK0S,OAAO9U,MACxCoC,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAC5D0B,KAAKN,YAAYpB,EAAE,iBAChB,CAAP,GAAO,IAGL0B,KAAK+sC,WAAY/sC,KAAK6tC,WAAe7tC,KAAK+tC,eAA+C,MAA9B/tC,KAAK0S,OAAOzC,gBAMvEjQ,KAAK+sC,WAAY/sC,KAAK6tC,WAAc7tC,KAAK0S,OAAOxQ,OAAS,EAAAoS,WAAWC,OAC5C,MAA1BvU,KAAK0S,OAAO0B,MAAMoB,MAAkD,IAAlCxV,KAAK0S,OAAO0B,MAAMoB,KAAKxZ,QACvB,MAAjCgE,KAAK0S,OAAO0B,MAAMoB,KAAK,GAAG3D,KAAiD,KAAlC7R,KAAK0S,OAAO0B,MAAMoB,KAAK,GAAG3D,MACpE7R,KAAK0S,OAAO0B,MAAMoB,KAAO,MAIvBxV,KAAK+sC,WAAY/sC,KAAK6tC,WAA4C,MAA9B7tC,KAAK0S,OAAOzC,iBAClDjQ,KAAK0S,OAAOuU,cAAoC,MAApBjnB,KAAKoT,YAAsB,GACnDpT,KAAKoT,YAAYtE,QAAO,SAAApR,GAAK,OAACA,EAAUyzC,WAASppC,KAAI,SAAArK,GAAK,OAAAA,EAAEkC,OAIhEI,KAAK6tC,YACL7tC,KAAK0S,OAAO9S,GAAK,MAGN,GAAMI,KAAKirD,mBAtBtBjrD,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAC5D0B,KAAKN,YAAYpB,EAAE,iCAChB,CAAP,GAAO,I,OAoBLoU,EAAS,S,iBAGX,O,sBADA1S,KAAKu6B,YAAcv6B,KAAKkrD,WAAWx4C,GACnC,GAAM1S,KAAKu6B,a,OAMX,OANA,SACAv6B,KAAK0S,OAAO9S,GAAK8S,EAAO9S,GACxBI,KAAKghB,qBAAqB0J,UAAU,UAAW,KAC3C1qB,KAAKN,YAAYpB,EAAE0B,KAAK+sC,WAAa/sC,KAAK6tC,UAAY,aAAe,cACzE7tC,KAAKuqC,cAAc5c,KAAK3tB,KAAK0S,QAC7B1S,KAAK6pC,iBAAiBgB,KAAK7qC,KAAK+sC,WAAa/sC,KAAK6tC,UAAY,eAAiB,eACxE,CAAP,GAAO,G,yBAEP7tC,KAAKiB,WAAWW,MAAM,G,aAG1B,MAAO,CAAP,GAAO,WAGX,YAAAyoG,OAAA,WACQrqG,KAAK0S,OAAOxQ,OAAS,EAAAoS,WAAWC,QAIN,MAA1BvU,KAAK0S,OAAO0B,MAAMoB,OAClBxV,KAAK0S,OAAO0B,MAAMoB,KAAO,IAG7BxV,KAAK0S,OAAO0B,MAAMoB,KAAKlZ,KAAK,IAAI,EAAAyV,gBAGpC,YAAAu4F,UAAA,SAAUz4F,GACN,GAAI7R,KAAK0S,OAAOxQ,OAAS,EAAAoS,WAAWC,OAAmC,MAA1BvU,KAAK0S,OAAO0B,MAAMoB,KAA/D,CAIA,IAAM1Z,EAAIkE,KAAK0S,OAAO0B,MAAMoB,KAAKvI,QAAQ4E,GACrC/V,GAAK,GACLkE,KAAK0S,OAAO0B,MAAMoB,KAAKtY,OAAOpB,EAAG,KAIzC,YAAAyuG,gBAAA,SAAgBtoC,EAAez6C,GAC3B,OAAOy6C,GAGX,YAAA/gC,OAAA,WACIlhC,KAAK8oG,YAAYn7E,KAAK3tB,KAAK0S,SAG/B,YAAAqU,YAAA,WACI/mB,KAAK+oG,kBAAkBp7E,KAAK3tB,KAAK0S,SAGrC,YAAA09B,MAAA,WACIpwC,KAAKgpG,cAAcr7E,KAAK3tB,KAAK0S,SAGjC,YAAA83F,gBAAA,WACIxqG,KAAKipG,kBAAkBt7E,KAAK3tB,KAAK0S,SAG/B,YAAA49B,OAAN,W,gGACsB,SAAMtwC,KAAKghB,qBAAqBqoB,WAC9CrpC,KAAKN,YAAYpB,EAAE0B,KAAK0S,OAAO+9B,UAAY,oCAAsC,0BACjFzwC,KAAKN,YAAYpB,EAAE,cAAe0B,KAAKN,YAAYpB,EAAE,OAAQ0B,KAAKN,YAAYpB,EAAE,MAAO,Y,OAC3F,IAHkB,SAId,MAAO,CAAP,GAAO,G,iBAKP,O,sBADA0B,KAAK2iE,cAAgB3iE,KAAK0wC,eAC1B,GAAM1wC,KAAK2iE,e,cAAX,SACA3iE,KAAKghB,qBAAqB0J,UAAU,UAAW,KAC3C1qB,KAAKN,YAAYpB,EAAE0B,KAAK0S,OAAO+9B,UAAY,yBAA2B,gBAC1EzwC,KAAKyqC,gBAAgB9c,KAAK3tB,KAAK0S,QAC/B1S,KAAK6pC,iBAAiBgB,KAAK7qC,KAAK0S,OAAO+9B,UAAY,2BAA6B,iB,+BAEhFzwC,KAAKiB,WAAWW,MAAM,G,aAG1B,MAAO,CAAP,GAAO,WAGL,YAAA+uC,QAAN,W,gGACI,OAAK3wC,KAAK0S,OAAO+9B,UAIC,GAAMzwC,KAAKghB,qBAAqBqoB,WAC9CrpC,KAAKN,YAAYpB,EAAE,2BAA4B0B,KAAKN,YAAYpB,EAAE,eAClE0B,KAAKN,YAAYpB,EAAE,OAAQ0B,KAAKN,YAAYpB,EAAE,MAAO,YAL9C,CAAP,GAAO,G,OAMX,IAHkB,SAId,MAAO,CAAP,GAAO,G,iBAKP,O,sBADA0B,KAAKyqG,eAAiBzqG,KAAK0qG,gBAC3B,GAAM1qG,KAAKyqG,gB,cAAX,SACAzqG,KAAKghB,qBAAqB0J,UAAU,UAAW,KAAM1qB,KAAKN,YAAYpB,EAAE,iBACxE0B,KAAK0qC,iBAAiB/c,KAAK3tB,KAAK0S,QAChC1S,KAAK6pC,iBAAiBgB,KAAK,kB,+BAE3B7qC,KAAKiB,WAAWW,MAAM,G,aAG1B,MAAO,CAAP,GAAO,WAGL,YAAAqrC,iBAAN,W,iGAC6B,MAArBjtC,KAAK0S,OAAO0B,OAA+C,MAA9BpU,KAAK0S,OAAO0B,MAAMmB,UAAoBvV,KAAK0S,OAAO0B,MAAMmB,SAASvZ,OAC5E,GAAMgE,KAAKghB,qBAAqBqoB,WAC9CrpC,KAAKN,YAAYpB,EAAE,iCAAkC0B,KAAKN,YAAYpB,EAAE,qBACxE0B,KAAKN,YAAYpB,EAAE,OAAQ0B,KAAKN,YAAYpB,EAAE,QAHlD,M,OAIA,IAHkB,SAId,MAAO,CAAP,GAAO,G,iBAKf,OADA0B,KAAKkpG,mBAAmBv7E,OACjB,CAAP,GAAO,WAGX,YAAA2tC,eAAA,WACIt7D,KAAKmpE,cAAgBnpE,KAAKmpE,aAC1BjlE,SAASkgC,eAAe,iBAAiBtqB,QACrC9Z,KAAK+sC,UAAY/sC,KAAKmpE,cACtBnpE,KAAK6rC,aAAamB,QAAQ,EAAA7Z,UAAUoB,oCAAqCv0B,KAAKk3B,WAIhF,YAAAyzE,iBAAN,W,0EACI3qG,KAAKmpG,gBAAkBnpG,KAAKmpG,eACxBnpG,KAAKmpG,gBACLnpG,KAAK6rC,aAAamB,QAAQ,EAAA7Z,UAAUy3E,sCAAuC5qG,KAAKk3B,U,WAIxF,YAAA2zE,eAAA,WACI7qG,KAAKopG,cAAgBppG,KAAKopG,aAC1BllG,SAASkgC,eAAe,YAAYtqB,QAChC9Z,KAAK+sC,UAAY/sC,KAAKopG,cACtBppG,KAAK6rC,aAAamB,QAAQ,EAAA7Z,UAAUsB,oCAAqCz0B,KAAKk3B,WAItF,YAAA4zE,iBAAA,SAAiBj5F,GACb,IAAMI,EAAKJ,EACXI,EAAEkP,aAA+B,MAAjBlP,EAAEkP,aAAoC,MAAbtP,EAAInC,SAAyBuC,EAAEkP,aAG5E,YAAA4pF,qBAAA,SAAqBl5F,GACjB,IAAMI,EAAKJ,EACXI,EAAEkP,YAA+B,MAAjBlP,EAAEkP,aAA6BlP,EAAEkP,aAG/C,YAAAgpF,oBAAN,W,8GACqC,MAA7BnqG,KAAKw8E,sBACLx8E,KAAKw8E,qBAAqB5uE,SAAQ,SAAAlQ,GAAK,OAACA,EAAUyzC,SAAU,KAE9B,MAA9BnxC,KAAK0S,OAAOzC,eAAZ,OACAjQ,KAAKoT,YAAcpT,KAAKw8E,qBAAqB1tE,QAAO,SAAApR,GAAK,OAAAA,EAAEuS,iBAAmB,EAAKyC,OAAOzC,kBAC9E,GAAMjQ,KAAKs9B,YAAYoF,gBAAgB1iC,KAAK0S,OAAOzC,kB,cACpD,OADLyoC,EAAM,YAER14C,KAAK0S,OAAOgU,oBAAsBgyB,EAAI9N,S,aAG1C5qC,KAAKoT,YAAc,G,mCAIrB,YAAA43F,cAAN,W,gGACI,OAAiC,MAA7BhrG,KAAKirG,uBAIgB,MAArBjrG,KAAK0S,OAAO0B,OAA+C,MAA9BpU,KAAK0S,OAAO0B,MAAMmB,UAAmD,KAA/BvV,KAAK0S,OAAO0B,MAAMmB,UAHrF,KAOJvV,KAAKirG,qBAAuBjrG,KAAKyrC,aAAa+e,eAAexqD,KAAK0S,OAAO0B,MAAMmB,UAC/D,GAAMvV,KAAKirG,uB,cAArBC,EAAU,SAChBlrG,KAAKirG,qBAAuB,KAExBC,EAAU,EACVlrG,KAAKghB,qBAAqB0J,UAAU,UAAW,KAC3C1qB,KAAKN,YAAYpB,EAAE,kBAAmB4sG,EAAQ3gG,aAElDvK,KAAKghB,qBAAqB0J,UAAU,UAAW,KAAM1qB,KAAKN,YAAYpB,EAAE,iB,YAIhF,YAAA6sG,gBAAA,WACInrG,KAAKonB,UAAYpnB,KAAKonB,SAClBpnB,KAAKonB,SACLpnB,KAAK0S,OAAO0U,SAAW,EAAAC,mBAAmB4H,SAE1CjvB,KAAK0S,OAAO0U,SAAW,EAAAC,mBAAmBC,MAIlC,YAAAwjC,gBAAhB,W,0FAC2B,SAAM9qD,KAAK0rC,kBAAkBgf,mB,OACpD,MAAO,CAAP,EADuB,SACD57C,QAAO,SAAApR,GAAK,OAACA,EAAEyxB,qBAG/B,YAAA47B,WAAV,WACI,OAAO/qD,KAAKurC,cAActtC,IAAI+B,KAAKk3B,WAG7B,YAAA+zB,cAAV,WACI,OAAOjrD,KAAKurC,cAAchK,QAAQvhC,KAAK0S,SAGjC,YAAAw4C,WAAV,SAAqBx4C,GACjB,OAAO1S,KAAKurC,cAAc6/D,eAAe14F,IAGnC,YAAAg+B,aAAV,WACI,OAAO1wC,KAAK0S,OAAO+9B,UAAYzwC,KAAKurC,cAAcgG,iBAAiBvxC,KAAK0S,OAAO9S,IACzEI,KAAKurC,cAAciG,qBAAqBxxC,KAAK0S,OAAO9S,KAGpD,YAAA8qG,cAAV,WACI,OAAO1qG,KAAKurC,cAAcqF,kBAAkB5wC,KAAK0S,OAAO9S,K,iCA3cnDwqC,GAAgB,if,iCAAhBA,EAAgB,6a,EAD7B,GACa,EAAAA,oB,+DAAAA,EAAgB,E,KAD5B,EAAAxpC,a,+UAEYitC,UAAW,CAAF,C,KAAjB,EAAA9sC,QACQ0lB,SAAU,CAAF,C,KAAhB,EAAA1lB,QACQm2B,SAAU,CAAF,C,KAAhB,EAAAn2B,QACQmB,KAAM,CAAF,C,KAAZ,EAAAnB,QACQkmB,cAAe,CAAF,C,KAArB,EAAAlmB,QACQkP,eAAgB,CAAF,C,KAAtB,EAAAlP,QACSwpC,cAAa,E,KAAtB,EAAA7b,SACS+b,gBAAe,E,KAAxB,EAAA/b,SACSgc,iBAAgB,E,KAAzB,EAAAhc,SACSo6E,YAAW,E,KAApB,EAAAp6E,SACSq6E,kBAAiB,E,KAA1B,EAAAr6E,SACSs6E,cAAa,E,KAAtB,EAAAt6E,SACSu6E,kBAAiB,E,KAA1B,EAAAv6E,SACSw6E,mBAAkB,E,KAA3B,EAAAx6E,Y,oHC1DL,WAOA,SASA,GAJA,MACA,KAEA,OACA,QAEA,QACA,SACA,SAEA,Q,sBAEA,aAeI,WAAoBhvB,EAAkCmsC,GAAlC,KAAAnsC,cAAkC,KAAAmsC,eATtD,KAAAw/D,aAA0B,EAAA32F,UAAUC,KAGpC,KAAAiT,mBAA4B,GAE5B,KAAAonB,WAAa,EAAA16B,WACb,KAAAg3F,UAAY,EAAA52F,UACZ,KAAA62F,UAAY,EAAAp4E,UAGRnzB,KAAKwrG,oBAAsB,CACvB,CAAE5tG,KAAM8B,EAAYpB,EAAE,cAAeD,MAAO,EAAAqW,UAAUC,MACtD,CAAE/W,KAAM8B,EAAYpB,EAAE,gBAAiBD,MAAO,EAAAqW,UAAU4kF,QACxD,CAAE17F,KAAM8B,EAAYpB,EAAE,iBAAkBD,MAAO,EAAAqW,UAAU+2F,UAE7DzrG,KAAK0rG,yBAA2B,CAAE9tG,KAAMoC,KAAKN,YAAYpB,EAAE,gBAAiBD,MAAO,EAAAqW,UAAUi3F,Q,OAGjG,YAAAzqG,YAAA,SAAYC,GACsB,MAA1BA,EAAQyqG,iBACR5rG,KAAK6rG,wBAEA1qG,EAAQyqG,eAAeE,aACxB9rG,KAAK+rG,4BAKjB,YAAAC,SAAA,WAC8B,MAAtBhsG,KAAK0S,OAAOyB,SACZnU,KAAK0S,OAAOyB,OAAS,IAGzB,IAAMb,EAAI,IAAI,EAAAuB,UACdvB,EAAEpR,KAAOlC,KAAKqrG,aACd/3F,EAAE+3B,UAAW,EAET/3B,EAAEpR,OAAS,EAAAwS,UAAUi3F,SACrBr4F,EAAE8xB,SAAWplC,KAAK4nB,mBAAmB,GAAGvpB,OAG5C2B,KAAK0S,OAAOyB,OAAO7X,KAAKgX,IAG5B,YAAA24F,YAAA,SAAYr3F,GACR,IAAM9Y,EAAIkE,KAAK0S,OAAOyB,OAAOlH,QAAQ2H,GACjC9Y,GAAK,GACLkE,KAAK0S,OAAOyB,OAAOjX,OAAOpB,EAAG,IAIrC,YAAAowG,iBAAA,SAAiBt3F,GACb,IAAMtB,EAAKsB,EACXtB,EAAEg4B,WAAah4B,EAAEg4B,UACbtrC,KAAK+sC,UAAYz5B,EAAEg4B,WACnBtrC,KAAK6rC,aAAamB,QAAQ,EAAA7Z,UAAUqB,uCAAwCx0B,KAAK0S,OAAO9S,KAIhG,YAAA2qG,gBAAA,SAAgBtoC,EAAez6C,GAC3B,OAAOy6C,GAGX,YAAAkqC,KAAA,SAAK/nG,GACD,EAAAgoG,gBAAgBpsG,KAAK0S,OAAOyB,OAAQ/P,EAAMioG,cAAejoG,EAAMkoG,eAG3D,YAAAT,sBAAR,sBACI,GAAsC,MAAlC7rG,KAAK0S,OAAOkV,mBAAhB,CAIA,IAAM3W,EAAe,GACrBjR,KAAK0S,OAAOkV,mBAAmBha,SAAQ,SAACwO,EAAmBxc,GACvD,OAAAqR,EAAQ3U,KAAK,CAAEsB,KAAM,EAAK8B,YAAYpB,EAAE8d,EAAkB4L,SAAU3pB,MAAOuB,OAC/EI,KAAK4nB,mBAAqB3W,EAAQqnC,KAAK,EAAA/vC,MAAMwF,gBAAgB/N,KAAKN,YAAa,WAG3E,YAAAqsG,wBAAR,sBAC8B,MAAtB/rG,KAAK0S,OAAOyB,QAAgD,IAA9BnU,KAAK0S,OAAOyB,OAAOnY,SAKf,MAAlCgE,KAAK0S,OAAOkV,mBAKhB5nB,KAAK0S,OAAOyB,OACPrF,QAAO,SAAAwE,GAAK,OAAAA,EAAEpR,OAAS,EAAAwS,UAAUi3F,UACjC/9F,SAAQ,SAAA0F,GAAK,OAAAA,EAAE8xB,SAAW,EAAKxd,mBAAmB,GAAGvpB,SANtD2B,KAAK0S,OAAOyB,OAASnU,KAAK0S,OAAOyB,OAAOrF,QAAO,SAAAwE,GAAK,OAAAA,EAAEpR,OAAS,EAAAwS,UAAUi3F,Y,iCA1FxEp0D,GAA4B,yE,iCAA5BA,EAA4B,iH,EADzC,GACa,EAAAA,gC,+DAAAA,EAA4B,E,KADxC,EAAA32C,a,iEAEY8R,OAAQ,CAAF,C,KAAd,EAAA3R,QACQ6qG,eAAgB,CAAF,C,KAAtB,EAAA7qG,QACQgsC,SAAU,CAAF,C,KAAhB,EAAAhsC,W,u+CC5BL,W,GAOA,M,cAIA,aAmBI,WAAsBytC,GAAtB,WAAsB,KAAAA,gBAjBb,KAAA+9D,eAAyB,KACxB,KAAAC,gBAAkB,IAAI,EAAAx/E,aACtB,KAAAy/E,qBAAuB,IAAI,EAAAz/E,aAC3B,KAAA0/E,YAAc,IAAI,EAAA1/E,aAClB,KAAA2/E,mBAAqB,IAAI,EAAA3/E,aAEnC,KAAAmrB,QAAkB,EAClB,KAAA/iC,QAAwB,GAExB,KAAAsiC,kBAA4B,KAC5B,KAAA5oC,OAA0C,KAC1C,KAAA6gC,SAAmB,EAET,KAAAi9D,eAAgB,EAElB,KAAAC,cAAqB,KA6DnB,KAAA18D,cAAiD,SAAAzyC,GAAK,OAAAA,EAAE+yC,YAAc,EAAKd,S,OAzD/E,YAAA5wB,KAAN,SAAWjQ,EAAgD6gC,G,YAAhD,IAAA7gC,MAAA,WAAgD,IAAA6gC,OAAA,G,mFAEvD,OADA3vC,KAAK2vC,QAAUA,IAAW,EAC1B,GAAM3vC,KAAK2wD,YAAY7hD,I,cAAvB,SACA9O,KAAKm4C,QAAS,E,YAGZ,YAAAzI,OAAN,SAAa5gC,EAAgD6gC,G,YAAhD,IAAA7gC,MAAA,WAAgD,IAAA6gC,OAAA,G,mFAGzD,OAFA3vC,KAAKm4C,QAAS,EACdn4C,KAAKoV,QAAU,GACf,GAAMpV,KAAK+e,KAAKjQ,EAAQ6gC,I,cAAxB,S,YAGE,YAAAF,QAAN,W,0FACI,SAAMzvC,KAAK0vC,OAAO1vC,KAAK8O,OAAQ9O,KAAK2vC,U,cAApC,S,YAGE,YAAAghB,YAAN,SAAkB7hD,G,YAAA,IAAAA,MAAA,M,mFAEd,OADA9O,KAAK8O,OAASA,EACd,GAAM9O,KAAK0N,OAAO,O,cAAlB,S,YAGE,YAAAA,OAAN,SAAaid,EAAwBslB,G,YAAxB,IAAAtlB,MAAA,M,qGACT3qB,KAAK4sG,eAAgB,EACK,MAAtB5sG,KAAK6sG,eACLp2D,aAAaz2C,KAAK6sG,eAEP,MAAXliF,EAAA,MACA,GAAM3qB,KAAKgwC,SAASC,I,OACpB,OADA,SACA,I,cAEJjwC,KAAK4sG,eAAgB,EACrB5sG,KAAK6sG,cAAgB9oF,YAAW,gD,kDAC5B,SAAM/jB,KAAKgwC,SAASC,I,cAApB,SACAjwC,KAAK4sG,eAAgB,E,aACtBjiF,G,YAGP,YAAAuf,aAAA,SAAax3B,GACT1S,KAAKwsG,gBAAgB7+E,KAAKjb,IAG9B,YAAAo6F,iBAAA,SAAiBp6F,GACb1S,KAAKysG,qBAAqB9+E,KAAKjb,IAGnC,YAAA4mE,UAAA,WACIt5E,KAAK0sG,YAAY/+E,QAGrB,YAAAo/E,iBAAA,WACI/sG,KAAK2sG,mBAAmBh/E,QAG5B,YAAAmiB,YAAA,WACI,OAAQ9vC,KAAK4sG,eAAiB5sG,KAAKwuC,cAAcwzB,aAAahiE,KAAKuvB,aAKvD,YAAAygB,SAAhB,SAAyBC,G,gGACN,OAAf,EAAAjwC,KAAe,GAAMA,KAAKwuC,cAAc0B,cAAclwC,KAAKuvB,WAAY,CAACvvB,KAAK8O,OAAQ9O,KAAKmwC,eAAgBF,I,cAA1G,EAAK76B,QAAU,S,6CAhFVu8B,GAAgB,uC,iCAAhBA,EAAgB,qM,EAD7B,GACa,EAAAA,oB,+DAAAA,EAAgB,E,KAD5B,EAAA/wC,a,6CAEY2rG,eAAgB,CAAF,C,KAAtB,EAAAxrG,QACSyrG,gBAAe,E,KAAxB,EAAA99E,SACS+9E,qBAAoB,E,KAA7B,EAAA/9E,SACSg+E,YAAW,E,KAApB,EAAAh+E,SACSi+E,mBAAkB,E,KAA3B,EAAAj+E,Y,2+CCjBL,W,GAQA,MACA,MACA,KACA,KACA,K,2CAOA,aAaI,WAAsBgd,EAAgD1qB,EACxDthB,EAAoC6rC,EAAsCtqC,GADlE,KAAAyqC,oBAAgD,KAAA1qB,uBACxD,KAAAthB,cAAoC,KAAA6rC,gBAAsC,KAAAtqC,aAX/E,KAAAs6E,iBAAkB,EACjB,KAAAlC,mBAAqB,IAAI,EAAArsD,aAKnC,KAAA5Z,YAAgC,G,OAO1B,YAAA7S,SAAN,W,0FACI,SAAMP,KAAK+e,Q,cAAX,S,YAGE,YAAAA,KAAN,W,2GACwB,OAApB,EAAA/e,KAAoB,GAAMA,KAAK+qD,c,OAEjB,OAFd,EAAK8uB,aAAe,SACpB75E,KAAKinB,cAAgBjnB,KAAKw7E,wBAC1B,EAAAx7E,KAAc,GAAMA,KAAK65E,aAAav+D,W,OACnB,OADnB,EAAK5I,OAAS,SACd,EAAA1S,KAAmB,GAAMA,KAAK8qD,mB,cAA9B,EAAK13C,YAAc,SAEnBpT,KAAKoT,YAAYxF,SAAQ,SAAAlQ,GAAK,OAACA,EAAUyzC,SAAU,KACzB,MAAtBnxC,KAAKinB,eACLjnB,KAAKoT,YAAYxF,SAAQ,SAAAlQ,GACpBA,EAAUyzC,QAAgC,MAAtB,EAAKlqB,eAAyB,EAAKA,cAAcha,QAAQvP,EAAEkC,KAAO,K,YAK7F,YAAA06B,OAAN,W,kGAII,GAHM0yE,EAAwBhtG,KAAKoT,YAC9BtE,QAAO,SAAApR,GAAK,QAAGA,EAAUyzC,WACzBppC,KAAI,SAAArK,GAAK,OAAAA,EAAEkC,OACXI,KAAKu7E,iBAAoD,IAAjCyxB,EAAsBhxG,OAG/C,OAFAgE,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAC5D0B,KAAKN,YAAYpB,EAAE,wBACvB,IAEJ0B,KAAK65E,aAAa5yD,cAAgB+lF,E,iBAG9B,O,sBADAhtG,KAAKu6B,YAAcv6B,KAAKy7E,kBACxB,GAAMz7E,KAAKu6B,a,cAAX,SACAv6B,KAAKq5E,mBAAmB1rD,OACxB3tB,KAAKghB,qBAAqB0J,UAAU,UAAW,KAAM1qB,KAAKN,YAAYpB,EAAE,e,+BAExE0B,KAAKiB,WAAWW,MAAM,G,+BAIpB,YAAAmpD,WAAV,WACI,OAAO/qD,KAAKurC,cAActtC,IAAI+B,KAAKk3B,WAG7B,YAAAskD,sBAAV,WACI,OAAOx7E,KAAK65E,aAAa5yD,eAGb,YAAA6jC,gBAAhB,W,qGAC2B,SAAM9qD,KAAK0rC,kBAAkBgf,mB,OACpD,MAAO,CAAP,EADuB,SACD57C,QAAO,SAAApR,GAAK,OAACA,EAAEyxB,UAAYzxB,EAAEuS,iBAAmB,EAAKyC,OAAOzC,2BAG5E,YAAAwrE,gBAAV,WACI,OAAOz7E,KAAKurC,cAAc0hE,0BAA0BjtG,KAAK65E,e,iCAnEpDhpB,GAAoB,iM,iCAApBA,EAAoB,mH,EADjC,GACa,EAAAA,wB,+DAAAA,EAAoB,E,KADhC,EAAAjwD,a,+IAEYs2B,SAAU,CAAF,C,KAAhB,EAAAn2B,QACQw6E,gBAAe,E,KAAvB,EAAAx6E,QACSs4E,mBAAkB,E,KAA3B,EAAA3qD,Y,y+CCvBL,WAOA,QAYA,GALA,MACA,MACA,MACA,KAEA,O,sCAEA,aAiCI,WAAsBgd,EAAgDF,EACxDgM,EAA0Cla,GADlC,KAAAoO,oBAAgD,KAAAF,gBACxD,KAAAgM,iBAA0C,KAAAla,cAhC/C,KAAA4vE,aAAc,EACd,KAAAC,iBAAkB,EAClB,KAAAC,eAAgB,EAChB,KAAAC,WAAY,EAEX,KAAAC,aAAe,IAAI,EAAAtgF,aACnB,KAAAugF,mBAAqB,IAAI,EAAAvgF,aACzB,KAAAwgF,eAAiB,IAAI,EAAAxgF,aACrB,KAAAygF,oBAAsB,IAAI,EAAAzgF,aAC1B,KAAA0gF,gBAAkB,IAAI,EAAA1gF,aACtB,KAAA2gF,YAAc,IAAI,EAAA3gF,aAClB,KAAA4gF,aAAe,IAAI,EAAA5gF,aACnB,KAAA6gF,oBAAsB,IAAI,EAAA7gF,aAMpC,KAAAmrB,QAAkB,EAClB,KAAAnJ,WAAa,EAAA16B,WACb,KAAA6jE,aAAuB,EACvB,KAAAwQ,mBAA6B,EAC7B,KAAAvQ,eAAyB,EACzB,KAAAE,aAA2B,KAC3B,KAAAuQ,gBAA0B,EAC1B,KAAAC,iBAA2B,KAC3B,KAAAtQ,qBAA+B,K,OAQzB,YAAAz5D,KAAN,SAAW+uF,G,YAAA,IAAAA,OAAA,G,2FACQ,SAAM9tG,KAAKs9B,YAAYqhB,a,OAEX,OAFrB/uB,EAAS,SACf5vB,KAAKyY,sBAAwB,EAAAjB,iBAAiBiB,sBAAwB,IAAMmX,EACjD,GAAM5vB,KAAKw3C,eAAev5C,IAAc+B,KAAKyY,wB,OAOxE,OAPMs1F,EAAqB,SAEvB/tG,KAAK+tG,mBADiB,MAAtBA,EAC0B,IAAIC,IAEJ,IAAIA,IAAID,GAGtC,GAAM/tG,KAAKupF,e,OACX,OADA,SACA,GAAMvpF,KAAK8qD,mB,cAAX,SAEIgjD,IACA9tG,KAAKm4C,QAAS,G,YAIhB,YAAA2S,gBAAN,SAAsB76C,G,kGAClB,OAAKjQ,KAAKmtG,gBAGU,GAAMntG,KAAK0rC,kBAAkBgf,mBAF7C,I,OAQqB,OANnBt3C,EAAc,SAEhBpT,KAAKoT,YADa,MAAlBnD,EACmBmD,EAAYtE,QAAO,SAAApR,GAAK,OAAAA,EAAEuS,iBAAmBA,KAE7CmD,EAEvB,EAAApT,KAAyB,GAAMA,KAAK0rC,kBAAkBwlB,aAAalxD,KAAKoT,c,cAAxE,EAAK+9C,kBAAoB,S,YAGvB,YAAAo4B,YAAN,W,kGACI,OAAKvpF,KAAKktG,aAGV,EAAAltG,KAAe,GAAMA,KAAKwrC,cAAckf,oBAFpC,I,OAGiB,OADrB,EAAKr3C,QAAU,SACf,EAAArT,KAAqB,GAAMA,KAAKwrC,cAAc0lB,gB,cAA9C,EAAK+8C,cAAgB,S,YAGzB,YAAA5+D,UAAA,WACIrvC,KAAKkuG,kBACLluG,KAAKm4E,aAAc,EACnBn4E,KAAKstG,aAAa3/E,QAGtB,YAAAwgF,gBAAA,WACInuG,KAAKkuG,kBACLluG,KAAK2oF,mBAAoB,EACzB3oF,KAAKutG,mBAAmB5/E,QAG5B,YAAAygF,YAAA,WACIpuG,KAAKkuG,kBACLluG,KAAKo4E,eAAgB,EACrBp4E,KAAKwtG,eAAe7/E,QAGxB,YAAAkqB,WAAA,SAAW31C,GACPlC,KAAKkuG,kBACLluG,KAAKs4E,aAAep2E,EACpBlC,KAAKytG,oBAAoB9/E,KAAKzrB,IAGlC,YAAAmsG,aAAA,SAAap7C,GACTjzD,KAAKkuG,kBACLluG,KAAK6oF,gBAAiB,EACtB7oF,KAAK8oF,iBAAmB71B,EAAOrzD,GAC/BI,KAAK0tG,gBAAgB//E,KAAKslC,IAG9B,YAAA/9C,UAAA,WACIlV,KAAK2tG,YAAYhgF,QAGrB,YAAA67D,WAAA,SAAWv2B,GACPjzD,KAAK4tG,aAAajgF,KAAKslC,IAG3B,YAAAq7C,iBAAA,SAAiB/6F,GACbvT,KAAKkuG,kBACLluG,KAAKw4E,qBAAuBjlE,EAAW3T,GACvCI,KAAK6tG,oBAAoBlgF,KAAKpa,IAGlC,YAAA26F,gBAAA,WACIluG,KAAKm4E,aAAc,EACnBn4E,KAAK2oF,mBAAoB,EACzB3oF,KAAKo4E,eAAgB,EACrBp4E,KAAKs4E,aAAe,KACpBt4E,KAAK6oF,gBAAiB,EACtB7oF,KAAK8oF,iBAAmB,KACxB9oF,KAAKw4E,qBAAuB,MAGhC,YAAApnB,SAAA,SAASC,EAAuCk9C,GAC5C,QAD4C,IAAAA,MAAA,IACzB,MAAfl9C,EAASzxD,GAAb,CAGA,IAAMA,EAAK2uG,EAAWl9C,EAASzxD,GAC3BI,KAAKsxD,YAAYD,EAAUk9C,GAC3BvuG,KAAK+tG,mBAAmBz9D,OAAO1wC,GAE/BI,KAAK+tG,mBAAmBjnG,IAAIlH,GAEhCI,KAAKw3C,eAAe0iB,KAAKl6D,KAAKyY,sBAAuBzY,KAAK+tG,sBAG9D,YAAAz8C,YAAA,SAAYD,EAAuCk9C,GAC/C,YAD+C,IAAAA,MAAA,IACxCvuG,KAAK+tG,mBAAmBnoG,IAAI2oG,EAAWl9C,EAASzxD,K,iCA/IlDg4C,GAAkB,yJ,iCAAlBA,EAAkB,qZ,EAD/B,GACa,EAAAA,sB,+DAAAA,EAAkB,E,KAD9B,EAAAh3C,a,qHAEYssG,YAAW,E,KAAnB,EAAAnsG,QACQosG,gBAAe,E,KAAvB,EAAApsG,QACQqsG,cAAa,E,KAArB,EAAArsG,QACQssG,UAAS,E,KAAjB,EAAAtsG,QAESusG,aAAY,E,KAArB,EAAA5+E,SACS6+E,mBAAkB,E,KAA3B,EAAA7+E,SACS8+E,eAAc,E,KAAvB,EAAA9+E,SACS++E,oBAAmB,E,KAA5B,EAAA/+E,SACSg/E,gBAAe,E,KAAxB,EAAAh/E,SACSi/E,YAAW,E,KAApB,EAAAj/E,SACSk/E,aAAY,E,KAArB,EAAAl/E,SACSm/E,oBAAmB,E,KAA5B,EAAAn/E,Y,o0DCnCL,aAIA,UAEA,QAEA,SACA,SAGA,cASI,WAAY9f,EAA0B0L,QAAA,IAAAA,OAAA,GAAtC,MACI,cAAO,KACP,GAAW,MAAP1L,E,SAaJ,OATA,EAAKwL,iBAAiB,EAAMxL,EAAK,CAC7BhP,GAAI,KACJhC,KAAM,KACNo3D,eAAgB,KAChBioB,kBAAmB,MACpB3iE,EAAkB,CAAC,KAAM,iBAAkB,sBAE9C,EAAKpY,KAAO0M,EAAI1M,KAER,EAAKA,MACT,KAAK,EAAAouB,SAAS3b,KACV,EAAKyc,KAAO,IAAI,EAAA2hC,SAASnkD,EAAIwiB,KAAM9W,GACnC,MACJ,KAAK,EAAAgW,SAAS2yD,KACV,EAAKj1B,KAAO,IAAI,EAAA8E,SAASlkD,EAAIo/C,KAAM1zC,G,SA2BnD,OAxDgC,OAoCtB,YAAAgB,QAAN,SAAc3c,G,oGAGV,OAFMk9B,EAAQ,IAAI,EAAA2yE,eAAexuG,MAEjC,GAAMA,KAAK6a,WAAWghB,EAAO,CACzBj+B,KAAM,MACP,KAAMe,I,cAFT,SAIQqB,KAAKkC,M,KACJ,EAAAouB,SAAS2yD,KAAT,Y,KAGA,EAAA3yD,SAAS3b,KAAT,Y,mBAFY,OAAb,EAAAknB,EAAa,GAAM77B,KAAKguD,KAAK1yC,QAAQ3c,I,OACrC,OADA,EAAMqvD,KAAO,SACb,M,OAEa,OAAb,EAAAnyB,EAAa,GAAM77B,KAAKoxB,KAAK9V,QAAQ3c,I,OACrC,OADA,EAAMyyB,KAAO,SACb,M,OAEA,Y,OAGR,MAAO,CAAP,EAAOyK,WAEf,EAxDA,CAAgC,WAAnB,EAAAkiD,c,sGCRb,aACA,SAGA,EASI,SAAY3gF,GARZ,KAAAwC,GAAa,KACb,KAAAhC,KAAe,KACf,KAAAsE,KAAiB,KACjB,KAAAkvB,KAAO,IAAI,EAAA6mB,aACX,KAAA+V,KAAO,IAAI,EAAAjW,aACX,KAAAid,eAAuB,KACvB,KAAAioB,kBAA4B,KAGnB7/E,IAIL4C,KAAKJ,GAAKxC,EAAEwC,GACZI,KAAKkC,KAAO9E,EAAE8E,KACdlC,KAAKg1D,eAAiB53D,EAAE43D,eACxBh1D,KAAKi9E,kBAAoB7/E,EAAE6/E,oBAjBtB,EAAAuxB,kB,yGCRb,mBAAa,EAAA/wB,qB,o+CCAb,WAMA,QACA,S,GAIA,MACA,KACA,KACA,KACA,MACA,MACA,OACA,K,mEAEA,aA2BI,WAAsBS,EAAoCx+E,EAC5CshB,EAAsDxC,EACtD7E,EAA0B60B,EAC1Bhd,EAAwC8L,EAC1Cr8B,GAJU,KAAAi9E,cAAoC,KAAAx+E,cAC5C,KAAAshB,uBAAsD,KAAAxC,qBACtD,KAAA7E,SAA0B,KAAA60B,gBAC1B,KAAAhd,gBAAwC,KAAA8L,cAC1C,KAAAr8B,aA5BZ,KAAAm9E,aAAc,EACd,KAAAvB,SAAW,EAAAvsD,SACX,KAAA6nB,QAAS,EACT,KAAA72C,SAAU,EACV,KAAA8tC,YAAa,EACb,KAAAktD,SAAmB,EACnB,KAAAp6F,KAAiB,KACjB,KAAAw/E,MAAoB,GACpB,KAAA+sB,cAA4B,GAM5B,KAAA7B,eAAgB,EAChB,KAAA8B,aAAc,E,OAeR,YAAAnuG,SAAN,W,gGACuB,OAAnB,EAAAP,KAAmB,GAAMA,KAAKwxB,cAAc0Q,oBAAoB,EAAA5qB,WAAW+9C,c,cAA3E,EAAK+oB,YAAc,S,YAGjB,YAAAr/D,KAAN,SAAWjQ,G,YAAA,IAAAA,MAAA,M,yFAEO,OADd9O,KAAKsB,SAAU,EACD,GAAMtB,KAAKk+E,YAAYxzB,mB,cAA/Bg3B,EAAQ,SACd1hF,KAAK0hF,MAAQA,EACgB,MAAzB1hF,KAAK2uG,iBAAL,MACA,GAAM3uG,KAAK2uG,oB,cAAX,S,aAGA3uG,KAAKqvC,Y,wBAETrvC,KAAKsB,SAAU,EACftB,KAAKm4C,QAAS,E,YAGZ,YAAAzI,OAAN,SAAa5gC,G,YAAA,IAAAA,MAAA,M,mFAGT,OAFA9O,KAAKm4C,QAAS,EACdn4C,KAAK0hF,MAAQ,GACb,GAAM1hF,KAAK+e,KAAKjQ,I,cAAhB,S,YAGE,YAAA2gC,QAAN,W,0FAGQ,O,sBADAzvC,KAAKovC,YAAa,EAClB,GAAMpvC,KAAK0vC,OAAO1vC,KAAK8O,S,cAAvB,S,oBAEA9O,KAAKovC,YAAa,E,6BAIpB,YAAAuhB,YAAN,SAAkB7hD,G,YAAA,IAAAA,MAAA,M,mFAEd,OADA9O,KAAK8O,OAASA,EACd,GAAM9O,KAAK0N,OAAO,O,cAAlB,S,YAGE,YAAAA,OAAN,SAAaid,G,YAAA,IAAAA,MAAA,M,uEAKT,OAJA3qB,KAAK4sG,eAAgB,EACK,MAAtB5sG,KAAK6sG,eACLp2D,aAAaz2C,KAAK6sG,eAEP,MAAXliF,GACA3qB,KAAK0uG,YAAc1uG,KAAKwuC,cAAcwzB,aAAahiE,KAAKuvB,YACxDvvB,KAAKyuG,cAAgBzuG,KAAK0hF,MAAM5yE,QAAO,SAAA1R,GAAK,OAAe,MAAf,EAAK0R,QAAkB,EAAKA,OAAO1R,MAC/E4C,KAAK4uG,kBACL,MAEJ5uG,KAAK4sG,eAAgB,EACrB5sG,KAAK6sG,cAAgB9oF,YAAW,gD,6CAC5B/jB,KAAK0uG,YAAc1uG,KAAKwuC,cAAcwzB,aAAahiE,KAAKuvB,YACxDvvB,KAAKyuG,cAAgBzuG,KAAK0hF,MAAM5yE,QAAO,SAAA1R,GAAK,OAAe,MAAf,EAAK0R,QAAkB,EAAKA,OAAO1R,MAC/E4C,KAAK4uG,kBACL5uG,KAAK4sG,eAAgB,E,YACtBjiF,G,YAGD,YAAAkkF,eAAN,SAAqBzxG,G,gGACjB,OAA0B,MAAtB4C,KAAKuwC,eAAuC,MAAdnzC,EAAEmY,SAChC,IAEc,GAAMvV,KAAKghB,qBAAqBqoB,WAAWrpC,KAAKN,YAAYpB,EAAE,8BAC5E0B,KAAKN,YAAYpB,EAAE,kBACnB0B,KAAKN,YAAYpB,EAAE,OAAQ0B,KAAKN,YAAYpB,EAAE,MAAO,Y,OACzD,IAHkB,SAId,MAAO,CAAP,GAAO,G,iBAKP,O,sBADA0B,KAAKuwC,cAAgBvwC,KAAKk+E,YAAY4wB,yBAAyB1xG,EAAEwC,IACjE,GAAMI,KAAKuwC,e,cAAX,SACuC,MAAnCvwC,KAAK+uG,2BAAL,OACA/uG,KAAK+uG,6B,cAIL,OADA/uG,KAAKghB,qBAAqB0J,UAAU,UAAW,KAAM1qB,KAAKN,YAAYpB,EAAE,oBACxE,GAAM0B,KAAK+e,Q,OAAX,S,sDAGJ/e,KAAKiB,WAAWW,MAAM,G,oBAE1B5B,KAAKuwC,cAAgB,K,YAGnB,YAAAD,OAAN,SAAalzC,G,gGACT,OAA0B,MAAtB4C,KAAKuwC,cACE,CAAP,GAAO,GAEO,GAAMvwC,KAAKghB,qBAAqBqoB,WAC9CrpC,KAAKN,YAAYpB,EAAE,0BACnB0B,KAAKN,YAAYpB,EAAE,cACnB0B,KAAKN,YAAYpB,EAAE,OAAQ0B,KAAKN,YAAYpB,EAAE,MAAO,Y,OACzD,IAJkB,SAKd,MAAO,CAAP,GAAO,G,iBAKP,O,sBADA0B,KAAKuwC,cAAgBvwC,KAAKk+E,YAAY3sC,iBAAiBn0C,EAAEwC,IACzD,GAAMI,KAAKuwC,e,cAAX,SAE+B,MAA3BvwC,KAAKgvG,mBAAL,OACAhvG,KAAKgvG,qB,cAIL,OADAhvG,KAAKghB,qBAAqB0J,UAAU,UAAW,KAAM1qB,KAAKN,YAAYpB,EAAE,gBACxE,GAAM0B,KAAKyvC,W,OAAX,S,sDAGJzvC,KAAKiB,WAAWW,MAAM,G,aAG1B,OADA5B,KAAKuwC,cAAgB,KACd,CAAP,GAAO,WAGX,YAAA5D,KAAA,SAAKvvC,GACD,IACMwhF,EADkB5+E,KAAKwe,mBAAmBywF,aACjB7xG,EAAEy3D,SAAW,IAAMz3D,EAAE8xG,UACpDlvG,KAAKghB,qBAAqB8rB,gBAAgB8xC,GAC1C5+E,KAAKghB,qBAAqB0J,UAAU,UAAW,KAC3C1qB,KAAKN,YAAYpB,EAAE,cAAe0B,KAAKN,YAAYpB,EAAE,eAG7D,YAAAq5C,kBAAA,WACI33C,KAAK0N,OAAO,MAGhB,YAAA2hC,UAAA,WACIrvC,KAAKkuG,kBACLluG,KAAKm4E,aAAc,EACnBn4E,KAAK2wD,YAAY,OAGrB,YAAA9Y,WAAA,SAAW31C,GACPlC,KAAKkuG,kBACLluG,KAAKs4E,aAAep2E,EACpBlC,KAAK2wD,aAAY,SAAAvzD,GAAK,OAAAA,EAAE8E,OAASA,MAGrC,YAAAgsG,gBAAA,WACIluG,KAAKm4E,aAAc,EACnBn4E,KAAKs4E,aAAe,MAGhB,YAAAs2B,gBAAR,WAC2B,MAAnB5uG,KAAKuvB,aACLvvB,KAAKyuG,cAAgBzuG,KAAKwuC,cAAc2gE,YAAYnvG,KAAKyuG,cAAezuG,KAAKuvB,c,iCAlL5EkvD,GAAa,2U,iCAAbA,I,EADb,GACa,EAAAA,iB,+DAAAA,EAAa,E,KADzB,EAAA79E,a,8sDCpBD,SACA,OAQA,QACA,SAWA,GATA,MACA,KACA,KACA,MACA,KACA,MACA,OACA,KAEA,QACA,SACA,S,2EAKA,aA6BI,WAAsBlB,EAAoCshB,EAC5CxC,EAAkDkgE,EAClDR,EAAoC5gD,EACpCuM,EAA8CrY,EAChDvwB,GAJU,KAAAvB,cAAoC,KAAAshB,uBAC5C,KAAAxC,qBAAkD,KAAAkgE,WAClD,KAAAR,cAAoC,KAAA5gD,cACpC,KAAAuM,mBAA8C,KAAArY,gBAChD,KAAAvwB,aA5BF,KAAAs9E,YAAc,IAAI,EAAAvxD,aAClB,KAAAwxD,cAAgB,IAAI,EAAAxxD,aACpB,KAAA87E,YAAc,IAAI,EAAA97E,aAE5B,KAAAoiF,UAAW,EACX,KAAAhxB,aAAc,EACd,KAAAvmB,kBAAmB,EAMnB,KAAAsR,cAAe,EAGf,KAAA0T,SAAW,EAAAvsD,SAEX,KAAAwa,kBAAmB,EACnB,KAAAspB,eAAgB,EAChB,KAAAi7C,YAAa,EACb,KAAAluF,aAAc,EASVnhB,KAAKupG,YAAc,CACf,CAAE3rG,KAAM8B,EAAYpB,EAAE,gBAAiBD,MAAO,EAAAiyB,SAAS2yD,MACvD,CAAErlF,KAAM8B,EAAYpB,EAAE,gBAAiBD,MAAO,EAAAiyB,SAAS3b,OAE3D3U,KAAKsvG,gBAAkBtvG,KAAKwe,mBAAmBywF,a,OAGnD,sBAAI,mBAAI,C,IAAR,WACI,OAAoB,MAAhBjvG,KAAK6qC,KAAKjrC,IAAoC,MAAtBI,KAAK6qC,KAAKgqB,SAC3B70D,KAAKsvG,gBAAkBtvG,KAAK6qC,KAAKgqB,SAAW,IAAM70D,KAAK6qC,KAAKqkE,UAEhE,M,gCAGX,sBAAI,uBAAQ,C,IAAZ,WACI,OAAOlvG,KAAKghB,qBAAqBuuF,Y,gCAGrC,sBAAI,uCAAwB,C,IAA5B,WACI,QAASvvG,KAAKghB,qBAAqBwuF,aAAexvG,KAAKghB,qBAAqBuuF,a,gCAG1E,YAAAhvG,SAAN,W,0FACI,SAAMP,KAAK+e,Q,cAAX,S,YAGJ,sBAAI,uBAAQ,C,IAAZ,WACI,OAAsB,MAAf/e,KAAKk9E,Q,gCAGhB,sBAAI,oBAAK,C,IAAT,WACI,OAAOl9E,KAAKN,YAAYpB,EACpB0B,KAAK+sC,SACD,WACA,e,gCAIZ,YAAA0iE,SAAA,SAASrrG,GACLpE,KAAKi1D,aAAe7wD,EAAM6wD,aAC1Bj1D,KAAKg1D,eAAiB5wD,EAAM4wD,gBAG1B,YAAAj2C,KAAN,W,0GACuB,OAAnB,EAAA/e,KAAmB,GAAMA,KAAKwxB,cAAc0Q,oBAAoB,EAAA5qB,WAAW+9C,c,OACnD,OADxB,EAAK+oB,YAAc,SACnB,EAAAp+E,KAAwB,GAAMA,KAAKwxB,cAAc0Q,oBAAoB,EAAA5qB,WAAWogD,aAC5E,SAAA14D,GAAK,OAAAA,EAAExD,KAAKq8D,qB,OAEQ,OAHxB,EAAKA,iBAAmB,SAGxB,EAAA73D,KAAwB,GAAMA,KAAKs9B,YAAYwN,oB,OAC1B,OADrB,EAAKA,iBAAmB,SACxB,EAAA9qC,KAAqB,GAAMA,KAAKs9B,YAAYopD,oB,cAA5C,EAAKtyB,cAAgB,SAChBp0D,KAAK8qC,kBAAqB9qC,KAAKo0D,gBAChCp0D,KAAKkC,KAAO,EAAAouB,SAAS3b,MAGR,MAAb3U,KAAK6qC,KAAL,MACI7qC,KAAK+sC,SACQ,GAAM/sC,KAAK0vG,YADxB,M,OAEY,OADN7kE,EAAO,SACb,EAAA7qC,KAAY,GAAM6qC,EAAKvvB,W,cAAvB,EAAKuvB,KAAO,S,aAEZ7qC,KAAK6qC,KAAO,IAAI,EAAAg0C,SAChB7+E,KAAK6qC,KAAK3oC,KAAoB,MAAblC,KAAKkC,KAAe,EAAAouB,SAAS2yD,KAAOjjF,KAAKkC,KAC1DlC,KAAK6qC,KAAKmjB,KAAO,IAAI,EAAAjW,aACrB/3C,KAAK6qC,KAAKzZ,KAAO,IAAI,EAAA6mB,aACrBj4C,KAAK6qC,KAAKoqB,aAAe,IAAIvjC,KAC7B1xB,KAAK6qC,KAAKoqB,aAAaljC,QAAQ/xB,KAAK6qC,KAAKoqB,aAAanjC,UAAY,G,wBAI1E9xB,KAAK2vG,YAAoC,MAAtB3vG,KAAK6qC,KAAKt1B,UAAkD,KAA9BvV,KAAK6qC,KAAKt1B,SAASzI,O,YAGlE,YAAAwtB,OAAN,W,6GACI,GAAIt6B,KAAKo+E,YAGL,OAFAp+E,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAC5D0B,KAAKN,YAAYpB,EAAE,wBAChB,CAAP,GAAO,GAGX,GAAsB,MAAlB0B,KAAK6qC,KAAKjtC,MAAmC,KAAnBoC,KAAK6qC,KAAKjtC,KAGpC,OAFAoC,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAC5D0B,KAAKN,YAAYpB,EAAE,iBAChB,CAAP,GAAO,GAIX,GADI0vD,EAAa,KACbhuD,KAAK6qC,KAAK3oC,OAAS,EAAAouB,SAAS2yD,OAASjjF,KAAK+sC,SAAU,CAGpD,GAFM5I,EAASjgC,SAASkgC,eAAe,QAE1B,OADPC,EAAQF,EAAOE,QACiB,IAAjBA,EAAMroC,OAGvB,OAFAgE,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAC5D0B,KAAKN,YAAYpB,EAAE,eACvB,IAIJ,GADA0vD,EAAO3pB,EAAM,GACTA,EAAM,GAAG1f,KAAO,SAGhB,OAFA3kB,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAC5D0B,KAAKN,YAAYpB,EAAE,gBACvB,IAIa,MAAjB0B,KAAKuV,UAA6C,KAAzBvV,KAAKuV,SAASzI,SACvC9M,KAAKuV,SAAW,MAGpBvV,KAAKu6B,YAAcv6B,KAAK4vG,YAAY5hD,GAC/B3sD,MAAK,SAAMwuG,GAAO,qC,wDAEf,SADsB7vG,KAAKk+E,YAAYktB,eAAeyE,I,cACtD,SACoB,MAAhB7vG,KAAK6qC,KAAKjrC,KACVI,KAAK6qC,KAAKjrC,GAAKiwG,EAAQ,GAAGjwG,IAEJ,MAAtBI,KAAK6qC,KAAKgqB,WACV70D,KAAK6qC,KAAKgqB,SAAWg7C,EAAQ,GAAGh7C,UAEpC70D,KAAKu+E,YAAY5wD,KAAK3tB,KAAK6qC,MACvB7qC,KAAKovG,UAAyB,MAAbpvG,KAAK4+E,KACF,GAAM5+E,KAAK2+E,oBAAoB3+E,KAAK4+E,OADxD,M,cAEIkxB,OADEA,EAAc,WAChBA,GACA9vG,KAAKghB,qBAAqB0J,UAAU,UAAW,KAC3C1qB,KAAKN,YAAYpB,EAAE0B,KAAK+sC,SAAW,aAAe,gB,OAFnC,M,OAInB,SAAM/sC,KAAKghB,qBAAqBqoB,WAC5BrpC,KAAKN,YAAYpB,EAAE0B,KAAK+sC,SAAW,aAAe,eAAgB,KAClE/sC,KAAKN,YAAYpB,EAAE,MAAO,KAAM,UAAW,O,OAC/C,OAHA,SAGA,GAAM0B,KAAK2+E,oBAAoB3+E,KAAK4+E,O,OAApC,S,sDAKZ,O,sBAAA,GAAM5+E,KAAKu6B,a,OACX,OADA,SACO,CAAP,GAAO,G,yBAEPv6B,KAAKiB,WAAWW,MAAM,G,aAE1B,MAAO,CAAP,GAAO,WAGL,YAAA+8E,oBAAN,SAA0BC,G,mEACtB,MAAO,CAAP,EAAOzjE,QAAQC,QAAQpb,KAAKghB,qBAAqB8rB,gBAAgB8xC,YAG/D,YAAAtuC,OAAN,W,gGACI,OAA0B,MAAtBtwC,KAAK2iE,cACE,CAAP,GAAO,GAEO,GAAM3iE,KAAKghB,qBAAqBqoB,WAC9CrpC,KAAKN,YAAYpB,EAAE,0BACnB0B,KAAKN,YAAYpB,EAAE,cACnB0B,KAAKN,YAAYpB,EAAE,OAAQ0B,KAAKN,YAAYpB,EAAE,MAAO,Y,OACzD,IAJkB,SAKd,MAAO,CAAP,GAAO,G,iBAKP,O,sBADA0B,KAAK2iE,cAAgB3iE,KAAKk+E,YAAY3sC,iBAAiBvxC,KAAK6qC,KAAKjrC,IACjE,GAAMI,KAAK2iE,e,OAEX,OAFA,SACA3iE,KAAKghB,qBAAqB0J,UAAU,UAAW,KAAM1qB,KAAKN,YAAYpB,EAAE,gBACxE,GAAM0B,KAAK+e,Q,OAEX,OAFA,SACA/e,KAAKw+E,cAAc7wD,KAAK3tB,KAAK6qC,MACtB,CAAP,GAAO,G,yBAEP7qC,KAAKiB,WAAWW,MAAM,G,aAG1B,MAAO,CAAP,GAAO,WAGX,YAAAmuG,YAAA,WACQ/vG,KAAK6qC,KAAK3oC,OAAS,EAAAouB,SAAS2yD,MAASjjF,KAAKqvG,aACrCrvG,KAAK8qC,iBAGE9qC,KAAKo0D,gBACbp0D,KAAKqvG,YAAa,EAClBrvG,KAAK6pC,iBAAiBgB,KAAK,+BAJ3B7qC,KAAKqvG,YAAa,EAClBrvG,KAAK6pC,iBAAiBgB,KAAK,sBAQvC,YAAAmlE,cAAA,WACIhwG,KAAKmhB,aAAenhB,KAAKmhB,aAGb,YAAAuuF,SAAhB,W,mEACI,MAAO,CAAP,EAAO1vG,KAAKk+E,YAAYjgF,IAAI+B,KAAKk9E,gBAGrB,YAAA0yB,YAAhB,SAA4B5hD,G,gGACP,SAAMhuD,KAAKk+E,YAAY38C,QAAQvhC,KAAK6qC,KAAMmjB,EAAMhuD,KAAKuV,SAAU,O,OAA1E06F,EAAW,SAGjB,IACIA,EAAS,GAAGh7C,aAAoC,MAArBj1D,KAAKi1D,aAAuB,KAAO,IAAIvjC,KAAK1xB,KAAKi1D,cAC9E,SACEg7C,EAAS,GAAGh7C,aAAe,KAE/B,IACIg7C,EAAS,GAAGj7C,eAAwC,MAAvBh1D,KAAKg1D,eAAyB,KAAO,IAAItjC,KAAK1xB,KAAKg1D,gBAClF,SACEi7C,EAAS,GAAGj7C,eAAiB,KAGjC,MAAO,CAAP,EAAOi7C,WAGD,YAAAC,sBAAV,WACIlwG,KAAKmpE,cAAgBnpE,KAAKmpE,aAC1BjlE,SAASkgC,eAAe,YAAYtqB,S,iCAlP/BswB,GAAgB,gV,iCAAhBA,EAAgB,mI,EAD7B,GACa,EAAAA,oB,+DAAAA,EAAgB,E,KAD5B,EAAAxpC,a,sOAEYs8E,OAAQ,CAAF,C,KAAd,EAAAn8E,QACQmB,KAAM,CAAF,C,KAAZ,EAAAnB,QAESw9E,YAAW,E,KAApB,EAAA7vD,SACS8vD,cAAa,E,KAAtB,EAAA9vD,SACSo6E,YAAW,E,KAApB,EAAAp6E,Y,mUCnCL,SAcKyhF,EAcAC,EAMAC,EAjCL,OAOA,Q,GAEA,KACA,K,4BAGA,SAAKF,GAGD,oBAIA,oBAIA,kBAXJ,CAAKA,MAAW,KAchB,SAAKC,GACD,0BACA,8BAFJ,CAAKA,MAAS,KAMd,SAAKC,GACD,yBACA,wBACA,0BACA,8BACA,+BACA,iCACA,uBACA,UAAQ,MAAI,QARhB,CAAKA,MAAU,KAkBf,iBA2II,WAAsB3wG,EAAoCshB,EAC5C09D,GADQ,KAAAh/E,cAAoC,KAAAshB,uBAC5C,KAAA09D,WArIJ,KAAA4xB,aAAe,IAAI,EAAAtjF,aAW7B,KAAAujF,UAAY,IAAI,EAAAC,UAAU,CACtBC,2BAA4B,IAAI,EAAAzwF,YAChC0wF,6BAA8B,IAAI,EAAA1wF,YAClC2wF,wBAAyB,IAAI,EAAA3wF,YAC7B4wF,0BAA2B,IAAI,EAAA5wF,YAC/B6wF,qBAAsB,IAAI,EAAA7wF,YAC1B8wF,qBAAsB,IAAI,EAAA9wF,YAC1B+wF,uBAAwB,IAAI,EAAA/wF,YAC5BgxF,uBAAwB,IAAI,EAAAhxF,cAGhC,KAAAixF,oBAA6B,CACrB,CAAErzG,KAAMoC,KAAKN,YAAYpB,EAAE,WAAYD,MAAOgyG,EAAWa,SACzD,CAAEtzG,KAAMoC,KAAKN,YAAYpB,EAAE,UAAWD,MAAOgyG,EAAWc,QACxD,CAAEvzG,KAAMoC,KAAKN,YAAYpB,EAAE,OAAQ,KAAMD,MAAOgyG,EAAWe,SAC3D,CAAExzG,KAAMoC,KAAKN,YAAYpB,EAAE,OAAQ,KAAMD,MAAOgyG,EAAWgB,WAC3D,CAAEzzG,KAAMoC,KAAKN,YAAYpB,EAAE,OAAQ,KAAMD,MAAOgyG,EAAWiB,WAC3D,CAAE1zG,KAAMoC,KAAKN,YAAYpB,EAAE,OAAQ,MAAOD,MAAOgyG,EAAWkB,YAC5D,CAAE3zG,KAAMoC,KAAKN,YAAYpB,EAAE,UAAWD,MAAOgyG,EAAWnxE,SAGhE,KAAAsyE,sBAA+B,CACvB,CAAE5zG,KAAMoC,KAAKN,YAAYpB,EAAE,SAAUD,MAAOgyG,EAAWtG,QAC7Dv/E,OAAO,EAAIxqB,KAAKixG,sB,OAhClB,sBAAI,0BAAW,C,IAAf,WACI,OAAIjxG,KAAKghB,qBAAqBwuF,YACnBW,EAAYsB,QACZzxG,KAAKghB,qBAAqBuuF,WAC1BY,EAAYuB,OAEhBvB,EAAYwB,S,gCA4BvB,sBAAI,yCAA0B,C,IAA9B,WACI,OAAO3xG,KAAKuwG,UAAUtyG,IAAI,+B,gCAG9B,sBAAI,2CAA4B,C,IAAhC,WACI,OAAO+B,KAAKuwG,UAAUtyG,IAAI,iC,gCAG9B,sBAAI,sCAAuB,C,IAA3B,WACI,OAAO+B,KAAKuwG,UAAUtyG,IAAI,4B,gCAG9B,sBAAI,wCAAyB,C,IAA7B,WACI,OAAO+B,KAAKuwG,UAAUtyG,IAAI,8B,gCAG9B,sBAAI,mCAAoB,C,IAAxB,WACI,OAAO+B,KAAKuwG,UAAUtyG,IAAI,yB,gCAG9B,sBAAI,mCAAoB,C,IAAxB,WACI,OAAO+B,KAAKuwG,UAAUtyG,IAAI,yB,gCAG9B,sBAAI,qCAAsB,C,IAA1B,WACI,OAAO+B,KAAKuwG,UAAUtyG,IAAI,2B,gCAG9B,sBAAI,qCAAsB,C,IAA1B,WACI,OAAO+B,KAAKuwG,UAAUtyG,IAAI,2B,gCAI9B,sBAAI,oCAAqB,C,IAAzB,WACI,OAAQ+B,KAAKywG,2BAA2BpyG,OACpC,KAAKgyG,EAAWtG,MAEZ,OADA/pG,KAAKywG,2BAA2BxwF,SAASowF,EAAWiB,WAC7CtxG,KAAK4xG,sBAChB,KAAKvB,EAAWnxE,OACZ,OAAQl/B,KAAK6xG,aACT,KAAK1B,EAAYuB,OACjB,KAAKvB,EAAYsB,QACb,OAAOzxG,KAAK6wG,qBAAqBxyG,MAAQ,IAAM2B,KAAK8wG,qBAAqBzyG,MAC7E,QACI,OAAO2B,KAAK2wG,wBAAwBtyG,MAEhD,QACI,IAAM8+F,EAAM,IAAIzrE,KACVogF,EAAc3U,EAAI4U,QAAQ5U,EAAI9qE,UACmB,GAAlDryB,KAAKywG,2BAA2BpyG,MAAuB,GAAK,KACjE,OAAO,IAAIqzB,KAAKogF,GAAavnG,a,gCAIzC,sBAAI,sCAAuB,C,IAA3B,WACI,OAAQvK,KAAK0wG,6BAA6BryG,OACtC,KAAKgyG,EAAWtG,MACZ,OAAO,KACX,KAAKsG,EAAWnxE,OACZ,OAAQl/B,KAAK6xG,aACT,KAAK1B,EAAYuB,OACjB,KAAKvB,EAAYsB,QACb,OAAMzxG,KAAK+wG,uBAAuB1yG,OAAU2B,KAAKgxG,uBAAuB3yG,QACpE2B,KAAK+sC,SAGF/sC,KAAK+wG,uBAAuB1yG,MAAQ,IAAM2B,KAAKgxG,uBAAuB3yG,MAFlE,KAGf,QACI,OAAK2B,KAAK4wG,0BAA0BvyG,MAG7B2B,KAAK4wG,0BAA0BvyG,MAF3B,KAIvB,QACI,IAAM8+F,EAAM,IAAIzrE,KACVogF,EAAc3U,EAAI4U,QAAQ5U,EAAI9qE,UACqB,GAApDryB,KAAK0wG,6BAA6BryG,MAAuB,GAAK,KACnE,OAAO,IAAIqzB,KAAKogF,GAAavnG,a,gCAKzC,sBAAI,8CAA+B,C,IAAnC,WACI,OAAOvK,KAAKgyG,wBAAwB5B,EAAU6B,e,gCAGlD,sBAAI,gDAAiC,C,IAArC,WACI,OAAOjyG,KAAKgyG,wBAAwB5B,EAAU8B,iB,gCAGlD,sBAAY,uBAAQ,C,IAApB,WACI,IAAMC,EAAW,IAAIzgF,KAErB,OADAygF,EAASpgF,QAAQogF,EAASrgF,UAAY,GAC/BqgF,G,gCAOX,YAAA5xG,SAAA,sBACIP,KAAKoyG,uBACLpyG,KAAKqyG,YACLryG,KAAKuwG,UAAUllF,aAAa/kB,WAAU,WAClC,EAAK+rG,gBAIb,YAAAC,2BAAA,SAA2Bj0G,GACvB2B,KAAKywG,2BAA2BxwF,SAAS5hB,IAG7C,YAAAk0G,gBAAA,WACI,OAAQvyG,KAAK6xG,aACT,KAAK1B,EAAYuB,OACjB,KAAKvB,EAAYsB,QACbzxG,KAAK+wG,uBAAuB9wF,SAAS,MACrCjgB,KAAKgxG,uBAAuB/wF,SAAS,MACrC,MACJ,KAAKkwF,EAAYwB,QACb3xG,KAAK4wG,0BAA0B3wF,SAAS,QAK1C,YAAAoyF,UAAV,WACIryG,KAAKswG,aAAa3iF,KAAK,CACnBsnC,aAAcj1D,KAAK4xG,sBACnB58C,eAAgBh1D,KAAKwyG,2BAInB,YAAAJ,qBAAV,WACI,GAAIpyG,KAAK+sC,SAGL,OAFA/sC,KAAKywG,2BAA2BxwF,SAASowF,EAAWnxE,QACpDl/B,KAAK0wG,6BAA6BzwF,SAASowF,EAAWnxE,QAC9Cl/B,KAAK6xG,aACT,KAAK1B,EAAYuB,OACjB,KAAKvB,EAAYsB,QACbzxG,KAAK6wG,qBAAqB5wF,SAASjgB,KAAKyyG,oBAAoBngF,cAAclzB,MAAM,EAAG,KACnFY,KAAK8wG,qBAAqB7wF,SAASjgB,KAAKyyG,oBAAoBC,eAAetzG,MAAM,EAAG,IAClD,MAA9BY,KAAK2yG,wBACL3yG,KAAK+wG,uBAAuB9wF,SAASjgB,KAAK2yG,sBAAsBrgF,cAAclzB,MAAM,EAAG,KACvFY,KAAKgxG,uBAAuB/wF,SAASjgB,KAAK2yG,sBAAsBD,eAAetzG,MAAM,EAAG,KAE5F,MACJ,KAAK+wG,EAAYwB,QACT3xG,KAAK2yG,uBACL3yG,KAAK4wG,0BAA0B3wF,SAC3BjgB,KAAK0+E,SAAS/+E,UAAU,IAAI+xB,KAAK1xB,KAAK2yG,uBAAwB,qBAEtE3yG,KAAK2wG,wBAAwB1wF,SAASjgB,KAAK0+E,SAAS/+E,UAAU,IAAI+xB,KAAK1xB,KAAKyyG,qBAAsB,0BAO1G,GAHAzyG,KAAKywG,2BAA2BxwF,SAASowF,EAAWiB,WACpDtxG,KAAK0wG,6BAA6BzwF,SAASowF,EAAWtG,OAE9C/pG,KAAK6xG,cACJ1B,EAAYuB,OACb1xG,KAAK6wG,qBAAqB5wF,SAASjgB,KAAKmyG,SAAS7/E,cAAclzB,MAAM,EAAG,KACxEY,KAAK8wG,qBAAqB7wF,SAASjgB,KAAKgyG,wBAAwB5B,EAAU6B,cAAc,GAAGW,iBAQjG,YAAAZ,wBAAV,SAAkCp9F,GAW9B,IATA,IAAMi+F,EAAqB,GACrBC,EAAyB,GACzBC,EAAoB,GACpBC,EAAoB,GAMjBr5D,EAAI,EAAGA,GAAK,GAAIA,IAErB,IAAK,IAAIl8C,EAAI,EAAGA,EAAI,GAAIA,GALF,GAK0B,CAE5C,IAAIw1G,EAAOt5D,EAAEpvC,WACT2oG,EAAUz1G,EAAE8M,WAWhB,GARIovC,EAAI,KACJs5D,EAAO,IAAMA,GAEbx1G,EAAI,KACJy1G,EAAU,IAAMA,GAIV,KAANv5D,EAAU,CACV,IAAMw5D,EAA6B,CAC/BC,WAAeH,EAAI,IAAIC,EAAO,MAC9BN,eAAgB,MAAMM,GAE1BJ,EAASx2G,KAAK62G,GAEd,IAAME,EAAyB,CAC3BD,WAAeH,EAAI,IAAIC,EAAO,MAC9BN,eAAmBK,EAAI,IAAIC,GAE/BL,EAAKv2G,KAAK+2G,OACP,CACH,IAAMC,EAAuB,CACzBF,WAAeH,EAAI,IAAIC,EAAO,MAC9BN,eAAmBK,EAAI,IAAIC,GAE/BH,EAAIz2G,KAAKg3G,GAET,IAAMC,EAAuB,CACzBH,WAAeH,EAAI,IAAIC,EAAO,MAC9BN,eAAmBj5D,EAAI,GAAE,IAAIu5D,GAEjCF,EAAI12G,KAAKi3G,IAMrB,IAAMC,EAAa,EAAIV,EAAaC,EAAQF,EAASG,GAIrD,GAAIp+F,IAAUw7F,EAAU8B,gBAAgD,MAA9BlyG,KAAK2yG,uBAAiC3yG,KAAK+sC,SAAU,CAC3F,IAAM0mE,EAA4B,CAC9BL,WAAYpzG,KAAK0+E,SAAS/+E,UAAUK,KAAK2yG,sBAAuB,WAChEC,eAAgB5yG,KAAK0+E,SAAS/+E,UAAUK,KAAK2yG,sBAAuB,UAExE,OAAO,EAAP,CAAQc,EAAe,CAAEL,WAAY,KAAMR,eAAgB,OAAWY,GACnE,GAAI5+F,IAAUw7F,EAAU6B,cAA4C,MAA5BjyG,KAAKyyG,qBAA+BzyG,KAAK+sC,SAAU,CACxF0mE,EAA4B,CAC9BL,WAAYpzG,KAAK0+E,SAAS/+E,UAAUK,KAAKyyG,oBAAqB,WAC9DG,eAAgB5yG,KAAK0+E,SAAS/+E,UAAUK,KAAKyyG,oBAAqB,UAEtE,OAAO,EAAP,CAAQgB,GAAkBD,GAE1B,OAAO,EAAP,CAAQ,CAAEJ,WAAY,KAAMR,eAAgB,OAAWY,I,iCA5RtD10B,GAAoB,iH,iCAApBA,EAAoB,iL,EADjC,GACa,EAAAA,wB,+DAAAA,EAAoB,E,KADhC,EAAAl+E,a,2FAEqB6xG,oBAAqB,CAAF,C,KAApC,EAAA1xG,QACiB4xG,sBAAuB,CAAF,C,KAAtC,EAAA5xG,QACiBgsC,SAAU,CAAF,C,KAAzB,EAAAhsC,QACiBs+B,SAAU,CAAF,C,KAAzB,EAAAt+B,QAESuvG,aAAY,E,KAArB,EAAA5hF,Y,4GC3DL,MAKI,SAAY9wB,EAAcy2D,GAF1B,KAAAC,QAAU,QAGNt0D,KAAKpC,KAAOA,EACZoC,KAAKq0D,mBAAqBA,GAA0C,MAP/D,EAAA+rB,wB,2cCAb,IAEA,2B,+CAIA,OAJkC,OAIlC,EAJA,CAFA,OAEkCM,mBAArB,EAAAE,gB,gdCFb,IAIA,cAGI,WAAY/1C,GAAZ,MACI,YAAMA,IAAK,K,OACX,EAAKjrC,GAAKirC,EAAKjrC,G,EAEvB,OAPuC,OAOvC,EAPA,CAJA,OAIuCsjF,aAA1B,EAAAtB,qB,ycCJb,IAIA,2B,+CAGA,OAHgC,OAGhC,EAHA,CAJA,OAIgCT,iBAAnB,EAAAkC,c,4GCJb,mBAAa,EAAAe,wB,i/CCAb,WAgBA,GAXA,MAQA,KACA,MAEA,O,8BAGA,aAyBI,WAAoBn6B,EAAyBz4B,EAAsC9xB,GAA/D,KAAAuqD,KAAyB,KAAAz4B,gBAAsC,KAAA9xB,cAhBnF,KAAAg0G,KAAO1zG,KAAKiqD,GAAGgM,MAAM,CACjB2uB,aAAc,CAAC,MACfjB,OAAQ3jF,KAAKiqD,GAAGgM,MAAM,CAClB09C,MAAO,CAAC,MACRT,QAAS,CAAC,U,OAVlB,sBAAI,yBAAU,C,IAAd,WACI,OAAOlzG,KAAK0zG,KAAKz1G,IAAI,gBAAgBI,QAAU+nF,EAA2BwtB,c,gCAwBxE,YAAArzG,SAAN,W,uGACQ,SAAMP,KAAKwxB,cAAc0Q,oBAAoB,EAAA5qB,WAAW0gD,sB,cAAxD,SAC2B,GAAMh4D,KAAKwxB,cAAckG,OAAO,EAAApgB,WAAW0gD,sBADtE,M,OACM67C,EAAqB,SAE3B7zG,KAAK6zG,mBAAqBA,EAAmB,GAC7C7zG,KAAK8zG,wBAA0B7nG,KAAKiuB,MAAMl6B,KAAK6zG,mBAAmBr4G,KAAK03G,QAAU,IACjFlzG,KAAK+zG,0BAA4B/zG,KAAK6zG,mBAAmBr4G,KAAK03G,QAAU,GAExElzG,KAAK6kF,cAAgB7kF,KAAK6kF,cAAc/1E,QAAO,SAAAxQ,GAC3C,OAAAA,EAAED,OAAS,EAAKw1G,mBAAmBr4G,KAAK03G,UACvC50G,EAAED,MAAQ,GAAKC,EAAED,QAAU+nF,EAA2BwtB,eAC5C,MAAXt1G,EAAED,SAEN2B,KAAKg0G,kB,wBAGTh0G,KAAK0zG,KAAKroF,aAAa/kB,WAAU,SAAMjI,GAAK,qC,kCACxC2B,KAAK0rB,SAAS1rB,KAAKqlF,gBAAgBhnF,I,aAIvC2B,KAAK0zG,KAAKz1G,IAAI,gBAAgBotB,aAAa/kB,WAAU,SAAAjI,GACjD,GAAIA,IAAU+nF,EAA2BwtB,aAAzC,CAIA,IAAMK,EAAUhoG,KAAK0pE,IAAI,EAAK+9B,KAAKr1G,MAAMumF,aAAc,GACvD,EAAK8uB,KAAKtzF,WAAW,CACjBujE,OAAQ,CACJgwB,MAAO1nG,KAAKiuB,MAAM+5E,EAAU,IAC5Bf,QAASe,EAAU,U,YAMnC,YAAA/yG,YAAA,WACIlB,KAAK6kF,cAAcvoF,KAAK,CAAEsB,KAAMoC,KAAKN,YAAYpB,EAAE,UAAWD,MAAO+nF,EAA2BwtB,gBAGpG,YAAAvuB,gBAAA,SAAgBhnF,GACZ,OAAIA,EAAMumF,eAAiBwB,EAA2BwtB,aAC3Cv1G,EAAMumF,aAGW,GAArBvmF,EAAMslF,OAAOgwB,MAAat1G,EAAMslF,OAAOuvB,SAGlD,YAAA3nF,WAAA,SAAWltB,GACM,MAATA,IAIA2B,KAAK6kF,cAAc3Z,OAAM,SAAAlsE,GAAK,OAAAA,EAAEX,QAAUA,KAC1C2B,KAAK0zG,KAAKzzF,SAAS,CACf2kE,aAAcwB,EAA2BwtB,aACzCjwB,OAAQ,CACJgwB,MAAO1nG,KAAKiuB,MAAM77B,EAAQ,IAC1B60G,QAAS70G,EAAQ,MAM7B2B,KAAK0zG,KAAKtzF,WAAW,CACjBwkE,aAAcvmF,MAItB,YAAAmtB,iBAAA,SAAiBE,GACb1rB,KAAK0rB,SAAWA,GAIpB,YAAAC,kBAAA,SAAkBuoF,KAGlB,YAAAtoF,iBAAA,SAAkBC,KAElB,YAAAsoF,SAAA,SAASC,G,QACL,OAAIp0G,KAAK6zG,qBAAmD,QAA7B,EAAuB,QAAvB,EAAA7zG,KAAK6zG,0BAAkB,eAAEr4G,YAAI,eAAE03G,SAAUkB,EAAQ/1G,MACrE,CAAEg2G,aAAa,GAGnB,MAGX,YAAAC,0BAAA,SAA0B7oF,GACtBzrB,KAAKg0G,gBAAkBvoF,GA7GpB,EAAAmoF,cAAgB,I,iCANdxtB,GAA0B,6G,iCAA1BA,EAA0B,2E,EADvC,GACa,EAAAA,8B,+DAAAA,EAA0B,E,KADtC,EAAAxlF,a,uFAiBYikF,cAAe,CAAF,C,KAArB,EAAA9jF,W,i/CCpCL,W,GAQA,KACA,MACA,K,4BAIA,aAYI,WAAsB6qC,EACR5qB,EAAsDthB,EACxD0P,GAFU,KAAAw8B,4BACR,KAAA5qB,uBAAsD,KAAAthB,cACxD,KAAA0P,MAZH,KAAAmlG,YAAsB,EACrB,KAAAC,WAAa,IAAI,EAAAxnF,aAG3B,KAAA/b,QAAe,GACf,KAAAsE,SAAmB,IACnB,KAAA4L,aAAc,EACd,KAAAszF,gBAAiB,EAMTz0G,KAAK00G,gBAAkB,CACnB,CAAE92G,KAAM8B,EAAYpB,EAAE,YAAaD,MAAO,YAC1C,CAAET,KAAM8B,EAAYpB,EAAE,cAAeD,MAAO,e,OAIlD,YAAAkC,SAAN,W,kGAC4B,SAAMP,KAAK4rC,0BAA0BuB,c,OAK7C,OALVwnE,EAAkB,SACxB30G,KAAKiR,QAAU0jG,EAAgB,GAC/B30G,KAAKyC,sBAAwBkyG,EAAgB,GAC7C30G,KAAKy0G,gBAAkBz0G,KAAKiR,QAAQ2jG,UACpC50G,KAAKiR,QAAQ/O,KAA6B,eAAtBlC,KAAKiR,QAAQ/O,KAAwB,aAAe,WACxE,EAAAlC,KAAgB,GAAMA,KAAK4rC,0BAA0BqB,iBAAiBjtC,KAAKiR,U,OAC3E,OADA,EAAKsE,SAAW,SAChB,GAAMvV,KAAK4rC,0BAA0BipE,WAAW70G,KAAKuV,W,cAArD,S,YAGE,YAAAu/F,cAAN,W,0FAEI,OADA90G,KAAK+0G,aAAY,GACjB,GAAM/0G,KAAK4rC,0BAA0BipE,WAAW70G,KAAKuV,W,cAArD,S,YAGE,YAAAy/F,YAAN,W,gGAEoB,OADhBh1G,KAAKi1G,mBACL,EAAAj1G,KAAgB,GAAMA,KAAK4rC,0BAA0BqB,iBAAiBjtC,KAAKiR,U,cAA3E,EAAKsE,SAAW,S,YAGd,YAAAw/F,YAAN,SAAkB/sB,G,YAAA,IAAAA,OAAA,G,mFAEd,OADAhoF,KAAKi1G,mBACL,GAAMj1G,KAAK4rC,0BAA0BmpE,YAAY/0G,KAAKiR,U,cAAtD,SAEI+2E,EACA,GAAMhoF,KAAKgoF,cADX,M,OACA,S,mCAIF,YAAAA,WAAN,W,gGACoB,OAAhB,EAAAhoF,KAAgB,GAAMA,KAAK4rC,0BAA0BqB,iBAAiBjtC,KAAKiR,U,OAC3E,OADA,EAAKsE,SAAW,SAChB,GAAMvV,KAAK4rC,0BAA0BipE,WAAW70G,KAAKuV,W,cAArD,S,YAGJ,YAAAo3B,KAAA,WACI,IAAMuoE,EAA0B,MAAZl1G,KAAKoP,IAAc,CAAElQ,OAAQc,KAAKoP,KAAQ,KAC9DpP,KAAKghB,qBAAqB8rB,gBAAgB9sC,KAAKuV,SAAU2/F,GACzDl1G,KAAKghB,qBAAqB0J,UAAU,OAAQ,KACxC1qB,KAAKN,YAAYpB,EAAE,cAAe0B,KAAKN,YAAYpB,EAAE,eAG7D,YAAA0yC,OAAA,WACIhxC,KAAKw0G,WAAW7mF,KAAK3tB,KAAKuV,WAG9B,YAAAy6F,cAAA,WACIhwG,KAAKmhB,aAAenhB,KAAKmhB,aAGrB,YAAA8zF,iBAAR,WAII,GAFAj1G,KAAKiR,QAAQ2jG,WAAa50G,KAAKy0G,iBAE1Bz0G,KAAKiR,QAAQ4tD,WAAc7+D,KAAKiR,QAAQ6tD,WAAc9+D,KAAKiR,QAAQ8K,QAAW/b,KAAKiR,QAAQ+tD,WAC5Fh/D,KAAKiR,QAAQ6tD,WAAY,EACT,MAAZ9+D,KAAKoP,KAAa,CAClB,IAAM0vD,EAAY9+D,KAAKoP,IAAIlL,SAAS8C,cAAc,cAC9C83D,IACAA,EAAU3tB,SAAU,GAKhCnxC,KAAK4rC,0BAA0BqpE,iBAAiBj1G,KAAKiR,QAASjR,KAAKyC,wB,iCAnF9DslF,GAA0B,oJAalBzM,U,iCAbRyM,EAA0B,qE,EADvC,GACa,EAAAA,8B,+DAAAA,EAA0B,E,KADtC,EAAAnnF,a,8GAcoB06E,WAAM,CAZdi5B,WAAY,CAAF,C,KAAlB,EAAAxzG,QACSyzG,WAAU,E,KAAnB,EAAA9lF,Y,w/CCjBL,W,GAEA,KACA,MACA,K,4BAIA,aAII,WAAsBkd,EACR5qB,EAAsDthB,EACxD0P,GAFU,KAAAw8B,4BACR,KAAA5qB,uBAAsD,KAAAthB,cACxD,KAAA0P,MAJZ,KAAAq4E,QAAsC,G,OAMhC,YAAAlnF,SAAN,W,gGACmB,OAAf,EAAAP,KAAe,GAAMA,KAAK4rC,0BAA0BupE,c,cAApD,EAAK1tB,QAAU,S,YAGnB,YAAAQ,MAAA,WACIjoF,KAAKynF,QAAU,GACfznF,KAAK4rC,0BAA0Bq8C,SAGnC,YAAAt7C,KAAA,SAAKp3B,GACD,IAAM2/F,EAA0B,MAAZl1G,KAAKoP,IAAc,CAAElQ,OAAQc,KAAKoP,KAAQ,KAC9DpP,KAAKghB,qBAAqB8rB,gBAAgBv3B,EAAU2/F,GACpDl1G,KAAKghB,qBAAqB0J,UAAU,OAAQ,KACxC1qB,KAAKN,YAAYpB,EAAE,cAAe0B,KAAKN,YAAYpB,EAAE,e,iCApBpDopF,GAAiC,oJAKzBpM,U,iCALRoM,I,EADb,GACa,EAAAA,qC,+DAAAA,EAAiC,E,KAD7C,EAAA9mF,a,8GAMoB06E,WAAM,O,6+CCd3B,WAaA,GALA,MACA,KACA,KACA,KAEA,Q,oCAEA,aAYI,WAAsB9vC,EAAwC9rC,EAChDshB,EAAoD/f,GAD5C,KAAAuqC,gBAAwC,KAAA9rC,cAChD,KAAAshB,uBAAoD,KAAA/f,aAVxD,KAAAqoF,cAAgB,IAAI,EAAAt8D,aACpB,KAAAy8D,gBAAkB,IAAI,EAAAz8D,aAEhC,KAAA+f,UAAoB,EACpB,KAAAkmB,OAAqB,IAAI,EAAA99C,W,OAQnB,YAAA5U,SAAN,W,0FACI,SAAMP,KAAKsI,Q,cAAX,S,YAGE,YAAAgyB,OAAN,W,kGACI,GAAwB,MAApBt6B,KAAKizD,OAAOr1D,MAAqC,KAArBoC,KAAKizD,OAAOr1D,KAGxC,OAFAoC,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAC5D0B,KAAKN,YAAYpB,EAAE,iBAChB,CAAP,GAAO,G,iBAIQ,O,sBAAA,GAAM0B,KAAKwrC,cAAcjK,QAAQvhC,KAAKizD,S,OAErD,OAFMA,EAAS,SACfjzD,KAAKu6B,YAAcv6B,KAAKwrC,cAAc4/D,eAAen4C,GACrD,GAAMjzD,KAAKu6B,a,OAIX,OAJA,SACAv6B,KAAKghB,qBAAqB0J,UAAU,UAAW,KAC3C1qB,KAAKN,YAAYpB,EAAE0B,KAAK+sC,SAAW,eAAiB,gBACxD/sC,KAAKspF,cAAc37D,KAAK3tB,KAAKizD,QACtB,CAAP,GAAO,G,yBAEPjzD,KAAKiB,WAAWW,MAAM,G,aAG1B,MAAO,CAAP,GAAO,WAGL,YAAA0uC,OAAN,W,gGACsB,SAAMtwC,KAAKghB,qBAAqBqoB,WAC9CrpC,KAAKN,YAAYpB,EAAE,4BAA6B0B,KAAKN,YAAYpB,EAAE,gBACnE0B,KAAKN,YAAYpB,EAAE,OAAQ0B,KAAKN,YAAYpB,EAAE,MAAO,Y,OACzD,IAHkB,SAId,MAAO,CAAP,GAAO,G,iBAKP,O,sBADA0B,KAAK2iE,cAAgB3iE,KAAKwrC,cAAc+F,iBAAiBvxC,KAAKizD,OAAOrzD,IACrE,GAAMI,KAAK2iE,e,cAAX,SACA3iE,KAAKghB,qBAAqB0J,UAAU,UAAW,KAAM1qB,KAAKN,YAAYpB,EAAE,kBACxE0B,KAAKypF,gBAAgB97D,KAAK3tB,KAAKizD,Q,+BAE/BjzD,KAAKiB,WAAWW,MAAM,G,aAG1B,MAAO,CAAP,GAAO,WAGK,YAAA0G,KAAhB,W,yGACItI,KAAK+sC,SAA4B,MAAjB/sC,KAAKymB,SAEjBzmB,KAAK+sC,UACL/sC,KAAK+sC,UAAW,EAChB/sC,KAAKM,MAAQN,KAAKN,YAAYpB,EAAE,cACjB,GAAM0B,KAAKwrC,cAAcvtC,IAAI+B,KAAKymB,YAHjD,M,OAIc,OADRwsC,EAAS,SACf,EAAAjzD,KAAc,GAAMizD,EAAO33C,W,cAA3B,EAAK23C,OAAS,S,aAEdjzD,KAAKM,MAAQN,KAAKN,YAAYpB,EAAE,a,oEArE/B8qF,GAAsB,wJ,iCAAtBA,EAAsB,yG,EADnC,GACa,EAAAA,0B,+DAAAA,EAAsB,E,KADlC,EAAAxoF,a,oHAEY6lB,SAAU,CAAF,C,KAAhB,EAAA1lB,QACSuoF,cAAa,E,KAAtB,EAAA56D,SACS+6D,gBAAe,E,KAAxB,EAAA/6D,Y,q+CCnBL,WAQA,SAaA,GAXA,MACA,MACA,KACA,KACA,KACA,KAMA,O,mDAEA,aAaI,WAAsBgd,EAAgD1qB,EACxDthB,EAAoC49B,EACpCiO,EAAsCtqC,GAF9B,KAAAyqC,oBAAgD,KAAA1qB,uBACxD,KAAAthB,cAAoC,KAAA49B,cACpC,KAAAiO,gBAAsC,KAAAtqC,aAX1C,KAAAkoF,eAAiB,IAAI,EAAAn8D,aAI/B,KAAA5Z,YAAgC,GAChC,KAAAmlC,cAAgC,GAEtB,KAAAikC,qBAAyC,G,OAM7C,YAAAj8E,SAAN,W,0FACI,SAAMP,KAAK+e,Q,cAAX,S,YAGE,YAAAA,KAAN,W,sGAC2B,SAAM/e,KAAK0rC,kBAAkBgf,mB,OAEvC,OAFP+xB,EAAiB,SACvBz8E,KAAKw8E,qBAAuBC,EAAe10E,KAAI,SAAArK,GAAK,OAAAA,KAAGoR,QAAO,SAAApR,GAAK,OAACA,EAAEyxB,YACzD,GAAMnvB,KAAKs9B,YAAY8a,uB,OAIf,OAJfC,EAAO,SACbr4C,KAAKu4C,cAAgBF,EAAKC,KAAK,EAAA/vC,MAAMwF,gBAAgB/N,KAAKN,YAAa,SAClEoP,QAAO,SAAAhR,GAAK,OAAAA,EAAEiiB,SAAWjiB,EAAE6nB,SAAW,EAAA4L,2BAA2B+hB,aAEjD,GAAMtzC,KAAKurC,cAActtC,IAAI+B,KAAKk3B,W,OACzC,OADR2iD,EAAe,SACrB,EAAA75E,KAAc,GAAM65E,EAAav+D,W,cAAjC,EAAK5I,OAAS,SACa,MAAvB1S,KAAKiQ,gBAA0BjQ,KAAKu4C,cAAcv8C,OAAS,IAC3DgE,KAAKiQ,eAAiBjQ,KAAKu4C,cAAc,GAAG34C,IAEhDI,KAAK08E,oB,YAGT,YAAAA,kBAAA,sBACI18E,KAAKw8E,qBAAqB5uE,SAAQ,SAAAlQ,GAAK,OAACA,EAAUyzC,SAAU,KACjC,MAAvBnxC,KAAKiQ,gBAA+D,IAArCjQ,KAAKw8E,qBAAqBxgF,OACzDgE,KAAKoT,YAAc,GAEnBpT,KAAKoT,YAAcpT,KAAKw8E,qBAAqB1tE,QAAO,SAAApR,GAAK,OAAAA,EAAEuS,iBAAmB,EAAKA,mBAIrF,YAAAqqB,OAAN,W,qHAII,OAAqC,KAH/B0yE,EAAwBhtG,KAAKoT,YAC9BtE,QAAO,SAAApR,GAAK,QAAGA,EAAUyzC,WACzBppC,KAAI,SAAArK,GAAK,OAAAA,EAAEkC,OACU5D,QACtBgE,KAAKghB,qBAAqB0J,UAAU,QAAS1qB,KAAKN,YAAYpB,EAAE,iBAC5D0B,KAAKN,YAAYpB,EAAE,wBACvB,KAGiB,GAAM0B,KAAKurC,cAActtC,IAAI+B,KAAKk3B,W,OACpC,SADE,SACiB5b,W,OAAhC85F,EAAa,SACb16C,EAA0E,QAAnE,EAA6D,QAA7D,EAAG16D,KAAKu4C,cAAcxqB,MAAK,SAAAjwB,GAAK,OAAAA,EAAE8B,KAAO,EAAKqQ,yBAAe,eAAErS,YAAI,QAAIoC,KAAKN,YAAYpB,EAAE,gB,iBASnG,O,sBANA0B,KAAKu6B,YAAcv6B,KAAKurC,cAAc8pE,gBAAgBD,EAAYp1G,KAAKiQ,eACnE+8F,GAAuB3rG,MAAK,gD,kCACxBrB,KAAKmpF,eAAex7D,OACpB3tB,KAAKghB,qBAAqB0J,UAAU,UAAW,KAC3C1qB,KAAKN,YAAYpB,EAAE,iBAAkB82G,EAAWx3G,KAAM88D,I,aAElE,GAAM16D,KAAKu6B,a,OACX,OADA,SACO,CAAP,GAAO,G,yBAEPv6B,KAAKiB,WAAWW,MAAM,G,aAE1B,MAAO,CAAP,GAAO,WAGX,sBAAI,sBAAO,C,IAAX,WACI,GAAwB,MAApB5B,KAAKoT,YACL,IAAK,IAAItX,EAAI,EAAGA,EAAIkE,KAAKoT,YAAYpX,OAAQF,IACzC,GAAKkE,KAAKoT,YAAYtX,GAAWq1C,QAC7B,OAAO,EAInB,OAAO,G,iEAjFF83C,GAAc,oO,iCAAdA,EAAc,yG,EAD3B,GACa,EAAAA,kB,+DAAAA,EAAc,E,KAD1B,EAAAroF,a,oKAEYs2B,SAAU,CAAF,C,KAAhB,EAAAn2B,QACQkP,eAAgB,CAAF,C,KAAtB,EAAAlP,QACSooF,eAAc,E,KAAvB,EAAAz6D,Y,qHC3BL,mBAAa,EAAA8/D,iC,sdCAb,IAEA,cAII,WAAYjtF,GAAZ,MACI,YAAMA,IAAS,K,OACf,EAAKgU,SAAW,EAAKvS,oBAAoB,YACzC,EAAKqiC,aAAe,EAAKriC,oBAAoB,gB,EAErD,OAT6C,OAS7C,EATA,CAFA,MAE6CQ,cAAhC,EAAAo2C,2B,oHCAb,mBAAa,EAAAu1C,gC,sHCFb,mBAAa,EAAAK,kC,iGCAb,aACA,OAIA,OACA,OACA,QACA,QAEA,QACA,SAEA,SACA,SACA,SAEA,SACA,SACA,SACA,SACA,SAEA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SAEA,SACA,SACA,SACA,SAGA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SAEA,SACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAIA,UACA,UAGA,UACA,UAGA,UAGA,UACA,UAGA,UAIA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UAEA,UAEA,UACA,SACA,UACA,UAEA,SACA,SACA,SACA,UACA,WACA,UACA,SACA,UACA,SACA,SACA,UAEA,UACA,QACA,WACA,UACA,SAEA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WAEA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,U,iBAEA,EAAA8lB,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAY,SAC/B,EAAAA,mBAAmB,WAAY,SAC/B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAY,SAC/B,EAAAA,mBAAmB,WAAY,SAC/B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAU,MAC7B,EAAAA,mBAAmB,WAAY,SAC/B,EAAAA,mBAAmB,WAAY,SAE/B,gC,wCAwManb,I,iCAAAA,I,sCAHE,CAAC,EAAAob,SAAU,GAAA5lF,WAAY,GAAA7S,cAAa,SApMtC,CACL,EAAA04F,aACA,EAAAnb,YACA,EAAAI,qBACA,EAAAC,eACA,EAAAH,cAAckb,WACd,EAAAC,oBACA,EAAAtX,iB,EARR,GAwMa,EAAAjE,c,iEAAAA,GAAS,eA7Ld,GAAAx5F,mBACA,EAAAk5D,yBACA,GAAAokB,gBACA,EAAAjjB,4BACA,GAAAmT,iBACA,EAAA5Q,qBACA,GAAA9W,mBACA,GAAArc,iBACA,GAAAmN,6BACA,GAAAyP,uBACA,GAAA2qB,mBACA,GAAAhqB,uBACA,GAAA5lD,mBACA,GAAAihD,gBACA,GAAAsN,qBACA,GAAAr2C,mBACA,GAAA07F,gBACA,GAAA1kB,mBACA,GAAA2kB,gBACA,GAAApuB,sBACA,GAAA30B,qBACA,GAAAlB,oBACA,GAAAc,kBACA,GAAAT,qBACA,GAAAK,mBACA,GAAAzvD,iBACA,GAAAm+E,qBACA,GAAAwC,mBACA,GAAA1sC,wBACA,GAAAq6B,oBACA,GAAAv/B,iBACA,GAAAkf,qBACA,GAAAqD,kBACA,GAAAwvB,4BACA,GAAApE,6BACA,GAAAG,uBACA,GAAAp8B,4BACA,GAAAohC,qBACA,GAAArS,yBACA,GAAA0a,gCACA,GAAAf,oCACA,GAAA2C,yBACA,GAAApB,gCACA,GAAAc,iCACA,GAAA9B,6BACA,GAAAV,0BACA,GAAAzhC,gBACA,GAAAS,gCACA,GAAAitB,qBACA,GAAApB,oCACA,GAAA2S,uBACA,EAAAv0C,gBACA,EAAAsjB,wBACA,GAAAvgB,mBACA,EAAAqjB,cACA,GAAAh7D,SACA,GAAAof,cACA,GAAAmvC,gBACA,GAAAY,iCACA,GAAAp4C,uBACA,GAAAuvE,iBACA,EAAAlrB,cACA,EAAAS,eACA,EAAApnB,gBACA,EAAA02B,wBACA,GAAA+a,iBACA,mBACA,oBACA,GAAA/X,6BACA,GAAAzpC,2BACA,GAAAksC,kCACA,wBACA,sBACA,uBACA,sBACA,oBACA,6BACA,wBACA,wBACA,uBACA,kBACA,mBACA,mCACA,mBACA,oCACA,wBACA,sBACA,kBACA,uBACA,kBACA,kBACA,sBACA,oBACA,yBACA,kCACA,qBACA,kBACA,2BACA,uBACA,uBACA,sBACA,GAAAp3B,uBACA,EAAAyf,4BACA,oCACA,kBACA,gCACA,GAAA6uB,2BACA,GAAAL,kCACA,EAAAr2D,0BACA,EAAAy/D,0BACA,GAAAtqE,iBACA,GAAAsgE,iBACA,GAAAxG,iBACA,GAAAp9B,oBACA,EAAAwZ,uBACA,EAAAG,0BACA,EAAAQ,kBACA,GAAA7N,+BACA,GAAAqmD,kBACA,GAAAlmF,WACA,GAAAkkC,oBACA,oBACA,wBACA,GAAA4qB,cACA,GAAAnM,kBACA,GAAA2W,eACA,GAAAkH,2BACA,GAAAU,0BACA,EAAAjzB,aACA,GAAAtnD,mBACA,GAAAc,kBACA,GAAAqX,iBACA,GAAAqpD,eACA,GAAAL,wBACA,GAAAzuB,gCACA,EAAAqX,mBACA,GAAA7X,sBACA,GAAAc,wBACA,EAAA0W,0BACA,GAAArW,2BACA,GAAAI,wBACA,GAAAtuB,yBACA,GAAA+tB,2BACA,GAAAL,0BACA,GAAAuG,iCACA,GAAAg6B,mBACA,GAAA3hC,uBACA,EAAAyY,4BACA,GAAAvb,qBACA,EAAAkU,oBACA,GAAAkuB,0BACA,GAAAvqE,aACA,GAAA48D,eACA,GAAAqQ,qBACA,EAAAnpB,0BACA,EAAAG,6BACA,GAAA5Q,6BACA,GAAA65B,mBACA,GAAA/xB,uCACA,GAAAlC,8BACA,GAAA+B,yBACA,GAAAzB,iCACA,GAAAgB,0BACA,GAAAH,iCACA,GAAA3B,2BACA,GAAAoC,2BACA,GAAAH,6BACA,GAAA4uB,2BACA,GAAA7uC,6BACA,GAAAprB,8BACA,EAAAmxC,yBAAuB,SAnLvB,EAAAk4C,aACA,EAAAnb,YACA,EAAAI,qBACA,EAAAC,eAAc,iBAEd,EAAAgb,oBACA,EAAAtX,cAAY,SAgLZ,GAAAz9F,mBACA,GAAAg1G,gBACA,GAAA/yG,iBACA,GAAAb,mBACA,GAAAuU,mBACA,GAAAc,kBACA,GAAAnX,SACA,GAAA0vB,WACA,GAAA7S,aACA,EAAA43B,gBACA,EAAAG,gBACA,GAAAlQ,+B,gEAKKw1D,GAAS,E,KAxMrB,EAAAU,S,MAAS,CACNC,QAAS,CACL,EAAA0a,aACA,EAAAnb,YACA,EAAAI,qBACA,EAAAC,eACA,EAAAH,cAAckb,WACd,EAAAC,oBACA,EAAAtX,cAEJrD,aAAc,CACV,GAAAp6F,mBACA,EAAAk5D,yBACA,GAAAokB,gBACA,EAAAjjB,4BACA,GAAAmT,iBACA,EAAA5Q,qBACA,GAAA9W,mBACA,GAAArc,iBACA,GAAAmN,6BACA,GAAAyP,uBACA,GAAA2qB,mBACA,GAAAhqB,uBACA,GAAA5lD,mBACA,GAAAihD,gBACA,GAAAsN,qBACA,GAAAr2C,mBACA,GAAA07F,gBACA,GAAA1kB,mBACA,GAAA2kB,gBACA,GAAApuB,sBACA,GAAA30B,qBACA,GAAAlB,oBACA,GAAAc,kBACA,GAAAT,qBACA,GAAAK,mBACA,GAAAzvD,iBACA,GAAAm+E,qBACA,GAAAwC,mBACA,GAAA1sC,wBACA,GAAAq6B,oBACA,GAAAv/B,iBACA,GAAAkf,qBACA,GAAAqD,kBACA,GAAAwvB,4BACA,GAAApE,6BACA,GAAAG,uBACA,GAAAp8B,4BACA,GAAAohC,qBACA,GAAArS,yBACA,GAAA0a,gCACA,GAAAf,oCACA,GAAA2C,yBACA,GAAApB,gCACA,GAAAc,iCACA,GAAA9B,6BACA,GAAAV,0BACA,GAAAzhC,gBACA,GAAAS,gCACA,GAAAitB,qBACA,GAAApB,oCACA,GAAA2S,uBACA,EAAAv0C,gBACA,EAAAsjB,wBACA,GAAAvgB,mBACA,EAAAqjB,cACA,GAAAh7D,SACA,GAAAof,cACA,GAAAmvC,gBACA,GAAAY,iCACA,GAAAp4C,uBACA,GAAAuvE,iBACA,EAAAlrB,cACA,EAAAS,eACA,EAAApnB,gBACA,EAAA02B,wBACA,GAAA+a,iBACA,mBACA,oBACA,GAAA/X,6BACA,GAAAzpC,2BACA,GAAAksC,kCACA,wBACA,sBACA,uBACA,sBACA,oBACA,6BACA,wBACA,wBACA,uBACA,kBACA,mBACA,mCACA,mBACA,oCACA,wBACA,sBACA,kBACA,uBACA,kBACA,kBACA,sBACA,oBACA,yBACA,kCACA,qBACA,kBACA,2BACA,uBACA,uBACA,sBACA,GAAAp3B,uBACA,EAAAyf,4BACA,oCACA,kBACA,gCACA,GAAA6uB,2BACA,GAAAL,kCACA,EAAAr2D,0BACA,EAAAy/D,0BACA,GAAAtqE,iBACA,GAAAsgE,iBACA,GAAAxG,iBACA,GAAAp9B,oBACA,EAAAwZ,uBACA,EAAAG,0BACA,EAAAQ,kBACA,GAAA7N,+BACA,GAAAqmD,kBACA,GAAAlmF,WACA,GAAAkkC,oBACA,oBACA,wBACA,GAAA4qB,cACA,GAAAnM,kBACA,GAAA2W,eACA,GAAAkH,2BACA,GAAAU,0BACA,EAAAjzB,aACA,GAAAtnD,mBACA,GAAAc,kBACA,GAAAqX,iBACA,GAAAqpD,eACA,GAAAL,wBACA,GAAAzuB,gCACA,EAAAqX,mBACA,GAAA7X,sBACA,GAAAc,wBACA,EAAA0W,0BACA,GAAArW,2BACA,GAAAI,wBACA,GAAAtuB,yBACA,GAAA+tB,2BACA,GAAAL,0BACA,GAAAuG,iCACA,GAAAg6B,mBACA,GAAA3hC,uBACA,EAAAyY,4BACA,GAAAvb,qBACA,EAAAkU,oBACA,GAAAkuB,0BACA,GAAAvqE,aACA,GAAA48D,eACA,GAAAqQ,qBACA,EAAAnpB,0BACA,EAAAG,6BACA,GAAA5Q,6BACA,GAAA65B,mBACA,GAAA/xB,uCACA,GAAAlC,8BACA,GAAA+B,yBACA,GAAAzB,iCACA,GAAAgB,0BACA,GAAAH,iCACA,GAAA3B,2BACA,GAAAoC,2BACA,GAAAH,6BA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","file":"app/main.4245acab07d7c69f08cc.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([963,2]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export abstract class I18nService {\n locale: string;\n supportedTranslationLocales: string[];\n translationLocale: string;\n collator: Intl.Collator;\n localeNames: Map;\n t: (id: string, p1?: string, p2?: string, p3?: string) => string;\n translate: (id: string, p1?: string, p2?: string, p3?: string) => string;\n}\n","import { LogLevelType } from '../enums/logLevelType';\n\nexport abstract class LogService {\n debug: (message: string) => void;\n info: (message: string) => void;\n warning: (message: string) => void;\n error: (message: string) => void;\n write: (level: LogLevelType, message: string) => void;\n time: (label: string) => void;\n timeEnd: (label: string) => [number, number];\n}\n","import { DeviceType } from '../enums/deviceType';\nimport { ThemeType } from '../enums/themeType';\n\nexport abstract class PlatformUtilsService {\n identityClientId: string;\n getDevice: () => DeviceType;\n getDeviceString: () => string;\n isFirefox: () => boolean;\n isChrome: () => boolean;\n isEdge: () => boolean;\n isOpera: () => boolean;\n isVivaldi: () => boolean;\n isSafari: () => boolean;\n isIE: () => boolean;\n isMacAppStore: () => boolean;\n isViewOpen: () => Promise;\n launchUri: (uri: string, options?: any) => void;\n saveFile: (win: Window, blobData: any, blobOptions: any, fileName: string) => void;\n getApplicationVersion: () => Promise;\n supportsWebAuthn: (win: Window) => boolean;\n supportsDuo: () => boolean;\n showToast: (type: 'error' | 'success' | 'warning' | 'info', title: string, text: string | string[],\n options?: any) => void;\n showDialog: (body: string, title?: string, confirmText?: string, cancelText?: string,\n type?: string, bodyIsHtml?: boolean) => Promise;\n isDev: () => boolean;\n isSelfHost: () => boolean;\n copyToClipboard: (text: string, options?: any) => void | boolean;\n readFromClipboard: (options?: any) => Promise;\n supportsBiometric: () => Promise;\n authenticateBiometric: () => Promise;\n getDefaultSystemTheme: () => Promise;\n onDefaultSystemThemeChange: (callback: ((theme: ThemeType.Light | ThemeType.Dark) => unknown)) => unknown;\n getEffectiveTheme: () => Promise;\n supportsSecureStorage: () => boolean;\n}\n","import { PolicyType } from '../enums/policyType';\nimport { SetKeyConnectorKeyRequest } from '../models/request/account/setKeyConnectorKeyRequest';\nimport { VerifyOTPRequest } from '../models/request/account/verifyOTPRequest';\n\nimport { AttachmentRequest } from '../models/request/attachmentRequest';\n\nimport { BitPayInvoiceRequest } from '../models/request/bitPayInvoiceRequest';\nimport { CipherBulkDeleteRequest } from '../models/request/cipherBulkDeleteRequest';\nimport { CipherBulkMoveRequest } from '../models/request/cipherBulkMoveRequest';\nimport { CipherBulkRestoreRequest } from '../models/request/cipherBulkRestoreRequest';\nimport { CipherBulkShareRequest } from '../models/request/cipherBulkShareRequest';\nimport { CipherCollectionsRequest } from '../models/request/cipherCollectionsRequest';\nimport { CipherCreateRequest } from '../models/request/cipherCreateRequest';\nimport { CipherRequest } from '../models/request/cipherRequest';\nimport { CipherShareRequest } from '../models/request/cipherShareRequest';\nimport { CollectionRequest } from '../models/request/collectionRequest';\nimport { DeleteRecoverRequest } from '../models/request/deleteRecoverRequest';\nimport { EmailRequest } from '../models/request/emailRequest';\nimport { EmailTokenRequest } from '../models/request/emailTokenRequest';\nimport { EmergencyAccessAcceptRequest } from '../models/request/emergencyAccessAcceptRequest';\nimport { EmergencyAccessConfirmRequest } from '../models/request/emergencyAccessConfirmRequest';\nimport { EmergencyAccessInviteRequest } from '../models/request/emergencyAccessInviteRequest';\nimport { EmergencyAccessPasswordRequest } from '../models/request/emergencyAccessPasswordRequest';\nimport { EmergencyAccessUpdateRequest } from '../models/request/emergencyAccessUpdateRequest';\nimport { EventRequest } from '../models/request/eventRequest';\nimport { FolderRequest } from '../models/request/folderRequest';\nimport { GroupRequest } from '../models/request/groupRequest';\nimport { IapCheckRequest } from '../models/request/iapCheckRequest';\nimport { ImportCiphersRequest } from '../models/request/importCiphersRequest';\nimport { ImportDirectoryRequest } from '../models/request/importDirectoryRequest';\nimport { ImportOrganizationCiphersRequest } from '../models/request/importOrganizationCiphersRequest';\nimport { KdfRequest } from '../models/request/kdfRequest';\nimport { KeyConnectorUserKeyRequest } from '../models/request/keyConnectorUserKeyRequest';\nimport { KeysRequest } from '../models/request/keysRequest';\nimport { OrganizationSponsorshipCreateRequest } from '../models/request/organization/organizationSponsorshipCreateRequest';\nimport { OrganizationSponsorshipRedeemRequest } from '../models/request/organization/organizationSponsorshipRedeemRequest';\nimport { OrganizationSsoRequest } from '../models/request/organization/organizationSsoRequest';\nimport { OrganizationCreateRequest } from '../models/request/organizationCreateRequest';\nimport { OrganizationImportRequest } from '../models/request/organizationImportRequest';\nimport { OrganizationKeysRequest } from '../models/request/organizationKeysRequest';\nimport { OrganizationSubscriptionUpdateRequest } from '../models/request/organizationSubscriptionUpdateRequest';\nimport { OrganizationTaxInfoUpdateRequest } from '../models/request/organizationTaxInfoUpdateRequest';\nimport { OrganizationUpdateRequest } from '../models/request/organizationUpdateRequest';\nimport { OrganizationUpgradeRequest } from '../models/request/organizationUpgradeRequest';\nimport { OrganizationUserAcceptRequest } from '../models/request/organizationUserAcceptRequest';\nimport { OrganizationUserBulkConfirmRequest } from '../models/request/organizationUserBulkConfirmRequest';\nimport { OrganizationUserBulkRequest } from '../models/request/organizationUserBulkRequest';\nimport { OrganizationUserConfirmRequest } from '../models/request/organizationUserConfirmRequest';\nimport { OrganizationUserInviteRequest } from '../models/request/organizationUserInviteRequest';\nimport { OrganizationUserResetPasswordEnrollmentRequest } from '../models/request/organizationUserResetPasswordEnrollmentRequest';\nimport { OrganizationUserResetPasswordRequest } from '../models/request/organizationUserResetPasswordRequest';\nimport { OrganizationUserUpdateGroupsRequest } from '../models/request/organizationUserUpdateGroupsRequest';\nimport { OrganizationUserUpdateRequest } from '../models/request/organizationUserUpdateRequest';\nimport { PasswordHintRequest } from '../models/request/passwordHintRequest';\nimport { PasswordRequest } from '../models/request/passwordRequest';\nimport { PaymentRequest } from '../models/request/paymentRequest';\nimport { PolicyRequest } from '../models/request/policyRequest';\nimport { PreloginRequest } from '../models/request/preloginRequest';\nimport { ProviderAddOrganizationRequest } from '../models/request/provider/providerAddOrganizationRequest';\nimport { ProviderOrganizationCreateRequest } from '../models/request/provider/providerOrganizationCreateRequest';\nimport { ProviderSetupRequest } from '../models/request/provider/providerSetupRequest';\nimport { ProviderUpdateRequest } from '../models/request/provider/providerUpdateRequest';\nimport { ProviderUserAcceptRequest } from '../models/request/provider/providerUserAcceptRequest';\nimport { ProviderUserBulkConfirmRequest } from '../models/request/provider/providerUserBulkConfirmRequest';\nimport { ProviderUserBulkRequest } from '../models/request/provider/providerUserBulkRequest';\nimport { ProviderUserConfirmRequest } from '../models/request/provider/providerUserConfirmRequest';\nimport { ProviderUserInviteRequest } from '../models/request/provider/providerUserInviteRequest';\nimport { ProviderUserUpdateRequest } from '../models/request/provider/providerUserUpdateRequest';\nimport { RegisterRequest } from '../models/request/registerRequest';\nimport { SeatRequest } from '../models/request/seatRequest';\nimport { SecretVerificationRequest } from '../models/request/secretVerificationRequest';\nimport { SelectionReadOnlyRequest } from '../models/request/selectionReadOnlyRequest';\nimport { SendAccessRequest } from '../models/request/sendAccessRequest';\nimport { SendRequest } from '../models/request/sendRequest';\nimport { SetPasswordRequest } from '../models/request/setPasswordRequest';\nimport { StorageRequest } from '../models/request/storageRequest';\nimport { TaxInfoUpdateRequest } from '../models/request/taxInfoUpdateRequest';\nimport { TokenRequest } from '../models/request/tokenRequest';\nimport { TwoFactorEmailRequest } from '../models/request/twoFactorEmailRequest';\nimport { TwoFactorProviderRequest } from '../models/request/twoFactorProviderRequest';\nimport { TwoFactorRecoveryRequest } from '../models/request/twoFactorRecoveryRequest';\nimport { UpdateDomainsRequest } from '../models/request/updateDomainsRequest';\nimport { UpdateKeyRequest } from '../models/request/updateKeyRequest';\nimport { UpdateProfileRequest } from '../models/request/updateProfileRequest';\nimport { UpdateTempPasswordRequest } from '../models/request/updateTempPasswordRequest';\nimport { UpdateTwoFactorAuthenticatorRequest } from '../models/request/updateTwoFactorAuthenticatorRequest';\nimport { UpdateTwoFactorDuoRequest } from '../models/request/updateTwoFactorDuoRequest';\nimport { UpdateTwoFactorEmailRequest } from '../models/request/updateTwoFactorEmailRequest';\nimport { UpdateTwoFactorWebAuthnDeleteRequest } from '../models/request/updateTwoFactorWebAuthnDeleteRequest';\nimport { UpdateTwoFactorWebAuthnRequest } from '../models/request/updateTwoFactorWebAuthnRequest';\nimport { UpdateTwoFactorYubioOtpRequest } from '../models/request/updateTwoFactorYubioOtpRequest';\nimport { VerifyBankRequest } from '../models/request/verifyBankRequest';\nimport { VerifyDeleteRecoverRequest } from '../models/request/verifyDeleteRecoverRequest';\nimport { VerifyEmailRequest } from '../models/request/verifyEmailRequest';\n\nimport { ApiKeyResponse } from '../models/response/apiKeyResponse';\nimport { AttachmentResponse } from '../models/response/attachmentResponse';\nimport { AttachmentUploadDataResponse } from '../models/response/attachmentUploadDataResponse';\nimport { BillingResponse } from '../models/response/billingResponse';\nimport { BreachAccountResponse } from '../models/response/breachAccountResponse';\nimport { CipherResponse } from '../models/response/cipherResponse';\nimport {\n CollectionGroupDetailsResponse,\n CollectionResponse,\n} from '../models/response/collectionResponse';\nimport { DomainsResponse } from '../models/response/domainsResponse';\nimport {\n EmergencyAccessGranteeDetailsResponse,\n EmergencyAccessGrantorDetailsResponse,\n EmergencyAccessTakeoverResponse,\n EmergencyAccessViewResponse\n} from '../models/response/emergencyAccessResponse';\nimport { EventResponse } from '../models/response/eventResponse';\nimport { FolderResponse } from '../models/response/folderResponse';\nimport {\n GroupDetailsResponse,\n GroupResponse,\n} from '../models/response/groupResponse';\nimport { IdentityCaptchaResponse } from '../models/response/identityCaptchaResponse';\nimport { IdentityTokenResponse } from '../models/response/identityTokenResponse';\nimport { IdentityTwoFactorResponse } from '../models/response/identityTwoFactorResponse';\nimport { KeyConnectorUserKeyResponse } from '../models/response/keyConnectorUserKeyResponse';\nimport { ListResponse } from '../models/response/listResponse';\nimport { OrganizationSsoResponse } from '../models/response/organization/organizationSsoResponse';\nimport { OrganizationAutoEnrollStatusResponse } from '../models/response/organizationAutoEnrollStatusResponse';\nimport { OrganizationKeysResponse } from '../models/response/organizationKeysResponse';\nimport { OrganizationResponse } from '../models/response/organizationResponse';\nimport { OrganizationSubscriptionResponse } from '../models/response/organizationSubscriptionResponse';\nimport { OrganizationUserBulkPublicKeyResponse } from '../models/response/organizationUserBulkPublicKeyResponse';\nimport { OrganizationUserBulkResponse } from '../models/response/organizationUserBulkResponse';\nimport {\n OrganizationUserDetailsResponse,\n OrganizationUserResetPasswordDetailsReponse,\n OrganizationUserUserDetailsResponse,\n} from '../models/response/organizationUserResponse';\nimport { PaymentResponse } from '../models/response/paymentResponse';\nimport { PlanResponse } from '../models/response/planResponse';\nimport { PolicyResponse } from '../models/response/policyResponse';\nimport { PreloginResponse } from '../models/response/preloginResponse';\nimport { ProfileResponse } from '../models/response/profileResponse';\nimport { ProviderOrganizationOrganizationDetailsResponse, ProviderOrganizationResponse } from '../models/response/provider/providerOrganizationResponse';\nimport { ProviderResponse } from '../models/response/provider/providerResponse';\nimport { ProviderUserBulkPublicKeyResponse } from '../models/response/provider/providerUserBulkPublicKeyResponse';\nimport { ProviderUserBulkResponse } from '../models/response/provider/providerUserBulkResponse';\nimport { ProviderUserResponse, ProviderUserUserDetailsResponse } from '../models/response/provider/providerUserResponse';\nimport { SelectionReadOnlyResponse } from '../models/response/selectionReadOnlyResponse';\nimport { SendAccessResponse } from '../models/response/sendAccessResponse';\nimport { SendFileDownloadDataResponse } from '../models/response/sendFileDownloadDataResponse';\nimport { SendFileUploadDataResponse } from '../models/response/sendFileUploadDataResponse';\nimport { SendResponse } from '../models/response/sendResponse';\nimport { SubscriptionResponse } from '../models/response/subscriptionResponse';\nimport { SyncResponse } from '../models/response/syncResponse';\nimport { TaxInfoResponse } from '../models/response/taxInfoResponse';\nimport { TaxRateResponse } from '../models/response/taxRateResponse';\nimport { TwoFactorAuthenticatorResponse } from '../models/response/twoFactorAuthenticatorResponse';\nimport { TwoFactorDuoResponse } from '../models/response/twoFactorDuoResponse';\nimport { TwoFactorEmailResponse } from '../models/response/twoFactorEmailResponse';\nimport { TwoFactorProviderResponse } from '../models/response/twoFactorProviderResponse';\nimport { TwoFactorRecoverResponse } from '../models/response/twoFactorRescoverResponse';\nimport { ChallengeResponse, TwoFactorWebAuthnResponse } from '../models/response/twoFactorWebAuthnResponse';\nimport { TwoFactorYubiKeyResponse } from '../models/response/twoFactorYubiKeyResponse';\nimport { UserKeyResponse } from '../models/response/userKeyResponse';\n\nimport { SendAccessView } from '../models/view/sendAccessView';\n\nexport abstract class ApiService {\n postIdentityToken: (request: TokenRequest) => Promise;\n refreshIdentityToken: () => Promise;\n\n getProfile: () => Promise;\n getUserBilling: () => Promise;\n getUserSubscription: () => Promise;\n getTaxInfo: () => Promise;\n putProfile: (request: UpdateProfileRequest) => Promise;\n putTaxInfo: (request: TaxInfoUpdateRequest) => Promise;\n postPrelogin: (request: PreloginRequest) => Promise;\n postEmailToken: (request: EmailTokenRequest) => Promise;\n postEmail: (request: EmailRequest) => Promise;\n postPassword: (request: PasswordRequest) => Promise;\n setPassword: (request: SetPasswordRequest) => Promise;\n postSetKeyConnectorKey: (request: SetKeyConnectorKeyRequest) => Promise;\n postSecurityStamp: (request: SecretVerificationRequest) => Promise;\n deleteAccount: (request: SecretVerificationRequest) => Promise;\n getAccountRevisionDate: () => Promise;\n postPasswordHint: (request: PasswordHintRequest) => Promise;\n postRegister: (request: RegisterRequest) => Promise;\n postPremium: (data: FormData) => Promise;\n postIapCheck: (request: IapCheckRequest) => Promise;\n postReinstatePremium: () => Promise;\n postCancelPremium: () => Promise;\n postAccountStorage: (request: StorageRequest) => Promise;\n postAccountPayment: (request: PaymentRequest) => Promise;\n postAccountLicense: (data: FormData) => Promise;\n postAccountKey: (request: UpdateKeyRequest) => Promise;\n postAccountKeys: (request: KeysRequest) => Promise;\n postAccountVerifyEmail: () => Promise;\n postAccountVerifyEmailToken: (request: VerifyEmailRequest) => Promise;\n postAccountVerifyPassword: (request: SecretVerificationRequest) => Promise;\n postAccountRecoverDelete: (request: DeleteRecoverRequest) => Promise;\n postAccountRecoverDeleteToken: (request: VerifyDeleteRecoverRequest) => Promise;\n postAccountKdf: (request: KdfRequest) => Promise;\n postUserApiKey: (id: string, request: SecretVerificationRequest) => Promise;\n postUserRotateApiKey: (id: string, request: SecretVerificationRequest) => Promise;\n putUpdateTempPassword: (request: UpdateTempPasswordRequest) => Promise;\n postAccountRequestOTP: () => Promise;\n postAccountVerifyOTP: (request: VerifyOTPRequest) => Promise;\n postConvertToKeyConnector: () => Promise;\n\n getFolder: (id: string) => Promise;\n postFolder: (request: FolderRequest) => Promise;\n putFolder: (id: string, request: FolderRequest) => Promise;\n deleteFolder: (id: string) => Promise;\n\n getSend: (id: string) => Promise;\n postSendAccess: (id: string, request: SendAccessRequest, apiUrl?: string) => Promise;\n getSends: () => Promise>;\n postSend: (request: SendRequest) => Promise;\n postFileTypeSend: (request: SendRequest) => Promise;\n postSendFile: (sendId: string, fileId: string, data: FormData) => Promise;\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n postSendFileLegacy: (data: FormData) => Promise;\n putSend: (id: string, request: SendRequest) => Promise;\n putSendRemovePassword: (id: string) => Promise;\n deleteSend: (id: string) => Promise;\n getSendFileDownloadData: (send: SendAccessView, request: SendAccessRequest, apiUrl?: string) => Promise;\n renewSendFileUploadUrl: (sendId: string, fileId: string) => Promise;\n\n getCipher: (id: string) => Promise;\n getCipherAdmin: (id: string) => Promise;\n getAttachmentData: (cipherId: string, attachmentId: string, emergencyAccessId?: string) => Promise;\n getCiphersOrganization: (organizationId: string) => Promise>;\n postCipher: (request: CipherRequest) => Promise;\n postCipherCreate: (request: CipherCreateRequest) => Promise;\n postCipherAdmin: (request: CipherCreateRequest) => Promise;\n putCipher: (id: string, request: CipherRequest) => Promise;\n putCipherAdmin: (id: string, request: CipherRequest) => Promise;\n deleteCipher: (id: string) => Promise;\n deleteCipherAdmin: (id: string) => Promise;\n deleteManyCiphers: (request: CipherBulkDeleteRequest) => Promise;\n deleteManyCiphersAdmin: (request: CipherBulkDeleteRequest) => Promise;\n putMoveCiphers: (request: CipherBulkMoveRequest) => Promise;\n putShareCipher: (id: string, request: CipherShareRequest) => Promise;\n putShareCiphers: (request: CipherBulkShareRequest) => Promise;\n putCipherCollections: (id: string, request: CipherCollectionsRequest) => Promise;\n putCipherCollectionsAdmin: (id: string, request: CipherCollectionsRequest) => Promise;\n postPurgeCiphers: (request: SecretVerificationRequest, organizationId?: string) => Promise;\n postImportCiphers: (request: ImportCiphersRequest) => Promise;\n postImportOrganizationCiphers: (organizationId: string, request: ImportOrganizationCiphersRequest) => Promise;\n putDeleteCipher: (id: string) => Promise;\n putDeleteCipherAdmin: (id: string) => Promise;\n putDeleteManyCiphers: (request: CipherBulkDeleteRequest) => Promise;\n putDeleteManyCiphersAdmin: (request: CipherBulkDeleteRequest) => Promise;\n putRestoreCipher: (id: string) => Promise;\n putRestoreCipherAdmin: (id: string) => Promise;\n putRestoreManyCiphers: (request: CipherBulkRestoreRequest) => Promise>;\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n postCipherAttachmentLegacy: (id: string, data: FormData) => Promise;\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n postCipherAttachmentAdminLegacy: (id: string, data: FormData) => Promise;\n postCipherAttachment: (id: string, request: AttachmentRequest) => Promise;\n deleteCipherAttachment: (id: string, attachmentId: string) => Promise;\n deleteCipherAttachmentAdmin: (id: string, attachmentId: string) => Promise;\n postShareCipherAttachment: (id: string, attachmentId: string, data: FormData,\n organizationId: string) => Promise;\n renewAttachmentUploadUrl: (id: string, attachmentId: string) => Promise;\n postAttachmentFile: (id: string, attachmentId: string, data: FormData) => Promise;\n\n getCollectionDetails: (organizationId: string, id: string) => Promise;\n getUserCollections: () => Promise>;\n getCollections: (organizationId: string) => Promise>;\n getCollectionUsers: (organizationId: string, id: string) => Promise;\n postCollection: (organizationId: string, request: CollectionRequest) => Promise;\n putCollectionUsers: (organizationId: string, id: string, request: SelectionReadOnlyRequest[]) => Promise;\n putCollection: (organizationId: string, id: string, request: CollectionRequest) => Promise;\n deleteCollection: (organizationId: string, id: string) => Promise;\n deleteCollectionUser: (organizationId: string, id: string, organizationUserId: string) => Promise;\n\n getGroupDetails: (organizationId: string, id: string) => Promise;\n getGroups: (organizationId: string) => Promise>;\n getGroupUsers: (organizationId: string, id: string) => Promise;\n postGroup: (organizationId: string, request: GroupRequest) => Promise;\n putGroup: (organizationId: string, id: string, request: GroupRequest) => Promise;\n putGroupUsers: (organizationId: string, id: string, request: string[]) => Promise;\n deleteGroup: (organizationId: string, id: string) => Promise;\n deleteGroupUser: (organizationId: string, id: string, organizationUserId: string) => Promise;\n\n getPolicy: (organizationId: string, type: PolicyType) => Promise;\n getPolicies: (organizationId: string) => Promise>;\n getPoliciesByToken: (organizationId: string, token: string, email: string, organizationUserId: string) =>\n Promise>;\n getPoliciesByInvitedUser: (\n organizationId: string,\n userId: string\n ) => Promise>;\n putPolicy: (organizationId: string, type: PolicyType, request: PolicyRequest) => Promise;\n\n getOrganizationUser: (organizationId: string, id: string) => Promise;\n getOrganizationUserGroups: (organizationId: string, id: string) => Promise;\n getOrganizationUsers: (organizationId: string) => Promise>;\n getOrganizationUserResetPasswordDetails: (organizationId: string, id: string)\n => Promise;\n postOrganizationUserInvite: (organizationId: string, request: OrganizationUserInviteRequest) => Promise;\n postOrganizationUserReinvite: (organizationId: string, id: string) => Promise;\n postManyOrganizationUserReinvite: (organizationId: string, request: OrganizationUserBulkRequest) => Promise>;\n postOrganizationUserAccept: (organizationId: string, id: string,\n request: OrganizationUserAcceptRequest) => Promise;\n postOrganizationUserConfirm: (organizationId: string, id: string,\n request: OrganizationUserConfirmRequest) => Promise;\n postOrganizationUsersPublicKey: (organizationId: string, request: OrganizationUserBulkRequest) =>\n Promise>;\n postOrganizationUserBulkConfirm: (organizationId: string, request: OrganizationUserBulkConfirmRequest) => Promise>;\n\n putOrganizationUser: (organizationId: string, id: string, request: OrganizationUserUpdateRequest) => Promise;\n putOrganizationUserGroups: (organizationId: string, id: string,\n request: OrganizationUserUpdateGroupsRequest) => Promise;\n putOrganizationUserResetPasswordEnrollment: (organizationId: string, userId: string,\n request: OrganizationUserResetPasswordEnrollmentRequest) => Promise;\n putOrganizationUserResetPassword: (organizationId: string, id: string,\n request: OrganizationUserResetPasswordRequest) => Promise;\n deleteOrganizationUser: (organizationId: string, id: string) => Promise;\n deleteManyOrganizationUsers: (organizationId: string, request: OrganizationUserBulkRequest) => Promise>;\n\n getSync: () => Promise;\n postImportDirectory: (organizationId: string, request: ImportDirectoryRequest) => Promise;\n postPublicImportDirectory: (request: OrganizationImportRequest) => Promise;\n\n getSettingsDomains: () => Promise;\n putSettingsDomains: (request: UpdateDomainsRequest) => Promise;\n\n getTwoFactorProviders: () => Promise>;\n getTwoFactorOrganizationProviders: (organizationId: string) => Promise>;\n getTwoFactorAuthenticator: (request: SecretVerificationRequest) => Promise;\n getTwoFactorEmail: (request: SecretVerificationRequest) => Promise;\n getTwoFactorDuo: (request: SecretVerificationRequest) => Promise;\n getTwoFactorOrganizationDuo: (organizationId: string,\n request: SecretVerificationRequest) => Promise;\n getTwoFactorYubiKey: (request: SecretVerificationRequest) => Promise;\n getTwoFactorWebAuthn: (request: SecretVerificationRequest) => Promise;\n getTwoFactorWebAuthnChallenge: (request: SecretVerificationRequest) => Promise;\n getTwoFactorRecover: (request: SecretVerificationRequest) => Promise;\n putTwoFactorAuthenticator: (\n request: UpdateTwoFactorAuthenticatorRequest) => Promise;\n putTwoFactorEmail: (request: UpdateTwoFactorEmailRequest) => Promise;\n putTwoFactorDuo: (request: UpdateTwoFactorDuoRequest) => Promise;\n putTwoFactorOrganizationDuo: (organizationId: string,\n request: UpdateTwoFactorDuoRequest) => Promise;\n putTwoFactorYubiKey: (request: UpdateTwoFactorYubioOtpRequest) => Promise;\n putTwoFactorWebAuthn: (request: UpdateTwoFactorWebAuthnRequest) => Promise;\n deleteTwoFactorWebAuthn: (request: UpdateTwoFactorWebAuthnDeleteRequest) => Promise;\n putTwoFactorDisable: (request: TwoFactorProviderRequest) => Promise;\n putTwoFactorOrganizationDisable: (organizationId: string,\n request: TwoFactorProviderRequest) => Promise;\n postTwoFactorRecover: (request: TwoFactorRecoveryRequest) => Promise;\n postTwoFactorEmailSetup: (request: TwoFactorEmailRequest) => Promise;\n postTwoFactorEmail: (request: TwoFactorEmailRequest) => Promise;\n\n getEmergencyAccessTrusted: () => Promise>;\n getEmergencyAccessGranted: () => Promise>;\n getEmergencyAccess: (id: string) => Promise;\n getEmergencyGrantorPolicies: (id: string) => Promise>;\n putEmergencyAccess: (id: string, request: EmergencyAccessUpdateRequest) => Promise;\n deleteEmergencyAccess: (id: string) => Promise;\n postEmergencyAccessInvite: (request: EmergencyAccessInviteRequest) => Promise;\n postEmergencyAccessReinvite: (id: string) => Promise;\n postEmergencyAccessAccept: (id: string, request: EmergencyAccessAcceptRequest) => Promise;\n postEmergencyAccessConfirm: (id: string, request: EmergencyAccessConfirmRequest) => Promise;\n postEmergencyAccessInitiate: (id: string) => Promise;\n postEmergencyAccessApprove: (id: string) => Promise;\n postEmergencyAccessReject: (id: string) => Promise;\n postEmergencyAccessTakeover: (id: string) => Promise;\n postEmergencyAccessPassword: (id: string, request: EmergencyAccessPasswordRequest) => Promise;\n postEmergencyAccessView: (id: string) => Promise;\n\n getOrganization: (id: string) => Promise;\n getOrganizationBilling: (id: string) => Promise;\n getOrganizationSubscription: (id: string) => Promise;\n getOrganizationLicense: (id: string, installationId: string) => Promise;\n getOrganizationTaxInfo: (id: string) => Promise;\n getOrganizationAutoEnrollStatus: (identifier: string) => Promise;\n getOrganizationSso: (id: string) => Promise;\n postOrganization: (request: OrganizationCreateRequest) => Promise;\n putOrganization: (id: string, request: OrganizationUpdateRequest) => Promise;\n putOrganizationTaxInfo: (id: string, request: OrganizationTaxInfoUpdateRequest) => Promise;\n postLeaveOrganization: (id: string) => Promise;\n postOrganizationLicense: (data: FormData) => Promise;\n postOrganizationLicenseUpdate: (id: string, data: FormData) => Promise;\n postOrganizationApiKey: (id: string, request: SecretVerificationRequest) => Promise;\n postOrganizationRotateApiKey: (id: string, request: SecretVerificationRequest) => Promise;\n postOrganizationSso: (id: string, request: OrganizationSsoRequest) => Promise;\n postOrganizationUpgrade: (id: string, request: OrganizationUpgradeRequest) => Promise;\n postOrganizationUpdateSubscription: (id: string, request: OrganizationSubscriptionUpdateRequest) => Promise;\n postOrganizationSeat: (id: string, request: SeatRequest) => Promise;\n postOrganizationStorage: (id: string, request: StorageRequest) => Promise;\n postOrganizationPayment: (id: string, request: PaymentRequest) => Promise;\n postOrganizationVerifyBank: (id: string, request: VerifyBankRequest) => Promise;\n postOrganizationCancel: (id: string) => Promise;\n postOrganizationReinstate: (id: string) => Promise;\n deleteOrganization: (id: string, request: SecretVerificationRequest) => Promise;\n getPlans: () => Promise>;\n getTaxRates: () => Promise>;\n getOrganizationKeys: (id: string) => Promise;\n postOrganizationKeys: (id: string, request: OrganizationKeysRequest) => Promise;\n\n postProviderSetup: (id: string, request: ProviderSetupRequest) => Promise;\n getProvider: (id: string) => Promise;\n putProvider: (id: string, request: ProviderUpdateRequest) => Promise;\n\n getProviderUsers: (providerId: string) => Promise>;\n getProviderUser: (providerId: string, id: string) => Promise;\n postProviderUserInvite: (providerId: string, request: ProviderUserInviteRequest) => Promise;\n postProviderUserReinvite: (providerId: string, id: string) => Promise;\n postManyProviderUserReinvite: (providerId: string, request: ProviderUserBulkRequest) => Promise>;\n postProviderUserAccept: (providerId: string, id: string, request: ProviderUserAcceptRequest) => Promise;\n postProviderUserConfirm: (providerId: string, id: string, request: ProviderUserConfirmRequest) => Promise;\n postProviderUsersPublicKey: (providerId: string, request: ProviderUserBulkRequest) =>\n Promise>;\n postProviderUserBulkConfirm: (providerId: string, request: ProviderUserBulkConfirmRequest) => Promise>;\n putProviderUser: (providerId: string, id: string, request: ProviderUserUpdateRequest) => Promise;\n deleteProviderUser: (organizationId: string, id: string) => Promise;\n deleteManyProviderUsers: (providerId: string, request: ProviderUserBulkRequest) => Promise>;\n getProviderClients: (providerId: string) => Promise>;\n postProviderAddOrganization: (providerId: string, request: ProviderAddOrganizationRequest) => Promise;\n postProviderCreateOrganization: (providerId: string, request: ProviderOrganizationCreateRequest) => Promise;\n deleteProviderOrganization: (providerId: string, organizationId: string) => Promise;\n\n getEvents: (start: string, end: string, token: string) => Promise>;\n getEventsCipher: (id: string, start: string, end: string, token: string) => Promise>;\n getEventsOrganization: (id: string, start: string, end: string,\n token: string) => Promise>;\n getEventsOrganizationUser: (organizationId: string, id: string,\n start: string, end: string, token: string) => Promise>;\n getEventsProvider: (id: string, start: string, end: string, token: string) => Promise>;\n getEventsProviderUser: (providerId: string, id: string, start: string, end: string, token: string) => Promise>;\n postEventsCollect: (request: EventRequest[]) => Promise;\n\n deleteSsoUser: (organizationId: string) => Promise;\n getSsoUserIdentifier: () => Promise;\n\n getUserPublicKey: (id: string) => Promise;\n\n getHibpBreach: (username: string) => Promise;\n\n postBitPayInvoice: (request: BitPayInvoiceRequest) => Promise;\n postSetupPayment: () => Promise;\n\n getActiveBearerToken: () => Promise;\n fetch: (request: Request) => Promise;\n nativeFetch: (request: Request) => Promise;\n\n preValidateSso: (identifier: string) => Promise;\n\n postCreateSponsorship: (sponsorshipOrgId: string, request: OrganizationSponsorshipCreateRequest) => Promise;\n deleteRevokeSponsorship: (sponsoringOrganizationId: string) => Promise;\n deleteRemoveSponsorship: (sponsoringOrgId: string) => Promise;\n postPreValidateSponsorshipToken: (sponsorshipToken: string) => Promise;\n postRedeemSponsorship: (sponsorshipToken: string, request: OrganizationSponsorshipRedeemRequest) => Promise;\n postResendSponsorshipOffer: (sponsoringOrgId: string) => Promise;\n\n getUserKeyFromKeyConnector: (keyConnectorUrl: string) => Promise;\n postUserKeyToKeyConnector: (keyConnectorUrl: string, request: KeyConnectorUserKeyRequest) => Promise;\n getKeyConnectorAlive: (keyConnectorUrl: string) => Promise;\n}\n","import { OrganizationData } from '../models/data/organizationData';\nimport { ProviderData } from '../models/data/providerData';\n\nimport { Organization } from '../models/domain/organization';\nimport { Provider } from '../models/domain/provider';\n\nimport { KdfType } from '../enums/kdfType';\n\nexport abstract class UserService {\n setInformation: (userId: string, email: string, kdf: KdfType, kdfIterations: number) => Promise;\n setEmailVerified: (emailVerified: boolean) => Promise;\n setSecurityStamp: (stamp: string) => Promise;\n setForcePasswordReset: (forcePasswordReset: boolean) => Promise;\n getUserId: () => Promise;\n getEmail: () => Promise;\n getSecurityStamp: () => Promise;\n getKdf: () => Promise;\n getKdfIterations: () => Promise;\n getEmailVerified: () => Promise;\n getForcePasswordReset: () => Promise;\n clear: () => Promise;\n isAuthenticated: () => Promise;\n canAccessPremium: () => Promise;\n canManageSponsorships: () => Promise;\n getOrganization: (id: string) => Promise;\n getOrganizationByIdentifier: (identifier: string) => Promise;\n getAllOrganizations: () => Promise;\n replaceOrganizations: (organizations: { [id: string]: OrganizationData; }) => Promise;\n clearOrganizations: (userId: string) => Promise;\n getProvider: (id: string) => Promise;\n getAllProviders: () => Promise;\n replaceProviders: (providers: { [id: string]: ProviderData; }) => Promise;\n clearProviders: (userId: string) => Promise;\n}\n","import {\n Pipe,\n PipeTransform,\n} from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\n@Pipe({\n name: 'i18n',\n})\nexport class I18nPipe implements PipeTransform {\n constructor(private i18nService: I18nService) { }\n\n transform(id: string, p1?: string, p2?: string, p3?: string): string {\n return this.i18nService.t(id, p1, p2, p3);\n }\n}\n","export abstract class MessagingService {\n send: (subscriber: string, arg?: any) => void;\n}\n","import {\n Directive,\n ElementRef,\n Input,\n Renderer2,\n} from '@angular/core';\n\n@Directive({\n selector: '[appA11yTitle]',\n})\nexport class A11yTitleDirective {\n @Input() set appA11yTitle(title: string) {\n this.title = title;\n }\n\n private title: string;\n\n constructor(private el: ElementRef, private renderer: Renderer2) { }\n\n ngOnInit() {\n if (!this.el.nativeElement.hasAttribute('title')) {\n this.renderer.setAttribute(this.el.nativeElement, 'title', this.title);\n }\n if (!this.el.nativeElement.hasAttribute('aria-label')) {\n this.renderer.setAttribute(this.el.nativeElement, 'aria-label', this.title);\n }\n }\n}\n","import {\n Directive,\n ElementRef,\n Input,\n OnChanges,\n} from '@angular/core';\nimport { LogService } from 'jslib-common/abstractions/log.service';\n\nimport { ErrorResponse } from 'jslib-common/models/response/errorResponse';\n\nimport { ValidationService } from '../services/validation.service';\n\n@Directive({\n selector: '[appApiAction]',\n})\nexport class ApiActionDirective implements OnChanges {\n @Input() appApiAction: Promise;\n\n constructor(private el: ElementRef, private validationService: ValidationService,\n private logService: LogService) { }\n\n ngOnChanges(changes: any) {\n if (this.appApiAction == null || this.appApiAction.then == null) {\n return;\n }\n\n this.el.nativeElement.loading = true;\n\n this.appApiAction.then((response: any) => {\n this.el.nativeElement.loading = false;\n }, (e: any) => {\n this.el.nativeElement.loading = false;\n\n if ((e instanceof ErrorResponse || e.constructor.name === 'ErrorResponse') && (e as ErrorResponse).captchaRequired) {\n this.logService.error('Captcha required error response: ' + e.getSingleMessage());\n return;\n }\n this.logService?.error(`Received API exception: ${e}`);\n this.validationService.showError(e);\n });\n }\n}\n","import { EncArrayBuffer } from '../models/domain/encArrayBuffer';\nimport { EncString } from '../models/domain/encString';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { ProfileOrganizationResponse } from '../models/response/profileOrganizationResponse';\nimport { ProfileProviderOrganizationResponse } from '../models/response/profileProviderOrganizationResponse';\nimport { ProfileProviderResponse } from '../models/response/profileProviderResponse';\n\nimport { HashPurpose } from '../enums/hashPurpose';\nimport { KdfType } from '../enums/kdfType';\n\nimport { KeySuffixOptions } from './storage.service';\n\nexport abstract class CryptoService {\n setKey: (key: SymmetricCryptoKey) => Promise;\n setKeyHash: (keyHash: string) => Promise<{}>;\n setEncKey: (encKey: string) => Promise<{}>;\n setEncPrivateKey: (encPrivateKey: string) => Promise<{}>;\n setOrgKeys: (orgs: ProfileOrganizationResponse[], providerOrgs: ProfileProviderOrganizationResponse[]) => Promise<{}>;\n setProviderKeys: (orgs: ProfileProviderResponse[]) => Promise<{}>;\n getKey: (keySuffix?: KeySuffixOptions) => Promise;\n getKeyFromStorage: (keySuffix: KeySuffixOptions) => Promise;\n getKeyHash: () => Promise;\n compareAndUpdateKeyHash: (masterPassword: string, key: SymmetricCryptoKey) => Promise;\n getEncKey: (key?: SymmetricCryptoKey) => Promise;\n getPublicKey: () => Promise;\n getPrivateKey: () => Promise;\n getFingerprint: (userId: string, publicKey?: ArrayBuffer) => Promise;\n getOrgKeys: () => Promise>;\n getOrgKey: (orgId: string) => Promise;\n getProviderKey: (providerId: string) => Promise;\n hasKey: () => Promise;\n hasKeyInMemory: () => boolean;\n hasKeyStored: (keySuffix?: KeySuffixOptions) => Promise;\n hasEncKey: () => Promise;\n clearKey: (clearSecretStorage?: boolean) => Promise;\n clearKeyHash: () => Promise;\n clearEncKey: (memoryOnly?: boolean) => Promise;\n clearKeyPair: (memoryOnly?: boolean) => Promise;\n clearOrgKeys: (memoryOnly?: boolean) => Promise;\n clearProviderKeys: (memoryOnly?: boolean) => Promise;\n clearPinProtectedKey: () => Promise;\n clearKeys: () => Promise;\n toggleKey: () => Promise;\n makeKey: (password: string, salt: string, kdf: KdfType, kdfIterations: number) => Promise;\n makeKeyFromPin: (pin: string, salt: string, kdf: KdfType, kdfIterations: number,\n protectedKeyCs?: EncString) => Promise;\n makeShareKey: () => Promise<[EncString, SymmetricCryptoKey]>;\n makeKeyPair: (key?: SymmetricCryptoKey) => Promise<[string, EncString]>;\n makePinKey: (pin: string, salt: string, kdf: KdfType, kdfIterations: number) => Promise;\n makeSendKey: (keyMaterial: ArrayBuffer) => Promise;\n hashPassword: (password: string, key: SymmetricCryptoKey, hashPurpose?: HashPurpose) => Promise;\n makeEncKey: (key: SymmetricCryptoKey) => Promise<[SymmetricCryptoKey, EncString]>;\n remakeEncKey: (key: SymmetricCryptoKey, encKey?: SymmetricCryptoKey) => Promise<[SymmetricCryptoKey, EncString]>;\n encrypt: (plainValue: string | ArrayBuffer, key?: SymmetricCryptoKey) => Promise;\n encryptToBytes: (plainValue: ArrayBuffer, key?: SymmetricCryptoKey) => Promise;\n rsaEncrypt: (data: ArrayBuffer, publicKey?: ArrayBuffer) => Promise;\n rsaDecrypt: (encValue: string, privateKeyValue?: ArrayBuffer) => Promise;\n decryptToBytes: (encString: EncString, key?: SymmetricCryptoKey) => Promise;\n decryptToUtf8: (encString: EncString, key?: SymmetricCryptoKey) => Promise;\n decryptFromBytes: (encBuf: ArrayBuffer, key: SymmetricCryptoKey) => Promise;\n randomNumber: (min: number, max: number) => Promise;\n validateKey: (key: SymmetricCryptoKey) => Promise;\n}\n","import { CipherType } from '../enums/cipherType';\nimport { UriMatchType } from '../enums/uriMatchType';\n\nimport { CipherData } from '../models/data/cipherData';\n\nimport { Cipher } from '../models/domain/cipher';\nimport { Field } from '../models/domain/field';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { CipherView } from '../models/view/cipherView';\nimport { FieldView } from '../models/view/fieldView';\n\nexport abstract class CipherService {\n decryptedCipherCache: CipherView[];\n\n clearCache: () => void;\n encrypt: (model: CipherView, key?: SymmetricCryptoKey, originalCipher?: Cipher) => Promise;\n encryptFields: (fieldsModel: FieldView[], key: SymmetricCryptoKey) => Promise;\n encryptField: (fieldModel: FieldView, key: SymmetricCryptoKey) => Promise;\n get: (id: string) => Promise;\n getAll: () => Promise;\n getAllDecrypted: () => Promise;\n getAllDecryptedForGrouping: (groupingId: string, folder?: boolean) => Promise;\n getAllDecryptedForUrl: (url: string, includeOtherTypes?: CipherType[],\n defaultMatch?: UriMatchType) => Promise;\n getAllFromApiForOrganization: (organizationId: string) => Promise;\n getLastUsedForUrl: (url: string, autofillOnPageLoad: boolean) => Promise;\n getLastLaunchedForUrl: (url: string, autofillOnPageLoad: boolean) => Promise;\n getNextCipherForUrl: (url: string) => Promise;\n updateLastUsedIndexForUrl: (url: string) => void;\n updateLastUsedDate: (id: string) => Promise;\n updateLastLaunchedDate: (id: string) => Promise;\n saveNeverDomain: (domain: string) => Promise;\n saveWithServer: (cipher: Cipher) => Promise;\n shareWithServer: (cipher: CipherView, organizationId: string, collectionIds: string[]) => Promise;\n shareManyWithServer: (ciphers: CipherView[], organizationId: string, collectionIds: string[]) => Promise;\n saveAttachmentWithServer: (cipher: Cipher, unencryptedFile: any, admin?: boolean) => Promise;\n saveAttachmentRawWithServer: (cipher: Cipher, filename: string, data: ArrayBuffer,\n admin?: boolean) => Promise;\n saveCollectionsWithServer: (cipher: Cipher) => Promise;\n upsert: (cipher: CipherData | CipherData[]) => Promise;\n replace: (ciphers: { [id: string]: CipherData; }) => Promise;\n clear: (userId: string) => Promise;\n moveManyWithServer: (ids: string[], folderId: string) => Promise;\n delete: (id: string | string[]) => Promise;\n deleteWithServer: (id: string) => Promise;\n deleteManyWithServer: (ids: string[]) => Promise;\n deleteAttachment: (id: string, attachmentId: string) => Promise;\n deleteAttachmentWithServer: (id: string, attachmentId: string) => Promise;\n sortCiphersByLastUsed: (a: any, b: any) => number;\n sortCiphersByLastUsedThenName: (a: any, b: any) => number;\n getLocaleSortingFunction: () => (a: CipherView, b: CipherView) => number;\n softDelete: (id: string | string[]) => Promise;\n softDeleteWithServer: (id: string) => Promise;\n softDeleteManyWithServer: (ids: string[]) => Promise;\n restore: (cipher: { id: string, revisionDate: string; } | { id: string, revisionDate: string; }[]) => Promise;\n restoreWithServer: (id: string) => Promise;\n restoreManyWithServer: (ids: string[]) => Promise;\n}\n","import {\n Component,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { MasterPasswordPolicyOptions } from 'jslib-common/models/domain/masterPasswordPolicyOptions';\n\n@Component({\n selector: 'app-callout',\n templateUrl: 'callout.component.html',\n})\nexport class CalloutComponent implements OnInit {\n @Input() type = 'info';\n @Input() icon: string;\n @Input() title: string;\n @Input() clickable: boolean;\n @Input() enforcedPolicyOptions: MasterPasswordPolicyOptions;\n @Input() enforcedPolicyMessage: string;\n @Input() useAlertRole = false;\n\n calloutStyle: string;\n\n constructor(private i18nService: I18nService) { }\n\n ngOnInit() {\n this.calloutStyle = this.type;\n\n if (this.enforcedPolicyMessage === undefined) {\n this.enforcedPolicyMessage = this.i18nService.t('masterPasswordPolicyInEffect');\n }\n\n if (this.type === 'warning' || this.type === 'danger') {\n if (this.type === 'danger') {\n this.calloutStyle = 'danger';\n }\n if (this.title === undefined) {\n this.title = this.i18nService.t('warning');\n }\n if (this.icon === undefined) {\n this.icon = 'fa-warning';\n }\n } else if (this.type === 'error') {\n this.calloutStyle = 'danger';\n if (this.title === undefined) {\n this.title = this.i18nService.t('error');\n }\n if (this.icon === undefined) {\n this.icon = 'fa-bolt';\n }\n } else if (this.type === 'tip') {\n this.calloutStyle = 'success';\n if (this.title === undefined) {\n this.title = this.i18nService.t('tip');\n }\n if (this.icon === undefined) {\n this.icon = 'fa-lightbulb-o';\n }\n }\n }\n\n getPasswordScoreAlertDisplay() {\n if (this.enforcedPolicyOptions == null) {\n return '';\n }\n\n let str: string;\n switch (this.enforcedPolicyOptions.minComplexity) {\n case 4:\n str = this.i18nService.t('strong');\n break;\n case 3:\n str = this.i18nService.t('good');\n break;\n default:\n str = this.i18nService.t('weak');\n break;\n }\n return str + ' (' + this.enforcedPolicyOptions.minComplexity + ')';\n }\n}\n","

{{title}}

{{enforcedPolicyMessage}}
  • 0\"> {{'policyInEffectMinComplexity' | i18n : getPasswordScoreAlertDisplay()}}
  • 0\"> {{'policyInEffectMinLength' | i18n : enforcedPolicyOptions?.minLength.toString()}}
  • {{'policyInEffectUppercase' | i18n}}
  • {{'policyInEffectLowercase' | i18n}}
  • {{'policyInEffectNumbers' | i18n}}
  • {{'policyInEffectSpecial' | i18n : '!@#$%^&*'}}
","export abstract class BaseResponse {\n private response: any;\n\n constructor(response: any) {\n this.response = response;\n }\n\n protected getResponseProperty(propertyName: string, response: any = null, exactName = false): any {\n if (propertyName == null || propertyName === '') {\n throw new Error('propertyName must not be null/empty.');\n }\n if (response == null && this.response != null) {\n response = this.response;\n }\n if (response == null) {\n return null;\n }\n if (!exactName && response[propertyName] === undefined) {\n let otherCasePropertyName: string = null;\n if (propertyName.charAt(0) === propertyName.charAt(0).toUpperCase()) {\n otherCasePropertyName = propertyName.charAt(0).toLowerCase();\n } else {\n otherCasePropertyName = propertyName.charAt(0).toUpperCase();\n }\n if (propertyName.length > 1) {\n otherCasePropertyName += propertyName.slice(1);\n }\n\n propertyName = otherCasePropertyName;\n if (response[propertyName] === undefined) {\n propertyName = propertyName.toLowerCase();\n }\n if (response[propertyName] === undefined) {\n propertyName = propertyName.toUpperCase();\n }\n }\n return response[propertyName];\n }\n}\n","import { PolicyData } from '../models/data/policyData';\n\nimport { MasterPasswordPolicyOptions } from '../models/domain/masterPasswordPolicyOptions';\nimport { Policy } from '../models/domain/policy';\nimport { ResetPasswordPolicyOptions } from '../models/domain/resetPasswordPolicyOptions';\n\nimport { ListResponse } from '../models/response/listResponse';\nimport { PolicyResponse } from '../models/response/policyResponse';\n\nimport { PolicyType } from '../enums/policyType';\n\nexport abstract class PolicyService {\n policyCache: Policy[];\n\n clearCache: () => void;\n getAll: (type?: PolicyType) => Promise;\n getPolicyForOrganization: (policyType: PolicyType, organizationId: string) => Promise;\n replace: (policies: { [id: string]: PolicyData; }) => Promise;\n clear: (userId: string) => Promise;\n getMasterPasswordPoliciesForInvitedUsers: (orgId: string) => Promise;\n getMasterPasswordPolicyOptions: (policies?: Policy[]) => Promise;\n evaluateMasterPassword: (passwordStrength: number, newPassword: string,\n enforcedPolicyOptions?: MasterPasswordPolicyOptions) => boolean;\n getResetPasswordPolicyOptions: (policies: Policy[], orgId: string) => [ResetPasswordPolicyOptions, boolean];\n mapPoliciesFromToken: (policiesResponse: ListResponse) => Policy[];\n policyAppliesToUser: (policyType: PolicyType, policyFilter?: (policy: Policy) => boolean) => Promise;\n}\n","import {\n ApplicationRef,\n ComponentFactory,\n ComponentFactoryResolver,\n ComponentRef,\n EmbeddedViewRef,\n Injectable,\n Injector,\n Type,\n ViewContainerRef\n} from '@angular/core';\nimport { first } from 'rxjs/operators';\n\nimport { DynamicModalComponent } from '../components/modal/dynamic-modal.component';\nimport { ModalInjector } from '../components/modal/modal-injector';\nimport { ModalRef } from '../components/modal/modal.ref';\n\nexport class ModalConfig {\n data?: D;\n allowMultipleModals: boolean = false;\n}\n\n@Injectable()\nexport class ModalService {\n protected modalList: ComponentRef[] = [];\n\n // Lazy loaded modules are not available in componentFactoryResolver,\n // therefore modules needs to manually initialize their resolvers.\n private factoryResolvers: Map, ComponentFactoryResolver> = new Map();\n\n constructor(private componentFactoryResolver: ComponentFactoryResolver, private applicationRef: ApplicationRef,\n private injector: Injector) {\n document.addEventListener('keyup', event => {\n if (event.key === 'Escape' && this.modalCount > 0) {\n this.topModal.instance.close();\n }\n });\n }\n\n get modalCount() {\n return this.modalList.length;\n }\n\n private get topModal() {\n return this.modalList[this.modalCount - 1];\n }\n\n async openViewRef(componentType: Type, viewContainerRef: ViewContainerRef,\n setComponentParameters: (component: T) => void = null): Promise<[ModalRef, T]> {\n\n const [modalRef, modalComponentRef] = this.openInternal(componentType, null, false);\n modalComponentRef.instance.setComponentParameters = setComponentParameters;\n\n viewContainerRef.insert(modalComponentRef.hostView);\n\n await modalRef.onCreated.pipe(first()).toPromise();\n\n return [modalRef, modalComponentRef.instance.componentRef.instance];\n }\n\n open(componentType: Type, config?: ModalConfig) {\n if (!(config?.allowMultipleModals ?? false) && this.modalCount > 0) {\n return;\n }\n\n const [modalRef, _] = this.openInternal(componentType, config, true);\n\n return modalRef;\n }\n\n registerComponentFactoryResolver(componentType: Type, componentFactoryResolver: ComponentFactoryResolver): void {\n this.factoryResolvers.set(componentType, componentFactoryResolver);\n }\n\n resolveComponentFactory(componentType: Type): ComponentFactory {\n if (this.factoryResolvers.has(componentType)) {\n return this.factoryResolvers.get(componentType).resolveComponentFactory(componentType);\n }\n\n return this.componentFactoryResolver.resolveComponentFactory(componentType);\n }\n\n protected openInternal(componentType: Type, config?: ModalConfig, attachToDom?: boolean):\n [ModalRef, ComponentRef] {\n\n const [modalRef, componentRef] = this.createModalComponent(config);\n componentRef.instance.childComponentType = componentType;\n\n if (attachToDom) {\n this.applicationRef.attachView(componentRef.hostView);\n const domElem = (componentRef.hostView as EmbeddedViewRef).rootNodes[0] as HTMLElement;\n document.body.appendChild(domElem);\n }\n\n modalRef.onClosed.pipe(first()).subscribe(() => {\n if (attachToDom) {\n this.applicationRef.detachView(componentRef.hostView);\n }\n componentRef.destroy();\n\n this.modalList.pop();\n if (this.modalCount > 0) {\n this.topModal.instance.getFocus();\n }\n });\n\n this.setupHandlers(modalRef);\n\n this.modalList.push(componentRef);\n\n return [modalRef, componentRef];\n }\n\n protected setupHandlers(modalRef: ModalRef) {\n let backdrop: HTMLElement = null;\n\n // Add backdrop, setup [data-dismiss] handler.\n modalRef.onCreated.pipe(first()).subscribe(el => {\n document.body.classList.add('modal-open');\n\n const modalEl: HTMLElement = el.querySelector('.modal');\n const dialogEl = modalEl.querySelector('.modal-dialog') as HTMLElement;\n\n backdrop = document.createElement('div');\n backdrop.className = 'modal-backdrop fade';\n backdrop.style.zIndex = `${this.modalCount}040`;\n modalEl.prepend(backdrop);\n\n dialogEl.addEventListener('click', (e: Event) => {\n e.stopPropagation();\n });\n dialogEl.style.zIndex = `${this.modalCount}050`;\n\n const modals = Array.from(el.querySelectorAll('.modal-backdrop, .modal *[data-dismiss=\"modal\"]'));\n for (const closeElement of modals) {\n closeElement.addEventListener('click', event => {\n modalRef.close();\n });\n }\n });\n\n // onClose is used in Web to hook into bootstrap. On other projects we pipe it directly to closed.\n modalRef.onClose.pipe(first()).subscribe(() => {\n modalRef.closed();\n\n if (this.modalCount === 0) {\n document.body.classList.remove('modal-open');\n }\n });\n }\n\n protected createModalComponent(config: ModalConfig): [ModalRef, ComponentRef] {\n const modalRef = new ModalRef();\n\n const map = new WeakMap();\n map.set(ModalConfig, config);\n map.set(ModalRef, modalRef);\n\n const componentFactory = this.componentFactoryResolver.resolveComponentFactory(DynamicModalComponent);\n const componentRef = componentFactory.create(new ModalInjector(this.injector, map));\n\n return [modalRef, componentRef];\n }\n}\n","import * as tldjs from 'tldjs';\n\nimport { I18nService } from '../abstractions/i18n.service';\n\n// tslint:disable-next-line\nconst nodeURL = typeof window === 'undefined' ? require('url') : null;\n\nexport class Utils {\n static inited = false;\n static isNativeScript = false;\n static isNode = false;\n static isBrowser = true;\n static isMobileBrowser = false;\n static isAppleMobileBrowser = false;\n static global: any = null;\n static tldEndingRegex = /.*\\.(com|net|org|edu|uk|gov|ca|de|jp|fr|au|ru|ch|io|es|us|co|xyz|info|ly|mil)$/;\n // Transpiled version of /\\p{Emoji_Presentation}/gu using https://mothereff.in/regexpu. Used for compatability in older browsers.\n static regexpEmojiPresentation = /(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5-\\uDED7\\uDEEB\\uDEEC\\uDEF4-\\uDEFC\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0C-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD78\\uDD7A-\\uDDCB\\uDDCD-\\uDDFF\\uDE70-\\uDE74\\uDE78-\\uDE7A\\uDE80-\\uDE86\\uDE90-\\uDEA8\\uDEB0-\\uDEB6\\uDEC0-\\uDEC2\\uDED0-\\uDED6])/g;\n\n static init() {\n if (Utils.inited) {\n return;\n }\n\n Utils.inited = true;\n Utils.isNode = typeof process !== 'undefined' && (process as any).release != null &&\n (process as any).release.name === 'node';\n Utils.isBrowser = typeof window !== 'undefined';\n Utils.isNativeScript = !Utils.isNode && !Utils.isBrowser;\n Utils.isMobileBrowser = Utils.isBrowser && this.isMobile(window);\n Utils.isAppleMobileBrowser = Utils.isBrowser && this.isAppleMobile(window);\n Utils.global = Utils.isNativeScript ? global : (Utils.isNode && !Utils.isBrowser ? global : window);\n }\n\n static fromB64ToArray(str: string): Uint8Array {\n if (Utils.isNode || Utils.isNativeScript) {\n return new Uint8Array(Buffer.from(str, 'base64'));\n } else {\n const binaryString = window.atob(str);\n const bytes = new Uint8Array(binaryString.length);\n for (let i = 0; i < binaryString.length; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n }\n }\n\n static fromUrlB64ToArray(str: string): Uint8Array {\n return Utils.fromB64ToArray(Utils.fromUrlB64ToB64(str));\n }\n\n static fromHexToArray(str: string): Uint8Array {\n if (Utils.isNode || Utils.isNativeScript) {\n return new Uint8Array(Buffer.from(str, 'hex'));\n } else {\n const bytes = new Uint8Array(str.length / 2);\n for (let i = 0; i < str.length; i += 2) {\n bytes[i / 2] = parseInt(str.substr(i, 2), 16);\n }\n return bytes;\n }\n }\n\n static fromUtf8ToArray(str: string): Uint8Array {\n if (Utils.isNode || Utils.isNativeScript) {\n return new Uint8Array(Buffer.from(str, 'utf8'));\n } else {\n const strUtf8 = unescape(encodeURIComponent(str));\n const arr = new Uint8Array(strUtf8.length);\n for (let i = 0; i < strUtf8.length; i++) {\n arr[i] = strUtf8.charCodeAt(i);\n }\n return arr;\n }\n }\n\n static fromByteStringToArray(str: string): Uint8Array {\n const arr = new Uint8Array(str.length);\n for (let i = 0; i < str.length; i++) {\n arr[i] = str.charCodeAt(i);\n }\n return arr;\n }\n\n static fromBufferToB64(buffer: ArrayBuffer): string {\n if (Utils.isNode || Utils.isNativeScript) {\n return Buffer.from(buffer).toString('base64');\n } else {\n let binary = '';\n const bytes = new Uint8Array(buffer);\n for (let i = 0; i < bytes.byteLength; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return window.btoa(binary);\n }\n }\n\n static fromBufferToUrlB64(buffer: ArrayBuffer): string {\n return Utils.fromB64toUrlB64(Utils.fromBufferToB64(buffer));\n }\n\n static fromB64toUrlB64(b64Str: string) {\n return b64Str.replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=/g, '');\n }\n\n static fromBufferToUtf8(buffer: ArrayBuffer): string {\n if (Utils.isNode || Utils.isNativeScript) {\n return Buffer.from(buffer).toString('utf8');\n } else {\n const bytes = new Uint8Array(buffer);\n const encodedString = String.fromCharCode.apply(null, bytes);\n return decodeURIComponent(escape(encodedString));\n }\n }\n\n static fromBufferToByteString(buffer: ArrayBuffer): string {\n return String.fromCharCode.apply(null, new Uint8Array(buffer));\n }\n\n // ref: https://stackoverflow.com/a/40031979/1090359\n static fromBufferToHex(buffer: ArrayBuffer): string {\n if (Utils.isNode || Utils.isNativeScript) {\n return Buffer.from(buffer).toString('hex');\n } else {\n const bytes = new Uint8Array(buffer);\n return Array.prototype.map.call(bytes, (x: number) => ('00' + x.toString(16)).slice(-2)).join('');\n }\n }\n\n static fromUrlB64ToB64(urlB64Str: string): string {\n let output = urlB64Str.replace(/-/g, '+').replace(/_/g, '/');\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += '==';\n break;\n case 3:\n output += '=';\n break;\n default:\n throw new Error('Illegal base64url string!');\n }\n\n return output;\n }\n\n static fromUrlB64ToUtf8(urlB64Str: string): string {\n return Utils.fromB64ToUtf8(Utils.fromUrlB64ToB64(urlB64Str));\n }\n\n static fromUtf8ToB64(utfStr: string): string {\n if (Utils.isNode || Utils.isNativeScript) {\n return Buffer.from(utfStr, 'utf8').toString('base64');\n } else {\n return decodeURIComponent(escape(window.btoa(utfStr)));\n }\n }\n\n static fromUtf8ToUrlB64(utfStr: string): string {\n return Utils.fromBufferToUrlB64(Utils.fromUtf8ToArray(utfStr));\n }\n\n static fromB64ToUtf8(b64Str: string): string {\n if (Utils.isNode || Utils.isNativeScript) {\n return Buffer.from(b64Str, 'base64').toString('utf8');\n } else {\n return decodeURIComponent(escape(window.atob(b64Str)));\n }\n }\n\n // ref: http://stackoverflow.com/a/2117523/1090359\n static newGuid(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\n // tslint:disable-next-line\n const r = Math.random() * 16 | 0;\n // tslint:disable-next-line\n const v = c === 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n static isGuid(id: string) {\n return RegExp(/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/, 'i').test(id);\n }\n\n static getHostname(uriString: string): string {\n const url = Utils.getUrl(uriString);\n try {\n return url != null && url.hostname !== '' ? url.hostname : null;\n } catch {\n return null;\n }\n }\n\n static getHost(uriString: string): string {\n const url = Utils.getUrl(uriString);\n try {\n return url != null && url.host !== '' ? url.host : null;\n } catch {\n return null;\n }\n }\n\n static getDomain(uriString: string): string {\n if (uriString == null) {\n return null;\n }\n\n uriString = uriString.trim();\n if (uriString === '') {\n return null;\n }\n\n if (uriString.startsWith('data:')) {\n return null;\n }\n\n let httpUrl = uriString.startsWith('http://') || uriString.startsWith('https://');\n if (!httpUrl && uriString.indexOf('://') < 0 && Utils.tldEndingRegex.test(uriString) &&\n uriString.indexOf('@') < 0) {\n uriString = 'http://' + uriString;\n httpUrl = true;\n }\n\n if (httpUrl) {\n try {\n const url = Utils.getUrlObject(uriString);\n const validHostname = tldjs?.isValid != null ? tldjs.isValid(url.hostname) : true;\n if (!validHostname) {\n return null;\n }\n\n if (url.hostname === 'localhost' || Utils.validIpAddress(url.hostname)) {\n return url.hostname;\n }\n\n const urlDomain = tldjs != null && tldjs.getDomain != null ? tldjs.getDomain(url.hostname) : null;\n return urlDomain != null ? urlDomain : url.hostname;\n } catch (e) {\n // Invalid domain, try another approach below.\n }\n }\n\n try {\n const domain = tldjs != null && tldjs.getDomain != null ? tldjs.getDomain(uriString) : null;\n\n if (domain != null) {\n return domain;\n }\n } catch {\n return null;\n }\n\n return null;\n }\n\n static getQueryParams(uriString: string): Map {\n const url = Utils.getUrl(uriString);\n if (url == null || url.search == null || url.search === '') {\n return null;\n }\n const map = new Map();\n const pairs = (url.search[0] === '?' ? url.search.substr(1) : url.search).split('&');\n pairs.forEach(pair => {\n const parts = pair.split('=');\n if (parts.length < 1) {\n return;\n }\n map.set(decodeURIComponent(parts[0]).toLowerCase(), parts[1] == null ? '' : decodeURIComponent(parts[1]));\n });\n return map;\n }\n\n static getSortFunction(i18nService: I18nService, prop: string) {\n return (a: any, b: any) => {\n if (a[prop] == null && b[prop] != null) {\n return -1;\n }\n if (a[prop] != null && b[prop] == null) {\n return 1;\n }\n if (a[prop] == null && b[prop] == null) {\n return 0;\n }\n\n return i18nService.collator ? i18nService.collator.compare(a[prop], b[prop]) :\n a[prop].localeCompare(b[prop]);\n };\n }\n\n static isNullOrWhitespace(str: string): boolean {\n return str == null || typeof str !== 'string' || str.trim() === '';\n }\n\n static nameOf(name: string & keyof T) {\n return name;\n }\n\n static assign(target: T, source: Partial): T {\n return Object.assign(target, source);\n }\n\n static iterateEnum(obj: O) {\n return (Object.keys(obj).filter(k => Number.isNaN(+k)) as K[]).map(k => obj[k]);\n }\n\n\n static getUrl(uriString: string): URL {\n if (uriString == null) {\n return null;\n }\n\n uriString = uriString.trim();\n if (uriString === '') {\n return null;\n }\n\n let url = Utils.getUrlObject(uriString);\n if (url == null) {\n const hasHttpProtocol = uriString.indexOf('http://') === 0 || uriString.indexOf('https://') === 0;\n if (!hasHttpProtocol && uriString.indexOf('.') > -1) {\n url = Utils.getUrlObject('http://' + uriString);\n }\n }\n return url;\n }\n\n static camelToPascalCase(s: string) {\n return s.charAt(0).toUpperCase() + s.slice(1);\n }\n\n private static validIpAddress(ipString: string): boolean {\n // tslint:disable-next-line\n const ipRegex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\n return ipRegex.test(ipString);\n }\n\n private static isMobile(win: Window) {\n let mobile = false;\n (a => {\n // tslint:disable-next-line\n if (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0, 4))) {\n mobile = true;\n }\n })(win.navigator.userAgent || win.navigator.vendor || (win as any).opera);\n return mobile || win.navigator.userAgent.match(/iPad/i) != null;\n }\n\n private static isAppleMobile(win: Window) {\n return win.navigator.userAgent.match(/iPhone/i) != null || win.navigator.userAgent.match(/iPad/i) != null;\n }\n\n private static getUrlObject(uriString: string): URL {\n try {\n if (nodeURL != null) {\n return nodeURL.URL ? new nodeURL.URL(uriString) : nodeURL.parse(uriString);\n } else if (typeof URL === 'function') {\n return new URL(uriString);\n } else if (window != null) {\n const hasProtocol = uriString.indexOf('://') > -1;\n if (!hasProtocol && uriString.indexOf('.') > -1) {\n uriString = 'http://' + uriString;\n } else if (!hasProtocol) {\n return null;\n }\n const anchor = window.document.createElement('a');\n anchor.href = uriString;\n return anchor as any;\n }\n } catch (e) {\n // Ignore error\n }\n\n return null;\n }\n}\n\nUtils.init();\n","import * as papa from 'papaparse';\n\nimport { LogService } from '../abstractions/log.service';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherView } from '../models/view/cipherView';\nimport { CollectionView } from '../models/view/collectionView';\nimport { LoginUriView } from '../models/view/loginUriView';\n\nimport { Utils } from '../misc/utils';\n\nimport { FieldView } from '../models/view/fieldView';\nimport { FolderView } from '../models/view/folderView';\nimport { LoginView } from '../models/view/loginView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherRepromptType } from '../enums/cipherRepromptType';\nimport { CipherType } from '../enums/cipherType';\nimport { FieldType } from '../enums/fieldType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nimport { ConsoleLogService } from '../services/consoleLog.service';\n\nexport abstract class BaseImporter {\n organizationId: string = null;\n\n protected logService: LogService = new ConsoleLogService(false);\n\n protected newLineRegex = /(?:\\r\\n|\\r|\\n)/;\n\n protected passwordFieldNames = [\n 'password', 'pass word', 'passphrase', 'pass phrase',\n 'pass', 'code', 'code word', 'codeword',\n 'secret', 'secret word', 'personpwd',\n 'key', 'keyword', 'key word', 'keyphrase', 'key phrase',\n 'form_pw', 'wppassword', 'pin', 'pwd', 'pw', 'pword', 'passwd',\n 'p', 'serial', 'serial#', 'license key', 'reg #',\n\n // Non-English names\n 'passwort',\n ];\n\n protected usernameFieldNames = [\n 'user', 'name', 'user name', 'username', 'login name',\n 'email', 'e-mail', 'id', 'userid', 'user id',\n 'login', 'form_loginname', 'wpname', 'mail',\n 'loginid', 'login id', 'log', 'personlogin',\n 'first name', 'last name', 'card#', 'account #',\n 'member', 'member #',\n\n // Non-English names\n 'nom', 'benutzername',\n ];\n\n protected notesFieldNames = [\n 'note', 'notes', 'comment', 'comments', 'memo',\n 'description', 'free form', 'freeform',\n 'free text', 'freetext', 'free',\n\n // Non-English names\n 'kommentar',\n ];\n\n protected uriFieldNames: string[] = [\n 'url', 'hyper link', 'hyperlink', 'link',\n 'host', 'hostname', 'host name', 'server', 'address',\n 'hyper ref', 'href', 'web', 'website', 'web site', 'site',\n 'web-site', 'uri',\n\n // Non-English names\n 'ort', 'adresse',\n ];\n\n protected parseCsvOptions = {\n encoding: 'UTF-8',\n skipEmptyLines: false,\n };\n\n protected get organization() {\n return this.organizationId != null;\n }\n\n protected parseXml(data: string): Document {\n const parser = new DOMParser();\n const doc = parser.parseFromString(data, 'application/xml');\n return doc != null && doc.querySelector('parsererror') == null ? doc : null;\n }\n\n protected parseCsv(data: string, header: boolean, options: any = {}): any[] {\n const parseOptions = Object.assign({ header: header }, this.parseCsvOptions, options);\n data = this.splitNewLine(data).join('\\n').trim();\n const result = papa.parse(data, parseOptions);\n if (result.errors != null && result.errors.length > 0) {\n result.errors.forEach(e => {\n if (e.row != null) {\n // tslint:disable-next-line\n this.logService.warning('Error parsing row ' + e.row + ': ' + e.message);\n }\n });\n }\n return result.data && result.data.length > 0 ? result.data : null;\n }\n\n protected parseSingleRowCsv(rowData: string) {\n if (this.isNullOrWhitespace(rowData)) {\n return null;\n }\n const parsedRow = this.parseCsv(rowData, false);\n if (parsedRow != null && parsedRow.length > 0 && parsedRow[0].length > 0) {\n return parsedRow[0];\n }\n return null;\n }\n\n protected makeUriArray(uri: string | string[]): LoginUriView[] {\n if (uri == null) {\n return null;\n }\n\n if (typeof uri === 'string') {\n const loginUri = new LoginUriView();\n loginUri.uri = this.fixUri(uri);\n if (this.isNullOrWhitespace(loginUri.uri)) {\n return null;\n }\n loginUri.match = null;\n return [loginUri];\n }\n\n if (uri.length > 0) {\n const returnArr: LoginUriView[] = [];\n uri.forEach(u => {\n const loginUri = new LoginUriView();\n loginUri.uri = this.fixUri(u);\n if (this.isNullOrWhitespace(loginUri.uri)) {\n return;\n }\n loginUri.match = null;\n returnArr.push(loginUri);\n });\n return returnArr.length === 0 ? null : returnArr;\n }\n\n return null;\n }\n\n protected fixUri(uri: string) {\n if (uri == null) {\n return null;\n }\n uri = uri.trim();\n if (uri.indexOf('://') === -1 && uri.indexOf('.') >= 0) {\n uri = 'http://' + uri;\n }\n if (uri.length > 1000) {\n return uri.substring(0, 1000);\n }\n return uri;\n }\n\n protected nameFromUrl(url: string) {\n const hostname = Utils.getHostname(url);\n if (this.isNullOrWhitespace(hostname)) {\n return null;\n }\n return hostname.startsWith('www.') ? hostname.replace('www.', '') : hostname;\n }\n\n protected isNullOrWhitespace(str: string): boolean {\n return Utils.isNullOrWhitespace(str);\n }\n\n protected getValueOrDefault(str: string, defaultValue: string = null): string {\n if (this.isNullOrWhitespace(str)) {\n return defaultValue;\n }\n return str;\n }\n\n protected splitNewLine(str: string): string[] {\n return str.split(this.newLineRegex);\n }\n\n // ref https://stackoverflow.com/a/5911300\n protected getCardBrand(cardNum: string) {\n if (this.isNullOrWhitespace(cardNum)) {\n return null;\n }\n\n // Visa\n let re = new RegExp('^4');\n if (cardNum.match(re) != null) {\n return 'Visa';\n }\n\n // Mastercard\n // Updated for Mastercard 2017 BINs expansion\n if (/^(5[1-5][0-9]{14}|2(22[1-9][0-9]{12}|2[3-9][0-9]{13}|[3-6][0-9]{14}|7[0-1][0-9]{13}|720[0-9]{12}))$/\n .test(cardNum)) {\n return 'Mastercard';\n }\n\n // AMEX\n re = new RegExp('^3[47]');\n if (cardNum.match(re) != null) {\n return 'Amex';\n }\n\n // Discover\n re = new RegExp('^(6011|622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[0-1][0-9]|92[0-5]|64[4-9])|65)');\n if (cardNum.match(re) != null) {\n return 'Discover';\n }\n\n // Diners\n re = new RegExp('^36');\n if (cardNum.match(re) != null) {\n return 'Diners Club';\n }\n\n // Diners - Carte Blanche\n re = new RegExp('^30[0-5]');\n if (cardNum.match(re) != null) {\n return 'Diners Club';\n }\n\n // JCB\n re = new RegExp('^35(2[89]|[3-8][0-9])');\n if (cardNum.match(re) != null) {\n return 'JCB';\n }\n\n // Visa Electron\n re = new RegExp('^(4026|417500|4508|4844|491(3|7))');\n if (cardNum.match(re) != null) {\n return 'Visa';\n }\n\n return null;\n }\n\n protected setCardExpiration(cipher: CipherView, expiration: string): boolean {\n if (!this.isNullOrWhitespace(expiration)) {\n expiration = expiration.replace(/\\s/g, '');\n const parts = expiration.split('/');\n if (parts.length === 2) {\n let month: string = null;\n let year: string = null;\n if (parts[0].length === 1 || parts[0].length === 2) {\n month = parts[0];\n if (month.length === 2 && month[0] === '0') {\n month = month.substr(1, 1);\n }\n }\n if (parts[1].length === 2 || parts[1].length === 4) {\n year = month.length === 2 ? '20' + parts[1] : parts[1];\n }\n if (month != null && year != null) {\n cipher.card.expMonth = month;\n cipher.card.expYear = year;\n return true;\n }\n }\n }\n return false;\n }\n\n protected moveFoldersToCollections(result: ImportResult) {\n result.folderRelationships.forEach(r => result.collectionRelationships.push(r));\n result.collections = result.folders.map(f => {\n const collection = new CollectionView();\n collection.name = f.name;\n return collection;\n });\n result.folderRelationships = [];\n result.folders = [];\n }\n\n protected querySelectorDirectChild(parentEl: Element, query: string) {\n const els = this.querySelectorAllDirectChild(parentEl, query);\n return els.length === 0 ? null : els[0];\n }\n\n protected querySelectorAllDirectChild(parentEl: Element, query: string) {\n return Array.from(parentEl.querySelectorAll(query)).filter(el => el.parentNode === parentEl);\n }\n\n protected initLoginCipher() {\n const cipher = new CipherView();\n cipher.favorite = false;\n cipher.notes = '';\n cipher.fields = [];\n cipher.login = new LoginView();\n cipher.type = CipherType.Login;\n return cipher;\n }\n\n protected cleanupCipher(cipher: CipherView) {\n if (cipher == null) {\n return;\n }\n if (cipher.type !== CipherType.Login) {\n cipher.login = null;\n }\n if (this.isNullOrWhitespace(cipher.name)) {\n cipher.name = '--';\n }\n if (this.isNullOrWhitespace(cipher.notes)) {\n cipher.notes = null;\n } else {\n cipher.notes = cipher.notes.trim();\n }\n if (cipher.fields != null && cipher.fields.length === 0) {\n cipher.fields = null;\n }\n }\n\n protected processKvp(cipher: CipherView, key: string, value: string, type: FieldType = FieldType.Text) {\n if (this.isNullOrWhitespace(value)) {\n return;\n }\n if (this.isNullOrWhitespace(key)) {\n key = '';\n }\n if (value.length > 200 || value.trim().search(this.newLineRegex) > -1) {\n if (cipher.notes == null) {\n cipher.notes = '';\n }\n cipher.notes += (key + ': ' + this.splitNewLine(value).join('\\n') + '\\n');\n } else {\n if (cipher.fields == null) {\n cipher.fields = [];\n }\n const field = new FieldView();\n field.type = type;\n field.name = key;\n field.value = value;\n cipher.fields.push(field);\n }\n }\n\n protected processFolder(result: ImportResult, folderName: string) {\n let folderIndex = result.folders.length;\n const hasFolder = !this.isNullOrWhitespace(folderName);\n let addFolder = hasFolder;\n\n if (hasFolder) {\n for (let i = 0; i < result.folders.length; i++) {\n if (result.folders[i].name === folderName) {\n addFolder = false;\n folderIndex = i;\n break;\n }\n }\n }\n\n if (addFolder) {\n const f = new FolderView();\n f.name = folderName;\n result.folders.push(f);\n }\n if (hasFolder) {\n result.folderRelationships.push([result.ciphers.length, folderIndex]);\n }\n }\n\n protected convertToNoteIfNeeded(cipher: CipherView) {\n if (cipher.type === CipherType.Login && this.isNullOrWhitespace(cipher.login.username) &&\n this.isNullOrWhitespace(cipher.login.password) &&\n (cipher.login.uris == null || cipher.login.uris.length === 0)) {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n }\n }\n}\n","import { CipherView } from '../view/cipherView';\nimport { CollectionView } from '../view/collectionView';\nimport { FolderView } from '../view/folderView';\n\nexport class ImportResult {\n success = false;\n errorMessage: string;\n ciphers: CipherView[] = [];\n folders: FolderView[] = [];\n folderRelationships: [number, number][] = [];\n collections: CollectionView[] = [];\n collectionRelationships: [number, number][] = [];\n}\n","import * as zxcvbn from 'zxcvbn';\n\nimport { GeneratedPasswordHistory } from '../models/domain/generatedPasswordHistory';\nimport { PasswordGeneratorPolicyOptions } from '../models/domain/passwordGeneratorPolicyOptions';\n\nexport abstract class PasswordGenerationService {\n generatePassword: (options: any) => Promise;\n generatePassphrase: (options: any) => Promise;\n getOptions: () => Promise<[any, PasswordGeneratorPolicyOptions]>;\n enforcePasswordGeneratorPoliciesOnOptions: (options: any) => Promise<[any, PasswordGeneratorPolicyOptions]>;\n getPasswordGeneratorPolicyOptions: () => Promise;\n saveOptions: (options: any) => Promise;\n getHistory: () => Promise;\n addHistory: (password: string) => Promise;\n clear: () => Promise;\n passwordStrength: (password: string, userInputs?: string[]) => zxcvbn.ZXCVBNResult;\n normalizeOptions: (options: any, enforcedPolicyOptions: PasswordGeneratorPolicyOptions) => void;\n}\n","export abstract class StateService {\n get: (key: string) => Promise;\n save: (key: string, obj: any) => Promise;\n remove: (key: string) => Promise;\n purge: () => Promise;\n}\n","import {\n Directive,\n HostListener,\n} from '@angular/core';\n\n@Directive({\n selector: '[appStopClick]',\n})\nexport class StopClickDirective {\n @HostListener('click', ['$event']) onClick($event: MouseEvent) {\n $event.preventDefault();\n }\n}\n","export abstract class StorageService {\n get: (key: string, options?: StorageServiceOptions) => Promise;\n has: (key: string, options?: StorageServiceOptions) => Promise;\n save: (key: string, obj: any, options?: StorageServiceOptions) => Promise;\n remove: (key: string, options?: StorageServiceOptions) => Promise;\n}\n\nexport interface StorageServiceOptions {\n keySuffix: KeySuffixOptions;\n}\n\nexport type KeySuffixOptions = 'auto' | 'biometric';\n","export enum CipherType {\n Login = 1,\n SecureNote = 2,\n Card = 3,\n Identity = 4,\n}\n","import {\n SyncCipherNotification,\n SyncFolderNotification,\n SyncSendNotification,\n} from '../models/response/notificationResponse';\n\nexport abstract class SyncService {\n syncInProgress: boolean;\n\n getLastSync: () => Promise;\n setLastSync: (date: Date) => Promise;\n fullSync: (forceSync: boolean, allowThrowOnError?: boolean) => Promise;\n syncUpsertFolder: (notification: SyncFolderNotification, isEdit: boolean) => Promise;\n syncDeleteFolder: (notification: SyncFolderNotification) => Promise;\n syncUpsertCipher: (notification: SyncCipherNotification, isEdit: boolean) => Promise;\n syncDeleteCipher: (notification: SyncFolderNotification) => Promise;\n syncUpsertSend: (notification: SyncSendNotification, isEdit: boolean) => Promise;\n syncDeleteSend: (notification: SyncSendNotification) => Promise;\n}\n","export abstract class PasswordRepromptService {\n protectedFields: () => string[];\n showPasswordPrompt: () => Promise;\n enabled: () => Promise;\n}\n","import { CollectionData } from '../models/data/collectionData';\n\nimport { Collection } from '../models/domain/collection';\nimport { TreeNode } from '../models/domain/treeNode';\n\nimport { CollectionView } from '../models/view/collectionView';\n\nexport abstract class CollectionService {\n decryptedCollectionCache: CollectionView[];\n\n clearCache: () => void;\n encrypt: (model: CollectionView) => Promise;\n decryptMany: (collections: Collection[]) => Promise;\n get: (id: string) => Promise;\n getAll: () => Promise;\n getAllDecrypted: () => Promise;\n getAllNested: (collections?: CollectionView[]) => Promise[]>;\n getNested: (id: string) => Promise>;\n upsert: (collection: CollectionData | CollectionData[]) => Promise;\n replace: (collections: { [id: string]: CollectionData; }) => Promise;\n clear: (userId: string) => Promise;\n delete: (id: string | string[]) => Promise;\n}\n","import { Observable } from 'rxjs';\n\nexport type Urls = {\n base?: string;\n webVault?: string;\n api?: string;\n identity?: string;\n icons?: string;\n notifications?: string;\n events?: string;\n keyConnector?: string;\n};\n\nexport type PayPalConfig = {\n businessId?: string;\n buttonAction?: string;\n};\n\nexport abstract class EnvironmentService {\n urls: Observable;\n\n hasBaseUrl: () => boolean;\n getNotificationsUrl: () => string;\n getWebVaultUrl: () => string;\n getSendUrl: () => string;\n getIconsUrl: () => string;\n getApiUrl: () => string;\n getIdentityUrl: () => string;\n getEventsUrl: () => string;\n getKeyConnectorUrl: () => string;\n setUrlsFromStorage: () => Promise;\n setUrls: (urls: any, saveSettings?: boolean) => Promise;\n getUrls: () => Urls;\n}\n","import { SecretVerificationRequest } from '../models/request/secretVerificationRequest';\n\nimport { Verification } from '../types/verification';\n\nexport abstract class UserVerificationService {\n buildRequest: (verification: Verification,\n requestClass?: new () => T, alreadyHashed?: boolean) => Promise;\n verifyUser: (verification: Verification) => Promise;\n requestOTP: () => Promise;\n}\n","import {\n Directive,\n ElementRef,\n Input,\n Renderer2,\n} from '@angular/core';\n\n@Directive({\n selector: '[appInputVerbatim]',\n})\nexport class InputVerbatimDirective {\n @Input() set appInputVerbatim(condition: boolean | string) {\n this.disableComplete = condition === '' || condition === true;\n }\n\n private disableComplete: boolean;\n\n constructor(private el: ElementRef, private renderer: Renderer2) { }\n\n ngOnInit() {\n if (this.disableComplete && !this.el.nativeElement.hasAttribute('autocomplete')) {\n this.renderer.setAttribute(this.el.nativeElement, 'autocomplete', 'off');\n }\n if (!this.el.nativeElement.hasAttribute('autocapitalize')) {\n this.renderer.setAttribute(this.el.nativeElement, 'autocapitalize', 'none');\n }\n if (!this.el.nativeElement.hasAttribute('autocorrect')) {\n this.renderer.setAttribute(this.el.nativeElement, 'autocorrect', 'none');\n }\n if (!this.el.nativeElement.hasAttribute('spellcheck')) {\n this.renderer.setAttribute(this.el.nativeElement, 'spellcheck', 'false');\n }\n if (!this.el.nativeElement.hasAttribute('inputmode')) {\n this.renderer.setAttribute(this.el.nativeElement, 'inputmode', 'verbatim');\n }\n }\n}\n","import { TwoFactorProviderType } from '../enums/twoFactorProviderType';\n\nimport { AuthResult } from '../models/domain/authResult';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nexport abstract class AuthService {\n email: string;\n masterPasswordHash: string;\n code: string;\n codeVerifier: string;\n ssoRedirectUrl: string;\n clientId: string;\n clientSecret: string;\n twoFactorProvidersData: Map;\n selectedTwoFactorProviderType: TwoFactorProviderType;\n\n logIn: (email: string, masterPassword: string, captchaToken?: string) => Promise;\n logInSso: (code: string, codeVerifier: string, redirectUrl: string, orgId: string) => Promise;\n logInApiKey: (clientId: string, clientSecret: string) => Promise;\n logInTwoFactor: (twoFactorProvider: TwoFactorProviderType, twoFactorToken: string,\n remember?: boolean) => Promise;\n logInComplete: (email: string, masterPassword: string, twoFactorProvider: TwoFactorProviderType,\n twoFactorToken: string, remember?: boolean, captchaToken?: string) => Promise;\n logInSsoComplete: (code: string, codeVerifier: string, redirectUrl: string,\n twoFactorProvider: TwoFactorProviderType, twoFactorToken: string, remember?: boolean) => Promise;\n logInApiKeyComplete: (clientId: string, clientSecret: string, twoFactorProvider: TwoFactorProviderType,\n twoFactorToken: string, remember?: boolean) => Promise;\n logOut: (callback: Function) => void;\n getSupportedTwoFactorProviders: (win: Window) => any[];\n getDefaultTwoFactorProvider: (webAuthnSupported: boolean) => TwoFactorProviderType;\n makePreloginKey: (masterPassword: string, email: string) => Promise;\n authingWithApiKey: () => boolean;\n authingWithSso: () => boolean;\n authingWithPassword: () => boolean;\n}\n","import { FolderData } from '../models/data/folderData';\n\nimport { Folder } from '../models/domain/folder';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\nimport { TreeNode } from '../models/domain/treeNode';\n\nimport { FolderView } from '../models/view/folderView';\n\nexport abstract class FolderService {\n decryptedFolderCache: FolderView[];\n\n clearCache: () => void;\n encrypt: (model: FolderView, key?: SymmetricCryptoKey) => Promise;\n get: (id: string) => Promise;\n getAll: () => Promise;\n getAllDecrypted: () => Promise;\n getAllNested: () => Promise[]>;\n getNested: (id: string) => Promise>;\n saveWithServer: (folder: Folder) => Promise;\n upsert: (folder: FolderData | FolderData[]) => Promise;\n replace: (folders: { [id: string]: FolderData; }) => Promise;\n clear: (userId: string) => Promise;\n delete: (id: string | string[]) => Promise;\n deleteWithServer: (id: string) => Promise;\n}\n","import {\n Directive,\n HostListener,\n} from '@angular/core';\n\n@Directive({\n selector: '[appStopProp]',\n})\nexport class StopPropDirective {\n @HostListener('click', ['$event']) onClick($event: MouseEvent) {\n $event.stopPropagation();\n }\n}\n","import { EventType } from '../enums/eventType';\n\nexport abstract class EventService {\n collect: (eventType: EventType, cipherId?: string, uploadImmediately?: boolean) => Promise;\n uploadEvents: () => Promise;\n clearEvents: () => Promise;\n}\n","export enum PolicyType {\n TwoFactorAuthentication = 0, // Requires users to have 2fa enabled\n MasterPassword = 1, // Sets minimum requirements for master password complexity\n PasswordGenerator = 2, // Sets minimum requirements/default type for generated passwords/passphrases\n SingleOrg = 3, // Allows users to only be apart of one organization\n RequireSso = 4, // Requires users to authenticate with SSO\n PersonalOwnership = 5, // Disables personal vault ownership for adding/cloning items\n DisableSend = 6, // Disables the ability to create and edit Bitwarden Sends\n SendOptions = 7, // Sets restrictions or defaults for Bitwarden Sends\n ResetPassword = 8, // Allows orgs to use reset password : also can enable auto-enrollment during invite flow\n MaximumVaultTimeout = 9, // Sets the maximum allowed vault timeout\n DisablePersonalVaultExport = 10, // Disable personal vault export\n}\n","export class ConstantsService {\n static readonly environmentUrlsKey: string = 'environmentUrls';\n static readonly disableGaKey: string = 'disableGa';\n static readonly disableAddLoginNotificationKey: string = 'disableAddLoginNotification';\n static readonly disableChangedPasswordNotificationKey: string = 'disableChangedPasswordNotification';\n static readonly disableContextMenuItemKey: string = 'disableContextMenuItem';\n static readonly disableFaviconKey: string = 'disableFavicon';\n static readonly disableBadgeCounterKey: string = 'disableBadgeCounter';\n static readonly disableAutoTotpCopyKey: string = 'disableAutoTotpCopy';\n static readonly disableAutoBiometricsPromptKey: string = 'noAutoPromptBiometrics';\n static readonly enableAutoFillOnPageLoadKey: string = 'enableAutoFillOnPageLoad';\n static readonly autoFillOnPageLoadDefaultKey: string = 'autoFillOnPageLoadDefault';\n static readonly vaultTimeoutKey: string = 'lockOption';\n static readonly vaultTimeoutActionKey: string = 'vaultTimeoutAction';\n static readonly lastActiveKey: string = 'lastActive';\n static readonly neverDomainsKey: string = 'neverDomains';\n static readonly installedVersionKey: string = 'installedVersion';\n static readonly localeKey: string = 'locale';\n static readonly themeKey: string = 'theme';\n static readonly collapsedGroupingsKey: string = 'collapsedGroupings';\n static readonly autoConfirmFingerprints: string = 'autoConfirmFingerprints';\n static readonly dontShowCardsCurrentTab: string = 'dontShowCardsCurrentTab';\n static readonly dontShowIdentitiesCurrentTab: string = 'dontShowIdentitiesCurrentTab';\n static readonly defaultUriMatch: string = 'defaultUriMatch';\n static readonly pinProtectedKey: string = 'pinProtectedKey';\n static readonly protectedPin: string = 'protectedPin';\n static readonly clearClipboardKey: string = 'clearClipboardKey';\n static readonly eventCollectionKey: string = 'eventCollection';\n static readonly ssoCodeVerifierKey: string = 'ssoCodeVerifier';\n static readonly ssoStateKey: string = 'ssoState';\n static readonly biometricUnlockKey: string = 'biometric';\n static readonly biometricText: string = 'biometricText';\n static readonly biometricAwaitingAcceptance: string = 'biometricAwaitingAcceptance';\n static readonly biometricFingerprintValidated: string = 'biometricFingerprintValidated';\n\n readonly environmentUrlsKey: string = ConstantsService.environmentUrlsKey;\n readonly disableGaKey: string = ConstantsService.disableGaKey;\n readonly disableAddLoginNotificationKey: string = ConstantsService.disableAddLoginNotificationKey;\n readonly disableContextMenuItemKey: string = ConstantsService.disableContextMenuItemKey;\n readonly disableFaviconKey: string = ConstantsService.disableFaviconKey;\n readonly disableBadgeCounterKey: string = ConstantsService.disableBadgeCounterKey;\n readonly disableAutoTotpCopyKey: string = ConstantsService.disableAutoTotpCopyKey;\n readonly disableAutoBiometricsPromptKey: string = ConstantsService.disableAutoBiometricsPromptKey;\n readonly enableAutoFillOnPageLoadKey: string = ConstantsService.enableAutoFillOnPageLoadKey;\n readonly autoFillOnPageLoadDefaultKey: string = ConstantsService.autoFillOnPageLoadDefaultKey;\n readonly vaultTimeoutKey: string = ConstantsService.vaultTimeoutKey;\n readonly vaultTimeoutActionKey: string = ConstantsService.vaultTimeoutActionKey;\n readonly lastActiveKey: string = ConstantsService.lastActiveKey;\n readonly neverDomainsKey: string = ConstantsService.neverDomainsKey;\n readonly installedVersionKey: string = ConstantsService.installedVersionKey;\n readonly localeKey: string = ConstantsService.localeKey;\n readonly themeKey: string = ConstantsService.themeKey;\n readonly collapsedGroupingsKey: string = ConstantsService.collapsedGroupingsKey;\n readonly autoConfirmFingerprints: string = ConstantsService.autoConfirmFingerprints;\n readonly dontShowCardsCurrentTab: string = ConstantsService.dontShowCardsCurrentTab;\n readonly dontShowIdentitiesCurrentTab: string = ConstantsService.dontShowIdentitiesCurrentTab;\n readonly defaultUriMatch: string = ConstantsService.defaultUriMatch;\n readonly pinProtectedKey: string = ConstantsService.pinProtectedKey;\n readonly protectedPin: string = ConstantsService.protectedPin;\n readonly clearClipboardKey: string = ConstantsService.clearClipboardKey;\n readonly eventCollectionKey: string = ConstantsService.eventCollectionKey;\n readonly ssoCodeVerifierKey: string = ConstantsService.ssoCodeVerifierKey;\n readonly ssoStateKey: string = ConstantsService.ssoStateKey;\n readonly biometricUnlockKey: string = ConstantsService.biometricUnlockKey;\n readonly biometricText: string = ConstantsService.biometricText;\n readonly biometricAwaitingAcceptance: string = ConstantsService.biometricAwaitingAcceptance;\n readonly biometricFingerprintValidated: string = ConstantsService.biometricFingerprintValidated;\n}\n","import { CipherView } from '../models/view/cipherView';\nimport { SendView } from '../models/view/sendView';\n\nexport abstract class SearchService {\n indexedEntityId?: string = null;\n clearIndex: () => void;\n isSearchable: (query: string) => boolean;\n indexCiphers: (indexedEntityGuid?: string, ciphersToIndex?: CipherView[]) => Promise;\n searchCiphers: (query: string,\n filter?: ((cipher: CipherView) => boolean) | (((cipher: CipherView) => boolean)[]),\n ciphers?: CipherView[]) => Promise;\n searchCiphersBasic: (ciphers: CipherView[], query: string, deleted?: boolean) => CipherView[];\n searchSends: (sends: SendView[], query: string) => SendView[];\n}\n","import {\n Directive,\n ElementRef,\n Input,\n NgZone,\n} from '@angular/core';\n\nimport { take } from 'rxjs/operators';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Directive({\n selector: '[appAutofocus]',\n})\nexport class AutofocusDirective {\n @Input() set appAutofocus(condition: boolean | string) {\n this.autofocus = condition === '' || condition === true;\n }\n\n private autofocus: boolean;\n\n constructor(private el: ElementRef, private ngZone: NgZone) { }\n\n ngOnInit() {\n if (!Utils.isMobileBrowser && this.autofocus) {\n if (this.ngZone.isStable) {\n this.el.nativeElement.focus();\n } else {\n this.ngZone.onStable.pipe(take(1)).subscribe(() => this.el.nativeElement.focus());\n }\n }\n }\n}\n","import { Organization } from '../models/domain/organization';\n\nexport abstract class KeyConnectorService {\n getAndSetKey: (url?: string) => Promise;\n getManagingOrganization: () => Promise;\n getUsesKeyConnector: () => Promise;\n migrateUser: () => Promise;\n userNeedsMigration: () => Promise;\n setUsesKeyConnector: (enabled: boolean) => Promise;\n setConvertAccountRequired: (status: boolean) => Promise;\n getConvertAccountRequired: () => Promise;\n removeConvertAccountRequired: () => Promise;\n clear: () => Promise;\n}\n","import { EncString } from './encString';\n\nimport { View } from '../view/view';\n\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport default class Domain {\n protected buildDomainModel(domain: D, dataObj: any, map: any,\n alreadyEncrypted: boolean, notEncList: any[] = []) {\n for (const prop in map) {\n if (!map.hasOwnProperty(prop)) {\n continue;\n }\n\n const objProp = dataObj[(map[prop] || prop)];\n if (alreadyEncrypted === true || notEncList.indexOf(prop) > -1) {\n (domain as any)[prop] = objProp ? objProp : null;\n } else {\n (domain as any)[prop] = objProp ? new EncString(objProp) : null;\n }\n }\n }\n protected buildDataModel(domain: D, dataObj: any, map: any, notEncStringList: any[] = []) {\n for (const prop in map) {\n if (!map.hasOwnProperty(prop)) {\n continue;\n }\n\n const objProp = (domain as any)[(map[prop] || prop)];\n if (notEncStringList.indexOf(prop) > -1) {\n (dataObj as any)[prop] = objProp != null ? objProp : null;\n } else {\n (dataObj as any)[prop] = objProp != null ? (objProp as EncString).encryptedString : null;\n }\n }\n }\n\n protected async decryptObj(viewModel: T, map: any, orgId: string,\n key: SymmetricCryptoKey = null): Promise {\n const promises = [];\n const self: any = this;\n\n for (const prop in map) {\n if (!map.hasOwnProperty(prop)) {\n continue;\n }\n\n // tslint:disable-next-line\n (function (theProp) {\n const p = Promise.resolve().then(() => {\n const mapProp = map[theProp] || theProp;\n if (self[mapProp]) {\n return self[mapProp].decrypt(orgId, key);\n }\n return null;\n }).then((val: any) => {\n (viewModel as any)[theProp] = val;\n });\n promises.push(p);\n })(prop);\n }\n\n await Promise.all(promises);\n return viewModel;\n }\n}\n","import { ItemView } from './itemView';\n\nimport { Card } from '../domain/card';\n\nimport { CardLinkedId as LinkedId } from '../../enums/linkedIdType';\n\nimport { linkedFieldOption } from '../../misc/linkedFieldOption.decorator';\n\nexport class CardView extends ItemView {\n @linkedFieldOption(LinkedId.CardholderName)\n cardholderName: string = null;\n @linkedFieldOption(LinkedId.ExpMonth, 'expirationMonth')\n expMonth: string = null;\n @linkedFieldOption(LinkedId.ExpYear, 'expirationYear')\n expYear: string = null;\n @linkedFieldOption(LinkedId.Code, 'securityCode')\n code: string = null;\n\n // tslint:disable\n private _brand: string = null;\n private _number: string = null;\n private _subTitle: string = null;\n // tslint:enable\n\n constructor(c?: Card) {\n super();\n }\n\n get maskedCode(): string {\n return this.code != null ? '•'.repeat(this.code.length) : null;\n }\n\n get maskedNumber(): string {\n return this.number != null ? '•'.repeat(this.number.length) : null;\n }\n\n @linkedFieldOption(LinkedId.Brand)\n get brand(): string {\n return this._brand;\n }\n set brand(value: string) {\n this._brand = value;\n this._subTitle = null;\n }\n\n @linkedFieldOption(LinkedId.Number)\n get number(): string {\n return this._number;\n }\n set number(value: string) {\n this._number = value;\n this._subTitle = null;\n }\n\n get subTitle(): string {\n if (this._subTitle == null) {\n this._subTitle = this.brand;\n if (this.number != null && this.number.length >= 4) {\n if (this._subTitle != null && this._subTitle !== '') {\n this._subTitle += ', ';\n } else {\n this._subTitle = '';\n }\n\n // Show last 5 on amex, last 4 for all others\n const count = this.number.length >= 5 && this.number.match(new RegExp('^3[47]')) != null ? 5 : 4;\n this._subTitle += ('*' + this.number.substr(this.number.length - count));\n }\n }\n return this._subTitle;\n }\n\n get expiration(): string {\n if (!this.expMonth && !this.expYear) {\n return null;\n }\n\n let exp = this.expMonth != null ? ('0' + this.expMonth).slice(-2) : '__';\n exp += (' / ' + (this.expYear != null ? this.formatYear(this.expYear) : '____'));\n return exp;\n }\n\n private formatYear(year: string): string {\n return year.length === 2 ? '20' + year : year;\n }\n}\n","import {\n Pipe,\n PipeTransform,\n} from '@angular/core';\n\ninterface User {\n name?: string;\n email: string;\n}\n\n@Pipe({\n name: 'userName',\n})\nexport class UserNamePipe implements PipeTransform {\n transform(user?: User): string {\n if (user == null) {\n return null;\n }\n\n return user.name == null || user.name.trim() === '' ? user.email : user.name;\n }\n}\n","import { EncString } from '../models/domain/encString';\n\nexport abstract class VaultTimeoutService {\n biometricLocked: boolean;\n everBeenUnlocked: boolean;\n pinProtectedKey: EncString;\n isLocked: () => Promise;\n checkVaultTimeout: () => Promise;\n lock: (allowSoftLock?: boolean) => Promise;\n logOut: () => Promise;\n setVaultTimeoutOptions: (vaultTimeout: number, vaultTimeoutAction: string) => Promise;\n getVaultTimeout: () => Promise;\n isPinLockSet: () => Promise<[boolean, boolean]>;\n isBiometricLockSet: () => Promise;\n clear: () => Promise;\n}\n","import { EncryptionType } from '../../enums/encryptionType';\n\nimport { CryptoService } from '../../abstractions/crypto.service';\n\nimport { Utils } from '../../misc/utils';\n\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class EncString {\n encryptedString?: string;\n encryptionType?: EncryptionType;\n decryptedValue?: string;\n data?: string;\n iv?: string;\n mac?: string;\n\n constructor(encryptedStringOrType: string | EncryptionType, data?: string, iv?: string, mac?: string) {\n if (data != null) {\n // data and header\n const encType = encryptedStringOrType as EncryptionType;\n\n if (iv != null) {\n this.encryptedString = encType + '.' + iv + '|' + data;\n } else {\n this.encryptedString = encType + '.' + data;\n }\n\n // mac\n if (mac != null) {\n this.encryptedString += ('|' + mac);\n }\n\n this.encryptionType = encType;\n this.data = data;\n this.iv = iv;\n this.mac = mac;\n\n return;\n }\n\n this.encryptedString = encryptedStringOrType as string;\n if (!this.encryptedString) {\n return;\n }\n\n const headerPieces = this.encryptedString.split('.');\n let encPieces: string[] = null;\n\n if (headerPieces.length === 2) {\n try {\n this.encryptionType = parseInt(headerPieces[0], null);\n encPieces = headerPieces[1].split('|');\n } catch (e) {\n return;\n }\n } else {\n encPieces = this.encryptedString.split('|');\n this.encryptionType = encPieces.length === 3 ? EncryptionType.AesCbc128_HmacSha256_B64 :\n EncryptionType.AesCbc256_B64;\n }\n\n switch (this.encryptionType) {\n case EncryptionType.AesCbc128_HmacSha256_B64:\n case EncryptionType.AesCbc256_HmacSha256_B64:\n if (encPieces.length !== 3) {\n return;\n }\n\n this.iv = encPieces[0];\n this.data = encPieces[1];\n this.mac = encPieces[2];\n break;\n case EncryptionType.AesCbc256_B64:\n if (encPieces.length !== 2) {\n return;\n }\n\n this.iv = encPieces[0];\n this.data = encPieces[1];\n break;\n case EncryptionType.Rsa2048_OaepSha256_B64:\n case EncryptionType.Rsa2048_OaepSha1_B64:\n if (encPieces.length !== 1) {\n return;\n }\n\n this.data = encPieces[0];\n break;\n default:\n return;\n }\n }\n\n async decrypt(orgId: string, key: SymmetricCryptoKey = null): Promise {\n if (this.decryptedValue != null) {\n return this.decryptedValue;\n }\n\n let cryptoService: CryptoService;\n const containerService = (Utils.global as any).bitwardenContainerService;\n if (containerService) {\n cryptoService = containerService.getCryptoService();\n } else {\n throw new Error('global bitwardenContainerService not initialized.');\n }\n\n try {\n if (key == null) {\n key = await cryptoService.getOrgKey(orgId);\n }\n this.decryptedValue = await cryptoService.decryptToUtf8(this, key);\n } catch (e) {\n this.decryptedValue = '[error: cannot decrypt]';\n }\n return this.decryptedValue;\n }\n}\n","import { DecryptParameters } from '../models/domain/decryptParameters';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nexport abstract class CryptoFunctionService {\n pbkdf2: (password: string | ArrayBuffer, salt: string | ArrayBuffer, algorithm: 'sha256' | 'sha512',\n iterations: number) => Promise;\n hkdf: (ikm: ArrayBuffer, salt: string | ArrayBuffer, info: string | ArrayBuffer,\n outputByteSize: number, algorithm: 'sha256' | 'sha512') => Promise;\n hkdfExpand: (prk: ArrayBuffer, info: string | ArrayBuffer, outputByteSize: number,\n algorithm: 'sha256' | 'sha512') => Promise;\n hash: (value: string | ArrayBuffer, algorithm: 'sha1' | 'sha256' | 'sha512' | 'md5') => Promise;\n hmac: (value: ArrayBuffer, key: ArrayBuffer, algorithm: 'sha1' | 'sha256' | 'sha512') => Promise;\n compare: (a: ArrayBuffer, b: ArrayBuffer) => Promise;\n hmacFast: (value: ArrayBuffer | string, key: ArrayBuffer | string, algorithm: 'sha1' | 'sha256' | 'sha512') =>\n Promise;\n compareFast: (a: ArrayBuffer | string, b: ArrayBuffer | string) => Promise;\n aesEncrypt: (data: ArrayBuffer, iv: ArrayBuffer, key: ArrayBuffer) => Promise;\n aesDecryptFastParameters: (data: string, iv: string, mac: string, key: SymmetricCryptoKey) =>\n DecryptParameters;\n aesDecryptFast: (parameters: DecryptParameters) => Promise;\n aesDecrypt: (data: ArrayBuffer, iv: ArrayBuffer, key: ArrayBuffer) => Promise;\n rsaEncrypt: (data: ArrayBuffer, publicKey: ArrayBuffer, algorithm: 'sha1' | 'sha256') => Promise;\n rsaDecrypt: (data: ArrayBuffer, privateKey: ArrayBuffer, algorithm: 'sha1' | 'sha256') => Promise;\n rsaExtractPublicKey: (privateKey: ArrayBuffer) => Promise;\n rsaGenerateKeyPair: (length: 1024 | 2048 | 4096) => Promise<[ArrayBuffer, ArrayBuffer]>;\n randomBytes: (length: number) => Promise;\n}\n","import { BreachAccountResponse } from '../models/response/breachAccountResponse';\n\nexport abstract class AuditService {\n passwordLeaked: (password: string) => Promise;\n breachedAccounts: (username: string) => Promise;\n}\n","export class SecretVerificationRequest {\n masterPasswordHash: string;\n otp: string;\n}\n","import { SecureNoteType } from '../../enums/secureNoteType';\n\nimport { ItemView } from './itemView';\n\nimport { SecureNote } from '../domain/secureNote';\n\nexport class SecureNoteView extends ItemView {\n type: SecureNoteType = null;\n\n constructor(n?: SecureNote) {\n super();\n if (!n) {\n return;\n }\n\n this.type = n.type;\n }\n\n get subTitle(): string {\n return null;\n }\n}\n","export enum SecureNoteType {\n Generic = 0,\n}\n","import {\n Component,\n Input,\n OnChanges,\n} from '@angular/core';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\nconst IconMap: any = {\n 'fa-globe': String.fromCharCode(0xf0ac),\n 'fa-sticky-note-o': String.fromCharCode(0xf24a),\n 'fa-id-card-o': String.fromCharCode(0xf2c3),\n 'fa-credit-card': String.fromCharCode(0xf09d),\n 'fa-android': String.fromCharCode(0xf17b),\n 'fa-apple': String.fromCharCode(0xf179),\n};\n\n@Component({\n selector: 'app-vault-icon',\n templateUrl: 'icon.component.html',\n})\nexport class IconComponent implements OnChanges {\n @Input() cipher: CipherView;\n icon: string;\n image: string;\n fallbackImage: string;\n imageEnabled: boolean;\n\n private iconsUrl: string;\n\n constructor(environmentService: EnvironmentService, protected stateService: StateService) {\n this.iconsUrl = environmentService.getIconsUrl();\n }\n\n async ngOnChanges() {\n // Components may be re-used when using cdk-virtual-scroll. Which puts the component in a weird state,\n // to avoid this we reset all state variables.\n this.image = null;\n this.fallbackImage = null;\n this.imageEnabled = !(await this.stateService.get(ConstantsService.disableFaviconKey));\n this.load();\n }\n\n get iconCode(): string {\n return IconMap[this.icon];\n }\n\n protected load() {\n switch (this.cipher.type) {\n case CipherType.Login:\n this.icon = 'fa-globe';\n this.setLoginIcon();\n break;\n case CipherType.SecureNote:\n this.icon = 'fa-sticky-note-o';\n break;\n case CipherType.Card:\n this.icon = 'fa-credit-card';\n break;\n case CipherType.Identity:\n this.icon = 'fa-id-card-o';\n break;\n default:\n break;\n }\n }\n\n private setLoginIcon() {\n if (this.cipher.login.uri) {\n let hostnameUri = this.cipher.login.uri;\n let isWebsite = false;\n\n if (hostnameUri.indexOf('androidapp://') === 0) {\n this.icon = 'fa-android';\n this.image = null;\n } else if (hostnameUri.indexOf('iosapp://') === 0) {\n this.icon = 'fa-apple';\n this.image = null;\n } else if (this.imageEnabled && hostnameUri.indexOf('://') === -1 && hostnameUri.indexOf('.') > -1) {\n hostnameUri = 'http://' + hostnameUri;\n isWebsite = true;\n } else if (this.imageEnabled) {\n isWebsite = hostnameUri.indexOf('http') === 0 && hostnameUri.indexOf('.') > -1;\n }\n\n if (this.imageEnabled && isWebsite) {\n try {\n this.image = this.iconsUrl + '/' + Utils.getHostname(hostnameUri) + '/icon.png';\n this.fallbackImage = 'images/fa-globe.png';\n } catch (e) {\n // Ignore error since the fallback icon will be shown if image is null.\n }\n }\n } else {\n this.image = null;\n }\n }\n}\n","
\"\"/
","import { Injectable } from '@angular/core';\n\nimport { BroadcasterService as BaseBroadcasterService } from 'jslib-common/services/broadcaster.service';\n\n@Injectable()\nexport class BroadcasterService extends BaseBroadcasterService {\n}\n","export abstract class TokenService {\n token: string;\n decodedToken: any;\n refreshToken: string;\n setTokens: (accessToken: string, refreshToken: string, clientIdClientSecret: [string, string]) => Promise;\n setToken: (token: string) => Promise;\n getToken: () => Promise;\n setRefreshToken: (refreshToken: string) => Promise;\n getRefreshToken: () => Promise;\n setClientId: (clientId: string) => Promise;\n getClientId: () => Promise;\n setClientSecret: (clientSecret: string) => Promise;\n getClientSecret: () => Promise;\n toggleTokens: () => Promise;\n setTwoFactorToken: (token: string, email: string) => Promise;\n getTwoFactorToken: (email: string) => Promise;\n clearTwoFactorToken: (email: string) => Promise;\n clearToken: () => Promise;\n decodeToken: () => any;\n getTokenExpirationDate: () => Date;\n tokenSecondsRemaining: (offsetSeconds?: number) => number;\n tokenNeedsRefresh: (minutes?: number) => boolean;\n getUserId: () => string;\n getEmail: () => string;\n getEmailVerified: () => boolean;\n getName: () => string;\n getPremium: () => boolean;\n getIssuer: () => string;\n getIsExternal: () => boolean;\n}\n","","export enum TwoFactorProviderType {\n Authenticator = 0,\n Email = 1,\n Duo = 2,\n Yubikey = 3,\n U2f = 4,\n Remember = 5,\n OrganizationDuo = 6,\n WebAuthn = 7,\n}\n","import { EventView } from '../models/view/eventView';\n\nexport abstract class ExportService {\n getExport: (format?: 'csv' | 'json' | 'encrypted_json') => Promise;\n getOrganizationExport: (organizationId: string, format?: 'csv' | 'json' | 'encrypted_json') => Promise;\n getEventExport: (events: EventView[]) => Promise;\n getFileName: (prefix?: string, extension?: string) => string;\n}\n","export abstract class TotpService {\n getCode: (key: string) => Promise;\n getTimeInterval: (key: string) => number;\n isAutoCopyEnabled: () => Promise;\n}\n","export enum FieldType {\n Text = 0,\n Hidden = 1,\n Boolean = 2,\n Linked = 3,\n}\n","import { SendData } from '../models/data/sendData';\n\nimport { EncArrayBuffer } from '../models/domain/encArrayBuffer';\nimport { Send } from '../models/domain/send';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { SendView } from '../models/view/sendView';\n\nexport abstract class SendService {\n decryptedSendCache: SendView[];\n\n clearCache: () => void;\n encrypt: (model: SendView, file: File | ArrayBuffer, password: string, key?: SymmetricCryptoKey) => Promise<[Send, EncArrayBuffer]>;\n get: (id: string) => Promise;\n getAll: () => Promise;\n getAllDecrypted: () => Promise;\n saveWithServer: (sendData: [Send, EncArrayBuffer]) => Promise;\n upsert: (send: SendData | SendData[]) => Promise;\n replace: (sends: { [id: string]: SendData; }) => Promise;\n clear: (userId: string) => Promise;\n delete: (id: string | string[]) => Promise;\n deleteWithServer: (id: string) => Promise;\n removePasswordWithServer: (id: string) => Promise;\n}\n","import {\n Directive,\n Input,\n OnInit,\n} from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { PolicyRequest } from 'jslib-common/models/request/policyRequest';\n\nimport { PolicyResponse } from 'jslib-common/models/response/policyResponse';\n\nexport abstract class BasePolicy {\n abstract name: string;\n abstract description: string;\n abstract type: PolicyType;\n abstract component: any;\n\n display(organization: Organization) {\n return true;\n }\n}\n\n@Directive()\nexport abstract class BasePolicyComponent implements OnInit {\n @Input() policyResponse: PolicyResponse;\n @Input() policy: BasePolicy;\n\n enabled = new FormControl(false);\n data: FormGroup = null;\n\n ngOnInit(): void {\n this.enabled.setValue(this.policyResponse.enabled);\n\n if (this.policyResponse.data != null) {\n this.loadData();\n }\n }\n\n loadData() {\n this.data.patchValue(this.policyResponse.data ?? {});\n }\n\n buildRequestData() {\n if (this.data != null) {\n return this.data.value;\n }\n\n return null;\n }\n\n buildRequest(policiesEnabledMap: Map) {\n const request = new PolicyRequest();\n request.enabled = this.enabled.value;\n request.type = this.policy.type;\n request.data = this.buildRequestData();\n\n return Promise.resolve(request);\n }\n}\n","import {\n Component,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { PaymentMethodType } from 'jslib-common/enums/paymentMethodType';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { ThemeType } from 'jslib-common/enums/themeType';\n\nimport ThemeVariables from 'src/scss/export.module.scss';\n\nconst lightInputColor = ThemeVariables.lightInputColor;\nconst lightInputPlaceholderColor = ThemeVariables.lightInputPlaceholderColor;\nconst darkInputColor = ThemeVariables.darkInputColor;\nconst darkInputPlaceholderColor = ThemeVariables.darkInputPlaceholderColor;\n\n@Component({\n selector: 'app-payment',\n templateUrl: 'payment.component.html',\n})\nexport class PaymentComponent implements OnInit {\n @Input() showMethods = true;\n @Input() showOptions = true;\n @Input() method = PaymentMethodType.Card;\n @Input() hideBank = false;\n @Input() hidePaypal = false;\n @Input() hideCredit = false;\n\n bank: any = {\n routing_number: null,\n account_number: null,\n account_holder_name: null,\n account_holder_type: '',\n currency: 'USD',\n country: 'US',\n };\n\n paymentMethodType = PaymentMethodType;\n\n private btScript: HTMLScriptElement;\n private btInstance: any = null;\n private stripeScript: HTMLScriptElement;\n private stripe: any = null;\n private stripeElements: any = null;\n private stripeCardNumberElement: any = null;\n private stripeCardExpiryElement: any = null;\n private stripeCardCvcElement: any = null;\n private StripeElementStyle: any;\n private StripeElementClasses: any;\n\n constructor(private platformUtilsService: PlatformUtilsService, private apiService: ApiService,\n private logService: LogService) {\n this.stripeScript = window.document.createElement('script');\n this.stripeScript.src = 'https://js.stripe.com/v3/';\n this.stripeScript.async = true;\n this.stripeScript.onload = () => {\n this.stripe = (window as any).Stripe(process.env.STRIPE_KEY);\n this.stripeElements = this.stripe.elements();\n this.setStripeElement();\n };\n this.btScript = window.document.createElement('script');\n this.btScript.src = `scripts/dropin.js?cache=${process.env.CACHE_TAG}`;\n this.btScript.async = true;\n this.StripeElementStyle = {\n base: {\n color: null,\n fontFamily: '\"Open Sans\", \"Helvetica Neue\", Helvetica, Arial, sans-serif, ' +\n '\"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"',\n fontSize: '14px',\n fontSmoothing: 'antialiased',\n '::placeholder': {\n color: null,\n },\n },\n invalid: {\n color: null,\n\n },\n };\n this.StripeElementClasses = {\n focus: 'is-focused',\n empty: 'is-empty',\n invalid: 'is-invalid',\n };\n }\n\n async ngOnInit() {\n if (!this.showOptions) {\n this.hidePaypal = this.method !== PaymentMethodType.PayPal;\n this.hideBank = this.method !== PaymentMethodType.BankAccount;\n this.hideCredit = this.method !== PaymentMethodType.Credit;\n }\n await this.setTheme();\n window.document.head.appendChild(this.stripeScript);\n if (!this.hidePaypal) {\n window.document.head.appendChild(this.btScript);\n }\n }\n\n ngOnDestroy() {\n window.document.head.removeChild(this.stripeScript);\n window.setTimeout(() => {\n Array.from(window.document.querySelectorAll('iframe')).forEach(el => {\n if (el.src != null && el.src.indexOf('stripe') > -1) {\n try {\n window.document.body.removeChild(el);\n } catch (e) {\n this.logService.error(e);\n }\n }\n });\n }, 500);\n if (!this.hidePaypal) {\n window.document.head.removeChild(this.btScript);\n window.setTimeout(() => {\n Array.from(window.document.head.querySelectorAll('script')).forEach(el => {\n if (el.src != null && el.src.indexOf('paypal') > -1) {\n try {\n window.document.head.removeChild(el);\n } catch (e) {\n this.logService.error(e);\n }\n }\n });\n const btStylesheet = window.document.head.querySelector('#braintree-dropin-stylesheet');\n if (btStylesheet != null) {\n try {\n window.document.head.removeChild(btStylesheet);\n } catch (e) {\n this.logService.error(e);\n }\n }\n }, 500);\n }\n }\n\n changeMethod() {\n this.btInstance = null;\n\n if (this.method === PaymentMethodType.PayPal) {\n window.setTimeout(() => {\n (window as any).braintree.dropin.create({\n authorization: process.env.BRAINTREE_KEY,\n container: '#bt-dropin-container',\n paymentOptionPriority: ['paypal'],\n paypal: {\n flow: 'vault',\n buttonStyle: {\n label: 'pay',\n size: 'medium',\n shape: 'pill',\n color: 'blue',\n tagline: 'false',\n },\n },\n }, (createErr: any, instance: any) => {\n if (createErr != null) {\n // tslint:disable-next-line\n console.error(createErr);\n return;\n }\n this.btInstance = instance;\n });\n }, 250);\n } else {\n this.setStripeElement();\n }\n }\n\n createPaymentToken(): Promise<[string, PaymentMethodType]> {\n return new Promise((resolve, reject) => {\n if (this.method === PaymentMethodType.Credit) {\n resolve([null, this.method]);\n } else if (this.method === PaymentMethodType.PayPal) {\n this.btInstance.requestPaymentMethod().then((payload: any) => {\n resolve([payload.nonce, this.method]);\n }).catch((err: any) => {\n reject(err.message);\n });\n } else if (this.method === PaymentMethodType.Card || this.method === PaymentMethodType.BankAccount) {\n if (this.method === PaymentMethodType.Card) {\n this.apiService.postSetupPayment().then(clientSecret =>\n this.stripe.handleCardSetup(clientSecret, this.stripeCardNumberElement))\n .then((result: any) => {\n if (result.error) {\n reject(result.error.message);\n } else if (result.setupIntent && result.setupIntent.status === 'succeeded') {\n resolve([result.setupIntent.payment_method, this.method]);\n } else {\n reject();\n }\n });\n } else {\n this.stripe.createToken('bank_account', this.bank).then((result: any) => {\n if (result.error) {\n reject(result.error.message);\n } else if (result.token && result.token.id != null) {\n resolve([result.token.id, this.method]);\n } else {\n reject();\n }\n });\n }\n }\n });\n }\n\n handleStripeCardPayment(clientSecret: string, successCallback: () => Promise): Promise {\n return new Promise((resolve, reject) => {\n if (this.showMethods && this.stripeCardNumberElement == null) {\n reject();\n return;\n }\n const handleCardPayment = () => this.showMethods ?\n this.stripe.handleCardSetup(clientSecret, this.stripeCardNumberElement) :\n this.stripe.handleCardSetup(clientSecret);\n return handleCardPayment().then(async (result: any) => {\n if (result.error) {\n reject(result.error.message);\n } else if (result.paymentIntent && result.paymentIntent.status === 'succeeded') {\n if (successCallback != null) {\n await successCallback();\n }\n resolve();\n } else {\n reject();\n }\n });\n });\n }\n\n private setStripeElement() {\n window.setTimeout(() => {\n if (this.showMethods && this.method === PaymentMethodType.Card) {\n if (this.stripeCardNumberElement == null) {\n this.stripeCardNumberElement = this.stripeElements.create('cardNumber', {\n style: this.StripeElementStyle,\n classes: this.StripeElementClasses,\n placeholder: '',\n });\n }\n if (this.stripeCardExpiryElement == null) {\n this.stripeCardExpiryElement = this.stripeElements.create('cardExpiry', {\n style: this.StripeElementStyle,\n classes: this.StripeElementClasses,\n });\n }\n if (this.stripeCardCvcElement == null) {\n this.stripeCardCvcElement = this.stripeElements.create('cardCvc', {\n style: this.StripeElementStyle,\n classes: this.StripeElementClasses,\n placeholder: '',\n });\n }\n this.stripeCardNumberElement.mount('#stripe-card-number-element');\n this.stripeCardExpiryElement.mount('#stripe-card-expiry-element');\n this.stripeCardCvcElement.mount('#stripe-card-cvc-element');\n }\n }, 50);\n }\n\n private async setTheme() {\n const theme = await this.platformUtilsService.getEffectiveTheme();\n if (theme === ThemeType.Dark) {\n this.StripeElementStyle.base.color = darkInputColor;\n this.StripeElementStyle.base['::placeholder'].color = darkInputPlaceholderColor;\n this.StripeElementStyle.invalid.color = darkInputColor;\n } else {\n this.StripeElementStyle.base.color = lightInputColor;\n this.StripeElementStyle.base['::placeholder'].color = lightInputPlaceholderColor;\n this.StripeElementStyle.invalid.color = lightInputColor;\n }\n }\n}\n","
\"Visa,
{{'verifyBankAccountInitialDesc' | i18n}} {{'verifyBankAccountFailureWarning' | i18n}}
{{'paypalClickSubmit' | i18n}}
{{'makeSureEnoughCredit' | i18n}} ","import { CipherRepromptType } from '../../enums/cipherRepromptType';\nimport { CipherType } from '../../enums/cipherType';\nimport { LinkedIdType } from '../../enums/linkedIdType';\n\nimport { Cipher } from '../domain/cipher';\n\nimport { AttachmentView } from './attachmentView';\nimport { CardView } from './cardView';\nimport { FieldView } from './fieldView';\nimport { IdentityView } from './identityView';\nimport { ItemView } from './itemView';\nimport { LoginView } from './loginView';\nimport { PasswordHistoryView } from './passwordHistoryView';\nimport { SecureNoteView } from './secureNoteView';\nimport { View } from './view';\n\nexport class CipherView implements View {\n id: string = null;\n organizationId: string = null;\n folderId: string = null;\n name: string = null;\n notes: string = null;\n type: CipherType = null;\n favorite = false;\n organizationUseTotp = false;\n edit = false;\n viewPassword = true;\n localData: any;\n login = new LoginView();\n identity = new IdentityView();\n card = new CardView();\n secureNote = new SecureNoteView();\n attachments: AttachmentView[] = null;\n fields: FieldView[] = null;\n passwordHistory: PasswordHistoryView[] = null;\n collectionIds: string[] = null;\n revisionDate: Date = null;\n deletedDate: Date = null;\n reprompt: CipherRepromptType = CipherRepromptType.None;\n\n constructor(c?: Cipher) {\n if (!c) {\n return;\n }\n\n this.id = c.id;\n this.organizationId = c.organizationId;\n this.folderId = c.folderId;\n this.favorite = c.favorite;\n this.organizationUseTotp = c.organizationUseTotp;\n this.edit = c.edit;\n this.viewPassword = c.viewPassword;\n this.type = c.type;\n this.localData = c.localData;\n this.collectionIds = c.collectionIds;\n this.revisionDate = c.revisionDate;\n this.deletedDate = c.deletedDate;\n // Old locally stored ciphers might have reprompt == null. If so set it to None.\n this.reprompt = c.reprompt ?? CipherRepromptType.None;\n }\n\n private get item() {\n switch (this.type) {\n case CipherType.Login:\n return this.login;\n case CipherType.SecureNote:\n return this.secureNote;\n case CipherType.Card:\n return this.card;\n case CipherType.Identity:\n return this.identity;\n default:\n break;\n }\n\n return null;\n }\n\n get subTitle(): string {\n return this.item.subTitle;\n }\n\n get hasPasswordHistory(): boolean {\n return this.passwordHistory && this.passwordHistory.length > 0;\n }\n\n get hasAttachments(): boolean {\n return this.attachments && this.attachments.length > 0;\n }\n\n get hasOldAttachments(): boolean {\n if (this.hasAttachments) {\n for (let i = 0; i < this.attachments.length; i++) {\n if (this.attachments[i].key == null) {\n return true;\n }\n }\n }\n return false;\n }\n\n get hasFields(): boolean {\n return this.fields && this.fields.length > 0;\n }\n\n get passwordRevisionDisplayDate(): Date {\n if (this.type !== CipherType.Login || this.login == null) {\n return null;\n } else if (this.login.password == null || this.login.password === '') {\n return null;\n }\n return this.login.passwordRevisionDate;\n }\n\n get isDeleted(): boolean {\n return this.deletedDate != null;\n }\n\n get linkedFieldOptions() {\n return this.item.linkedFieldOptions;\n }\n\n linkedFieldValue(id: LinkedIdType) {\n const linkedFieldOption = this.linkedFieldOptions?.get(id);\n if (linkedFieldOption == null) {\n return null;\n }\n\n const item = this.item;\n return this.item[linkedFieldOption.propertyKey as keyof typeof item];\n }\n\n linkedFieldI18nKey(id: LinkedIdType): string {\n return this.linkedFieldOptions.get(id)?.i18nKey;\n }\n}\n","import { ItemView } from './itemView';\n\nimport { Identity } from '../domain/identity';\n\nimport { Utils } from '../../misc/utils';\n\nimport { IdentityLinkedId as LinkedId } from '../../enums/linkedIdType';\n\nimport { linkedFieldOption } from '../../misc/linkedFieldOption.decorator';\n\nexport class IdentityView extends ItemView {\n @linkedFieldOption(LinkedId.Title)\n title: string = null;\n @linkedFieldOption(LinkedId.MiddleName)\n middleName: string = null;\n @linkedFieldOption(LinkedId.Address1)\n address1: string = null;\n @linkedFieldOption(LinkedId.Address2)\n address2: string = null;\n @linkedFieldOption(LinkedId.Address3)\n address3: string = null;\n @linkedFieldOption(LinkedId.City, 'cityTown')\n city: string = null;\n @linkedFieldOption(LinkedId.State, 'stateProvince')\n state: string = null;\n @linkedFieldOption(LinkedId.PostalCode, 'zipPostalCode')\n postalCode: string = null;\n @linkedFieldOption(LinkedId.Country)\n country: string = null;\n @linkedFieldOption(LinkedId.Company)\n company: string = null;\n @linkedFieldOption(LinkedId.Email)\n email: string = null;\n @linkedFieldOption(LinkedId.Phone)\n phone: string = null;\n @linkedFieldOption(LinkedId.Ssn)\n ssn: string = null;\n @linkedFieldOption(LinkedId.Username)\n username: string = null;\n @linkedFieldOption(LinkedId.PassportNumber)\n passportNumber: string = null;\n @linkedFieldOption(LinkedId.LicenseNumber)\n licenseNumber: string = null;\n\n // tslint:disable\n private _firstName: string = null;\n private _lastName: string = null;\n private _subTitle: string = null;\n // tslint:enable\n\n constructor(i?: Identity) {\n super();\n }\n\n @linkedFieldOption(LinkedId.FirstName)\n get firstName(): string {\n return this._firstName;\n }\n set firstName(value: string) {\n this._firstName = value;\n this._subTitle = null;\n }\n\n @linkedFieldOption(LinkedId.LastName)\n get lastName(): string {\n return this._lastName;\n }\n set lastName(value: string) {\n this._lastName = value;\n this._subTitle = null;\n }\n\n get subTitle(): string {\n if (this._subTitle == null && (this.firstName != null || this.lastName != null)) {\n this._subTitle = '';\n if (this.firstName != null) {\n this._subTitle = this.firstName;\n }\n if (this.lastName != null) {\n if (this._subTitle !== '') {\n this._subTitle += ' ';\n }\n this._subTitle += this.lastName;\n }\n }\n\n return this._subTitle;\n }\n\n @linkedFieldOption(LinkedId.FullName)\n get fullName(): string {\n if (this.title != null || this.firstName != null || this.middleName != null || this.lastName != null) {\n let name = '';\n if (this.title != null) {\n name += (this.title + ' ');\n }\n if (this.firstName != null) {\n name += (this.firstName + ' ');\n }\n if (this.middleName != null) {\n name += (this.middleName + ' ');\n }\n if (this.lastName != null) {\n name += this.lastName;\n }\n return name.trim();\n }\n\n return null;\n }\n\n get fullAddress(): string {\n let address = this.address1;\n if (!Utils.isNullOrWhitespace(this.address2)) {\n if (!Utils.isNullOrWhitespace(address)) {\n address += ', ';\n }\n address += this.address2;\n }\n if (!Utils.isNullOrWhitespace(this.address3)) {\n if (!Utils.isNullOrWhitespace(address)) {\n address += ', ';\n }\n address += this.address3;\n }\n return address;\n }\n\n get fullAddressPart2(): string {\n if (this.city == null && this.state == null && this.postalCode == null) {\n return null;\n }\n const city = this.city || '-';\n const state = this.state;\n const postalCode = this.postalCode || '-';\n let addressPart2 = city;\n if (!Utils.isNullOrWhitespace(state)) {\n addressPart2 += ', ' + state;\n }\n addressPart2 += ', ' + postalCode;\n return addressPart2;\n }\n}\n","import { View } from './view';\n\nimport { Folder } from '../domain/folder';\nimport { ITreeNodeObject } from '../domain/treeNode';\n\nexport class FolderView implements View, ITreeNodeObject {\n id: string = null;\n name: string = null;\n revisionDate: Date = null;\n\n constructor(f?: Folder) {\n if (!f) {\n return;\n }\n\n this.id = f.id;\n this.revisionDate = f.revisionDate;\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { ErrorResponse } from 'jslib-common/models/response/errorResponse';\n\n@Injectable()\nexport class ValidationService {\n constructor(private i18nService: I18nService, private platformUtilsService: PlatformUtilsService) { }\n\n showError(data: any): string[] {\n const defaultErrorMessage = this.i18nService.t('unexpectedError');\n let errors: string[] = [];\n\n if (data != null && typeof data === 'string') {\n errors.push(data);\n } else if (data == null || typeof data !== 'object') {\n errors.push(defaultErrorMessage);\n } else if (data.validationErrors != null) {\n errors = errors.concat((data as ErrorResponse).getAllMessages());\n } else {\n errors.push(data.message ? data.message : defaultErrorMessage);\n }\n\n if (errors.length === 1) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'), errors[0]);\n } else if (errors.length > 1) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'), errors, {\n timeout: 5000 * errors.length,\n });\n }\n\n return errors;\n }\n}\n","import {\n animate,\n style,\n transition,\n trigger,\n} from '@angular/animations';\nimport {\n Component,\n OnInit,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n FormControl,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\n\nimport { KeyConnectorService } from 'jslib-common/abstractions/keyConnector.service';\nimport { UserVerificationService } from 'jslib-common/abstractions/userVerification.service';\n\nimport { VerificationType } from 'jslib-common/enums/verificationType';\n\nimport { Verification } from 'jslib-common/types/verification';\n\n@Component({\n selector: 'app-verify-master-password',\n templateUrl: 'verify-master-password.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: VerifyMasterPasswordComponent,\n },\n ],\n animations: [\n trigger('sent', [\n transition(':enter', [\n style({ opacity: 0 }),\n animate('100ms', style({ opacity: 1 })),\n ]),\n ]),\n ],\n})\nexport class VerifyMasterPasswordComponent implements ControlValueAccessor, OnInit {\n usesKeyConnector: boolean = false;\n disableRequestOTP: boolean = false;\n sentCode: boolean = false;\n\n secret = new FormControl('');\n\n private onChange: (value: Verification) => void;\n\n constructor(private keyConnectorService: KeyConnectorService,\n private userVerificationService: UserVerificationService) { }\n\n async ngOnInit() {\n this.usesKeyConnector = await this.keyConnectorService.getUsesKeyConnector();\n this.processChanges(this.secret.value);\n\n this.secret.valueChanges.subscribe(secret => this.processChanges(secret));\n }\n\n async requestOTP() {\n if (this.usesKeyConnector) {\n this.disableRequestOTP = true;\n try {\n await this.userVerificationService.requestOTP();\n this.sentCode = true;\n } finally {\n this.disableRequestOTP = false;\n }\n }\n }\n\n writeValue(obj: any): void {\n this.secret.setValue(obj);\n }\n\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n // Not implemented\n }\n\n setDisabledState?(isDisabled: boolean): void {\n this.disableRequestOTP = isDisabled;\n if (isDisabled) {\n this.secret.disable();\n } else {\n this.secret.enable();\n }\n }\n\n private processChanges(secret: string) {\n if (this.onChange == null) {\n return;\n }\n\n this.onChange({\n type: this.usesKeyConnector ? VerificationType.OTP : VerificationType.MasterPassword,\n secret: secret,\n });\n }\n}\n"," {{'confirmIdentity' | i18n}}
{{'codeSent' | i18n}}
{{'confirmIdentity' | i18n}}
","import {\n Component,\n EventEmitter,\n Output,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { OrganizationTaxInfoUpdateRequest } from 'jslib-common/models/request/organizationTaxInfoUpdateRequest';\nimport { TaxInfoUpdateRequest } from 'jslib-common/models/request/taxInfoUpdateRequest';\nimport { TaxRateResponse } from 'jslib-common/models/response/taxRateResponse';\n\n@Component({\n selector: 'app-tax-info',\n templateUrl: 'tax-info.component.html',\n})\nexport class TaxInfoComponent {\n @Output() onCountryChanged = new EventEmitter();\n\n loading: boolean = true;\n organizationId: string;\n taxInfo: any = {\n taxId: null,\n line1: null,\n line2: null,\n city: null,\n state: null,\n postalCode: null,\n country: 'US',\n includeTaxId: false,\n };\n\n taxRates: TaxRateResponse[];\n\n private pristine: any = {\n taxId: null,\n line1: null,\n line2: null,\n city: null,\n state: null,\n postalCode: null,\n country: 'US',\n includeTaxId: false,\n };\n\n constructor(private apiService: ApiService, private route: ActivatedRoute, private logService: LogService) { }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n if (this.organizationId) {\n try {\n const taxInfo = await this.apiService.getOrganizationTaxInfo(this.organizationId);\n if (taxInfo) {\n this.taxInfo.taxId = taxInfo.taxId;\n this.taxInfo.state = taxInfo.state;\n this.taxInfo.line1 = taxInfo.line1;\n this.taxInfo.line2 = taxInfo.line2;\n this.taxInfo.city = taxInfo.city;\n this.taxInfo.state = taxInfo.state;\n this.taxInfo.postalCode = taxInfo.postalCode;\n this.taxInfo.country = taxInfo.country || 'US';\n this.taxInfo.includeTaxId = this.taxInfo.country !== 'US' && (\n !!taxInfo.taxId\n || !!taxInfo.line1\n || !!taxInfo.line2\n || !!taxInfo.city\n || !!taxInfo.state);\n }\n } catch (e) {\n this.logService.error(e);\n }\n } else {\n const taxInfo = await this.apiService.getTaxInfo();\n if (taxInfo) {\n this.taxInfo.postalCode = taxInfo.postalCode;\n this.taxInfo.country = taxInfo.country || 'US';\n }\n }\n this.pristine = Object.assign({}, this.taxInfo);\n // If not the default (US) then trigger onCountryChanged\n if (this.taxInfo.country !== 'US') {\n this.onCountryChanged.emit();\n }\n });\n\n const taxRates = await this.apiService.getTaxRates();\n this.taxRates = taxRates.data;\n this.loading = false;\n }\n\n get taxRate() {\n if (this.taxRates != null) {\n const localTaxRate = this.taxRates.find(x =>\n x.country === this.taxInfo.country &&\n x.postalCode === this.taxInfo.postalCode\n );\n return localTaxRate?.rate ?? null;\n }\n }\n\n getTaxInfoRequest(): TaxInfoUpdateRequest {\n if (this.organizationId) {\n const request = new OrganizationTaxInfoUpdateRequest();\n request.taxId = this.taxInfo.taxId;\n request.state = this.taxInfo.state;\n request.line1 = this.taxInfo.line1;\n request.line2 = this.taxInfo.line2;\n request.city = this.taxInfo.city;\n request.state = this.taxInfo.state;\n request.postalCode = this.taxInfo.postalCode;\n request.country = this.taxInfo.country;\n return request;\n } else {\n const request = new TaxInfoUpdateRequest();\n request.postalCode = this.taxInfo.postalCode;\n request.country = this.taxInfo.country;\n return request;\n }\n }\n\n submitTaxInfo(): Promise {\n if (!this.hasChanged()) {\n return new Promise(resolve => { resolve(); });\n }\n const request = this.getTaxInfoRequest();\n return this.organizationId ? this.apiService.putOrganizationTaxInfo(this.organizationId,\n request as OrganizationTaxInfoUpdateRequest) : this.apiService.putTaxInfo(request);\n }\n\n changeCountry() {\n if (this.taxInfo.country === 'US') {\n this.taxInfo.includeTaxId = false;\n this.taxInfo.taxId = null;\n this.taxInfo.line1 = null;\n this.taxInfo.line2 = null;\n this.taxInfo.city = null;\n this.taxInfo.state = null;\n }\n this.onCountryChanged.emit();\n }\n\n private hasChanged(): boolean {\n for (const key in this.taxInfo) {\n if (this.pristine.hasOwnProperty(key) && this.pristine[key] !== this.taxInfo[key]) {\n return true;\n }\n }\n return false;\n }\n}\n","
","import { ItemView } from './itemView';\nimport { LoginUriView } from './loginUriView';\n\nimport { Utils } from '../../misc/utils';\n\nimport { Login } from '../domain/login';\n\nimport { LoginLinkedId as LinkedId } from '../../enums/linkedIdType';\n\nimport { linkedFieldOption } from '../../misc/linkedFieldOption.decorator';\n\nexport class LoginView extends ItemView {\n @linkedFieldOption(LinkedId.Username)\n username: string = null;\n @linkedFieldOption(LinkedId.Password)\n password: string = null;\n\n passwordRevisionDate?: Date = null;\n totp: string = null;\n uris: LoginUriView[] = null;\n autofillOnPageLoad: boolean = null;\n\n constructor(l?: Login) {\n super();\n if (!l) {\n return;\n }\n\n this.passwordRevisionDate = l.passwordRevisionDate;\n this.autofillOnPageLoad = l.autofillOnPageLoad;\n }\n\n get uri(): string {\n return this.hasUris ? this.uris[0].uri : null;\n }\n\n get maskedPassword(): string {\n return this.password != null ? '••••••••' : null;\n }\n\n get subTitle(): string {\n return this.username;\n }\n\n get canLaunch(): boolean {\n return this.hasUris && this.uris.some(u => u.canLaunch);\n }\n\n get hasTotp(): boolean {\n return !Utils.isNullOrWhitespace(this.totp);\n }\n\n get launchUri(): string {\n if (this.hasUris) {\n const uri = this.uris.find(u => u.canLaunch);\n if (uri != null) {\n return uri.launchUri;\n }\n }\n return null;\n }\n\n get hasUris(): boolean {\n return this.uris != null && this.uris.length > 0;\n }\n}\n","import { CollectionData } from '../data/collectionData';\n\nimport { CollectionView } from '../view/collectionView';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\n\nexport class Collection extends Domain {\n id: string;\n organizationId: string;\n name: EncString;\n externalId: string;\n readOnly: boolean;\n hidePasswords: boolean;\n\n constructor(obj?: CollectionData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n id: null,\n organizationId: null,\n name: null,\n externalId: null,\n readOnly: null,\n hidePasswords: null,\n }, alreadyEncrypted, ['id', 'organizationId', 'externalId', 'readOnly', 'hidePasswords']);\n }\n\n decrypt(): Promise {\n return this.decryptObj(new CollectionView(this), {\n name: null,\n }, this.organizationId);\n }\n}\n","import { View } from './view';\n\nimport { Collection } from '../domain/collection';\nimport { ITreeNodeObject } from '../domain/treeNode';\n\nimport { CollectionGroupDetailsResponse } from '../response/collectionResponse';\n\nexport class CollectionView implements View, ITreeNodeObject {\n id: string = null;\n organizationId: string = null;\n name: string = null;\n externalId: string = null;\n readOnly: boolean = null;\n hidePasswords: boolean = null;\n\n constructor(c?: Collection | CollectionGroupDetailsResponse) {\n if (!c) {\n return;\n }\n\n this.id = c.id;\n this.organizationId = c.organizationId;\n this.externalId = c.externalId;\n if (c instanceof Collection) {\n this.readOnly = c.readOnly;\n this.hidePasswords = c.hidePasswords;\n }\n }\n}\n","import {\n Pipe,\n PipeTransform,\n} from '@angular/core';\n\n@Pipe({\n name: 'search',\n})\nexport class SearchPipe implements PipeTransform {\n transform(items: any[], searchText: string, prop1?: string, prop2?: string, prop3?: string): any[] {\n if (items == null || items.length === 0) {\n return [];\n }\n\n if (searchText == null || searchText.length < 2) {\n return items;\n }\n\n searchText = searchText.trim().toLowerCase();\n return items.filter(i => {\n if (prop1 != null && i[prop1] != null && i[prop1].toString().toLowerCase().indexOf(searchText) > -1) {\n return true;\n }\n if (prop2 != null && i[prop2] != null && i[prop2].toString().toLowerCase().indexOf(searchText) > -1) {\n return true;\n }\n if (prop3 != null && i[prop3] != null && i[prop3].toString().toLowerCase().indexOf(searchText) > -1) {\n return true;\n }\n return false;\n });\n }\n}\n","import { CipherRepromptType } from '../../enums/cipherRepromptType';\nimport { CipherType } from '../../enums/cipherType';\n\nimport { AttachmentData } from './attachmentData';\nimport { CardData } from './cardData';\nimport { FieldData } from './fieldData';\nimport { IdentityData } from './identityData';\nimport { LoginData } from './loginData';\nimport { PasswordHistoryData } from './passwordHistoryData';\nimport { SecureNoteData } from './secureNoteData';\n\nimport { CipherResponse } from '../response/cipherResponse';\n\nexport class CipherData {\n id: string;\n organizationId: string;\n folderId: string;\n userId: string;\n edit: boolean;\n viewPassword: boolean;\n organizationUseTotp: boolean;\n favorite: boolean;\n revisionDate: string;\n type: CipherType;\n sizeName: string;\n name: string;\n notes: string;\n login?: LoginData;\n secureNote?: SecureNoteData;\n card?: CardData;\n identity?: IdentityData;\n fields?: FieldData[];\n attachments?: AttachmentData[];\n passwordHistory?: PasswordHistoryData[];\n collectionIds?: string[];\n deletedDate: string;\n reprompt: CipherRepromptType;\n\n constructor(response?: CipherResponse, userId?: string, collectionIds?: string[]) {\n if (response == null) {\n return;\n }\n\n this.id = response.id;\n this.organizationId = response.organizationId;\n this.folderId = response.folderId;\n this.userId = userId;\n this.edit = response.edit;\n this.viewPassword = response.viewPassword;\n this.organizationUseTotp = response.organizationUseTotp;\n this.favorite = response.favorite;\n this.revisionDate = response.revisionDate;\n this.type = response.type;\n this.name = response.name;\n this.notes = response.notes;\n this.collectionIds = collectionIds != null ? collectionIds : response.collectionIds;\n this.deletedDate = response.deletedDate;\n this.reprompt = response.reprompt;\n\n switch (this.type) {\n case CipherType.Login:\n this.login = new LoginData(response.login);\n break;\n case CipherType.SecureNote:\n this.secureNote = new SecureNoteData(response.secureNote);\n break;\n case CipherType.Card:\n this.card = new CardData(response.card);\n break;\n case CipherType.Identity:\n this.identity = new IdentityData(response.identity);\n break;\n default:\n break;\n }\n\n if (response.fields != null) {\n this.fields = response.fields.map(f => new FieldData(f));\n }\n if (response.attachments != null) {\n this.attachments = response.attachments.map(a => new AttachmentData(a));\n }\n if (response.passwordHistory != null) {\n this.passwordHistory = response.passwordHistory.map(ph => new PasswordHistoryData(ph));\n }\n }\n}\n","export enum CipherRepromptType {\n None = 0,\n Password = 1,\n}\n","export enum SendType {\n Text = 0,\n File = 1,\n}\n","import { Utils } from '../../misc/utils';\n\nimport { BaseResponse } from './baseResponse';\n\nexport class ErrorResponse extends BaseResponse {\n message: string;\n validationErrors: { [key: string]: string[]; };\n statusCode: number;\n captchaRequired: boolean;\n captchaSiteKey: string;\n\n constructor(response: any, status: number, identityResponse?: boolean) {\n super(response);\n let errorModel = null;\n if (response != null) {\n const responseErrorModel = this.getResponseProperty('ErrorModel');\n if (responseErrorModel && identityResponse) {\n errorModel = responseErrorModel;\n } else {\n errorModel = response;\n }\n }\n\n if (errorModel) {\n this.message = this.getResponseProperty('Message', errorModel);\n this.validationErrors = this.getResponseProperty('ValidationErrors', errorModel);\n this.captchaSiteKey = this.validationErrors?.HCaptcha_SiteKey?.[0];\n this.captchaRequired = !Utils.isNullOrWhitespace(this.captchaSiteKey);\n } else {\n if (status === 429) {\n this.message = 'Rate limit exceeded. Try again later.';\n }\n }\n this.statusCode = status;\n }\n\n getSingleMessage(): string {\n if (this.validationErrors == null) {\n return this.message;\n }\n for (const key in this.validationErrors) {\n if (!this.validationErrors.hasOwnProperty(key)) {\n continue;\n }\n if (this.validationErrors[key].length) {\n return this.validationErrors[key][0];\n }\n }\n return this.message;\n }\n\n getAllMessages(): string[] {\n const messages: string[] = [];\n if (this.validationErrors == null) {\n return messages;\n }\n for (const key in this.validationErrors) {\n if (!this.validationErrors.hasOwnProperty(key)) {\n continue;\n }\n this.validationErrors[key].forEach((item: string) => {\n let prefix = '';\n if (key.indexOf('[') > -1 && key.indexOf(']') > -1) {\n const lastSep = key.lastIndexOf('.');\n prefix = key.substr(0, lastSep > -1 ? lastSep : key.length) + ': ';\n }\n messages.push(prefix + item);\n });\n }\n return messages;\n }\n}\n","import {\n Component,\n Input,\n OnChanges,\n} from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\n@Component({\n selector: 'app-password-strength',\n templateUrl: 'password-strength.component.html',\n})\nexport class PasswordStrengthComponent implements OnChanges {\n @Input() score?: number;\n @Input() showText = false;\n\n scoreWidth = 0;\n color = 'bg-danger';\n text: string;\n\n constructor(private i18nService: I18nService) { }\n\n ngOnChanges(): void {\n this.scoreWidth = this.score == null ? 0 : (this.score + 1) * 20;\n switch (this.score) {\n case 4:\n this.color = 'bg-success';\n this.text = this.i18nService.t('strong');\n break;\n case 3:\n this.color = 'bg-primary';\n this.text = this.i18nService.t('good');\n break;\n case 2:\n this.color = 'bg-warning';\n this.text = this.i18nService.t('weak');\n break;\n default:\n this.color = 'bg-danger';\n this.text = this.score != null ? this.i18nService.t('weak') : null;\n break;\n }\n }\n}\n","
{{text}}
","import { CollectionDetailsResponse } from '../response/collectionResponse';\n\nexport class CollectionData {\n id: string;\n organizationId: string;\n name: string;\n externalId: string;\n readOnly: boolean;\n\n constructor(response: CollectionDetailsResponse) {\n this.id = response.id;\n this.organizationId = response.organizationId;\n this.name = response.name;\n this.externalId = response.externalId;\n this.readOnly = response.readOnly;\n }\n}\n","export enum OrganizationUserStatusType {\n Invited = 0,\n Accepted = 1,\n Confirmed = 2,\n}\n","import { Injectable } from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\n\nimport { DeviceType } from 'jslib-common/enums/deviceType';\nimport { EventType } from 'jslib-common/enums/eventType';\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { EventResponse } from 'jslib-common/models/response/eventResponse';\n\n\n@Injectable()\nexport class EventService {\n constructor(private i18nService: I18nService, private policyService: PolicyService) { }\n\n getDefaultDateFilters() {\n const d = new Date();\n const end = new Date(d.getFullYear(), d.getMonth(), d.getDate(), 23, 59);\n d.setDate(d.getDate() - 30);\n const start = new Date(d.getFullYear(), d.getMonth(), d.getDate(), 0, 0);\n return [this.toDateTimeLocalString(start), this.toDateTimeLocalString(end)];\n }\n\n formatDateFilters(filterStart: string, filterEnd: string) {\n const start: Date = new Date(filterStart);\n const end: Date = new Date(filterEnd + ':59.999');\n if (isNaN(start.getTime()) || isNaN(end.getTime()) || end < start) {\n throw new Error('Invalid date range.');\n }\n return [start.toISOString(), end.toISOString()];\n }\n\n async getEventInfo(ev: EventResponse, options = new EventOptions()): Promise {\n const appInfo = this.getAppInfo(ev.deviceType);\n const { message, humanReadableMessage } = await this.getEventMessage(ev, options);\n return {\n message: message,\n humanReadableMessage: humanReadableMessage,\n appIcon: appInfo[0],\n appName: appInfo[1],\n };\n }\n\n private async getEventMessage(ev: EventResponse, options: EventOptions) {\n let msg = '';\n let humanReadableMsg = '';\n switch (ev.type) {\n // User\n case EventType.User_LoggedIn:\n msg = humanReadableMsg = this.i18nService.t('loggedIn');\n break;\n case EventType.User_ChangedPassword:\n msg = humanReadableMsg = this.i18nService.t('changedPassword');\n break;\n case EventType.User_Updated2fa:\n msg = humanReadableMsg = this.i18nService.t('enabledUpdated2fa');\n break;\n case EventType.User_Disabled2fa:\n msg = humanReadableMsg = this.i18nService.t('disabled2fa');\n break;\n case EventType.User_Recovered2fa:\n msg = humanReadableMsg = this.i18nService.t('recovered2fa');\n break;\n case EventType.User_FailedLogIn:\n msg = humanReadableMsg = this.i18nService.t('failedLogin');\n break;\n case EventType.User_FailedLogIn2fa:\n msg = humanReadableMsg = this.i18nService.t('failedLogin2fa');\n break;\n case EventType.User_ClientExportedVault:\n msg = humanReadableMsg = this.i18nService.t('exportedVault');\n break;\n case EventType.User_UpdatedTempPassword:\n msg = humanReadableMsg = this.i18nService.t('updatedMasterPassword');\n break;\n case EventType.User_MigratedKeyToKeyConnector:\n msg = humanReadableMsg = this.i18nService.t('migratedKeyConnector');\n break;\n // Cipher\n case EventType.Cipher_Created:\n msg = this.i18nService.t('createdItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('createdItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_Updated:\n msg = this.i18nService.t('editedItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('editedItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_Deleted:\n msg = this.i18nService.t('permanentlyDeletedItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('permanentlyDeletedItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_SoftDeleted:\n msg = this.i18nService.t('deletedItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('deletedItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_Restored:\n msg = this.i18nService.t('restoredItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('restoredItemId', this.formatCipherId(ev, options));\n break;\n case EventType.Cipher_AttachmentCreated:\n msg = this.i18nService.t('createdAttachmentForItem', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('createdAttachmentForItem', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_AttachmentDeleted:\n msg = this.i18nService.t('deletedAttachmentForItem', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('deletedAttachmentForItem', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_Shared:\n msg = this.i18nService.t('movedItemIdToOrg', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('movedItemIdToOrg', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientViewed:\n msg = this.i18nService.t('viewedItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('viewedItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientToggledPasswordVisible:\n msg = this.i18nService.t('viewedPasswordItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('viewedPasswordItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientToggledHiddenFieldVisible:\n msg = this.i18nService.t('viewedHiddenFieldItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('viewedHiddenFieldItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientToggledCardCodeVisible:\n msg = this.i18nService.t('viewedSecurityCodeItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('viewedSecurityCodeItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientCopiedHiddenField:\n msg = this.i18nService.t('copiedHiddenFieldItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('copiedHiddenFieldItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientCopiedPassword:\n msg = this.i18nService.t('copiedPasswordItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('copiedPasswordItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientCopiedCardCode:\n msg = this.i18nService.t('copiedSecurityCodeItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('copiedSecurityCodeItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_ClientAutofilled:\n msg = this.i18nService.t('autofilledItemId', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('autofilledItemId', this.getShortId(ev.cipherId));\n break;\n case EventType.Cipher_UpdatedCollections:\n msg = this.i18nService.t('editedCollectionsForItem', this.formatCipherId(ev, options));\n humanReadableMsg = this.i18nService.t('editedCollectionsForItem', this.getShortId(ev.cipherId));\n break;\n // Collection\n case EventType.Collection_Created:\n msg = this.i18nService.t('createdCollectionId', this.formatCollectionId(ev));\n humanReadableMsg = this.i18nService.t('createdCollectionId', this.getShortId(ev.collectionId));\n break;\n case EventType.Collection_Updated:\n msg = this.i18nService.t('editedCollectionId', this.formatCollectionId(ev));\n humanReadableMsg = this.i18nService.t('editedCollectionId', this.getShortId(ev.collectionId));\n break;\n case EventType.Collection_Deleted:\n msg = this.i18nService.t('deletedCollectionId', this.formatCollectionId(ev));\n humanReadableMsg = this.i18nService.t('deletedCollectionId', this.getShortId(ev.collectionId));\n break;\n // Group\n case EventType.Group_Created:\n msg = this.i18nService.t('createdGroupId', this.formatGroupId(ev));\n humanReadableMsg = this.i18nService.t('createdGroupId', this.getShortId(ev.groupId));\n break;\n case EventType.Group_Updated:\n msg = this.i18nService.t('editedGroupId', this.formatGroupId(ev));\n humanReadableMsg = this.i18nService.t('editedGroupId', this.getShortId(ev.groupId));\n break;\n case EventType.Group_Deleted:\n msg = this.i18nService.t('deletedGroupId', this.formatGroupId(ev));\n humanReadableMsg = this.i18nService.t('deletedGroupId', this.getShortId(ev.groupId));\n break;\n // Org user\n case EventType.OrganizationUser_Invited:\n msg = this.i18nService.t('invitedUserId', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('invitedUserId', this.getShortId(ev.organizationUserId));\n break;\n case EventType.OrganizationUser_Confirmed:\n msg = this.i18nService.t('confirmedUserId', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('confirmedUserId', this.getShortId(ev.organizationUserId));\n break;\n case EventType.OrganizationUser_Updated:\n msg = this.i18nService.t('editedUserId', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('editedUserId', this.getShortId(ev.organizationUserId));\n break;\n case EventType.OrganizationUser_Removed:\n msg = this.i18nService.t('removedUserId', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('removedUserId', this.getShortId(ev.organizationUserId));\n break;\n case EventType.OrganizationUser_UpdatedGroups:\n msg = this.i18nService.t('editedGroupsForUser', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('editedGroupsForUser', this.getShortId(ev.organizationUserId));\n break;\n case EventType.OrganizationUser_UnlinkedSso:\n msg = this.i18nService.t('unlinkedSsoUser', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('unlinkedSsoUser', this.getShortId(ev.organizationUserId));\n break;\n case EventType.OrganizationUser_ResetPassword_Enroll:\n msg = this.i18nService.t('eventEnrollPasswordReset', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('eventEnrollPasswordReset', this.getShortId(ev.organizationUserId));\n break;\n case EventType.OrganizationUser_ResetPassword_Withdraw:\n msg = this.i18nService.t('eventWithdrawPasswordReset', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('eventWithdrawPasswordReset', this.getShortId(ev.organizationUserId));\n break;\n case EventType.OrganizationUser_AdminResetPassword:\n msg = this.i18nService.t('eventAdminPasswordReset', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('eventAdminPasswordReset', this.getShortId(ev.organizationUserId));\n break;\n case EventType.OrganizationUser_ResetSsoLink:\n msg = this.i18nService.t('eventResetSsoLink', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('eventResetSsoLink', this.getShortId(ev.organizationUserId));\n break;\n case EventType.OrganizationUser_FirstSsoLogin:\n msg = this.i18nService.t('firstSsoLogin', this.formatOrgUserId(ev));\n humanReadableMsg = this.i18nService.t('firstSsoLogin', this.getShortId(ev.organizationUserId));\n break;\n // Org\n case EventType.Organization_Updated:\n msg = humanReadableMsg = this.i18nService.t('editedOrgSettings');\n break;\n case EventType.Organization_PurgedVault:\n msg = humanReadableMsg = this.i18nService.t('purgedOrganizationVault');\n break;\n /*\n case EventType.Organization_ClientExportedVault:\n msg = this.i18nService.t('exportedOrganizationVault');\n break;\n */\n case EventType.Organization_VaultAccessed:\n msg = humanReadableMsg = this.i18nService.t('vaultAccessedByProvider');\n break;\n case EventType.Organization_EnabledSso:\n msg = humanReadableMsg = this.i18nService.t('enabledSso');\n break;\n case EventType.Organization_DisabledSso:\n msg = humanReadableMsg = this.i18nService.t('disabledSso');\n break;\n case EventType.Organization_EnabledKeyConnector:\n msg = humanReadableMsg = this.i18nService.t('enabledKeyConnector');\n break;\n case EventType.Organization_DisabledKeyConnector:\n msg = humanReadableMsg = this.i18nService.t('disabledKeyConnector');\n break;\n // Policies\n case EventType.Policy_Updated:\n msg = this.i18nService.t('modifiedPolicyId', this.formatPolicyId(ev));\n\n const policies = await this.policyService.getAll();\n const policy = policies.filter(p => p.id === ev.policyId)[0];\n let p1 = this.getShortId(ev.policyId);\n if (policy != null) {\n p1 = PolicyType[policy.type];\n }\n\n humanReadableMsg = this.i18nService.t('modifiedPolicyId', p1);\n break;\n // Provider users:\n case EventType.ProviderUser_Invited:\n msg = this.i18nService.t('invitedUserId', this.formatProviderUserId(ev));\n humanReadableMsg = this.i18nService.t('invitedUserId', this.getShortId(ev.providerUserId));\n break;\n case EventType.ProviderUser_Confirmed:\n msg = this.i18nService.t('confirmedUserId', this.formatProviderUserId(ev));\n humanReadableMsg = this.i18nService.t('confirmedUserId', this.getShortId(ev.providerUserId));\n break;\n case EventType.ProviderUser_Updated:\n msg = this.i18nService.t('editedUserId', this.formatProviderUserId(ev));\n humanReadableMsg = this.i18nService.t('editedUserId', this.getShortId(ev.providerUserId));\n break;\n case EventType.ProviderUser_Removed:\n msg = this.i18nService.t('removedUserId', this.formatProviderUserId(ev));\n humanReadableMsg = this.i18nService.t('removedUserId', this.getShortId(ev.providerUserId));\n break;\n case EventType.ProviderOrganization_Created:\n msg = this.i18nService.t('createdOrganizationId', this.formatProviderOrganizationId(ev));\n humanReadableMsg = this.i18nService.t('createdOrganizationId', this.getShortId(ev.providerOrganizationId));\n break;\n case EventType.ProviderOrganization_Added:\n msg = this.i18nService.t('addedOrganizationId', this.formatProviderOrganizationId(ev));\n humanReadableMsg = this.i18nService.t('addedOrganizationId', this.getShortId(ev.providerOrganizationId));\n break;\n case EventType.ProviderOrganization_Removed:\n msg = this.i18nService.t('removedOrganizationId', this.formatProviderOrganizationId(ev));\n humanReadableMsg = this.i18nService.t('removedOrganizationId', this.getShortId(ev.providerOrganizationId));\n break;\n case EventType.ProviderOrganization_VaultAccessed:\n msg = this.i18nService.t('accessedClientVault', this.formatProviderOrganizationId(ev));\n humanReadableMsg = this.i18nService.t('accessedClientVault', this.getShortId(ev.providerOrganizationId));\n break;\n default:\n break;\n }\n return {\n message: msg === '' ? null : msg,\n humanReadableMessage: humanReadableMsg === '' ? null : humanReadableMsg,\n };\n }\n\n private getAppInfo(deviceType: DeviceType): [string, string] {\n switch (deviceType) {\n case DeviceType.Android:\n return ['fa-android', this.i18nService.t('mobile') + ' - Android'];\n case DeviceType.iOS:\n return ['fa-apple', this.i18nService.t('mobile') + ' - iOS'];\n case DeviceType.UWP:\n return ['fa-windows', this.i18nService.t('mobile') + ' - Windows'];\n case DeviceType.ChromeExtension:\n return ['fa-chrome', this.i18nService.t('extension') + ' - Chrome'];\n case DeviceType.FirefoxExtension:\n return ['fa-firefox', this.i18nService.t('extension') + ' - Firefox'];\n case DeviceType.OperaExtension:\n return ['fa-opera', this.i18nService.t('extension') + ' - Opera'];\n case DeviceType.EdgeExtension:\n return ['fa-edge', this.i18nService.t('extension') + ' - Edge'];\n case DeviceType.VivaldiExtension:\n return ['fa-puzzle-piece', this.i18nService.t('extension') + ' - Vivaldi'];\n case DeviceType.SafariExtension:\n return ['fa-safari', this.i18nService.t('extension') + ' - Safari'];\n case DeviceType.WindowsDesktop:\n return ['fa-windows', this.i18nService.t('desktop') + ' - Windows'];\n case DeviceType.MacOsDesktop:\n return ['fa-apple', this.i18nService.t('desktop') + ' - macOS'];\n case DeviceType.LinuxDesktop:\n return ['fa-linux', this.i18nService.t('desktop') + ' - Linux'];\n case DeviceType.ChromeBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Chrome'];\n case DeviceType.FirefoxBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Firefox'];\n case DeviceType.OperaBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Opera'];\n case DeviceType.SafariBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Safari'];\n case DeviceType.VivaldiBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Vivaldi'];\n case DeviceType.EdgeBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - Edge'];\n case DeviceType.IEBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - IE'];\n case DeviceType.UnknownBrowser:\n return ['fa-globe', this.i18nService.t('webVault') + ' - ' + this.i18nService.t('unknown')];\n default:\n return ['fa-globe', this.i18nService.t('unknown')];\n }\n }\n\n private formatCipherId(ev: EventResponse, options: EventOptions) {\n const shortId = this.getShortId(ev.cipherId);\n if (ev.organizationId == null || !options.cipherInfo) {\n return '' + shortId + '';\n }\n const a = this.makeAnchor(shortId);\n a.setAttribute('href', '#/organizations/' + ev.organizationId + '/vault?search=' + shortId +\n '&viewEvents=' + ev.cipherId);\n return a.outerHTML;\n }\n\n private formatGroupId(ev: EventResponse) {\n const shortId = this.getShortId(ev.groupId);\n const a = this.makeAnchor(shortId);\n a.setAttribute('href', '#/organizations/' + ev.organizationId + '/manage/groups?search=' + shortId);\n return a.outerHTML;\n }\n\n private formatCollectionId(ev: EventResponse) {\n const shortId = this.getShortId(ev.collectionId);\n const a = this.makeAnchor(shortId);\n a.setAttribute('href', '#/organizations/' + ev.organizationId + '/manage/collections?search=' + shortId);\n return a.outerHTML;\n }\n\n private formatOrgUserId(ev: EventResponse) {\n const shortId = this.getShortId(ev.organizationUserId);\n const a = this.makeAnchor(shortId);\n a.setAttribute('href', '#/organizations/' + ev.organizationId + '/manage/people?search=' + shortId +\n '&viewEvents=' + ev.organizationUserId);\n return a.outerHTML;\n }\n\n private formatProviderUserId(ev: EventResponse) {\n const shortId = this.getShortId(ev.providerUserId);\n const a = this.makeAnchor(shortId);\n a.setAttribute('href', '#/providers/' + ev.providerId + '/manage/people?search=' + shortId +\n '&viewEvents=' + ev.providerUserId);\n return a.outerHTML;\n }\n\n private formatProviderOrganizationId(ev: EventResponse) {\n const shortId = this.getShortId(ev.providerOrganizationId);\n const a = this.makeAnchor(shortId);\n a.setAttribute('href', '#/providers/' + ev.providerId + '/clients?search=' + shortId);\n return a.outerHTML;\n }\n\n private formatPolicyId(ev: EventResponse) {\n const shortId = this.getShortId(ev.policyId);\n const a = this.makeAnchor(shortId);\n a.setAttribute('href', '#/organizations/' + ev.organizationId + '/manage/policies?policyId=' + ev.policyId);\n return a.outerHTML;\n }\n\n private makeAnchor(shortId: string) {\n const a = document.createElement('a');\n a.title = this.i18nService.t('view');\n a.innerHTML = '' + shortId + '';\n return a;\n }\n\n private getShortId(id: string) {\n return id?.substring(0, 8);\n }\n\n private toDateTimeLocalString(date: Date) {\n return date.getFullYear() +\n '-' + this.pad(date.getMonth() + 1) +\n '-' + this.pad(date.getDate()) +\n 'T' + this.pad(date.getHours()) +\n ':' + this.pad(date.getMinutes());\n }\n\n private pad(num: number) {\n const norm = Math.floor(Math.abs(num));\n return (norm < 10 ? '0' : '') + norm;\n }\n}\n\nexport class EventInfo {\n message: string;\n humanReadableMessage: string;\n appIcon: string;\n appName: string;\n}\n\nexport class EventOptions {\n cipherInfo = true;\n}\n","export enum EventType {\n User_LoggedIn = 1000,\n User_ChangedPassword = 1001,\n User_Updated2fa = 1002,\n User_Disabled2fa = 1003,\n User_Recovered2fa = 1004,\n User_FailedLogIn = 1005,\n User_FailedLogIn2fa = 1006,\n User_ClientExportedVault = 1007,\n User_UpdatedTempPassword = 1008,\n User_MigratedKeyToKeyConnector = 1009,\n\n Cipher_Created = 1100,\n Cipher_Updated = 1101,\n Cipher_Deleted = 1102,\n Cipher_AttachmentCreated = 1103,\n Cipher_AttachmentDeleted = 1104,\n Cipher_Shared = 1105,\n Cipher_UpdatedCollections = 1106,\n Cipher_ClientViewed = 1107,\n Cipher_ClientToggledPasswordVisible = 1108,\n Cipher_ClientToggledHiddenFieldVisible = 1109,\n Cipher_ClientToggledCardCodeVisible = 1110,\n Cipher_ClientCopiedPassword = 1111,\n Cipher_ClientCopiedHiddenField = 1112,\n Cipher_ClientCopiedCardCode = 1113,\n Cipher_ClientAutofilled = 1114,\n Cipher_SoftDeleted = 1115,\n Cipher_Restored = 1116,\n Cipher_ClientToggledCardNumberVisible = 1117,\n\n Collection_Created = 1300,\n Collection_Updated = 1301,\n Collection_Deleted = 1302,\n\n Group_Created = 1400,\n Group_Updated = 1401,\n Group_Deleted = 1402,\n\n OrganizationUser_Invited = 1500,\n OrganizationUser_Confirmed = 1501,\n OrganizationUser_Updated = 1502,\n OrganizationUser_Removed = 1503,\n OrganizationUser_UpdatedGroups = 1504,\n OrganizationUser_UnlinkedSso = 1505,\n OrganizationUser_ResetPassword_Enroll = 1506,\n OrganizationUser_ResetPassword_Withdraw = 1507,\n OrganizationUser_AdminResetPassword = 1508,\n OrganizationUser_ResetSsoLink = 1509,\n OrganizationUser_FirstSsoLogin = 1510,\n\n Organization_Updated = 1600,\n Organization_PurgedVault = 1601,\n // Organization_ClientExportedVault = 1602,\n Organization_VaultAccessed = 1603,\n Organization_EnabledSso = 1604,\n Organization_DisabledSso = 1605,\n Organization_EnabledKeyConnector = 1606,\n Organization_DisabledKeyConnector = 1607,\n\n Policy_Updated = 1700,\n\n ProviderUser_Invited = 1800,\n ProviderUser_Confirmed = 1801,\n ProviderUser_Updated = 1802,\n ProviderUser_Removed = 1803,\n\n ProviderOrganization_Created = 1900,\n ProviderOrganization_Added = 1901,\n ProviderOrganization_Removed = 1902,\n ProviderOrganization_VaultAccessed = 1903,\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\nimport { VerificationType } from 'jslib-common/enums/verificationType';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { UserVerificationService } from 'jslib-common/abstractions/userVerification.service';\n\nimport { Verification } from 'jslib-common/types/verification';\n\nimport { TwoFactorAuthenticatorResponse } from 'jslib-common/models/response/twoFactorAuthenticatorResponse';\nimport { TwoFactorDuoResponse } from 'jslib-common/models/response/twoFactorDuoResponse';\nimport { TwoFactorEmailResponse } from 'jslib-common/models/response/twoFactorEmailResponse';\nimport { TwoFactorRecoverResponse } from 'jslib-common/models/response/twoFactorRescoverResponse';\nimport { TwoFactorWebAuthnResponse } from 'jslib-common/models/response/twoFactorWebAuthnResponse';\nimport { TwoFactorYubiKeyResponse } from 'jslib-common/models/response/twoFactorYubiKeyResponse';\n\nimport { SecretVerificationRequest } from 'jslib-common/models/request/secretVerificationRequest';\n\ntype TwoFactorResponse = TwoFactorRecoverResponse | TwoFactorDuoResponse | TwoFactorEmailResponse |\n TwoFactorWebAuthnResponse | TwoFactorAuthenticatorResponse | TwoFactorYubiKeyResponse;\n\n@Component({\n selector: 'app-two-factor-verify',\n templateUrl: 'two-factor-verify.component.html',\n})\nexport class TwoFactorVerifyComponent {\n @Input() type: TwoFactorProviderType;\n @Input() organizationId: string;\n @Output() onAuthed = new EventEmitter();\n\n secret: Verification;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private logService: LogService,\n private userVerificationService: UserVerificationService) { }\n\n async submit() {\n let hashedSecret: string;\n\n try {\n this.formPromise = this.userVerificationService.buildRequest(this.secret)\n .then(request => {\n hashedSecret = this.secret.type === VerificationType.MasterPassword\n ? request.masterPasswordHash\n : request.otp;\n return this.apiCall(request);\n });\n\n const response = await this.formPromise;\n this.onAuthed.emit({\n response: response,\n secret: hashedSecret,\n verificationType: this.secret.type,\n });\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n private apiCall(request: SecretVerificationRequest): Promise {\n switch (this.type) {\n case -1:\n return this.apiService.getTwoFactorRecover(request);\n case TwoFactorProviderType.Duo:\n case TwoFactorProviderType.OrganizationDuo:\n if (this.organizationId != null) {\n return this.apiService.getTwoFactorOrganizationDuo(this.organizationId, request);\n } else {\n return this.apiService.getTwoFactorDuo(request);\n }\n case TwoFactorProviderType.Email:\n return this.apiService.getTwoFactorEmail(request);\n case TwoFactorProviderType.WebAuthn:\n return this.apiService.getTwoFactorWebAuthn(request);\n case TwoFactorProviderType.Authenticator:\n return this.apiService.getTwoFactorAuthenticator(request);\n case TwoFactorProviderType.Yubikey:\n return this.apiService.getTwoFactorYubiKey(request);\n }\n }\n}\n","

{{'twoStepLoginAuthDesc' | i18n}}

","import { CipherRepromptType } from '../../enums/cipherRepromptType';\nimport { CipherType } from '../../enums/cipherType';\n\nimport { CipherData } from '../data/cipherData';\n\nimport { CipherView } from '../view/cipherView';\n\nimport { Attachment } from './attachment';\nimport { Card } from './card';\nimport Domain from './domainBase';\nimport { EncString } from './encString';\nimport { Field } from './field';\nimport { Identity } from './identity';\nimport { Login } from './login';\nimport { Password } from './password';\nimport { SecureNote } from './secureNote';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class Cipher extends Domain {\n id: string;\n organizationId: string;\n folderId: string;\n name: EncString;\n notes: EncString;\n type: CipherType;\n favorite: boolean;\n organizationUseTotp: boolean;\n edit: boolean;\n viewPassword: boolean;\n revisionDate: Date;\n localData: any;\n login: Login;\n identity: Identity;\n card: Card;\n secureNote: SecureNote;\n attachments: Attachment[];\n fields: Field[];\n passwordHistory: Password[];\n collectionIds: string[];\n deletedDate: Date;\n reprompt: CipherRepromptType;\n\n constructor(obj?: CipherData, alreadyEncrypted: boolean = false, localData: any = null) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n id: null,\n userId: null,\n organizationId: null,\n folderId: null,\n name: null,\n notes: null,\n }, alreadyEncrypted, ['id', 'userId', 'organizationId', 'folderId']);\n\n this.type = obj.type;\n this.favorite = obj.favorite;\n this.organizationUseTotp = obj.organizationUseTotp;\n this.edit = obj.edit;\n if (obj.viewPassword != null) {\n this.viewPassword = obj.viewPassword;\n } else {\n this.viewPassword = true; // Default for already synced Ciphers without viewPassword\n }\n this.revisionDate = obj.revisionDate != null ? new Date(obj.revisionDate) : null;\n this.collectionIds = obj.collectionIds;\n this.localData = localData;\n this.deletedDate = obj.deletedDate != null ? new Date(obj.deletedDate) : null;\n this.reprompt = obj.reprompt;\n\n switch (this.type) {\n case CipherType.Login:\n this.login = new Login(obj.login, alreadyEncrypted);\n break;\n case CipherType.SecureNote:\n this.secureNote = new SecureNote(obj.secureNote, alreadyEncrypted);\n break;\n case CipherType.Card:\n this.card = new Card(obj.card, alreadyEncrypted);\n break;\n case CipherType.Identity:\n this.identity = new Identity(obj.identity, alreadyEncrypted);\n break;\n default:\n break;\n }\n\n if (obj.attachments != null) {\n this.attachments = obj.attachments.map(a => new Attachment(a, alreadyEncrypted));\n } else {\n this.attachments = null;\n }\n\n if (obj.fields != null) {\n this.fields = obj.fields.map(f => new Field(f, alreadyEncrypted));\n } else {\n this.fields = null;\n }\n\n if (obj.passwordHistory != null) {\n this.passwordHistory = obj.passwordHistory.map(ph => new Password(ph, alreadyEncrypted));\n } else {\n this.passwordHistory = null;\n }\n }\n\n async decrypt(encKey?: SymmetricCryptoKey): Promise {\n const model = new CipherView(this);\n\n await this.decryptObj(model, {\n name: null,\n notes: null,\n }, this.organizationId, encKey);\n\n switch (this.type) {\n case CipherType.Login:\n model.login = await this.login.decrypt(this.organizationId, encKey);\n break;\n case CipherType.SecureNote:\n model.secureNote = await this.secureNote.decrypt(this.organizationId, encKey);\n break;\n case CipherType.Card:\n model.card = await this.card.decrypt(this.organizationId, encKey);\n break;\n case CipherType.Identity:\n model.identity = await this.identity.decrypt(this.organizationId, encKey);\n break;\n default:\n break;\n }\n\n const orgId = this.organizationId;\n\n if (this.attachments != null && this.attachments.length > 0) {\n const attachments: any[] = [];\n await this.attachments.reduce((promise, attachment) => {\n return promise.then(() => {\n return attachment.decrypt(orgId, encKey);\n }).then(decAttachment => {\n attachments.push(decAttachment);\n });\n }, Promise.resolve());\n model.attachments = attachments;\n }\n\n if (this.fields != null && this.fields.length > 0) {\n const fields: any[] = [];\n await this.fields.reduce((promise, field) => {\n return promise.then(() => {\n return field.decrypt(orgId, encKey);\n }).then(decField => {\n fields.push(decField);\n });\n }, Promise.resolve());\n model.fields = fields;\n }\n\n if (this.passwordHistory != null && this.passwordHistory.length > 0) {\n const passwordHistory: any[] = [];\n await this.passwordHistory.reduce((promise, ph) => {\n return promise.then(() => {\n return ph.decrypt(orgId, encKey);\n }).then(decPh => {\n passwordHistory.push(decPh);\n });\n }, Promise.resolve());\n model.passwordHistory = passwordHistory;\n }\n\n return model;\n }\n\n toCipherData(userId: string): CipherData {\n const c = new CipherData();\n c.id = this.id;\n c.organizationId = this.organizationId;\n c.folderId = this.folderId;\n c.userId = this.organizationId != null ? userId : null;\n c.edit = this.edit;\n c.viewPassword = this.viewPassword;\n c.organizationUseTotp = this.organizationUseTotp;\n c.favorite = this.favorite;\n c.revisionDate = this.revisionDate != null ? this.revisionDate.toISOString() : null;\n c.type = this.type;\n c.collectionIds = this.collectionIds;\n c.deletedDate = this.deletedDate != null ? this.deletedDate.toISOString() : null;\n c.reprompt = this.reprompt;\n\n this.buildDataModel(this, c, {\n name: null,\n notes: null,\n });\n\n switch (c.type) {\n case CipherType.Login:\n c.login = this.login.toLoginData();\n break;\n case CipherType.SecureNote:\n c.secureNote = this.secureNote.toSecureNoteData();\n break;\n case CipherType.Card:\n c.card = this.card.toCardData();\n break;\n case CipherType.Identity:\n c.identity = this.identity.toIdentityData();\n break;\n default:\n break;\n }\n\n if (this.fields != null) {\n c.fields = this.fields.map(f => f.toFieldData());\n }\n if (this.attachments != null) {\n c.attachments = this.attachments.map(a => a.toAttachmentData());\n }\n if (this.passwordHistory != null) {\n c.passwordHistory = this.passwordHistory.map(ph => ph.toPasswordHistoryData());\n }\n return c;\n }\n}\n","export enum OrganizationUserType {\n Owner = 0,\n Admin = 1,\n User = 2,\n Manager = 3,\n Custom = 4,\n}\n","import { EncryptionType } from '../../enums/encryptionType';\n\nimport { Utils } from '../../misc/utils';\n\nexport class SymmetricCryptoKey {\n key: ArrayBuffer;\n encKey?: ArrayBuffer;\n macKey?: ArrayBuffer;\n encType: EncryptionType;\n\n keyB64: string;\n encKeyB64: string;\n macKeyB64: string;\n\n meta: any;\n\n constructor(key: ArrayBuffer, encType?: EncryptionType) {\n if (key == null) {\n throw new Error('Must provide key');\n }\n\n if (encType == null) {\n if (key.byteLength === 32) {\n encType = EncryptionType.AesCbc256_B64;\n } else if (key.byteLength === 64) {\n encType = EncryptionType.AesCbc256_HmacSha256_B64;\n } else {\n throw new Error('Unable to determine encType.');\n }\n }\n\n this.key = key;\n this.encType = encType;\n\n if (encType === EncryptionType.AesCbc256_B64 && key.byteLength === 32) {\n this.encKey = key;\n this.macKey = null;\n } else if (encType === EncryptionType.AesCbc128_HmacSha256_B64 && key.byteLength === 32) {\n this.encKey = key.slice(0, 16);\n this.macKey = key.slice(16, 32);\n } else if (encType === EncryptionType.AesCbc256_HmacSha256_B64 && key.byteLength === 64) {\n this.encKey = key.slice(0, 32);\n this.macKey = key.slice(32, 64);\n } else {\n throw new Error('Unsupported encType/key length.');\n }\n\n if (this.key != null) {\n this.keyB64 = Utils.fromBufferToB64(this.key);\n }\n if (this.encKey != null) {\n this.encKeyB64 = Utils.fromBufferToB64(this.encKey);\n }\n if (this.macKey != null) {\n this.macKeyB64 = Utils.fromBufferToB64(this.macKey);\n }\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { PaymentComponent } from './payment.component';\nimport { TaxInfoComponent } from './tax-info.component';\n\nimport { EncString } from 'jslib-common/models/domain/encString';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\n\nimport { PaymentMethodType } from 'jslib-common/enums/paymentMethodType';\nimport { PlanType } from 'jslib-common/enums/planType';\nimport { PolicyType } from 'jslib-common/enums/policyType';\nimport { ProductType } from 'jslib-common/enums/productType';\n\nimport { OrganizationCreateRequest } from 'jslib-common/models/request/organizationCreateRequest';\nimport { OrganizationKeysRequest } from 'jslib-common/models/request/organizationKeysRequest';\nimport { OrganizationUpgradeRequest } from 'jslib-common/models/request/organizationUpgradeRequest';\nimport { ProviderOrganizationCreateRequest } from 'jslib-common/models/request/provider/providerOrganizationCreateRequest';\n\nimport { PlanResponse } from 'jslib-common/models/response/planResponse';\n\n@Component({\n selector: 'app-organization-plans',\n templateUrl: 'organization-plans.component.html',\n})\nexport class OrganizationPlansComponent implements OnInit {\n @ViewChild(PaymentComponent) paymentComponent: PaymentComponent;\n @ViewChild(TaxInfoComponent) taxComponent: TaxInfoComponent;\n\n @Input() organizationId: string;\n @Input() showFree = true;\n @Input() showCancel = false;\n @Input() acceptingSponsorship = false;\n @Input() product: ProductType = ProductType.Free;\n @Input() plan: PlanType = PlanType.Free;\n @Input() providerId: string;\n @Output() onSuccess = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n loading: boolean = true;\n selfHosted: boolean = false;\n ownedBusiness: boolean = false;\n premiumAccessAddon: boolean = false;\n additionalStorage: number = 0;\n additionalSeats: number = 0;\n name: string;\n billingEmail: string;\n clientOwnerEmail: string;\n businessName: string;\n productTypes = ProductType;\n formPromise: Promise;\n singleOrgPolicyBlock: boolean = false;\n discount = 0;\n\n plans: PlanResponse[];\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService, private router: Router, private syncService: SyncService,\n private policyService: PolicyService, private userService: UserService, private logService: LogService) {\n this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n if (!this.selfHosted) {\n const plans = await this.apiService.getPlans();\n this.plans = plans.data;\n if (this.product === ProductType.Enterprise || this.product === ProductType.Teams) {\n this.ownedBusiness = true;\n }\n }\n\n if (this.providerId) {\n this.ownedBusiness = true;\n this.changedOwnedBusiness();\n }\n\n this.loading = false;\n }\n\n get createOrganization() {\n return this.organizationId == null;\n }\n\n get selectedPlan() {\n return this.plans.find(plan => plan.type === this.plan);\n }\n\n get selectedPlanInterval() {\n return this.selectedPlan.isAnnual\n ? 'year'\n : 'month';\n }\n\n get selectableProducts() {\n let validPlans = this.plans.filter(plan => plan.type !== PlanType.Custom);\n\n if (this.ownedBusiness) {\n validPlans = validPlans.filter(plan => plan.canBeUsedByBusiness);\n }\n\n if (!this.showFree) {\n validPlans = validPlans.filter(plan => plan.product !== ProductType.Free);\n }\n\n validPlans = validPlans\n .filter(plan => !plan.legacyYear\n && !plan.disabled\n && (plan.isAnnual || plan.product === this.productTypes.Free));\n\n if (this.acceptingSponsorship) {\n const familyPlan = this.plans.find(plan => plan.type === PlanType.FamiliesAnnually);\n this.discount = familyPlan.basePrice;\n validPlans = [\n familyPlan,\n ];\n }\n\n return validPlans;\n }\n\n get selectablePlans() {\n return this.plans.filter(plan => !plan.legacyYear && !plan.disabled && plan.product === this.product);\n }\n\n additionalStoragePriceMonthly(selectedPlan: PlanResponse) {\n if (!selectedPlan.isAnnual) {\n return selectedPlan.additionalStoragePricePerGb;\n }\n return selectedPlan.additionalStoragePricePerGb / 12;\n }\n\n seatPriceMonthly(selectedPlan: PlanResponse) {\n if (!selectedPlan.isAnnual) {\n return selectedPlan.seatPrice;\n }\n return selectedPlan.seatPrice / 12;\n }\n\n additionalStorageTotal(plan: PlanResponse): number {\n if (!plan.hasAdditionalStorageOption) {\n return 0;\n }\n\n return plan.additionalStoragePricePerGb * Math.abs(this.additionalStorage || 0);\n }\n\n seatTotal(plan: PlanResponse): number {\n if (!plan.hasAdditionalSeatsOption) {\n return 0;\n }\n\n return plan.seatPrice * Math.abs(this.additionalSeats || 0);\n }\n\n get subtotal() {\n let subTotal = this.selectedPlan.basePrice;\n if (this.selectedPlan.hasAdditionalSeatsOption && this.additionalSeats) {\n subTotal += this.seatTotal(this.selectedPlan);\n }\n if (this.selectedPlan.hasAdditionalStorageOption && this.additionalStorage) {\n subTotal += this.additionalStorageTotal(this.selectedPlan);\n }\n if (this.selectedPlan.hasPremiumAccessOption && this.premiumAccessAddon) {\n subTotal += this.selectedPlan.premiumAccessOptionPrice;\n }\n return subTotal - this.discount;\n }\n\n get freeTrial() {\n return this.selectedPlan.trialPeriodDays != null;\n }\n\n get taxCharges() {\n return this.taxComponent != null && this.taxComponent.taxRate != null ?\n (this.taxComponent.taxRate / 100) * this.subtotal :\n 0;\n }\n\n get total() {\n return (this.subtotal + this.taxCharges) || 0;\n }\n\n get paymentDesc() {\n if (this.acceptingSponsorship) {\n return this.i18nService.t('paymentSponsored');\n } else if (this.freeTrial && this.createOrganization) {\n return this.i18nService.t('paymentChargedWithTrial');\n } else {\n return this.i18nService.t('paymentCharged', this.i18nService.t(this.selectedPlanInterval));\n }\n }\n\n changedProduct() {\n this.plan = this.selectablePlans[0].type;\n if (!this.selectedPlan.hasPremiumAccessOption) {\n this.premiumAccessAddon = false;\n }\n if (!this.selectedPlan.hasAdditionalStorageOption) {\n this.additionalStorage = 0;\n }\n if (!this.selectedPlan.hasAdditionalSeatsOption) {\n this.additionalSeats = 0;\n } else if (!this.additionalSeats && !this.selectedPlan.baseSeats &&\n this.selectedPlan.hasAdditionalSeatsOption) {\n this.additionalSeats = 1;\n }\n }\n\n changedOwnedBusiness() {\n if (!this.ownedBusiness || this.selectedPlan.canBeUsedByBusiness) {\n return;\n }\n this.product = ProductType.Teams;\n this.plan = PlanType.TeamsAnnually;\n }\n\n changedCountry() {\n this.paymentComponent.hideBank = this.taxComponent.taxInfo.country !== 'US';\n // Bank Account payments are only available for US customers\n if (this.paymentComponent.hideBank &&\n this.paymentComponent.method === PaymentMethodType.BankAccount) {\n this.paymentComponent.method = PaymentMethodType.Card;\n this.paymentComponent.changeMethod();\n }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n async submit() {\n this.singleOrgPolicyBlock = await this.userHasBlockingSingleOrgPolicy();\n\n if (this.singleOrgPolicyBlock) {\n return;\n }\n\n try {\n const doSubmit = async (): Promise => {\n let orgId: string = null;\n if (this.createOrganization) {\n const shareKey = await this.cryptoService.makeShareKey();\n const key = shareKey[0].encryptedString;\n const collection = await this.cryptoService.encrypt(\n this.i18nService.t('defaultCollection'), shareKey[1]);\n const collectionCt = collection.encryptedString;\n const orgKeys = await this.cryptoService.makeKeyPair(shareKey[1]);\n\n if (this.selfHosted) {\n orgId = await this.createSelfHosted(key, collectionCt, orgKeys);\n } else {\n orgId = await this.createCloudHosted(key, collectionCt, orgKeys, shareKey[1]);\n }\n\n this.toasterService.popAsync('success', this.i18nService.t('organizationCreated'), this.i18nService.t('organizationReadyToGo'));\n } else {\n orgId = await this.updateOrganization(orgId);\n this.toasterService.popAsync('success', null, this.i18nService.t('organizationUpgraded'));\n }\n\n await this.apiService.refreshIdentityToken();\n await this.syncService.fullSync(true);\n if (!this.acceptingSponsorship) {\n this.router.navigate(['/organizations/' + orgId]);\n }\n\n return orgId;\n };\n\n this.formPromise = doSubmit();\n const orgId = await this.formPromise;\n this.onSuccess.emit({ organizationId: orgId });\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n private async userHasBlockingSingleOrgPolicy() {\n return this.policyService.policyAppliesToUser(PolicyType.SingleOrg);\n }\n\n private async updateOrganization(orgId: string) {\n const request = new OrganizationUpgradeRequest();\n request.businessName = this.ownedBusiness ? this.businessName : null;\n request.additionalSeats = this.additionalSeats;\n request.additionalStorageGb = this.additionalStorage;\n request.premiumAccessAddon = this.selectedPlan.hasPremiumAccessOption && this.premiumAccessAddon;\n request.planType = this.selectedPlan.type;\n request.billingAddressCountry = this.taxComponent.taxInfo.country;\n request.billingAddressPostalCode = this.taxComponent.taxInfo.postalCode;\n\n // Retrieve org info to backfill pub/priv key if necessary\n const org = await this.userService.getOrganization(this.organizationId);\n if (!org.hasPublicAndPrivateKeys) {\n const orgShareKey = await this.cryptoService.getOrgKey(this.organizationId);\n const orgKeys = await this.cryptoService.makeKeyPair(orgShareKey);\n request.keys = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString);\n }\n\n const result = await this.apiService.postOrganizationUpgrade(this.organizationId, request);\n if (!result.success && result.paymentIntentClientSecret != null) {\n await this.paymentComponent.handleStripeCardPayment(result.paymentIntentClientSecret, null);\n }\n return this.organizationId;\n }\n\n private async createCloudHosted(key: string, collectionCt: string, orgKeys: [string, EncString], orgKey: SymmetricCryptoKey) {\n const request = new OrganizationCreateRequest();\n request.key = key;\n request.collectionName = collectionCt;\n request.name = this.name;\n request.billingEmail = this.billingEmail;\n request.keys = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString);\n\n if (this.selectedPlan.type === PlanType.Free) {\n request.planType = PlanType.Free;\n } else {\n const tokenResult = await this.paymentComponent.createPaymentToken();\n\n request.paymentToken = tokenResult[0];\n request.paymentMethodType = tokenResult[1];\n request.businessName = this.ownedBusiness ? this.businessName : null;\n request.additionalSeats = this.additionalSeats;\n request.additionalStorageGb = this.additionalStorage;\n request.premiumAccessAddon = this.selectedPlan.hasPremiumAccessOption &&\n this.premiumAccessAddon;\n request.planType = this.selectedPlan.type;\n request.billingAddressPostalCode = this.taxComponent.taxInfo.postalCode;\n request.billingAddressCountry = this.taxComponent.taxInfo.country;\n if (this.taxComponent.taxInfo.includeTaxId) {\n request.taxIdNumber = this.taxComponent.taxInfo.taxId;\n request.billingAddressLine1 = this.taxComponent.taxInfo.line1;\n request.billingAddressLine2 = this.taxComponent.taxInfo.line2;\n request.billingAddressCity = this.taxComponent.taxInfo.city;\n request.billingAddressState = this.taxComponent.taxInfo.state;\n }\n }\n\n if (this.providerId) {\n const providerRequest = new ProviderOrganizationCreateRequest(this.clientOwnerEmail, request);\n const providerKey = await this.cryptoService.getProviderKey(this.providerId);\n providerRequest.organizationCreateRequest.key = (await this.cryptoService.encrypt(orgKey.key, providerKey)).encryptedString;\n const orgId = (await this.apiService.postProviderCreateOrganization(this.providerId, providerRequest)).organizationId;\n\n return orgId;\n } else {\n return (await this.apiService.postOrganization(request)).id;\n }\n }\n\n private async createSelfHosted(key: string, collectionCt: string, orgKeys: [string, EncString]) {\n const fileEl = document.getElementById('file') as HTMLInputElement;\n const files = fileEl.files;\n if (files == null || files.length === 0) {\n throw new Error(this.i18nService.t('selectFile'));\n }\n\n const fd = new FormData();\n fd.append('license', files[0]);\n fd.append('key', key);\n fd.append('collectionName', collectionCt);\n const response = await this.apiService.postOrganizationLicense(fd);\n const orgId = response.id;\n\n // Org Keys live outside of the OrganizationLicense - add the keys to the org here\n const request = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString);\n await this.apiService.postOrganizationKeys(orgId, request);\n\n return orgId;\n }\n}\n"," {{'loading' | i18n}}

{{'uploadLicenseFileOrg' | i18n}}

{{'licenseFileDesc' | i18n : 'bitwarden_organization_license.json'}}

{{'generalInformation' | i18n}}

{{'clientOwnerDesc' | i18n : '20'}}

{{'chooseYourPlan' | i18n}}

{{'users' | i18n}}

{{'userSeatsHowManyDesc' | i18n}}

{{'addons' | i18n}}

{{'userSeatsAdditionalDesc' | i18n : selectedPlan.baseSeats : (seatPriceMonthly(selectedPlan) | currency:'$')}}
{{'additionalStorageIntervalDesc' | i18n : '1 GB' : (additionalStoragePriceMonthly(selectedPlan) | currency:'$') : ('month' | i18n)}}
{{'premiumAccessDesc' | i18n : (3.33 | currency:'$') : ('month' | i18n)}}

{{'summary' | i18n}}


{{ (createOrganization ? 'paymentInformation' : 'billingInformation') | i18n}}

{{paymentDesc}}
{{ 'planPrice' | i18n }}: {{ subtotal | currency: 'USD $' }}
{{ 'estimatedTax' | i18n }}: {{ taxCharges | currency: 'USD $' }}

{{'total' | i18n}}: {{total | currency:'USD $'}}/{{selectedPlanInterval | i18n}}

{{'singleOrgBlockCreateMessage' | i18n}}
","import { CipherRepromptType } from '../../enums/cipherRepromptType';\nimport { CipherType } from '../../enums/cipherType';\n\nimport { Cipher } from '../domain/cipher';\n\nimport { CardApi } from '../api/cardApi';\nimport { FieldApi } from '../api/fieldApi';\nimport { IdentityApi } from '../api/identityApi';\nimport { LoginApi } from '../api/loginApi';\nimport { LoginUriApi } from '../api/loginUriApi';\nimport { SecureNoteApi } from '../api/secureNoteApi';\n\nimport { AttachmentRequest } from './attachmentRequest';\nimport { PasswordHistoryRequest } from './passwordHistoryRequest';\n\nexport class CipherRequest {\n type: CipherType;\n folderId: string;\n organizationId: string;\n name: string;\n notes: string;\n favorite: boolean;\n login: LoginApi;\n secureNote: SecureNoteApi;\n card: CardApi;\n identity: IdentityApi;\n fields: FieldApi[];\n passwordHistory: PasswordHistoryRequest[];\n // Deprecated, remove at some point and rename attachments2 to attachments\n attachments: { [id: string]: string; };\n attachments2: { [id: string]: AttachmentRequest; };\n lastKnownRevisionDate: Date;\n reprompt: CipherRepromptType;\n\n constructor(cipher: Cipher) {\n this.type = cipher.type;\n this.folderId = cipher.folderId;\n this.organizationId = cipher.organizationId;\n this.name = cipher.name ? cipher.name.encryptedString : null;\n this.notes = cipher.notes ? cipher.notes.encryptedString : null;\n this.favorite = cipher.favorite;\n this.lastKnownRevisionDate = cipher.revisionDate;\n this.reprompt = cipher.reprompt;\n\n switch (this.type) {\n case CipherType.Login:\n this.login = new LoginApi();\n this.login.uris = null;\n this.login.username = cipher.login.username ? cipher.login.username.encryptedString : null;\n this.login.password = cipher.login.password ? cipher.login.password.encryptedString : null;\n this.login.passwordRevisionDate = cipher.login.passwordRevisionDate != null ?\n cipher.login.passwordRevisionDate.toISOString() : null;\n this.login.totp = cipher.login.totp ? cipher.login.totp.encryptedString : null;\n this.login.autofillOnPageLoad = cipher.login.autofillOnPageLoad;\n\n if (cipher.login.uris != null) {\n this.login.uris = cipher.login.uris.map(u => {\n const uri = new LoginUriApi();\n uri.uri = u.uri != null ? u.uri.encryptedString : null;\n uri.match = u.match != null ? u.match : null;\n return uri;\n });\n }\n break;\n case CipherType.SecureNote:\n this.secureNote = new SecureNoteApi();\n this.secureNote.type = cipher.secureNote.type;\n break;\n case CipherType.Card:\n this.card = new CardApi();\n this.card.cardholderName = cipher.card.cardholderName != null ?\n cipher.card.cardholderName.encryptedString : null;\n this.card.brand = cipher.card.brand != null ? cipher.card.brand.encryptedString : null;\n this.card.number = cipher.card.number != null ? cipher.card.number.encryptedString : null;\n this.card.expMonth = cipher.card.expMonth != null ? cipher.card.expMonth.encryptedString : null;\n this.card.expYear = cipher.card.expYear != null ? cipher.card.expYear.encryptedString : null;\n this.card.code = cipher.card.code != null ? cipher.card.code.encryptedString : null;\n break;\n case CipherType.Identity:\n this.identity = new IdentityApi();\n this.identity.title = cipher.identity.title != null ? cipher.identity.title.encryptedString : null;\n this.identity.firstName = cipher.identity.firstName != null ?\n cipher.identity.firstName.encryptedString : null;\n this.identity.middleName = cipher.identity.middleName != null ?\n cipher.identity.middleName.encryptedString : null;\n this.identity.lastName = cipher.identity.lastName != null ?\n cipher.identity.lastName.encryptedString : null;\n this.identity.address1 = cipher.identity.address1 != null ?\n cipher.identity.address1.encryptedString : null;\n this.identity.address2 = cipher.identity.address2 != null ?\n cipher.identity.address2.encryptedString : null;\n this.identity.address3 = cipher.identity.address3 != null ?\n cipher.identity.address3.encryptedString : null;\n this.identity.city = cipher.identity.city != null ? cipher.identity.city.encryptedString : null;\n this.identity.state = cipher.identity.state != null ? cipher.identity.state.encryptedString : null;\n this.identity.postalCode = cipher.identity.postalCode != null ?\n cipher.identity.postalCode.encryptedString : null;\n this.identity.country = cipher.identity.country != null ?\n cipher.identity.country.encryptedString : null;\n this.identity.company = cipher.identity.company != null ?\n cipher.identity.company.encryptedString : null;\n this.identity.email = cipher.identity.email != null ? cipher.identity.email.encryptedString : null;\n this.identity.phone = cipher.identity.phone != null ? cipher.identity.phone.encryptedString : null;\n this.identity.ssn = cipher.identity.ssn != null ? cipher.identity.ssn.encryptedString : null;\n this.identity.username = cipher.identity.username != null ?\n cipher.identity.username.encryptedString : null;\n this.identity.passportNumber = cipher.identity.passportNumber != null ?\n cipher.identity.passportNumber.encryptedString : null;\n this.identity.licenseNumber = cipher.identity.licenseNumber != null ?\n cipher.identity.licenseNumber.encryptedString : null;\n break;\n default:\n break;\n }\n\n if (cipher.fields != null) {\n this.fields = cipher.fields.map(f => {\n const field = new FieldApi();\n field.type = f.type;\n field.name = f.name ? f.name.encryptedString : null;\n field.value = f.value ? f.value.encryptedString : null;\n field.linkedId = f.linkedId;\n return field;\n });\n }\n\n if (cipher.passwordHistory != null) {\n this.passwordHistory = [];\n cipher.passwordHistory.forEach(ph => {\n this.passwordHistory.push({\n lastUsedDate: ph.lastUsedDate,\n password: ph.password ? ph.password.encryptedString : null,\n });\n });\n }\n\n if (cipher.attachments != null) {\n this.attachments = {};\n this.attachments2 = {};\n cipher.attachments.forEach(attachment => {\n const fileName = attachment.fileName ? attachment.fileName.encryptedString : null;\n this.attachments[attachment.id] = fileName;\n const attachmentRequest = new AttachmentRequest();\n attachmentRequest.fileName = fileName;\n if (attachment.key != null) {\n attachmentRequest.key = attachment.key.encryptedString;\n }\n this.attachments2[attachment.id] = attachmentRequest;\n });\n }\n }\n}\n","import { BasePolicy } from '../organizations/policies/base-policy.component';\n\nexport class PolicyListService {\n private policies: BasePolicy[] = [];\n\n addPolicies(policies: BasePolicy[]) {\n this.policies.push(...policies);\n }\n\n getPolicies(): BasePolicy[] {\n return this.policies;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport {\n ActivatedRoute,\n NavigationEnd,\n Router,\n} from '@angular/router';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\n@Injectable()\nexport class RouterService {\n private previousUrl: string = undefined;\n private currentUrl: string = undefined;\n\n constructor(private router: Router, private activatedRoute: ActivatedRoute,\n private titleService: Title, i18nService: I18nService) {\n this.currentUrl = this.router.url;\n router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n this.previousUrl = this.currentUrl;\n this.currentUrl = event.url;\n\n let title = i18nService.t('pageTitle', 'Bitwarden');\n let titleId: string = null;\n let rawTitle: string = null;\n let child = this.activatedRoute.firstChild;\n while (child != null) {\n if (child.firstChild != null) {\n child = child.firstChild;\n } else if (child.snapshot.data != null && child.snapshot.data.title != null) {\n rawTitle = child.snapshot.data.title;\n break;\n } else if (child.snapshot.data != null && child.snapshot.data.titleId != null) {\n titleId = child.snapshot.data.titleId;\n break;\n } else {\n titleId = null;\n rawTitle = null;\n break;\n }\n }\n\n if (titleId != null || rawTitle != null) {\n const newTitle = rawTitle != null ? rawTitle : i18nService.t(titleId);\n if (newTitle != null && newTitle !== '') {\n title = (newTitle + ' | ' + title);\n }\n }\n this.titleService.setTitle(title);\n }\n });\n }\n\n getPreviousUrl() {\n return this.previousUrl;\n }\n\n setPreviousUrl(url: string) {\n this.previousUrl = url;\n }\n}\n","export enum KdfType {\n PBKDF2_SHA256 = 0,\n}\n","import { Observable, Subject } from 'rxjs';\nimport { first } from 'rxjs/operators';\n\nexport class ModalRef {\n\n onCreated: Observable; // Modal added to the DOM.\n onClose: Observable; // Initiated close.\n onClosed: Observable; // Modal was closed (Remove element from DOM)\n onShow: Observable; // Start showing modal\n onShown: Observable; // Modal is fully visible\n\n private readonly _onCreated = new Subject();\n private readonly _onClose = new Subject();\n private readonly _onClosed = new Subject();\n private readonly _onShow = new Subject();\n private readonly _onShown = new Subject();\n private lastResult: any;\n\n constructor() {\n this.onCreated = this._onCreated.asObservable();\n this.onClose = this._onClose.asObservable();\n this.onClosed = this._onClosed.asObservable();\n this.onShow = this._onShow.asObservable();\n this.onShown = this._onShow.asObservable();\n }\n\n show() {\n this._onShow.next();\n }\n\n shown() {\n this._onShown.next();\n }\n\n close(result?: any) {\n this.lastResult = result;\n this._onClose.next(result);\n }\n\n closed() {\n this._onClosed.next(this.lastResult);\n }\n\n created(el: HTMLElement) {\n this._onCreated.next(el);\n }\n\n onClosedPromise(): Promise {\n return this.onClosed.pipe(first()).toPromise();\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nexport class PermissionsApi extends BaseResponse {\n accessEventLogs: boolean;\n accessImportExport: boolean;\n accessReports: boolean;\n /**\n * @deprecated Sep 29 2021: This permission has been split out to `createNewCollections`, `editAnyCollection`, and\n * `deleteAnyCollection`. It exists here for backwards compatibility with Server versions <= 1.43.0\n */\n manageAllCollections: boolean;\n createNewCollections: boolean;\n editAnyCollection: boolean;\n deleteAnyCollection: boolean;\n /**\n * @deprecated Sep 29 2021: This permission has been split out to `editAssignedCollections` and\n * `deleteAssignedCollections`. It exists here for backwards compatibility with Server versions <= 1.43.0\n */\n manageAssignedCollections: boolean;\n editAssignedCollections: boolean;\n deleteAssignedCollections: boolean;\n manageCiphers: boolean;\n manageGroups: boolean;\n manageSso: boolean;\n managePolicies: boolean;\n manageUsers: boolean;\n manageResetPassword: boolean;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return this;\n }\n this.accessEventLogs = this.getResponseProperty('AccessEventLogs');\n this.accessImportExport = this.getResponseProperty('AccessImportExport');\n this.accessReports = this.getResponseProperty('AccessReports');\n\n // For backwards compatibility with Server <= 1.43.0\n this.manageAllCollections = this.getResponseProperty('ManageAllCollections');\n this.manageAssignedCollections = this.getResponseProperty('ManageAssignedCollections');\n\n this.createNewCollections = this.getResponseProperty('CreateNewCollections');\n this.editAnyCollection = this.getResponseProperty('EditAnyCollection');\n this.deleteAnyCollection = this.getResponseProperty('DeleteAnyCollection');\n this.editAssignedCollections = this.getResponseProperty('EditAssignedCollections');\n this.deleteAssignedCollections = this.getResponseProperty('DeleteAssignedCollections');\n\n this.manageCiphers = this.getResponseProperty('ManageCiphers');\n this.manageGroups = this.getResponseProperty('ManageGroups');\n this.manageSso = this.getResponseProperty('ManageSso');\n this.managePolicies = this.getResponseProperty('ManagePolicies');\n this.manageUsers = this.getResponseProperty('ManageUsers');\n this.manageResetPassword = this.getResponseProperty('ManageResetPassword');\n }\n}\n","export enum PaymentMethodType {\n Card = 0,\n BankAccount = 1,\n PayPal = 2,\n BitPay = 3,\n Credit = 4,\n WireTransfer = 5,\n AppleInApp = 6,\n GoogleInApp = 7,\n Check = 8,\n}\n","export enum PlanType {\n Free = 0,\n FamiliesAnnually2019 = 1,\n TeamsMonthly2019 = 2,\n TeamsAnnually2019 = 3,\n EnterpriseMonthly2019 = 4,\n EnterpriseAnnually2019 = 5,\n Custom = 6,\n FamiliesAnnually = 7,\n TeamsMonthly = 8,\n TeamsAnnually = 9,\n EnterpriseMonthly = 10,\n EnterpriseAnnually = 11,\n}\n","import {\n Directive,\n EventEmitter,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserVerificationService } from 'jslib-common/abstractions/userVerification.service';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\nimport { VerificationType } from 'jslib-common/enums/verificationType';\n\nimport { SecretVerificationRequest } from 'jslib-common/models/request/secretVerificationRequest';\nimport { TwoFactorProviderRequest } from 'jslib-common/models/request/twoFactorProviderRequest';\n\n@Directive()\nexport abstract class TwoFactorBaseComponent {\n @Output() onUpdated = new EventEmitter();\n\n type: TwoFactorProviderType;\n organizationId: string;\n twoFactorProviderType = TwoFactorProviderType;\n enabled = false;\n authed = false;\n\n protected hashedSecret: string;\n protected verificationType: VerificationType;\n\n constructor(protected apiService: ApiService, protected i18nService: I18nService,\n protected toasterService: ToasterService, protected platformUtilsService: PlatformUtilsService,\n protected logService: LogService, protected userVerificationService: UserVerificationService) { }\n\n protected auth(authResponse: any) {\n this.hashedSecret = authResponse.secret;\n this.verificationType = authResponse.verificationType;\n this.authed = true;\n }\n\n protected async enable(enableFunction: () => Promise) {\n try {\n await enableFunction();\n this.onUpdated.emit(true);\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n protected async disable(promise: Promise) {\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('twoStepDisableDesc'),\n this.i18nService.t('disable'), this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n\n try {\n const request = await this.buildRequestModel(TwoFactorProviderRequest);\n request.type = this.type;\n if (this.organizationId != null) {\n promise = this.apiService.putTwoFactorOrganizationDisable(this.organizationId, request);\n } else {\n promise = this.apiService.putTwoFactorDisable(request);\n }\n await promise;\n this.enabled = false;\n this.toasterService.popAsync('success', null, this.i18nService.t('twoStepDisabled'));\n this.onUpdated.emit(false);\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n protected async buildRequestModel(requestClass: new() => T) {\n return this.userVerificationService.buildRequest({\n secret: this.hashedSecret,\n type: this.verificationType,\n }, requestClass, true);\n }\n}\n","import {\n Directive,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\nimport { AddEditComponent as OrgAddEditComponent } from '../organizations/vault/add-edit.component';\nimport { AddEditComponent } from '../vault/add-edit.component';\n\nimport { CipherRepromptType } from 'jslib-common/enums/cipherRepromptType';\n\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordRepromptService } from 'jslib-common/abstractions/passwordReprompt.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\n@Directive()\nexport class CipherReportComponent {\n @ViewChild('cipherAddEdit', { read: ViewContainerRef, static: true }) cipherAddEditModalRef: ViewContainerRef;\n\n loading = false;\n hasLoaded = false;\n ciphers: CipherView[] = [];\n organization: Organization;\n\n constructor(private modalService: ModalService, protected userService: UserService,\n protected messagingService: MessagingService, protected passwordRepromptService: PasswordRepromptService,\n public requiresPaid: boolean) { }\n\n async load() {\n this.loading = true;\n await this.setCiphers();\n this.loading = false;\n this.hasLoaded = true;\n }\n\n async selectCipher(cipher: CipherView) {\n if (!await this.repromptCipher(cipher)) {\n return;\n }\n\n const type = this.organization != null ? OrgAddEditComponent : AddEditComponent;\n\n const [modal, childComponent] = await this.modalService.openViewRef(type, this.cipherAddEditModalRef, (comp: OrgAddEditComponent | AddEditComponent) => {\n if (this.organization != null) {\n (comp as OrgAddEditComponent).organization = this.organization;\n comp.organizationId = this.organization.id;\n }\n\n comp.cipherId = cipher == null ? null : cipher.id;\n comp.onSavedCipher.subscribe(async (c: CipherView) => {\n modal.close();\n await this.load();\n });\n comp.onDeletedCipher.subscribe(async (c: CipherView) => {\n modal.close();\n await this.load();\n });\n comp.onRestoredCipher.subscribe(async (c: CipherView) => {\n modal.close();\n await this.load();\n });\n\n });\n\n return childComponent;\n }\n\n protected async checkAccess(): Promise {\n if (this.organization != null) {\n // TODO: Maybe we want to just make sure they are not on a free plan? Just compare useTotp for now\n // since all paid plans include useTotp\n if (this.requiresPaid && !this.organization.useTotp) {\n this.messagingService.send('upgradeOrganization', { organizationId: this.organization.id });\n return false;\n }\n } else {\n const accessPremium = await this.userService.canAccessPremium();\n if (this.requiresPaid && !accessPremium) {\n this.messagingService.send('premiumRequired');\n this.loading = false;\n return false;\n }\n }\n return true;\n }\n\n protected async setCiphers() {\n this.ciphers = [];\n }\n\n protected async repromptCipher(c: CipherView) {\n return c.reprompt === CipherRepromptType.None || await this.passwordRepromptService.showPasswordPrompt();\n }\n}\n","import { FieldType } from '../../enums/fieldType';\nimport { LinkedIdType } from '../../enums/linkedIdType';\n\nimport { View } from './view';\n\nimport { Field } from '../domain/field';\n\nexport class FieldView implements View {\n name: string = null;\n value: string = null;\n type: FieldType = null;\n newField: boolean = false; // Marks if the field is new and hasn't been saved\n showValue: boolean = false;\n linkedId: LinkedIdType = null;\n\n constructor(f?: Field) {\n if (!f) {\n return;\n }\n\n this.type = f.type;\n this.linkedId = f.linkedId;\n }\n\n get maskedValue(): string {\n return this.value != null ? '••••••••' : null;\n }\n}\n","import { Component } from '@angular/core';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\nimport { EventType } from 'jslib-common/enums/eventType';\n\nimport { AuditService } from 'jslib-common/abstractions/audit.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PasswordRepromptService } from 'jslib-common/abstractions/passwordReprompt.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { TotpService } from 'jslib-common/abstractions/totp.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { AddEditComponent as BaseAddEditComponent } from 'jslib-angular/components/add-edit.component';\nimport { LoginUriView } from 'jslib-common/models/view/loginUriView';\n\n@Component({\n selector: 'app-vault-add-edit',\n templateUrl: 'add-edit.component.html',\n})\nexport class AddEditComponent extends BaseAddEditComponent {\n canAccessPremium: boolean;\n totpCode: string;\n totpCodeFormatted: string;\n totpDash: number;\n totpSec: number;\n totpLow: boolean;\n showRevisionDate = false;\n hasPasswordHistory = false;\n viewingPasswordHistory = false;\n viewOnly = false;\n\n protected totpInterval: number;\n\n constructor(cipherService: CipherService, folderService: FolderService,\n i18nService: I18nService, platformUtilsService: PlatformUtilsService,\n auditService: AuditService, stateService: StateService,\n userService: UserService, collectionService: CollectionService,\n protected totpService: TotpService, protected passwordGenerationService: PasswordGenerationService,\n protected messagingService: MessagingService, eventService: EventService,\n protected policyService: PolicyService, passwordRepromptService: PasswordRepromptService,\n logService: LogService) {\n super(cipherService, folderService, i18nService, platformUtilsService, auditService, stateService,\n userService, collectionService, messagingService, eventService, policyService, passwordRepromptService,\n logService);\n }\n\n async ngOnInit() {\n await super.ngOnInit();\n await this.load();\n this.showRevisionDate = this.cipher.passwordRevisionDisplayDate != null;\n this.hasPasswordHistory = this.cipher.hasPasswordHistory;\n this.cleanUp();\n\n this.canAccessPremium = await this.userService.canAccessPremium();\n if (this.cipher.type === CipherType.Login && this.cipher.login.totp &&\n (this.cipher.organizationUseTotp || this.canAccessPremium)) {\n await this.totpUpdateCode();\n const interval = this.totpService.getTimeInterval(this.cipher.login.totp);\n await this.totpTick(interval);\n\n this.totpInterval = window.setInterval(async () => {\n await this.totpTick(interval);\n }, 1000);\n }\n }\n\n toggleFavorite() {\n this.cipher.favorite = !this.cipher.favorite;\n }\n\n launch(uri: LoginUriView) {\n if (!uri.canLaunch) {\n return;\n }\n\n this.platformUtilsService.launchUri(uri.launchUri);\n }\n\n copy(value: string, typeI18nKey: string, aType: string) {\n if (value == null) {\n return;\n }\n\n this.platformUtilsService.copyToClipboard(value, { window: window });\n this.platformUtilsService.showToast('info', null,\n this.i18nService.t('valueCopied', this.i18nService.t(typeI18nKey)));\n\n if (this.editMode) {\n if (typeI18nKey === 'password') {\n this.eventService.collect(EventType.Cipher_ClientToggledHiddenFieldVisible, this.cipherId);\n } else if (typeI18nKey === 'securityCode') {\n this.eventService.collect(EventType.Cipher_ClientCopiedCardCode, this.cipherId);\n } else if (aType === 'H_Field') {\n this.eventService.collect(EventType.Cipher_ClientCopiedHiddenField, this.cipherId);\n }\n }\n }\n\n async generatePassword(): Promise {\n const confirmed = await super.generatePassword();\n if (confirmed) {\n const options = (await this.passwordGenerationService.getOptions())[0];\n this.cipher.login.password = await this.passwordGenerationService.generatePassword(options);\n }\n return confirmed;\n }\n\n premiumRequired() {\n if (!this.canAccessPremium) {\n this.messagingService.send('premiumRequired');\n return;\n }\n }\n\n upgradeOrganization() {\n this.messagingService.send('upgradeOrganization', { organizationId: this.cipher.organizationId });\n }\n\n viewHistory() {\n this.viewingPasswordHistory = !this.viewingPasswordHistory;\n }\n\n protected cleanUp() {\n if (this.totpInterval) {\n window.clearInterval(this.totpInterval);\n }\n }\n\n protected async totpUpdateCode() {\n if (this.cipher == null || this.cipher.type !== CipherType.Login || this.cipher.login.totp == null) {\n if (this.totpInterval) {\n window.clearInterval(this.totpInterval);\n }\n return;\n }\n\n this.totpCode = await this.totpService.getCode(this.cipher.login.totp);\n if (this.totpCode != null) {\n if (this.totpCode.length > 4) {\n const half = Math.floor(this.totpCode.length / 2);\n this.totpCodeFormatted = this.totpCode.substring(0, half) + ' ' + this.totpCode.substring(half);\n } else {\n this.totpCodeFormatted = this.totpCode;\n }\n } else {\n this.totpCodeFormatted = null;\n if (this.totpInterval) {\n window.clearInterval(this.totpInterval);\n }\n }\n }\n\n protected allowOwnershipAssignment() {\n return (!this.editMode || this.cloneMode) && this.ownershipOptions != null\n && (this.ownershipOptions.length > 1 || !this.allowPersonal);\n }\n\n private async totpTick(intervalSeconds: number) {\n const epoch = Math.round(new Date().getTime() / 1000.0);\n const mod = epoch % intervalSeconds;\n\n this.totpSec = intervalSeconds - mod;\n this.totpDash = +(Math.round((((78.6 / intervalSeconds) * mod) + 'e+2') as any) + 'e-2');\n this.totpLow = this.totpSec <= 7;\n if (mod === 0) {\n await this.totpUpdateCode();\n }\n }\n}\n","

{{title}}

{{'personalOwnershipPolicyInEffect' | i18n}}
{{totpSec}} {{totpCodeFormatted}}
{{'newUri' | i18n}}

{{'ownership' | i18n}}

{{'collections' | i18n}}

{{'noCollectionsInList' | i18n}}
{{'dateUpdated' | i18n}}: {{cipher.revisionDate | date:'medium'}}
{{'datePasswordUpdated' | i18n}}: {{cipher.passwordRevisionDisplayDate | date:'medium'}}
{{'passwordHistory' | i18n}}: {{cipher.passwordHistory.length}}
{{ph.lastUsedDate | date:'short'}} - {{ph.password}}

{{'options' | i18n}}

","import { Importer } from '../importers/importer';\n\nexport interface ImportOption {\n id: string;\n name: string;\n}\nexport abstract class ImportService {\n featuredImportOptions: ImportOption[];\n regularImportOptions: ImportOption[];\n getImportOptions: () => ImportOption[];\n import: (importer: Importer, fileContents: string, organizationId?: string) => Promise;\n getImporter: (format: string, organizationId: string) => Importer;\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PasswordRepromptService } from 'jslib-common/abstractions/passwordReprompt.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SearchService } from 'jslib-common/abstractions/search.service';\nimport { TotpService } from 'jslib-common/abstractions/totp.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { CiphersComponent as BaseCiphersComponent } from 'jslib-angular/components/ciphers.component';\n\nimport { CipherRepromptType } from 'jslib-common/enums/cipherRepromptType';\nimport { CipherType } from 'jslib-common/enums/cipherType';\nimport { EventType } from 'jslib-common/enums/eventType';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nconst MaxCheckedCount = 500;\n\n@Component({\n selector: 'app-vault-ciphers',\n templateUrl: 'ciphers.component.html',\n})\nexport class CiphersComponent extends BaseCiphersComponent implements OnDestroy {\n @Input() showAddNew = true;\n @Output() onAttachmentsClicked = new EventEmitter();\n @Output() onShareClicked = new EventEmitter();\n @Output() onCollectionsClicked = new EventEmitter();\n @Output() onCloneClicked = new EventEmitter();\n\n pagedCiphers: CipherView[] = [];\n pageSize = 200;\n cipherType = CipherType;\n actionPromise: Promise;\n userHasPremiumAccess = false;\n\n private didScroll = false;\n private pagedCiphersCount = 0;\n private refreshing = false;\n\n constructor(searchService: SearchService, protected toasterService: ToasterService,\n protected i18nService: I18nService, protected platformUtilsService: PlatformUtilsService,\n protected cipherService: CipherService, protected eventService: EventService,\n protected totpService: TotpService, protected userService: UserService,\n protected passwordRepromptService: PasswordRepromptService, private logService: LogService) {\n super(searchService);\n }\n\n async ngOnInit() {\n this.userHasPremiumAccess = await this.userService.canAccessPremium();\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n loadMore() {\n if (this.ciphers.length <= this.pageSize) {\n return;\n }\n const pagedLength = this.pagedCiphers.length;\n let pagedSize = this.pageSize;\n if (this.refreshing && pagedLength === 0 && this.pagedCiphersCount > this.pageSize) {\n pagedSize = this.pagedCiphersCount;\n }\n if (this.ciphers.length > pagedLength) {\n this.pagedCiphers = this.pagedCiphers.concat(this.ciphers.slice(pagedLength, pagedLength + pagedSize));\n }\n this.pagedCiphersCount = this.pagedCiphers.length;\n this.didScroll = this.pagedCiphers.length > this.pageSize;\n }\n\n async refresh() {\n try {\n this.refreshing = true;\n await this.reload(this.filter, this.deleted);\n } finally {\n this.refreshing = false;\n }\n }\n\n isPaging() {\n const searching = this.isSearching();\n if (searching && this.didScroll) {\n this.resetPaging();\n }\n return !searching && this.ciphers.length > this.pageSize;\n }\n\n async resetPaging() {\n this.pagedCiphers = [];\n this.loadMore();\n }\n\n async doSearch(indexedCiphers?: CipherView[]) {\n this.ciphers = await this.searchService.searchCiphers(this.searchText, [this.filter, this.deletedFilter], indexedCiphers);\n this.resetPaging();\n }\n\n launch(uri: string) {\n this.platformUtilsService.launchUri(uri);\n }\n\n async attachments(c: CipherView) {\n if (!await this.repromptCipher(c)) {\n return;\n }\n this.onAttachmentsClicked.emit(c);\n }\n\n async share(c: CipherView) {\n if (!await this.repromptCipher(c)) {\n return;\n }\n this.onShareClicked.emit(c);\n }\n\n collections(c: CipherView) {\n this.onCollectionsClicked.emit(c);\n }\n\n async clone(c: CipherView) {\n if (!await this.repromptCipher(c)) {\n return;\n }\n this.onCloneClicked.emit(c);\n }\n\n async delete(c: CipherView): Promise {\n if (!await this.repromptCipher(c)) {\n return;\n }\n if (this.actionPromise != null) {\n return;\n }\n const permanent = c.isDeleted;\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(permanent ? 'permanentlyDeleteItemConfirmation' : 'deleteItemConfirmation'),\n this.i18nService.t(permanent ? 'permanentlyDeleteItem' : 'deleteItem'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.deleteCipher(c.id, permanent);\n await this.actionPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t(permanent ? 'permanentlyDeletedItem'\n : 'deletedItem'));\n this.refresh();\n } catch (e) {\n this.logService.error(e);\n }\n this.actionPromise = null;\n }\n\n async restore(c: CipherView): Promise {\n if (this.actionPromise != null || !c.isDeleted) {\n return;\n }\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('restoreItemConfirmation'),\n this.i18nService.t('restoreItem'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.cipherService.restoreWithServer(c.id);\n await this.actionPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('restoredItem'));\n this.refresh();\n } catch (e) {\n this.logService.error(e);\n }\n this.actionPromise = null;\n }\n\n async copy(cipher: CipherView, value: string, typeI18nKey: string, aType: string) {\n if (this.passwordRepromptService.protectedFields().includes(aType) && !await this.repromptCipher(cipher)) {\n return;\n }\n\n if (value == null || aType === 'TOTP' && !this.displayTotpCopyButton(cipher)) {\n return;\n } else if (value === cipher.login.totp) {\n value = await this.totpService.getCode(value);\n }\n\n if (!cipher.viewPassword) {\n return;\n }\n\n this.platformUtilsService.copyToClipboard(value, { window: window });\n this.toasterService.popAsync('info', null,\n this.i18nService.t('valueCopied', this.i18nService.t(typeI18nKey)));\n\n if (typeI18nKey === 'password' || typeI18nKey === 'verificationCodeTotp') {\n this.eventService.collect(EventType.Cipher_ClientToggledHiddenFieldVisible, cipher.id);\n } else if (typeI18nKey === 'securityCode') {\n this.eventService.collect(EventType.Cipher_ClientCopiedCardCode, cipher.id);\n }\n }\n\n selectAll(select: boolean) {\n if (select) {\n this.selectAll(false);\n }\n const selectCount = select && this.ciphers.length > MaxCheckedCount\n ? MaxCheckedCount\n : this.ciphers.length;\n for (let i = 0; i < selectCount; i++) {\n this.checkCipher(this.ciphers[i], select);\n }\n }\n\n checkCipher(c: CipherView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n getSelected(): CipherView[] {\n if (this.ciphers == null) {\n return [];\n }\n return this.ciphers.filter(c => !!(c as any).checked);\n }\n\n getSelectedIds(): string[] {\n return this.getSelected().map(c => c.id);\n }\n\n displayTotpCopyButton(cipher: CipherView) {\n return (cipher?.login?.hasTotp ?? false) &&\n (cipher.organizationUseTotp || this.userHasPremiumAccess);\n }\n\n async selectCipher(cipher: CipherView) {\n if (await this.repromptCipher(cipher)) {\n super.selectCipher(cipher);\n }\n }\n\n protected deleteCipher(id: string, permanent: boolean) {\n return permanent ? this.cipherService.deleteWithServer(id) : this.cipherService.softDeleteWithServer(id);\n }\n\n protected showFixOldAttachments(c: CipherView) {\n return c.hasOldAttachments && c.organizationId == null;\n }\n\n protected async repromptCipher(c: CipherView) {\n return c.reprompt === CipherRepromptType.None || await this.passwordRepromptService.showPasswordPrompt();\n }\n}\n","
{{c.name}} {{'shared' | i18n}} {{'attachments' | i18n}} {{'attachmentsNeedFix' | i18n}}
{{c.subTitle}}
{{'loading' | i18n}}

{{'noItemsInList' | i18n}}

","import { OrganizationData } from '../data/organizationData';\n\nimport { OrganizationUserStatusType } from '../../enums/organizationUserStatusType';\nimport { OrganizationUserType } from '../../enums/organizationUserType';\nimport { ProductType } from '../../enums/productType';\nimport { PermissionsApi } from '../api/permissionsApi';\n\n\nexport class Organization {\n id: string;\n name: string;\n status: OrganizationUserStatusType;\n type: OrganizationUserType;\n enabled: boolean;\n usePolicies: boolean;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n useSso: boolean;\n useKeyConnector: boolean;\n useResetPassword: boolean;\n selfHost: boolean;\n usersGetPremium: boolean;\n seats: number;\n maxCollections: number;\n maxStorageGb?: number;\n ssoBound: boolean;\n identifier: string;\n permissions: PermissionsApi;\n resetPasswordEnrolled: boolean;\n userId: string;\n hasPublicAndPrivateKeys: boolean;\n providerId: string;\n providerName: string;\n isProviderUser: boolean;\n familySponsorshipFriendlyName: string;\n familySponsorshipAvailable: boolean;\n planProductType: ProductType;\n keyConnectorEnabled: boolean;\n keyConnectorUrl: string;\n\n constructor(obj?: OrganizationData) {\n if (obj == null) {\n return;\n }\n\n this.id = obj.id;\n this.name = obj.name;\n this.status = obj.status;\n this.type = obj.type;\n this.enabled = obj.enabled;\n this.usePolicies = obj.usePolicies;\n this.useGroups = obj.useGroups;\n this.useDirectory = obj.useDirectory;\n this.useEvents = obj.useEvents;\n this.useTotp = obj.useTotp;\n this.use2fa = obj.use2fa;\n this.useApi = obj.useApi;\n this.useSso = obj.useSso;\n this.useKeyConnector = obj.useKeyConnector;\n this.useResetPassword = obj.useResetPassword;\n this.selfHost = obj.selfHost;\n this.usersGetPremium = obj.usersGetPremium;\n this.seats = obj.seats;\n this.maxCollections = obj.maxCollections;\n this.maxStorageGb = obj.maxStorageGb;\n this.ssoBound = obj.ssoBound;\n this.identifier = obj.identifier;\n this.permissions = obj.permissions;\n this.resetPasswordEnrolled = obj.resetPasswordEnrolled;\n this.userId = obj.userId;\n this.hasPublicAndPrivateKeys = obj.hasPublicAndPrivateKeys;\n this.providerId = obj.providerId;\n this.providerName = obj.providerName;\n this.isProviderUser = obj.isProviderUser;\n this.familySponsorshipFriendlyName = obj.familySponsorshipFriendlyName;\n this.familySponsorshipAvailable = obj.familySponsorshipAvailable;\n this.planProductType = obj.planProductType;\n this.keyConnectorEnabled = obj.keyConnectorEnabled;\n this.keyConnectorUrl = obj.keyConnectorUrl;\n }\n\n get canAccess() {\n if (this.type === OrganizationUserType.Owner) {\n return true;\n }\n return this.enabled && this.status === OrganizationUserStatusType.Confirmed;\n }\n\n get isManager() {\n return this.type === OrganizationUserType.Manager || this.type === OrganizationUserType.Owner ||\n this.type === OrganizationUserType.Admin;\n }\n\n get isAdmin() {\n return this.type === OrganizationUserType.Owner || this.type === OrganizationUserType.Admin;\n }\n\n get isOwner() {\n return this.type === OrganizationUserType.Owner || this.isProviderUser;\n }\n\n get canAccessEventLogs() {\n return this.isAdmin || this.permissions.accessEventLogs;\n }\n\n get canAccessImportExport() {\n return this.isAdmin || this.permissions.accessImportExport;\n }\n\n get canAccessReports() {\n return this.isAdmin || this.permissions.accessReports;\n }\n\n get canCreateNewCollections() {\n return this.isManager || (this.permissions.createNewCollections ?? this.permissions.manageAllCollections);\n }\n\n get canEditAnyCollection() {\n return this.isAdmin || (this.permissions.editAnyCollection ?? this.permissions.manageAllCollections);\n }\n\n get canDeleteAnyCollection() {\n return this.isAdmin || (this.permissions.deleteAnyCollection ?? this.permissions.manageAllCollections);\n }\n\n get canViewAllCollections() {\n return this.canCreateNewCollections || this.canEditAnyCollection || this.canDeleteAnyCollection;\n }\n\n get canEditAssignedCollections() {\n return this.isManager || (this.permissions.editAssignedCollections ?? this.permissions.manageAssignedCollections);\n }\n\n get canDeleteAssignedCollections() {\n return this.isManager || (this.permissions.deleteAssignedCollections ?? this.permissions.manageAssignedCollections);\n }\n\n get canViewAssignedCollections() {\n return this.canDeleteAssignedCollections || this.canEditAssignedCollections;\n }\n\n get canManageGroups() {\n return this.isAdmin || this.permissions.manageGroups;\n }\n\n get canManageSso() {\n return this.isAdmin || this.permissions.manageSso;\n }\n\n get canManagePolicies() {\n return this.isAdmin || this.permissions.managePolicies;\n }\n\n get canManageUsers() {\n return this.isAdmin || this.permissions.manageUsers;\n }\n\n get canManageUsersPassword() {\n return this.isAdmin || this.permissions.manageResetPassword;\n }\n\n get isExemptFromPolicies() {\n return this.canManagePolicies;\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { PolicyType } from '../../enums/policyType';\n\nexport class PolicyResponse extends BaseResponse {\n id: string;\n organizationId: string;\n type: PolicyType;\n data: any;\n enabled: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.type = this.getResponseProperty('Type');\n this.data = this.getResponseProperty('Data');\n this.enabled = this.getResponseProperty('Enabled');\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { TokenService } from 'jslib-common/abstractions/token.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Provider } from 'jslib-common/models/domain/provider';\n\n@Component({\n selector: 'app-navbar',\n templateUrl: 'navbar.component.html',\n})\nexport class NavbarComponent implements OnInit {\n selfHosted = false;\n name: string;\n email: string;\n providers: Provider[] = [];\n\n constructor(private messagingService: MessagingService, private platformUtilsService: PlatformUtilsService,\n private tokenService: TokenService, private userService: UserService, private syncService: SyncService) {\n this.selfHosted = this.platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n this.name = await this.tokenService.getName();\n this.email = await this.tokenService.getEmail();\n if (this.name == null || this.name.trim() === '') {\n this.name = this.email;\n }\n\n // Ensure provides are loaded\n if (await this.syncService.getLastSync() == null) {\n await this.syncService.fullSync(false);\n }\n this.providers = await this.userService.getAllProviders();\n }\n\n lock() {\n this.messagingService.send('lockVault');\n }\n\n logOut() {\n this.messagingService.send('logout');\n }\n}\n"," ","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\n@Component({\n selector: 'app-footer',\n templateUrl: 'footer.component.html',\n})\nexport class FooterComponent implements OnInit {\n version: string;\n year: string = '2015';\n\n constructor(private platformUtilsService: PlatformUtilsService) { }\n\n async ngOnInit() {\n this.year = new Date().getFullYear().toString();\n this.version = await this.platformUtilsService.getApplicationVersion();\n }\n}\n","
© {{year}}, Bitwarden Inc. (Powered by Vaultwarden)
{{'versionNumber' | i18n : version}}
","export class OrganizationUserResetPasswordEnrollmentRequest {\n resetPasswordKey: string;\n}\n","export enum HashPurpose {\n ServerAuthorization = 1,\n LocalAuthorization = 2,\n}\n","export class KeysRequest {\n publicKey: string;\n encryptedPrivateKey: string;\n\n constructor(publicKey: string, encryptedPrivateKey: string) {\n this.publicKey = publicKey;\n this.encryptedPrivateKey = encryptedPrivateKey;\n }\n}\n","import { PolicyResponse } from '../response/policyResponse';\n\nimport { PolicyType } from '../../enums/policyType';\n\nexport class PolicyData {\n id: string;\n organizationId: string;\n type: PolicyType;\n data: any;\n enabled: boolean;\n\n constructor(response: PolicyResponse) {\n this.id = response.id;\n this.organizationId = response.organizationId;\n this.type = response.type;\n this.data = response.data;\n this.enabled = response.enabled;\n }\n}\n","import { Directive, OnInit } from '@angular/core';\n\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { EncString } from 'jslib-common/models/domain/encString';\nimport { MasterPasswordPolicyOptions } from 'jslib-common/models/domain/masterPasswordPolicyOptions';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\n\nimport { KdfType } from 'jslib-common/enums/kdfType';\n\n@Directive()\nexport class ChangePasswordComponent implements OnInit {\n masterPassword: string;\n masterPasswordRetype: string;\n formPromise: Promise;\n masterPasswordScore: number;\n enforcedPolicyOptions: MasterPasswordPolicyOptions;\n\n protected email: string;\n protected kdf: KdfType;\n protected kdfIterations: number;\n\n private masterPasswordStrengthTimeout: any;\n\n constructor(protected i18nService: I18nService, protected cryptoService: CryptoService,\n protected messagingService: MessagingService, protected userService: UserService,\n protected passwordGenerationService: PasswordGenerationService,\n protected platformUtilsService: PlatformUtilsService, protected policyService: PolicyService) { }\n\n async ngOnInit() {\n this.email = await this.userService.getEmail();\n this.enforcedPolicyOptions ??= await this.policyService.getMasterPasswordPolicyOptions();\n }\n\n async submit() {\n if (!await this.strongPassword()) {\n return;\n }\n\n if (!await this.setupSubmitActions()) {\n return;\n }\n\n const email = await this.userService.getEmail();\n if (this.kdf == null) {\n this.kdf = await this.userService.getKdf();\n }\n if (this.kdfIterations == null) {\n this.kdfIterations = await this.userService.getKdfIterations();\n }\n const key = await this.cryptoService.makeKey(this.masterPassword, email.trim().toLowerCase(),\n this.kdf, this.kdfIterations);\n const masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, key);\n\n let encKey: [SymmetricCryptoKey, EncString] = null;\n const existingEncKey = await this.cryptoService.getEncKey();\n if (existingEncKey == null) {\n encKey = await this.cryptoService.makeEncKey(key);\n } else {\n encKey = await this.cryptoService.remakeEncKey(key);\n }\n\n await this.performSubmitActions(masterPasswordHash, key, encKey);\n }\n\n async setupSubmitActions(): Promise {\n // Override in sub-class\n // Can be used for additional validation and/or other processes the should occur before changing passwords\n return true;\n }\n\n async performSubmitActions(masterPasswordHash: string, key: SymmetricCryptoKey,\n encKey: [SymmetricCryptoKey, EncString]) {\n // Override in sub-class\n }\n\n async strongPassword(): Promise {\n if (this.masterPassword == null || this.masterPassword === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return false;\n }\n if (this.masterPassword.length < 8) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassLength'));\n return false;\n }\n if (this.masterPassword !== this.masterPasswordRetype) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassDoesntMatch'));\n return false;\n }\n\n const strengthResult = this.passwordGenerationService.passwordStrength(this.masterPassword,\n this.getPasswordStrengthUserInput());\n\n if (this.enforcedPolicyOptions != null &&\n !this.policyService.evaluateMasterPassword(\n strengthResult.score,\n this.masterPassword,\n this.enforcedPolicyOptions)) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPasswordPolicyRequirementsNotMet'));\n return false;\n }\n\n if (strengthResult != null && strengthResult.score < 3) {\n const result = await this.platformUtilsService.showDialog(this.i18nService.t('weakMasterPasswordDesc'),\n this.i18nService.t('weakMasterPassword'), this.i18nService.t('yes'), this.i18nService.t('no'),\n 'warning');\n if (!result) {\n return false;\n }\n }\n\n return true;\n }\n\n updatePasswordStrength() {\n if (this.masterPasswordStrengthTimeout != null) {\n clearTimeout(this.masterPasswordStrengthTimeout);\n }\n this.masterPasswordStrengthTimeout = setTimeout(() => {\n const strengthResult = this.passwordGenerationService.passwordStrength(this.masterPassword,\n this.getPasswordStrengthUserInput());\n this.masterPasswordScore = strengthResult == null ? null : strengthResult.score;\n }, 300);\n }\n\n async logOut() {\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('logOutConfirmation'),\n this.i18nService.t('logOut'), this.i18nService.t('logOut'), this.i18nService.t('cancel'));\n if (confirmed) {\n this.messagingService.send('logout');\n }\n }\n\n private getPasswordStrengthUserInput() {\n let userInput: string[] = [];\n const atPosition = this.email.indexOf('@');\n if (atPosition > -1) {\n userInput = userInput.concat(this.email.substr(0, atPosition).trim().toLowerCase().split(/[^A-Za-z0-9]/));\n }\n return userInput;\n }\n}\n","export class SelectionReadOnlyRequest {\n id: string;\n readOnly: boolean;\n hidePasswords: boolean;\n\n constructor(id: string, readOnly: boolean, hidePasswords: boolean) {\n this.id = id;\n this.readOnly = readOnly;\n this.hidePasswords = hidePasswords;\n }\n}\n","export enum ThemeType {\n System = 'system',\n Light = 'light',\n Dark = 'dark',\n Nord = 'nord',\n SolarizedDark = 'solarizedDark',\n}\n","export enum ProductType {\n Free = 0,\n Families = 1,\n Teams = 2,\n Enterprise = 3,\n}\n","import { View } from './view';\n\nimport { LinkedMetadata } from '../../misc/linkedFieldOption.decorator';\n\nexport abstract class ItemView implements View {\n linkedFieldOptions: Map;\n abstract get subTitle(): string;\n}\n","import { UriMatchType } from '../../enums/uriMatchType';\n\nimport { View } from './view';\n\nimport { LoginUri } from '../domain/loginUri';\n\nimport { Utils } from '../../misc/utils';\n\nconst CanLaunchWhitelist = [\n 'https://',\n 'http://',\n 'ssh://',\n 'ftp://',\n 'sftp://',\n 'irc://',\n 'vnc://',\n // https://docs.microsoft.com/en-us/windows-server/remote/remote-desktop-services/clients/remote-desktop-uri\n 'rdp://', // Legacy RDP URI scheme\n 'ms-rd:', // Preferred RDP URI scheme\n 'chrome://',\n 'iosapp://',\n 'androidapp://',\n];\n\nexport class LoginUriView implements View {\n match: UriMatchType = null;\n\n // tslint:disable\n private _uri: string = null;\n private _domain: string = null;\n private _hostname: string = null;\n private _host: string = null;\n private _canLaunch: boolean = null;\n // tslint:enable\n\n constructor(u?: LoginUri) {\n if (!u) {\n return;\n }\n\n this.match = u.match;\n }\n\n get uri(): string {\n return this._uri;\n }\n set uri(value: string) {\n this._uri = value;\n this._domain = null;\n this._canLaunch = null;\n }\n\n get domain(): string {\n if (this._domain == null && this.uri != null) {\n this._domain = Utils.getDomain(this.uri);\n if (this._domain === '') {\n this._domain = null;\n }\n }\n\n return this._domain;\n }\n\n get hostname(): string {\n if (this.match === UriMatchType.RegularExpression) {\n return null;\n }\n if (this._hostname == null && this.uri != null) {\n this._hostname = Utils.getHostname(this.uri);\n if (this._hostname === '') {\n this._hostname = null;\n }\n }\n\n return this._hostname;\n }\n\n get host(): string {\n if (this.match === UriMatchType.RegularExpression) {\n return null;\n }\n if (this._host == null && this.uri != null) {\n this._host = Utils.getHost(this.uri);\n if (this._host === '') {\n this._host = null;\n }\n }\n\n return this._host;\n }\n\n get hostnameOrUri(): string {\n return this.hostname != null ? this.hostname : this.uri;\n }\n\n get hostOrUri(): string {\n return this.host != null ? this.host : this.uri;\n }\n\n get isWebsite(): boolean {\n return this.uri != null && (this.uri.indexOf('http://') === 0 || this.uri.indexOf('https://') === 0 ||\n (this.uri.indexOf('://') < 0 && Utils.tldEndingRegex.test(this.uri)));\n }\n\n get canLaunch(): boolean {\n if (this._canLaunch != null) {\n return this._canLaunch;\n }\n if (this.uri != null && this.match !== UriMatchType.RegularExpression) {\n const uri = this.launchUri;\n for (let i = 0; i < CanLaunchWhitelist.length; i++) {\n if (uri.indexOf(CanLaunchWhitelist[i]) === 0) {\n this._canLaunch = true;\n return this._canLaunch;\n }\n }\n }\n this._canLaunch = false;\n return this._canLaunch;\n }\n\n get launchUri(): string {\n return this.uri.indexOf('://') < 0 && Utils.tldEndingRegex.test(this.uri) ? ('http://' + this.uri) : this.uri;\n }\n}\n","export enum UriMatchType {\n Domain = 0,\n Host = 1,\n StartsWith = 2,\n Exact = 3,\n RegularExpression = 4,\n Never = 5,\n}\n","import {\n Component,\n Input,\n} from '@angular/core';\n\nimport {\n AddEditCustomFieldsComponent as BaseAddEditCustomFieldsComponent\n} from 'jslib-angular/components/add-edit-custom-fields.component';\n\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\n@Component({\n selector: 'app-vault-add-edit-custom-fields',\n templateUrl: 'add-edit-custom-fields.component.html',\n})\nexport class AddEditCustomFieldsComponent extends BaseAddEditCustomFieldsComponent {\n @Input() viewOnly: boolean;\n @Input() copy: (value: string, typeI18nKey: string, aType: string) => void;\n\n constructor(i18nService: I18nService, eventService: EventService) {\n super(i18nService, eventService);\n }\n}\n","

{{'customFields' | i18n}}

{{'newCustomField' | i18n}}
","import {\n Component,\n EventEmitter,\n Output,\n} from '@angular/core';\n\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { GroupingsComponent as BaseGroupingsComponent } from 'jslib-angular/components/groupings.component';\n\n@Component({\n selector: 'app-vault-groupings',\n templateUrl: 'groupings.component.html',\n})\nexport class GroupingsComponent extends BaseGroupingsComponent {\n @Output() onSearchTextChanged = new EventEmitter();\n\n searchText: string = '';\n searchPlaceholder: string = null;\n\n constructor(collectionService: CollectionService, folderService: FolderService,\n storageService: StorageService, userService: UserService) {\n super(collectionService, folderService, storageService, userService);\n }\n\n searchTextChanged() {\n this.onSearchTextChanged.emit(this.searchText);\n }\n}\n"," ","import { View } from './view';\n\nimport { SendFile } from '../domain/sendFile';\n\nexport class SendFileView implements View {\n id: string = null;\n size: string = null;\n sizeName: string = null;\n fileName: string = null;\n\n constructor(f?: SendFile) {\n if (!f) {\n return;\n }\n\n this.id = f.id;\n this.size = f.size;\n this.sizeName = f.sizeName;\n }\n\n get fileSize(): number {\n try {\n if (this.size != null) {\n return parseInt(this.size, null);\n }\n } catch {\n // Invalid file size.\n }\n return 0;\n }\n}\n","import { View } from './view';\n\nimport { SendText } from '../domain/sendText';\n\nexport class SendTextView implements View {\n text: string = null;\n hidden: boolean;\n\n constructor(t?: SendText) {\n if (!t) {\n return;\n }\n\n this.hidden = t.hidden;\n }\n\n get maskedText(): string {\n return this.text != null ? '••••••••' : null;\n }\n}\n","import {\n Component,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { Policy } from 'jslib-common/models/domain/policy';\n\nimport { OrganizationUserResetPasswordEnrollmentRequest } from 'jslib-common/models/request/organizationUserResetPasswordEnrollmentRequest';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\n@Component({\n selector: 'app-organizations',\n templateUrl: 'organizations.component.html',\n})\nexport class OrganizationsComponent implements OnInit {\n @Input() vault = false;\n\n organizations: Organization[];\n policies: Policy[];\n loaded: boolean = false;\n actionPromise: Promise;\n\n constructor(private userService: UserService, private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService, private apiService: ApiService,\n private toasterService: ToasterService, private syncService: SyncService,\n private cryptoService: CryptoService, private policyService: PolicyService,\n private logService: LogService) { }\n\n async ngOnInit() {\n if (!this.vault) {\n await this.syncService.fullSync(true);\n await this.load();\n }\n }\n\n async load() {\n const orgs = await this.userService.getAllOrganizations();\n orgs.sort(Utils.getSortFunction(this.i18nService, 'name'));\n this.organizations = orgs;\n this.policies = await this.policyService.getAll(PolicyType.ResetPassword);\n this.loaded = true;\n }\n\n allowEnrollmentChanges(org: Organization): boolean {\n if (org.usePolicies && org.useResetPassword && org.hasPublicAndPrivateKeys) {\n const policy = this.policies.find(p => p.organizationId === org.id);\n if (policy != null && policy.enabled) {\n return org.resetPasswordEnrolled && policy.data.autoEnrollEnabled ? false : true;\n }\n }\n\n return false;\n }\n\n showEnrolledStatus(org: Organization): boolean {\n return org.useResetPassword && org.resetPasswordEnrolled && this.policies.some(p => p.organizationId === org.id && p.enabled);\n }\n\n async unlinkSso(org: Organization) {\n const confirmed = await this.platformUtilsService.showDialog(\n 'Are you sure you want to unlink SSO for this organization?', org.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.apiService.deleteSsoUser(org.id).then(() => {\n return this.syncService.fullSync(true);\n });\n await this.actionPromise;\n this.toasterService.popAsync('success', null, 'Unlinked SSO');\n await this.load();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async leave(org: Organization) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('leaveOrganizationConfirmation'), org.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.apiService.postLeaveOrganization(org.id).then(() => {\n return this.syncService.fullSync(true);\n });\n await this.actionPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('leftOrganization'));\n await this.load();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async toggleResetPasswordEnrollment(org: Organization) {\n // Set variables\n let keyString: string = null;\n let toastStringRef = 'withdrawPasswordResetSuccess';\n\n // Enrolling\n if (!org.resetPasswordEnrolled) {\n // Alert user about enrollment\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('resetPasswordEnrollmentWarning'), null,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n\n // Retrieve Public Key\n this.actionPromise = this.apiService.getOrganizationKeys(org.id)\n .then(async response => {\n if (response == null) {\n throw new Error(this.i18nService.t('resetPasswordOrgKeysError'));\n }\n\n const publicKey = Utils.fromB64ToArray(response.publicKey);\n\n // RSA Encrypt user's encKey.key with organization public key\n const encKey = await this.cryptoService.getEncKey();\n const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);\n keyString = encryptedKey.encryptedString;\n toastStringRef = 'enrollPasswordResetSuccess';\n\n // Create request and execute enrollment\n const request = new OrganizationUserResetPasswordEnrollmentRequest();\n request.resetPasswordKey = keyString;\n return this.apiService.putOrganizationUserResetPasswordEnrollment(org.id, org.userId, request);\n })\n .then(() => {\n return this.syncService.fullSync(true);\n });\n } else {\n // Withdrawal\n const request = new OrganizationUserResetPasswordEnrollmentRequest();\n request.resetPasswordKey = keyString;\n this.actionPromise = this.apiService.putOrganizationUserResetPasswordEnrollment(org.id, org.userId, request)\n .then(() => {\n return this.syncService.fullSync(true);\n });\n }\n\n try {\n await this.actionPromise;\n this.platformUtilsService.showToast('success', null, this.i18nService.t(toastStringRef));\n await this.load();\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","

{{'loading' | i18n}}

{{'noOrganizationsList' | i18n}}

{{'newOrganization' | i18n}}

{{'organizations' | i18n}} {{'loading' | i18n}}

{{'newOrganization' | i18n}}
{{'loading' | i18n}}

{{'noOrganizationsList' | i18n}}

{{'newOrganization' | i18n}}
{{o.name}} {{'organizationIsDisabled' | i18n}} {{'enrolledPasswordReset' | i18n}}
","import { AttachmentResponse } from './attachmentResponse';\nimport { BaseResponse } from './baseResponse';\nimport { PasswordHistoryResponse } from './passwordHistoryResponse';\n\nimport { CipherRepromptType } from '../../enums/cipherRepromptType';\nimport { CardApi } from '../api/cardApi';\nimport { FieldApi } from '../api/fieldApi';\nimport { IdentityApi } from '../api/identityApi';\nimport { LoginApi } from '../api/loginApi';\nimport { SecureNoteApi } from '../api/secureNoteApi';\n\nexport class CipherResponse extends BaseResponse {\n id: string;\n organizationId: string;\n folderId: string;\n type: number;\n name: string;\n notes: string;\n fields: FieldApi[];\n login: LoginApi;\n card: CardApi;\n identity: IdentityApi;\n secureNote: SecureNoteApi;\n favorite: boolean;\n edit: boolean;\n viewPassword: boolean;\n organizationUseTotp: boolean;\n revisionDate: string;\n attachments: AttachmentResponse[];\n passwordHistory: PasswordHistoryResponse[];\n collectionIds: string[];\n deletedDate: string;\n reprompt: CipherRepromptType;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.folderId = this.getResponseProperty('FolderId') || null;\n this.type = this.getResponseProperty('Type');\n this.name = this.getResponseProperty('Name');\n this.notes = this.getResponseProperty('Notes');\n this.favorite = this.getResponseProperty('Favorite') || false;\n this.edit = !!this.getResponseProperty('Edit');\n if (this.getResponseProperty('ViewPassword') == null) {\n this.viewPassword = true;\n } else {\n this.viewPassword = this.getResponseProperty('ViewPassword');\n }\n this.organizationUseTotp = this.getResponseProperty('OrganizationUseTotp');\n this.revisionDate = this.getResponseProperty('RevisionDate');\n this.collectionIds = this.getResponseProperty('CollectionIds');\n this.deletedDate = this.getResponseProperty('DeletedDate');\n\n const login = this.getResponseProperty('Login');\n if (login != null) {\n this.login = new LoginApi(login);\n }\n\n const card = this.getResponseProperty('Card');\n if (card != null) {\n this.card = new CardApi(card);\n }\n\n const identity = this.getResponseProperty('Identity');\n if (identity != null) {\n this.identity = new IdentityApi(identity);\n }\n\n const secureNote = this.getResponseProperty('SecureNote');\n if (secureNote != null) {\n this.secureNote = new SecureNoteApi(secureNote);\n }\n\n const fields = this.getResponseProperty('Fields');\n if (fields != null) {\n this.fields = fields.map((f: any) => new FieldApi(f));\n }\n\n const attachments = this.getResponseProperty('Attachments');\n if (attachments != null) {\n this.attachments = attachments.map((a: any) => new AttachmentResponse(a));\n }\n\n const passwordHistory = this.getResponseProperty('PasswordHistory');\n if (passwordHistory != null) {\n this.passwordHistory = passwordHistory.map((h: any) => new PasswordHistoryResponse(h));\n }\n\n this.reprompt = this.getResponseProperty('Reprompt') || CipherRepromptType.None;\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class SelectionReadOnlyResponse extends BaseResponse {\n id: string;\n readOnly: boolean;\n hidePasswords: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.readOnly = this.getResponseProperty('ReadOnly');\n this.hidePasswords = this.getResponseProperty('HidePasswords');\n }\n}\n","export abstract class NotificationsService {\n init: () => Promise;\n updateConnection: (sync?: boolean) => Promise;\n reconnectFromActivity: () => Promise;\n disconnectFromInactivity: () => Promise;\n}\n","export abstract class SettingsService {\n clearCache: () => void;\n getEquivalentDomains: () => Promise;\n setEquivalentDomains: (equivalentDomains: string[][]) => Promise;\n clear: (userId: string) => Promise;\n}\n","export enum EncryptionType {\n AesCbc256_B64 = 0,\n AesCbc128_HmacSha256_B64 = 1,\n AesCbc256_HmacSha256_B64 = 2,\n Rsa2048_OaepSha256_B64 = 3,\n Rsa2048_OaepSha1_B64 = 4,\n Rsa2048_OaepSha256_HmacSha256_B64 = 5,\n Rsa2048_OaepSha1_HmacSha256_B64 = 6,\n}\n","import { PolicyData } from '../data/policyData';\n\nimport Domain from './domainBase';\n\nimport { PolicyType } from '../../enums/policyType';\n\nexport class Policy extends Domain {\n id: string;\n organizationId: string;\n type: PolicyType;\n data: any;\n enabled: boolean;\n\n constructor(obj?: PolicyData) {\n super();\n if (obj == null) {\n return;\n }\n\n this.id = obj.id;\n this.organizationId = obj.organizationId;\n this.type = obj.type;\n this.data = obj.data;\n this.enabled = obj.enabled;\n }\n}\n","import { HashPurpose } from '../enums/hashPurpose';\nimport { KdfType } from '../enums/kdfType';\nimport { TwoFactorProviderType } from '../enums/twoFactorProviderType';\n\nimport { AuthResult } from '../models/domain/authResult';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { SetKeyConnectorKeyRequest } from '../models/request/account/setKeyConnectorKeyRequest';\nimport { DeviceRequest } from '../models/request/deviceRequest';\nimport { KeyConnectorUserKeyRequest } from '../models/request/keyConnectorUserKeyRequest';\nimport { KeysRequest } from '../models/request/keysRequest';\nimport { PreloginRequest } from '../models/request/preloginRequest';\nimport { TokenRequest } from '../models/request/tokenRequest';\n\nimport { IdentityTokenResponse } from '../models/response/identityTokenResponse';\nimport { IdentityTwoFactorResponse } from '../models/response/identityTwoFactorResponse';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { AppIdService } from '../abstractions/appId.service';\nimport { AuthService as AuthServiceAbstraction } from '../abstractions/auth.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { CryptoFunctionService } from '../abstractions/cryptoFunction.service';\nimport { EnvironmentService } from '../abstractions/environment.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport { KeyConnectorService } from '../abstractions/keyConnector.service';\nimport { LogService } from '../abstractions/log.service';\nimport { MessagingService } from '../abstractions/messaging.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\nimport { TokenService } from '../abstractions/token.service';\nimport { UserService } from '../abstractions/user.service';\nimport { VaultTimeoutService } from '../abstractions/vaultTimeout.service';\n\nimport { Utils } from '../misc/utils';\n\nexport const TwoFactorProviders = {\n [TwoFactorProviderType.Authenticator]: {\n type: TwoFactorProviderType.Authenticator,\n name: null as string,\n description: null as string,\n priority: 1,\n sort: 1,\n premium: false,\n },\n [TwoFactorProviderType.Yubikey]: {\n type: TwoFactorProviderType.Yubikey,\n name: null as string,\n description: null as string,\n priority: 3,\n sort: 2,\n premium: true,\n },\n [TwoFactorProviderType.Duo]: {\n type: TwoFactorProviderType.Duo,\n name: 'Duo',\n description: null as string,\n priority: 2,\n sort: 3,\n premium: true,\n },\n [TwoFactorProviderType.OrganizationDuo]: {\n type: TwoFactorProviderType.OrganizationDuo,\n name: 'Duo (Organization)',\n description: null as string,\n priority: 10,\n sort: 4,\n premium: false,\n },\n [TwoFactorProviderType.Email]: {\n type: TwoFactorProviderType.Email,\n name: null as string,\n description: null as string,\n priority: 0,\n sort: 6,\n premium: false,\n },\n [TwoFactorProviderType.WebAuthn]: {\n type: TwoFactorProviderType.WebAuthn,\n name: null as string,\n description: null as string,\n priority: 4,\n sort: 5,\n premium: true,\n },\n};\n\nexport class AuthService implements AuthServiceAbstraction {\n email: string;\n masterPasswordHash: string;\n localMasterPasswordHash: string;\n code: string;\n codeVerifier: string;\n ssoRedirectUrl: string;\n clientId: string;\n clientSecret: string;\n twoFactorProvidersData: Map;\n selectedTwoFactorProviderType: TwoFactorProviderType = null;\n captchaToken: string;\n\n private key: SymmetricCryptoKey;\n\n constructor(private cryptoService: CryptoService, protected apiService: ApiService,\n private userService: UserService, protected tokenService: TokenService,\n protected appIdService: AppIdService, private i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService, private messagingService: MessagingService,\n private vaultTimeoutService: VaultTimeoutService, private logService: LogService,\n private cryptoFunctionService: CryptoFunctionService, private environmentService: EnvironmentService,\n private keyConnectorService: KeyConnectorService, private setCryptoKeys = true) {\n }\n\n init() {\n TwoFactorProviders[TwoFactorProviderType.Email].name = this.i18nService.t('emailTitle');\n TwoFactorProviders[TwoFactorProviderType.Email].description = this.i18nService.t('emailDesc');\n\n TwoFactorProviders[TwoFactorProviderType.Authenticator].name = this.i18nService.t('authenticatorAppTitle');\n TwoFactorProviders[TwoFactorProviderType.Authenticator].description =\n this.i18nService.t('authenticatorAppDesc');\n\n TwoFactorProviders[TwoFactorProviderType.Duo].description = this.i18nService.t('duoDesc');\n\n TwoFactorProviders[TwoFactorProviderType.OrganizationDuo].name =\n 'Duo (' + this.i18nService.t('organization') + ')';\n TwoFactorProviders[TwoFactorProviderType.OrganizationDuo].description =\n this.i18nService.t('duoOrganizationDesc');\n\n TwoFactorProviders[TwoFactorProviderType.WebAuthn].name = this.i18nService.t('webAuthnTitle');\n TwoFactorProviders[TwoFactorProviderType.WebAuthn].description = this.i18nService.t('webAuthnDesc');\n\n TwoFactorProviders[TwoFactorProviderType.Yubikey].name = this.i18nService.t('yubiKeyTitle');\n TwoFactorProviders[TwoFactorProviderType.Yubikey].description = this.i18nService.t('yubiKeyDesc');\n }\n\n async logIn(email: string, masterPassword: string, captchaToken?: string): Promise {\n this.selectedTwoFactorProviderType = null;\n const key = await this.makePreloginKey(masterPassword, email);\n const hashedPassword = await this.cryptoService.hashPassword(masterPassword, key);\n const localHashedPassword = await this.cryptoService.hashPassword(masterPassword, key,\n HashPurpose.LocalAuthorization);\n return await this.logInHelper(email, hashedPassword, localHashedPassword, null, null, null, null, null,\n key, null, null, null, captchaToken, null);\n }\n\n async logInSso(code: string, codeVerifier: string, redirectUrl: string, orgId: string): Promise {\n this.selectedTwoFactorProviderType = null;\n return await this.logInHelper(null, null, null, code, codeVerifier, redirectUrl, null, null,\n null, null, null, null, null, orgId);\n }\n\n async logInApiKey(clientId: string, clientSecret: string): Promise {\n this.selectedTwoFactorProviderType = null;\n return await this.logInHelper(null, null, null, null, null, null, clientId, clientSecret,\n null, null, null, null, null, null);\n }\n\n async logInTwoFactor(twoFactorProvider: TwoFactorProviderType, twoFactorToken: string,\n remember?: boolean): Promise {\n return await this.logInHelper(this.email, this.masterPasswordHash, this.localMasterPasswordHash, this.code,\n this.codeVerifier, this.ssoRedirectUrl, this.clientId, this.clientSecret, this.key, twoFactorProvider,\n twoFactorToken, remember, this.captchaToken, null);\n }\n\n async logInComplete(email: string, masterPassword: string, twoFactorProvider: TwoFactorProviderType,\n twoFactorToken: string, remember?: boolean, captchaToken?: string): Promise {\n this.selectedTwoFactorProviderType = null;\n const key = await this.makePreloginKey(masterPassword, email);\n const hashedPassword = await this.cryptoService.hashPassword(masterPassword, key);\n const localHashedPassword = await this.cryptoService.hashPassword(masterPassword, key,\n HashPurpose.LocalAuthorization);\n return await this.logInHelper(email, hashedPassword, localHashedPassword, null, null, null, null, null, key,\n twoFactorProvider, twoFactorToken, remember, captchaToken, null);\n }\n\n async logInSsoComplete(code: string, codeVerifier: string, redirectUrl: string,\n twoFactorProvider: TwoFactorProviderType, twoFactorToken: string, remember?: boolean): Promise {\n this.selectedTwoFactorProviderType = null;\n return await this.logInHelper(null, null, null, code, codeVerifier, redirectUrl, null,\n null, null, twoFactorProvider, twoFactorToken, remember, null, null);\n }\n\n async logInApiKeyComplete(clientId: string, clientSecret: string, twoFactorProvider: TwoFactorProviderType,\n twoFactorToken: string, remember?: boolean): Promise {\n this.selectedTwoFactorProviderType = null;\n return await this.logInHelper(null, null, null, null, null, null, clientId, clientSecret, null,\n twoFactorProvider, twoFactorToken, remember, null, null);\n }\n\n logOut(callback: Function) {\n callback();\n this.messagingService.send('loggedOut');\n }\n\n getSupportedTwoFactorProviders(win: Window): any[] {\n const providers: any[] = [];\n if (this.twoFactorProvidersData == null) {\n return providers;\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.OrganizationDuo) &&\n this.platformUtilsService.supportsDuo()) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.OrganizationDuo]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.Authenticator)) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.Authenticator]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.Yubikey)) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.Yubikey]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.Duo) && this.platformUtilsService.supportsDuo()) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.Duo]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.WebAuthn) && this.platformUtilsService.supportsWebAuthn(win)) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.WebAuthn]);\n }\n\n if (this.twoFactorProvidersData.has(TwoFactorProviderType.Email)) {\n providers.push(TwoFactorProviders[TwoFactorProviderType.Email]);\n }\n\n return providers;\n }\n\n getDefaultTwoFactorProvider(webAuthnSupported: boolean): TwoFactorProviderType {\n if (this.twoFactorProvidersData == null) {\n return null;\n }\n\n if (this.selectedTwoFactorProviderType != null &&\n this.twoFactorProvidersData.has(this.selectedTwoFactorProviderType)) {\n return this.selectedTwoFactorProviderType;\n }\n\n let providerType: TwoFactorProviderType = null;\n let providerPriority = -1;\n this.twoFactorProvidersData.forEach((value, type) => {\n const provider = (TwoFactorProviders as any)[type];\n if (provider != null && provider.priority > providerPriority) {\n if (type === TwoFactorProviderType.WebAuthn && !webAuthnSupported) {\n return;\n }\n\n providerType = type;\n providerPriority = provider.priority;\n }\n });\n\n return providerType;\n }\n\n async makePreloginKey(masterPassword: string, email: string): Promise {\n email = email.trim().toLowerCase();\n let kdf: KdfType = null;\n let kdfIterations: number = null;\n try {\n const preloginResponse = await this.apiService.postPrelogin(new PreloginRequest(email));\n if (preloginResponse != null) {\n kdf = preloginResponse.kdf;\n kdfIterations = preloginResponse.kdfIterations;\n }\n } catch (e) {\n if (e == null || e.statusCode !== 404) {\n throw e;\n }\n }\n return this.cryptoService.makeKey(masterPassword, email, kdf, kdfIterations);\n }\n\n authingWithApiKey(): boolean {\n return this.clientId != null && this.clientSecret != null;\n }\n\n authingWithSso(): boolean {\n return this.code != null && this.codeVerifier != null && this.ssoRedirectUrl != null;\n }\n\n authingWithPassword(): boolean {\n return this.email != null && this.masterPasswordHash != null;\n }\n\n private async logInHelper(email: string, hashedPassword: string, localHashedPassword: string, code: string,\n codeVerifier: string, redirectUrl: string, clientId: string, clientSecret: string, key: SymmetricCryptoKey,\n twoFactorProvider?: TwoFactorProviderType, twoFactorToken?: string, remember?: boolean, captchaToken?: string,\n orgId?: string): Promise {\n const storedTwoFactorToken = await this.tokenService.getTwoFactorToken(email);\n const appId = await this.appIdService.getAppId();\n const deviceRequest = new DeviceRequest(appId, this.platformUtilsService);\n\n let emailPassword: string[] = [];\n let codeCodeVerifier: string[] = [];\n let clientIdClientSecret: [string, string] = [null, null];\n\n if (email != null && hashedPassword != null) {\n emailPassword = [email, hashedPassword];\n } else {\n emailPassword = null;\n }\n if (code != null && codeVerifier != null && redirectUrl != null) {\n codeCodeVerifier = [code, codeVerifier, redirectUrl];\n } else {\n codeCodeVerifier = null;\n }\n if (clientId != null && clientSecret != null) {\n clientIdClientSecret = [clientId, clientSecret];\n } else {\n clientIdClientSecret = null;\n }\n\n let request: TokenRequest;\n if (twoFactorToken != null && twoFactorProvider != null) {\n request = new TokenRequest(emailPassword, codeCodeVerifier, clientIdClientSecret, twoFactorProvider,\n twoFactorToken, remember, captchaToken, deviceRequest);\n } else if (storedTwoFactorToken != null) {\n request = new TokenRequest(emailPassword, codeCodeVerifier, clientIdClientSecret,\n TwoFactorProviderType.Remember, storedTwoFactorToken, false, captchaToken, deviceRequest);\n } else {\n request = new TokenRequest(emailPassword, codeCodeVerifier, clientIdClientSecret, null,\n null, false, captchaToken, deviceRequest);\n }\n\n const response = await this.apiService.postIdentityToken(request);\n\n this.clearState();\n const result = new AuthResult();\n result.captchaSiteKey = (response as any).siteKey;\n if (!!result.captchaSiteKey) {\n return result;\n }\n result.twoFactor = !!(response as any).twoFactorProviders2;\n\n if (result.twoFactor) {\n // two factor required\n this.email = email;\n this.masterPasswordHash = hashedPassword;\n this.localMasterPasswordHash = localHashedPassword;\n this.code = code;\n this.codeVerifier = codeVerifier;\n this.ssoRedirectUrl = redirectUrl;\n this.clientId = clientId;\n this.clientSecret = clientSecret;\n this.key = this.setCryptoKeys ? key : null;\n const twoFactorResponse = response as IdentityTwoFactorResponse;\n this.twoFactorProvidersData = twoFactorResponse.twoFactorProviders2;\n result.twoFactorProviders = twoFactorResponse.twoFactorProviders2;\n this.captchaToken = twoFactorResponse.captchaToken;\n return result;\n }\n\n const tokenResponse = response as IdentityTokenResponse;\n result.resetMasterPassword = tokenResponse.resetMasterPassword;\n result.forcePasswordReset = tokenResponse.forcePasswordReset;\n if (tokenResponse.twoFactorToken != null) {\n await this.tokenService.setTwoFactorToken(tokenResponse.twoFactorToken, email);\n }\n\n await this.tokenService.setTokens(tokenResponse.accessToken, tokenResponse.refreshToken, clientIdClientSecret);\n await this.userService.setInformation(this.tokenService.getUserId(), this.tokenService.getEmail(),\n tokenResponse.kdf, tokenResponse.kdfIterations);\n if (this.setCryptoKeys) {\n if (key != null) {\n await this.cryptoService.setKey(key);\n }\n if (localHashedPassword != null) {\n await this.cryptoService.setKeyHash(localHashedPassword);\n }\n\n // Skip this step during SSO new user flow. No key is returned from server.\n if (code == null || tokenResponse.key != null) {\n\n if (tokenResponse.keyConnectorUrl != null) {\n await this.keyConnectorService.getAndSetKey(tokenResponse.keyConnectorUrl);\n } else if (tokenResponse.apiUseKeyConnector) {\n const keyConnectorUrl = this.environmentService.getKeyConnectorUrl();\n await this.keyConnectorService.getAndSetKey(keyConnectorUrl);\n }\n\n await this.cryptoService.setEncKey(tokenResponse.key);\n\n // User doesn't have a key pair yet (old account), let's generate one for them\n if (tokenResponse.privateKey == null) {\n try {\n const keyPair = await this.cryptoService.makeKeyPair();\n await this.apiService.postAccountKeys(new KeysRequest(keyPair[0], keyPair[1].encryptedString));\n tokenResponse.privateKey = keyPair[1].encryptedString;\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n await this.cryptoService.setEncPrivateKey(tokenResponse.privateKey);\n } else if (tokenResponse.keyConnectorUrl != null) {\n const password = await this.cryptoFunctionService.randomBytes(64);\n\n const k = await this.cryptoService.makeKey(Utils.fromBufferToB64(password), this.tokenService.getEmail(), tokenResponse.kdf, tokenResponse.kdfIterations);\n const keyConnectorRequest = new KeyConnectorUserKeyRequest(k.encKeyB64);\n await this.cryptoService.setKey(k);\n\n const encKey = await this.cryptoService.makeEncKey(k);\n await this.cryptoService.setEncKey(encKey[1].encryptedString);\n\n const [pubKey, privKey] = await this.cryptoService.makeKeyPair();\n\n try {\n await this.apiService.postUserKeyToKeyConnector(tokenResponse.keyConnectorUrl, keyConnectorRequest);\n } catch (e) {\n throw new Error('Unable to reach key connector');\n }\n\n const keys = new KeysRequest(pubKey, privKey.encryptedString);\n const setPasswordRequest = new SetKeyConnectorKeyRequest(\n encKey[1].encryptedString, tokenResponse.kdf, tokenResponse.kdfIterations, orgId, keys\n );\n await this.apiService.postSetKeyConnectorKey(setPasswordRequest);\n }\n }\n\n if (this.vaultTimeoutService != null) {\n this.vaultTimeoutService.biometricLocked = false;\n }\n this.messagingService.send('loggedIn');\n return result;\n }\n\n private clearState(): void {\n this.key = null;\n this.email = null;\n this.masterPasswordHash = null;\n this.localMasterPasswordHash = null;\n this.code = null;\n this.codeVerifier = null;\n this.ssoRedirectUrl = null;\n this.clientId = null;\n this.clientSecret = null;\n this.twoFactorProvidersData = null;\n this.selectedTwoFactorProviderType = null;\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\n\nimport { OrganizationUserStatusType } from 'jslib-common/enums/organizationUserStatusType';\nimport { OrganizationUserType } from 'jslib-common/enums/organizationUserType';\nimport { SelectionReadOnlyRequest } from 'jslib-common/models/request/selectionReadOnlyRequest';\nimport { OrganizationUserUserDetailsResponse } from 'jslib-common/models/response/organizationUserResponse';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Component({\n selector: 'app-entity-users',\n templateUrl: 'entity-users.component.html',\n})\nexport class EntityUsersComponent implements OnInit {\n @Input() entity: 'group' | 'collection';\n @Input() entityId: string;\n @Input() entityName: string;\n @Input() organizationId: string;\n @Output() onEditedUsers = new EventEmitter();\n\n organizationUserType = OrganizationUserType;\n organizationUserStatusType = OrganizationUserStatusType;\n\n showSelected = false;\n loading = true;\n formPromise: Promise;\n selectedCount = 0;\n searchText: string;\n\n private allUsers: OrganizationUserUserDetailsResponse[] = [];\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private logService: LogService) { }\n\n async ngOnInit() {\n await this.loadUsers();\n this.loading = false;\n }\n\n get users() {\n if (this.showSelected) {\n return this.allUsers.filter(u => (u as any).checked);\n } else {\n return this.allUsers;\n }\n }\n\n async loadUsers() {\n const users = await this.apiService.getOrganizationUsers(this.organizationId);\n this.allUsers = users.data.map(r => r).sort(Utils.getSortFunction(this.i18nService, 'email'));\n if (this.entity === 'group') {\n const response = await this.apiService.getGroupUsers(this.organizationId, this.entityId);\n if (response != null && users.data.length > 0) {\n response.forEach(s => {\n const user = users.data.filter(u => u.id === s);\n if (user != null && user.length > 0) {\n (user[0] as any).checked = true;\n }\n });\n }\n } else if (this.entity === 'collection') {\n const response = await this.apiService.getCollectionUsers(this.organizationId, this.entityId);\n if (response != null && users.data.length > 0) {\n response.forEach(s => {\n const user = users.data.filter(u => !u.accessAll && u.id === s.id);\n if (user != null && user.length > 0) {\n (user[0] as any).checked = true;\n (user[0] as any).readOnly = s.readOnly;\n (user[0] as any).hidePasswords = s.hidePasswords;\n }\n });\n }\n }\n\n this.allUsers.forEach(u => {\n if (this.entity === 'collection' && u.accessAll) {\n (u as any).checked = true;\n }\n if ((u as any).checked) {\n this.selectedCount++;\n }\n });\n }\n\n check(u: OrganizationUserUserDetailsResponse) {\n if (this.entity === 'collection' && u.accessAll) {\n return;\n }\n (u as any).checked = !(u as any).checked;\n this.selectedChanged(u);\n }\n\n selectedChanged(u: OrganizationUserUserDetailsResponse) {\n if ((u as any).checked) {\n this.selectedCount++;\n } else {\n if (this.entity === 'collection') {\n (u as any).readOnly = false;\n (u as any).hidePasswords = false;\n }\n this.selectedCount--;\n }\n }\n\n filterSelected(showSelected: boolean) {\n this.showSelected = showSelected;\n }\n\n async submit() {\n try {\n if (this.entity === 'group') {\n const selections = this.users.filter(u => (u as any).checked).map(u => u.id);\n this.formPromise = this.apiService.putGroupUsers(this.organizationId, this.entityId, selections);\n } else {\n const selections = this.users.filter(u => (u as any).checked && !u.accessAll)\n .map(u => new SelectionReadOnlyRequest(u.id, !!(u as any).readOnly, !!(u as any).hidePasswords));\n this.formPromise = this.apiService.putCollectionUsers(this.organizationId, this.entityId, selections);\n }\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('updatedUsers'));\n this.onEditedUsers.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","

{{'userAccess' | i18n}} {{entityName}}

{{'loading' | i18n}}

{{'noUsersInList' | i18n}}
    {{'name' | i18n}}   {{'userType' | i18n}} {{'hidePasswords' | i18n}} {{'readOnly' | i18n}}
{{u.email}} {{'invited' | i18n}} {{'accepted' | i18n}} {{u.name}} {{'userAccessAllItems' | i18n}} {{'owner' | i18n}} {{'admin' | i18n}} {{'manager' | i18n}} {{'user' | i18n}} {{'custom' | i18n}}
","export enum DeviceType {\n Android = 0,\n iOS = 1,\n ChromeExtension = 2,\n FirefoxExtension = 3,\n OperaExtension = 4,\n EdgeExtension = 5,\n WindowsDesktop = 6,\n MacOsDesktop = 7,\n LinuxDesktop = 8,\n ChromeBrowser = 9,\n FirefoxBrowser = 10,\n OperaBrowser = 11,\n EdgeBrowser = 12,\n IEBrowser = 13,\n UnknownBrowser = 14,\n AndroidAmazon = 15,\n UWP = 16,\n SafariBrowser = 17,\n VivaldiBrowser = 18,\n VivaldiExtension = 19,\n SafariExtension = 20,\n}\n","import { KeysRequest } from './keysRequest';\n\nexport class OrganizationKeysRequest extends KeysRequest {\n constructor(publicKey: string, encryptedPrivateKey: string) {\n super(publicKey, encryptedPrivateKey);\n }\n}\n","export class OrganizationUserBulkRequest {\n ids: string[];\n\n constructor(ids: string[]) {\n this.ids = ids == null ? [] : ids;\n }\n}\n","import {\n Component,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\n\nimport { EventService } from '../../services/event.service';\n\nimport { UserNamePipe } from 'jslib-angular/pipes/user-name.pipe';\n\nimport { EventResponse } from 'jslib-common/models/response/eventResponse';\nimport { ListResponse } from 'jslib-common/models/response/listResponse';\n\n@Component({\n selector: 'app-entity-events',\n templateUrl: 'entity-events.component.html',\n})\nexport class EntityEventsComponent implements OnInit {\n @Input() name: string;\n @Input() entity: 'user' | 'cipher';\n @Input() entityId: string;\n @Input() organizationId: string;\n @Input() providerId: string;\n @Input() showUser = false;\n\n loading = true;\n loaded = false;\n events: any[];\n start: string;\n end: string;\n continuationToken: string;\n refreshPromise: Promise;\n morePromise: Promise;\n\n private orgUsersUserIdMap = new Map();\n private orgUsersIdMap = new Map();\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private eventService: EventService, private toasterService: ToasterService,\n private userNamePipe: UserNamePipe, private logService: LogService) { }\n\n async ngOnInit() {\n const defaultDates = this.eventService.getDefaultDateFilters();\n this.start = defaultDates[0];\n this.end = defaultDates[1];\n await this.load();\n }\n\n async load() {\n if (this.showUser) {\n const response = await this.apiService.getOrganizationUsers(this.organizationId);\n response.data.forEach(u => {\n const name = this.userNamePipe.transform(u);\n this.orgUsersIdMap.set(u.id, { name: name, email: u.email });\n this.orgUsersUserIdMap.set(u.userId, { name: name, email: u.email });\n });\n }\n await this.loadEvents(true);\n this.loaded = true;\n }\n\n async loadEvents(clearExisting: boolean) {\n if (this.refreshPromise != null || this.morePromise != null) {\n return;\n }\n\n let dates: string[] = null;\n try {\n dates = this.eventService.formatDateFilters(this.start, this.end);\n } catch (e) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidDateRange'));\n return;\n }\n\n this.loading = true;\n let response: ListResponse;\n try {\n let promise: Promise;\n if (this.entity === 'user' && this.providerId) {\n promise = this.apiService.getEventsProviderUser(this.providerId, this.entityId,\n dates[0], dates[1], clearExisting ? null : this.continuationToken);\n } else if (this.entity === 'user') {\n promise = this.apiService.getEventsOrganizationUser(this.organizationId, this.entityId,\n dates[0], dates[1], clearExisting ? null : this.continuationToken);\n } else {\n promise = this.apiService.getEventsCipher(this.entityId,\n dates[0], dates[1], clearExisting ? null : this.continuationToken);\n }\n if (clearExisting) {\n this.refreshPromise = promise;\n } else {\n this.morePromise = promise;\n }\n response = await promise;\n } catch (e) {\n this.logService.error(e);\n }\n\n this.continuationToken = response.continuationToken;\n const events = await Promise.all(response.data.map(async r => {\n const userId = r.actingUserId == null ? r.userId : r.actingUserId;\n const eventInfo = await this.eventService.getEventInfo(r);\n const user = this.showUser && userId != null && this.orgUsersUserIdMap.has(userId) ?\n this.orgUsersUserIdMap.get(userId) : null;\n return {\n message: eventInfo.message,\n appIcon: eventInfo.appIcon,\n appName: eventInfo.appName,\n userId: userId,\n userName: user != null ? user.name : this.showUser ? this.i18nService.t('unknown') : null,\n userEmail: user != null ? user.email : this.showUser ? '' : null,\n date: r.date,\n ip: r.ipAddress,\n type: r.type,\n };\n }));\n\n if (!clearExisting && this.events != null && this.events.length > 0) {\n this.events = this.events.concat(events);\n } else {\n this.events = events;\n }\n\n this.loading = false;\n this.morePromise = null;\n this.refreshPromise = null;\n }\n}\n","

{{'eventLogs' | i18n}} {{name}}

{{'loading' | i18n}}
-

{{'noEventsInList' | i18n}}
{{'timestamp' | i18n}} {{'device' | i18n}} {{'user' | i18n}} {{'event' | i18n}}
{{e.date | date:'medium'}} {{e.appName}}, {{e.ip}} {{e.userName}}
","import { Component } from '@angular/core';\n\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { UserVerificationService } from 'jslib-common/abstractions/userVerification.service';\n\nimport { SecretVerificationRequest } from 'jslib-common/models/request/secretVerificationRequest';\n\nimport { ApiKeyResponse } from 'jslib-common/models/response/apiKeyResponse';\n\nimport { Verification } from 'jslib-common/types/verification';\n\n@Component({\n selector: 'app-api-key',\n templateUrl: 'api-key.component.html',\n})\nexport class ApiKeyComponent {\n keyType: string;\n isRotation: boolean;\n postKey: (entityId: string, request: SecretVerificationRequest) => Promise;\n entityId: string;\n scope: string;\n grantType: string;\n apiKeyTitle: string;\n apiKeyWarning: string;\n apiKeyDescription: string;\n\n masterPassword: Verification;\n formPromise: Promise;\n clientId: string;\n clientSecret: string;\n\n constructor(private userVerificationService: UserVerificationService, private logService: LogService) { }\n\n async submit() {\n try {\n this.formPromise = this.userVerificationService.buildRequest(this.masterPassword)\n .then(request => this.postKey(this.entityId, request));\n const response = await this.formPromise;\n this.clientSecret = response.apiKey;\n this.clientId = `${this.keyType}.${this.entityId}`;\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","

{{apiKeyTitle | i18n}}

{{apiKeyDescription | i18n}}

{{apiKeyWarning | i18n}}

client_id:
{{clientId}}

client_secret:
{{clientSecret}}

scope:
{{scope}}

grant_type:
{{grantType}}

","export enum VerificationType {\n MasterPassword = 0,\n OTP = 1,\n}\n","import {\n Component,\n Input,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { UserVerificationService } from 'jslib-common/abstractions/userVerification.service';\n\nimport { Verification } from 'jslib-common/types/verification';\n\n@Component({\n selector: 'app-purge-vault',\n templateUrl: 'purge-vault.component.html',\n})\nexport class PurgeVaultComponent {\n @Input() organizationId?: string = null;\n\n masterPassword: Verification;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private userVerificationService: UserVerificationService,\n private router: Router, private logService: LogService) { }\n\n async submit() {\n try {\n this.formPromise = this.userVerificationService.buildRequest(this.masterPassword)\n .then(request => this.apiService.postPurgeCiphers(request, this.organizationId));\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('vaultPurged'));\n if (this.organizationId != null) {\n this.router.navigate(['organizations', this.organizationId, 'vault']);\n } else {\n this.router.navigate(['vault']);\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","

{{'purgeVault' | i18n}}

{{(organizationId ? 'purgeOrgVaultDesc' : 'purgeVaultDesc') | i18n}}

{{'purgeVaultWarning' | i18n}}
","import {\n Component,\n EventEmitter,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { Verification } from 'jslib-common/types/verification';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { UserVerificationService } from 'jslib-common/abstractions/userVerification.service';\n\n@Component({\n selector: 'app-delete-organization',\n templateUrl: 'delete-organization.component.html',\n})\nexport class DeleteOrganizationComponent {\n organizationId: string;\n descriptionKey = 'deleteOrganizationDesc';\n @Output() onSuccess: EventEmitter = new EventEmitter();\n\n masterPassword: Verification;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private userVerificationService: UserVerificationService,\n private logService: LogService) { }\n\n async submit() {\n try {\n this.formPromise = this.userVerificationService.buildRequest(this.masterPassword)\n .then(request => this.apiService.deleteOrganization(this.organizationId, request));\n await this.formPromise;\n this.toasterService.popAsync('success', this.i18nService.t('organizationDeleted'),\n this.i18nService.t('organizationDeletedDesc'));\n this.onSuccess.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","

{{'deleteOrganization' | i18n}}

{{descriptionKey | i18n}}

{{'deleteOrganizationWarning' | i18n}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { BillingResponse } from 'jslib-common/models/response/billingResponse';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { PaymentMethodType } from 'jslib-common/enums/paymentMethodType';\nimport { TransactionType } from 'jslib-common/enums/transactionType';\nimport { VerifyBankRequest } from 'jslib-common/models/request/verifyBankRequest';\n\n@Component({\n selector: 'app-user-billing',\n templateUrl: 'user-billing.component.html',\n})\nexport class UserBillingComponent implements OnInit {\n loading = false;\n firstLoaded = false;\n showAdjustPayment = false;\n showAddCredit = false;\n billing: BillingResponse;\n paymentMethodType = PaymentMethodType;\n transactionType = TransactionType;\n organizationId: string;\n verifyAmount1: number;\n verifyAmount2: number;\n\n verifyBankPromise: Promise;\n\n constructor(protected apiService: ApiService, protected i18nService: I18nService,\n protected toasterService: ToasterService, protected platformUtilsService: PlatformUtilsService,\n private logService: LogService) { }\n\n async ngOnInit() {\n await this.load();\n this.firstLoaded = true;\n }\n\n async load() {\n if (this.loading) {\n return;\n }\n this.loading = true;\n if (this.organizationId != null) {\n this.billing = await this.apiService.getOrganizationBilling(this.organizationId);\n } else {\n this.billing = await this.apiService.getUserBilling();\n }\n this.loading = false;\n }\n\n async verifyBank() {\n if (this.loading) {\n return;\n }\n\n try {\n const request = new VerifyBankRequest();\n request.amount1 = this.verifyAmount1;\n request.amount2 = this.verifyAmount2;\n this.verifyBankPromise = this.apiService.postOrganizationVerifyBank(this.organizationId, request);\n await this.verifyBankPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('verifiedBankAccount'));\n this.load();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n addCredit() {\n if (this.paymentSourceInApp) {\n this.platformUtilsService.showDialog(this.i18nService.t('cannotPerformInAppPurchase'),\n this.i18nService.t('addCredit'), null, null, 'warning');\n return;\n }\n this.showAddCredit = true;\n }\n\n closeAddCredit(load: boolean) {\n this.showAddCredit = false;\n if (load) {\n this.load();\n }\n }\n\n changePayment() {\n if (this.paymentSourceInApp) {\n this.platformUtilsService.showDialog(this.i18nService.t('cannotPerformInAppPurchase'),\n this.i18nService.t('changePaymentMethod'), null, null, 'warning');\n return;\n }\n this.showAdjustPayment = true;\n }\n\n closePayment(load: boolean) {\n this.showAdjustPayment = false;\n if (load) {\n this.load();\n }\n }\n\n get isCreditBalance() {\n return this.billing == null || this.billing.balance <= 0;\n }\n\n get creditOrBalance() {\n return Math.abs(this.billing != null ? this.billing.balance : 0);\n }\n\n get paymentSource() {\n return this.billing != null ? this.billing.paymentSource : null;\n }\n\n get paymentSourceInApp() {\n return this.paymentSource != null &&\n (this.paymentSource.type === PaymentMethodType.AppleInApp ||\n this.paymentSource.type === PaymentMethodType.GoogleInApp);\n }\n\n get invoices() {\n return this.billing != null ? this.billing.invoices : null;\n }\n\n get transactions() {\n return this.billing != null ? this.billing.transactions : null;\n }\n}\n","

{{'billing' | i18n}}

{{'loading' | i18n}}

{{(isCreditBalance ? 'accountCredit' : 'accountBalance') | i18n}}

{{creditOrBalance | currency:'$'}}

{{'creditAppliedDesc' | i18n}}

{{'paymentMethod' | i18n}}

{{'noPaymentMethod' | i18n}}

{{'verifyBankAccountDesc' | i18n}} {{'verifyBankAccountFailureWarning' | i18n}}

$0.
$0.

{{'inAppPurchase' | i18n}} {{paymentSource.description}}

{{'invoices' | i18n}}

{{'noInvoices' | i18n}}

{{i.date | date:'mediumDate'}} {{'invoiceNumber' | i18n : i.number}} {{i.amount | currency:'$'}} {{'paid' | i18n}} {{'unpaid' | i18n}}

{{'transactions' | i18n}}

{{'noTransactions' | i18n}}

{{t.createdDate | date:'mediumDate'}} {{'chargeNoun' | i18n}} {{'refundNoun' | i18n}} {{t.details}} {{t.amount | currency:'$'}}
* {{'chargesStatement' | i18n : 'BITWARDEN'}}
","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { PayPalConfig } from 'jslib-common/abstractions/environment.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { PaymentMethodType } from 'jslib-common/enums/paymentMethodType';\n\nimport { BitPayInvoiceRequest } from 'jslib-common/models/request/bitPayInvoiceRequest';\n\n@Component({\n selector: 'app-add-credit',\n templateUrl: 'add-credit.component.html',\n})\nexport class AddCreditComponent implements OnInit {\n @Input() creditAmount: string;\n @Input() showOptions = true;\n @Input() method = PaymentMethodType.PayPal;\n @Input() organizationId: string;\n @Output() onAdded = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n @ViewChild('ppButtonForm', { read: ElementRef, static: true }) ppButtonFormRef: ElementRef;\n\n paymentMethodType = PaymentMethodType;\n ppButtonFormAction: string;\n ppButtonBusinessId: string;\n ppButtonCustomField: string;\n ppLoading = false;\n subject: string;\n returnUrl: string;\n formPromise: Promise;\n\n private userId: string;\n private name: string;\n private email: string;\n\n constructor(private userService: UserService, private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService, private logService: LogService) {\n const payPalConfig = process.env.PAYPAL_CONFIG as PayPalConfig;\n this.ppButtonFormAction = payPalConfig.buttonAction;\n this.ppButtonBusinessId = payPalConfig.businessId;\n }\n\n async ngOnInit() {\n if (this.organizationId != null) {\n if (this.creditAmount == null) {\n this.creditAmount = '20.00';\n }\n this.ppButtonCustomField = 'organization_id:' + this.organizationId;\n const org = await this.userService.getOrganization(this.organizationId);\n if (org != null) {\n this.subject = org.name;\n this.name = org.name;\n }\n } else {\n if (this.creditAmount == null) {\n this.creditAmount = '10.00';\n }\n this.userId = await this.userService.getUserId();\n this.subject = await this.userService.getEmail();\n this.email = this.subject;\n this.ppButtonCustomField = 'user_id:' + this.userId;\n }\n this.ppButtonCustomField += ',account_credit:1';\n this.returnUrl = window.location.href;\n }\n\n async submit() {\n if (this.creditAmount == null || this.creditAmount === '') {\n return;\n }\n\n if (this.method === PaymentMethodType.PayPal) {\n this.ppButtonFormRef.nativeElement.submit();\n this.ppLoading = true;\n return;\n }\n if (this.method === PaymentMethodType.BitPay) {\n try {\n const req = new BitPayInvoiceRequest();\n req.email = this.email;\n req.name = this.name;\n req.credit = true;\n req.amount = this.creditAmountNumber;\n req.organizationId = this.organizationId;\n req.userId = this.userId;\n req.returnUrl = this.returnUrl;\n this.formPromise = this.apiService.postBitPayInvoice(req);\n const bitPayUrl: string = await this.formPromise;\n this.platformUtilsService.launchUri(bitPayUrl);\n } catch (e) {\n this.logService.error(e);\n }\n return;\n }\n try {\n this.onAdded.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n formatAmount() {\n try {\n if (this.creditAmount != null && this.creditAmount !== '') {\n const floatAmount = Math.abs(parseFloat(this.creditAmount));\n if (floatAmount > 0) {\n this.creditAmount = parseFloat((Math.round(floatAmount * 100) / 100).toString())\n .toFixed(2).toString();\n return;\n }\n }\n } catch (e) {\n this.logService.error(e);\n }\n this.creditAmount = '';\n }\n\n get creditAmountNumber(): number {\n if (this.creditAmount != null && this.creditAmount !== '') {\n try {\n return parseFloat(this.creditAmount);\n } catch (e) {\n this.logService.error(e);\n }\n }\n return null;\n }\n}\n","

{{'addCredit' | i18n}}

$USD
{{'creditDelayed' | i18n}}
","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\n\nimport { PaymentRequest } from 'jslib-common/models/request/paymentRequest';\n\nimport { PaymentMethodType } from 'jslib-common/enums/paymentMethodType';\n\nimport { PaymentComponent } from './payment.component';\nimport { TaxInfoComponent } from './tax-info.component';\n\n@Component({\n selector: 'app-adjust-payment',\n templateUrl: 'adjust-payment.component.html',\n})\nexport class AdjustPaymentComponent {\n @ViewChild(PaymentComponent, { static: true }) paymentComponent: PaymentComponent;\n @ViewChild(TaxInfoComponent, { static: true }) taxInfoComponent: TaxInfoComponent;\n\n @Input() currentType?: PaymentMethodType;\n @Input() organizationId: string;\n @Output() onAdjusted = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n paymentMethodType = PaymentMethodType;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private logService: LogService) { }\n\n async submit() {\n try {\n const request = new PaymentRequest();\n this.formPromise = this.paymentComponent.createPaymentToken().then(result => {\n request.paymentToken = result[0];\n request.paymentMethodType = result[1];\n request.postalCode = this.taxInfoComponent.taxInfo.postalCode;\n request.country = this.taxInfoComponent.taxInfo.country;\n if (this.organizationId == null) {\n return this.apiService.postAccountPayment(request);\n } else {\n request.taxId = this.taxInfoComponent.taxInfo.taxId;\n request.state = this.taxInfoComponent.taxInfo.state;\n request.line1 = this.taxInfoComponent.taxInfo.line1;\n request.line2 = this.taxInfoComponent.taxInfo.line2;\n request.city = this.taxInfoComponent.taxInfo.city;\n request.state = this.taxInfoComponent.taxInfo.state;\n return this.apiService.postOrganizationPayment(this.organizationId, request);\n }\n });\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('updatedPaymentMethod'));\n this.onAdjusted.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n changeCountry() {\n if (this.taxInfoComponent.taxInfo.country === 'US') {\n this.paymentComponent.hideBank = !this.organizationId;\n } else {\n this.paymentComponent.hideBank = true;\n if (this.paymentComponent.method === PaymentMethodType.BankAccount) {\n this.paymentComponent.method = PaymentMethodType.Card;\n this.paymentComponent.changeMethod();\n }\n }\n }\n}\n","

{{(currentType != null ? 'changePaymentMethod' : 'addPaymentMethod') | i18n}}

","import {\n Component,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n} from '@angular/core';\n\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\n\nimport { StorageRequest } from 'jslib-common/models/request/storageRequest';\n\nimport { PaymentResponse } from 'jslib-common/models/response/paymentResponse';\n\nimport { PaymentComponent } from './payment.component';\n\n@Component({\n selector: 'app-adjust-storage',\n templateUrl: 'adjust-storage.component.html',\n})\nexport class AdjustStorageComponent {\n @Input() storageGbPrice = 0;\n @Input() add = true;\n @Input() organizationId: string;\n @Input() interval = 'year';\n @Output() onAdjusted = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n @ViewChild(PaymentComponent, { static: true }) paymentComponent: PaymentComponent;\n\n storageAdjustment = 0;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private router: Router,\n private activatedRoute: ActivatedRoute, private logService: LogService) { }\n\n async submit() {\n try {\n const request = new StorageRequest();\n request.storageGbAdjustment = this.storageAdjustment;\n if (!this.add) {\n request.storageGbAdjustment *= -1;\n }\n\n let paymentFailed = false;\n const action = async () => {\n let response: Promise;\n if (this.organizationId == null) {\n response = this.formPromise = this.apiService.postAccountStorage(request);\n } else {\n response = this.formPromise = this.apiService.postOrganizationStorage(this.organizationId, request);\n }\n const result = await response;\n if (result != null && result.paymentIntentClientSecret != null) {\n try {\n await this.paymentComponent.handleStripeCardPayment(result.paymentIntentClientSecret, null);\n } catch {\n paymentFailed = true;\n }\n }\n };\n this.formPromise = action();\n await this.formPromise;\n this.onAdjusted.emit(this.storageAdjustment);\n if (paymentFailed) {\n this.toasterService.popAsync({\n body: this.i18nService.t('couldNotChargeCardPayInvoice'),\n type: 'warning',\n timeout: 10000,\n });\n this.router.navigate(['../billing'], { relativeTo: this.activatedRoute });\n } else {\n this.toasterService.popAsync('success', null,\n this.i18nService.t('adjustedStorage', request.storageGbAdjustment.toString()));\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n\n get adjustedStorageTotal(): number {\n return this.storageGbPrice * this.storageAdjustment;\n }\n}\n","

{{(add ? 'addStorage' : 'removeStorage') | i18n}}

{{'total' | i18n}}: {{storageAdjustment || 0}} GB × {{storageGbPrice | currency:'$'}} = {{adjustedStorageTotal | currency:'$'}} /{{interval | i18n}}
{{(add ? 'storageAddNote' : 'storageRemoveNote') | i18n}}
","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\n\n@Component({\n selector: 'app-update-license',\n templateUrl: 'update-license.component.html',\n})\nexport class UpdateLicenseComponent {\n @Input() organizationId: string;\n @Output() onUpdated = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private logService: LogService) { }\n\n async submit() {\n const fileEl = document.getElementById('file') as HTMLInputElement;\n const files = fileEl.files;\n if (files == null || files.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n return;\n }\n\n try {\n const fd = new FormData();\n fd.append('license', files[0]);\n\n let updatePromise: Promise = null;\n if (this.organizationId == null) {\n updatePromise = this.apiService.postAccountLicense(fd);\n } else {\n updatePromise = this.apiService.postOrganizationLicenseUpdate(this.organizationId, fd);\n }\n\n this.formPromise = updatePromise.then(() => {\n return this.apiService.refreshIdentityToken();\n });\n\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('updatedLicense'));\n this.onUpdated.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n}\n","
{{'licenseFileDesc' | i18n : (!organizationId ? 'bitwarden_premium_license.json' : 'bitwarden_organization_license.json')}}
","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserVerificationService } from 'jslib-common/abstractions/userVerification.service';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\nimport { UpdateTwoFactorDuoRequest } from 'jslib-common/models/request/updateTwoFactorDuoRequest';\nimport { TwoFactorDuoResponse } from 'jslib-common/models/response/twoFactorDuoResponse';\n\nimport { TwoFactorBaseComponent } from './two-factor-base.component';\n\n@Component({\n selector: 'app-two-factor-duo',\n templateUrl: 'two-factor-duo.component.html',\n})\nexport class TwoFactorDuoComponent extends TwoFactorBaseComponent {\n type = TwoFactorProviderType.Duo;\n ikey: string;\n skey: string;\n host: string;\n formPromise: Promise;\n\n constructor(apiService: ApiService, i18nService: I18nService,\n toasterService: ToasterService, platformUtilsService: PlatformUtilsService,\n logService: LogService, userVerificationService: UserVerificationService) {\n super(apiService, i18nService, toasterService, platformUtilsService, logService, userVerificationService);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n this.processResponse(authResponse.response);\n }\n\n submit() {\n if (this.enabled) {\n return super.disable(this.formPromise);\n } else {\n return this.enable();\n }\n }\n\n protected async enable() {\n const request = await this.buildRequestModel(UpdateTwoFactorDuoRequest);\n request.integrationKey = this.ikey;\n request.secretKey = this.skey;\n request.host = this.host;\n\n return super.enable(async () => {\n if (this.organizationId != null) {\n this.formPromise = this.apiService.putTwoFactorOrganizationDuo(this.organizationId, request);\n } else {\n this.formPromise = this.apiService.putTwoFactorDuo(request);\n }\n const response = await this.formPromise;\n await this.processResponse(response);\n });\n }\n\n private processResponse(response: TwoFactorDuoResponse) {\n this.ikey = response.integrationKey;\n this.skey = response.secretKey;\n this.host = response.host;\n this.enabled = response.enabled;\n }\n}\n","

{{'twoStepLogin' | i18n}} Duo

{{'twoStepLoginProviderEnabled' | i18n}} \"Duo {{'twoFactorDuoIntegrationKey' | i18n}}: {{ikey}}
{{'twoFactorDuoSecretKey' | i18n}}: {{skey}}
{{'twoFactorDuoApiHostname' | i18n}}: {{host}}
\"Duo

{{'twoFactorDuoDesc' | i18n}}

","import {\n Component,\n OnInit,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { TwoFactorProviders } from 'jslib-common/services/auth.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { ModalRef } from 'jslib-angular/components/modal/modal.ref';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\nimport { TwoFactorAuthenticatorComponent } from './two-factor-authenticator.component';\nimport { TwoFactorDuoComponent } from './two-factor-duo.component';\nimport { TwoFactorEmailComponent } from './two-factor-email.component';\nimport { TwoFactorRecoveryComponent } from './two-factor-recovery.component';\nimport { TwoFactorWebAuthnComponent } from './two-factor-webauthn.component';\nimport { TwoFactorYubiKeyComponent } from './two-factor-yubikey.component';\n\n@Component({\n selector: 'app-two-factor-setup',\n templateUrl: 'two-factor-setup.component.html',\n})\nexport class TwoFactorSetupComponent implements OnInit {\n @ViewChild('recoveryTemplate', { read: ViewContainerRef, static: true }) recoveryModalRef: ViewContainerRef;\n @ViewChild('authenticatorTemplate', { read: ViewContainerRef, static: true }) authenticatorModalRef: ViewContainerRef;\n @ViewChild('yubikeyTemplate', { read: ViewContainerRef, static: true }) yubikeyModalRef: ViewContainerRef;\n @ViewChild('duoTemplate', { read: ViewContainerRef, static: true }) duoModalRef: ViewContainerRef;\n @ViewChild('emailTemplate', { read: ViewContainerRef, static: true }) emailModalRef: ViewContainerRef;\n @ViewChild('webAuthnTemplate', { read: ViewContainerRef, static: true }) webAuthnModalRef: ViewContainerRef;\n\n organizationId: string;\n providers: any[] = [];\n canAccessPremium: boolean;\n showPolicyWarning = false;\n loading = true;\n modal: ModalRef;\n\n constructor(protected apiService: ApiService, protected userService: UserService,\n protected modalService: ModalService, protected messagingService: MessagingService,\n protected policyService: PolicyService) { }\n\n async ngOnInit() {\n this.canAccessPremium = await this.userService.canAccessPremium();\n\n for (const key in TwoFactorProviders) {\n if (!TwoFactorProviders.hasOwnProperty(key)) {\n continue;\n }\n\n const p = (TwoFactorProviders as any)[key];\n if (this.filterProvider(p.type)) {\n continue;\n }\n\n this.providers.push({\n type: p.type,\n name: p.name,\n description: p.description,\n enabled: false,\n premium: p.premium,\n sort: p.sort,\n });\n }\n\n this.providers.sort((a: any, b: any) => a.sort - b.sort);\n await this.load();\n }\n\n async load() {\n this.loading = true;\n const providerList = await this.getTwoFactorProviders();\n providerList.data.forEach(p => {\n this.providers.forEach(p2 => {\n if (p.type === p2.type) {\n p2.enabled = p.enabled;\n }\n });\n });\n this.evaluatePolicies();\n this.loading = false;\n }\n\n async manage(type: TwoFactorProviderType) {\n switch (type) {\n case TwoFactorProviderType.Authenticator:\n const authComp = await this.openModal(this.authenticatorModalRef, TwoFactorAuthenticatorComponent);\n authComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.Authenticator);\n });\n break;\n case TwoFactorProviderType.Yubikey:\n const yubiComp = await this.openModal(this.yubikeyModalRef, TwoFactorYubiKeyComponent);\n yubiComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.Yubikey);\n });\n break;\n case TwoFactorProviderType.Duo:\n const duoComp = await this.openModal(this.duoModalRef, TwoFactorDuoComponent);\n duoComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.Duo);\n });\n break;\n case TwoFactorProviderType.Email:\n const emailComp = await this.openModal(this.emailModalRef, TwoFactorEmailComponent);\n emailComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.Email);\n });\n break;\n case TwoFactorProviderType.WebAuthn:\n const webAuthnComp = await this.openModal(this.webAuthnModalRef, TwoFactorWebAuthnComponent);\n webAuthnComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.WebAuthn);\n });\n break;\n default:\n break;\n }\n }\n\n recoveryCode() {\n this.openModal(this.recoveryModalRef, TwoFactorRecoveryComponent);\n }\n\n async premiumRequired() {\n if (!this.canAccessPremium) {\n this.messagingService.send('premiumRequired');\n return;\n }\n }\n\n protected getTwoFactorProviders() {\n return this.apiService.getTwoFactorProviders();\n }\n\n protected filterProvider(type: TwoFactorProviderType) {\n return type === TwoFactorProviderType.OrganizationDuo;\n }\n\n protected async openModal(ref: ViewContainerRef, type: Type): Promise {\n const [modal, childComponent] = await this.modalService.openViewRef(type, ref);\n this.modal = modal;\n\n return childComponent;\n }\n\n protected updateStatus(enabled: boolean, type: TwoFactorProviderType) {\n if (!enabled && this.modal != null) {\n this.modal.close();\n }\n this.providers.forEach(p => {\n if (p.type === type) {\n p.enabled = enabled;\n }\n });\n this.evaluatePolicies();\n }\n\n private async evaluatePolicies() {\n if (this.organizationId == null && this.providers.filter(p => p.enabled).length === 1) {\n this.showPolicyWarning = await this.policyService.policyAppliesToUser(PolicyType.TwoFactorAuthentication);\n } else {\n this.showPolicyWarning = false;\n }\n }\n}\n","

{{'twoStepLogin' | i18n}}

{{'twoStepLoginDesc' | i18n}}

{{'twoStepLoginOrganizationDesc' | i18n}}

{{'twoStepLoginRecoveryWarning' | i18n}}

{{'providers' | i18n}} {{'loading' | i18n}}

{{'twoStepLoginPolicyUserWarning' | i18n}} ","import { Component } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\n\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { ExportService } from 'jslib-common/abstractions/export.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { UserVerificationService } from 'jslib-common/abstractions/userVerification.service';\n\nimport { ExportComponent as BaseExportComponent } from 'jslib-angular/components/export.component';\n\n@Component({\n selector: 'app-export',\n templateUrl: 'export.component.html',\n})\nexport class ExportComponent extends BaseExportComponent {\n organizationId: string;\n\n constructor(cryptoService: CryptoService, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService, exportService: ExportService,\n eventService: EventService, policyService: PolicyService, logService: LogService,\n userVerificationService: UserVerificationService, fb: FormBuilder) {\n super(cryptoService, i18nService, platformUtilsService, exportService, eventService,\n policyService, window, logService, userVerificationService, fb);\n }\n\n protected saved() {\n super.saved();\n this.platformUtilsService.showToast('success', null, this.i18nService.t('exportSuccess'));\n }\n}\n","

{{'exportVault' | i18n}}

{{'personalVaultExportPolicyInEffect' | i18n}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { AuditService } from 'jslib-common/abstractions/audit.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordRepromptService } from 'jslib-common/abstractions/passwordReprompt.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\n\nimport { CipherReportComponent } from './cipher-report.component';\n\n@Component({\n selector: 'app-exposed-passwords-report',\n templateUrl: 'exposed-passwords-report.component.html',\n})\nexport class ExposedPasswordsReportComponent extends CipherReportComponent implements OnInit {\n exposedPasswordMap = new Map();\n\n constructor(protected cipherService: CipherService, protected auditService: AuditService,\n modalService: ModalService, messagingService: MessagingService,\n userService: UserService, passwordRepromptService: PasswordRepromptService) {\n super(modalService, userService, messagingService, passwordRepromptService, true);\n }\n\n ngOnInit() {\n this.checkAccess();\n }\n\n async load() {\n if (await this.checkAccess()) {\n super.load();\n }\n }\n\n async setCiphers() {\n const allCiphers = await this.getAllCiphers();\n const exposedPasswordCiphers: CipherView[] = [];\n const promises: Promise[] = [];\n allCiphers.forEach(c => {\n if (c.type !== CipherType.Login || c.login.password == null || c.login.password === '' || c.isDeleted) {\n return;\n }\n const promise = this.auditService.passwordLeaked(c.login.password).then(exposedCount => {\n if (exposedCount > 0) {\n exposedPasswordCiphers.push(c);\n this.exposedPasswordMap.set(c.id, exposedCount);\n }\n });\n promises.push(promise);\n });\n await Promise.all(promises);\n this.ciphers = exposedPasswordCiphers;\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n\n protected canManageCipher(c: CipherView): boolean {\n // this will only ever be false from the org view;\n return true;\n }\n}\n","

{{'exposedPasswordsReport' | i18n}}

{{'exposedPasswordsReportDesc' | i18n}}

{{'noExposedPasswords' | i18n}} {{'exposedPasswordsFoundDesc' | i18n : (ciphers.length | number)}}
{{c.name}} {{c.name}} {{'shared' | i18n}} {{'attachments' | i18n}}
{{c.subTitle}}
{{'exposedXTimes' | i18n : (exposedPasswordMap.get(c.id) | number)}}
","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuditService } from 'jslib-common/abstractions/audit.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PasswordRepromptService } from 'jslib-common/abstractions/passwordReprompt.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { TotpService } from 'jslib-common/abstractions/totp.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { CipherData } from 'jslib-common/models/data/cipherData';\nimport { Cipher } from 'jslib-common/models/domain/cipher';\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { CipherCreateRequest } from 'jslib-common/models/request/cipherCreateRequest';\nimport { CipherRequest } from 'jslib-common/models/request/cipherRequest';\n\nimport { AddEditComponent as BaseAddEditComponent } from '../../vault/add-edit.component';\n\n@Component({\n selector: 'app-org-vault-add-edit',\n templateUrl: '../../vault/add-edit.component.html',\n})\nexport class AddEditComponent extends BaseAddEditComponent {\n organization: Organization;\n originalCipher: Cipher = null;\n\n constructor(cipherService: CipherService, folderService: FolderService,\n i18nService: I18nService, platformUtilsService: PlatformUtilsService,\n auditService: AuditService, stateService: StateService,\n userService: UserService, collectionService: CollectionService,\n totpService: TotpService, passwordGenerationService: PasswordGenerationService,\n private apiService: ApiService, messagingService: MessagingService,\n eventService: EventService, policyService: PolicyService, logService: LogService,\n passwordRepromptService: PasswordRepromptService) {\n super(cipherService, folderService, i18nService, platformUtilsService, auditService, stateService,\n userService, collectionService, totpService, passwordGenerationService, messagingService,\n eventService, policyService, passwordRepromptService, logService);\n }\n\n protected allowOwnershipAssignment() {\n if (this.ownershipOptions != null && (this.ownershipOptions.length > 1 || !this.allowPersonal)) {\n if (this.organization != null) {\n return this.cloneMode && this.organization.canEditAnyCollection;\n } else {\n return !this.editMode || this.cloneMode;\n }\n }\n return false;\n }\n\n protected loadCollections() {\n if (!this.organization.canEditAnyCollection) {\n return super.loadCollections();\n }\n return Promise.resolve(this.collections);\n }\n\n protected async loadCipher() {\n if (!this.organization.canEditAnyCollection) {\n return await super.loadCipher();\n }\n const response = await this.apiService.getCipherAdmin(this.cipherId);\n const data = new CipherData(response);\n this.originalCipher = new Cipher(data);\n return new Cipher(data);\n }\n\n protected encryptCipher() {\n if (!this.organization.canEditAnyCollection) {\n return super.encryptCipher();\n }\n return this.cipherService.encrypt(this.cipher, null, this.originalCipher);\n }\n\n protected async saveCipher(cipher: Cipher) {\n if (!this.organization.canEditAnyCollection || cipher.organizationId == null) {\n return super.saveCipher(cipher);\n }\n if (this.editMode && !this.cloneMode) {\n const request = new CipherRequest(cipher);\n return this.apiService.putCipherAdmin(this.cipherId, request);\n } else {\n const request = new CipherCreateRequest(cipher);\n return this.apiService.postCipherAdmin(request);\n }\n }\n\n protected async deleteCipher() {\n if (!this.organization.canEditAnyCollection) {\n return super.deleteCipher();\n }\n return this.cipher.isDeleted ? this.apiService.deleteCipherAdmin(this.cipherId)\n : this.apiService.putDeleteCipherAdmin(this.cipherId);\n }\n}\n","export type LinkedIdType = LoginLinkedId | CardLinkedId | IdentityLinkedId;\n\n// LoginView\nexport enum LoginLinkedId {\n Username = 100,\n Password = 101,\n}\n\n// CardView\nexport enum CardLinkedId {\n CardholderName = 300,\n ExpMonth = 301,\n ExpYear = 302,\n Code = 303,\n Brand = 304,\n Number = 305,\n}\n\n// IdentityView\nexport enum IdentityLinkedId {\n Title = 400,\n MiddleName = 401,\n Address1 = 402,\n Address2 = 403,\n Address3 = 404,\n City = 405,\n State = 406,\n PostalCode = 407,\n Country = 408,\n Company = 409,\n Email = 410,\n Phone = 411,\n Ssn = 412,\n Username = 413,\n PassportNumber = 414,\n LicenseNumber = 415,\n FirstName = 416,\n LastName = 417,\n FullName = 418,\n}\n","import { ItemView } from '../models/view/itemView';\n\nimport { LinkedIdType } from '../enums/linkedIdType';\n\nexport class LinkedMetadata {\n constructor(readonly propertyKey: string, private readonly _i18nKey?: string) { }\n\n get i18nKey() {\n return this._i18nKey ?? this.propertyKey;\n }\n}\n\n/**\n * A decorator used to set metadata used by Linked custom fields. Apply it to a class property or getter to make it\n * available as a Linked custom field option.\n * @param id - A unique value that is saved in the Field model. It is used to look up the decorated class property.\n * @param i18nKey - The i18n key used to describe the decorated class property in the UI. If it is null, then the name\n * of the class property will be used as the i18n key.\n */\nexport function linkedFieldOption(id: LinkedIdType, i18nKey?: string) {\n return (prototype: ItemView, propertyKey: string) => {\n if (prototype.linkedFieldOptions == null) {\n prototype.linkedFieldOptions = new Map();\n }\n\n prototype.linkedFieldOptions.set(id, new LinkedMetadata(propertyKey, i18nKey));\n };\n}\n","import { CardData } from '../data/cardData';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\n\nimport { CardView } from '../view/cardView';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class Card extends Domain {\n cardholderName: EncString;\n brand: EncString;\n number: EncString;\n expMonth: EncString;\n expYear: EncString;\n code: EncString;\n\n constructor(obj?: CardData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n cardholderName: null,\n brand: null,\n number: null,\n expMonth: null,\n expYear: null,\n code: null,\n }, alreadyEncrypted, []);\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(new CardView(this), {\n cardholderName: null,\n brand: null,\n number: null,\n expMonth: null,\n expYear: null,\n code: null,\n }, orgId, encKey);\n }\n\n toCardData(): CardData {\n const c = new CardData();\n this.buildDataModel(this, c, {\n cardholderName: null,\n brand: null,\n number: null,\n expMonth: null,\n expYear: null,\n code: null,\n });\n return c;\n }\n}\n","import { FieldType } from '../../enums/fieldType';\nimport { LinkedIdType } from '../../enums/linkedIdType';\n\nimport { FieldData } from '../data/fieldData';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\n\nimport { FieldView } from '../view/fieldView';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class Field extends Domain {\n name: EncString;\n value: EncString;\n type: FieldType;\n linkedId: LinkedIdType;\n\n constructor(obj?: FieldData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.type = obj.type;\n this.linkedId = obj.linkedId;\n this.buildDomainModel(this, obj, {\n name: null,\n value: null,\n }, alreadyEncrypted, []);\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(new FieldView(this), {\n name: null,\n value: null,\n }, orgId, encKey);\n }\n\n toFieldData(): FieldData {\n const f = new FieldData();\n this.buildDataModel(this, f, {\n name: null,\n value: null,\n type: null,\n linkedId: null,\n }, ['type', 'linkedId']);\n return f;\n }\n}\n","import { IdentityData } from '../data/identityData';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nimport { IdentityView } from '../view/identityView';\n\nexport class Identity extends Domain {\n title: EncString;\n firstName: EncString;\n middleName: EncString;\n lastName: EncString;\n address1: EncString;\n address2: EncString;\n address3: EncString;\n city: EncString;\n state: EncString;\n postalCode: EncString;\n country: EncString;\n company: EncString;\n email: EncString;\n phone: EncString;\n ssn: EncString;\n username: EncString;\n passportNumber: EncString;\n licenseNumber: EncString;\n\n constructor(obj?: IdentityData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n title: null,\n firstName: null,\n middleName: null,\n lastName: null,\n address1: null,\n address2: null,\n address3: null,\n city: null,\n state: null,\n postalCode: null,\n country: null,\n company: null,\n email: null,\n phone: null,\n ssn: null,\n username: null,\n passportNumber: null,\n licenseNumber: null,\n }, alreadyEncrypted, []);\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(new IdentityView(this), {\n title: null,\n firstName: null,\n middleName: null,\n lastName: null,\n address1: null,\n address2: null,\n address3: null,\n city: null,\n state: null,\n postalCode: null,\n country: null,\n company: null,\n email: null,\n phone: null,\n ssn: null,\n username: null,\n passportNumber: null,\n licenseNumber: null,\n }, orgId, encKey);\n }\n\n toIdentityData(): IdentityData {\n const i = new IdentityData();\n this.buildDataModel(this, i, {\n title: null,\n firstName: null,\n middleName: null,\n lastName: null,\n address1: null,\n address2: null,\n address3: null,\n city: null,\n state: null,\n postalCode: null,\n country: null,\n company: null,\n email: null,\n phone: null,\n ssn: null,\n username: null,\n passportNumber: null,\n licenseNumber: null,\n });\n return i;\n }\n}\n","import { LoginUri } from './loginUri';\n\nimport { LoginData } from '../data/loginData';\n\nimport { LoginView } from '../view/loginView';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class Login extends Domain {\n uris: LoginUri[];\n username: EncString;\n password: EncString;\n passwordRevisionDate?: Date;\n totp: EncString;\n autofillOnPageLoad: boolean;\n\n constructor(obj?: LoginData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.passwordRevisionDate = obj.passwordRevisionDate != null ? new Date(obj.passwordRevisionDate) : null;\n this.autofillOnPageLoad = obj.autofillOnPageLoad;\n this.buildDomainModel(this, obj, {\n username: null,\n password: null,\n totp: null,\n }, alreadyEncrypted, []);\n\n if (obj.uris) {\n this.uris = [];\n obj.uris.forEach(u => {\n this.uris.push(new LoginUri(u, alreadyEncrypted));\n });\n }\n }\n\n async decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n const view = await this.decryptObj(new LoginView(this), {\n username: null,\n password: null,\n totp: null,\n }, orgId, encKey);\n\n if (this.uris != null) {\n view.uris = [];\n for (let i = 0; i < this.uris.length; i++) {\n const uri = await this.uris[i].decrypt(orgId, encKey);\n view.uris.push(uri);\n }\n }\n\n return view;\n }\n\n toLoginData(): LoginData {\n const l = new LoginData();\n l.passwordRevisionDate = this.passwordRevisionDate != null ? this.passwordRevisionDate.toISOString() : null;\n l.autofillOnPageLoad = this.autofillOnPageLoad;\n this.buildDataModel(this, l, {\n username: null,\n password: null,\n totp: null,\n });\n\n if (this.uris != null && this.uris.length > 0) {\n l.uris = [];\n this.uris.forEach(u => {\n l.uris.push(u.toLoginUriData());\n });\n }\n\n return l;\n }\n}\n","import { UriMatchType } from '../../enums/uriMatchType';\n\nimport { LoginUriData } from '../data/loginUriData';\n\nimport { LoginUriView } from '../view/loginUriView';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class LoginUri extends Domain {\n uri: EncString;\n match: UriMatchType;\n\n constructor(obj?: LoginUriData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.match = obj.match;\n this.buildDomainModel(this, obj, {\n uri: null,\n }, alreadyEncrypted, []);\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(new LoginUriView(this), {\n uri: null,\n }, orgId, encKey);\n }\n\n toLoginUriData(): LoginUriData {\n const u = new LoginUriData();\n this.buildDataModel(this, u, {\n uri: null,\n }, ['match']);\n return u;\n }\n}\n","import { View } from './view';\n\nimport { Password } from '../domain/password';\n\nexport class PasswordHistoryView implements View {\n password: string = null;\n lastUsedDate: Date = null;\n\n constructor(ph?: Password) {\n if (!ph) {\n return;\n }\n\n this.lastUsedDate = ph.lastUsedDate;\n }\n}\n","import { SecureNoteType } from '../../enums/secureNoteType';\n\nimport { SecureNoteData } from '../data/secureNoteData';\n\nimport Domain from './domainBase';\n\nimport { SecureNoteView } from '../view/secureNoteView';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class SecureNote extends Domain {\n type: SecureNoteType;\n\n constructor(obj?: SecureNoteData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.type = obj.type;\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return Promise.resolve(new SecureNoteView(this));\n }\n\n toSecureNoteData(): SecureNoteData {\n const n = new SecureNoteData();\n n.type = this.type;\n return n;\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { ImportOption, ImportService } from 'jslib-common/abstractions/import.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport Swal, { SweetAlertIcon } from 'sweetalert2';\n\n@Component({\n selector: 'app-import',\n templateUrl: 'import.component.html',\n})\nexport class ImportComponent implements OnInit {\n featuredImportOptions: ImportOption[];\n importOptions: ImportOption[];\n format: string = null;\n fileContents: string;\n formPromise: Promise;\n loading: boolean = false;\n importBlockedByPolicy: boolean = false;\n\n protected organizationId: string = null;\n protected successNavigate: any[] = ['vault'];\n\n constructor(protected i18nService: I18nService, protected toasterService: ToasterService,\n protected importService: ImportService, protected router: Router,\n protected platformUtilsService: PlatformUtilsService, protected policyService: PolicyService,\n private logService: LogService) { }\n\n async ngOnInit() {\n this.setImportOptions();\n this.importOptions.sort((a, b) => {\n if (a.name == null && b.name != null) {\n return -1;\n }\n if (a.name != null && b.name == null) {\n return 1;\n }\n if (a.name == null && b.name == null) {\n return 0;\n }\n\n return this.i18nService.collator ? this.i18nService.collator.compare(a.name, b.name) :\n a.name.localeCompare(b.name);\n });\n\n this.importBlockedByPolicy = await this.policyService.policyAppliesToUser(PolicyType.PersonalOwnership);\n }\n\n async submit() {\n if (this.importBlockedByPolicy) {\n this.platformUtilsService.showToast('error', null,\n this.i18nService.t('personalOwnershipPolicyInEffectImports'));\n return;\n }\n\n this.loading = true;\n\n const importer = this.importService.getImporter(this.format, this.organizationId);\n if (importer === null) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFormat'));\n this.loading = false;\n return;\n }\n\n const fileEl = document.getElementById('file') as HTMLInputElement;\n const files = fileEl.files;\n if ((files == null || files.length === 0) && (this.fileContents == null || this.fileContents === '')) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n this.loading = false;\n return;\n }\n\n let fileContents = this.fileContents;\n if (files != null && files.length > 0) {\n try {\n const content = await this.getFileContents(files[0]);\n if (content != null) {\n fileContents = content;\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n if (fileContents == null || fileContents === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n this.loading = false;\n return;\n }\n\n try {\n this.formPromise = this.importService.import(importer, fileContents, this.organizationId);\n const error = await this.formPromise;\n if (error != null) {\n this.error(error);\n this.loading = false;\n return;\n }\n this.toasterService.popAsync('success', null, this.i18nService.t('importSuccess'));\n this.router.navigate(this.successNavigate);\n } catch (e) {\n this.logService.error(e);\n }\n\n this.loading = false;\n }\n\n getFormatInstructionTitle() {\n if (this.format == null) {\n return null;\n }\n\n const results = this.featuredImportOptions.concat(this.importOptions).filter(o => o.id === this.format);\n if (results.length > 0) {\n return this.i18nService.t('instructionsFor', results[0].name);\n }\n return null;\n }\n\n protected setImportOptions() {\n this.featuredImportOptions = [{\n id: null,\n name: '-- ' + this.i18nService.t('select') + ' --',\n }, ...this.importService.featuredImportOptions];\n this.importOptions = this.importService.regularImportOptions;\n }\n\n private async error(error: Error) {\n await Swal.fire({\n heightAuto: false,\n buttonsStyling: false,\n icon: 'error' as SweetAlertIcon,\n iconHtml: ``,\n input: 'textarea',\n inputValue: error.message,\n inputAttributes: {\n 'readonly': 'true',\n },\n titleText: this.i18nService.t('importError'),\n text: this.i18nService.t('importErrorDesc'),\n showConfirmButton: true,\n confirmButtonText: this.i18nService.t('ok'),\n onOpen: popupEl => {\n popupEl.querySelector('.swal2-textarea').scrollTo(0, 0);\n },\n });\n }\n\n private getFileContents(file: File): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsText(file, 'utf-8');\n reader.onload = evt => {\n if (this.format === 'lastpasscsv' && file.type === 'text/html') {\n const parser = new DOMParser();\n const doc = parser.parseFromString((evt.target as any).result, 'text/html');\n const pre = doc.querySelector('pre');\n if (pre != null) {\n resolve(pre.textContent);\n return;\n }\n reject();\n return;\n }\n\n resolve((evt.target as any).result);\n };\n reader.onerror = () => {\n reject();\n };\n });\n }\n}\n","

{{'importData' | i18n}}

{{'personalOwnershipPolicyInEffectImports' | i18n}}
See detailed instructions on our help site at https://help.bitwarden.com/article/export-your-data/ See detailed instructions on our help site at https://help.bitwarden.com/article/import-from-lastpass/ Using the KeePassX desktop application, navigate to \"Database\" → \"Export to CSV file\" and save the CSV file. In the Avira web vault, go to \"Settings\" → \"My Data\" → \"Export data\" and save the CSV file. In the Blur web vault, click your username at the top and go to \"Settings\" → \"Export Data\", then click \"Export CSV\" for your \"Accounts\". Using the SaveInCloud desktop application, navigate to \"File\" → \"Export\" → \"As XML\" and save the XML file. Using the Padlock desktop application, click the hamburger icon in the top left corner and navigate to \"Settings\" → \"Export\" button and save the file \"As CSV\". Using the KeePass 2 desktop application, navigate to \"File\" → \"Export\" and select the \"KeePass XML (2.x)\" option. Using the Universal Password Manager desktop application, navigate to \"Database\" → \"Export\" and save the CSV file. Using the SaferPass browser extension, click the hamburger icon in the top left corner and navigate to \"Settings\". Click the \"Export accounts\" button to save the CSV file. Using the Meldium web vault, navigate to \"Settings\". Locate the \"Export data\" function and click \"Show me my data\" to save the CSV file. Log into the Keeper web vault (keepersecurity.com/vault). Navigate to \"Backup\" (top right) and find the \"Export to .csv File\" option. Click \"Export Now\" to save the CSV file. The process is exactly the same as importing from Google Chrome. See detailed instructions on our help site at https://help.bitwarden.com/article/import-from-chrome/ See detailed instructions on our help site at https://bitwarden.com/help/article/import-from-firefox/. See detailed instructions on our help site at https://bitwarden.com/help/article/import-from-safari/. See detailed instructions on our help site at https://help.bitwarden.com/article/import-from-1password/. Using the Password Dragon desktop application, navigate to \"File\" → \"Export\" → \"To XML\". In the dialog that pops up select \"All Rows\" and check all fields. Click the \"Export\" button and save the XML file. Using the Enpass desktop application, navigate to \"File\" → \"Export\" → \"As CSV\". Select \"OK\" to the warning alert and save the CSV file. Note that the importer only supports files exported while Enpass is set to the English language, so adjust your settings accordingly. Using the Enpass 6 desktop application, click the menu button and navigate to \"File\" → \"Export\". Select the \".json\" file format option and save the JSON file. Using the Password Safe desktop application, navigate to \"File\" → \"Export To\" → \"XML format...\" and save the XML file. Using the Dashlane desktop application, navigate to \"File\" → \"Export\" → \"Unsecured archive (readable) in JSON format\" and save the JSON file. Using the mSecure desktop application, navigate to \"File\" → \"Export\" → \"CSV File...\" and save the CSV file. Using the Sticky Password desktop application, navigate to \"Menu\" (top right) → \"Export\" → \"Export all\". Select the unencrypted format XML option and save the XML file. Using the True Key desktop application, click the gear icon (top right) and then navigate to \"App Settings\". Click the \"Export\" button, enter your password and save the CSV file. Log into the Clipperz web application (clipperz.is/app). Click the hamburger menu icon in the top right to expand the navigation bar. Navigate to \"Data\" → \"Export\". Click the \"download HTML+JSON\" button to save the HTML file. Using the RoboForm Editor desktop application, navigate to \"RoboForm\" (top left) → \"Options\" → \"Account & Data\" and click the \"Export\" button. Select all of your data, change the \"Format\" to \"CSV file\" and then click the \"Export\" button to save the CSV file. Note: RoboForm only allows you to export Logins. Other items will not be exported. Log into the Passbolt web vault and navigate to the \"Passwords\" listing. Select all of the passwords you would like to export and click the \"Export\" button at the top of the listing. Choose the \"csv (lastpass)\" export format and click the \"Export\" button. Using the Ascendo DataVault desktop application, navigate to \"Tools\" → \"Export\". In the dialog that pops up, select the \"All Items (DVX, CSV)\" option. Click the \"Ok\" button to save the CSV file. Using the Password Boss desktop application, navigate to \"File\" → \"Export data\" → \"Password Boss JSON - not encrypted\" and save the JSON file. Log into the Zoho web vault (vault.zoho.com). Navigate to \"Tools\" → \"Export Secrets\". Select \"All Secrets\" and click the \"Zoho Vault Format CSV\" button. Highlight and copy the data from the textarea. Open a text editor like Notepad and paste the data. Save the data from the text editor as zoho_export.csv. Using the SplashID Safe desktop application, click on the SplashID blue lock logo in the top right corner. Navigate to \"Export\" → \"Export as CSV\" and save the CSV file. Using the PassKeep mobile app, navigate to \"Backup/Restore\". Locate the \"CSV Backup/Restore\" section and click \"Backup to CSV\" to save the CSV file. Make sure you have python-keyring and python-gnomekeyring installed. Save the GNOME Keyring Import/Export python script to your desktop as pw_helper.py. Open terminal and run chmod +rx Desktop/pw_helper.py and then python Desktop/pw_helper.py export Desktop/my_passwords.json. Then upload the resulting my_passwords.json file here to Bitwarden. Using the Password Agent desktop application navigate to \"File\" → \"Export\", select the \"Fields to export\" button and check all of the fields, change the \"Output format\" to \"CSV\", and then click the \"Start\" button to save the CSV file. Log into the Passpack website vault and navigate to \"Settings\" → \"Export\", then click the \"Download\" button to save the CSV file. Open your Passman vault and click on \"Settings\" in the bottom left corner. In the \"Settings\" window switch to the \"Export credentials\" tab and choose \"JSON\" as the export type. Enter your vault's passphrase and click the \"Export\" button to save the JSON file. Open the Avast Passwords desktop application and navigate to \"Settings\" → \"Import/export data\". Select the \"Export\" button for the \"Export to CSV file\" option to save the CSV file. Open the Avast Passwords desktop application and navigate to \"Settings\" → \"Import/export data\". Select the \"Export\" button for the \"Export to JSON file\" option to save the JSON file. Open the F-Secure KEY desktop application and navigate to \"Settings\" → \"Export Passwords\". Select the \"Export\" button, enter your master password, and save the FSK file. Open the Kaspersky Password Manager desktop application and navigate to \"Settings\" → \"Import/Export\". Locate the \"Export to text file\" section and select the \"Export\" button to save the TXT file. Open the RememBear desktop application and navigate to \"Settings\" → \"Account\" → \"Export\". Enter your master password and select the \"Export Anyway\" button to save the CSV file. Open the PasswordWallet desktop application and navigate to \"File\" → \"Export\" → \"Visible entries to text file\". Enter your password and select the \"Ok\" button to save the TXT file. Open the Myki desktop browser extension and navigate to \"Advanced\" → \"Export Accounts\" and then scan the QR code with your mobile device. Various CSV files will then be saved to your computer's downloads folder. Export your SecureSafe password safe to a CSV file with a comma delimiter. Open the LogMeOnce browser extension, then navigate to \"Open Menu\" → \"Export To\" and select \"CSV File\" to save the CSV file. Open the BlackBerry Password Keeper application, then navigate to \"Settings\" → \"Import/Export\". Select \"Export Passwords\" and follow the instructions on screen to save the unencrypted CSV file. Open the Buttercup desktop application and unlock your vault. Right click on your vault's icon and select \"Export\" to save the CSV file. Open the Codebook desktop application and log in. Navigate to \"File\" → \"Export all\", then click \"Yes\" on the dialog and save the CSV file. Open the newest version of the Encryptr desktop application and allow all of your data to sync. Once syncing of your data is complete, the download icon in the top right corner will turn pink. Click the download icon and save the CSV file. From the Yoti browser extension, click on \"Settings\", then \"Export Saved Logins\" and save the CSV file.
","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordRepromptService } from 'jslib-common/abstractions/passwordReprompt.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\nimport { CipherReportComponent } from './cipher-report.component';\n\n@Component({\n selector: 'app-inactive-two-factor-report',\n templateUrl: 'inactive-two-factor-report.component.html',\n})\nexport class InactiveTwoFactorReportComponent extends CipherReportComponent implements OnInit {\n services = new Map();\n cipherDocs = new Map();\n\n constructor(protected cipherService: CipherService, modalService: ModalService,\n messagingService: MessagingService, userService: UserService, private logService: LogService,\n passwordRepromptService: PasswordRepromptService) {\n super(modalService, userService, messagingService, passwordRepromptService, true);\n }\n\n async ngOnInit() {\n if (await this.checkAccess()) {\n await super.load();\n }\n }\n\n async setCiphers() {\n try {\n await this.load2fa();\n } catch (e) {\n this.logService.error(e);\n }\n\n if (this.services.size > 0) {\n const allCiphers = await this.getAllCiphers();\n const inactive2faCiphers: CipherView[] = [];\n const promises: Promise[] = [];\n const docs = new Map();\n allCiphers.forEach(c => {\n if (c.type !== CipherType.Login || (c.login.totp != null && c.login.totp !== '') || !c.login.hasUris ||\n c.isDeleted) {\n return;\n }\n for (let i = 0; i < c.login.uris.length; i++) {\n const u = c.login.uris[i];\n if (u.uri != null && u.uri !== '') {\n const hostname = Utils.getHostname(u.uri);\n if (hostname != null && this.services.has(hostname)) {\n if (this.services.get(hostname) != null) {\n docs.set(c.id, this.services.get(hostname));\n }\n inactive2faCiphers.push(c);\n break;\n }\n }\n }\n });\n await Promise.all(promises);\n this.ciphers = inactive2faCiphers;\n this.cipherDocs = docs;\n }\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n\n private async load2fa() {\n if (this.services.size > 0) {\n return;\n }\n const response = await fetch(new Request('https://2fa.directory/api/v2/totp.json'));\n if (response.status !== 200) {\n throw new Error();\n }\n const responseJson = await response.json();\n for (const categoryName in responseJson) {\n if (responseJson.hasOwnProperty(categoryName)) {\n const category = responseJson[categoryName];\n for (const serviceName in category) {\n if (category.hasOwnProperty(serviceName)) {\n const service = category[serviceName];\n if (service.url != null) {\n const hostname = Utils.getHostname(service.url);\n if (hostname != null) {\n this.services.set(hostname, service.doc);\n }\n }\n }\n }\n }\n }\n }\n}\n","

{{'inactive2faReport' | i18n}} {{'loading' | i18n}}

{{'inactive2faReportDesc' | i18n}}

{{'loading' | i18n}}
{{'noInactive2fa' | i18n}} {{'inactive2faFoundDesc' | i18n : (ciphers.length | number)}}
{{c.name}} {{'shared' | i18n}} {{'attachments' | i18n}}
{{c.subTitle}}
{{'instructions' | i18n}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordRepromptService } from 'jslib-common/abstractions/passwordReprompt.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\n\nimport { CipherReportComponent } from './cipher-report.component';\n\n@Component({\n selector: 'app-reused-passwords-report',\n templateUrl: 'reused-passwords-report.component.html',\n})\nexport class ReusedPasswordsReportComponent extends CipherReportComponent implements OnInit {\n passwordUseMap: Map;\n\n constructor(protected cipherService: CipherService, modalService: ModalService,\n messagingService: MessagingService, userService: UserService,\n passwordRepromptService: PasswordRepromptService) {\n super(modalService, userService, messagingService, passwordRepromptService, true);\n }\n\n async ngOnInit() {\n if (await this.checkAccess()) {\n await super.load();\n }\n }\n\n async setCiphers() {\n const allCiphers = await this.getAllCiphers();\n const ciphersWithPasswords: CipherView[] = [];\n this.passwordUseMap = new Map();\n allCiphers.forEach(c => {\n if (c.type !== CipherType.Login || c.login.password == null || c.login.password === '' || c.isDeleted) {\n return;\n }\n ciphersWithPasswords.push(c);\n if (this.passwordUseMap.has(c.login.password)) {\n this.passwordUseMap.set(c.login.password, this.passwordUseMap.get(c.login.password) + 1);\n } else {\n this.passwordUseMap.set(c.login.password, 1);\n }\n });\n const reusedPasswordCiphers = ciphersWithPasswords.filter(c =>\n this.passwordUseMap.has(c.login.password) && this.passwordUseMap.get(c.login.password) > 1);\n this.ciphers = reusedPasswordCiphers;\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n\n protected canManageCipher(c: CipherView): boolean {\n // this will only ever be false from an organization view\n return true;\n }\n}\n","

{{'reusedPasswordsReport' | i18n}} {{'loading' | i18n}}

{{'reusedPasswordsReportDesc' | i18n}}

{{'loading' | i18n}}
{{'noReusedPasswords' | i18n}} {{'reusedPasswordsFoundDesc' | i18n : (ciphers.length | number)}}
{{c.name}} {{c.name}} {{'shared' | i18n}} {{'attachments' | i18n}}
{{c.subTitle}}
{{'reusedXTimes' | i18n : passwordUseMap.get(c.login.password)}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordRepromptService } from 'jslib-common/abstractions/passwordReprompt.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { CipherReportComponent } from './cipher-report.component';\n\n@Component({\n selector: 'app-unsecured-websites-report',\n templateUrl: 'unsecured-websites-report.component.html',\n})\nexport class UnsecuredWebsitesReportComponent extends CipherReportComponent implements OnInit {\n constructor(protected cipherService: CipherService, modalService: ModalService,\n messagingService: MessagingService, userService: UserService, passwordRepromptService: PasswordRepromptService) {\n super(modalService, userService, messagingService, passwordRepromptService, true);\n }\n\n async ngOnInit() {\n if (await this.checkAccess()) {\n await super.load();\n }\n }\n\n async setCiphers() {\n const allCiphers = await this.getAllCiphers();\n const unsecuredCiphers = allCiphers.filter(c => {\n if (c.type !== CipherType.Login || !c.login.hasUris || c.isDeleted) {\n return false;\n }\n return c.login.uris.some(u => u.uri != null && u.uri.indexOf('http://') === 0);\n });\n this.ciphers = unsecuredCiphers;\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n}\n","

{{'unsecuredWebsitesReport' | i18n}} {{'loading' | i18n}}

{{'unsecuredWebsitesReportDesc' | i18n}}

{{'loading' | i18n}}
{{'noUnsecuredWebsites' | i18n}} {{'unsecuredWebsitesFoundDesc' | i18n : (ciphers.length | number)}}
{{c.name}} {{'shared' | i18n}} {{'attachments' | i18n}}
{{c.subTitle}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PasswordRepromptService } from 'jslib-common/abstractions/passwordReprompt.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\n\nimport { CipherReportComponent } from './cipher-report.component';\n\n@Component({\n selector: 'app-weak-passwords-report',\n templateUrl: 'weak-passwords-report.component.html',\n})\nexport class WeakPasswordsReportComponent extends CipherReportComponent implements OnInit {\n\n passwordStrengthMap = new Map();\n\n private passwordStrengthCache = new Map();\n\n constructor(protected cipherService: CipherService, protected passwordGenerationService: PasswordGenerationService,\n modalService: ModalService, messagingService: MessagingService, userService: UserService,\n passwordRepromptService: PasswordRepromptService) {\n super(modalService, userService, messagingService, passwordRepromptService, true);\n }\n\n async ngOnInit() {\n if (await this.checkAccess()) {\n await super.load();\n }\n }\n\n async setCiphers() {\n const allCiphers = await this.getAllCiphers();\n const weakPasswordCiphers: CipherView[] = [];\n const isUserNameNotEmpty = (c: CipherView): boolean => {\n return c.login.username != null && c.login.username.trim() !== '';\n };\n const getCacheKey = (c: CipherView): string => {\n return c.login.password + '_____' + (isUserNameNotEmpty(c) ? c.login.username : '');\n };\n\n allCiphers.forEach(c => {\n if (c.type !== CipherType.Login || c.login.password == null || c.login.password === '' || c.isDeleted) {\n return;\n }\n const hasUserName = isUserNameNotEmpty(c);\n const cacheKey = getCacheKey(c);\n if (!this.passwordStrengthCache.has(cacheKey)) {\n let userInput: string[] = [];\n if (hasUserName) {\n const atPosition = c.login.username.indexOf('@');\n if (atPosition > -1) {\n userInput = userInput.concat(\n c.login.username.substr(0, atPosition).trim().toLowerCase().split(/[^A-Za-z0-9]/))\n .filter(i => i.length >= 3);\n } else {\n userInput = c.login.username.trim().toLowerCase().split(/[^A-Za-z0-9]/)\n .filter(i => i.length >= 3);\n }\n }\n const result = this.passwordGenerationService.passwordStrength(c.login.password,\n userInput.length > 0 ? userInput : null);\n this.passwordStrengthCache.set(cacheKey, result.score);\n }\n const score = this.passwordStrengthCache.get(cacheKey);\n if (score != null && score <= 2) {\n this.passwordStrengthMap.set(c.id, this.scoreKey(score));\n weakPasswordCiphers.push(c);\n }\n });\n weakPasswordCiphers.sort((a, b) => {\n return this.passwordStrengthCache.get(getCacheKey(a)) -\n this.passwordStrengthCache.get(getCacheKey(b));\n });\n this.ciphers = weakPasswordCiphers;\n }\n\n protected getAllCiphers(): Promise {\n return this.cipherService.getAllDecrypted();\n }\n\n protected canManageCipher(c: CipherView): boolean {\n // this will only ever be false from the org view;\n return true;\n }\n\n private scoreKey(score: number): [string, string] {\n switch (score) {\n case 4:\n return ['strong', 'success'];\n case 3:\n return ['good', 'primary'];\n case 2:\n return ['weak', 'warning'];\n default:\n return ['veryWeak', 'danger'];\n }\n }\n}\n","

{{'weakPasswordsReport' | i18n}} {{'loading' | i18n}}

{{'weakPasswordsReportDesc' | i18n}}

{{'loading' | i18n}}
{{'noWeakPasswords' | i18n}} {{'weakPasswordsFoundDesc' | i18n : (ciphers.length | number)}}
{{c.name}} {{c.name}} {{'shared' | i18n}} {{'attachments' | i18n}}
{{c.subTitle}}
{{passwordStrengthMap.get(c.id)[0] | i18n}}
","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { AttachmentView } from 'jslib-common/models/view/attachmentView';\n\nimport { AttachmentsComponent as BaseAttachmentsComponent } from 'jslib-angular/components/attachments.component';\n\n@Component({\n selector: 'app-vault-attachments',\n templateUrl: 'attachments.component.html',\n})\nexport class AttachmentsComponent extends BaseAttachmentsComponent {\n viewOnly = false;\n\n constructor(cipherService: CipherService, i18nService: I18nService,\n cryptoService: CryptoService, userService: UserService,\n platformUtilsService: PlatformUtilsService, apiService: ApiService,\n logService: LogService) {\n super(cipherService, i18nService, cryptoService, userService, platformUtilsService, apiService, window,\n logService);\n }\n\n protected async reupload(attachment: AttachmentView) {\n if (this.showFixOldAttachments(attachment)) {\n await this.reuploadCipherAttachment(attachment, false);\n }\n }\n\n protected showFixOldAttachments(attachment: AttachmentView) {\n return attachment.key == null && this.cipher.organizationId == null;\n }\n}\n","

{{'attachments' | i18n}} {{cipher.name}}

{{a.sizeName}}

{{'newAttachment' | i18n}}

{{'maxFileSize' | i18n}}
","import {\n Component,\n EventEmitter,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PasswordRepromptService } from 'jslib-common/abstractions/passwordReprompt.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SearchService } from 'jslib-common/abstractions/search.service';\nimport { TotpService } from 'jslib-common/abstractions/totp.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { CiphersComponent as BaseCiphersComponent } from '../../vault/ciphers.component';\n\n@Component({\n selector: 'app-org-vault-ciphers',\n templateUrl: '../../vault/ciphers.component.html',\n})\nexport class CiphersComponent extends BaseCiphersComponent {\n @Output() onEventsClicked = new EventEmitter();\n\n organization: Organization;\n accessEvents = false;\n\n protected allCiphers: CipherView[] = [];\n\n constructor(searchService: SearchService, toasterService: ToasterService, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService, cipherService: CipherService,\n private apiService: ApiService, eventService: EventService, totpService: TotpService,\n userService: UserService, passwordRepromptService: PasswordRepromptService,\n logService: LogService) {\n super(searchService, toasterService, i18nService, platformUtilsService, cipherService,\n eventService, totpService, userService, passwordRepromptService, logService);\n }\n\n async load(filter: (cipher: CipherView) => boolean = null) {\n if (this.organization.canEditAnyCollection) {\n this.accessEvents = this.organization.useEvents;\n this.allCiphers = await this.cipherService.getAllFromApiForOrganization(this.organization.id);\n } else {\n this.allCiphers = (await this.cipherService.getAllDecrypted()).filter(c => c.organizationId === this.organization.id);\n }\n await this.searchService.indexCiphers(this.organization.id, this.allCiphers);\n await this.applyFilter(filter);\n this.loaded = true;\n }\n\n async applyFilter(filter: (cipher: CipherView) => boolean = null) {\n if (this.organization.canViewAllCollections) {\n await super.applyFilter(filter);\n } else {\n const f = (c: CipherView) => c.organizationId === this.organization.id && (filter == null || filter(c));\n await super.applyFilter(f);\n }\n }\n\n async search(timeout: number = null) {\n await super.search(timeout, this.allCiphers);\n }\n events(c: CipherView) {\n this.onEventsClicked.emit(c);\n }\n\n protected deleteCipher(id: string) {\n if (!this.organization.canEditAnyCollection) {\n return super.deleteCipher(id, this.deleted);\n }\n return this.deleted ? this.apiService.deleteCipherAdmin(id) : this.apiService.putDeleteCipherAdmin(id);\n }\n\n protected showFixOldAttachments(c: CipherView) {\n return this.organization.canEditAnyCollection && c.hasOldAttachments;\n }\n}\n","import {\n Component,\n OnDestroy,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\n\nimport { CollectionsComponent as BaseCollectionsComponent } from 'jslib-angular/components/collections.component';\n\n@Component({\n selector: 'app-vault-collections',\n templateUrl: 'collections.component.html',\n})\nexport class CollectionsComponent extends BaseCollectionsComponent implements OnDestroy {\n constructor(collectionService: CollectionService, platformUtilsService: PlatformUtilsService,\n i18nService: I18nService, cipherService: CipherService, logService: LogService) {\n super(collectionService, platformUtilsService, i18nService, cipherService, logService);\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n selectAll(select: boolean) {\n this.collections.forEach(c => this.check(c, select));\n }\n}\n","

{{'collections' | i18n}} {{cipher.name}}

{{'collectionsDesc' | i18n}}

{{'collections' | i18n}}

{{'noCollectionsInList' | i18n}}
{{c.name}}
","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { CollectionData } from 'jslib-common/models/data/collectionData';\nimport { Collection } from 'jslib-common/models/domain/collection';\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { CollectionDetailsResponse } from 'jslib-common/models/response/collectionResponse';\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\n\nimport { GroupingsComponent as BaseGroupingsComponent } from '../../vault/groupings.component';\n\n@Component({\n selector: 'app-org-vault-groupings',\n templateUrl: '../../vault/groupings.component.html',\n})\nexport class GroupingsComponent extends BaseGroupingsComponent {\n organization: Organization;\n\n constructor(collectionService: CollectionService, folderService: FolderService,\n storageService: StorageService, userService: UserService,\n private apiService: ApiService, private i18nService: I18nService) {\n super(collectionService, folderService, storageService, userService);\n }\n\n async loadCollections() {\n if (!this.organization.canEditAnyCollection) {\n await super.loadCollections(this.organization.id);\n return;\n }\n\n const collections = await this.apiService.getCollections(this.organization.id);\n if (collections != null && collections.data != null && collections.data.length) {\n const collectionDomains = collections.data.map(r =>\n new Collection(new CollectionData(r as CollectionDetailsResponse)));\n this.collections = await this.collectionService.decryptMany(collectionDomains);\n } else {\n this.collections = [];\n }\n\n const unassignedCollection = new CollectionView();\n unassignedCollection.name = this.i18nService.t('unassigned');\n unassignedCollection.id = 'unassigned';\n unassignedCollection.organizationId = this.organization.id;\n unassignedCollection.readOnly = true;\n this.collections.push(unassignedCollection);\n this.nestedCollections = await this.collectionService.getAllNested(this.collections);\n }\n\n collapse(grouping: CollectionView) {\n super.collapse(grouping, 'org_');\n }\n\n isCollapsed(grouping: CollectionView) {\n return super.isCollapsed(grouping, 'org_');\n }\n}\n","import {\n Component,\n Input,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { ToasterService } from 'angular2-toaster';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordRepromptService } from 'jslib-common/abstractions/passwordReprompt.service';\nimport { CipherRepromptType } from 'jslib-common/enums/cipherRepromptType';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\nimport { BulkDeleteComponent } from './bulk-delete.component';\nimport { BulkMoveComponent } from './bulk-move.component';\nimport { BulkRestoreComponent } from './bulk-restore.component';\nimport { BulkShareComponent } from './bulk-share.component';\nimport { CiphersComponent } from './ciphers.component';\n\n@Component({\n selector: 'app-vault-bulk-actions',\n templateUrl: 'bulk-actions.component.html',\n})\nexport class BulkActionsComponent {\n @Input() ciphersComponent: CiphersComponent;\n @Input() deleted: boolean;\n @Input() organization: Organization;\n\n @ViewChild('bulkDeleteTemplate', { read: ViewContainerRef, static: true }) bulkDeleteModalRef: ViewContainerRef;\n @ViewChild('bulkRestoreTemplate', { read: ViewContainerRef, static: true }) bulkRestoreModalRef: ViewContainerRef;\n @ViewChild('bulkMoveTemplate', { read: ViewContainerRef, static: true }) bulkMoveModalRef: ViewContainerRef;\n @ViewChild('bulkShareTemplate', { read: ViewContainerRef, static: true }) bulkShareModalRef: ViewContainerRef;\n\n constructor(private toasterService: ToasterService, private i18nService: I18nService,\n private modalService: ModalService, private passwordRepromptService: PasswordRepromptService) { }\n\n async bulkDelete() {\n if (!await this.promptPassword()) {\n return;\n }\n\n const selectedIds = this.ciphersComponent.getSelectedIds();\n if (selectedIds.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nothingSelected'));\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(BulkDeleteComponent, this.bulkDeleteModalRef, comp => {\n comp.permanent = this.deleted;\n comp.cipherIds = selectedIds;\n comp.organization = this.organization;\n comp.onDeleted.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n });\n }\n\n async bulkRestore() {\n if (!await this.promptPassword()) {\n return;\n }\n\n const selectedIds = this.ciphersComponent.getSelectedIds();\n if (selectedIds.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nothingSelected'));\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(BulkRestoreComponent, this.bulkRestoreModalRef, comp => {\n comp.cipherIds = selectedIds;\n comp.onRestored.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n });\n }\n\n async bulkShare() {\n if (!await this.promptPassword()) {\n return;\n }\n\n const selectedCiphers = this.ciphersComponent.getSelected();\n if (selectedCiphers.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nothingSelected'));\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(BulkShareComponent, this.bulkShareModalRef, comp => {\n comp.ciphers = selectedCiphers;\n comp.onShared.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n });\n }\n\n async bulkMove() {\n if (!await this.promptPassword()) {\n return;\n }\n\n const selectedIds = this.ciphersComponent.getSelectedIds();\n if (selectedIds.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nothingSelected'));\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(BulkMoveComponent, this.bulkMoveModalRef, comp => {\n comp.cipherIds = selectedIds;\n comp.onMoved.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n });\n }\n\n selectAll(select: boolean) {\n this.ciphersComponent.selectAll(select);\n }\n\n private async promptPassword() {\n const selectedCiphers = this.ciphersComponent.getSelected();\n const notProtected = !selectedCiphers.find(cipher => cipher.reprompt !== CipherRepromptType.None);\n\n return notProtected || await this.passwordRepromptService.showPasswordPrompt();\n }\n}\n","
","import Domain from './domainBase';\nimport { EncString } from './encString';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nimport { SendFileData } from '../data/sendFileData';\n\nimport { SendFileView } from '../view/sendFileView';\n\nexport class SendFile extends Domain {\n id: string;\n size: string;\n sizeName: string;\n fileName: EncString;\n\n constructor(obj?: SendFileData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.size = obj.size;\n this.buildDomainModel(this, obj, {\n id: null,\n sizeName: null,\n fileName: null,\n }, alreadyEncrypted, ['id', 'sizeName']);\n }\n\n async decrypt(key: SymmetricCryptoKey): Promise {\n const view = await this.decryptObj(new SendFileView(this), {\n fileName: null,\n }, null, key);\n return view;\n }\n}\n","import Domain from './domainBase';\nimport { EncString } from './encString';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nimport { SendTextData } from '../data/sendTextData';\n\nimport { SendTextView } from '../view/sendTextView';\n\nexport class SendText extends Domain {\n text: EncString;\n hidden: boolean;\n\n constructor(obj?: SendTextData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.hidden = obj.hidden;\n this.buildDomainModel(this, obj, {\n text: null,\n }, alreadyEncrypted, []);\n }\n\n decrypt(key: SymmetricCryptoKey): Promise {\n return this.decryptObj(new SendTextView(this), {\n text: null,\n }, null, key);\n }\n}\n","import { CipherRequest } from './cipherRequest';\n\nimport { Cipher } from '../domain/cipher';\n\nexport class CipherWithIdRequest extends CipherRequest {\n id: string;\n\n constructor(cipher: Cipher) {\n super(cipher);\n this.id = cipher.id;\n }\n}\n","import { Folder } from '../domain/folder';\n\nexport class FolderRequest {\n name: string;\n\n constructor(folder: Folder) {\n this.name = folder.name ? folder.name.encryptedString : null;\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nexport class SendFileApi extends BaseResponse {\n id: string;\n fileName: string;\n key: string;\n size: string;\n sizeName: string;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.id = this.getResponseProperty('Id');\n this.fileName = this.getResponseProperty('FileName');\n this.key = this.getResponseProperty('Key');\n this.size = this.getResponseProperty('Size');\n this.sizeName = this.getResponseProperty('SizeName');\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nexport class SendTextApi extends BaseResponse {\n text: string;\n hidden: boolean;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.text = this.getResponseProperty('Text');\n this.hidden = this.getResponseProperty('Hidden') || false;\n }\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n} from '@angular/core';\n\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\n@Directive({\n selector: '[appSelectCopy]',\n})\nexport class SelectCopyDirective {\n constructor(private el: ElementRef, private platformUtilsService: PlatformUtilsService) { }\n\n @HostListener('copy') onCopy() {\n if (window == null) {\n return;\n }\n let copyText = '';\n const selection = window.getSelection();\n for (let i = 0; i < selection.rangeCount; i++) {\n const range = selection.getRangeAt(i);\n const text = range.toString();\n\n // The selection should only contain one line of text. In some cases however, the\n // selection contains newlines and space characters from the indentation of following\n // sibling nodes. To avoid copying passwords containing trailing newlines and spaces\n // that aren't part of the password, the selection has to be trimmed.\n let stringEndPos = text.length;\n const newLinePos = text.search(/(?:\\r\\n|\\r|\\n)/);\n if (newLinePos > -1) {\n const otherPart = text.substr(newLinePos).trim();\n if (otherPart === '') {\n stringEndPos = newLinePos;\n }\n }\n copyText += text.substring(0, stringEndPos);\n }\n this.platformUtilsService.copyToClipboard(copyText, { window: window });\n }\n}\n","import {\n Pipe,\n PipeTransform,\n} from '@angular/core';\nimport { Utils } from 'jslib-common/misc/utils';\n\n/*\n An updated pipe that sanitizes HTML, highlights numbers and special characters (in different colors each)\n and handles Unicode / Emoji characters correctly.\n*/\n@Pipe({ name: 'colorPassword' })\nexport class ColorPasswordPipe implements PipeTransform {\n transform(password: string) {\n // Convert to an array to handle cases that stings have special characters, ie: emoji.\n const passwordArray = Array.from(password);\n let colorizedPassword = '';\n for (let i = 0; i < passwordArray.length; i++) {\n let character = passwordArray[i];\n let isSpecial = false;\n // Sanitize HTML first.\n switch (character) {\n case '&':\n character = '&';\n isSpecial = true;\n break;\n case '<':\n character = '<';\n isSpecial = true;\n break;\n case '>':\n character = '>';\n isSpecial = true;\n break;\n case ' ':\n character = ' ';\n isSpecial = true;\n break;\n default:\n break;\n }\n let type = 'letter';\n if (character.match(Utils.regexpEmojiPresentation)) {\n type = 'emoji';\n } else if (isSpecial || character.match(/[^\\w ]/)) {\n type = 'special';\n } else if (character.match(/\\d/)) {\n type = 'number';\n }\n colorizedPassword += '' + character + '';\n }\n return colorizedPassword;\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { ProfileOrganizationResponse } from './profileOrganizationResponse';\nimport { ProfileProviderOrganizationResponse } from './profileProviderOrganizationResponse';\nimport { ProfileProviderResponse } from './profileProviderResponse';\n\nexport class ProfileResponse extends BaseResponse {\n id: string;\n name: string;\n email: string;\n emailVerified: boolean;\n masterPasswordHint: string;\n premium: boolean;\n culture: string;\n twoFactorEnabled: boolean;\n key: string;\n privateKey: string;\n securityStamp: string;\n forcePasswordReset: boolean;\n usesKeyConnector: boolean;\n organizations: ProfileOrganizationResponse[] = [];\n providers: ProfileProviderResponse[] = [];\n providerOrganizations: ProfileProviderOrganizationResponse[] = [];\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.name = this.getResponseProperty('Name');\n this.email = this.getResponseProperty('Email');\n this.emailVerified = this.getResponseProperty('EmailVerified');\n this.masterPasswordHint = this.getResponseProperty('MasterPasswordHint');\n this.premium = this.getResponseProperty('Premium');\n this.culture = this.getResponseProperty('Culture');\n this.twoFactorEnabled = this.getResponseProperty('TwoFactorEnabled');\n this.key = this.getResponseProperty('Key');\n this.privateKey = this.getResponseProperty('PrivateKey');\n this.securityStamp = this.getResponseProperty('SecurityStamp');\n this.forcePasswordReset = this.getResponseProperty('ForcePasswordReset') ?? false;\n this.usesKeyConnector = this.getResponseProperty('UsesKeyConnector') ?? false;\n\n const organizations = this.getResponseProperty('Organizations');\n if (organizations != null) {\n this.organizations = organizations.map((o: any) => new ProfileOrganizationResponse(o));\n }\n const providers = this.getResponseProperty('Providers');\n if (providers != null) {\n this.providers = providers.map((o: any) => new ProfileProviderResponse(o));\n }\n const providerOrganizations = this.getResponseProperty('ProviderOrganizations');\n if (providerOrganizations != null) {\n this.providerOrganizations = providerOrganizations.map((o: any) => new ProfileProviderOrganizationResponse(o));\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { SendType } from '../../enums/sendType';\n\nimport { SendFileApi } from '../api/sendFileApi';\nimport { SendTextApi } from '../api/sendTextApi';\n\nexport class SendResponse extends BaseResponse {\n id: string;\n accessId: string;\n type: SendType;\n name: string;\n notes: string;\n file: SendFileApi;\n text: SendTextApi;\n key: string;\n maxAccessCount?: number;\n accessCount: number;\n revisionDate: string;\n expirationDate: string;\n deletionDate: string;\n password: string;\n disable: boolean;\n hideEmail: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.accessId = this.getResponseProperty('AccessId');\n this.type = this.getResponseProperty('Type');\n this.name = this.getResponseProperty('Name');\n this.notes = this.getResponseProperty('Notes');\n this.key = this.getResponseProperty('Key');\n this.maxAccessCount = this.getResponseProperty('MaxAccessCount');\n this.accessCount = this.getResponseProperty('AccessCount');\n this.revisionDate = this.getResponseProperty('RevisionDate');\n this.expirationDate = this.getResponseProperty('ExpirationDate');\n this.deletionDate = this.getResponseProperty('DeletionDate');\n this.password = this.getResponseProperty('Password');\n this.disable = this.getResponseProperty('Disabled') || false;\n this.hideEmail = this.getResponseProperty('HideEmail') || false;\n\n const text = this.getResponseProperty('Text');\n if (text != null) {\n this.text = new SendTextApi(text);\n }\n\n const file = this.getResponseProperty('File');\n if (file != null) {\n this.file = new SendFileApi(file);\n }\n }\n}\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 489;","import { Component } from '@angular/core';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { BasePolicy, BasePolicyComponent } from './base-policy.component';\n\nexport class DisableSendPolicy extends BasePolicy {\n name = 'disableSend';\n description = 'disableSendPolicyDesc';\n type = PolicyType.DisableSend;\n component = DisableSendPolicyComponent;\n}\n\n@Component({\n selector: 'policy-disable-send',\n templateUrl: 'disable-send.component.html',\n})\nexport class DisableSendPolicyComponent extends BasePolicyComponent {\n}\n"," {{'disableSendExemption' | i18n}}
","import Domain from './domainBase';\n\nexport class MasterPasswordPolicyOptions extends Domain {\n minComplexity: number = 0;\n minLength: number = 0;\n requireUpper: boolean = false;\n requireLower: boolean = false;\n requireNumbers: boolean = false;\n requireSpecial: boolean = false;\n}\n","import { Component } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { BasePolicy, BasePolicyComponent } from './base-policy.component';\n\nexport class MasterPasswordPolicy extends BasePolicy {\n name = 'masterPass';\n description = 'masterPassPolicyDesc';\n type = PolicyType.MasterPassword;\n component = MasterPasswordPolicyComponent;\n}\n\n@Component({\n selector: 'policy-master-password',\n templateUrl: 'master-password.component.html',\n})\nexport class MasterPasswordPolicyComponent extends BasePolicyComponent {\n\n data = this.fb.group({\n minComplexity: [null],\n minLength: [null],\n requireUpper: [null],\n requireLower: [null],\n requireNumbers: [null],\n requireSpecial: [null],\n });\n\n passwordScores: { name: string; value: number; }[];\n showKeyConnectorInfo: boolean = false;\n\n constructor(private fb: FormBuilder, i18nService: I18nService, private userService: UserService) {\n super();\n\n this.passwordScores = [\n { name: '-- ' + i18nService.t('select') + ' --', value: null },\n { name: i18nService.t('weak') + ' (0)', value: 0 },\n { name: i18nService.t('weak') + ' (1)', value: 1 },\n { name: i18nService.t('weak') + ' (2)', value: 2 },\n { name: i18nService.t('good') + ' (3)', value: 3 },\n { name: i18nService.t('strong') + ' (4)', value: 4 },\n ];\n }\n\n async ngOnInit() {\n super.ngOnInit();\n const organization = await this.userService.getOrganization(this.policyResponse.organizationId);\n this.showKeyConnectorInfo = organization.keyConnectorEnabled;\n }\n}\n"," {{'keyConnectorPolicyRestriction' | i18n}}
","import { Component } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { BasePolicy, BasePolicyComponent } from './base-policy.component';\n\nexport class PasswordGeneratorPolicy extends BasePolicy {\n name = 'passwordGenerator';\n description = 'passwordGeneratorPolicyDesc';\n type = PolicyType.PasswordGenerator;\n component = PasswordGeneratorPolicyComponent;\n}\n\n@Component({\n selector: 'policy-password-generator',\n templateUrl: 'password-generator.component.html',\n})\nexport class PasswordGeneratorPolicyComponent extends BasePolicyComponent {\n\n data = this.fb.group({\n defaultType: [null],\n minLength: [null],\n useUpper: [null],\n useLower: [null],\n useNumbers: [null],\n useSpecial: [null],\n minNumbers: [null],\n minSpecial: [null],\n minNumberWords: [null],\n capitalize: [null],\n includeNumber: [null],\n });\n\n defaultTypes: { name: string; value: string; }[];\n\n constructor(private fb: FormBuilder, i18nService: I18nService) {\n super();\n\n this.defaultTypes = [\n { name: i18nService.t('userPreference'), value: null },\n { name: i18nService.t('password'), value: 'password' },\n { name: i18nService.t('passphrase'), value: 'passphrase' },\n ];\n }\n}\n","

{{'password' | i18n}}

{{'passphrase' | i18n}}

","import { Component } from '@angular/core';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { BasePolicy, BasePolicyComponent } from './base-policy.component';\n\nexport class PersonalOwnershipPolicy extends BasePolicy {\n name = 'personalOwnership';\n description = 'personalOwnershipPolicyDesc';\n type = PolicyType.PersonalOwnership;\n component = PersonalOwnershipPolicyComponent;\n}\n\n@Component({\n selector: 'policy-personal-ownership',\n templateUrl: 'personal-ownership.component.html',\n})\nexport class PersonalOwnershipPolicyComponent extends BasePolicyComponent {\n}\n"," {{'personalOwnershipExemption' | i18n}}
","import { Component } from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { PolicyRequest } from 'jslib-common/models/request/policyRequest';\n\nimport { BasePolicy, BasePolicyComponent } from './base-policy.component';\n\nexport class RequireSsoPolicy extends BasePolicy {\n name = 'requireSso';\n description = 'requireSsoPolicyDesc';\n type = PolicyType.RequireSso;\n component = RequireSsoPolicyComponent;\n\n display(organization: Organization) {\n return organization.useSso;\n }\n}\n\n@Component({\n selector: 'policy-require-sso',\n templateUrl: 'require-sso.component.html',\n})\nexport class RequireSsoPolicyComponent extends BasePolicyComponent {\n constructor(private i18nService: I18nService) {\n super();\n }\n\n buildRequest(policiesEnabledMap: Map): Promise {\n const singleOrgEnabled = policiesEnabledMap.get(PolicyType.SingleOrg) ?? false;\n if (this.enabled.value && !singleOrgEnabled) {\n throw new Error(this.i18nService.t('requireSsoPolicyReqError'));\n }\n\n return super.buildRequest(policiesEnabledMap);\n }\n}\n"," {{'requireSsoPolicyReq' | i18n}} {{'requireSsoExemption' | i18n}}
","import { Component } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\nimport { BasePolicy, BasePolicyComponent } from './base-policy.component';\n\nexport class ResetPasswordPolicy extends BasePolicy {\n name = 'resetPasswordPolicy';\n description = 'resetPasswordPolicyDescription';\n type = PolicyType.ResetPassword;\n component = ResetPasswordPolicyComponent;\n\n display(organization: Organization) {\n return organization.useResetPassword;\n }\n}\n\n@Component({\n selector: 'policy-reset-password',\n templateUrl: 'reset-password.component.html',\n})\nexport class ResetPasswordPolicyComponent extends BasePolicyComponent {\n\n data = this.fb.group({\n autoEnrollEnabled: false,\n });\n\n defaultTypes: { name: string; value: string; }[];\n showKeyConnectorInfo: boolean = false;\n\n constructor(private fb: FormBuilder, private userService: UserService) {\n super();\n }\n\n async ngOnInit() {\n super.ngOnInit();\n const organization = await this.userService.getOrganization(this.policyResponse.organizationId);\n this.showKeyConnectorInfo = organization.keyConnectorEnabled;\n }\n}\n"," {{'keyConnectorPolicyRestriction' | i18n}} {{'resetPasswordPolicyWarning' | i18n}}

{{'resetPasswordPolicyAutoEnroll' | i18n}}

{{'resetPasswordPolicyAutoEnrollDescription' | i18n}}

{{'resetPasswordPolicyAutoEnrollWarning' | i18n}}
","import { Component } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { BasePolicy, BasePolicyComponent } from './base-policy.component';\n\nexport class SendOptionsPolicy extends BasePolicy {\n name = 'sendOptions';\n description = 'sendOptionsPolicyDesc';\n type = PolicyType.SendOptions;\n component = SendOptionsPolicyComponent;\n}\n\n@Component({\n selector: 'policy-send-options',\n templateUrl: 'send-options.component.html',\n})\nexport class SendOptionsPolicyComponent extends BasePolicyComponent {\n\n data = this.fb.group({\n disableHideEmail: false,\n });\n\n constructor(private fb: FormBuilder) {\n super();\n }\n}\n"," {{'sendOptionsExemption' | i18n}}

{{'options' | i18n}}

","import { Component } from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { PolicyRequest } from 'jslib-common/models/request/policyRequest';\n\nimport { BasePolicy, BasePolicyComponent } from './base-policy.component';\n\nexport class SingleOrgPolicy extends BasePolicy {\n name = 'singleOrg';\n description = 'singleOrgDesc';\n type = PolicyType.SingleOrg;\n component = SingleOrgPolicyComponent;\n}\n\n@Component({\n selector: 'policy-single-org',\n templateUrl: 'single-org.component.html',\n})\nexport class SingleOrgPolicyComponent extends BasePolicyComponent {\n\n constructor(private i18nService: I18nService) {\n super();\n }\n\n buildRequest(policiesEnabledMap: Map): Promise {\n if (!this.enabled.value) {\n if (policiesEnabledMap.get(PolicyType.RequireSso) ?? false) {\n throw new Error(this.i18nService.t('disableRequiredError', this.i18nService.t('requireSso')));\n }\n\n if (policiesEnabledMap.get(PolicyType.MaximumVaultTimeout) ?? false) {\n throw new Error(this.i18nService.t('disableRequiredError', this.i18nService.t('maximumVaultTimeoutLabel')));\n }\n }\n\n return super.buildRequest(policiesEnabledMap);\n }\n}\n"," {{'singleOrgPolicyWarning' | i18n}}
","import { Component } from '@angular/core';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { BasePolicy, BasePolicyComponent } from './base-policy.component';\n\nexport class TwoFactorAuthenticationPolicy extends BasePolicy {\n name = 'twoStepLogin';\n description = 'twoStepLoginPolicyDesc';\n type = PolicyType.TwoFactorAuthentication;\n component = TwoFactorAuthenticationPolicyComponent;\n}\n\n@Component({\n selector: 'policy-two-factor-authentication',\n templateUrl: 'two-factor-authentication.component.html',\n})\nexport class TwoFactorAuthenticationPolicyComponent extends BasePolicyComponent {\n}\n"," {{'twoStepLoginPolicyWarning' | i18n}}
","import {\n Component,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\n@Component({\n selector: 'app-frontend-layout',\n templateUrl: 'frontend-layout.component.html',\n})\nexport class FrontendLayoutComponent implements OnInit, OnDestroy {\n version: string;\n year: string = '2015';\n\n constructor(private platformUtilsService: PlatformUtilsService) { }\n\n async ngOnInit() {\n this.year = new Date().getFullYear().toString();\n this.version = await this.platformUtilsService.getApplicationVersion();\n document.body.classList.add('layout_frontend');\n }\n\n ngOnDestroy() {\n document.body.classList.remove('layout_frontend');\n }\n}\n","
© {{year}}, Bitwarden Inc. (Powered by Vaultwarden)
{{'versionNumber' | i18n : version}}
","import {\n Component,\n NgZone,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { ActivatedRoute } from '@angular/router';\n\nimport { BroadcasterService } from 'jslib-angular/services/broadcaster.service';\n\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\nconst BroadcasterSubscriptionId = 'OrganizationLayoutComponent';\n\n@Component({\n selector: 'app-organization-layout',\n templateUrl: 'organization-layout.component.html',\n})\nexport class OrganizationLayoutComponent implements OnInit, OnDestroy {\n organization: Organization;\n businessTokenPromise: Promise;\n private organizationId: string;\n\n constructor(private route: ActivatedRoute, private userService: UserService,\n private broadcasterService: BroadcasterService, private ngZone: NgZone) { }\n\n ngOnInit() {\n document.body.classList.remove('layout_frontend');\n this.route.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n await this.load();\n });\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'updatedOrgLicense':\n await this.load();\n break;\n }\n });\n });\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async load() {\n this.organization = await this.userService.getOrganization(this.organizationId);\n }\n\n get showMenuBar() {\n return this.showManageTab || this.showToolsTab || this.organization.isOwner;\n }\n\n get showManageTab(): boolean {\n return this.organization.canManageUsers ||\n this.organization.canViewAllCollections ||\n this.organization.canViewAssignedCollections ||\n this.organization.canManageGroups ||\n this.organization.canManagePolicies ||\n this.organization.canAccessEventLogs;\n }\n\n get showToolsTab(): boolean {\n return this.organization.canAccessImportExport || this.organization.canAccessReports;\n }\n\n get toolsRoute(): string {\n return this.organization.canAccessImportExport ?\n 'tools/import' :\n 'tools/exposed-passwords-report';\n }\n\n get manageRoute(): string {\n let route: string;\n switch (true) {\n case this.organization.canManageUsers:\n route = 'manage/people';\n break;\n case this.organization.canViewAssignedCollections || this.organization.canViewAllCollections:\n route = 'manage/collections';\n break;\n case this.organization.canManageGroups:\n route = 'manage/groups';\n break;\n case this.organization.canManagePolicies:\n route = 'manage/policies';\n break;\n case this.organization.canAccessEventLogs:\n route = 'manage/events';\n break;\n }\n return route;\n }\n}\n","
{{organization.name}} {{'organization' | i18n}}
{{'organizationIsDisabled' | i18n}}
{{'accessingUsingProvider' | i18n : organization.providerName}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\n\n@Component({\n selector: 'app-user-layout',\n templateUrl: 'user-layout.component.html',\n})\nexport class UserLayoutComponent implements OnInit {\n ngOnInit() {\n document.body.classList.remove('layout_frontend');\n }\n}\n"," ","import { Component } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport {\n Toast,\n ToasterService,\n} from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\nimport { EmergencyAccessAcceptRequest } from 'jslib-common/models/request/emergencyAccessAcceptRequest';\nimport { BaseAcceptComponent } from '../common/base.accept.component';\n\n@Component({\n selector: 'app-accept-emergency',\n templateUrl: 'accept-emergency.component.html',\n})\nexport class AcceptEmergencyComponent extends BaseAcceptComponent {\n\n name: string;\n\n protected requiredParameters: string[] = ['id', 'name', 'email', 'token'];\n protected failedShortMessage = 'emergencyInviteAcceptFailedShort';\n protected failedMessage = 'emergencyInviteAcceptFailed';\n\n constructor(router: Router, toasterService: ToasterService,\n i18nService: I18nService, route: ActivatedRoute,\n private apiService: ApiService, userService: UserService,\n stateService: StateService) {\n super(router, toasterService, i18nService, route, userService, stateService);\n }\n\n async authedHandler(qParams: any): Promise {\n const request = new EmergencyAccessAcceptRequest();\n request.token = qParams.token;\n this.actionPromise = this.apiService.postEmergencyAccessAccept(qParams.id, request);\n await this.actionPromise;\n const toast: Toast = {\n type: 'success',\n title: this.i18nService.t('inviteAccepted'),\n body: this.i18nService.t('emergencyInviteAcceptedDesc'),\n timeout: 10000,\n };\n this.toasterService.popAsync(toast);\n this.router.navigate(['/vault']);\n }\n\n async unauthedHandler(qParams: any): Promise {\n this.name = qParams.name;\n if (this.name != null) {\n // Fix URL encoding of space issue with Angular\n this.name = this.name.replace(/\\+/g, ' ');\n }\n }\n}\n","
\"Bitwarden\"

{{'loading' | i18n}}

{{'emergencyAccess' | i18n}}

{{name}}

{{'acceptEmergencyAccess' | i18n}}


","import {\n Directive,\n OnInit,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport {\n Toast,\n ToasterService,\n} from 'angular2-toaster';\n\nimport { first } from 'rxjs/operators';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\n@Directive()\nexport abstract class BaseAcceptComponent implements OnInit {\n loading = true;\n authed = false;\n email: string;\n actionPromise: Promise;\n\n protected requiredParameters: string[] = [];\n protected failedShortMessage = 'inviteAcceptFailedShort';\n protected failedMessage = 'inviteAcceptFailed';\n\n constructor(protected router: Router, protected toasterService: ToasterService,\n protected i18nService: I18nService, protected route: ActivatedRoute,\n protected userService: UserService, protected stateService: StateService) { }\n\n abstract authedHandler(qParams: any): Promise;\n abstract unauthedHandler(qParams: any): Promise;\n\n ngOnInit() {\n this.route.queryParams.pipe(first()).subscribe(async qParams => {\n await this.stateService.remove('loginRedirect');\n\n let error = this.requiredParameters.some(e => qParams?.[e] == null || qParams[e] === '');\n let errorMessage: string = null;\n if (!error) {\n this.authed = await this.userService.isAuthenticated();\n\n if (this.authed) {\n try {\n await this.authedHandler(qParams);\n } catch (e) {\n error = true;\n errorMessage = e.message;\n }\n } else {\n await this.stateService.save('loginRedirect', {\n route: this.getRedirectRoute(),\n qParams: qParams,\n });\n\n this.email = qParams.email;\n await this.unauthedHandler(qParams);\n }\n }\n\n if (error) {\n const toast: Toast = {\n type: 'error',\n title: null,\n body: errorMessage != null ? this.i18nService.t(this.failedShortMessage, errorMessage) :\n this.i18nService.t(this.failedMessage),\n timeout: 10000,\n };\n this.toasterService.popAsync(toast);\n this.router.navigate(['/']);\n }\n\n this.loading = false;\n });\n }\n\n getRedirectRoute() {\n const urlTree = this.router.parseUrl(this.router.url);\n urlTree.queryParams = {};\n return urlTree.toString();\n }\n}\n","import { Component } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport {\n Toast,\n ToasterService,\n} from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { OrganizationUserAcceptRequest } from 'jslib-common/models/request/organizationUserAcceptRequest';\nimport { OrganizationUserResetPasswordEnrollmentRequest } from 'jslib-common/models/request/organizationUserResetPasswordEnrollmentRequest';\n\nimport { Utils } from 'jslib-common/misc/utils';\nimport { Policy } from 'jslib-common/models/domain/policy';\nimport { BaseAcceptComponent } from '../common/base.accept.component';\n\n@Component({\n selector: 'app-accept-organization',\n templateUrl: 'accept-organization.component.html',\n})\nexport class AcceptOrganizationComponent extends BaseAcceptComponent {\n orgName: string;\n\n protected requiredParameters: string[] = ['organizationId', 'organizationUserId', 'token'];\n\n constructor(router: Router, toasterService: ToasterService,\n i18nService: I18nService, route: ActivatedRoute,\n private apiService: ApiService, userService: UserService,\n stateService: StateService, private cryptoService: CryptoService,\n private policyService: PolicyService, private logService: LogService) {\n super(router, toasterService, i18nService, route, userService, stateService);\n }\n\n async authedHandler(qParams: any): Promise {\n const request = new OrganizationUserAcceptRequest();\n request.token = qParams.token;\n if (await this.performResetPasswordAutoEnroll(qParams)) {\n this.actionPromise = this.apiService.postOrganizationUserAccept(qParams.organizationId,\n qParams.organizationUserId, request).then(() => {\n // Retrieve Public Key\n return this.apiService.getOrganizationKeys(qParams.organizationId);\n }).then(async response => {\n if (response == null) {\n throw new Error(this.i18nService.t('resetPasswordOrgKeysError'));\n }\n\n const publicKey = Utils.fromB64ToArray(response.publicKey);\n\n // RSA Encrypt user's encKey.key with organization public key\n const encKey = await this.cryptoService.getEncKey();\n const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);\n\n // Create request and execute enrollment\n const resetRequest = new OrganizationUserResetPasswordEnrollmentRequest();\n resetRequest.resetPasswordKey = encryptedKey.encryptedString;\n\n // Get User Id\n const userId = await this.userService.getUserId();\n\n return this.apiService.putOrganizationUserResetPasswordEnrollment(qParams.organizationId, userId, resetRequest);\n });\n } else {\n this.actionPromise = this.apiService.postOrganizationUserAccept(qParams.organizationId,\n qParams.organizationUserId, request);\n }\n\n await this.actionPromise;\n const toast: Toast = {\n type: 'success',\n title: this.i18nService.t('inviteAccepted'),\n body: this.i18nService.t('inviteAcceptedDesc'),\n timeout: 10000,\n };\n this.toasterService.popAsync(toast);\n\n await this.stateService.remove('orgInvitation');\n this.router.navigate(['/vault']);\n }\n\n async unauthedHandler(qParams: any): Promise {\n this.orgName = qParams.organizationName;\n if (this.orgName != null) {\n // Fix URL encoding of space issue with Angular\n this.orgName = this.orgName.replace(/\\+/g, ' ');\n }\n await this.stateService.save('orgInvitation', qParams);\n }\n\n private async performResetPasswordAutoEnroll(qParams: any): Promise {\n let policyList: Policy[] = null;\n try {\n const policies = await this.apiService.getPoliciesByToken(qParams.organizationId, qParams.token,\n qParams.email, qParams.organizationUserId);\n policyList = this.policyService.mapPoliciesFromToken(policies);\n } catch (e) {\n this.logService.error(e);\n }\n\n if (policyList != null) {\n const result = this.policyService.getResetPasswordPolicyOptions(policyList, qParams.organizationId);\n // Return true if policy enabled and auto-enroll enabled\n return result[1] && result[0].autoEnrollEnabled;\n }\n\n return false;\n }\n}\n","
\"Bitwarden\"

{{'loading' | i18n}}

{{'joinOrganization' | i18n}}

{{orgName}} {{email}}

{{'joinOrganizationDesc' | i18n}}


","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { HintComponent as BaseHintComponent } from 'jslib-angular/components/hint.component';\n\n@Component({\n selector: 'app-hint',\n templateUrl: 'hint.component.html',\n})\nexport class HintComponent extends BaseHintComponent {\n constructor(router: Router, i18nService: I18nService,\n apiService: ApiService, platformUtilsService: PlatformUtilsService,\n logService: LogService) {\n super(router, i18nService, apiService, platformUtilsService, logService);\n }\n}\n","

{{'passwordHint' | i18n}}

{{'enterEmailToGetHint' | i18n}}

{{'cancel' | i18n}}
","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { KeyConnectorService } from 'jslib-common/abstractions/keyConnector.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\nimport { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service';\n\nimport { RouterService } from '../services/router.service';\n\nimport { LockComponent as BaseLockComponent } from 'jslib-angular/components/lock.component';\n\n@Component({\n selector: 'app-lock',\n templateUrl: 'lock.component.html',\n})\nexport class LockComponent extends BaseLockComponent {\n constructor(router: Router, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService, messagingService: MessagingService,\n userService: UserService, cryptoService: CryptoService,\n storageService: StorageService, vaultTimeoutService: VaultTimeoutService,\n environmentService: EnvironmentService, private routerService: RouterService,\n stateService: StateService, apiService: ApiService, logService: LogService,\n keyConnectorService: KeyConnectorService) {\n super(router, i18nService, platformUtilsService, messagingService, userService, cryptoService,\n storageService, vaultTimeoutService, environmentService, stateService, apiService, logService,\n keyConnectorService);\n }\n\n async ngOnInit() {\n await super.ngOnInit();\n this.onSuccessfulSubmit = () => {\n const previousUrl = this.routerService.getPreviousUrl();\n if (previousUrl !== '/' && previousUrl.indexOf('lock') === -1) {\n this.successRoute = previousUrl;\n }\n this.router.navigate([this.successRoute]);\n };\n }\n}\n","

{{'yourVaultIsLocked' | i18n}}

{{'loggedInAsEmailOn' | i18n : email : webVaultHostname}}

","import { Component } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { first } from 'rxjs/operators';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { CryptoFunctionService } from 'jslib-common/abstractions/cryptoFunction.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { LoginComponent as BaseLoginComponent } from 'jslib-angular/components/login.component';\n\nimport { Policy } from 'jslib-common/models/domain/policy';\n\n@Component({\n selector: 'app-login',\n templateUrl: 'login.component.html',\n})\nexport class LoginComponent extends BaseLoginComponent {\n\n showResetPasswordAutoEnrollWarning = false;\n\n constructor(authService: AuthService, router: Router,\n i18nService: I18nService, private route: ActivatedRoute,\n storageService: StorageService, stateService: StateService,\n platformUtilsService: PlatformUtilsService, environmentService: EnvironmentService,\n passwordGenerationService: PasswordGenerationService, cryptoFunctionService: CryptoFunctionService,\n private apiService: ApiService, private policyService: PolicyService, logService: LogService) {\n super(authService, router,\n platformUtilsService, i18nService,\n stateService, environmentService,\n passwordGenerationService, cryptoFunctionService,\n storageService, logService);\n this.onSuccessfulLoginNavigate = this.goAfterLogIn;\n }\n\n async ngOnInit() {\n this.route.queryParams.pipe(first()).subscribe(async qParams => {\n if (qParams.email != null && qParams.email.indexOf('@') > -1) {\n this.email = qParams.email;\n }\n if (qParams.premium != null) {\n this.stateService.save('loginRedirect', { route: '/settings/premium' });\n } else if (qParams.org != null) {\n this.stateService.save('loginRedirect',\n { route: '/settings/create-organization', qParams: { plan: qParams.org } });\n }\n\n // Are they coming from an email for sponsoring a families organization\n if (qParams.sponsorshipToken != null) {\n // After logging in redirect them to setup the families sponsorship\n this.stateService.save('loginRedirect', {\n route: '/setup/families-for-enterprise',\n qParams: { token: qParams.sponsorshipToken },\n });\n }\n await super.ngOnInit();\n });\n\n const invite = await this.stateService.get('orgInvitation');\n if (invite != null) {\n let policyList: Policy[] = null;\n try {\n const policies = await this.apiService.getPoliciesByToken(invite.organizationId, invite.token,\n invite.email, invite.organizationUserId);\n policyList = this.policyService.mapPoliciesFromToken(policies);\n } catch (e) {\n this.logService.error(e);\n }\n\n if (policyList != null) {\n const result = this.policyService.getResetPasswordPolicyOptions(policyList, invite.organizationId);\n // Set to true if policy enabled and auto-enroll enabled\n this.showResetPasswordAutoEnrollWarning = result[1] && result[0].autoEnrollEnabled;\n }\n }\n }\n\n async goAfterLogIn() {\n const loginRedirect = await this.stateService.get('loginRedirect');\n if (loginRedirect != null) {\n this.router.navigate([loginRedirect.route], { queryParams: loginRedirect.qParams });\n await this.stateService.remove('loginRedirect');\n } else {\n this.router.navigate([this.successRoute]);\n }\n }\n}\n","
\"Bitwarden\"

{{'loginOrCreateNewAccount' | i18n}}

{{'resetPasswordAutoEnrollInviteWarning' | i18n}}
{{'getMasterPasswordHint' | i18n}}

{{'createAccount' | i18n}}
","import { Directive, Input } from '@angular/core';\n\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { CaptchaIFrame } from 'jslib-common/misc/captcha_iframe';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Directive()\nexport abstract class CaptchaProtectedComponent {\n @Input() captchaSiteKey: string = null;\n captchaToken: string = null;\n captcha: CaptchaIFrame;\n\n constructor(protected environmentService: EnvironmentService, protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService) { }\n\n async setupCaptcha() {\n const webVaultUrl = this.environmentService.getWebVaultUrl();\n\n this.captcha = new CaptchaIFrame(window, webVaultUrl,\n this.i18nService, (token: string) => {\n this.captchaToken = token;\n }, (error: string) => {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'), error);\n }, (info: string) => {\n this.platformUtilsService.showToast('info', this.i18nService.t('info'), info);\n }\n );\n }\n\n showCaptcha() {\n return !Utils.isNullOrWhitespace(this.captchaSiteKey);\n }\n\n protected handleCaptchaRequired(response: { captchaSiteKey: string; }): boolean {\n if (Utils.isNullOrWhitespace(response.captchaSiteKey)) {\n return false;\n }\n\n this.captchaSiteKey = response.captchaSiteKey;\n this.captcha.init(response.captchaSiteKey);\n return true;\n }\n}\n","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\n\nimport { DeleteRecoverRequest } from 'jslib-common/models/request/deleteRecoverRequest';\n\n@Component({\n selector: 'app-recover-delete',\n templateUrl: 'recover-delete.component.html',\n})\nexport class RecoverDeleteComponent {\n email: string;\n formPromise: Promise;\n\n constructor(private router: Router, private apiService: ApiService,\n private toasterService: ToasterService, private i18nService: I18nService,\n private logService: LogService) {\n }\n\n async submit() {\n try {\n const request = new DeleteRecoverRequest();\n request.email = this.email.trim().toLowerCase();\n this.formPromise = this.apiService.postAccountRecoverDelete(request);\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('deleteRecoverEmailSent'));\n this.router.navigate(['/']);\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","

{{'deleteAccount' | i18n}}

{{'deleteRecoverDesc' | i18n}}


{{'cancel' | i18n}}
","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\n\nimport { TwoFactorRecoveryRequest } from 'jslib-common/models/request/twoFactorRecoveryRequest';\n\n@Component({\n selector: 'app-recover-two-factor',\n templateUrl: 'recover-two-factor.component.html',\n})\nexport class RecoverTwoFactorComponent {\n email: string;\n masterPassword: string;\n recoveryCode: string;\n formPromise: Promise;\n\n constructor(private router: Router, private apiService: ApiService,\n private toasterService: ToasterService, private i18nService: I18nService,\n private cryptoService: CryptoService, private authService: AuthService,\n private logService: LogService) { }\n\n async submit() {\n try {\n const request = new TwoFactorRecoveryRequest();\n request.recoveryCode = this.recoveryCode.replace(/\\s/g, '').toLowerCase();\n request.email = this.email.trim().toLowerCase();\n const key = await this.authService.makePreloginKey(this.masterPassword, request.email);\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, key);\n this.formPromise = this.apiService.postTwoFactorRecover(request);\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('twoStepRecoverDisabled'));\n this.router.navigate(['/']);\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","

{{'recoverAccountTwoStep' | i18n}}

{{'recoverAccountTwoStepDesc' | i18n}} {{'learnMore' | i18n}}


{{'cancel' | i18n}}
","import { Component } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { first } from 'rxjs/operators';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\n\nimport { RegisterComponent as BaseRegisterComponent } from 'jslib-angular/components/register.component';\n\nimport { MasterPasswordPolicyOptions } from 'jslib-common/models/domain/masterPasswordPolicyOptions';\nimport { Policy } from 'jslib-common/models/domain/policy';\n\nimport { PolicyData } from 'jslib-common/models/data/policyData';\nimport { ReferenceEventRequest } from 'jslib-common/models/request/referenceEventRequest';\n\n@Component({\n selector: 'app-register',\n templateUrl: 'register.component.html',\n})\nexport class RegisterComponent extends BaseRegisterComponent {\n showCreateOrgMessage = false;\n layout = '';\n enforcedPolicyOptions: MasterPasswordPolicyOptions;\n\n private policies: Policy[];\n\n constructor(authService: AuthService, router: Router,\n i18nService: I18nService, cryptoService: CryptoService,\n apiService: ApiService, private route: ActivatedRoute,\n stateService: StateService, platformUtilsService: PlatformUtilsService,\n passwordGenerationService: PasswordGenerationService, private policyService: PolicyService,\n environmentService: EnvironmentService, logService: LogService) {\n super(authService, router, i18nService, cryptoService, apiService, stateService, platformUtilsService,\n passwordGenerationService, environmentService, logService);\n }\n\n async ngOnInit() {\n this.route.queryParams.pipe(first()).subscribe(qParams => {\n this.referenceData = new ReferenceEventRequest();\n if (qParams.email != null && qParams.email.indexOf('@') > -1) {\n this.email = qParams.email;\n }\n if (qParams.premium != null) {\n this.stateService.save('loginRedirect', { route: '/settings/premium' });\n } else if (qParams.org != null) {\n this.showCreateOrgMessage = true;\n this.referenceData.flow = qParams.org;\n this.stateService.save('loginRedirect',\n { route: '/settings/create-organization', qParams: { plan: qParams.org } });\n }\n if (qParams.layout != null) {\n this.layout = this.referenceData.layout = qParams.layout;\n }\n if (qParams.reference != null) {\n this.referenceData.id = qParams.reference;\n } else {\n this.referenceData.id = ('; ' + document.cookie).split('; reference=').pop().split(';').shift();\n }\n // Are they coming from an email for sponsoring a families organization\n if (qParams.sponsorshipToken != null) {\n // After logging in redirect them to setup the families sponsorship\n this.stateService.save('loginRedirect', {\n route: '/setup/families-for-enterprise',\n qParams: { token: qParams.sponsorshipToken },\n });\n }\n if (this.referenceData.id === '') {\n this.referenceData.id = null;\n }\n });\n const invite = await this.stateService.get('orgInvitation');\n if (invite != null) {\n try {\n const policies = await this.apiService.getPoliciesByToken(invite.organizationId, invite.token,\n invite.email, invite.organizationUserId);\n if (policies.data != null) {\n const policiesData = policies.data.map(p => new PolicyData(p));\n this.policies = policiesData.map(p => new Policy(p));\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n if (this.policies != null) {\n this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions(this.policies);\n }\n\n await super.ngOnInit();\n }\n\n async submit() {\n if (this.enforcedPolicyOptions != null &&\n !this.policyService.evaluateMasterPassword(this.masterPasswordScore, this.masterPassword,\n this.enforcedPolicyOptions)) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPasswordPolicyRequirementsNotMet'));\n return;\n }\n\n await super.submit();\n }\n}\n","

Companies globally trust Bitwarden for password management.

Start your 7-day free trial!

Quickly deploy your organization

Use Bitwarden across all platforms

Collaborate and share securely

\"Wired\"
\"Bitwarden has become a popular choice among open-source software advocates. After using it for a few months, I can see why.\" - February 2020

Enterprise 3 layout

Enterprise 4 layout

{{'createAccount' | i18n}}

{{'createOrganizationCreatePersonalAccount' | i18n}}
{{'emailAddressDesc' | i18n}}
{{'yourNameDesc' | i18n}}
{{'masterPassDesc' | i18n}}
{{'masterPassHintDesc' | i18n}}

{{'cancel' | i18n}}
","import { Component } from '@angular/core';\n\nimport { RemovePasswordComponent as BaseRemovePasswordComponent } from 'jslib-angular/components/remove-password.component';\n\n@Component({\n selector: 'app-remove-password',\n templateUrl: 'remove-password.component.html',\n})\nexport class RemovePasswordComponent extends BaseRemovePasswordComponent {\n}\n","
\"Bitwarden\"

{{'loading' | i18n}}

{{'removeMasterPassword' | i18n}}


{{'convertOrganizationEncryptionDesc' | i18n : organization.name}}

","import { Component } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport {\n SetPasswordComponent as BaseSetPasswordComponent,\n} from 'jslib-angular/components/set-password.component';\n\n@Component({\n selector: 'app-set-password',\n templateUrl: 'set-password.component.html',\n})\nexport class SetPasswordComponent extends BaseSetPasswordComponent {\n constructor(apiService: ApiService, i18nService: I18nService,\n cryptoService: CryptoService, messagingService: MessagingService,\n userService: UserService, passwordGenerationService: PasswordGenerationService,\n platformUtilsService: PlatformUtilsService, policyService: PolicyService, router: Router,\n syncService: SyncService, route: ActivatedRoute) {\n super(i18nService, cryptoService, messagingService, userService, passwordGenerationService,\n platformUtilsService, policyService, router, apiService, syncService, route);\n }\n}\n","

{{'setMasterPassword' | i18n}}

{{'loading' | i18n}}
{{'ssoCompleteRegistration' | i18n}} {{'resetPasswordAutoEnrollInviteWarning' | i18n}}
{{'masterPassDesc' | i18n}}
{{'masterPassHintDesc' | i18n}}

","import { Component } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { first } from 'rxjs/operators';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { CryptoFunctionService } from 'jslib-common/abstractions/cryptoFunction.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { SsoComponent as BaseSsoComponent } from 'jslib-angular/components/sso.component';\n\nconst IdentifierStorageKey = 'ssoOrgIdentifier';\n\n@Component({\n selector: 'app-sso',\n templateUrl: 'sso.component.html',\n})\nexport class SsoComponent extends BaseSsoComponent {\n constructor(authService: AuthService, router: Router,\n i18nService: I18nService, route: ActivatedRoute,\n storageService: StorageService, stateService: StateService,\n platformUtilsService: PlatformUtilsService, apiService: ApiService,\n cryptoFunctionService: CryptoFunctionService, environmentService: EnvironmentService,\n passwordGenerationService: PasswordGenerationService, logService: LogService) {\n super(authService, router, i18nService, route, storageService, stateService, platformUtilsService,\n apiService, cryptoFunctionService, environmentService, passwordGenerationService, logService);\n this.redirectUri = window.location.origin + '/sso-connector.html';\n this.clientId = 'web';\n }\n\n async ngOnInit() {\n super.ngOnInit();\n this.route.queryParams.pipe(first()).subscribe(async qParams => {\n if (qParams.identifier != null) {\n this.identifier = qParams.identifier;\n } else {\n const storedIdentifier = await this.storageService.get(IdentifierStorageKey);\n if (storedIdentifier != null) {\n this.identifier = storedIdentifier;\n }\n }\n });\n }\n\n async submit() {\n await this.storageService.save(IdentifierStorageKey, this.identifier);\n if (this.clientId === 'browser') {\n document.cookie = `ssoHandOffMessage=${this.i18nService.t('ssoHandOff')};SameSite=strict`;\n }\n super.submit();\n }\n}\n","
{{'loading' | i18n}}

{{'ssoLogInWithOrgIdentifier' | i18n}}


{{'cancel' | i18n}}
","import { Directive } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { first } from 'rxjs/operators';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { CryptoFunctionService } from 'jslib-common/abstractions/cryptoFunction.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\nimport { AuthResult } from 'jslib-common/models/domain/authResult';\n\n@Directive()\nexport class SsoComponent {\n identifier: string;\n loggingIn = false;\n\n formPromise: Promise;\n initiateSsoFormPromise: Promise;\n onSuccessfulLogin: () => Promise;\n onSuccessfulLoginNavigate: () => Promise;\n onSuccessfulLoginTwoFactorNavigate: () => Promise;\n onSuccessfulLoginChangePasswordNavigate: () => Promise;\n onSuccessfulLoginForceResetNavigate: () => Promise;\n\n protected twoFactorRoute = '2fa';\n protected successRoute = 'lock';\n protected changePasswordRoute = 'set-password';\n protected forcePasswordResetRoute = 'update-temp-password';\n protected clientId: string;\n protected redirectUri: string;\n protected state: string;\n protected codeChallenge: string;\n\n constructor(protected authService: AuthService, protected router: Router,\n protected i18nService: I18nService, protected route: ActivatedRoute,\n protected storageService: StorageService, protected stateService: StateService,\n protected platformUtilsService: PlatformUtilsService, protected apiService: ApiService,\n protected cryptoFunctionService: CryptoFunctionService, protected environmentService: EnvironmentService,\n protected passwordGenerationService: PasswordGenerationService, protected logService: LogService) { }\n\n async ngOnInit() {\n this.route.queryParams.pipe(first()).subscribe(async qParams => {\n if (qParams.code != null && qParams.state != null) {\n const codeVerifier = await this.storageService.get(ConstantsService.ssoCodeVerifierKey);\n const state = await this.storageService.get(ConstantsService.ssoStateKey);\n await this.storageService.remove(ConstantsService.ssoCodeVerifierKey);\n await this.storageService.remove(ConstantsService.ssoStateKey);\n if (qParams.code != null && codeVerifier != null && state != null && this.checkState(state, qParams.state)) {\n await this.logIn(qParams.code, codeVerifier, this.getOrgIdentifierFromState(qParams.state));\n }\n } else if (qParams.clientId != null && qParams.redirectUri != null && qParams.state != null &&\n qParams.codeChallenge != null) {\n this.redirectUri = qParams.redirectUri;\n this.state = qParams.state;\n this.codeChallenge = qParams.codeChallenge;\n this.clientId = qParams.clientId;\n }\n });\n }\n\n async submit(returnUri?: string, includeUserIdentifier?: boolean) {\n this.initiateSsoFormPromise = this.preValidate();\n if (await this.initiateSsoFormPromise) {\n const authorizeUrl = await this.buildAuthorizeUrl(returnUri, includeUserIdentifier);\n this.platformUtilsService.launchUri(authorizeUrl, { sameWindow: true });\n }\n }\n\n async preValidate(): Promise {\n if (this.identifier == null || this.identifier === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('ssoValidationFailed'),\n this.i18nService.t('ssoIdentifierRequired'));\n return false;\n }\n return await this.apiService.preValidateSso(this.identifier);\n }\n\n protected async buildAuthorizeUrl(returnUri?: string, includeUserIdentifier?: boolean): Promise {\n let codeChallenge = this.codeChallenge;\n let state = this.state;\n\n const passwordOptions: any = {\n type: 'password',\n length: 64,\n uppercase: true,\n lowercase: true,\n numbers: true,\n special: false,\n };\n\n if (codeChallenge == null) {\n const codeVerifier = await this.passwordGenerationService.generatePassword(passwordOptions);\n const codeVerifierHash = await this.cryptoFunctionService.hash(codeVerifier, 'sha256');\n codeChallenge = Utils.fromBufferToUrlB64(codeVerifierHash);\n await this.storageService.save(ConstantsService.ssoCodeVerifierKey, codeVerifier);\n }\n\n if (state == null) {\n state = await this.passwordGenerationService.generatePassword(passwordOptions);\n if (returnUri) {\n state += `_returnUri='${returnUri}'`;\n }\n }\n\n // Add Organization Identifier to state\n state += `_identifier=${this.identifier}`;\n\n // Save state (regardless of new or existing)\n await this.storageService.save(ConstantsService.ssoStateKey, state);\n\n let authorizeUrl = this.environmentService.getIdentityUrl() + '/connect/authorize?' +\n 'client_id=' + this.clientId + '&redirect_uri=' + encodeURIComponent(this.redirectUri) + '&' +\n 'response_type=code&scope=api offline_access&' +\n 'state=' + state + '&code_challenge=' + codeChallenge + '&' +\n 'code_challenge_method=S256&response_mode=query&' +\n 'domain_hint=' + encodeURIComponent(this.identifier);\n\n if (includeUserIdentifier) {\n const userIdentifier = await this.apiService.getSsoUserIdentifier();\n authorizeUrl += `&user_identifier=${encodeURIComponent(userIdentifier)}`;\n }\n\n return authorizeUrl;\n }\n\n private async logIn(code: string, codeVerifier: string, orgIdFromState: string) {\n this.loggingIn = true;\n try {\n this.formPromise = this.authService.logInSso(code, codeVerifier, this.redirectUri, orgIdFromState);\n const response = await this.formPromise;\n if (response.twoFactor) {\n if (this.onSuccessfulLoginTwoFactorNavigate != null) {\n this.onSuccessfulLoginTwoFactorNavigate();\n } else {\n this.router.navigate([this.twoFactorRoute], {\n queryParams: {\n identifier: orgIdFromState,\n sso: 'true',\n },\n });\n }\n } else if (response.resetMasterPassword) {\n if (this.onSuccessfulLoginChangePasswordNavigate != null) {\n this.onSuccessfulLoginChangePasswordNavigate();\n } else {\n this.router.navigate([this.changePasswordRoute], {\n queryParams: {\n identifier: orgIdFromState,\n },\n });\n }\n } else if (response.forcePasswordReset) {\n if (this.onSuccessfulLoginForceResetNavigate != null) {\n this.onSuccessfulLoginForceResetNavigate();\n } else {\n this.router.navigate([this.forcePasswordResetRoute]);\n }\n } else {\n const disableFavicon = await this.storageService.get(ConstantsService.disableFaviconKey);\n await this.stateService.save(ConstantsService.disableFaviconKey, !!disableFavicon);\n if (this.onSuccessfulLogin != null) {\n this.onSuccessfulLogin();\n }\n if (this.onSuccessfulLoginNavigate != null) {\n this.onSuccessfulLoginNavigate();\n } else {\n this.router.navigate([this.successRoute]);\n }\n }\n } catch (e) {\n this.logService.error(e);\n if (e.message === 'Unable to reach key connector') {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('ssoKeyConnectorUnavailable'));\n }\n }\n this.loggingIn = false;\n }\n\n private getOrgIdentifierFromState(state: string): string {\n if (state === null || state === undefined) {\n return null;\n }\n\n const stateSplit = state.split('_identifier=');\n return stateSplit.length > 1 ? stateSplit[1] : null;\n }\n\n private checkState(state: string, checkState: string): boolean {\n if (state === null || state === undefined) {\n return false;\n }\n if (checkState === null || checkState === undefined) {\n return false;\n }\n\n const stateSplit = state.split('_identifier=');\n const checkStateSplit = checkState.split('_identifier=');\n return stateSplit[0] === checkStateSplit[0];\n }\n}\n","import {\n Component,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\nimport { TwoFactorComponent as BaseTwoFactorComponent } from 'jslib-angular/components/two-factor.component';\n\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { TwoFactorOptionsComponent } from './two-factor-options.component';\n\n@Component({\n selector: 'app-two-factor',\n templateUrl: 'two-factor.component.html',\n})\nexport class TwoFactorComponent extends BaseTwoFactorComponent {\n @ViewChild('twoFactorOptions', { read: ViewContainerRef, static: true }) twoFactorOptionsModal: ViewContainerRef;\n\n constructor(authService: AuthService, router: Router,\n i18nService: I18nService, apiService: ApiService,\n platformUtilsService: PlatformUtilsService, stateService: StateService,\n environmentService: EnvironmentService, private modalService: ModalService,\n storageService: StorageService, route: ActivatedRoute, logService: LogService) {\n super(authService, router, i18nService, apiService, platformUtilsService, window, environmentService,\n stateService, storageService, route, logService);\n this.onSuccessfulLoginNavigate = this.goAfterLogIn;\n }\n\n async anotherMethod() {\n const [modal] = await this.modalService.openViewRef(TwoFactorOptionsComponent, this.twoFactorOptionsModal, comp => {\n comp.onProviderSelected.subscribe(async (provider: TwoFactorProviderType) => {\n modal.close();\n this.selectedProviderType = provider;\n await this.init();\n });\n comp.onRecoverSelected.subscribe(() => {\n modal.close();\n });\n });\n }\n\n async goAfterLogIn() {\n const loginRedirect = await this.stateService.get('loginRedirect');\n if (loginRedirect != null) {\n this.router.navigate([loginRedirect.route], { queryParams: loginRedirect.qParams });\n await this.stateService.remove('loginRedirect');\n } else {\n this.router.navigate([this.successRoute], {\n queryParams: {\n identifier: this.identifier,\n },\n });\n }\n }\n}\n","

{{title}}

{{'enterVerificationCodeApp' | i18n}}

{{'enterVerificationCodeEmail' | i18n : twoFactorEmail}}

{{'sendVerificationCodeEmailAgain' | i18n}}

{{'insertYubiKey' | i18n}}

\"\"

{{'noTwoStepProviders' | i18n}}

{{'noTwoStepProviders2' | i18n}}


{{'cancel' | i18n}}
","import { SecretVerificationRequest } from './secretVerificationRequest';\n\nexport class TwoFactorEmailRequest extends SecretVerificationRequest {\n email: string;\n}\n","export class KeyConnectorUserKeyRequest {\n key: string;\n\n constructor(key: string) {\n this.key = key;\n }\n}\n","import { Component } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport {\n TwoFactorOptionsComponent as BaseTwoFactorOptionsComponent,\n} from 'jslib-angular/components/two-factor-options.component';\n\n@Component({\n selector: 'app-two-factor-options',\n templateUrl: 'two-factor-options.component.html',\n})\nexport class TwoFactorOptionsComponent extends BaseTwoFactorOptionsComponent {\n constructor(authService: AuthService, router: Router,\n i18nService: I18nService, platformUtilsService: PlatformUtilsService) {\n super(authService, router, i18nService, platformUtilsService, window);\n }\n}\n","

{{'twoStepOptions' | i18n}}

{{p.name}}

{{p.description}}
\"rc

{{'recoveryCodeTitle' | i18n}}

{{'recoveryCodeDesc' | i18n}}
","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { UpdateTempPasswordComponent as BaseUpdateTempPasswordComponent } from 'jslib-angular/components/update-temp-password.component';\n\n@Component({\n selector: 'app-update-temp-password',\n templateUrl: 'update-temp-password.component.html',\n})\n\nexport class UpdateTempPasswordComponent extends BaseUpdateTempPasswordComponent {\n constructor(i18nService: I18nService, platformUtilsService: PlatformUtilsService,\n passwordGenerationService: PasswordGenerationService, policyService: PolicyService,\n cryptoService: CryptoService, userService: UserService,\n messagingService: MessagingService, apiService: ApiService,\n syncService: SyncService, logService: LogService) {\n super(i18nService, platformUtilsService, passwordGenerationService, policyService, cryptoService,\n userService, messagingService, apiService, syncService, logService);\n }\n}\n","

{{'updateMasterPassword' | i18n}}

{{'updateMasterPasswordWarning' | i18n}}
{{'masterPassHintDesc' | i18n}}

","export class OrganizationUserResetPasswordRequest {\n newMasterPasswordHash: string;\n key: string;\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { first } from 'rxjs/operators';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { VerifyEmailRequest } from 'jslib-common/models/request/verifyEmailRequest';\n\n@Component({\n selector: 'app-verify-email-token',\n templateUrl: 'verify-email-token.component.html',\n})\nexport class VerifyEmailTokenComponent implements OnInit {\n constructor(private router: Router, private toasterService: ToasterService,\n private i18nService: I18nService, private route: ActivatedRoute,\n private apiService: ApiService, private userService: UserService,\n private logService: LogService) { }\n\n ngOnInit() {\n this.route.queryParams.pipe(first()).subscribe(async qParams => {\n if (qParams.userId != null && qParams.token != null) {\n try {\n await this.apiService.postAccountVerifyEmailToken(\n new VerifyEmailRequest(qParams.userId, qParams.token));\n const authed = await this.userService.isAuthenticated();\n if (authed) {\n await this.apiService.refreshIdentityToken();\n }\n this.toasterService.popAsync('success', null, this.i18nService.t('emailVerified'));\n this.router.navigate(['/']);\n return;\n } catch (e) {\n this.logService.error(e);\n }\n }\n this.toasterService.popAsync('error', null, this.i18nService.t('emailVerifiedFailed'));\n this.router.navigate(['/']);\n });\n }\n}\n","
\"Bitwarden\"

{{'loading' | i18n}}

","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { first } from 'rxjs/operators';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\n\nimport { VerifyDeleteRecoverRequest } from 'jslib-common/models/request/verifyDeleteRecoverRequest';\n\n@Component({\n selector: 'app-verify-recover-delete',\n templateUrl: 'verify-recover-delete.component.html',\n})\nexport class VerifyRecoverDeleteComponent implements OnInit {\n email: string;\n formPromise: Promise;\n\n private userId: string;\n private token: string;\n\n constructor(private router: Router, private apiService: ApiService,\n private toasterService: ToasterService, private i18nService: I18nService,\n private route: ActivatedRoute, private logService: LogService) {\n }\n\n ngOnInit() {\n this.route.queryParams.pipe(first()).subscribe(async qParams => {\n if (qParams.userId != null && qParams.token != null && qParams.email != null) {\n this.userId = qParams.userId;\n this.token = qParams.token;\n this.email = qParams.email;\n } else {\n this.router.navigate(['/']);\n }\n });\n }\n\n async submit() {\n try {\n const request = new VerifyDeleteRecoverRequest(this.userId, this.token);\n this.formPromise = this.apiService.postAccountRecoverDeleteToken(request);\n await this.formPromise;\n this.toasterService.popAsync('success', this.i18nService.t('accountDeleted'),\n this.i18nService.t('accountDeletedDesc'));\n this.router.navigate(['/']);\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","

{{'deleteAccount' | i18n}}

{{'deleteAccountWarning' | i18n}}

{{email}}

{{'deleteRecoverConfirmDesc' | i18n}}


{{'cancel' | i18n}}
","import {\n Component,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ToasterService } from 'angular2-toaster';\n\nimport { first } from 'rxjs/operators';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SearchService } from 'jslib-common/abstractions/search.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { CollectionData } from 'jslib-common/models/data/collectionData';\nimport { Collection } from 'jslib-common/models/domain/collection';\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport {\n CollectionDetailsResponse,\n CollectionResponse,\n} from 'jslib-common/models/response/collectionResponse';\nimport { ListResponse } from 'jslib-common/models/response/listResponse';\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\n\nimport { CollectionAddEditComponent } from './collection-add-edit.component';\nimport { EntityUsersComponent } from './entity-users.component';\n\n@Component({\n selector: 'app-org-manage-collections',\n templateUrl: 'collections.component.html',\n})\nexport class CollectionsComponent implements OnInit {\n @ViewChild('addEdit', { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef;\n @ViewChild('usersTemplate', { read: ViewContainerRef, static: true }) usersModalRef: ViewContainerRef;\n\n loading = true;\n organization: Organization;\n canCreate: boolean = false;\n organizationId: string;\n collections: CollectionView[];\n assignedCollections: CollectionView[];\n pagedCollections: CollectionView[];\n searchText: string;\n\n protected didScroll = false;\n protected pageSize = 100;\n\n private pagedCollectionsCount = 0;\n\n constructor(private apiService: ApiService, private route: ActivatedRoute,\n private collectionService: CollectionService, private modalService: ModalService,\n private toasterService: ToasterService, private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService, private userService: UserService,\n private searchService: SearchService, private logService: LogService) { }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n await this.load();\n this.route.queryParams.pipe(first()).subscribe(async qParams => {\n this.searchText = qParams.search;\n });\n });\n }\n\n async load() {\n this.organization = await this.userService.getOrganization(this.organizationId);\n this.canCreate = this.organization.canCreateNewCollections;\n\n const decryptCollections = async (r: ListResponse) => {\n const collections = r.data.filter(c => c.organizationId === this.organizationId).map(d =>\n new Collection(new CollectionData(d as CollectionDetailsResponse)));\n return await this.collectionService.decryptMany(collections);\n };\n\n if (this.organization.canViewAssignedCollections) {\n const response = await this.apiService.getUserCollections();\n this.assignedCollections = await decryptCollections(response);\n }\n\n if (this.organization.canViewAllCollections) {\n const response = await this.apiService.getCollections(this.organizationId);\n this.collections = await decryptCollections(response);\n } else {\n this.collections = this.assignedCollections;\n }\n\n this.resetPaging();\n this.loading = false;\n }\n\n loadMore() {\n if (!this.collections || this.collections.length <= this.pageSize) {\n return;\n }\n const pagedLength = this.pagedCollections.length;\n let pagedSize = this.pageSize;\n if (pagedLength === 0 && this.pagedCollectionsCount > this.pageSize) {\n pagedSize = this.pagedCollectionsCount;\n }\n if (this.collections.length > pagedLength) {\n this.pagedCollections =\n this.pagedCollections.concat(this.collections.slice(pagedLength, pagedLength + pagedSize));\n }\n this.pagedCollectionsCount = this.pagedCollections.length;\n this.didScroll = this.pagedCollections.length > this.pageSize;\n }\n\n async edit(collection: CollectionView) {\n const canCreate = collection == null && this.canCreate;\n const canEdit = collection != null && this.canEdit(collection);\n const canDelete = collection != null && this.canDelete(collection);\n\n if (!(canCreate || canEdit || canDelete)) {\n this.toasterService.popAsync('error', null, this.i18nService.t('missingPermissions'));\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(CollectionAddEditComponent, this.addEditModalRef, comp => {\n comp.organizationId = this.organizationId;\n comp.collectionId = collection != null ? collection.id : null;\n comp.canSave = canCreate || canEdit;\n comp.canDelete = canDelete;\n comp.onSavedCollection.subscribe(() => {\n modal.close();\n this.load();\n });\n comp.onDeletedCollection.subscribe(() => {\n modal.close();\n this.removeCollection(collection);\n });\n });\n }\n\n add() {\n this.edit(null);\n }\n\n async delete(collection: CollectionView) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteCollectionConfirmation'), collection.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n await this.apiService.deleteCollection(this.organizationId, collection.id);\n this.toasterService.popAsync('success', null, this.i18nService.t('deletedCollectionId', collection.name));\n this.removeCollection(collection);\n } catch (e) {\n this.logService.error(e);\n this.toasterService.popAsync('error', null, this.i18nService.t('missingPermissions'));\n }\n }\n\n async users(collection: CollectionView) {\n const [modal] = await this.modalService.openViewRef(EntityUsersComponent, this.usersModalRef, comp => {\n comp.organizationId = this.organizationId;\n comp.entity = 'collection';\n comp.entityId = collection.id;\n comp.entityName = collection.name;\n\n comp.onEditedUsers.subscribe(() => {\n this.load();\n modal.close();\n });\n });\n }\n\n async resetPaging() {\n this.pagedCollections = [];\n this.loadMore();\n }\n\n isSearching() {\n return this.searchService.isSearchable(this.searchText);\n }\n\n isPaging() {\n const searching = this.isSearching();\n if (searching && this.didScroll) {\n this.resetPaging();\n }\n return !searching && this.collections && this.collections.length > this.pageSize;\n }\n\n canEdit(collection: CollectionView) {\n if (this.organization.canEditAnyCollection) {\n return true;\n }\n\n if (this.organization.canEditAssignedCollections && this.assignedCollections.some(c => c.id === collection.id)) {\n return true;\n }\n return false;\n }\n\n canDelete(collection: CollectionView) {\n if (this.organization.canDeleteAnyCollection) {\n return true;\n }\n\n if (this.organization.canDeleteAssignedCollections && this.assignedCollections.some(c => c.id === collection.id)) {\n return true;\n }\n return false;\n }\n\n private removeCollection(collection: CollectionView) {\n const index = this.collections.indexOf(collection);\n if (index > -1) {\n this.collections.splice(index, 1);\n this.resetPaging();\n }\n }\n}\n","

{{'collections' | i18n}}

{{'loading' | i18n}}

{{'noCollectionsInList' | i18n}}

{{c.name}}
","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { EncString } from 'jslib-common/models/domain/encString';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\nimport { CollectionRequest } from 'jslib-common/models/request/collectionRequest';\nimport { SelectionReadOnlyRequest } from 'jslib-common/models/request/selectionReadOnlyRequest';\nimport { GroupResponse } from 'jslib-common/models/response/groupResponse';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Component({\n selector: 'app-collection-add-edit',\n templateUrl: 'collection-add-edit.component.html',\n})\nexport class CollectionAddEditComponent implements OnInit {\n @Input() collectionId: string;\n @Input() organizationId: string;\n @Input() canSave: boolean;\n @Input() canDelete: boolean;\n @Output() onSavedCollection = new EventEmitter();\n @Output() onDeletedCollection = new EventEmitter();\n\n loading = true;\n editMode: boolean = false;\n accessGroups: boolean = false;\n title: string;\n name: string;\n externalId: string;\n groups: GroupResponse[] = [];\n formPromise: Promise;\n deletePromise: Promise;\n\n private orgKey: SymmetricCryptoKey;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService, private userService: UserService,\n private logService: LogService) { }\n\n async ngOnInit() {\n const organization = await this.userService.getOrganization(this.organizationId);\n this.accessGroups = organization.useGroups;\n this.editMode = this.loading = this.collectionId != null;\n if (this.accessGroups) {\n const groupsResponse = await this.apiService.getGroups(this.organizationId);\n this.groups = groupsResponse.data.map(r => r).sort(Utils.getSortFunction(this.i18nService, 'name'));\n }\n this.orgKey = await this.cryptoService.getOrgKey(this.organizationId);\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t('editCollection');\n try {\n const collection = await this.apiService.getCollectionDetails(this.organizationId, this.collectionId);\n this.name = await this.cryptoService.decryptToUtf8(new EncString(collection.name), this.orgKey);\n this.externalId = collection.externalId;\n if (collection.groups != null && this.groups.length > 0) {\n collection.groups.forEach(s => {\n const group = this.groups.filter(g => !g.accessAll && g.id === s.id);\n if (group != null && group.length > 0) {\n (group[0] as any).checked = true;\n (group[0] as any).readOnly = s.readOnly;\n (group[0] as any).hidePasswords = s.hidePasswords;\n }\n });\n }\n } catch (e) {\n this.logService.error(e);\n }\n } else {\n this.title = this.i18nService.t('addCollection');\n }\n\n this.groups.forEach(g => {\n if (g.accessAll) {\n (g as any).checked = true;\n }\n });\n\n this.loading = false;\n }\n\n check(g: GroupResponse, select?: boolean) {\n if (g.accessAll) {\n return;\n }\n (g as any).checked = select == null ? !(g as any).checked : select;\n if (!(g as any).checked) {\n (g as any).readOnly = false;\n (g as any).hidePasswords = false;\n }\n }\n\n selectAll(select: boolean) {\n this.groups.forEach(g => this.check(g, select));\n }\n\n async submit() {\n if (this.orgKey == null) {\n throw new Error('No encryption key for this organization.');\n }\n\n const request = new CollectionRequest();\n request.name = (await this.cryptoService.encrypt(this.name, this.orgKey)).encryptedString;\n request.externalId = this.externalId;\n request.groups = this.groups.filter(g => (g as any).checked && !g.accessAll)\n .map(g => new SelectionReadOnlyRequest(g.id, !!(g as any).readOnly, !!(g as any).hidePasswords));\n\n try {\n if (this.editMode) {\n this.formPromise = this.apiService.putCollection(this.organizationId, this.collectionId, request);\n } else {\n this.formPromise = this.apiService.postCollection(this.organizationId, request);\n }\n await this.formPromise;\n this.toasterService.popAsync('success', null,\n this.i18nService.t(this.editMode ? 'editedCollectionId' : 'createdCollectionId', this.name));\n this.onSavedCollection.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async delete() {\n if (!this.editMode) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteCollectionConfirmation'), this.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.apiService.deleteCollection(this.organizationId, this.collectionId);\n await this.deletePromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('deletedCollectionId', this.name));\n this.onDeletedCollection.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","

{{title}}

{{'loading' | i18n}}
{{'externalIdDesc' | i18n}}

{{'groupAccess' | i18n}}

{{'noGroupsInList' | i18n}}
  {{'name' | i18n}} {{'hidePasswords' | i18n}} {{'readOnly' | i18n}}
{{g.name}} {{'groupAccessAllItems' | i18n}}
","import { Collection } from '../domain/collection';\n\nimport { SelectionReadOnlyRequest } from './selectionReadOnlyRequest';\n\nexport class CollectionRequest {\n name: string;\n externalId: string;\n groups: SelectionReadOnlyRequest[] = [];\n\n constructor(collection?: Collection) {\n if (collection == null) {\n return;\n }\n this.name = collection.name ? collection.name.encryptedString : null;\n this.externalId = collection.externalId;\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { ToasterService } from 'angular2-toaster';\n\nimport { UserNamePipe } from 'jslib-angular/pipes/user-name.pipe';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { ExportService } from 'jslib-common/abstractions/export.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { EventResponse } from 'jslib-common/models/response/eventResponse';\n\nimport { EventService } from '../../services/event.service';\n\nimport { BaseEventsComponent } from '../../common/base.events.component';\n\n@Component({\n selector: 'app-org-events',\n templateUrl: 'events.component.html',\n})\nexport class EventsComponent extends BaseEventsComponent implements OnInit {\n exportFileName: string = 'org-events';\n organizationId: string;\n organization: Organization;\n\n private orgUsersUserIdMap = new Map();\n\n constructor(private apiService: ApiService, private route: ActivatedRoute, eventService: EventService,\n i18nService: I18nService, toasterService: ToasterService, private userService: UserService,\n exportService: ExportService, platformUtilsService: PlatformUtilsService, private router: Router,\n logService: LogService, private userNamePipe: UserNamePipe) {\n super(eventService, i18nService, toasterService, exportService, platformUtilsService, logService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n this.organization = await this.userService.getOrganization(this.organizationId);\n if (this.organization == null || !this.organization.useEvents) {\n this.router.navigate(['/organizations', this.organizationId]);\n return;\n }\n\n await this.load();\n });\n }\n\n async load() {\n const response = await this.apiService.getOrganizationUsers(this.organizationId);\n response.data.forEach(u => {\n const name = this.userNamePipe.transform(u);\n this.orgUsersUserIdMap.set(u.userId, { name: name, email: u.email });\n });\n\n if (this.organization.providerId != null) {\n try {\n const provider = await this.userService.getProvider(this.organization.providerId);\n if (provider != null && (await this.userService.getProvider(this.organization.providerId)).canManageUsers) {\n const providerUsersResponse = await this.apiService.getProviderUsers(this.organization.providerId);\n providerUsersResponse.data.forEach(u => {\n const name = this.userNamePipe.transform(u);\n this.orgUsersUserIdMap.set(u.userId, { name: `${name} (${this.organization.providerName})`, email: u.email });\n });\n }\n } catch (e) {\n this.logService.warning(e);\n }\n }\n\n await this.loadEvents(true);\n this.loaded = true;\n }\n\n protected requestEvents(startDate: string, endDate: string, continuationToken: string) {\n return this.apiService.getEventsOrganization(this.organizationId, startDate, endDate, continuationToken);\n }\n\n protected getUserName(r: EventResponse, userId: string) {\n if (userId == null) {\n return null;\n }\n\n if (this.orgUsersUserIdMap.has(userId)) {\n return this.orgUsersUserIdMap.get(userId);\n }\n\n if (r.providerId != null && r.providerId === this.organization.providerId) {\n return {\n 'name': this.organization.providerName,\n };\n }\n\n return null;\n }\n}\n","

{{'eventLogs' | i18n}}

-
{{'loading' | i18n}}

{{'noEventsInList' | i18n}}

{{'timestamp' | i18n}} {{'device' | i18n}} {{'user' | i18n}} {{'event' | i18n}}
{{e.date | date:'medium'}} {{e.appName}}, {{e.ip}} {{e.userName}}
","import {\n Component,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { first } from 'rxjs/operators';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SearchService } from 'jslib-common/abstractions/search.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { GroupResponse } from 'jslib-common/models/response/groupResponse';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\nimport { EntityUsersComponent } from './entity-users.component';\nimport { GroupAddEditComponent } from './group-add-edit.component';\n\n@Component({\n selector: 'app-org-groups',\n templateUrl: 'groups.component.html',\n})\nexport class GroupsComponent implements OnInit {\n @ViewChild('addEdit', { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef;\n @ViewChild('usersTemplate', { read: ViewContainerRef, static: true }) usersModalRef: ViewContainerRef;\n\n loading = true;\n organizationId: string;\n groups: GroupResponse[];\n pagedGroups: GroupResponse[];\n searchText: string;\n\n protected didScroll = false;\n protected pageSize = 100;\n\n private pagedGroupsCount = 0;\n\n constructor(private apiService: ApiService, private route: ActivatedRoute,\n private i18nService: I18nService, private modalService: ModalService,\n private toasterService: ToasterService, private platformUtilsService: PlatformUtilsService,\n private userService: UserService, private router: Router,\n private searchService: SearchService, private logService: LogService) { }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n const organization = await this.userService.getOrganization(this.organizationId);\n if (organization == null || !organization.useGroups) {\n this.router.navigate(['/organizations', this.organizationId]);\n return;\n }\n await this.load();\n this.route.queryParams.pipe(first()).subscribe(async qParams => {\n this.searchText = qParams.search;\n });\n });\n }\n\n async load() {\n const response = await this.apiService.getGroups(this.organizationId);\n const groups = response.data != null && response.data.length > 0 ? response.data : [];\n groups.sort(Utils.getSortFunction(this.i18nService, 'name'));\n this.groups = groups;\n this.resetPaging();\n this.loading = false;\n }\n\n loadMore() {\n if (!this.groups || this.groups.length <= this.pageSize) {\n return;\n }\n const pagedLength = this.pagedGroups.length;\n let pagedSize = this.pageSize;\n if (pagedLength === 0 && this.pagedGroupsCount > this.pageSize) {\n pagedSize = this.pagedGroupsCount;\n }\n if (this.groups.length > pagedLength) {\n this.pagedGroups = this.pagedGroups.concat(this.groups.slice(pagedLength, pagedLength + pagedSize));\n }\n this.pagedGroupsCount = this.pagedGroups.length;\n this.didScroll = this.pagedGroups.length > this.pageSize;\n }\n\n async edit(group: GroupResponse) {\n const [modal] = await this.modalService.openViewRef(GroupAddEditComponent, this.addEditModalRef, comp => {\n comp.organizationId = this.organizationId;\n comp.groupId = group != null ? group.id : null;\n comp.onSavedGroup.subscribe(() => {\n modal.close();\n this.load();\n });\n comp.onDeletedGroup.subscribe(() => {\n modal.close();\n this.removeGroup(group);\n });\n });\n }\n\n add() {\n this.edit(null);\n }\n\n async delete(group: GroupResponse) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteGroupConfirmation'), group.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n await this.apiService.deleteGroup(this.organizationId, group.id);\n this.toasterService.popAsync('success', null, this.i18nService.t('deletedGroupId', group.name));\n this.removeGroup(group);\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async users(group: GroupResponse) {\n const [modal] = await this.modalService.openViewRef(EntityUsersComponent, this.usersModalRef, comp => {\n comp.organizationId = this.organizationId;\n comp.entity = 'group';\n comp.entityId = group.id;\n comp.entityName = group.name;\n\n comp.onEditedUsers.subscribe(() => {\n modal.close();\n });\n });\n }\n\n async resetPaging() {\n this.pagedGroups = [];\n this.loadMore();\n }\n\n isSearching() {\n return this.searchService.isSearchable(this.searchText);\n }\n\n isPaging() {\n const searching = this.isSearching();\n if (searching && this.didScroll) {\n this.resetPaging();\n }\n return !searching && this.groups && this.groups.length > this.pageSize;\n }\n\n private removeGroup(group: GroupResponse) {\n const index = this.groups.indexOf(group);\n if (index > -1) {\n this.groups.splice(index, 1);\n this.resetPaging();\n }\n }\n}\n","

{{'groups' | i18n}}

{{'loading' | i18n}}

{{'noGroupsInList' | i18n}}

{{g.name}}
","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { CollectionData } from 'jslib-common/models/data/collectionData';\nimport { Collection } from 'jslib-common/models/domain/collection';\nimport { GroupRequest } from 'jslib-common/models/request/groupRequest';\nimport { SelectionReadOnlyRequest } from 'jslib-common/models/request/selectionReadOnlyRequest';\nimport { CollectionDetailsResponse } from 'jslib-common/models/response/collectionResponse';\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\n\n@Component({\n selector: 'app-group-add-edit',\n templateUrl: 'group-add-edit.component.html',\n})\nexport class GroupAddEditComponent implements OnInit {\n @Input() groupId: string;\n @Input() organizationId: string;\n @Output() onSavedGroup = new EventEmitter();\n @Output() onDeletedGroup = new EventEmitter();\n\n loading = true;\n editMode: boolean = false;\n title: string;\n name: string;\n externalId: string;\n access: 'all' | 'selected' = 'selected';\n collections: CollectionView[] = [];\n formPromise: Promise;\n deletePromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private collectionService: CollectionService,\n private platformUtilsService: PlatformUtilsService, private logService: LogService) { }\n\n async ngOnInit() {\n this.editMode = this.loading = this.groupId != null;\n await this.loadCollections();\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t('editGroup');\n try {\n const group = await this.apiService.getGroupDetails(this.organizationId, this.groupId);\n this.access = group.accessAll ? 'all' : 'selected';\n this.name = group.name;\n this.externalId = group.externalId;\n if (group.collections != null && this.collections != null) {\n group.collections.forEach(s => {\n const collection = this.collections.filter(c => c.id === s.id);\n if (collection != null && collection.length > 0) {\n (collection[0] as any).checked = true;\n collection[0].readOnly = s.readOnly;\n collection[0].hidePasswords = s.hidePasswords;\n }\n });\n }\n } catch (e) {\n this.logService.error(e);\n }\n } else {\n this.title = this.i18nService.t('addGroup');\n }\n\n this.loading = false;\n }\n\n async loadCollections() {\n const response = await this.apiService.getCollections(this.organizationId);\n const collections = response.data.map(r =>\n new Collection(new CollectionData(r as CollectionDetailsResponse)));\n this.collections = await this.collectionService.decryptMany(collections);\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n if (!(c as any).checked) {\n c.readOnly = false;\n }\n }\n\n selectAll(select: boolean) {\n this.collections.forEach(c => this.check(c, select));\n }\n\n async submit() {\n const request = new GroupRequest();\n request.name = this.name;\n request.externalId = this.externalId;\n request.accessAll = this.access === 'all';\n if (!request.accessAll) {\n request.collections = this.collections.filter(c => (c as any).checked)\n .map(c => new SelectionReadOnlyRequest(c.id, !!c.readOnly, !!c.hidePasswords));\n }\n\n try {\n if (this.editMode) {\n this.formPromise = this.apiService.putGroup(this.organizationId, this.groupId, request);\n } else {\n this.formPromise = this.apiService.postGroup(this.organizationId, request);\n }\n await this.formPromise;\n this.toasterService.popAsync('success', null,\n this.i18nService.t(this.editMode ? 'editedGroupId' : 'createdGroupId', this.name));\n this.onSavedGroup.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async delete() {\n if (!this.editMode) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteGroupConfirmation'), this.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.apiService.deleteGroup(this.organizationId, this.groupId);\n await this.deletePromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('deletedGroupId', this.name));\n this.onDeletedGroup.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","

{{title}}

{{'loading' | i18n}}
{{'externalIdDesc' | i18n}}

{{'accessControl' | i18n}}

{{'noCollectionsInList' | i18n}}
  {{'name' | i18n}} {{'hidePasswords' | i18n}} {{'readOnly' | i18n}}
{{c.name}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\n@Component({\n selector: 'app-org-manage',\n templateUrl: 'manage.component.html',\n})\nexport class ManageComponent implements OnInit {\n organization: Organization;\n accessPolicies: boolean = false;\n accessGroups: boolean = false;\n accessEvents: boolean = false;\n accessSso: boolean = false;\n\n constructor(private route: ActivatedRoute, private userService: UserService) {}\n\n ngOnInit() {\n this.route.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n this.accessPolicies = this.organization.usePolicies;\n this.accessSso = this.organization.useSso;\n this.accessEvents = this.organization.useEvents;\n this.accessGroups = this.organization.useGroups;\n });\n }\n}\n"," ","import {\n Component,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { first } from 'rxjs/operators';\n\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ValidationService } from 'jslib-angular/services/validation.service';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SearchService } from 'jslib-common/abstractions/search.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { OrganizationKeysRequest } from 'jslib-common/models/request/organizationKeysRequest';\nimport { OrganizationUserBulkRequest } from 'jslib-common/models/request/organizationUserBulkRequest';\nimport { OrganizationUserConfirmRequest } from 'jslib-common/models/request/organizationUserConfirmRequest';\n\nimport { ListResponse } from 'jslib-common/models/response/listResponse';\nimport { OrganizationUserBulkResponse } from 'jslib-common/models/response/organizationUserBulkResponse';\nimport { OrganizationUserUserDetailsResponse } from 'jslib-common/models/response/organizationUserResponse';\n\nimport { OrganizationUserStatusType } from 'jslib-common/enums/organizationUserStatusType';\nimport { OrganizationUserType } from 'jslib-common/enums/organizationUserType';\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { SearchPipe } from 'jslib-angular/pipes/search.pipe';\nimport { UserNamePipe } from 'jslib-angular/pipes/user-name.pipe';\n\nimport { BasePeopleComponent } from '../../common/base.people.component';\nimport { BulkConfirmComponent } from './bulk/bulk-confirm.component';\nimport { BulkRemoveComponent } from './bulk/bulk-remove.component';\nimport { BulkStatusComponent } from './bulk/bulk-status.component';\nimport { EntityEventsComponent } from './entity-events.component';\nimport { ResetPasswordComponent } from './reset-password.component';\nimport { UserAddEditComponent } from './user-add-edit.component';\nimport { UserGroupsComponent } from './user-groups.component';\n\n@Component({\n selector: 'app-org-people',\n templateUrl: 'people.component.html',\n})\nexport class PeopleComponent extends BasePeopleComponent implements OnInit {\n @ViewChild('addEdit', { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef;\n @ViewChild('groupsTemplate', { read: ViewContainerRef, static: true }) groupsModalRef: ViewContainerRef;\n @ViewChild('eventsTemplate', { read: ViewContainerRef, static: true }) eventsModalRef: ViewContainerRef;\n @ViewChild('confirmTemplate', { read: ViewContainerRef, static: true }) confirmModalRef: ViewContainerRef;\n @ViewChild('resetPasswordTemplate', { read: ViewContainerRef, static: true }) resetPasswordModalRef: ViewContainerRef;\n @ViewChild('bulkStatusTemplate', { read: ViewContainerRef, static: true }) bulkStatusModalRef: ViewContainerRef;\n @ViewChild('bulkConfirmTemplate', { read: ViewContainerRef, static: true }) bulkConfirmModalRef: ViewContainerRef;\n @ViewChild('bulkRemoveTemplate', { read: ViewContainerRef, static: true }) bulkRemoveModalRef: ViewContainerRef;\n\n userType = OrganizationUserType;\n userStatusType = OrganizationUserStatusType;\n\n organizationId: string;\n status: OrganizationUserStatusType = null;\n accessEvents = false;\n accessGroups = false;\n canResetPassword = false; // User permission (admin/custom)\n orgUseResetPassword = false; // Org plan ability\n orgHasKeys = false; // Org public/private keys\n orgResetPasswordPolicyEnabled = false;\n callingUserType: OrganizationUserType = null;\n\n constructor(apiService: ApiService, private route: ActivatedRoute,\n i18nService: I18nService, modalService: ModalService,\n platformUtilsService: PlatformUtilsService, toasterService: ToasterService,\n cryptoService: CryptoService, private userService: UserService, private router: Router,\n storageService: StorageService, searchService: SearchService,\n validationService: ValidationService, private policyService: PolicyService,\n logService: LogService, searchPipe: SearchPipe, userNamePipe: UserNamePipe, private syncService: SyncService) {\n super(apiService, searchService, i18nService, platformUtilsService, toasterService, cryptoService,\n storageService, validationService, modalService, logService, searchPipe, userNamePipe);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n const organization = await this.userService.getOrganization(this.organizationId);\n if (!organization.canManageUsers) {\n this.router.navigate(['../collections'], { relativeTo: this.route });\n return;\n }\n this.accessEvents = organization.useEvents;\n this.accessGroups = organization.useGroups;\n this.canResetPassword = organization.canManageUsersPassword;\n this.orgUseResetPassword = organization.useResetPassword;\n this.callingUserType = organization.type;\n this.orgHasKeys = organization.hasPublicAndPrivateKeys;\n\n // Backfill pub/priv key if necessary\n if (this.canResetPassword && !this.orgHasKeys) {\n const orgShareKey = await this.cryptoService.getOrgKey(this.organizationId);\n const orgKeys = await this.cryptoService.makeKeyPair(orgShareKey);\n const request = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString);\n const response = await this.apiService.postOrganizationKeys(this.organizationId, request);\n if (response != null) {\n this.orgHasKeys = response.publicKey != null && response.privateKey != null;\n await this.syncService.fullSync(true); // Replace oganizations with new data\n } else {\n throw new Error(this.i18nService.t('resetPasswordOrgKeysError'));\n }\n }\n\n await this.load();\n\n this.route.queryParams.pipe(first()).subscribe(async qParams => {\n this.searchText = qParams.search;\n if (qParams.viewEvents != null) {\n const user = this.users.filter(u => u.id === qParams.viewEvents);\n if (user.length > 0 && user[0].status === OrganizationUserStatusType.Confirmed) {\n this.events(user[0]);\n }\n }\n });\n });\n }\n\n async load() {\n const resetPasswordPolicy = await this.policyService.getPolicyForOrganization(PolicyType.ResetPassword,\n this.organizationId);\n this.orgResetPasswordPolicyEnabled = resetPasswordPolicy?.enabled;\n super.load();\n }\n\n getUsers(): Promise> {\n return this.apiService.getOrganizationUsers(this.organizationId);\n }\n\n deleteUser(id: string): Promise {\n return this.apiService.deleteOrganizationUser(this.organizationId, id);\n }\n\n reinviteUser(id: string): Promise {\n return this.apiService.postOrganizationUserReinvite(this.organizationId, id);\n }\n\n async confirmUser(user: OrganizationUserUserDetailsResponse, publicKey: Uint8Array): Promise {\n const orgKey = await this.cryptoService.getOrgKey(this.organizationId);\n const key = await this.cryptoService.rsaEncrypt(orgKey.key, publicKey.buffer);\n const request = new OrganizationUserConfirmRequest();\n request.key = key.encryptedString;\n await this.apiService.postOrganizationUserConfirm(this.organizationId, user.id, request);\n }\n\n allowResetPassword(orgUser: OrganizationUserUserDetailsResponse): boolean {\n // Hierarchy check\n let callingUserHasPermission = false;\n\n switch (this.callingUserType) {\n case OrganizationUserType.Owner:\n callingUserHasPermission = true;\n break;\n case OrganizationUserType.Admin:\n callingUserHasPermission = orgUser.type !== OrganizationUserType.Owner;\n break;\n case OrganizationUserType.Custom:\n callingUserHasPermission = orgUser.type !== OrganizationUserType.Owner\n && orgUser.type !== OrganizationUserType.Admin;\n break;\n }\n\n // Final\n return this.canResetPassword && callingUserHasPermission && this.orgUseResetPassword && this.orgHasKeys\n && orgUser.resetPasswordEnrolled && this.orgResetPasswordPolicyEnabled\n && orgUser.status === OrganizationUserStatusType.Confirmed;\n }\n\n showEnrolledStatus(orgUser: OrganizationUserUserDetailsResponse): boolean {\n return this.orgUseResetPassword && orgUser.resetPasswordEnrolled && this.orgResetPasswordPolicyEnabled;\n }\n\n async edit(user: OrganizationUserUserDetailsResponse) {\n const [modal] = await this.modalService.openViewRef(UserAddEditComponent, this.addEditModalRef, comp => {\n comp.name = this.userNamePipe.transform(user);\n comp.organizationId = this.organizationId;\n comp.organizationUserId = user != null ? user.id : null;\n comp.usesKeyConnector = user?.usesKeyConnector;\n comp.onSavedUser.subscribe(() => {\n modal.close();\n this.load();\n });\n comp.onDeletedUser.subscribe(() => {\n modal.close();\n this.removeUser(user);\n });\n });\n }\n\n async groups(user: OrganizationUserUserDetailsResponse) {\n const [modal] = await this.modalService.openViewRef(UserGroupsComponent, this.groupsModalRef, comp => {\n comp.name = this.userNamePipe.transform(user);\n comp.organizationId = this.organizationId;\n comp.organizationUserId = user != null ? user.id : null;\n comp.onSavedUser.subscribe(() => {\n modal.close();\n });\n });\n }\n\n async bulkRemove() {\n if (this.actionPromise != null) {\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(BulkRemoveComponent, this.bulkRemoveModalRef, comp => {\n comp.organizationId = this.organizationId;\n comp.users = this.getCheckedUsers();\n });\n\n await modal.onClosedPromise();\n await this.load();\n }\n\n async bulkReinvite() {\n if (this.actionPromise != null) {\n return;\n }\n\n const users = this.getCheckedUsers();\n const filteredUsers = users.filter(u => u.status === OrganizationUserStatusType.Invited);\n\n if (filteredUsers.length <= 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('noSelectedUsersApplicable'));\n return;\n }\n\n try {\n const request = new OrganizationUserBulkRequest(filteredUsers.map(user => user.id));\n const response = this.apiService.postManyOrganizationUserReinvite(this.organizationId, request);\n this.showBulkStatus(users, filteredUsers, response, this.i18nService.t('bulkReinviteMessage'));\n } catch (e) {\n this.validationService.showError(e);\n }\n this.actionPromise = null;\n }\n\n async bulkConfirm() {\n if (this.actionPromise != null) {\n return;\n }\n\n const [modal] = await this.modalService.openViewRef(BulkConfirmComponent, this.bulkConfirmModalRef, comp => {\n comp.organizationId = this.organizationId;\n comp.users = this.getCheckedUsers();\n });\n\n await modal.onClosedPromise();\n await this.load();\n }\n\n async events(user: OrganizationUserUserDetailsResponse) {\n const [modal] = await this.modalService.openViewRef(EntityEventsComponent, this.eventsModalRef, comp => {\n comp.name = this.userNamePipe.transform(user);\n comp.organizationId = this.organizationId;\n comp.entityId = user.id;\n comp.showUser = false;\n comp.entity = 'user';\n });\n }\n\n async resetPassword(user: OrganizationUserUserDetailsResponse) {\n const [modal] = await this.modalService.openViewRef(ResetPasswordComponent, this.resetPasswordModalRef, comp => {\n comp.name = this.userNamePipe.transform(user);\n comp.email = user != null ? user.email : null;\n comp.organizationId = this.organizationId;\n comp.id = user != null ? user.id : null;\n\n comp.onPasswordReset.subscribe(() => {\n modal.close();\n this.load();\n });\n });\n }\n\n protected deleteWarningMessage(user: OrganizationUserUserDetailsResponse): string {\n if (user.usesKeyConnector) {\n return this.i18nService.t('removeUserConfirmationKeyConnector');\n }\n\n return super.deleteWarningMessage(user);\n }\n\n private async showBulkStatus(users: OrganizationUserUserDetailsResponse[], filteredUsers: OrganizationUserUserDetailsResponse[],\n request: Promise>, successfullMessage: string) {\n\n const [modal, childComponent] = await this.modalService.openViewRef(BulkStatusComponent, this.bulkStatusModalRef, comp => {\n comp.loading = true;\n });\n\n // Workaround to handle closing the modal shortly after it has been opened\n let close = false;\n modal.onShown.subscribe(() => {\n if (close) {\n modal.close();\n }\n });\n\n try {\n const response = await request;\n\n if (modal) {\n const keyedErrors: any = response.data.filter(r => r.error !== '').reduce((a, x) => ({ ...a, [x.id]: x.error }), {});\n const keyedFilteredUsers: any = filteredUsers.reduce((a, x) => ({ ...a, [x.id]: x }), {});\n\n childComponent.users = users.map(user => {\n let message = keyedErrors[user.id] ?? successfullMessage;\n if (!keyedFilteredUsers.hasOwnProperty(user.id)) {\n message = this.i18nService.t('bulkFilteredMessage');\n }\n\n return {\n user: user,\n error: keyedErrors.hasOwnProperty(user.id),\n message: message,\n };\n });\n childComponent.loading = false;\n }\n } catch {\n close = true;\n modal.close();\n }\n }\n}\n","

{{'people' | i18n}}

{{'loading' | i18n}}

{{'noUsersInList' | i18n}}

{{'usersNeedConfirmed' | i18n}}
{{u.email}} {{'invited' | i18n}} {{'accepted' | i18n}} {{u.name}} {{'userUsingTwoStep' | i18n}} {{'enrolledPasswordReset' | i18n}} {{'owner' | i18n}} {{'admin' | i18n}} {{'manager' | i18n}} {{'user' | i18n}} {{'custom' | i18n}}
","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\n@Component({\n selector: 'app-user-confirm',\n templateUrl: 'user-confirm.component.html',\n})\nexport class UserConfirmComponent implements OnInit {\n @Input() name: string;\n @Input() userId: string;\n @Input() publicKey: Uint8Array;\n @Output() onConfirmedUser = new EventEmitter();\n\n dontAskAgain = false;\n loading = true;\n fingerprint: string;\n formPromise: Promise;\n\n constructor(private cryptoService: CryptoService, private storageService: StorageService,\n private logService: LogService) { }\n\n async ngOnInit() {\n try {\n if (this.publicKey != null) {\n const fingerprint = await this.cryptoService.getFingerprint(this.userId, this.publicKey.buffer);\n if (fingerprint != null) {\n this.fingerprint = fingerprint.join('-');\n }\n }\n } catch (e) {\n this.logService.error(e);\n }\n this.loading = false;\n }\n\n async submit() {\n if (this.loading) {\n return;\n }\n\n if (this.dontAskAgain) {\n await this.storageService.save(ConstantsService.autoConfirmFingerprints, true);\n }\n\n this.onConfirmedUser.emit();\n }\n}\n","

{{'confirmUser' | i18n}} {{name}}

{{'fingerprintEnsureIntegrityVerify' | i18n}} {{'learnMore' | i18n}}

{{fingerprint}}

","import {\n Component,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { OrganizationUserBulkConfirmRequest } from 'jslib-common/models/request/organizationUserBulkConfirmRequest';\nimport { OrganizationUserBulkRequest } from 'jslib-common/models/request/organizationUserBulkRequest';\n\nimport { OrganizationUserStatusType } from 'jslib-common/enums/organizationUserStatusType';\n\nimport { Utils } from 'jslib-common/misc/utils';\nimport { BulkUserDetails } from './bulk-status.component';\n\n@Component({\n selector: 'app-bulk-confirm',\n templateUrl: 'bulk-confirm.component.html',\n})\nexport class BulkConfirmComponent implements OnInit {\n\n @Input() organizationId: string;\n @Input() users: BulkUserDetails[];\n\n excludedUsers: BulkUserDetails[];\n filteredUsers: BulkUserDetails[];\n publicKeys: Map = new Map();\n fingerprints: Map = new Map();\n statuses: Map = new Map();\n\n loading: boolean = true;\n done: boolean = false;\n error: string;\n\n constructor(protected cryptoService: CryptoService, protected apiService: ApiService,\n private i18nService: I18nService) { }\n\n async ngOnInit() {\n this.excludedUsers = this.users.filter(u => !this.isAccepted(u));\n this.filteredUsers = this.users.filter(u => this.isAccepted(u));\n\n if (this.filteredUsers.length <= 0) {\n this.done = true;\n }\n\n const response = await this.getPublicKeys();\n\n for (const entry of response.data) {\n const publicKey = Utils.fromB64ToArray(entry.key);\n const fingerprint = await this.cryptoService.getFingerprint(entry.userId, publicKey.buffer);\n if (fingerprint != null) {\n this.publicKeys.set(entry.id, publicKey);\n this.fingerprints.set(entry.id, fingerprint.join('-'));\n }\n }\n\n this.loading = false;\n }\n\n async submit() {\n this.loading = true;\n try {\n const key = await this.getCryptoKey();\n const userIdsWithKeys: any[] = [];\n for (const user of this.filteredUsers) {\n const publicKey = this.publicKeys.get(user.id);\n if (publicKey == null) {\n continue;\n }\n const encryptedKey = await this.cryptoService.rsaEncrypt(key.key, publicKey.buffer);\n userIdsWithKeys.push({\n id: user.id,\n key: encryptedKey.encryptedString,\n });\n }\n const response = await this.postConfirmRequest(userIdsWithKeys);\n\n response.data.forEach(entry => {\n const error = entry.error !== '' ? entry.error : this.i18nService.t('bulkConfirmMessage');\n this.statuses.set(entry.id, error);\n });\n\n this.done = true;\n } catch (e) {\n this.error = e.message;\n }\n this.loading = false;\n }\n\n protected isAccepted(user: BulkUserDetails) {\n return user.status === OrganizationUserStatusType.Accepted;\n }\n\n protected async getPublicKeys() {\n const request = new OrganizationUserBulkRequest(this.filteredUsers.map(user => user.id));\n return await this.apiService.postOrganizationUsersPublicKey(this.organizationId, request);\n }\n\n protected getCryptoKey() {\n return this.cryptoService.getOrgKey(this.organizationId);\n }\n\n protected async postConfirmRequest(userIdsWithKeys: any[]) {\n const request = new OrganizationUserBulkConfirmRequest(userIdsWithKeys);\n return await this.apiService.postOrganizationUserBulkConfirm(this.organizationId, request);\n }\n}\n","

{{'confirmUsers' | i18n}}

{{'loading' | i18n}}
{{'noSelectedUsersApplicable' | i18n}} {{error}}

{{'fingerprintEnsureIntegrityVerify' | i18n}} {{'learnMore' | i18n}}

{{'user' | i18n}} {{'fingerprint' | i18n}}
{{user.email}} {{user.name}} {{fingerprints.get(user.id)}}
{{user.email}} {{user.name}} {{'bulkFilteredMessage' | i18n}}
{{'user' | i18n}} {{'status' | i18n}}
{{user.email}} {{user.name}} {{statuses.get(user.id)}} {{'bulkFilteredMessage' | i18n}}
","import {\n Component,\n Input,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { OrganizationUserBulkRequest } from 'jslib-common/models/request/organizationUserBulkRequest';\n\nimport { BulkUserDetails } from './bulk-status.component';\n\n@Component({\n selector: 'app-bulk-remove',\n templateUrl: 'bulk-remove.component.html',\n})\nexport class BulkRemoveComponent {\n\n @Input() organizationId: string;\n @Input() users: BulkUserDetails[];\n\n statuses: Map = new Map();\n\n loading: boolean = false;\n done: boolean = false;\n error: string;\n\n constructor(protected apiService: ApiService, protected i18nService: I18nService) { }\n\n async submit() {\n this.loading = true;\n try {\n const response = await this.deleteUsers();\n\n response.data.forEach(entry => {\n const error = entry.error !== '' ? entry.error : this.i18nService.t('bulkRemovedMessage');\n this.statuses.set(entry.id, error);\n });\n this.done = true;\n } catch (e) {\n this.error = e.message;\n }\n\n this.loading = false;\n }\n\n protected async deleteUsers() {\n const request = new OrganizationUserBulkRequest(this.users.map(user => user.id));\n return await this.apiService.deleteManyOrganizationUsers(this.organizationId, request);\n }\n}\n","

{{'removeUsers' | i18n}}

{{'noSelectedUsersApplicable' | i18n}} {{error}} 0 && !error\"> {{'removeUsersWarning' | i18n}}
{{'user' | i18n}}
{{user.email}} {{user.name}}
{{'user' | i18n}} {{'status' | i18n}}
{{user.email}} {{user.name}} {{statuses.get(user.id)}} {{'bulkFilteredMessage' | i18n}}
","import { Component } from '@angular/core';\nimport { OrganizationUserStatusType } from 'jslib-common/enums/organizationUserStatusType';\nimport { ProviderUserStatusType } from 'jslib-common/enums/providerUserStatusType';\n\nexport interface BulkUserDetails {\n id: string;\n name: string;\n email: string;\n status: OrganizationUserStatusType | ProviderUserStatusType;\n}\n\ntype BulkStatusEntry = {\n user: BulkUserDetails,\n error: boolean,\n message: string,\n};\n\n@Component({\n selector: 'app-bulk-status',\n templateUrl: 'bulk-status.component.html',\n})\nexport class BulkStatusComponent {\n\n users: BulkStatusEntry[];\n loading: boolean = false;\n\n}\n","

{{'bulkConfirmStatus' | i18n}}

{{'loading' | i18n}}
{{'user' | i18n}} {{'status' | i18n}}
{{item.user.email}} {{item.user.name}} {{item.message}} {{item.message}}
","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\n\nimport { EncString } from 'jslib-common/models/domain/encString';\nimport { MasterPasswordPolicyOptions } from 'jslib-common/models/domain/masterPasswordPolicyOptions';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\n\nimport { OrganizationUserResetPasswordRequest } from 'jslib-common/models/request/organizationUserResetPasswordRequest';\n\n@Component({\n selector: 'app-reset-password',\n templateUrl: 'reset-password.component.html',\n})\nexport class ResetPasswordComponent implements OnInit {\n @Input() name: string;\n @Input() email: string;\n @Input() id: string;\n @Input() organizationId: string;\n @Output() onPasswordReset = new EventEmitter();\n\n enforcedPolicyOptions: MasterPasswordPolicyOptions;\n newPassword: string = null;\n showPassword: boolean = false;\n masterPasswordScore: number;\n formPromise: Promise;\n private newPasswordStrengthTimeout: any;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService, private passwordGenerationService: PasswordGenerationService,\n private policyService: PolicyService, private cryptoService: CryptoService, private logService: LogService) { }\n\n async ngOnInit() {\n // Get Enforced Policy Options\n this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions();\n }\n\n get loggedOutWarningName() {\n return this.name != null ? this.name : this.i18nService.t('thisUser');\n }\n\n async generatePassword() {\n const options = (await this.passwordGenerationService.getOptions())[0];\n this.newPassword = await this.passwordGenerationService.generatePassword(options);\n this.updatePasswordStrength();\n }\n\n togglePassword() {\n this.showPassword = !this.showPassword;\n document.getElementById('newPassword').focus();\n }\n\n copy(value: string) {\n if (value == null) {\n return;\n }\n\n this.platformUtilsService.copyToClipboard(value, { window: window });\n this.platformUtilsService.showToast('info', null,\n this.i18nService.t('valueCopied', this.i18nService.t('password')));\n }\n\n async submit() {\n // Validation\n if (this.newPassword == null || this.newPassword === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return false;\n }\n\n if (this.newPassword.length < 8) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassLength'));\n return false;\n }\n\n if (this.enforcedPolicyOptions != null &&\n !this.policyService.evaluateMasterPassword(this.masterPasswordScore, this.newPassword,\n this.enforcedPolicyOptions)) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPasswordPolicyRequirementsNotMet'));\n return;\n }\n\n if (this.masterPasswordScore < 3) {\n const result = await this.platformUtilsService.showDialog(this.i18nService.t('weakMasterPasswordDesc'),\n this.i18nService.t('weakMasterPassword'), this.i18nService.t('yes'), this.i18nService.t('no'),\n 'warning');\n if (!result) {\n return false;\n }\n }\n\n // Get user Information (kdf type, kdf iterations, resetPasswordKey, private key) and change password\n try {\n this.formPromise = this.apiService.getOrganizationUserResetPasswordDetails(this.organizationId, this.id)\n .then(async response => {\n if (response == null) {\n throw new Error(this.i18nService.t('resetPasswordDetailsError'));\n }\n\n const kdfType = response.kdf;\n const kdfIterations = response.kdfIterations;\n const resetPasswordKey = response.resetPasswordKey;\n const encryptedPrivateKey = response.encryptedPrivateKey;\n\n // Decrypt Organization's encrypted Private Key with org key\n const orgSymKey = await this.cryptoService.getOrgKey(this.organizationId);\n const decPrivateKey = await this.cryptoService.decryptToBytes(new EncString(encryptedPrivateKey), orgSymKey);\n\n // Decrypt User's Reset Password Key to get EncKey\n const decValue = await this.cryptoService.rsaDecrypt(resetPasswordKey, decPrivateKey);\n const userEncKey = new SymmetricCryptoKey(decValue);\n\n // Create new key and hash new password\n const newKey = await this.cryptoService.makeKey(this.newPassword, this.email.trim().toLowerCase(),\n kdfType, kdfIterations);\n const newPasswordHash = await this.cryptoService.hashPassword(this.newPassword, newKey);\n\n // Create new encKey for the User\n const newEncKey = await this.cryptoService.remakeEncKey(newKey, userEncKey);\n\n // Create request\n const request = new OrganizationUserResetPasswordRequest();\n request.key = newEncKey[1].encryptedString;\n request.newMasterPasswordHash = newPasswordHash;\n\n // Change user's password\n return this.apiService.putOrganizationUserResetPassword(this.organizationId, this.id, request);\n });\n\n await this.formPromise;\n this.platformUtilsService.showToast('success', null, this.i18nService.t('resetPasswordSuccess'));\n this.onPasswordReset.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n updatePasswordStrength() {\n if (this.newPasswordStrengthTimeout != null) {\n clearTimeout(this.newPasswordStrengthTimeout);\n }\n this.newPasswordStrengthTimeout = setTimeout(() => {\n const strengthResult = this.passwordGenerationService.passwordStrength(this.newPassword,\n this.getPasswordStrengthUserInput());\n this.masterPasswordScore = strengthResult == null ? null : strengthResult.score;\n }, 300);\n }\n\n private getPasswordStrengthUserInput() {\n let userInput: string[] = [];\n const atPosition = this.email.indexOf('@');\n if (atPosition > -1) {\n userInput = userInput.concat(this.email.substr(0, atPosition).trim().toLowerCase().split(/[^A-Za-z0-9]/));\n }\n if (this.name != null && this.name !== '') {\n userInput = userInput.concat(this.name.trim().toLowerCase().split(' '));\n }\n return userInput;\n }\n}\n","

{{'resetPassword' | i18n}} {{name}}

{{'resetPasswordLoggedOutWarning' | i18n: loggedOutWarningName}}
","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { CollectionData } from 'jslib-common/models/data/collectionData';\nimport { Collection } from 'jslib-common/models/domain/collection';\nimport { OrganizationUserInviteRequest } from 'jslib-common/models/request/organizationUserInviteRequest';\nimport { OrganizationUserUpdateRequest } from 'jslib-common/models/request/organizationUserUpdateRequest';\nimport { SelectionReadOnlyRequest } from 'jslib-common/models/request/selectionReadOnlyRequest';\nimport { CollectionDetailsResponse } from 'jslib-common/models/response/collectionResponse';\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\n\nimport { OrganizationUserType } from 'jslib-common/enums/organizationUserType';\nimport { PermissionsApi } from 'jslib-common/models/api/permissionsApi';\n\n@Component({\n selector: 'app-user-add-edit',\n templateUrl: 'user-add-edit.component.html',\n})\nexport class UserAddEditComponent implements OnInit {\n @Input() name: string;\n @Input() organizationUserId: string;\n @Input() organizationId: string;\n @Input() usesKeyConnector: boolean = false;\n @Output() onSavedUser = new EventEmitter();\n @Output() onDeletedUser = new EventEmitter();\n\n loading = true;\n editMode: boolean = false;\n title: string;\n emails: string;\n type: OrganizationUserType = OrganizationUserType.User;\n permissions = new PermissionsApi();\n showCustom = false;\n access: 'all' | 'selected' = 'selected';\n collections: CollectionView[] = [];\n formPromise: Promise;\n deletePromise: Promise;\n organizationUserType = OrganizationUserType;\n\n manageAllCollectionsCheckboxes = [\n {\n id: 'createNewCollections',\n get: () => this.permissions.createNewCollections,\n set: (v: boolean) => this.permissions.createNewCollections = v,\n },\n {\n id: 'editAnyCollection',\n get: () => this.permissions.editAnyCollection,\n set: (v: boolean) => this.permissions.editAnyCollection = v,\n },\n {\n id: 'deleteAnyCollection',\n get: () => this.permissions.deleteAnyCollection,\n set: (v: boolean) => this.permissions.deleteAnyCollection = v,\n },\n ];\n\n manageAssignedCollectionsCheckboxes = [\n {\n id: 'editAssignedCollections',\n get: () => this.permissions.editAssignedCollections,\n set: (v: boolean) => this.permissions.editAssignedCollections = v,\n },\n {\n id: 'deleteAssignedCollections',\n get: () => this.permissions.deleteAssignedCollections,\n set: (v: boolean) => this.permissions.deleteAssignedCollections = v,\n },\n ];\n\n get customUserTypeSelected(): boolean {\n return this.type === OrganizationUserType.Custom;\n }\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private collectionService: CollectionService,\n private platformUtilsService: PlatformUtilsService, private logService: LogService) { }\n\n async ngOnInit() {\n this.editMode = this.loading = this.organizationUserId != null;\n await this.loadCollections();\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t('editUser');\n try {\n const user = await this.apiService.getOrganizationUser(this.organizationId, this.organizationUserId);\n this.access = user.accessAll ? 'all' : 'selected';\n this.type = user.type;\n if (user.type === OrganizationUserType.Custom) {\n this.permissions = user.permissions;\n }\n if (user.collections != null && this.collections != null) {\n user.collections.forEach(s => {\n const collection = this.collections.filter(c => c.id === s.id);\n if (collection != null && collection.length > 0) {\n (collection[0] as any).checked = true;\n collection[0].readOnly = s.readOnly;\n collection[0].hidePasswords = s.hidePasswords;\n }\n });\n }\n } catch (e) {\n this.logService.error(e);\n }\n } else {\n this.title = this.i18nService.t('inviteUser');\n }\n\n this.loading = false;\n }\n\n async loadCollections() {\n const response = await this.apiService.getCollections(this.organizationId);\n const collections = response.data.map(r =>\n new Collection(new CollectionData(r as CollectionDetailsResponse)));\n this.collections = await this.collectionService.decryptMany(collections);\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n if (!(c as any).checked) {\n c.readOnly = false;\n }\n }\n\n selectAll(select: boolean) {\n this.collections.forEach(c => this.check(c, select));\n }\n\n setRequestPermissions(p: PermissionsApi, clearPermissions: boolean) {\n Object.assign(p, clearPermissions ? new PermissionsApi() : this.permissions);\n return p;\n }\n\n handleDependentPermissions() {\n // Manage Password Reset must have Manage Users enabled\n if (this.permissions.manageResetPassword && !this.permissions.manageUsers) {\n this.permissions.manageUsers = true;\n (document.getElementById('manageUsers') as HTMLInputElement).checked = true;\n this.platformUtilsService.showToast('info', null, this.i18nService.t('resetPasswordManageUsers'));\n }\n }\n\n async submit() {\n let collections: SelectionReadOnlyRequest[] = null;\n if (this.access !== 'all') {\n collections = this.collections.filter(c => (c as any).checked)\n .map(c => new SelectionReadOnlyRequest(c.id, !!c.readOnly, !!c.hidePasswords));\n }\n\n try {\n if (this.editMode) {\n const request = new OrganizationUserUpdateRequest();\n request.accessAll = this.access === 'all';\n request.type = this.type;\n request.collections = collections;\n request.permissions = this.setRequestPermissions(request.permissions ?? new PermissionsApi(), request.type !== OrganizationUserType.Custom);\n this.formPromise = this.apiService.putOrganizationUser(this.organizationId, this.organizationUserId,\n request);\n } else {\n const request = new OrganizationUserInviteRequest();\n request.emails = this.emails.trim().split(/\\s*,\\s*/);\n request.accessAll = this.access === 'all';\n request.type = this.type;\n request.permissions = this.setRequestPermissions(request.permissions ?? new PermissionsApi(), request.type !== OrganizationUserType.Custom);\n request.collections = collections;\n this.formPromise = this.apiService.postOrganizationUserInvite(this.organizationId, request);\n }\n await this.formPromise;\n this.toasterService.popAsync('success', null,\n this.i18nService.t(this.editMode ? 'editedUserId' : 'invitedUsers', this.name));\n this.onSavedUser.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async delete() {\n if (!this.editMode) {\n return;\n }\n\n const message = this.usesKeyConnector ? 'removeUserConfirmationKeyConnector' : 'removeUserConfirmation';\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(message), this.name, this.i18nService.t('yes'), this.i18nService.t('no'), 'warning'\n );\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.apiService.deleteOrganizationUser(this.organizationId, this.organizationUserId);\n await this.deletePromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('removedUserId', this.name));\n this.onDeletedUser.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","

{{title}} {{name}}

{{'loading' | i18n}}

{{'inviteUserDesc' | i18n}}

{{'inviteMultipleEmailDesc' | i18n : '20'}}

{{'userType' | i18n}}

{{'permissions' | i18n}}



{{'accessControl' | i18n}}

{{'noCollectionsInList' | i18n}}
  {{'name' | i18n}} {{'hidePasswords' | i18n}} {{'readOnly' | i18n}}
{{c.name}}
","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Component({\n selector: 'app-nested-checkbox',\n templateUrl: 'nested-checkbox.component.html',\n})\nexport class NestedCheckboxComponent {\n @Input() parentId: string;\n @Input() checkboxes: { id: string, get: () => boolean, set: (v: boolean) => void; }[];\n @Output() onSavedUser = new EventEmitter();\n @Output() onDeletedUser = new EventEmitter();\n\n get parentIndeterminate() {\n return !this.parentChecked &&\n this.checkboxes.some(c => c.get());\n }\n\n get parentChecked() {\n return this.checkboxes.every(c => c.get());\n }\n\n set parentChecked(value: boolean) {\n this.checkboxes.forEach(c => {\n c.set(value);\n });\n }\n\n pascalize(s: string) {\n return Utils.camelToPascalCase(s);\n }\n}\n","
","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\n\nimport { OrganizationUserUpdateGroupsRequest } from 'jslib-common/models/request/organizationUserUpdateGroupsRequest';\nimport { GroupResponse } from 'jslib-common/models/response/groupResponse';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Component({\n selector: 'app-user-groups',\n templateUrl: 'user-groups.component.html',\n})\nexport class UserGroupsComponent implements OnInit {\n @Input() name: string;\n @Input() organizationUserId: string;\n @Input() organizationId: string;\n @Output() onSavedUser = new EventEmitter();\n\n loading = true;\n groups: GroupResponse[] = [];\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private logService: LogService) { }\n\n async ngOnInit() {\n const groupsResponse = await this.apiService.getGroups(this.organizationId);\n const groups = groupsResponse.data.map(r => r);\n groups.sort(Utils.getSortFunction(this.i18nService, 'name'));\n this.groups = groups;\n\n try {\n const userGroups = await this.apiService.getOrganizationUserGroups(\n this.organizationId, this.organizationUserId);\n if (userGroups != null && this.groups != null) {\n userGroups.forEach(ug => {\n const group = this.groups.filter(g => g.id === ug);\n if (group != null && group.length > 0) {\n (group[0] as any).checked = true;\n }\n });\n }\n } catch (e) {\n this.logService.error(e);\n }\n\n this.loading = false;\n }\n\n check(g: GroupResponse, select?: boolean) {\n (g as any).checked = select == null ? !(g as any).checked : select;\n if (!(g as any).checked) {\n (g as any).readOnly = false;\n }\n }\n\n selectAll(select: boolean) {\n this.groups.forEach(g => this.check(g, select));\n }\n\n async submit() {\n const request = new OrganizationUserUpdateGroupsRequest();\n request.groupIds = this.groups.filter(g => (g as any).checked).map(g => g.id);\n\n try {\n this.formPromise = this.apiService.putOrganizationUserGroups(this.organizationId, this.organizationUserId,\n request);\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('editedGroupsForUser', this.name));\n this.onSavedUser.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","

{{'groupAccess' | i18n}} {{name}}

{{'loading' | i18n}}

{{'groupAccessUserDesc' | i18n}}

{{'noGroupsInList' | i18n}}
{{g.name}}
","import {\n Component,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { first } from 'rxjs/operators';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { PolicyResponse } from 'jslib-common/models/response/policyResponse';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\nimport { PolicyEditComponent } from './policy-edit.component';\n\nimport { PolicyListService } from '../../services/policy-list.service';\nimport { BasePolicy } from '../policies/base-policy.component';\n\n@Component({\n selector: 'app-org-policies',\n templateUrl: 'policies.component.html',\n})\nexport class PoliciesComponent implements OnInit {\n @ViewChild('editTemplate', { read: ViewContainerRef, static: true }) editModalRef: ViewContainerRef;\n\n loading = true;\n organizationId: string;\n policies: BasePolicy[];\n organization: Organization;\n\n private orgPolicies: PolicyResponse[];\n private policiesEnabledMap: Map = new Map();\n\n constructor(private apiService: ApiService, private route: ActivatedRoute,\n private modalService: ModalService, private userService: UserService,\n private policyListService: PolicyListService, private router: Router) { }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n this.organization = await this.userService.getOrganization(this.organizationId);\n if (this.organization == null || !this.organization.usePolicies) {\n this.router.navigate(['/organizations', this.organizationId]);\n return;\n }\n\n this.policies = this.policyListService.getPolicies();\n\n await this.load();\n\n // Handle policies component launch from Event message\n this.route.queryParams.pipe(first()).subscribe(async qParams => {\n if (qParams.policyId != null) {\n const policyIdFromEvents: string = qParams.policyId;\n for (const orgPolicy of this.orgPolicies) {\n if (orgPolicy.id === policyIdFromEvents) {\n for (let i = 0; i < this.policies.length; i++) {\n if (this.policies[i].type === orgPolicy.type) {\n this.edit(this.policies[i]);\n break;\n }\n }\n break;\n }\n }\n }\n });\n });\n }\n\n async load() {\n const response = await this.apiService.getPolicies(this.organizationId);\n this.orgPolicies = response.data != null && response.data.length > 0 ? response.data : [];\n this.orgPolicies.forEach(op => {\n this.policiesEnabledMap.set(op.type, op.enabled);\n });\n\n this.loading = false;\n }\n\n async edit(policy: BasePolicy) {\n const [modal] = await this.modalService.openViewRef(PolicyEditComponent, this.editModalRef, comp => {\n comp.policy = policy;\n comp.organizationId = this.organizationId;\n comp.policiesEnabledMap = this.policiesEnabledMap;\n comp.onSavedPolicy.subscribe(() => {\n modal.close();\n this.load();\n });\n });\n }\n}\n","

{{'policies' | i18n}}

{{'loading' | i18n}}
{{p.name | i18n}} {{'enabled' | i18n}} {{p.description | i18n}}
","import {\n ChangeDetectorRef,\n Component,\n ComponentFactoryResolver,\n EventEmitter,\n Input,\n Output,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\nimport { PolicyRequest } from 'jslib-common/models/request/policyRequest';\n\nimport { PolicyResponse } from 'jslib-common/models/response/policyResponse';\n\nimport { BasePolicy, BasePolicyComponent } from '../policies/base-policy.component';\n\n@Component({\n selector: 'app-policy-edit',\n templateUrl: 'policy-edit.component.html',\n})\nexport class PolicyEditComponent {\n @Input() policy: BasePolicy;\n @Input() organizationId: string;\n @Input() policiesEnabledMap: Map = new Map();\n @Output() onSavedPolicy = new EventEmitter();\n\n @ViewChild('policyForm', { read: ViewContainerRef, static: true }) policyFormRef: ViewContainerRef;\n\n policyType = PolicyType;\n loading = true;\n enabled = false;\n formPromise: Promise;\n defaultTypes: any[];\n policyComponent: BasePolicyComponent;\n\n private policyResponse: PolicyResponse;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private componentFactoryResolver: ComponentFactoryResolver,\n private cdr: ChangeDetectorRef, private logService: LogService) {\n }\n\n async ngAfterViewInit() {\n await this.load();\n this.loading = false;\n\n const factory = this.componentFactoryResolver.resolveComponentFactory(this.policy.component);\n this.policyComponent = this.policyFormRef.createComponent(factory).instance as BasePolicyComponent;\n this.policyComponent.policy = this.policy;\n this.policyComponent.policyResponse = this.policyResponse;\n\n this.cdr.detectChanges();\n }\n\n async load() {\n try {\n this.policyResponse = await this.apiService.getPolicy(this.organizationId, this.policy.type);\n } catch (e) {\n if (e.statusCode === 404) {\n this.policyResponse = new PolicyResponse({Enabled: false});\n } else {\n throw e;\n }\n }\n }\n\n async submit() {\n let request: PolicyRequest;\n try {\n request = await this.policyComponent.buildRequest(this.policiesEnabledMap);\n } catch (e) {\n this.toasterService.pop('error', null, e);\n return;\n }\n\n try {\n this.formPromise = this.apiService.putPolicy(this.organizationId, this.policy.type, request);\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('editedPolicyId', this.i18nService.t(this.policy.name)));\n this.onSavedPolicy.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","

{{'editPolicy' | i18n}} - {{policy.name | i18n}}

{{'loading' | i18n}}

{{policy.description | i18n}}

","import {\n Component,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport {\n ActivatedRoute,\n Router\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\n\nimport { OrganizationKeysRequest } from 'jslib-common/models/request/organizationKeysRequest';\nimport { OrganizationUpdateRequest } from 'jslib-common/models/request/organizationUpdateRequest';\n\nimport { OrganizationResponse } from 'jslib-common/models/response/organizationResponse';\n\nimport { ApiKeyComponent } from '../../settings/api-key.component';\nimport { PurgeVaultComponent } from '../../settings/purge-vault.component';\nimport { TaxInfoComponent } from '../../settings/tax-info.component';\n\nimport { DeleteOrganizationComponent } from './delete-organization.component';\n\n@Component({\n selector: 'app-org-account',\n templateUrl: 'account.component.html',\n})\nexport class AccountComponent {\n @ViewChild('deleteOrganizationTemplate', { read: ViewContainerRef, static: true }) deleteModalRef: ViewContainerRef;\n @ViewChild('purgeOrganizationTemplate', { read: ViewContainerRef, static: true }) purgeModalRef: ViewContainerRef;\n @ViewChild('apiKeyTemplate', { read: ViewContainerRef, static: true }) apiKeyModalRef: ViewContainerRef;\n @ViewChild('rotateApiKeyTemplate', { read: ViewContainerRef, static: true }) rotateApiKeyModalRef: ViewContainerRef;\n @ViewChild(TaxInfoComponent) taxInfo: TaxInfoComponent;\n\n selfHosted = false;\n loading = true;\n canUseApi = false;\n org: OrganizationResponse;\n formPromise: Promise;\n taxFormPromise: Promise;\n\n private organizationId: string;\n\n constructor(private modalService: ModalService,\n private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private route: ActivatedRoute,\n private syncService: SyncService, private platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService, private logService: LogService,\n private router: Router) { }\n\n async ngOnInit() {\n this.selfHosted = this.platformUtilsService.isSelfHost();\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n try {\n this.org = await this.apiService.getOrganization(this.organizationId);\n this.canUseApi = this.org.useApi;\n } catch (e) {\n this.logService.error(e);\n }\n });\n this.loading = false;\n }\n\n async submit() {\n try {\n const request = new OrganizationUpdateRequest();\n request.name = this.org.name;\n request.businessName = this.org.businessName;\n request.billingEmail = this.org.billingEmail;\n request.identifier = this.org.identifier;\n\n // Backfill pub/priv key if necessary\n if (!this.org.hasPublicAndPrivateKeys) {\n const orgShareKey = await this.cryptoService.getOrgKey(this.organizationId);\n const orgKeys = await this.cryptoService.makeKeyPair(orgShareKey);\n request.keys = new OrganizationKeysRequest(orgKeys[0], orgKeys[1].encryptedString);\n }\n\n this.formPromise = this.apiService.putOrganization(this.organizationId, request).then(() => {\n return this.syncService.fullSync(true);\n });\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('organizationUpdated'));\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async submitTaxInfo() {\n this.taxFormPromise = this.taxInfo.submitTaxInfo();\n await this.taxFormPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('taxInfoUpdated'));\n }\n\n async deleteOrganization() {\n await this.modalService.openViewRef(DeleteOrganizationComponent, this.deleteModalRef, comp => {\n comp.organizationId = this.organizationId;\n comp.onSuccess.subscribe(() => {\n this.router.navigate(['/']);\n });\n });\n }\n\n async purgeVault() {\n await this.modalService.openViewRef(PurgeVaultComponent, this.purgeModalRef, comp => {\n comp.organizationId = this.organizationId;\n });\n }\n\n async viewApiKey() {\n await this.modalService.openViewRef(ApiKeyComponent, this.apiKeyModalRef, comp => {\n comp.keyType = 'organization';\n comp.entityId = this.organizationId;\n comp.postKey = this.apiService.postOrganizationApiKey.bind(this.apiService);\n comp.scope = 'api.organization';\n comp.grantType = 'client_credentials';\n comp.apiKeyTitle = 'apiKey';\n comp.apiKeyWarning = 'apiKeyWarning';\n comp.apiKeyDescription = 'apiKeyDesc';\n });\n }\n\n async rotateApiKey() {\n await this.modalService.openViewRef(ApiKeyComponent, this.rotateApiKeyModalRef, comp => {\n comp.keyType = 'organization';\n comp.isRotation = true;\n comp.entityId = this.organizationId;\n comp.postKey = this.apiService.postOrganizationRotateApiKey.bind(this.apiService);\n comp.scope = 'api.organization';\n comp.grantType = 'client_credentials';\n comp.apiKeyTitle = 'apiKey';\n comp.apiKeyWarning = 'apiKeyWarning';\n comp.apiKeyDescription = 'apiKeyRotateDesc';\n });\n }\n}\n","

{{'myOrganization' | i18n}}

{{'loading' | i18n}}

{{'apiKey' | i18n}}

{{'apiKeyDesc' | i18n}} {{'learnMore' | i18n}}

{{'taxInformation' | i18n}}

{{'taxInformationDesc' | i18n}}

{{'loading' | i18n}}

{{'dangerZone' | i18n}}

{{'dangerZoneDesc' | i18n}}

","import { TaxInfoUpdateRequest } from './taxInfoUpdateRequest';\n\nexport class OrganizationTaxInfoUpdateRequest extends TaxInfoUpdateRequest {\n taxId: string;\n line1: string;\n line2: string;\n city: string;\n state: string;\n}\n","export class TaxInfoUpdateRequest {\n country: string;\n postalCode: string;\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { UserBillingComponent } from '../../settings/user-billing.component';\n\n@Component({\n selector: 'app-org-billing',\n templateUrl: '../../settings/user-billing.component.html',\n})\nexport class OrganizationBillingComponent extends UserBillingComponent implements OnInit {\n constructor(apiService: ApiService, i18nService: I18nService, toasterService: ToasterService,\n private route: ActivatedRoute, platformUtilsService: PlatformUtilsService,\n logService: LogService) {\n super(apiService, i18nService, toasterService, platformUtilsService, logService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n await this.load();\n this.firstLoaded = true;\n });\n }\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { ToasterService } from 'angular2-toaster';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { OrganizationSubscriptionResponse } from 'jslib-common/models/response/organizationSubscriptionResponse';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { PlanType } from 'jslib-common/enums/planType';\n\n@Component({\n selector: 'app-org-subscription',\n templateUrl: 'organization-subscription.component.html',\n})\nexport class OrganizationSubscriptionComponent implements OnInit {\n loading = false;\n firstLoaded = false;\n organizationId: string;\n adjustSeatsAdd = true;\n showAdjustSeats = false;\n showAdjustSeatAutoscale = false;\n adjustStorageAdd = true;\n showAdjustStorage = false;\n showUpdateLicense = false;\n showDownloadLicense = false;\n showChangePlan = false;\n sub: OrganizationSubscriptionResponse;\n selfHosted = false;\n\n userOrg: Organization;\n\n removeSponsorshipPromise: Promise;\n cancelPromise: Promise;\n reinstatePromise: Promise;\n\n constructor(private apiService: ApiService, private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService, private toasterService: ToasterService,\n private messagingService: MessagingService, private route: ActivatedRoute,\n private userService: UserService, private logService: LogService) {\n this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n await this.load();\n this.firstLoaded = true;\n });\n }\n\n async load() {\n if (this.loading) {\n return;\n }\n\n this.loading = true;\n this.userOrg = await this.userService.getOrganization(this.organizationId);\n this.sub = await this.apiService.getOrganizationSubscription(this.organizationId);\n this.loading = false;\n }\n\n async reinstate() {\n if (this.loading) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('reinstateConfirmation'),\n this.i18nService.t('reinstateSubscription'), this.i18nService.t('yes'), this.i18nService.t('cancel'));\n if (!confirmed) {\n return;\n }\n\n try {\n this.reinstatePromise = this.apiService.postOrganizationReinstate(this.organizationId);\n await this.reinstatePromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('reinstated'));\n this.load();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async cancel() {\n if (this.loading) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('cancelConfirmation'),\n this.i18nService.t('cancelSubscription'), this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n\n try {\n this.cancelPromise = this.apiService.postOrganizationCancel(this.organizationId);\n await this.cancelPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('canceledSubscription'));\n this.load();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async changePlan() {\n this.showChangePlan = !this.showChangePlan;\n }\n\n closeChangePlan(changed: boolean) {\n this.showChangePlan = false;\n }\n\n downloadLicense() {\n this.showDownloadLicense = !this.showDownloadLicense;\n }\n\n closeDownloadLicense() {\n this.showDownloadLicense = false;\n }\n\n updateLicense() {\n if (this.loading) {\n return;\n }\n this.showUpdateLicense = true;\n }\n\n closeUpdateLicense(updated: boolean) {\n this.showUpdateLicense = false;\n if (updated) {\n this.load();\n this.messagingService.send('updatedOrgLicense');\n }\n }\n\n subscriptionAdjusted() {\n this.load();\n }\n\n adjustStorage(add: boolean) {\n this.adjustStorageAdd = add;\n this.showAdjustStorage = true;\n }\n\n closeStorage(load: boolean) {\n this.showAdjustStorage = false;\n if (load) {\n this.load();\n }\n }\n\n async removeSponsorship() {\n const isConfirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('removeSponsorshipConfirmation'),\n this.i18nService.t('removeSponsorship'),\n this.i18nService.t('remove'), this.i18nService.t('cancel'), 'warning');\n\n if (!isConfirmed) {\n return;\n }\n\n try {\n this.removeSponsorshipPromise = this.apiService.deleteRemoveSponsorship(this.organizationId);\n await this.removeSponsorshipPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('removeSponsorshipSuccess'));\n await this.load();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n get isExpired() {\n return this.sub != null && this.sub.expiration != null &&\n new Date(this.sub.expiration) < new Date();\n }\n\n get subscriptionMarkedForCancel() {\n return this.subscription != null && !this.subscription.cancelled && this.subscription.cancelAtEndDate;\n }\n\n get subscription() {\n return this.sub != null ? this.sub.subscription : null;\n }\n\n get nextInvoice() {\n return this.sub != null ? this.sub.upcomingInvoice : null;\n }\n\n get storagePercentage() {\n return this.sub != null && this.sub.maxStorageGb ?\n +(100 * (this.sub.storageGb / this.sub.maxStorageGb)).toFixed(2) : 0;\n }\n\n get storageProgressWidth() {\n return this.storagePercentage < 5 ? 5 : 0;\n }\n\n get billingInterval() {\n const monthly = !this.sub.plan.isAnnual;\n return monthly ? 'month' : 'year';\n }\n\n get storageGbPrice() {\n return this.sub.plan.additionalStoragePricePerGb;\n }\n\n get seatPrice() {\n return this.sub.plan.seatPrice;\n }\n\n get seats() {\n return this.sub.seats;\n }\n\n get maxAutoscaleSeats() {\n return this.sub.maxAutoscaleSeats;\n }\n\n get canAdjustSeats() {\n return this.sub.plan.hasAdditionalSeatsOption;\n }\n\n get isSponsoredSubscription(): boolean {\n return this.sub.subscription?.items.some(i => i.sponsoredSubscriptionItem);\n }\n\n get canDownloadLicense() {\n return (this.sub.planType !== PlanType.Free && this.subscription == null) ||\n (this.subscription != null && !this.subscription.cancelled);\n }\n\n get subscriptionDesc() {\n if (this.sub.planType === PlanType.Free) {\n return this.i18nService.t('subscriptionFreePlan', this.sub.seats.toString());\n } else if (this.sub.planType === PlanType.FamiliesAnnually || this.sub.planType === PlanType.FamiliesAnnually2019) {\n if (this.isSponsoredSubscription) {\n return this.i18nService.t('subscriptionSponsoredFamiliesPlan', this.sub.seats.toString());\n } else {\n return this.i18nService.t('subscriptionFamiliesPlan', this.sub.seats.toString());\n }\n } else if (this.sub.maxAutoscaleSeats === this.sub.seats && this.sub.seats != null) {\n return this.i18nService.t('subscriptionMaxReached', this.sub.seats.toString());\n } else if (this.sub.maxAutoscaleSeats == null) {\n return this.i18nService.t('subscriptionUserSeatsUnlimitedAutoscale');\n } else {\n return this.i18nService.t('subscriptionUserSeatsLimitedAutoscale', this.sub.maxAutoscaleSeats.toString());\n }\n }\n\n get showChangePlanButton() {\n return this.subscription == null && this.sub.planType === PlanType.Free && !this.showChangePlan;\n }\n}\n","

{{'subscription' | i18n}} {{'loading' | i18n}}

{{'loading' | i18n}} {{'subscriptionCanceled' | i18n}}

{{'subscriptionPendingCanceled' | i18n}}

{{'billingPlan' | i18n}}
{{sub.plan.name}}
{{'status' | i18n}}
{{isSponsoredSubscription ? 'sponsored' : subscription.status || '-'}} {{'pendingCancellation' | i18n}}
{{'nextCharge' | i18n}}
{{nextInvoice ? ((nextInvoice.date | date: 'mediumDate') + ', ' + (nextInvoice.amount | currency:'$')) : '-'}}
{{'details' | i18n}}
{{i.name}} {{i.quantity > 1 ? '×' + i.quantity : ''}} @ {{i.amount | currency:'$'}} {{(i.quantity * i.amount) | currency:'$'}} /{{i.interval | i18n}}
{{'provider' | i18n}}
{{'yourProviderIs' | i18n : userOrg.providerName}}

{{'manageSubscription' | i18n}}

{{subscriptionDesc}}

{{'storage' | i18n}}

{{'subscriptionStorage' | i18n : sub.maxStorageGb || 0 : sub.storageName || '0 MB'}}

{{(storagePercentage / 100) | percent}}

{{'additionalOptions' | i18n}}

{{'additionalOptionsDesc' | i18n }}

{{'billingPlan' | i18n}}
{{sub.plan.name}}
{{'expiration' | i18n}}
{{sub.expiration | date:'mediumDate'}} {{'licenseIsExpired' | i18n}}
{{'neverExpires' | i18n}}
{{'manageSubscription' | i18n}}

{{'updateLicense' | i18n}}

","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { LogService } from 'jslib-common/abstractions/log.service';\n\nimport { PlanType } from 'jslib-common/enums/planType';\nimport { ProductType } from 'jslib-common/enums/productType';\n\n@Component({\n selector: 'app-change-plan',\n templateUrl: 'change-plan.component.html',\n})\nexport class ChangePlanComponent {\n @Input() organizationId: string;\n @Output() onChanged = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n formPromise: Promise;\n defaultUpgradePlan: PlanType = PlanType.FamiliesAnnually;\n defaultUpgradeProduct: ProductType = ProductType.Families;\n\n constructor(private logService: LogService) { }\n\n async submit() {\n try {\n this.onChanged.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n}\n","

{{'changeBillingPlan' | i18n}}

{{'changeBillingPlanUpgrade' | i18n}}

","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\n\nimport { OrganizationSubscriptionUpdateRequest } from 'jslib-common/models/request/organizationSubscriptionUpdateRequest';\n\n@Component({\n selector: 'app-adjust-subscription',\n templateUrl: 'adjust-subscription.component.html',\n})\nexport class AdjustSubscription {\n @Input() organizationId: string;\n @Input() maxAutoscaleSeats: number;\n @Input() currentSeatCount: number;\n @Input() seatPrice = 0;\n @Input() interval = 'year';\n @Output() onAdjusted = new EventEmitter();\n\n formPromise: Promise;\n limitSubscription: boolean;\n newSeatCount: number;\n newMaxSeats: number;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private logService: LogService) { }\n\n ngOnInit() {\n this.limitSubscription = this.maxAutoscaleSeats != null;\n this.newSeatCount = this.currentSeatCount;\n this.newMaxSeats = this.maxAutoscaleSeats;\n }\n\n async submit() {\n try {\n const seatAdjustment = this.newSeatCount - this.currentSeatCount;\n const request = new OrganizationSubscriptionUpdateRequest(seatAdjustment, this.newMaxSeats);\n this.formPromise = this.apiService.postOrganizationUpdateSubscription(this.organizationId, request);\n\n await this.formPromise;\n\n this.toasterService.popAsync('success', null, this.i18nService.t('subscriptionUpdated'));\n } catch (e) {\n this.logService.error(e);\n }\n this.onAdjusted.emit();\n }\n\n limitSubscriptionChanged() {\n if (!this.limitSubscription) {\n this.newMaxSeats = null;\n }\n }\n\n get adjustedSeatTotal(): number {\n return this.newSeatCount * this.seatPrice;\n }\n\n get maxSeatTotal(): number {\n return this.newMaxSeats * this.seatPrice;\n }\n}\n","
{{'total' | i18n}}: {{newSeatCount || 0}} × {{seatPrice | currency:'$'}} = {{adjustedSeatTotal | currency:'$'}} / {{interval | i18n}}
{{'limitSubscriptionDesc' | i18n}}
{{'maxSeatCost' | i18n}}: {{newMaxSeats || 0}} × {{seatPrice | currency:'$'}} = {{maxSeatTotal | currency:'$'}} / {{interval | i18n}}
","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\n@Component({\n selector: 'app-download-license',\n templateUrl: 'download-license.component.html',\n})\nexport class DownloadLicenseComponent {\n @Input() organizationId: string;\n @Output() onDownloaded = new EventEmitter();\n @Output() onCanceled = new EventEmitter();\n\n installationId: string;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private platformUtilsService: PlatformUtilsService,\n private logService: LogService) { }\n\n async submit() {\n if (this.installationId == null || this.installationId === '') {\n return;\n }\n\n try {\n this.formPromise = this.apiService.getOrganizationLicense(this.organizationId, this.installationId);\n const license = await this.formPromise;\n const licenseString = JSON.stringify(license, null, 2);\n this.platformUtilsService.saveFile(window, licenseString, null, 'bitwarden_organization_license.json');\n this.onDownloaded.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n cancel() {\n this.onCanceled.emit();\n }\n}\n","

{{'downloadLicense' | i18n}}

","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\n@Component({\n selector: 'app-org-settings',\n templateUrl: 'settings.component.html',\n})\nexport class SettingsComponent {\n access2fa = false;\n selfHosted: boolean;\n\n constructor(private route: ActivatedRoute, private userService: UserService,\n private platformUtilsService: PlatformUtilsService) { }\n\n ngOnInit() {\n this.route.parent.params.subscribe(async params => {\n this.selfHosted = await this.platformUtilsService.isSelfHost();\n const organization = await this.userService.getOrganization(params.organizationId);\n this.access2fa = organization.use2fa;\n });\n }\n}\n"," ","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\nimport { TwoFactorDuoComponent } from '../../settings/two-factor-duo.component';\nimport { TwoFactorSetupComponent as BaseTwoFactorSetupComponent } from '../../settings/two-factor-setup.component';\n\n@Component({\n selector: 'app-two-factor-setup',\n templateUrl: '../../settings/two-factor-setup.component.html',\n})\nexport class TwoFactorSetupComponent extends BaseTwoFactorSetupComponent {\n constructor(apiService: ApiService, userService: UserService,\n modalService: ModalService, messagingService: MessagingService,\n policyService: PolicyService, private route: ActivatedRoute) {\n super(apiService, userService, modalService, messagingService, policyService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n await super.ngOnInit();\n });\n }\n\n async manage(type: TwoFactorProviderType) {\n switch (type) {\n case TwoFactorProviderType.OrganizationDuo:\n const duoComp = await this.openModal(this.duoModalRef, TwoFactorDuoComponent);\n duoComp.type = TwoFactorProviderType.OrganizationDuo;\n duoComp.organizationId = this.organizationId;\n duoComp.onUpdated.subscribe((enabled: boolean) => {\n this.updateStatus(enabled, TwoFactorProviderType.OrganizationDuo);\n });\n break;\n default:\n break;\n }\n }\n\n protected getTwoFactorProviders() {\n return this.apiService.getTwoFactorOrganizationProviders(this.organizationId);\n }\n\n protected filterProvider(type: TwoFactorProviderType) {\n return type !== TwoFactorProviderType.OrganizationDuo;\n }\n}\n","import {\n Component,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\nimport { UserVerificationService } from 'jslib-common/abstractions/userVerification.service';\n\nimport { UpdateTwoFactorAuthenticatorRequest } from 'jslib-common/models/request/updateTwoFactorAuthenticatorRequest';\nimport { TwoFactorAuthenticatorResponse } from 'jslib-common/models/response/twoFactorAuthenticatorResponse';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\nimport { TwoFactorBaseComponent } from './two-factor-base.component';\n\n@Component({\n selector: 'app-two-factor-authenticator',\n templateUrl: 'two-factor-authenticator.component.html',\n})\nexport class TwoFactorAuthenticatorComponent extends TwoFactorBaseComponent implements OnInit, OnDestroy {\n type = TwoFactorProviderType.Authenticator;\n key: string;\n token: string;\n formPromise: Promise;\n\n private qrScript: HTMLScriptElement;\n\n constructor(apiService: ApiService, i18nService: I18nService,\n toasterService: ToasterService, userVerificationService: UserVerificationService,\n platformUtilsService: PlatformUtilsService, logService: LogService,\n private userService: UserService) {\n super(apiService, i18nService, toasterService, platformUtilsService, logService, userVerificationService);\n this.qrScript = window.document.createElement('script');\n this.qrScript.src = 'scripts/qrious.min.js';\n this.qrScript.async = true;\n }\n\n ngOnInit() {\n window.document.body.appendChild(this.qrScript);\n }\n\n ngOnDestroy() {\n window.document.body.removeChild(this.qrScript);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n return this.processResponse(authResponse.response);\n }\n\n submit() {\n if (this.enabled) {\n return super.disable(this.formPromise);\n } else {\n return this.enable();\n }\n }\n\n protected async enable() {\n const request = await this.buildRequestModel(UpdateTwoFactorAuthenticatorRequest);\n request.token = this.token;\n request.key = this.key;\n\n return super.enable(async () => {\n this.formPromise = this.apiService.putTwoFactorAuthenticator(request);\n const response = await this.formPromise;\n await this.processResponse(response);\n });\n }\n\n private async processResponse(response: TwoFactorAuthenticatorResponse) {\n this.token = null;\n this.enabled = response.enabled;\n this.key = response.key;\n const email = await this.userService.getEmail();\n window.setTimeout(() => {\n const qr = new (window as any).QRious({\n element: document.getElementById('qr'),\n value: 'otpauth://totp/Bitwarden:' + encodeURIComponent(email) +\n '?secret=' + encodeURIComponent(this.key) + '&issuer=Bitwarden',\n size: 160,\n });\n }, 100);\n }\n}\n","

{{'twoStepLogin' | i18n}} {{'authenticatorAppTitle' | i18n}}

\"Authenticator

{{'twoStepAuthenticatorDesc' | i18n}}

1. {{'twoStepAuthenticatorDownloadApp' | i18n}}

{{'twoStepLoginProviderEnabled' | i18n}}

{{'twoStepAuthenticatorReaddDesc' | i18n}}
\"Authenticator

{{'twoStepAuthenticatorNeedApp' | i18n}}

{{'twoStepAuthenticatorAppsRecommended' | i18n}}

2. {{'twoStepAuthenticatorScanCode' | i18n}}



{{key}}

","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\nimport { UserVerificationService } from 'jslib-common/abstractions/userVerification.service';\n\nimport { TwoFactorEmailRequest } from 'jslib-common/models/request/twoFactorEmailRequest';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\nimport { UpdateTwoFactorEmailRequest } from 'jslib-common/models/request/updateTwoFactorEmailRequest';\nimport { TwoFactorEmailResponse } from 'jslib-common/models/response/twoFactorEmailResponse';\n\nimport { TwoFactorBaseComponent } from './two-factor-base.component';\n\n@Component({\n selector: 'app-two-factor-email',\n templateUrl: 'two-factor-email.component.html',\n})\nexport class TwoFactorEmailComponent extends TwoFactorBaseComponent {\n type = TwoFactorProviderType.Email;\n email: string;\n token: string;\n sentEmail: string;\n formPromise: Promise;\n emailPromise: Promise;\n\n constructor(apiService: ApiService, i18nService: I18nService,\n toasterService: ToasterService, platformUtilsService: PlatformUtilsService,\n logService: LogService, userVerificationService: UserVerificationService,\n private userService: UserService) {\n super(apiService, i18nService, toasterService, platformUtilsService, logService, userVerificationService);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n return this.processResponse(authResponse.response);\n }\n\n submit() {\n if (this.enabled) {\n return super.disable(this.formPromise);\n } else {\n return this.enable();\n }\n }\n\n async sendEmail() {\n try {\n const request = await this.buildRequestModel(TwoFactorEmailRequest);\n request.email = this.email;\n this.emailPromise = this.apiService.postTwoFactorEmailSetup(request);\n await this.emailPromise;\n this.sentEmail = this.email;\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n protected async enable() {\n const request = await this.buildRequestModel(UpdateTwoFactorEmailRequest);\n request.email = this.email;\n request.token = this.token;\n\n return super.enable(async () => {\n this.formPromise = this.apiService.putTwoFactorEmail(request);\n const response = await this.formPromise;\n await this.processResponse(response);\n });\n }\n\n private async processResponse(response: TwoFactorEmailResponse) {\n this.token = null;\n this.email = response.email;\n this.enabled = response.enabled;\n if (!this.enabled && (this.email == null || this.email === '')) {\n this.email = await this.userService.getEmail();\n }\n }\n}\n","

{{'twoStepLogin' | i18n}} {{'emailTitle' | i18n}}

{{'twoStepLoginProviderEnabled' | i18n}} {{'email' | i18n}}: {{email}}

{{'twoFactorEmailDesc' | i18n}} \"Email

{{'verificationCodeEmailSent' | i18n : sentEmail}}
","import { Component } from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { TwoFactorRecoverResponse } from 'jslib-common/models/response/twoFactorRescoverResponse';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\n@Component({\n selector: 'app-two-factor-recovery',\n templateUrl: 'two-factor-recovery.component.html',\n})\nexport class TwoFactorRecoveryComponent {\n type = -1;\n code: string;\n authed: boolean;\n twoFactorProviderType = TwoFactorProviderType;\n\n constructor(private i18nService: I18nService) { }\n\n auth(authResponse: any) {\n this.authed = true;\n this.processResponse(authResponse.response);\n }\n\n print() {\n const w = window.open();\n w.document.write('
' +\n '

' + this.i18nService.t('twoFactorRecoveryYourCode') + ':

' +\n '' +\n this.code + '
' +\n '

' + new Date() + '

');\n w.onafterprint = () => w.close();\n w.print();\n }\n\n private formatString(s: string) {\n if (s == null) {\n return null;\n }\n return s.replace(/(.{4})/g, '$1 ').trim().toUpperCase();\n }\n\n private processResponse(response: TwoFactorRecoverResponse) {\n this.code = this.formatString(response.code);\n }\n}\n","

{{'twoStepLogin' | i18n}} {{'recoveryCodeTitle' | i18n}}

{{'twoFactorRecoveryYourCode' | i18n}}:

{{code}}
{{'twoFactorRecoveryNoCode' | i18n}}
","import {\n Component,\n NgZone,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserVerificationService } from 'jslib-common/abstractions/userVerification.service';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\nimport { SecretVerificationRequest } from 'jslib-common/models/request/secretVerificationRequest';\nimport { UpdateTwoFactorWebAuthnDeleteRequest } from 'jslib-common/models/request/updateTwoFactorWebAuthnDeleteRequest';\nimport { UpdateTwoFactorWebAuthnRequest } from 'jslib-common/models/request/updateTwoFactorWebAuthnRequest';\nimport {\n ChallengeResponse,\n TwoFactorWebAuthnResponse,\n} from 'jslib-common/models/response/twoFactorWebAuthnResponse';\n\nimport { TwoFactorBaseComponent } from './two-factor-base.component';\n\n@Component({\n selector: 'app-two-factor-webauthn',\n templateUrl: 'two-factor-webauthn.component.html',\n})\nexport class TwoFactorWebAuthnComponent extends TwoFactorBaseComponent {\n type = TwoFactorProviderType.WebAuthn;\n name: string;\n keys: any[];\n keyIdAvailable: number = null;\n keysConfiguredCount = 0;\n webAuthnError: boolean;\n webAuthnListening: boolean;\n webAuthnResponse: PublicKeyCredential;\n challengePromise: Promise;\n formPromise: Promise;\n\n constructor(apiService: ApiService, i18nService: I18nService,\n toasterService: ToasterService, platformUtilsService: PlatformUtilsService,\n private ngZone: NgZone, logService: LogService, userVerificationService: UserVerificationService) {\n super(apiService, i18nService, toasterService, platformUtilsService, logService, userVerificationService);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n this.processResponse(authResponse.response);\n }\n\n async submit() {\n if (this.webAuthnResponse == null || this.keyIdAvailable == null) {\n // Should never happen.\n return Promise.reject();\n }\n const request = await this.buildRequestModel(UpdateTwoFactorWebAuthnRequest);\n request.deviceResponse = this.webAuthnResponse;\n request.id = this.keyIdAvailable;\n request.name = this.name;\n\n return super.enable(async () => {\n this.formPromise = this.apiService.putTwoFactorWebAuthn(request);\n const response = await this.formPromise;\n await this.processResponse(response);\n });\n }\n\n disable() {\n return super.disable(this.formPromise);\n }\n\n async remove(key: any) {\n if (this.keysConfiguredCount <= 1 || key.removePromise != null) {\n return;\n }\n const name = key.name != null ? key.name : this.i18nService.t('webAuthnkeyX', key.id);\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('removeU2fConfirmation'), name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n const request = await this.buildRequestModel(UpdateTwoFactorWebAuthnDeleteRequest);\n request.id = key.id;\n try {\n key.removePromise = this.apiService.deleteTwoFactorWebAuthn(request);\n const response = await key.removePromise;\n key.removePromise = null;\n await this.processResponse(response);\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async readKey() {\n if (this.keyIdAvailable == null) {\n return;\n }\n const request = await this.buildRequestModel(SecretVerificationRequest);\n try {\n this.challengePromise = this.apiService.getTwoFactorWebAuthnChallenge(request);\n const challenge = await this.challengePromise;\n this.readDevice(challenge);\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n private readDevice(webAuthnChallenge: ChallengeResponse) {\n // tslint:disable-next-line\n console.log('listening for key...');\n this.resetWebAuthn(true);\n\n navigator.credentials.create({\n publicKey: webAuthnChallenge,\n }).then((data: PublicKeyCredential) => {\n this.ngZone.run(() => {\n this.webAuthnListening = false;\n this.webAuthnResponse = data;\n });\n }).catch(err => {\n // tslint:disable-next-line\n console.error(err);\n this.resetWebAuthn(false);\n // TODO: Should we display the actual error?\n this.webAuthnError = true;\n });\n }\n\n private resetWebAuthn(listening = false) {\n this.webAuthnResponse = null;\n this.webAuthnError = false;\n this.webAuthnListening = listening;\n }\n\n private processResponse(response: TwoFactorWebAuthnResponse) {\n this.resetWebAuthn();\n this.keys = [];\n this.keyIdAvailable = null;\n this.name = null;\n this.keysConfiguredCount = 0;\n for (let i = 1; i <= 5; i++) {\n if (response.keys != null) {\n const key = response.keys.filter(k => k.id === i);\n if (key.length > 0) {\n this.keysConfiguredCount++;\n this.keys.push({\n id: i, name: key[0].name,\n configured: true,\n migrated: key[0].migrated,\n removePromise: null,\n });\n continue;\n }\n }\n this.keys.push({ id: i, name: null, configured: false, removePromise: null });\n if (this.keyIdAvailable == null) {\n this.keyIdAvailable = i;\n }\n }\n this.enabled = response.enabled;\n }\n}\n","

{{'twoStepLogin' | i18n}} {{'webAuthnTitle' | i18n}}

{{'twoStepLoginProviderEnabled' | i18n}}

{{'twoFactorWebAuthnWarning' | i18n}}

  • {{'twoFactorWebAuthnSupportWeb' | i18n}}
\"FIDO2
  • {{'webAuthnkeyX' | i18n : i + 1}} {{k.name}} {{'webAuthnMigrated' | i18n}} 1 && k.configured\"> - {{'remove' | i18n}}

{{'twoFactorWebAuthnAdd' | i18n}}:

  1. {{'twoFactorU2fGiveName' | i18n}}
  2. {{'twoFactorU2fPlugInReadKey' | i18n}}
  3. {{'twoFactorU2fTouchButton' | i18n}}
  4. {{'twoFactorU2fSaveForm' | i18n}}
{{'twoFactorU2fWaiting' | i18n}}... {{'twoFactorU2fClickSave' | i18n}} {{'twoFactorU2fProblemReadingTryAgain' | i18n}}
","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserVerificationService } from 'jslib-common/abstractions/userVerification.service';\n\nimport { UpdateTwoFactorYubioOtpRequest } from 'jslib-common/models/request/updateTwoFactorYubioOtpRequest';\nimport { TwoFactorYubiKeyResponse } from 'jslib-common/models/response/twoFactorYubiKeyResponse';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\nimport { TwoFactorBaseComponent } from './two-factor-base.component';\n\n@Component({\n selector: 'app-two-factor-yubikey',\n templateUrl: 'two-factor-yubikey.component.html',\n})\nexport class TwoFactorYubiKeyComponent extends TwoFactorBaseComponent {\n type = TwoFactorProviderType.Yubikey;\n keys: any[];\n nfc = false;\n\n formPromise: Promise;\n disablePromise: Promise;\n\n constructor(apiService: ApiService, i18nService: I18nService,\n toasterService: ToasterService, platformUtilsService: PlatformUtilsService,\n logService: LogService, userVerificationService: UserVerificationService) {\n super(apiService, i18nService, toasterService, platformUtilsService, logService, userVerificationService);\n }\n\n auth(authResponse: any) {\n super.auth(authResponse);\n this.processResponse(authResponse.response);\n }\n\n async submit() {\n const request = await this.buildRequestModel(UpdateTwoFactorYubioOtpRequest);\n request.key1 = this.keys != null && this.keys.length > 0 ? this.keys[0].key : null;\n request.key2 = this.keys != null && this.keys.length > 1 ? this.keys[1].key : null;\n request.key3 = this.keys != null && this.keys.length > 2 ? this.keys[2].key : null;\n request.key4 = this.keys != null && this.keys.length > 3 ? this.keys[3].key : null;\n request.key5 = this.keys != null && this.keys.length > 4 ? this.keys[4].key : null;\n request.nfc = this.nfc;\n\n return super.enable(async () => {\n this.formPromise = this.apiService.putTwoFactorYubiKey(request);\n const response = await this.formPromise;\n await this.processResponse(response);\n this.toasterService.popAsync('success', null, this.i18nService.t('yubikeysUpdated'));\n });\n }\n\n disable() {\n return super.disable(this.disablePromise);\n }\n\n remove(key: any) {\n key.existingKey = null;\n key.key = null;\n }\n\n private processResponse(response: TwoFactorYubiKeyResponse) {\n this.enabled = response.enabled;\n this.keys = [\n { key: response.key1, existingKey: this.padRight(response.key1) },\n { key: response.key2, existingKey: this.padRight(response.key2) },\n { key: response.key3, existingKey: this.padRight(response.key3) },\n { key: response.key4, existingKey: this.padRight(response.key4) },\n { key: response.key5, existingKey: this.padRight(response.key5) },\n ];\n this.nfc = response.nfc || !response.enabled;\n }\n\n private padRight(str: string, character = '•', size = 44) {\n if (str == null || character == null || str.length >= size) {\n return str;\n }\n const max = (size - str.length) / character.length;\n for (let i = 0; i < max; i++) {\n str += character;\n }\n return str;\n }\n}\n","

{{'twoStepLogin' | i18n}} YubiKey

{{'twoStepLoginProviderEnabled' | i18n}}

{{'twoFactorYubikeyWarning' | i18n}}

  • {{'twoFactorYubikeySupportUsb' | i18n}}
  • {{'twoFactorYubikeySupportMobile' | i18n}}
\"YubiKey

{{'twoFactorYubikeyAdd' | i18n}}:

  1. {{'twoFactorYubikeyPlugIn' | i18n}}
  2. {{'twoFactorYubikeySelectKey' | i18n}}
  3. {{'twoFactorYubikeyTouchButton' | i18n}}
  4. {{'twoFactorYubikeySaveForm' | i18n}}

{{k.existingKey}}
{{'nfcSupport' | i18n}}
{{'twoFactorYubikeySupportsNfcDesc' | i18n}}
","import {\n Component,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\nimport {\n Toast,\n ToasterService,\n} from 'angular2-toaster';\n\nimport { first } from 'rxjs/operators';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\nimport { ValidationService } from 'jslib-angular/services/validation.service';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { PlanSponsorshipType } from 'jslib-common/enums/planSponsorshipType';\nimport { PlanType } from 'jslib-common/enums/planType';\nimport { ProductType } from 'jslib-common/enums/productType';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\nimport { OrganizationSponsorshipRedeemRequest } from 'jslib-common/models/request/organization/organizationSponsorshipRedeemRequest';\n\nimport { DeleteOrganizationComponent } from 'src/app/organizations/settings/delete-organization.component';\n\nimport { OrganizationPlansComponent } from 'src/app/settings/organization-plans.component';\n\n@Component({\n selector: 'families-for-enterprise-setup',\n templateUrl: 'families-for-enterprise-setup.component.html',\n})\nexport class FamiliesForEnterpriseSetupComponent implements OnInit {\n @ViewChild(OrganizationPlansComponent, { static: false })\n set organizationPlansComponent(value: OrganizationPlansComponent) {\n if (!value) {\n return;\n }\n\n value.plan = PlanType.FamiliesAnnually;\n value.product = ProductType.Families;\n value.acceptingSponsorship = true;\n value.onSuccess.subscribe(this.onOrganizationCreateSuccess.bind(this));\n }\n\n @ViewChild('deleteOrganizationTemplate', { read: ViewContainerRef, static: true }) deleteModalRef: ViewContainerRef;\n\n loading = true;\n badToken = false;\n formPromise: Promise;\n\n token: string;\n existingFamilyOrganizations: Organization[];\n\n showNewOrganization: boolean = false;\n _organizationPlansComponent: OrganizationPlansComponent;\n _selectedFamilyOrganizationId: string = '';\n\n constructor(private router: Router, private toasterService: ToasterService,\n private i18nService: I18nService, private route: ActivatedRoute,\n private apiService: ApiService, private syncService: SyncService,\n private validationService: ValidationService, private userService: UserService,\n private modalService: ModalService) { }\n\n async ngOnInit() {\n document.body.classList.remove('layout_frontend');\n this.route.queryParams.pipe(first()).subscribe(async qParams => {\n const error = qParams.token == null;\n if (error) {\n const toast: Toast = {\n type: 'error',\n title: null,\n body: this.i18nService.t('sponsoredFamiliesAcceptFailed'),\n timeout: 10000,\n };\n this.toasterService.popAsync(toast);\n this.router.navigate(['/']);\n return;\n }\n\n this.token = qParams.token;\n\n await this.syncService.fullSync(true);\n this.badToken = !await this.apiService.postPreValidateSponsorshipToken(this.token);\n this.loading = false;\n\n this.existingFamilyOrganizations = (await this.userService.getAllOrganizations())\n .filter(o => o.planProductType === ProductType.Families);\n\n if (this.existingFamilyOrganizations.length === 0) {\n this.selectedFamilyOrganizationId = 'createNew';\n }\n });\n }\n\n async submit() {\n this.formPromise = this.doSubmit(this._selectedFamilyOrganizationId);\n await this.formPromise;\n this.formPromise = null;\n }\n\n get selectedFamilyOrganizationId() {\n return this._selectedFamilyOrganizationId;\n }\n\n set selectedFamilyOrganizationId(value: string) {\n this._selectedFamilyOrganizationId = value;\n this.showNewOrganization = value === 'createNew';\n }\n\n private async doSubmit(organizationId: string) {\n try {\n const request = new OrganizationSponsorshipRedeemRequest();\n request.planSponsorshipType = PlanSponsorshipType.FamiliesForEnterprise;\n request.sponsoredOrganizationId = organizationId;\n\n await this.apiService.postRedeemSponsorship(this.token, request);\n this.toasterService.popAsync('success', null, this.i18nService.t('sponsoredFamiliesOfferRedeemed'));\n await this.syncService.fullSync(true);\n\n this.router.navigate(['/']);\n } catch (e) {\n if (this.showNewOrganization) {\n await this.modalService.openViewRef(DeleteOrganizationComponent, this.deleteModalRef, comp => {\n comp.organizationId = organizationId;\n comp.descriptionKey = 'orgCreatedSponsorshipInvalid';\n comp.onSuccess.subscribe(() => {\n this.router.navigate(['/']);\n });\n });\n }\n this.validationService.showError(this.i18nService.t('sponsorshipTokenHasExpired'));\n }\n }\n\n private async onOrganizationCreateSuccess(value: any) {\n // Use newly created organization id\n await this.doSubmit(value.organizationId);\n }\n}\n","

{{'sponsoredFamiliesOffer' | i18n}}

{{'loading' | i18n}}
{{'badToken' | i18n}}

{{'acceptBitwardenFamiliesHelp' | i18n}}

","export enum PlanSponsorshipType {\n FamiliesForEnterprise = 0,\n}\n","import { Component } from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { ExportService } from 'jslib-common/abstractions/export.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { UserVerificationService } from 'jslib-common/abstractions/userVerification.service';\n\nimport { ExportComponent as BaseExportComponent } from '../../tools/export.component';\n\n@Component({\n selector: 'app-org-export',\n templateUrl: '../../tools/export.component.html',\n})\nexport class ExportComponent extends BaseExportComponent {\n constructor(cryptoService: CryptoService, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService, exportService: ExportService,\n eventService: EventService, private route: ActivatedRoute, policyService: PolicyService,\n logService: LogService, userVerificationService: UserVerificationService, fb: FormBuilder) {\n super(cryptoService, i18nService, platformUtilsService, exportService, eventService, policyService,\n logService, userVerificationService, fb);\n }\n\n async ngOnInit() {\n await super.ngOnInit();\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n });\n }\n\n async checkExportDisabled() {\n return;\n }\n\n getExportData() {\n return this.exportService.getOrganizationExport(this.organizationId, this.format);\n }\n\n getFileName() {\n return super.getFileName('org');\n }\n\n async collectEvent(): Promise {\n // TODO\n // await this.eventService.collect(EventType.Organization_ClientExportedVault);\n }\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { AuditService } from 'jslib-common/abstractions/audit.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordRepromptService } from 'jslib-common/abstractions/passwordReprompt.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport {\n ExposedPasswordsReportComponent as BaseExposedPasswordsReportComponent,\n} from '../../tools/exposed-passwords-report.component';\n\nimport { Cipher } from 'jslib-common/models/domain/cipher';\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\n@Component({\n selector: 'app-exposed-passwords-report',\n templateUrl: '../../tools/exposed-passwords-report.component.html',\n})\nexport class ExposedPasswordsReportComponent extends BaseExposedPasswordsReportComponent {\n manageableCiphers: Cipher[];\n\n constructor(cipherService: CipherService, auditService: AuditService,\n modalService: ModalService, messagingService: MessagingService,\n userService: UserService, passwordRepromptService: PasswordRepromptService, private route: ActivatedRoute) {\n super(cipherService, auditService, modalService, messagingService, userService, passwordRepromptService);\n }\n\n ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n this.manageableCiphers = await this.cipherService.getAll();\n super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n\n canManageCipher(c: CipherView): boolean {\n return this.manageableCiphers.some(x => x.id === c.id);\n }\n}\n","import { AttachmentResponse } from '../response/attachmentResponse';\n\nexport class AttachmentData {\n id: string;\n url: string;\n fileName: string;\n key: string;\n size: string;\n sizeName: string;\n\n constructor(response?: AttachmentResponse) {\n if (response == null) {\n return;\n }\n this.id = response.id;\n this.url = response.url;\n this.fileName = response.fileName;\n this.key = response.key;\n this.size = response.size;\n this.sizeName = response.sizeName;\n }\n}\n","import { CardApi } from '../api/cardApi';\n\nexport class CardData {\n cardholderName: string;\n brand: string;\n number: string;\n expMonth: string;\n expYear: string;\n code: string;\n\n constructor(data?: CardApi) {\n if (data == null) {\n return;\n }\n\n this.cardholderName = data.cardholderName;\n this.brand = data.brand;\n this.number = data.number;\n this.expMonth = data.expMonth;\n this.expYear = data.expYear;\n this.code = data.code;\n }\n}\n","import { FieldType } from '../../enums/fieldType';\nimport { LinkedIdType } from '../../enums/linkedIdType';\n\nimport { FieldApi } from '../api/fieldApi';\n\nexport class FieldData {\n type: FieldType;\n name: string;\n value: string;\n linkedId: LinkedIdType;\n\n constructor(response?: FieldApi) {\n if (response == null) {\n return;\n }\n this.type = response.type;\n this.name = response.name;\n this.value = response.value;\n this.linkedId = response.linkedId;\n }\n}\n","import { IdentityApi } from '../api/identityApi';\n\nexport class IdentityData {\n title: string;\n firstName: string;\n middleName: string;\n lastName: string;\n address1: string;\n address2: string;\n address3: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n company: string;\n email: string;\n phone: string;\n ssn: string;\n username: string;\n passportNumber: string;\n licenseNumber: string;\n\n constructor(data?: IdentityApi) {\n if (data == null) {\n return;\n }\n\n this.title = data.title;\n this.firstName = data.firstName;\n this.middleName = data.middleName;\n this.lastName = data.lastName;\n this.address1 = data.address1;\n this.address2 = data.address2;\n this.address3 = data.address3;\n this.city = data.city;\n this.state = data.state;\n this.postalCode = data.postalCode;\n this.country = data.country;\n this.company = data.company;\n this.email = data.email;\n this.phone = data.phone;\n this.ssn = data.ssn;\n this.username = data.username;\n this.passportNumber = data.passportNumber;\n this.licenseNumber = data.licenseNumber;\n }\n}\n","import { LoginApi } from '../api/loginApi';\n\nimport { LoginUriData } from './loginUriData';\n\nexport class LoginData {\n uris: LoginUriData[];\n username: string;\n password: string;\n passwordRevisionDate: string;\n totp: string;\n autofillOnPageLoad: boolean;\n\n constructor(data?: LoginApi) {\n if (data == null) {\n return;\n }\n\n this.username = data.username;\n this.password = data.password;\n this.passwordRevisionDate = data.passwordRevisionDate;\n this.totp = data.totp;\n this.autofillOnPageLoad = data.autofillOnPageLoad;\n\n if (data.uris) {\n this.uris = data.uris.map(u => new LoginUriData(u));\n }\n }\n}\n","import { UriMatchType } from '../../enums/uriMatchType';\n\nimport { LoginUriApi } from '../api/loginUriApi';\n\nexport class LoginUriData {\n uri: string;\n match: UriMatchType = null;\n\n constructor(data?: LoginUriApi) {\n if (data == null) {\n return;\n }\n this.uri = data.uri;\n this.match = data.match;\n }\n}\n","import { PasswordHistoryResponse } from '../response/passwordHistoryResponse';\n\nexport class PasswordHistoryData {\n password: string;\n lastUsedDate: string;\n\n constructor(response?: PasswordHistoryResponse) {\n if (response == null) {\n return;\n }\n\n this.password = response.password;\n this.lastUsedDate = response.lastUsedDate;\n }\n}\n","import { SecureNoteType } from '../../enums/secureNoteType';\n\nimport { SecureNoteApi } from '../api/secureNoteApi';\n\nexport class SecureNoteData {\n type: SecureNoteType;\n\n constructor(data?: SecureNoteApi) {\n if (data == null) {\n return;\n }\n\n this.type = data.type;\n }\n}\n","import { AttachmentData } from '../data/attachmentData';\n\nimport { AttachmentView } from '../view/attachmentView';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nimport { CryptoService } from '../../abstractions/crypto.service';\n\nimport { Utils } from '../../misc/utils';\n\nexport class Attachment extends Domain {\n id: string;\n url: string;\n size: string;\n sizeName: string;\n key: EncString;\n fileName: EncString;\n\n constructor(obj?: AttachmentData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.size = obj.size;\n this.buildDomainModel(this, obj, {\n id: null,\n url: null,\n sizeName: null,\n fileName: null,\n key: null,\n }, alreadyEncrypted, ['id', 'url', 'sizeName']);\n }\n\n async decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n const view = await this.decryptObj(new AttachmentView(this), {\n fileName: null,\n }, orgId, encKey);\n\n if (this.key != null) {\n let cryptoService: CryptoService;\n const containerService = (Utils.global as any).bitwardenContainerService;\n if (containerService) {\n cryptoService = containerService.getCryptoService();\n } else {\n throw new Error('global bitwardenContainerService not initialized.');\n }\n\n try {\n const orgKey = await cryptoService.getOrgKey(orgId);\n const decValue = await cryptoService.decryptToBytes(this.key, orgKey ?? encKey);\n view.key = new SymmetricCryptoKey(decValue);\n } catch (e) {\n // TODO: error?\n }\n }\n\n return view;\n }\n\n toAttachmentData(): AttachmentData {\n const a = new AttachmentData();\n a.size = this.size;\n this.buildDataModel(this, a, {\n id: null,\n url: null,\n sizeName: null,\n fileName: null,\n key: null,\n }, ['id', 'url', 'sizeName']);\n return a;\n }\n}\n","import { PasswordHistoryData } from '../data/passwordHistoryData';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\n\nimport { PasswordHistoryView } from '../view/passwordHistoryView';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class Password extends Domain {\n password: EncString;\n lastUsedDate: Date;\n\n constructor(obj?: PasswordHistoryData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n password: null,\n }, alreadyEncrypted);\n this.lastUsedDate = new Date(obj.lastUsedDate);\n }\n\n decrypt(orgId: string, encKey?: SymmetricCryptoKey): Promise {\n return this.decryptObj(new PasswordHistoryView(this), {\n password: null,\n }, orgId, encKey);\n }\n\n toPasswordHistoryData(): PasswordHistoryData {\n const ph = new PasswordHistoryData();\n ph.lastUsedDate = this.lastUsedDate.toISOString();\n this.buildDataModel(this, ph, {\n password: null,\n });\n return ph;\n }\n}\n","import { CipherRequest } from './cipherRequest';\n\nimport { Cipher } from '../domain/cipher';\n\nexport class CipherCreateRequest {\n cipher: CipherRequest;\n collectionIds: string[];\n\n constructor(cipher: Cipher) {\n this.cipher = new CipherRequest(cipher);\n this.collectionIds = cipher.collectionIds;\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nexport class CardApi extends BaseResponse {\n cardholderName: string;\n brand: string;\n number: string;\n expMonth: string;\n expYear: string;\n code: string;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.cardholderName = this.getResponseProperty('CardholderName');\n this.brand = this.getResponseProperty('Brand');\n this.number = this.getResponseProperty('Number');\n this.expMonth = this.getResponseProperty('ExpMonth');\n this.expYear = this.getResponseProperty('ExpYear');\n this.code = this.getResponseProperty('Code');\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nimport { FieldType } from '../../enums/fieldType';\nimport { LinkedIdType } from '../../enums/linkedIdType';\n\nexport class FieldApi extends BaseResponse {\n name: string;\n value: string;\n type: FieldType;\n linkedId: LinkedIdType;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.type = this.getResponseProperty('Type');\n this.name = this.getResponseProperty('Name');\n this.value = this.getResponseProperty('Value');\n this.linkedId = this.getResponseProperty('linkedId');\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nexport class IdentityApi extends BaseResponse {\n title: string;\n firstName: string;\n middleName: string;\n lastName: string;\n address1: string;\n address2: string;\n address3: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n company: string;\n email: string;\n phone: string;\n ssn: string;\n username: string;\n passportNumber: string;\n licenseNumber: string;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.title = this.getResponseProperty('Title');\n this.firstName = this.getResponseProperty('FirstName');\n this.middleName = this.getResponseProperty('MiddleName');\n this.lastName = this.getResponseProperty('LastName');\n this.address1 = this.getResponseProperty('Address1');\n this.address2 = this.getResponseProperty('Address2');\n this.address3 = this.getResponseProperty('Address3');\n this.city = this.getResponseProperty('City');\n this.state = this.getResponseProperty('State');\n this.postalCode = this.getResponseProperty('PostalCode');\n this.country = this.getResponseProperty('Country');\n this.company = this.getResponseProperty('Company');\n this.email = this.getResponseProperty('Email');\n this.phone = this.getResponseProperty('Phone');\n this.ssn = this.getResponseProperty('SSN');\n this.username = this.getResponseProperty('Username');\n this.passportNumber = this.getResponseProperty('PassportNumber');\n this.licenseNumber = this.getResponseProperty('LicenseNumber');\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nimport { LoginUriApi } from './loginUriApi';\n\nexport class LoginApi extends BaseResponse {\n uris: LoginUriApi[];\n username: string;\n password: string;\n passwordRevisionDate: string;\n totp: string;\n autofillOnPageLoad: boolean;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.username = this.getResponseProperty('Username');\n this.password = this.getResponseProperty('Password');\n this.passwordRevisionDate = this.getResponseProperty('PasswordRevisionDate');\n this.totp = this.getResponseProperty('Totp');\n this.autofillOnPageLoad = this.getResponseProperty('AutofillOnPageLoad');\n\n const uris = this.getResponseProperty('Uris');\n if (uris != null) {\n this.uris = uris.map((u: any) => new LoginUriApi(u));\n }\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nimport { UriMatchType } from '../../enums/uriMatchType';\n\nexport class LoginUriApi extends BaseResponse {\n uri: string;\n match: UriMatchType = null;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.uri = this.getResponseProperty('Uri');\n const match = this.getResponseProperty('Match');\n this.match = match != null ? match : null;\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nimport { SecureNoteType } from '../../enums/secureNoteType';\n\nexport class SecureNoteApi extends BaseResponse {\n type: SecureNoteType;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n this.type = this.getResponseProperty('Type');\n }\n}\n","import {\n Directive,\n ElementRef,\n forwardRef,\n HostListener,\n Input,\n Renderer2,\n} from '@angular/core';\nimport {\n ControlValueAccessor,\n NgControl,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\n\n// ref: https://juristr.com/blog/2018/02/ng-true-value-directive/\n@Directive({\n selector: 'input[type=checkbox][appTrueFalseValue]',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => TrueFalseValueDirective),\n multi: true,\n },\n ],\n})\nexport class TrueFalseValueDirective implements ControlValueAccessor {\n @Input() trueValue = true;\n @Input() falseValue = false;\n\n constructor(private elementRef: ElementRef, private renderer: Renderer2) { }\n\n @HostListener('change', ['$event'])\n onHostChange(ev: any) {\n this.propagateChange(ev.target.checked ? this.trueValue : this.falseValue);\n }\n\n writeValue(obj: any): void {\n if (obj === this.trueValue) {\n this.renderer.setProperty(this.elementRef.nativeElement, 'checked', true);\n } else {\n this.renderer.setProperty(this.elementRef.nativeElement, 'checked', false);\n }\n }\n\n registerOnChange(fn: any): void {\n this.propagateChange = fn;\n }\n\n registerOnTouched(fn: any): void { /* nothing */ }\n\n setDisabledState?(isDisabled: boolean): void { /* nothing */ }\n\n private propagateChange = (_: any) => { /* nothing */ };\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n Input,\n} from '@angular/core';\n\n@Directive({\n selector: '[appFallbackSrc]',\n})\nexport class FallbackSrcDirective {\n @Input('appFallbackSrc') appFallbackSrc: string;\n\n constructor(private el: ElementRef) {\n }\n\n @HostListener('error') onError() {\n this.el.nativeElement.src = this.appFallbackSrc;\n }\n}\n","import { Component } from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { ImportService } from 'jslib-common/abstractions/import.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ImportComponent as BaseImportComponent } from '../../tools/import.component';\n\n@Component({\n selector: 'app-org-import',\n templateUrl: '../../tools/import.component.html',\n})\nexport class ImportComponent extends BaseImportComponent {\n organizationName: string;\n\n constructor(i18nService: I18nService, toasterService: ToasterService,\n importService: ImportService, router: Router, private route: ActivatedRoute,\n platformUtilsService: PlatformUtilsService, policyService: PolicyService,\n private userService: UserService, logService: LogService) {\n super(i18nService, toasterService, importService, router, platformUtilsService, policyService, logService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organizationId = params.organizationId;\n this.successNavigate = ['organizations', this.organizationId, 'vault'];\n await super.ngOnInit();\n this.importBlockedByPolicy = false;\n });\n const organization = await this.userService.getOrganization(this.organizationId);\n this.organizationName = organization.name;\n }\n\n async submit() {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('importWarning', this.organizationName),\n this.i18nService.t('warning'), this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n super.submit();\n }\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordRepromptService } from 'jslib-common/abstractions/passwordReprompt.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport {\n InactiveTwoFactorReportComponent as BaseInactiveTwoFactorReportComponent,\n} from '../../tools/inactive-two-factor-report.component';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\n@Component({\n selector: 'app-inactive-two-factor-report',\n templateUrl: '../../tools/inactive-two-factor-report.component.html',\n})\nexport class InactiveTwoFactorReportComponent extends BaseInactiveTwoFactorReportComponent {\n constructor(cipherService: CipherService, modalService: ModalService,\n messagingService: MessagingService, userService: UserService,\n private route: ActivatedRoute, logService: LogService, passwordRepromptService: PasswordRepromptService) {\n super(cipherService, modalService, messagingService, userService, logService, passwordRepromptService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordRepromptService } from 'jslib-common/abstractions/passwordReprompt.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { Cipher } from 'jslib-common/models/domain/cipher';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport {\n ReusedPasswordsReportComponent as BaseReusedPasswordsReportComponent,\n} from '../../tools/reused-passwords-report.component';\n\n@Component({\n selector: 'app-reused-passwords-report',\n templateUrl: '../../tools/reused-passwords-report.component.html',\n})\nexport class ReusedPasswordsReportComponent extends BaseReusedPasswordsReportComponent {\n manageableCiphers: Cipher[];\n\n constructor(cipherService: CipherService, modalService: ModalService,\n messagingService: MessagingService, userService: UserService, passwordRepromptService: PasswordRepromptService,\n private route: ActivatedRoute) {\n super(cipherService, modalService, messagingService, userService, passwordRepromptService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n this.manageableCiphers = await this.cipherService.getAll();\n await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n\n canManageCipher(c: CipherView): boolean {\n return this.manageableCiphers.some(x => x.id === c.id);\n }\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\n@Component({\n selector: 'app-org-tools',\n templateUrl: 'tools.component.html',\n})\nexport class ToolsComponent {\n organization: Organization;\n accessReports = false;\n loading = true;\n\n constructor(private route: ActivatedRoute, private userService: UserService,\n private messagingService: MessagingService) { }\n\n ngOnInit() {\n this.route.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n // TODO: Maybe we want to just make sure they are not on a free plan? Just compare useTotp for now\n // since all paid plans include useTotp\n this.accessReports = this.organization.useTotp;\n this.loading = false;\n });\n }\n\n upgradeOrganization() {\n this.messagingService.send('upgradeOrganization', { organizationId: this.organization.id });\n }\n}\n"," ","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordRepromptService } from 'jslib-common/abstractions/passwordReprompt.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport {\n UnsecuredWebsitesReportComponent as BaseUnsecuredWebsitesReportComponent,\n} from '../../tools/unsecured-websites-report.component';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\n@Component({\n selector: 'app-unsecured-websites-report',\n templateUrl: '../../tools/unsecured-websites-report.component.html',\n})\nexport class UnsecuredWebsitesReportComponent extends BaseUnsecuredWebsitesReportComponent {\n constructor(cipherService: CipherService, modalService: ModalService,\n messagingService: MessagingService, userService: UserService, passwordRepromptService: PasswordRepromptService,\n private route: ActivatedRoute) {\n super(cipherService, modalService, messagingService, userService, passwordRepromptService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n}\n","import { Component } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PasswordRepromptService } from 'jslib-common/abstractions/passwordReprompt.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { Cipher } from 'jslib-common/models/domain/cipher';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport {\n WeakPasswordsReportComponent as BaseWeakPasswordsReportComponent,\n} from '../../tools/weak-passwords-report.component';\n\n@Component({\n selector: 'app-weak-passwords-report',\n templateUrl: '../../tools/weak-passwords-report.component.html',\n})\nexport class WeakPasswordsReportComponent extends BaseWeakPasswordsReportComponent {\n manageableCiphers: Cipher[];\n\n constructor(cipherService: CipherService, passwordGenerationService: PasswordGenerationService,\n modalService: ModalService, messagingService: MessagingService,\n userService: UserService, passwordRepromptService: PasswordRepromptService, private route: ActivatedRoute) {\n super(cipherService, passwordGenerationService, modalService, messagingService, userService,\n passwordRepromptService);\n }\n\n async ngOnInit() {\n this.route.parent.parent.params.subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n this.manageableCiphers = await this.cipherService.getAll();\n await super.ngOnInit();\n });\n }\n\n getAllCiphers(): Promise {\n return this.cipherService.getAllFromApiForOrganization(this.organization.id);\n }\n\n canManageCipher(c: CipherView): boolean {\n return this.manageableCiphers.some(x => x.id === c.id);\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n NgZone,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { first } from 'rxjs/operators';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { BroadcasterService } from 'jslib-angular/services/broadcaster.service';\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\n\nimport { EntityEventsComponent } from '../manage/entity-events.component';\nimport { AddEditComponent } from './add-edit.component';\nimport { AttachmentsComponent } from './attachments.component';\nimport { CiphersComponent } from './ciphers.component';\nimport { CollectionsComponent } from './collections.component';\nimport { GroupingsComponent } from './groupings.component';\n\nconst BroadcasterSubscriptionId = 'OrgVaultComponent';\n\n@Component({\n selector: 'app-org-vault',\n templateUrl: 'vault.component.html',\n})\nexport class VaultComponent implements OnInit, OnDestroy {\n @ViewChild(GroupingsComponent, { static: true }) groupingsComponent: GroupingsComponent;\n @ViewChild(CiphersComponent, { static: true }) ciphersComponent: CiphersComponent;\n @ViewChild('attachments', { read: ViewContainerRef, static: true }) attachmentsModalRef: ViewContainerRef;\n @ViewChild('cipherAddEdit', { read: ViewContainerRef, static: true }) cipherAddEditModalRef: ViewContainerRef;\n @ViewChild('collections', { read: ViewContainerRef, static: true }) collectionsModalRef: ViewContainerRef;\n @ViewChild('eventsTemplate', { read: ViewContainerRef, static: true }) eventsModalRef: ViewContainerRef;\n\n organization: Organization;\n collectionId: string = null;\n type: CipherType = null;\n deleted: boolean = false;\n trashCleanupWarning: string = null;\n\n constructor(private route: ActivatedRoute, private userService: UserService,\n private router: Router, private changeDetectorRef: ChangeDetectorRef,\n private syncService: SyncService, private i18nService: I18nService,\n private modalService: ModalService, private messagingService: MessagingService,\n private broadcasterService: BroadcasterService, private ngZone: NgZone,\n private platformUtilsService: PlatformUtilsService) { }\n\n ngOnInit() {\n this.trashCleanupWarning = this.i18nService.t('trashCleanupWarningSelfHosted');\n\n this.route.parent.params.pipe(first()).subscribe(async params => {\n this.organization = await this.userService.getOrganization(params.organizationId);\n this.groupingsComponent.organization = this.organization;\n this.ciphersComponent.organization = this.organization;\n\n this.route.queryParams.pipe(first()).subscribe(async qParams => {\n this.ciphersComponent.searchText = this.groupingsComponent.searchText = qParams.search;\n if (!this.organization.canViewAllCollections) {\n await this.syncService.fullSync(false);\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'syncCompleted':\n if (message.successfully) {\n await Promise.all([\n this.groupingsComponent.load(),\n this.ciphersComponent.refresh(),\n ]);\n this.changeDetectorRef.detectChanges();\n }\n break;\n }\n });\n });\n }\n await this.groupingsComponent.load();\n\n if (qParams == null) {\n this.groupingsComponent.selectedAll = true;\n await this.ciphersComponent.reload();\n } else {\n if (qParams.deleted) {\n this.groupingsComponent.selectedTrash = true;\n await this.filterDeleted(true);\n } else if (qParams.type) {\n const t = parseInt(qParams.type, null);\n this.groupingsComponent.selectedType = t;\n await this.filterCipherType(t, true);\n } else if (qParams.collectionId) {\n this.groupingsComponent.selectedCollectionId = qParams.collectionId;\n await this.filterCollection(qParams.collectionId, true);\n } else {\n this.groupingsComponent.selectedAll = true;\n await this.ciphersComponent.reload();\n }\n }\n\n if (qParams.viewEvents != null) {\n const cipher = this.ciphersComponent.ciphers.filter(c => c.id === qParams.viewEvents);\n if (cipher.length > 0) {\n this.viewEvents(cipher[0]);\n }\n }\n });\n });\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async clearGroupingFilters() {\n this.ciphersComponent.showAddNew = true;\n this.ciphersComponent.deleted = false;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchVault');\n await this.ciphersComponent.applyFilter();\n this.clearFilters();\n this.go();\n }\n\n async filterCipherType(type: CipherType, load = false) {\n this.ciphersComponent.showAddNew = true;\n this.ciphersComponent.deleted = false;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchType');\n const filter = (c: CipherView) => c.type === type;\n if (load) {\n await this.ciphersComponent.reload(filter);\n } else {\n await this.ciphersComponent.applyFilter(filter);\n }\n this.clearFilters();\n this.type = type;\n this.go();\n }\n\n async filterCollection(collectionId: string, load = false) {\n this.ciphersComponent.showAddNew = true;\n this.ciphersComponent.deleted = false;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchCollection');\n const filter = (c: CipherView) => {\n if (collectionId === 'unassigned') {\n return c.collectionIds == null || c.collectionIds.length === 0;\n } else {\n return c.collectionIds != null && c.collectionIds.indexOf(collectionId) > -1;\n }\n };\n if (load) {\n await this.ciphersComponent.reload(filter);\n } else {\n await this.ciphersComponent.applyFilter(filter);\n }\n this.clearFilters();\n this.collectionId = collectionId;\n this.go();\n }\n\n async filterDeleted(load: boolean = false) {\n this.ciphersComponent.showAddNew = false;\n this.ciphersComponent.deleted = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchTrash');\n if (load) {\n await this.ciphersComponent.reload(null, true);\n } else {\n await this.ciphersComponent.applyFilter(null);\n }\n this.clearFilters();\n this.deleted = true;\n this.go();\n }\n\n filterSearchText(searchText: string) {\n this.ciphersComponent.searchText = searchText;\n this.ciphersComponent.search(200);\n }\n\n async editCipherAttachments(cipher: CipherView) {\n if (this.organization.maxStorageGb == null || this.organization.maxStorageGb === 0) {\n this.messagingService.send('upgradeOrganization', { organizationId: cipher.organizationId });\n return;\n }\n\n let madeAttachmentChanges = false;\n\n const [modal] = await this.modalService.openViewRef(AttachmentsComponent, this.attachmentsModalRef, comp => {\n comp.organization = this.organization;\n comp.cipherId = cipher.id;\n comp.onUploadedAttachment.subscribe(() => madeAttachmentChanges = true);\n comp.onDeletedAttachment.subscribe(() => madeAttachmentChanges = true);\n });\n\n modal.onClosed.subscribe(async () => {\n if (madeAttachmentChanges) {\n await this.ciphersComponent.refresh();\n }\n madeAttachmentChanges = false;\n });\n }\n\n async editCipherCollections(cipher: CipherView) {\n const [modal] = await this.modalService.openViewRef(CollectionsComponent, this.collectionsModalRef, comp => {\n if (this.organization.canEditAnyCollection) {\n comp.collectionIds = cipher.collectionIds;\n comp.collections = this.groupingsComponent.collections.filter(c => !c.readOnly);\n }\n comp.organization = this.organization;\n comp.cipherId = cipher.id;\n comp.onSavedCollections.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n });\n }\n\n async addCipher() {\n const component = await this.editCipher(null);\n component.organizationId = this.organization.id;\n component.type = this.type;\n if (this.organization.canEditAnyCollection) {\n component.collections = this.groupingsComponent.collections.filter(c => !c.readOnly);\n }\n if (this.collectionId != null) {\n component.collectionIds = [this.collectionId];\n }\n }\n\n async editCipher(cipher: CipherView) {\n const [modal, childComponent] = await this.modalService.openViewRef(AddEditComponent, this.cipherAddEditModalRef, comp => {\n comp.organization = this.organization;\n comp.cipherId = cipher == null ? null : cipher.id;\n comp.onSavedCipher.subscribe(async (c: CipherView) => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n comp.onDeletedCipher.subscribe(async (c: CipherView) => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n comp.onRestoredCipher.subscribe(async (c: CipherView) => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n });\n\n return childComponent;\n }\n\n async cloneCipher(cipher: CipherView) {\n const component = await this.editCipher(cipher);\n component.cloneMode = true;\n component.organizationId = this.organization.id;\n if (this.organization.canEditAnyCollection) {\n component.collections = this.groupingsComponent.collections.filter(c => !c.readOnly);\n }\n // Regardless of Admin state, the collection Ids need to passed manually as they are not assigned value\n // in the add-edit componenet\n component.collectionIds = cipher.collectionIds;\n }\n\n async viewEvents(cipher: CipherView) {\n await this.modalService.openViewRef(EntityEventsComponent, this.eventsModalRef, comp => {\n comp.name = cipher.name;\n comp.organizationId = this.organization.id;\n comp.entityId = cipher.id;\n comp.showUser = true;\n comp.entity = 'cipher';\n });\n }\n\n private clearFilters() {\n this.collectionId = null;\n this.type = null;\n this.deleted = false;\n }\n\n private go(queryParams: any = null) {\n if (queryParams == null) {\n queryParams = {\n type: this.type,\n collectionId: this.collectionId,\n deleted: this.deleted ? true : null,\n };\n }\n\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: queryParams,\n replaceUrl: true,\n });\n }\n}\n","

{{'vault' | i18n}} {{'loading' | i18n}}

{{trashCleanupWarning}}
","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { CipherData } from 'jslib-common/models/data/cipherData';\nimport { Cipher } from 'jslib-common/models/domain/cipher';\nimport { Organization } from 'jslib-common/models/domain/organization';\n\nimport { AttachmentView } from 'jslib-common/models/view/attachmentView';\n\nimport { AttachmentsComponent as BaseAttachmentsComponent } from '../../vault/attachments.component';\n\n@Component({\n selector: 'app-org-vault-attachments',\n templateUrl: '../../vault/attachments.component.html',\n})\nexport class AttachmentsComponent extends BaseAttachmentsComponent {\n viewOnly = false;\n organization: Organization;\n\n constructor(cipherService: CipherService, i18nService: I18nService,\n cryptoService: CryptoService, userService: UserService,\n platformUtilsService: PlatformUtilsService, apiService: ApiService,\n logService: LogService) {\n super(cipherService, i18nService, cryptoService, userService, platformUtilsService, apiService,\n logService);\n }\n\n protected async reupload(attachment: AttachmentView) {\n if (this.organization.canEditAnyCollection && this.showFixOldAttachments(attachment)) {\n await super.reuploadCipherAttachment(attachment, true);\n }\n }\n\n protected async loadCipher() {\n if (!this.organization.canEditAnyCollection) {\n return await super.loadCipher();\n }\n const response = await this.apiService.getCipherAdmin(this.cipherId);\n return new Cipher(new CipherData(response));\n }\n\n protected saveCipherAttachment(file: File) {\n return this.cipherService.saveAttachmentWithServer(this.cipherDomain, file, this.organization.canEditAnyCollection);\n }\n\n protected deleteCipherAttachment(attachmentId: string) {\n if (!this.organization.canEditAnyCollection) {\n return super.deleteCipherAttachment(attachmentId);\n }\n return this.apiService.deleteCipherAttachmentAdmin(this.cipherId, attachmentId);\n }\n\n protected showFixOldAttachments(attachment: AttachmentView) {\n return attachment.key == null && this.organization.canEditAnyCollection;\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Cipher } from 'jslib-common/models/domain/cipher';\nimport { ErrorResponse } from 'jslib-common/models/response/errorResponse';\n\nimport { AttachmentView } from 'jslib-common/models/view/attachmentView';\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\n@Directive()\nexport class AttachmentsComponent implements OnInit {\n @Input() cipherId: string;\n @Output() onUploadedAttachment = new EventEmitter();\n @Output() onDeletedAttachment = new EventEmitter();\n @Output() onReuploadedAttachment = new EventEmitter();\n\n cipher: CipherView;\n cipherDomain: Cipher;\n hasUpdatedKey: boolean;\n canAccessAttachments: boolean;\n formPromise: Promise;\n deletePromises: { [id: string]: Promise; } = {};\n reuploadPromises: { [id: string]: Promise; } = {};\n emergencyAccessId?: string = null;\n\n constructor(protected cipherService: CipherService, protected i18nService: I18nService,\n protected cryptoService: CryptoService, protected userService: UserService,\n protected platformUtilsService: PlatformUtilsService, protected apiService: ApiService,\n protected win: Window, private logService: LogService) { }\n\n async ngOnInit() {\n await this.init();\n }\n\n async submit() {\n if (!this.hasUpdatedKey) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('updateKey'));\n return;\n }\n\n const fileEl = document.getElementById('file') as HTMLInputElement;\n const files = fileEl.files;\n if (files == null || files.length === 0) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n return;\n }\n\n if (files[0].size > 524288000) { // 500 MB\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('maxFileSize'));\n return;\n }\n\n try {\n this.formPromise = this.saveCipherAttachment(files[0]);\n this.cipherDomain = await this.formPromise;\n this.cipher = await this.cipherDomain.decrypt();\n this.platformUtilsService.showToast('success', null, this.i18nService.t('attachmentSaved'));\n this.onUploadedAttachment.emit();\n } catch (e) {\n this.logService.error(e);\n }\n\n // reset file input\n // ref: https://stackoverflow.com/a/20552042\n fileEl.type = '';\n fileEl.type = 'file';\n fileEl.value = '';\n }\n\n async delete(attachment: AttachmentView) {\n if (this.deletePromises[attachment.id] != null) {\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteAttachmentConfirmation'), this.i18nService.t('deleteAttachment'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n\n try {\n this.deletePromises[attachment.id] = this.deleteCipherAttachment(attachment.id);\n await this.deletePromises[attachment.id];\n this.platformUtilsService.showToast('success', null, this.i18nService.t('deletedAttachment'));\n const i = this.cipher.attachments.indexOf(attachment);\n if (i > -1) {\n this.cipher.attachments.splice(i, 1);\n }\n } catch (e) {\n this.logService.error(e);\n }\n\n this.deletePromises[attachment.id] = null;\n this.onDeletedAttachment.emit();\n }\n\n async download(attachment: AttachmentView) {\n const a = (attachment as any);\n if (a.downloading) {\n return;\n }\n\n if (!this.canAccessAttachments) {\n this.platformUtilsService.showToast('error', this.i18nService.t('premiumRequired'),\n this.i18nService.t('premiumRequiredDesc'));\n return;\n }\n\n let url: string;\n try {\n const attachmentDownloadResponse = await this.apiService.getAttachmentData(this.cipher.id, attachment.id,\n this.emergencyAccessId);\n url = attachmentDownloadResponse.url;\n } catch (e) {\n if (e instanceof ErrorResponse && (e as ErrorResponse).statusCode === 404) {\n url = attachment.url;\n } else if (e instanceof ErrorResponse) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n } else {\n throw e;\n }\n }\n\n a.downloading = true;\n const response = await fetch(new Request(url, { cache: 'no-store' }));\n if (response.status !== 200) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n a.downloading = false;\n return;\n }\n\n try {\n const buf = await response.arrayBuffer();\n const key = attachment.key != null ? attachment.key :\n await this.cryptoService.getOrgKey(this.cipher.organizationId);\n const decBuf = await this.cryptoService.decryptFromBytes(buf, key);\n this.platformUtilsService.saveFile(this.win, decBuf, null, attachment.fileName);\n } catch (e) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n }\n\n a.downloading = false;\n }\n\n protected async init() {\n this.cipherDomain = await this.loadCipher();\n this.cipher = await this.cipherDomain.decrypt();\n\n this.hasUpdatedKey = await this.cryptoService.hasEncKey();\n const canAccessPremium = await this.userService.canAccessPremium();\n this.canAccessAttachments = canAccessPremium || this.cipher.organizationId != null;\n\n if (!this.canAccessAttachments) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('premiumRequiredDesc'), this.i18nService.t('premiumRequired'),\n this.i18nService.t('learnMore'), this.i18nService.t('cancel'));\n if (confirmed) {\n this.platformUtilsService.launchUri('https://vault.bitwarden.com/#/?premium=purchase');\n }\n } else if (!this.hasUpdatedKey) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('updateKey'), this.i18nService.t('featureUnavailable'),\n this.i18nService.t('learnMore'), this.i18nService.t('cancel'), 'warning');\n if (confirmed) {\n this.platformUtilsService.launchUri('https://help.bitwarden.com/article/update-encryption-key/');\n }\n }\n }\n\n protected async reuploadCipherAttachment(attachment: AttachmentView, admin: boolean) {\n const a = (attachment as any);\n if (attachment.key != null || a.downloading || this.reuploadPromises[attachment.id] != null) {\n return;\n }\n\n try {\n this.reuploadPromises[attachment.id] = Promise.resolve().then(async () => {\n // 1. Download\n a.downloading = true;\n const response = await fetch(new Request(attachment.url, { cache: 'no-store' }));\n if (response.status !== 200) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n a.downloading = false;\n return;\n }\n\n try {\n // 2. Resave\n const buf = await response.arrayBuffer();\n const key = attachment.key != null ? attachment.key :\n await this.cryptoService.getOrgKey(this.cipher.organizationId);\n const decBuf = await this.cryptoService.decryptFromBytes(buf, key);\n this.cipherDomain = await this.cipherService.saveAttachmentRawWithServer(\n this.cipherDomain, attachment.fileName, decBuf, admin);\n this.cipher = await this.cipherDomain.decrypt();\n\n // 3. Delete old\n this.deletePromises[attachment.id] = this.deleteCipherAttachment(attachment.id);\n await this.deletePromises[attachment.id];\n const foundAttachment = this.cipher.attachments.filter(a2 => a2.id === attachment.id);\n if (foundAttachment.length > 0) {\n const i = this.cipher.attachments.indexOf(foundAttachment[0]);\n if (i > -1) {\n this.cipher.attachments.splice(i, 1);\n }\n }\n\n this.platformUtilsService.showToast('success', null, this.i18nService.t('attachmentSaved'));\n this.onReuploadedAttachment.emit();\n } catch (e) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n }\n\n a.downloading = false;\n });\n await this.reuploadPromises[attachment.id];\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n protected loadCipher() {\n return this.cipherService.get(this.cipherId);\n }\n\n protected saveCipherAttachment(file: File) {\n return this.cipherService.saveAttachmentWithServer(this.cipherDomain, file);\n }\n\n protected deleteCipherAttachment(attachmentId: string) {\n return this.cipherService.deleteAttachmentWithServer(this.cipher.id, attachmentId);\n }\n}\n","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { CipherData } from 'jslib-common/models/data/cipherData';\nimport { Cipher } from 'jslib-common/models/domain/cipher';\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { CipherCollectionsRequest } from 'jslib-common/models/request/cipherCollectionsRequest';\n\nimport { CollectionsComponent as BaseCollectionsComponent } from '../../vault/collections.component';\n\n@Component({\n selector: 'app-org-vault-collections',\n templateUrl: '../../vault/collections.component.html',\n})\nexport class CollectionsComponent extends BaseCollectionsComponent {\n organization: Organization;\n\n constructor(collectionService: CollectionService, platformUtilsService: PlatformUtilsService,\n i18nService: I18nService, cipherService: CipherService,\n private apiService: ApiService, logService: LogService) {\n super(collectionService, platformUtilsService, i18nService, cipherService, logService);\n this.allowSelectNone = true;\n }\n\n protected async loadCipher() {\n if (!this.organization.canViewAllCollections) {\n return await super.loadCipher();\n }\n const response = await this.apiService.getCipherAdmin(this.cipherId);\n return new Cipher(new CipherData(response));\n }\n\n protected loadCipherCollections() {\n if (!this.organization.canViewAllCollections) {\n return super.loadCipherCollections();\n }\n return this.collectionIds;\n }\n\n protected loadCollections() {\n if (!this.organization.canViewAllCollections) {\n return super.loadCollections();\n }\n return Promise.resolve(this.collections);\n }\n\n protected saveCollections() {\n if (this.organization.canEditAnyCollection) {\n const request = new CipherCollectionsRequest(this.cipherDomain.collectionIds);\n return this.apiService.putCipherCollectionsAdmin(this.cipherId, request);\n } else {\n return super.saveCollections();\n }\n }\n}\n","export class CipherCollectionsRequest {\n collectionIds: string[];\n\n constructor(collectionIds: string[]) {\n this.collectionIds = collectionIds == null ? [] : collectionIds;\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { CipherBulkDeleteRequest } from 'jslib-common/models/request/cipherBulkDeleteRequest';\n\n@Component({\n selector: 'app-vault-bulk-delete',\n templateUrl: 'bulk-delete.component.html',\n})\nexport class BulkDeleteComponent {\n @Input() cipherIds: string[] = [];\n @Input() permanent: boolean = false;\n @Input() organization: Organization;\n @Output() onDeleted = new EventEmitter();\n\n formPromise: Promise;\n\n constructor(private cipherService: CipherService, private toasterService: ToasterService,\n private i18nService: I18nService, private apiService: ApiService) { }\n\n async submit() {\n if (!this.organization || !this.organization.canEditAnyCollection) {\n await this.deleteCiphers();\n } else {\n await this.deleteCiphersAdmin();\n }\n\n await this.formPromise;\n\n this.onDeleted.emit();\n this.toasterService.popAsync('success', null, this.i18nService.t(this.permanent ? 'permanentlyDeletedItems'\n : 'deletedItems'));\n }\n\n private async deleteCiphers() {\n if (this.permanent) {\n this.formPromise = await this.cipherService.deleteManyWithServer(this.cipherIds);\n } else {\n this.formPromise = await this.cipherService.softDeleteManyWithServer(this.cipherIds);\n }\n }\n\n private async deleteCiphersAdmin() {\n const deleteRequest = new CipherBulkDeleteRequest(this.cipherIds, this.organization.id);\n if (this.permanent) {\n this.formPromise = await this.apiService.deleteManyCiphersAdmin(deleteRequest);\n } else {\n this.formPromise = await this.apiService.putDeleteManyCiphersAdmin(deleteRequest);\n }\n }\n}\n","

{{(permanent ? 'permanentlyDeleteSelected' : 'deleteSelected') | i18n}}

{{(permanent ? 'permanentlyDeleteSelectedItemsDesc' : 'deleteSelectedItemsDesc') | i18n: cipherIds.length}}
","export class CipherBulkDeleteRequest {\n ids: string[];\n organizationId: string;\n\n constructor(ids: string[], organizationId?: string) {\n this.ids = ids == null ? [] : ids;\n this.organizationId = organizationId;\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { FolderView } from 'jslib-common/models/view/folderView';\n\n@Component({\n selector: 'app-vault-bulk-move',\n templateUrl: 'bulk-move.component.html',\n})\nexport class BulkMoveComponent implements OnInit {\n @Input() cipherIds: string[] = [];\n @Output() onMoved = new EventEmitter();\n\n folderId: string = null;\n folders: FolderView[] = [];\n formPromise: Promise;\n\n constructor(private cipherService: CipherService, private toasterService: ToasterService,\n private i18nService: I18nService, private folderService: FolderService) { }\n\n async ngOnInit() {\n this.folders = await this.folderService.getAllDecrypted();\n this.folderId = this.folders[0].id;\n }\n\n async submit() {\n this.formPromise = this.cipherService.moveManyWithServer(this.cipherIds, this.folderId);\n await this.formPromise;\n this.onMoved.emit();\n this.toasterService.popAsync('success', null, this.i18nService.t('movedItems'));\n }\n}\n","

{{'moveSelected' | i18n}}

{{'moveSelectedItemsDesc' | i18n: cipherIds.length}}

","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\n@Component({\n selector: 'app-vault-bulk-restore',\n templateUrl: 'bulk-restore.component.html',\n})\nexport class BulkRestoreComponent {\n @Input() cipherIds: string[] = [];\n @Output() onRestored = new EventEmitter();\n\n formPromise: Promise;\n\n constructor(private cipherService: CipherService, private toasterService: ToasterService,\n private i18nService: I18nService) { }\n\n async submit() {\n this.formPromise = this.cipherService.restoreManyWithServer(this.cipherIds);\n await this.formPromise;\n this.onRestored.emit();\n this.toasterService.popAsync('success', null, this.i18nService.t('restoredItems'));\n }\n}\n","

{{'restoreSelected' | i18n}}

{{'restoreSelectedItemsDesc' | i18n: cipherIds.length}}
","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\n@Component({\n selector: 'app-vault-bulk-share',\n templateUrl: 'bulk-share.component.html',\n})\nexport class BulkShareComponent implements OnInit {\n @Input() ciphers: CipherView[] = [];\n @Input() organizationId: string;\n @Output() onShared = new EventEmitter();\n\n nonShareableCount = 0;\n collections: CollectionView[] = [];\n organizations: Organization[] = [];\n shareableCiphers: CipherView[] = [];\n formPromise: Promise;\n\n private writeableCollections: CollectionView[] = [];\n\n constructor(private cipherService: CipherService, private toasterService: ToasterService,\n private i18nService: I18nService, private collectionService: CollectionService,\n private userService: UserService, private logService: LogService) { }\n\n async ngOnInit() {\n this.shareableCiphers = this.ciphers.filter(c => !c.hasOldAttachments && c.organizationId == null);\n this.nonShareableCount = this.ciphers.length - this.shareableCiphers.length;\n const allCollections = await this.collectionService.getAllDecrypted();\n this.writeableCollections = allCollections.filter(c => !c.readOnly);\n this.organizations = await this.userService.getAllOrganizations();\n if (this.organizationId == null && this.organizations.length > 0) {\n this.organizationId = this.organizations[0].id;\n }\n this.filterCollections();\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n filterCollections() {\n this.selectAll(false);\n if (this.organizationId == null || this.writeableCollections.length === 0) {\n this.collections = [];\n } else {\n this.collections = this.writeableCollections.filter(c => c.organizationId === this.organizationId);\n }\n }\n\n async submit() {\n const checkedCollectionIds = this.collections.filter(c => (c as any).checked).map(c => c.id);\n try {\n this.formPromise = this.cipherService.shareManyWithServer(this.shareableCiphers, this.organizationId,\n checkedCollectionIds);\n await this.formPromise;\n this.onShared.emit();\n const orgName = this.organizations.find(o => o.id === this.organizationId)?.name ?? this.i18nService.t('organization');\n this.toasterService.popAsync('success', null, this.i18nService.t('movedItemsToOrg', orgName));\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n selectAll(select: boolean) {\n const collections = select ? this.collections : this.writeableCollections;\n collections.forEach(c => this.check(c, select));\n }\n\n get canSave() {\n if (this.shareableCiphers != null && this.shareableCiphers.length > 0 && this.collections != null) {\n for (let i = 0; i < this.collections.length; i++) {\n if ((this.collections[i] as any).checked) {\n return true;\n }\n }\n }\n return false;\n }\n}\n","

{{'moveSelectedToOrg' | i18n}}

{{'moveManyToOrgDesc' | i18n}}

{{'moveSelectedItemsCountDesc' | i18n: this.ciphers.length : shareableCiphers.length : nonShareableCount}}

{{'collections' | i18n}}

{{'noCollectionsInList' | i18n}}
{{c.name}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ActivatedRoute } from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { CryptoFunctionService } from 'jslib-common/abstractions/cryptoFunction.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\nimport { SendAccess } from 'jslib-common/models/domain/sendAccess';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\n\nimport { SendAccessView } from 'jslib-common/models/view/sendAccessView';\n\nimport { SendType } from 'jslib-common/enums/sendType';\nimport { SendAccessRequest } from 'jslib-common/models/request/sendAccessRequest';\nimport { ErrorResponse } from 'jslib-common/models/response/errorResponse';\n\nimport { SendAccessResponse } from 'jslib-common/models/response/sendAccessResponse';\n\n@Component({\n selector: 'app-send-access',\n templateUrl: 'access.component.html',\n})\nexport class AccessComponent implements OnInit {\n send: SendAccessView;\n sendType = SendType;\n downloading = false;\n loading = true;\n passwordRequired = false;\n formPromise: Promise;\n password: string;\n showText = false;\n unavailable = false;\n error = false;\n hideEmail = false;\n\n private id: string;\n private key: string;\n private decKey: SymmetricCryptoKey;\n private accessRequest: SendAccessRequest;\n\n constructor(private i18nService: I18nService, private cryptoFunctionService: CryptoFunctionService,\n private apiService: ApiService, private platformUtilsService: PlatformUtilsService,\n private route: ActivatedRoute, private cryptoService: CryptoService) {\n }\n\n get sendText() {\n if (this.send == null || this.send.text == null) {\n return null;\n }\n return this.showText ? this.send.text.text : this.send.text.maskedText;\n }\n\n get expirationDate() {\n if (this.send == null || this.send.expirationDate == null) {\n return null;\n }\n return this.send.expirationDate;\n }\n\n get creatorIdentifier() {\n if (this.send == null || this.send.creatorIdentifier == null) {\n return null;\n }\n return this.send.creatorIdentifier;\n }\n\n ngOnInit() {\n this.route.params.subscribe(async params => {\n this.id = params.sendId;\n this.key = params.key;\n if (this.key == null || this.id == null) {\n return;\n }\n await this.load();\n });\n }\n\n async download() {\n if (this.send == null || this.decKey == null) {\n return;\n }\n\n if (this.downloading) {\n return;\n }\n\n\n const downloadData = await this.apiService.getSendFileDownloadData(this.send, this.accessRequest);\n\n if (Utils.isNullOrWhitespace(downloadData.url)) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('missingSendFile'));\n return;\n }\n\n this.downloading = true;\n const response = await fetch(new Request(downloadData.url, { cache: 'no-store' }));\n if (response.status !== 200) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n this.downloading = false;\n return;\n }\n\n try {\n const buf = await response.arrayBuffer();\n const decBuf = await this.cryptoService.decryptFromBytes(buf, this.decKey);\n this.platformUtilsService.saveFile(window, decBuf, null, this.send.file.fileName);\n } catch (e) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n }\n\n this.downloading = false;\n }\n\n copyText() {\n this.platformUtilsService.copyToClipboard(this.send.text.text);\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t('valueCopied', this.i18nService.t('sendTypeText')));\n }\n\n toggleText() {\n this.showText = !this.showText;\n }\n\n async load() {\n this.unavailable = false;\n this.error = false;\n this.hideEmail = false;\n const keyArray = Utils.fromUrlB64ToArray(this.key);\n this.accessRequest = new SendAccessRequest();\n if (this.password != null) {\n const passwordHash = await this.cryptoFunctionService.pbkdf2(this.password, keyArray, 'sha256', 100000);\n this.accessRequest.password = Utils.fromBufferToB64(passwordHash);\n }\n try {\n let sendResponse: SendAccessResponse = null;\n if (this.loading) {\n sendResponse = await this.apiService.postSendAccess(this.id, this.accessRequest);\n } else {\n this.formPromise = this.apiService.postSendAccess(this.id, this.accessRequest);\n sendResponse = await this.formPromise;\n }\n this.passwordRequired = false;\n const sendAccess = new SendAccess(sendResponse);\n this.decKey = await this.cryptoService.makeSendKey(keyArray);\n this.send = await sendAccess.decrypt(this.decKey);\n this.showText = this.send.text != null ? !this.send.text.hidden : true;\n } catch (e) {\n if (e instanceof ErrorResponse) {\n if (e.statusCode === 401) {\n this.passwordRequired = true;\n } else if (e.statusCode === 404) {\n this.unavailable = true;\n } else {\n this.error = true;\n }\n }\n }\n this.loading = false;\n this.hideEmail = this.creatorIdentifier == null && !this.passwordRequired && !this.loading && !this.unavailable;\n }\n}\n","

Bitwarden Send

{{'sendCreatorIdentifier' | i18n: creatorIdentifier }}

{{'viewSendHiddenEmailWarning' | i18n }} {{'learnMore' | i18n}}.
{{'loading' | i18n}}

{{'sendProtectedPassword' | i18n}}

{{'sendProtectedPasswordDontKnow' | i18n}}

{{'sendAccessUnavailable' | i18n}}
{{'unexpectedError' | i18n}}

{{send.name}}


{{'sendHiddenByDefault' | i18n}}

{{send.file.fileName}}

Expires: {{expirationDate | date: 'medium'}}

{{'sendAccessTaglineProductDesc' | i18n}}
{{'sendAccessTaglineLearnMore' | i18n}} Bitwarden Send.

","import {\n Component,\n NgZone,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { SendView } from 'jslib-common/models/view/sendView';\n\nimport { SendComponent as BaseSendComponent } from 'jslib-angular/components/send/send.component';\n\nimport { AddEditComponent } from './add-edit.component';\n\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SearchService } from 'jslib-common/abstractions/search.service';\nimport { SendService } from 'jslib-common/abstractions/send.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { BroadcasterService } from 'jslib-angular/services/broadcaster.service';\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nconst BroadcasterSubscriptionId = 'SendComponent';\n\n@Component({\n selector: 'app-send',\n templateUrl: 'send.component.html',\n})\nexport class SendComponent extends BaseSendComponent {\n @ViewChild('sendAddEdit', { read: ViewContainerRef, static: true }) sendAddEditModalRef: ViewContainerRef;\n\n constructor(sendService: SendService, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService, environmentService: EnvironmentService,\n ngZone: NgZone, searchService: SearchService, policyService: PolicyService, userService: UserService,\n private modalService: ModalService, private broadcasterService: BroadcasterService,\n logService: LogService) {\n super(sendService, i18nService, platformUtilsService, environmentService, ngZone, searchService,\n policyService, userService, logService);\n }\n\n async ngOnInit() {\n await super.ngOnInit();\n await this.load();\n\n // Broadcaster subscription - load if sync completes in the background\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'syncCompleted':\n if (message.successfully) {\n await this.load();\n }\n break;\n }\n });\n });\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async addSend() {\n if (this.disableSend) {\n return;\n }\n\n const component = await this.editSend(null);\n component.type = this.type;\n }\n\n async editSend(send: SendView) {\n const [modal, childComponent] = await this.modalService.openViewRef(AddEditComponent, this.sendAddEditModalRef, comp => {\n comp.sendId = send == null ? null : send.id;\n comp.onSavedSend.subscribe(async (s: SendView) => {\n modal.close();\n await this.load();\n });\n comp.onDeletedSend.subscribe(async (s: SendView) => {\n modal.close();\n await this.load();\n });\n });\n\n return childComponent;\n }\n}\n","
{{'sendDisabledWarning' | i18n}}

{{'send' | i18n}} {{'loading' | i18n}}

{{s.name}} {{'disabled' | i18n}} {{'password' | i18n}} {{'maxAccessCountReached' | i18n}} {{'expired' | i18n}} {{'pendingDeletion' | i18n}}
{{s.deletionDate | date:'medium'}}
{{'loading' | i18n}}

{{'noSendsInList' | i18n}}

","import { DatePipe } from '@angular/common';\n\nimport { Component } from '@angular/core';\n\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SendService } from 'jslib-common/abstractions/send.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { AddEditComponent as BaseAddEditComponent } from 'jslib-angular/components/send/add-edit.component';\nimport { LogService } from 'jslib-common/abstractions/log.service';\n\n@Component({\n selector: 'app-send-add-edit',\n templateUrl: 'add-edit.component.html',\n})\nexport class AddEditComponent extends BaseAddEditComponent {\n constructor(i18nService: I18nService, platformUtilsService: PlatformUtilsService,\n environmentService: EnvironmentService, datePipe: DatePipe,\n sendService: SendService, userService: UserService,\n messagingService: MessagingService, policyService: PolicyService,\n logService: LogService) {\n super(i18nService, platformUtilsService, environmentService, datePipe, sendService, userService,\n messagingService, policyService, logService);\n }\n\n async copyLinkToClipboard(link: string): Promise {\n // Copy function on web depends on the modal being open or not. Since this event occurs during a transition\n // of the modal closing we need to add a small delay to make sure state of the DOM is consistent.\n return new Promise(resolve => {\n window.setTimeout(() => resolve(super.copyLinkToClipboard(link)), 500);\n });\n }\n}\n","

{{title}}

{{'sendDisabledWarning' | i18n}} {{'sendOptionsPolicyInEffect' | i18n}}
  • {{'sendDisableHideEmailInEffect' | i18n}}
{{'sendNameDesc' | i18n}}
{{'sendTextDesc' | i18n}}
{{'file' | i18n}} {{send.file.fileName}} ({{send.file.sizeName}})
{{'sendFileDesc' | i18n}} {{'maxFileSize' | i18n}}

{{'share' | i18n}}

{{'options' | i18n}}

{{'maxAccessCountDesc' | i18n}}
{{'sendPasswordDesc' | i18n}}
{{'sendNotesDesc' | i18n}}
","import { SendType } from '../../enums/sendType';\nimport { Utils } from '../../misc/utils';\n\nimport { Send } from '../domain/send';\nimport { SymmetricCryptoKey } from '../domain/symmetricCryptoKey';\n\nimport { SendFileView } from './sendFileView';\nimport { SendTextView } from './sendTextView';\nimport { View } from './view';\n\nexport class SendView implements View {\n id: string = null;\n accessId: string = null;\n name: string = null;\n notes: string = null;\n key: ArrayBuffer;\n cryptoKey: SymmetricCryptoKey;\n type: SendType = null;\n text = new SendTextView();\n file = new SendFileView();\n maxAccessCount?: number = null;\n accessCount: number = 0;\n revisionDate: Date = null;\n deletionDate: Date = null;\n expirationDate: Date = null;\n password: string = null;\n disabled: boolean = false;\n hideEmail: boolean = false;\n\n constructor(s?: Send) {\n if (!s) {\n return;\n }\n\n this.id = s.id;\n this.accessId = s.accessId;\n this.type = s.type;\n this.maxAccessCount = s.maxAccessCount;\n this.accessCount = s.accessCount;\n this.revisionDate = s.revisionDate;\n this.deletionDate = s.deletionDate;\n this.expirationDate = s.expirationDate;\n this.disabled = s.disabled;\n this.password = s.password;\n this.hideEmail = s.hideEmail;\n }\n\n get urlB64Key(): string {\n return Utils.fromBufferToUrlB64(this.key);\n }\n\n get maxAccessCountReached(): boolean {\n if (this.maxAccessCount == null) {\n return false;\n }\n return this.accessCount >= this.maxAccessCount;\n }\n\n get expired(): boolean {\n if (this.expirationDate == null) {\n return false;\n }\n return this.expirationDate <= new Date();\n }\n\n get pendingDelete(): boolean {\n return this.deletionDate <= new Date();\n }\n}\n","import { DatePipe } from '@angular/common';\n\nimport { Component } from '@angular/core';\n\nimport { ControlContainer, NgForm } from '@angular/forms';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { EffluxDatesComponent as BaseEffluxDatesComponent } from 'jslib-angular/components/send/efflux-dates.component';\n\n@Component({\n selector: 'app-send-efflux-dates',\n templateUrl: 'efflux-dates.component.html',\n viewProviders: [{ provide: ControlContainer, useExisting: NgForm }],\n})\nexport class EffluxDatesComponent extends BaseEffluxDatesComponent {\n constructor(protected i18nService: I18nService, protected platformUtilsService: PlatformUtilsService,\n protected datePipe: DatePipe) {\n super(i18nService, platformUtilsService, datePipe);\n }\n}\n","
{{'deletionDateDesc' | i18n}}
{{'clear' | i18n}}
{{'expirationDateDesc' | i18n}}
","import {\n Component,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { ApiKeyComponent } from './api-key.component';\nimport { DeauthorizeSessionsComponent } from './deauthorize-sessions.component';\nimport { DeleteAccountComponent } from './delete-account.component';\nimport { PurgeVaultComponent } from './purge-vault.component';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { KeyConnectorService } from 'jslib-common/abstractions/keyConnector.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\n@Component({\n selector: 'app-account',\n templateUrl: 'account.component.html',\n})\nexport class AccountComponent {\n @ViewChild('deauthorizeSessionsTemplate', { read: ViewContainerRef, static: true }) deauthModalRef: ViewContainerRef;\n @ViewChild('purgeVaultTemplate', { read: ViewContainerRef, static: true }) purgeModalRef: ViewContainerRef;\n @ViewChild('deleteAccountTemplate', { read: ViewContainerRef, static: true }) deleteModalRef: ViewContainerRef;\n @ViewChild('viewUserApiKeyTemplate', { read: ViewContainerRef, static: true }) viewUserApiKeyModalRef: ViewContainerRef;\n @ViewChild('rotateUserApiKeyTemplate', { read: ViewContainerRef, static: true }) rotateUserApiKeyModalRef: ViewContainerRef;\n\n showChangePassword = true;\n showChangeKdf = true;\n showChangeEmail = true;\n\n constructor(private modalService: ModalService, private apiService: ApiService,\n private userService: UserService, private keyConnectorService: KeyConnectorService) { }\n\n async ngOnInit() {\n this.showChangeEmail = this.showChangeKdf = this.showChangePassword =\n !await this.keyConnectorService.getUsesKeyConnector();\n }\n\n async deauthorizeSessions() {\n await this.modalService.openViewRef(DeauthorizeSessionsComponent, this.deauthModalRef);\n }\n\n async purgeVault() {\n await this.modalService.openViewRef(PurgeVaultComponent, this.purgeModalRef);\n }\n\n async deleteAccount() {\n await this.modalService.openViewRef(DeleteAccountComponent, this.deleteModalRef);\n }\n\n async viewUserApiKey() {\n const entityId = await this.userService.getUserId();\n await this.modalService.openViewRef(ApiKeyComponent, this.viewUserApiKeyModalRef, comp => {\n comp.keyType = 'user';\n comp.entityId = entityId;\n comp.postKey = this.apiService.postUserApiKey.bind(this.apiService);\n comp.scope = 'api';\n comp.grantType = 'client_credentials';\n comp.apiKeyTitle = 'apiKey';\n comp.apiKeyWarning = 'userApiKeyWarning';\n comp.apiKeyDescription = 'userApiKeyDesc';\n });\n }\n\n async rotateUserApiKey() {\n const entityId = await this.userService.getUserId();\n await this.modalService.openViewRef(ApiKeyComponent, this.rotateUserApiKeyModalRef, comp => {\n comp.keyType = 'user';\n comp.isRotation = true;\n comp.entityId = entityId;\n comp.postKey = this.apiService.postUserRotateApiKey.bind(this.apiService);\n comp.scope = 'api';\n comp.grantType = 'client_credentials';\n comp.apiKeyTitle = 'apiKey';\n comp.apiKeyWarning = 'userApiKeyWarning';\n comp.apiKeyDescription = 'apiKeyRotateDesc';\n });\n }\n}\n","

{{'myAccount' | i18n}}

{{'changeEmail' | i18n}}

{{'changeMasterPassword' | i18n}}

{{'encKeySettings' | i18n}}

{{'apiKey' | i18n}}

{{'userApiKeyDesc' | i18n}}

{{'dangerZone' | i18n}}

{{'dangerZoneDesc' | i18n}}

","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserVerificationService } from 'jslib-common/abstractions/userVerification.service';\n\nimport { Verification } from 'jslib-common/types/verification';\n\n@Component({\n selector: 'app-deauthorize-sessions',\n templateUrl: 'deauthorize-sessions.component.html',\n})\nexport class DeauthorizeSessionsComponent {\n masterPassword: Verification;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private userVerificationService: UserVerificationService,\n private messagingService: MessagingService, private logService: LogService) { }\n\n async submit() {\n try {\n this.formPromise = this.userVerificationService.buildRequest(this.masterPassword)\n .then(request => this.apiService.postSecurityStamp(request));\n await this.formPromise;\n this.toasterService.popAsync('success', this.i18nService.t('sessionsDeauthorized'),\n this.i18nService.t('logBackIn'));\n this.messagingService.send('logout');\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","

{{'deauthorizeSessions' | i18n}}

{{'deauthorizeSessionsDesc' | i18n}}

{{'deauthorizeSessionsWarning' | i18n}}
","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserVerificationService } from 'jslib-common/abstractions/userVerification.service';\n\nimport { Verification } from 'jslib-common/types/verification';\n\n@Component({\n selector: 'app-delete-account',\n templateUrl: 'delete-account.component.html',\n})\nexport class DeleteAccountComponent {\n masterPassword: Verification;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private userVerificationService: UserVerificationService,\n private messagingService: MessagingService, private logService: LogService) { }\n\n async submit() {\n try {\n this.formPromise = this.userVerificationService.buildRequest(this.masterPassword)\n .then(request => this.apiService.deleteAccount(request));\n await this.formPromise;\n this.toasterService.popAsync('success', this.i18nService.t('accountDeleted'),\n this.i18nService.t('accountDeletedDesc'));\n this.messagingService.send('logout');\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","

{{'deleteAccount' | i18n}}

{{'deleteAccountDesc' | i18n}}

{{'deleteAccountWarning' | i18n}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { KeyConnectorService } from 'jslib-common/abstractions/keyConnector.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { UpdateProfileRequest } from 'jslib-common/models/request/updateProfileRequest';\n\nimport { ProfileResponse } from 'jslib-common/models/response/profileResponse';\n\n@Component({\n selector: 'app-profile',\n templateUrl: 'profile.component.html',\n})\nexport class ProfileComponent implements OnInit {\n loading = true;\n profile: ProfileResponse;\n fingerprint: string;\n hidePasswordHint = false;\n\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private userService: UserService,\n private cryptoService: CryptoService, private logService: LogService,\n private keyConnectorService: KeyConnectorService) { }\n\n async ngOnInit() {\n this.profile = await this.apiService.getProfile();\n this.loading = false;\n const fingerprint = await this.cryptoService.getFingerprint(await this.userService.getUserId());\n if (fingerprint != null) {\n this.fingerprint = fingerprint.join('-');\n }\n this.hidePasswordHint = await this.keyConnectorService.getUsesKeyConnector();\n }\n\n async submit() {\n try {\n const request = new UpdateProfileRequest(this.profile.name, this.profile.masterPasswordHint);\n this.formPromise = this.apiService.putProfile(request);\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('accountUpdated'));\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","
{{'loading' | i18n}}

{{'yourAccountsFingerprint' | i18n}}:
{{fingerprint}}

","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { EmailRequest } from 'jslib-common/models/request/emailRequest';\nimport { EmailTokenRequest } from 'jslib-common/models/request/emailTokenRequest';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\n@Component({\n selector: 'app-change-email',\n templateUrl: 'change-email.component.html',\n})\nexport class ChangeEmailComponent implements OnInit {\n masterPassword: string;\n newEmail: string;\n token: string;\n tokenSent = false;\n showTwoFactorEmailWarning = false;\n\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private cryptoService: CryptoService,\n private messagingService: MessagingService, private userService: UserService,\n private logService: LogService) { }\n\n async ngOnInit() {\n const twoFactorProviders = await this.apiService.getTwoFactorProviders();\n this.showTwoFactorEmailWarning = twoFactorProviders.data.some(p => p.type === TwoFactorProviderType.Email &&\n p.enabled);\n }\n\n async submit() {\n const hasEncKey = await this.cryptoService.hasEncKey();\n if (!hasEncKey) {\n this.toasterService.popAsync('error', null, this.i18nService.t('updateKey'));\n return;\n }\n\n this.newEmail = this.newEmail.trim().toLowerCase();\n if (!this.tokenSent) {\n const request = new EmailTokenRequest();\n request.newEmail = this.newEmail;\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n try {\n this.formPromise = this.apiService.postEmailToken(request);\n await this.formPromise;\n this.tokenSent = true;\n } catch (e) {\n this.logService.error(e);\n }\n } else {\n const request = new EmailRequest();\n request.token = this.token;\n request.newEmail = this.newEmail;\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n const kdf = await this.userService.getKdf();\n const kdfIterations = await this.userService.getKdfIterations();\n const newKey = await this.cryptoService.makeKey(this.masterPassword, this.newEmail, kdf, kdfIterations);\n request.newMasterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, newKey);\n const newEncKey = await this.cryptoService.remakeEncKey(newKey);\n request.key = newEncKey[1].encryptedString;\n try {\n this.formPromise = this.apiService.postEmail(request);\n await this.formPromise;\n this.reset();\n this.toasterService.popAsync('success', this.i18nService.t('emailChanged'),\n this.i18nService.t('logBackIn'));\n this.messagingService.send('logout');\n } catch (e) {\n this.logService.error(e);\n }\n }\n }\n\n reset() {\n this.token = this.newEmail = this.masterPassword = null;\n this.tokenSent = false;\n }\n}\n","
{{'changeEmailTwoFactorWarning' | i18n}}

{{'changeEmailDesc' | i18n : newEmail}}

{{'loggedOutWarning' | i18n}}
","import { SecretVerificationRequest } from './secretVerificationRequest';\n\nexport class EmailTokenRequest extends SecretVerificationRequest {\n newEmail: string;\n masterPasswordHash: string;\n}\n","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SendService } from 'jslib-common/abstractions/send.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport {\n ChangePasswordComponent as BaseChangePasswordComponent,\n} from 'jslib-angular/components/change-password.component';\n\nimport { EmergencyAccessStatusType } from 'jslib-common/enums/emergencyAccessStatusType';\nimport { Utils } from 'jslib-common/misc/utils';\n\nimport { EncString } from 'jslib-common/models/domain/encString';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\n\nimport { CipherWithIdRequest } from 'jslib-common/models/request/cipherWithIdRequest';\nimport { EmergencyAccessUpdateRequest } from 'jslib-common/models/request/emergencyAccessUpdateRequest';\nimport { FolderWithIdRequest } from 'jslib-common/models/request/folderWithIdRequest';\nimport { OrganizationUserResetPasswordEnrollmentRequest } from 'jslib-common/models/request/organizationUserResetPasswordEnrollmentRequest';\nimport { PasswordRequest } from 'jslib-common/models/request/passwordRequest';\nimport { SendWithIdRequest } from 'jslib-common/models/request/sendWithIdRequest';\nimport { UpdateKeyRequest } from 'jslib-common/models/request/updateKeyRequest';\n\n@Component({\n selector: 'app-change-password',\n templateUrl: 'change-password.component.html',\n})\nexport class ChangePasswordComponent extends BaseChangePasswordComponent {\n rotateEncKey = false;\n currentMasterPassword: string;\n\n constructor(i18nService: I18nService,\n cryptoService: CryptoService, messagingService: MessagingService,\n userService: UserService, passwordGenerationService: PasswordGenerationService,\n platformUtilsService: PlatformUtilsService, policyService: PolicyService,\n private folderService: FolderService, private cipherService: CipherService,\n private syncService: SyncService, private apiService: ApiService, private sendService: SendService) {\n super(i18nService, cryptoService, messagingService, userService, passwordGenerationService,\n platformUtilsService, policyService);\n }\n\n async rotateEncKeyClicked() {\n if (this.rotateEncKey) {\n const ciphers = await this.cipherService.getAllDecrypted();\n let hasOldAttachments = false;\n if (ciphers != null) {\n for (let i = 0; i < ciphers.length; i++) {\n if (ciphers[i].organizationId == null && ciphers[i].hasOldAttachments) {\n hasOldAttachments = true;\n break;\n }\n }\n }\n\n if (hasOldAttachments) {\n const learnMore = await this.platformUtilsService.showDialog(\n this.i18nService.t('oldAttachmentsNeedFixDesc'), null,\n this.i18nService.t('learnMore'), this.i18nService.t('close'), 'warning');\n if (learnMore) {\n this.platformUtilsService.launchUri(\n 'https://help.bitwarden.com/article/attachments/#fixing-old-attachments');\n }\n this.rotateEncKey = false;\n return;\n }\n\n const result = await this.platformUtilsService.showDialog(\n this.i18nService.t('updateEncryptionKeyWarning') + ' ' +\n this.i18nService.t('updateEncryptionKeyExportWarning') + ' ' +\n this.i18nService.t('rotateEncKeyConfirmation'), this.i18nService.t('rotateEncKeyTitle'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!result) {\n this.rotateEncKey = false;\n }\n }\n }\n\n async submit() {\n const hasEncKey = await this.cryptoService.hasEncKey();\n if (!hasEncKey) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('updateKey'));\n return;\n }\n\n await super.submit();\n }\n\n async setupSubmitActions() {\n if (this.currentMasterPassword == null || this.currentMasterPassword === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return false;\n }\n\n if (this.rotateEncKey) {\n await this.syncService.fullSync(true);\n }\n\n return super.setupSubmitActions();\n }\n\n async performSubmitActions(newMasterPasswordHash: string, newKey: SymmetricCryptoKey,\n newEncKey: [SymmetricCryptoKey, EncString]) {\n const request = new PasswordRequest();\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.currentMasterPassword, null);\n request.newMasterPasswordHash = newMasterPasswordHash;\n request.key = newEncKey[1].encryptedString;\n\n try {\n if (this.rotateEncKey) {\n this.formPromise = this.apiService.postPassword(request).then(() => {\n return this.updateKey(newKey, request.newMasterPasswordHash);\n });\n } else {\n this.formPromise = this.apiService.postPassword(request);\n }\n\n await this.formPromise;\n\n this.platformUtilsService.showToast('success', this.i18nService.t('masterPasswordChanged'),\n this.i18nService.t('logBackIn'));\n this.messagingService.send('logout');\n } catch {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n }\n }\n\n private async updateKey(key: SymmetricCryptoKey, masterPasswordHash: string) {\n const encKey = await this.cryptoService.makeEncKey(key);\n const privateKey = await this.cryptoService.getPrivateKey();\n let encPrivateKey: EncString = null;\n if (privateKey != null) {\n encPrivateKey = await this.cryptoService.encrypt(privateKey, encKey[0]);\n }\n const request = new UpdateKeyRequest();\n request.privateKey = encPrivateKey != null ? encPrivateKey.encryptedString : null;\n request.key = encKey[1].encryptedString;\n request.masterPasswordHash = masterPasswordHash;\n\n const folders = await this.folderService.getAllDecrypted();\n for (let i = 0; i < folders.length; i++) {\n if (folders[i].id == null) {\n continue;\n }\n const folder = await this.folderService.encrypt(folders[i], encKey[0]);\n request.folders.push(new FolderWithIdRequest(folder));\n }\n\n const ciphers = await this.cipherService.getAllDecrypted();\n for (let i = 0; i < ciphers.length; i++) {\n if (ciphers[i].organizationId != null) {\n continue;\n }\n\n const cipher = await this.cipherService.encrypt(ciphers[i], encKey[0]);\n request.ciphers.push(new CipherWithIdRequest(cipher));\n }\n\n const sends = await this.sendService.getAll();\n await Promise.all(sends.map(async send => {\n const cryptoKey = await this.cryptoService.decryptToBytes(send.key, null);\n send.key = await this.cryptoService.encrypt(cryptoKey, encKey[0]) ?? send.key;\n request.sends.push(new SendWithIdRequest(send));\n }));\n\n await this.apiService.postAccountKey(request);\n\n await this.updateEmergencyAccesses(encKey[0]);\n\n await this.updateAllResetPasswordKeys(encKey[0]);\n }\n\n private async updateEmergencyAccesses(encKey: SymmetricCryptoKey) {\n const emergencyAccess = await this.apiService.getEmergencyAccessTrusted();\n const allowedStatuses = [\n EmergencyAccessStatusType.Confirmed,\n EmergencyAccessStatusType.RecoveryInitiated,\n EmergencyAccessStatusType.RecoveryApproved,\n ];\n\n const filteredAccesses = emergencyAccess.data.filter(d => allowedStatuses.includes(d.status));\n\n for (const details of filteredAccesses) {\n const publicKeyResponse = await this.apiService.getUserPublicKey(details.granteeId);\n const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey);\n\n const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);\n\n const updateRequest = new EmergencyAccessUpdateRequest();\n updateRequest.type = details.type;\n updateRequest.waitTimeDays = details.waitTimeDays;\n updateRequest.keyEncrypted = encryptedKey.encryptedString;\n\n await this.apiService.putEmergencyAccess(details.id, updateRequest);\n }\n }\n\n private async updateAllResetPasswordKeys(encKey: SymmetricCryptoKey) {\n const orgs = await this.userService.getAllOrganizations();\n\n for (const org of orgs) {\n // If not already enrolled, skip\n if (!org.resetPasswordEnrolled) {\n continue;\n }\n\n // Retrieve public key\n const response = await this.apiService.getOrganizationKeys(org.id);\n const publicKey = Utils.fromB64ToArray(response?.publicKey);\n\n // Re-enroll - encrpyt user's encKey.key with organization public key\n const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);\n\n // Create/Execute request\n const request = new OrganizationUserResetPasswordEnrollmentRequest();\n request.resetPasswordKey = encryptedKey.encryptedString;\n\n await this.apiService.putOrganizationUserResetPasswordEnrollment(org.id, org.userId, request);\n }\n }\n}\n","{{'loggedOutWarning' | i18n}}
","export enum EmergencyAccessStatusType {\n Invited = 0,\n Accepted = 1,\n Confirmed = 2,\n RecoveryInitiated = 3,\n RecoveryApproved = 4,\n}\n","import { EmergencyAccessType } from '../../enums/emergencyAccessType';\n\nexport class EmergencyAccessUpdateRequest {\n type: EmergencyAccessType;\n waitTimeDays: number;\n keyEncrypted?: string;\n}\n","import { FolderRequest } from './folderRequest';\n\nimport { Folder } from '../domain/folder';\n\nexport class FolderWithIdRequest extends FolderRequest {\n id: string;\n\n constructor(folder: Folder) {\n super(folder);\n this.id = folder.id;\n }\n}\n","import { SecretVerificationRequest } from './secretVerificationRequest';\n\nexport class PasswordRequest extends SecretVerificationRequest {\n newMasterPasswordHash: string;\n key: string;\n}\n","import { SendType } from '../../enums/sendType';\n\nimport { SendFileApi } from '../api/sendFileApi';\nimport { SendTextApi } from '../api/sendTextApi';\n\nimport { Send } from '../domain/send';\n\nexport class SendRequest {\n type: SendType;\n fileLength?: number;\n name: string;\n notes: string;\n key: string;\n maxAccessCount?: number;\n expirationDate: string;\n deletionDate: string;\n text: SendTextApi;\n file: SendFileApi;\n password: string;\n disabled: boolean;\n hideEmail: boolean;\n\n constructor(send: Send, fileLength?: number) {\n this.type = send.type;\n this.fileLength = fileLength;\n this.name = send.name ? send.name.encryptedString : null;\n this.notes = send.notes ? send.notes.encryptedString : null;\n this.maxAccessCount = send.maxAccessCount;\n this.expirationDate = send.expirationDate != null ? send.expirationDate.toISOString() : null;\n this.deletionDate = send.deletionDate != null ? send.deletionDate.toISOString() : null;\n this.key = send.key != null ? send.key.encryptedString : null;\n this.password = send.password;\n this.disabled = send.disabled;\n this.hideEmail = send.hideEmail;\n\n switch (this.type) {\n case SendType.Text:\n this.text = new SendTextApi();\n this.text.text = send.text.text != null ? send.text.text.encryptedString : null;\n this.text.hidden = send.text.hidden;\n break;\n case SendType.File:\n this.file = new SendFileApi();\n this.file.fileName = send.file.fileName != null ? send.file.fileName.encryptedString : null;\n break;\n default:\n break;\n }\n }\n}\n","import { CipherWithIdRequest } from './cipherWithIdRequest';\nimport { FolderWithIdRequest } from './folderWithIdRequest';\nimport { SendWithIdRequest } from './sendWithIdRequest';\n\nexport class UpdateKeyRequest {\n ciphers: CipherWithIdRequest[] = [];\n folders: FolderWithIdRequest[] = [];\n sends: SendWithIdRequest[] = [];\n masterPasswordHash: string;\n privateKey: string;\n key: string;\n}\n","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { KdfRequest } from 'jslib-common/models/request/kdfRequest';\n\nimport { KdfType } from 'jslib-common/enums/kdfType';\n\n@Component({\n selector: 'app-change-kdf',\n templateUrl: 'change-kdf.component.html',\n})\nexport class ChangeKdfComponent implements OnInit {\n masterPassword: string;\n kdfIterations: number;\n kdf = KdfType.PBKDF2_SHA256;\n kdfOptions: any[] = [];\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private cryptoService: CryptoService,\n private messagingService: MessagingService, private userService: UserService,\n private logService: LogService) {\n this.kdfOptions = [\n { name: 'PBKDF2 SHA-256', value: KdfType.PBKDF2_SHA256 },\n ];\n }\n\n async ngOnInit() {\n this.kdf = await this.userService.getKdf();\n this.kdfIterations = await this.userService.getKdfIterations();\n }\n\n async submit() {\n const hasEncKey = await this.cryptoService.hasEncKey();\n if (!hasEncKey) {\n this.toasterService.popAsync('error', null, this.i18nService.t('updateKey'));\n return;\n }\n\n const request = new KdfRequest();\n request.kdf = this.kdf;\n request.kdfIterations = this.kdfIterations;\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n const email = await this.userService.getEmail();\n const newKey = await this.cryptoService.makeKey(this.masterPassword, email, this.kdf, this.kdfIterations);\n request.newMasterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, newKey);\n const newEncKey = await this.cryptoService.remakeEncKey(newKey);\n request.key = newEncKey[1].encryptedString;\n try {\n this.formPromise = this.apiService.postAccountKdf(request);\n await this.formPromise;\n this.toasterService.popAsync('success', this.i18nService.t('encKeySettingsChanged'),\n this.i18nService.t('logBackIn'));\n this.messagingService.send('logout');\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","{{'loggedOutWarning' | i18n}}

{{'kdfIterationsDesc' | i18n : (100000 | number)}}

{{'warning' | i18n}}: {{'kdfIterationsWarning' | i18n : (50000 | number)}}
","import {\n Component,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\n\nimport { first } from 'rxjs/operators';\n\nimport { PlanType } from 'jslib-common/enums/planType';\nimport { ProductType } from 'jslib-common/enums/productType';\n\nimport { OrganizationPlansComponent } from './organization-plans.component';\n\n@Component({\n selector: 'app-create-organization',\n templateUrl: 'create-organization.component.html',\n})\nexport class CreateOrganizationComponent implements OnInit {\n @ViewChild(OrganizationPlansComponent, { static: true }) orgPlansComponent: OrganizationPlansComponent;\n\n constructor(private route: ActivatedRoute) { }\n\n ngOnInit() {\n this.route.queryParams.pipe(first()).subscribe(async qParams => {\n if (qParams.plan === 'families') {\n this.orgPlansComponent.plan = PlanType.FamiliesAnnually;\n this.orgPlansComponent.product = ProductType.Families;\n } else if (qParams.plan === 'teams') {\n this.orgPlansComponent.plan = PlanType.TeamsAnnually;\n this.orgPlansComponent.product = ProductType.Teams;\n } else if (qParams.plan === 'enterprise') {\n this.orgPlansComponent.plan = PlanType.EnterpriseAnnually;\n this.orgPlansComponent.product = ProductType.Enterprise;\n }\n });\n }\n}\n","

{{'newOrganization' | i18n}}

{{'newOrganizationDesc' | i18n}}

","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\n\nimport { UpdateDomainsRequest } from 'jslib-common/models/request/updateDomainsRequest';\n\n@Component({\n selector: 'app-domain-rules',\n templateUrl: 'domain-rules.component.html',\n})\nexport class DomainRulesComponent implements OnInit {\n loading = true;\n custom: string[] = [];\n global: any[] = [];\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private logService: LogService) { }\n\n async ngOnInit() {\n const response = await this.apiService.getSettingsDomains();\n this.loading = false;\n if (response.equivalentDomains != null) {\n this.custom = response.equivalentDomains.map(d => d.join(', '));\n }\n if (response.globalEquivalentDomains != null) {\n this.global = response.globalEquivalentDomains.map(d => {\n return {\n domains: d.domains.join(', '),\n excluded: d.excluded,\n key: d.type,\n };\n });\n }\n }\n\n toggleExcluded(globalDomain: any) {\n globalDomain.excluded = !globalDomain.excluded;\n }\n\n customize(globalDomain: any) {\n globalDomain.excluded = true;\n this.custom.push(globalDomain.domains);\n }\n\n remove(index: number) {\n this.custom.splice(index, 1);\n }\n\n add() {\n this.custom.push('');\n }\n\n async submit() {\n const request = new UpdateDomainsRequest();\n request.excludedGlobalEquivalentDomains = this.global.filter(d => d.excluded)\n .map(d => d.key);\n if (request.excludedGlobalEquivalentDomains.length === 0) {\n request.excludedGlobalEquivalentDomains = null;\n }\n request.equivalentDomains = this.custom.filter(d => d != null && d.trim() !== '')\n .map(d => d.split(',').map(d2 => d2.trim()));\n if (request.equivalentDomains.length === 0) {\n request.equivalentDomains = null;\n }\n\n try {\n this.formPromise = this.apiService.putSettingsDomains(request);\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('domainsUpdated'));\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n indexTrackBy(index: number, obj: any): any {\n return index;\n }\n}\n","

{{'domainRules' | i18n}}

{{'domainRulesDesc' | i18n}}

{{'customEqDomains' | i18n}}

{{'loading' | i18n}}

{{'newCustomDomainDesc' | i18n}}

{{'globalEqDomains' | i18n}}

{{'loading' | i18n}}

0\">
{{d.domains}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { FormControl } from '@angular/forms';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { ThemeType } from 'jslib-common/enums/themeType';\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Component({\n selector: 'app-options',\n templateUrl: 'options.component.html',\n})\nexport class OptionsComponent implements OnInit {\n vaultTimeoutAction: string = 'lock';\n disableIcons: boolean;\n enableGravatars: boolean;\n enableFullWidth: boolean;\n theme: string = null;\n locale: string;\n vaultTimeouts: { name: string; value: number; }[];\n localeOptions: any[];\n themeOptions: any[];\n\n vaultTimeout: FormControl = new FormControl(null);\n\n private startingLocale: string;\n private startingTheme: string;\n\n constructor(private storageService: StorageService, private stateService: StateService,\n private i18nService: I18nService, private toasterService: ToasterService,\n private vaultTimeoutService: VaultTimeoutService, private platformUtilsService: PlatformUtilsService,\n private messagingService: MessagingService) {\n this.vaultTimeouts = [\n { name: i18nService.t('oneMinute'), value: 1 },\n { name: i18nService.t('fiveMinutes'), value: 5 },\n { name: i18nService.t('fifteenMinutes'), value: 15 },\n { name: i18nService.t('thirtyMinutes'), value: 30 },\n { name: i18nService.t('oneHour'), value: 60 },\n { name: i18nService.t('fourHours'), value: 240 },\n { name: i18nService.t('onRefresh'), value: -1 },\n ];\n if (this.platformUtilsService.isDev()) {\n this.vaultTimeouts.push({ name: i18nService.t('never'), value: null });\n }\n\n const localeOptions: any[] = [];\n i18nService.supportedTranslationLocales.forEach(locale => {\n let name = locale;\n if (i18nService.localeNames.has(locale)) {\n name += (' - ' + i18nService.localeNames.get(locale));\n }\n localeOptions.push({ name: name, value: locale });\n });\n localeOptions.sort(Utils.getSortFunction(i18nService, 'name'));\n localeOptions.splice(0, 0, { name: i18nService.t('default'), value: null });\n this.localeOptions = localeOptions;\n this.themeOptions = [\n { name: i18nService.t('themeLight'), value: null },\n { name: i18nService.t('themeDark'), value: ThemeType.Dark },\n { name: i18nService.t('themeSystem'), value: ThemeType.System },\n ];\n }\n\n async ngOnInit() {\n this.vaultTimeout.setValue(await this.vaultTimeoutService.getVaultTimeout());\n this.vaultTimeoutAction = await this.storageService.get(ConstantsService.vaultTimeoutActionKey);\n this.disableIcons = await this.storageService.get(ConstantsService.disableFaviconKey);\n this.enableGravatars = await this.storageService.get('enableGravatars');\n this.enableFullWidth = await this.storageService.get('enableFullWidth');\n this.locale = this.startingLocale = await this.storageService.get(ConstantsService.localeKey);\n this.theme = this.startingTheme = await this.storageService.get(ConstantsService.themeKey);\n }\n\n async submit() {\n if (!this.vaultTimeout.valid) {\n this.toasterService.popAsync('error', null, this.i18nService.t('vaultTimeoutToLarge'));\n return;\n }\n\n await this.vaultTimeoutService.setVaultTimeoutOptions(this.vaultTimeout.value, this.vaultTimeoutAction);\n await this.storageService.save(ConstantsService.disableFaviconKey, this.disableIcons);\n await this.stateService.save(ConstantsService.disableFaviconKey, this.disableIcons);\n await this.storageService.save('enableGravatars', this.enableGravatars);\n await this.stateService.save('enableGravatars', this.enableGravatars);\n await this.storageService.save('enableFullWidth', this.enableFullWidth);\n this.messagingService.send('setFullWidth');\n if (this.theme !== this.startingTheme) {\n await this.storageService.save(ConstantsService.themeKey, this.theme);\n this.startingTheme = this.theme;\n const effectiveTheme = await this.platformUtilsService.getEffectiveTheme();\n const htmlEl = window.document.documentElement;\n htmlEl.classList.remove('theme_' + ThemeType.Light, 'theme_' + ThemeType.Dark);\n htmlEl.classList.add('theme_' + effectiveTheme);\n }\n await this.storageService.save(ConstantsService.localeKey, this.locale);\n if (this.locale !== this.startingLocale) {\n window.location.reload();\n } else {\n this.toasterService.popAsync('success', null, this.i18nService.t('optionsUpdated'));\n }\n }\n\n async vaultTimeoutActionChanged(newValue: string) {\n if (newValue === 'logOut') {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('vaultTimeoutLogOutConfirmation'),\n this.i18nService.t('vaultTimeoutLogOutConfirmationTitle'),\n this.i18nService.t('yes'), this.i18nService.t('cancel'), 'warning');\n if (!confirmed) {\n this.vaultTimeoutAction = 'lock';\n return;\n }\n }\n this.vaultTimeoutAction = newValue;\n }\n}\n","

{{'options' | i18n}}

{{'optionsDesc' | i18n}}

{{'languageDesc' | i18n}}
{{'disableIconsDesc' | i18n}}
{{'enableGravatarsDesc' | i18n}}
{{'enableFullWidthDesc' | i18n}}
{{'themeDesc' | i18n}}
","import { Component } from '@angular/core';\nimport {\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n} from '@angular/forms';\n\nimport {\n VaultTimeoutInputComponent as VaultTimeoutInputComponentBase\n} from 'jslib-angular/components/settings/vault-timeout-input.component';\n\n@Component({\n selector: 'app-vault-timeout-input',\n templateUrl: 'vault-timeout-input.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: VaultTimeoutInputComponent,\n },\n {\n provide: NG_VALIDATORS,\n multi: true,\n useExisting: VaultTimeoutInputComponent,\n },\n ],\n})\nexport class VaultTimeoutInputComponent extends VaultTimeoutInputComponentBase {\n}\n"," {{'vaultTimeoutPolicyInEffect' | i18n : vaultTimeoutPolicyHours : vaultTimeoutPolicyMinutes}}
{{'vaultTimeoutDesc' | i18n}}
{{'hours' | i18n }}
{{'minutes' | i18n }}
","import {\n AfterContentInit,\n Component,\n Input,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { CryptoFunctionService } from 'jslib-common/abstractions/cryptoFunction.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { SsoComponent } from 'jslib-angular/components/sso.component';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\n@Component({\n selector: 'app-link-sso',\n templateUrl: 'link-sso.component.html',\n})\nexport class LinkSsoComponent extends SsoComponent implements AfterContentInit {\n @Input() organization: Organization;\n returnUri: string = '/settings/organizations';\n\n constructor(platformUtilsService: PlatformUtilsService, i18nService: I18nService,\n apiService: ApiService, authService: AuthService,\n router: Router, route: ActivatedRoute,\n cryptoFunctionService: CryptoFunctionService, passwordGenerationService: PasswordGenerationService,\n storageService: StorageService, stateService: StateService, environmentService: EnvironmentService,\n logService: LogService) {\n super(authService, router,\n i18nService, route,\n storageService, stateService,\n platformUtilsService, apiService,\n cryptoFunctionService, environmentService, passwordGenerationService, logService);\n\n this.returnUri = '/settings/organizations';\n this.redirectUri = window.location.origin + '/sso-connector.html';\n this.clientId = 'web';\n }\n\n async ngAfterContentInit() {\n this.identifier = this.organization.identifier;\n }\n}\n"," {{'linkSso' | i18n}} ","import {\n Component,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { TokenService } from 'jslib-common/abstractions/token.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { PaymentComponent } from './payment.component';\nimport { TaxInfoComponent } from './tax-info.component';\n\n@Component({\n selector: 'app-premium',\n templateUrl: 'premium.component.html',\n})\nexport class PremiumComponent implements OnInit {\n @ViewChild(PaymentComponent) paymentComponent: PaymentComponent;\n @ViewChild(TaxInfoComponent) taxInfoComponent: TaxInfoComponent;\n\n canAccessPremium = false;\n selfHosted = false;\n premiumPrice = 10;\n storageGbPrice = 4;\n additionalStorage = 0;\n\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, platformUtilsService: PlatformUtilsService,\n private tokenService: TokenService, private router: Router,\n private messagingService: MessagingService, private syncService: SyncService,\n private userService: UserService, private logService: LogService) {\n this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n this.canAccessPremium = await this.userService.canAccessPremium();\n const premium = await this.tokenService.getPremium();\n if (premium) {\n this.router.navigate(['/settings/subscription']);\n return;\n }\n }\n\n async submit() {\n let files: FileList = null;\n if (this.selfHosted) {\n const fileEl = document.getElementById('file') as HTMLInputElement;\n files = fileEl.files;\n if (files == null || files.length === 0) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n return;\n }\n }\n\n try {\n if (this.selfHosted) {\n if (!this.tokenService.getEmailVerified()) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('verifyEmailFirst'));\n return;\n }\n\n const fd = new FormData();\n fd.append('license', files[0]);\n this.formPromise = this.apiService.postAccountLicense(fd).then(() => {\n return this.finalizePremium();\n });\n } else {\n this.formPromise = this.paymentComponent.createPaymentToken().then(result => {\n const fd = new FormData();\n fd.append('paymentMethodType', result[1].toString());\n if (result[0] != null) {\n fd.append('paymentToken', result[0]);\n }\n fd.append('additionalStorageGb', (this.additionalStorage || 0).toString());\n fd.append('country', this.taxInfoComponent.taxInfo.country);\n fd.append('postalCode', this.taxInfoComponent.taxInfo.postalCode);\n return this.apiService.postPremium(fd);\n }).then(paymentResponse => {\n if (!paymentResponse.success && paymentResponse.paymentIntentClientSecret != null) {\n return this.paymentComponent.handleStripeCardPayment(paymentResponse.paymentIntentClientSecret,\n () => this.finalizePremium());\n } else {\n return this.finalizePremium();\n }\n });\n }\n await this.formPromise;\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async finalizePremium() {\n await this.apiService.refreshIdentityToken();\n await this.syncService.fullSync(true);\n this.toasterService.popAsync('success', null, this.i18nService.t('premiumUpdated'));\n this.messagingService.send('purchasedPremium');\n this.router.navigate(['/settings/subscription']);\n }\n\n get additionalStorageTotal(): number {\n return this.storageGbPrice * Math.abs(this.additionalStorage || 0);\n }\n\n get subtotal(): number {\n return this.premiumPrice + this.additionalStorageTotal;\n }\n\n get taxCharges(): number {\n return this.taxInfoComponent != null && this.taxInfoComponent.taxRate != null ?\n (this.taxInfoComponent.taxRate / 100) * this.subtotal :\n 0;\n }\n\n get total(): number {\n return (this.subtotal + this.taxCharges) || 0;\n }\n}\n","

{{'goPremium' | i18n}}

{{'alreadyPremiumFromOrg' | i18n}}

{{'premiumUpgradeUnlockFeatures' | i18n}}

  • {{'premiumSignUpStorage' | i18n}}
  • {{'premiumSignUpTwoStep' | i18n}}
  • {{'premiumSignUpEmergency' |i18n}}
  • {{'premiumSignUpReports' | i18n}}
  • {{'premiumSignUpTotp' | i18n}}
  • {{'premiumSignUpSupport' | i18n}}
  • {{'premiumSignUpFuture' | i18n}}

{{'premiumPrice' | i18n : (premiumPrice | currency:'$')}}

{{'purchasePremium' | i18n}}

{{'uploadLicenseFilePremium' | i18n}}

{{'licenseFileDesc' | i18n : 'bitwarden_premium_license.json'}}

{{'addons' | i18n}}

{{'additionalStorageIntervalDesc' | i18n : '1 GB' : (storageGbPrice | currency:'$') : ('year' | i18n)}}

{{'summary' | i18n}}

{{'premiumMembership' | i18n}}: {{premiumPrice | currency:'$'}}
{{'additionalStorageGb' | i18n}}: {{additionalStorage || 0}} GB × {{storageGbPrice | currency:'$'}} = {{additionalStorageTotal | currency:'$'}}

{{'paymentInformation' | i18n}}

{{ 'planPrice' | i18n }}: {{ subtotal | currency: 'USD $' }}
{{ 'estimatedTax' | i18n }}: {{ taxCharges | currency: 'USD $' }}

{{'total' | i18n}}: {{total | currency:'USD $'}}/{{'year' | i18n}}

{{'paymentChargedAnnually' | i18n}}
","import {\n Component,\n NgZone,\n OnDestroy,\n OnInit,\n} from '@angular/core';\n\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { TokenService } from 'jslib-common/abstractions/token.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { BroadcasterService } from 'jslib-angular/services/broadcaster.service';\n\nconst BroadcasterSubscriptionId = 'SettingsComponent';\n\n@Component({\n selector: 'app-settings',\n templateUrl: 'settings.component.html',\n})\nexport class SettingsComponent implements OnInit, OnDestroy {\n premium: boolean;\n selfHosted: boolean;\n hasFamilySponsorshipAvailable: boolean;\n\n constructor(private tokenService: TokenService, private broadcasterService: BroadcasterService,\n private ngZone: NgZone, private platformUtilsService: PlatformUtilsService,\n private userService: UserService) { }\n\n async ngOnInit() {\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, async (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'purchasedPremium':\n await this.load();\n break;\n default:\n }\n });\n });\n\n this.selfHosted = await this.platformUtilsService.isSelfHost();\n await this.load();\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async load() {\n this.premium = await this.tokenService.getPremium();\n this.hasFamilySponsorshipAvailable = await this.userService.canManageSponsorships();\n }\n}\n"," ","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { SubscriptionResponse } from 'jslib-common/models/response/subscriptionResponse';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { TokenService } from 'jslib-common/abstractions/token.service';\n\n@Component({\n selector: 'app-user-subscription',\n templateUrl: 'user-subscription.component.html',\n})\nexport class UserSubscriptionComponent implements OnInit {\n loading = false;\n firstLoaded = false;\n adjustStorageAdd = true;\n showAdjustStorage = false;\n showUpdateLicense = false;\n sub: SubscriptionResponse;\n selfHosted = false;\n\n cancelPromise: Promise;\n reinstatePromise: Promise;\n\n constructor(private tokenService: TokenService, private apiService: ApiService,\n private platformUtilsService: PlatformUtilsService, private i18nService: I18nService,\n private toasterService: ToasterService, private router: Router, private logService: LogService) {\n this.selfHosted = platformUtilsService.isSelfHost();\n }\n\n async ngOnInit() {\n await this.load();\n this.firstLoaded = true;\n }\n\n async load() {\n if (this.loading) {\n return;\n }\n\n if (this.tokenService.getPremium()) {\n this.loading = true;\n this.sub = await this.apiService.getUserSubscription();\n } else {\n this.router.navigate(['/settings/premium']);\n return;\n }\n\n this.loading = false;\n }\n\n async reinstate() {\n if (this.loading) {\n return;\n }\n\n if (this.usingInAppPurchase) {\n this.platformUtilsService.showDialog(this.i18nService.t('manageSubscriptionFromStore'),\n this.i18nService.t('cancelSubscription'), null, null, 'warning');\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('reinstateConfirmation'),\n this.i18nService.t('reinstateSubscription'), this.i18nService.t('yes'), this.i18nService.t('cancel'));\n if (!confirmed) {\n return;\n }\n\n try {\n this.reinstatePromise = this.apiService.postReinstatePremium();\n await this.reinstatePromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('reinstated'));\n this.load();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async cancel() {\n if (this.loading) {\n return;\n }\n\n if (this.usingInAppPurchase) {\n this.platformUtilsService.showDialog(this.i18nService.t('manageSubscriptionFromStore'),\n this.i18nService.t('cancelSubscription'), null, null, 'warning');\n return;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('cancelConfirmation'),\n this.i18nService.t('cancelSubscription'), this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return;\n }\n\n try {\n this.cancelPromise = this.apiService.postCancelPremium();\n await this.cancelPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('canceledSubscription'));\n this.load();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n downloadLicense() {\n if (this.loading) {\n return;\n }\n\n const licenseString = JSON.stringify(this.sub.license, null, 2);\n this.platformUtilsService.saveFile(window, licenseString, null, 'bitwarden_premium_license.json');\n }\n\n updateLicense() {\n if (this.loading) {\n return;\n }\n this.showUpdateLicense = true;\n }\n\n closeUpdateLicense(load: boolean) {\n this.showUpdateLicense = false;\n if (load) {\n this.load();\n }\n }\n\n adjustStorage(add: boolean) {\n if (this.usingInAppPurchase) {\n this.platformUtilsService.showDialog(this.i18nService.t('cannotPerformInAppPurchase'),\n this.i18nService.t(add ? 'addStorage' : 'removeStorage'), null, null, 'warning');\n return;\n }\n this.adjustStorageAdd = add;\n this.showAdjustStorage = true;\n }\n\n closeStorage(load: boolean) {\n this.showAdjustStorage = false;\n if (load) {\n this.load();\n }\n }\n\n get subscriptionMarkedForCancel() {\n return this.subscription != null && !this.subscription.cancelled && this.subscription.cancelAtEndDate;\n }\n\n get subscription() {\n return this.sub != null ? this.sub.subscription : null;\n }\n\n get nextInvoice() {\n return this.sub != null ? this.sub.upcomingInvoice : null;\n }\n\n get storagePercentage() {\n return this.sub != null && this.sub.maxStorageGb ?\n +(100 * (this.sub.storageGb / this.sub.maxStorageGb)).toFixed(2) : 0;\n }\n\n get storageProgressWidth() {\n return this.storagePercentage < 5 ? 5 : 0;\n }\n\n get usingInAppPurchase() {\n return this.sub != null ? this.sub.usingInAppPurchase : false;\n }\n}\n","

{{'premiumMembership' | i18n}} {{'loading' | i18n}}

{{'loading' | i18n}} {{'subscriptionCanceled' | i18n}}

{{'subscriptionPendingCanceled' | i18n}}

{{'expiration' | i18n}}
{{sub.expiration | date:'mediumDate'}}
{{'neverExpires' | i18n}}
{{'status' | i18n}}
{{(subscription && subscription.status) || '-'}} {{'pendingCancellation' | i18n}}
{{'nextCharge' | i18n}}
{{nextInvoice ? ((nextInvoice.date | date: 'mediumDate') + ', ' + (nextInvoice.amount | currency:'$')) : '-'}}
{{'details' | i18n}}
{{i.name}} {{i.quantity > 1 ? '×' + i.quantity : ''}} @ {{i.amount | currency:'$'}} {{(i.quantity * i.amount) | currency:'$'}} /{{i.interval | i18n}}
{{'manageSubscription' | i18n}}

{{'updateLicense' | i18n}}

{{'storage' | i18n}}

{{'subscriptionStorage' | i18n : sub.maxStorageGb || 0 : sub.storageName || '0 MB'}}

{{(storagePercentage / 100) | percent}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { AuditService } from 'jslib-common/abstractions/audit.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\nimport { BreachAccountResponse } from 'jslib-common/models/response/breachAccountResponse';\n\n@Component({\n selector: 'app-breach-report',\n templateUrl: 'breach-report.component.html',\n})\nexport class BreachReportComponent implements OnInit {\n error = false;\n username: string;\n checkedUsername: string;\n breachedAccounts: BreachAccountResponse[] = [];\n formPromise: Promise;\n\n constructor(private auditService: AuditService, private userService: UserService) { }\n\n async ngOnInit() {\n this.username = await this.userService.getEmail();\n }\n\n async submit() {\n this.error = false;\n this.username = this.username.toLowerCase();\n try {\n this.formPromise = this.auditService.breachedAccounts(this.username);\n this.breachedAccounts = await this.formPromise;\n } catch {\n this.error = true;\n }\n this.checkedUsername = this.username;\n }\n}\n","

{{'dataBreachReport' | i18n}}

{{'breachDesc' | i18n}}

{{'breachCheckUsernameEmail' | i18n}}

{{'reportError' | i18n}}...

{{'breachUsernameNotFound' | i18n : checkedUsername}} {{'breachUsernameFound' | i18n : checkedUsername : breachedAccounts.length}}
  • \"\"

    {{a.title}}

    {{'compromisedData' | i18n}}:

    • {{d}}
    {{'website' | i18n}}
    {{a.domain}}
    {{'affectedUsers' | i18n}}
    {{a.pwnCount | number}}
    {{'breachOccurred' | i18n}}
    {{a.breachDate | date: 'mediumDate'}}
    {{'breachReported' | i18n}}
    {{a.addedDate | date: 'mediumDate'}}
","import {\n Component,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport {\n PasswordGeneratorComponent as BasePasswordGeneratorComponent,\n} from 'jslib-angular/components/password-generator.component';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\nimport { PasswordGeneratorHistoryComponent } from './password-generator-history.component';\n\n@Component({\n selector: 'app-password-generator',\n templateUrl: 'password-generator.component.html',\n})\nexport class PasswordGeneratorComponent extends BasePasswordGeneratorComponent {\n @ViewChild('historyTemplate', { read: ViewContainerRef, static: true }) historyModalRef: ViewContainerRef;\n\n constructor(passwordGenerationService: PasswordGenerationService, platformUtilsService: PlatformUtilsService,\n i18nService: I18nService, private modalService: ModalService) {\n super(passwordGenerationService, platformUtilsService, i18nService, window);\n }\n\n async history() {\n await this.modalService.openViewRef(PasswordGeneratorHistoryComponent, this.historyModalRef);\n }\n\n lengthChanged() {\n document.getElementById('length').focus();\n }\n\n minNumberChanged() {\n document.getElementById('min-number').focus();\n }\n\n minSpecialChanged() {\n document.getElementById('min-special').focus();\n }\n}\n","

{{'passwordGenerator' | i18n}}

{{'passwordGeneratorPolicyInEffect' | i18n}}
","import { Component } from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport {\n PasswordGeneratorHistoryComponent as BasePasswordGeneratorHistoryComponent,\n} from 'jslib-angular/components/password-generator-history.component';\n\n@Component({\n selector: 'app-password-generator-history',\n templateUrl: 'password-generator-history.component.html',\n})\nexport class PasswordGeneratorHistoryComponent extends BasePasswordGeneratorHistoryComponent {\n constructor(passwordGenerationService: PasswordGenerationService, platformUtilsService: PlatformUtilsService,\n i18nService: I18nService) {\n super(passwordGenerationService, platformUtilsService, i18nService, window);\n }\n}\n","

{{'passwordHistory' | i18n}}

  • {{h.date | date:'medium'}}
{{'noPasswordsInList' | i18n}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\n\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\n@Component({\n selector: 'app-tools',\n templateUrl: 'tools.component.html',\n})\nexport class ToolsComponent implements OnInit {\n canAccessPremium = false;\n\n constructor(private userService: UserService, private messagingService: MessagingService) { }\n\n async ngOnInit() {\n this.canAccessPremium = await this.userService.canAccessPremium();\n }\n\n premiumRequired() {\n if (!this.canAccessPremium) {\n this.messagingService.send('premiumRequired');\n return;\n }\n }\n}\n"," ","import {\n ChangeDetectorRef,\n Component,\n NgZone,\n OnDestroy,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { first } from 'rxjs/operators';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { OrganizationsComponent } from '../settings/organizations.component';\nimport { UpdateKeyComponent } from '../settings/update-key.component';\nimport { AddEditComponent } from './add-edit.component';\nimport { AttachmentsComponent } from './attachments.component';\nimport { CiphersComponent } from './ciphers.component';\nimport { CollectionsComponent } from './collections.component';\nimport { FolderAddEditComponent } from './folder-add-edit.component';\nimport { GroupingsComponent } from './groupings.component';\nimport { ShareComponent } from './share.component';\n\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { TokenService } from 'jslib-common/abstractions/token.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { BroadcasterService } from 'jslib-angular/services/broadcaster.service';\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nconst BroadcasterSubscriptionId = 'VaultComponent';\n\n@Component({\n selector: 'app-vault',\n templateUrl: 'vault.component.html',\n})\nexport class VaultComponent implements OnInit, OnDestroy {\n @ViewChild(GroupingsComponent, { static: true }) groupingsComponent: GroupingsComponent;\n @ViewChild(CiphersComponent, { static: true }) ciphersComponent: CiphersComponent;\n @ViewChild(OrganizationsComponent, { static: true }) organizationsComponent: OrganizationsComponent;\n @ViewChild('attachments', { read: ViewContainerRef, static: true }) attachmentsModalRef: ViewContainerRef;\n @ViewChild('folderAddEdit', { read: ViewContainerRef, static: true }) folderAddEditModalRef: ViewContainerRef;\n @ViewChild('cipherAddEdit', { read: ViewContainerRef, static: true }) cipherAddEditModalRef: ViewContainerRef;\n @ViewChild('share', { read: ViewContainerRef, static: true }) shareModalRef: ViewContainerRef;\n @ViewChild('collections', { read: ViewContainerRef, static: true }) collectionsModalRef: ViewContainerRef;\n @ViewChild('updateKeyTemplate', { read: ViewContainerRef, static: true }) updateKeyModalRef: ViewContainerRef;\n\n favorites: boolean = false;\n type: CipherType = null;\n folderId: string = null;\n collectionId: string = null;\n showVerifyEmail = false;\n showBrowserOutdated = false;\n showUpdateKey = false;\n showPremiumCallout = false;\n showRedeemSponsorship = false;\n showProviders = false;\n deleted: boolean = false;\n trashCleanupWarning: string = null;\n\n\n constructor(private syncService: SyncService, private route: ActivatedRoute,\n private router: Router, private changeDetectorRef: ChangeDetectorRef,\n private i18nService: I18nService, private modalService: ModalService,\n private tokenService: TokenService, private cryptoService: CryptoService,\n private messagingService: MessagingService, private userService: UserService,\n private platformUtilsService: PlatformUtilsService, private broadcasterService: BroadcasterService,\n private ngZone: NgZone) { }\n\n async ngOnInit() {\n this.showVerifyEmail = !(await this.tokenService.getEmailVerified());\n this.showBrowserOutdated = window.navigator.userAgent.indexOf('MSIE') !== -1;\n this.trashCleanupWarning = this.i18nService.t('trashCleanupWarningSelfHosted');\n\n this.route.queryParams.pipe(first()).subscribe(async params => {\n await this.syncService.fullSync(false);\n\n this.showUpdateKey = !(await this.cryptoService.hasEncKey());\n const canAccessPremium = await this.userService.canAccessPremium();\n this.showPremiumCallout = !this.showVerifyEmail && !canAccessPremium &&\n !this.platformUtilsService.isSelfHost();\n\n this.showProviders = (await this.userService.getAllProviders()).length > 0;\n\n const allOrgs = await this.userService.getAllOrganizations();\n this.showRedeemSponsorship = allOrgs.some(o => o.familySponsorshipAvailable) && !allOrgs.some(o => o.familySponsorshipFriendlyName != null);\n\n await Promise.all([\n this.groupingsComponent.load(),\n this.organizationsComponent.load(),\n ]);\n\n if (params == null) {\n this.groupingsComponent.selectedAll = true;\n await this.ciphersComponent.reload();\n } else {\n if (params.deleted) {\n this.groupingsComponent.selectedTrash = true;\n await this.filterDeleted();\n } else if (params.favorites) {\n this.groupingsComponent.selectedFavorites = true;\n await this.filterFavorites();\n } else if (params.type) {\n const t = parseInt(params.type, null);\n this.groupingsComponent.selectedType = t;\n await this.filterCipherType(t);\n } else if (params.folderId) {\n this.groupingsComponent.selectedFolder = true;\n this.groupingsComponent.selectedFolderId = params.folderId;\n await this.filterFolder(params.folderId);\n } else if (params.collectionId) {\n this.groupingsComponent.selectedCollectionId = params.collectionId;\n await this.filterCollection(params.collectionId);\n } else {\n this.groupingsComponent.selectedAll = true;\n await this.ciphersComponent.reload();\n }\n }\n\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'syncCompleted':\n if (message.successfully) {\n await Promise.all([\n this.groupingsComponent.load(),\n this.organizationsComponent.load(),\n this.ciphersComponent.load(this.ciphersComponent.filter),\n ]);\n this.changeDetectorRef.detectChanges();\n }\n break;\n }\n });\n });\n });\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n async clearGroupingFilters() {\n this.ciphersComponent.showAddNew = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchVault');\n await this.ciphersComponent.reload();\n this.clearFilters();\n this.go();\n }\n\n async filterFavorites() {\n this.ciphersComponent.showAddNew = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchFavorites');\n await this.ciphersComponent.reload(c => c.favorite);\n this.clearFilters();\n this.favorites = true;\n this.go();\n }\n\n async filterDeleted() {\n this.ciphersComponent.showAddNew = false;\n this.ciphersComponent.deleted = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchTrash');\n await this.ciphersComponent.reload(null, true);\n this.clearFilters();\n this.deleted = true;\n this.go();\n }\n\n async filterCipherType(type: CipherType) {\n this.ciphersComponent.showAddNew = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchType');\n await this.ciphersComponent.reload(c => c.type === type);\n this.clearFilters();\n this.type = type;\n this.go();\n }\n\n async filterFolder(folderId: string) {\n this.ciphersComponent.showAddNew = true;\n folderId = folderId === 'none' ? null : folderId;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchFolder');\n await this.ciphersComponent.reload(c => c.folderId === folderId);\n this.clearFilters();\n this.folderId = folderId == null ? 'none' : folderId;\n this.go();\n }\n\n async filterCollection(collectionId: string) {\n this.ciphersComponent.showAddNew = true;\n this.groupingsComponent.searchPlaceholder = this.i18nService.t('searchCollection');\n await this.ciphersComponent.reload(c => c.collectionIds != null &&\n c.collectionIds.indexOf(collectionId) > -1);\n this.clearFilters();\n this.collectionId = collectionId;\n this.go();\n }\n\n filterSearchText(searchText: string) {\n this.ciphersComponent.searchText = searchText;\n this.ciphersComponent.search(200);\n }\n\n async editCipherAttachments(cipher: CipherView) {\n const canAccessPremium = await this.userService.canAccessPremium();\n if (cipher.organizationId == null && !canAccessPremium) {\n this.messagingService.send('premiumRequired');\n return;\n } else if (cipher.organizationId != null) {\n const org = await this.userService.getOrganization(cipher.organizationId);\n if (org != null && (org.maxStorageGb == null || org.maxStorageGb === 0)) {\n this.messagingService.send('upgradeOrganization', { organizationId: cipher.organizationId });\n return;\n }\n }\n\n let madeAttachmentChanges = false;\n const [modal] = await this.modalService.openViewRef(AttachmentsComponent, this.attachmentsModalRef, comp => {\n comp.cipherId = cipher.id;\n comp.onUploadedAttachment.subscribe(() => madeAttachmentChanges = true);\n comp.onDeletedAttachment.subscribe(() => madeAttachmentChanges = true);\n comp.onReuploadedAttachment.subscribe(() => madeAttachmentChanges = true);\n });\n\n modal.onClosed.subscribe(async () => {\n if (madeAttachmentChanges) {\n await this.ciphersComponent.refresh();\n }\n madeAttachmentChanges = false;\n });\n }\n\n async shareCipher(cipher: CipherView) {\n const [modal] = await this.modalService.openViewRef(ShareComponent, this.shareModalRef, comp => {\n comp.cipherId = cipher.id;\n comp.onSharedCipher.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n });\n }\n\n async editCipherCollections(cipher: CipherView) {\n const [modal] = await this.modalService.openViewRef(CollectionsComponent, this.collectionsModalRef, comp => {\n comp.cipherId = cipher.id;\n comp.onSavedCollections.subscribe(async () => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n });\n }\n\n async addFolder() {\n const [modal] = await this.modalService.openViewRef(FolderAddEditComponent, this.folderAddEditModalRef, comp => {\n comp.folderId = null;\n comp.onSavedFolder.subscribe(async () => {\n modal.close();\n await this.groupingsComponent.loadFolders();\n });\n });\n }\n\n async editFolder(folderId: string) {\n const [modal] = await this.modalService.openViewRef(FolderAddEditComponent, this.folderAddEditModalRef, comp => {\n comp.folderId = folderId;\n comp.onSavedFolder.subscribe(async () => {\n modal.close();\n await this.groupingsComponent.loadFolders();\n });\n comp.onDeletedFolder.subscribe(async () => {\n modal.close();\n await this.groupingsComponent.loadFolders();\n await this.filterFolder('none');\n this.groupingsComponent.selectedFolderId = null;\n });\n });\n }\n\n async addCipher() {\n const component = await this.editCipher(null);\n component.type = this.type;\n component.folderId = this.folderId === 'none' ? null : this.folderId;\n if (this.collectionId != null) {\n const collection = this.groupingsComponent.collections.filter(c => c.id === this.collectionId);\n if (collection.length > 0) {\n component.organizationId = collection[0].organizationId;\n component.collectionIds = [this.collectionId];\n }\n }\n }\n\n async editCipher(cipher: CipherView) {\n const [modal, childComponent] = await this.modalService.openViewRef(AddEditComponent, this.cipherAddEditModalRef, comp => {\n comp.cipherId = cipher == null ? null : cipher.id;\n comp.onSavedCipher.subscribe(async (c: CipherView) => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n comp.onDeletedCipher.subscribe(async (c: CipherView) => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n comp.onRestoredCipher.subscribe(async (c: CipherView) => {\n modal.close();\n await this.ciphersComponent.refresh();\n });\n });\n\n return childComponent;\n }\n\n async cloneCipher(cipher: CipherView) {\n const component = await this.editCipher(cipher);\n component.cloneMode = true;\n }\n\n async updateKey() {\n await this.modalService.openViewRef(UpdateKeyComponent, this.updateKeyModalRef);\n }\n\n private clearFilters() {\n this.folderId = null;\n this.collectionId = null;\n this.favorites = false;\n this.type = null;\n this.deleted = false;\n }\n\n private go(queryParams: any = null) {\n if (queryParams == null) {\n queryParams = {\n favorites: this.favorites ? true : null,\n type: this.type,\n folderId: this.folderId,\n collectionId: this.collectionId,\n deleted: this.deleted ? true : null,\n };\n }\n\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: queryParams,\n replaceUrl: true,\n });\n }\n}\n","

{{'myVault' | i18n}} {{'loading' | i18n}}

{{trashCleanupWarning}}
{{'updateKeyTitle' | i18n}}

{{'updateEncryptionKeyShortDesc' | i18n}}

{{'updateBrowser' | i18n}}

{{'updateBrowserDesc' | i18n}}

{{'updateBrowser' | i18n}}
{{'goPremium' | i18n}}

{{'premiumUpgradeUnlockFeatures' | i18n}}

{{'goPremium' | i18n}}
{{'organizations' | i18n}}
{{'freeFamiliesPlan' | i18n}}

{{'sponsoredFamiliesEligible' | i18n}}

{{'redeemNow' | i18n}}
{{'providers' | i18n}}
","import { Component } from '@angular/core';\n\nimport {\n Toast,\n ToasterService,\n} from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\n\nimport { EncString } from 'jslib-common/models/domain/encString';\n\nimport { CipherWithIdRequest } from 'jslib-common/models/request/cipherWithIdRequest';\nimport { FolderWithIdRequest } from 'jslib-common/models/request/folderWithIdRequest';\nimport { UpdateKeyRequest } from 'jslib-common/models/request/updateKeyRequest';\n\n@Component({\n selector: 'app-update-key',\n templateUrl: 'update-key.component.html',\n})\nexport class UpdateKeyComponent {\n masterPassword: string;\n formPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private cryptoService: CryptoService,\n private messagingService: MessagingService, private syncService: SyncService,\n private folderService: FolderService, private cipherService: CipherService,\n private logService: LogService) { }\n\n async submit() {\n const hasEncKey = await this.cryptoService.hasEncKey();\n if (hasEncKey) {\n return;\n }\n\n if (this.masterPassword == null || this.masterPassword === '') {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n try {\n this.formPromise = this.makeRequest().then(request => {\n return this.apiService.postAccountKey(request);\n });\n await this.formPromise;\n const toast: Toast = {\n type: 'success',\n title: this.i18nService.t('keyUpdated'),\n body: this.i18nService.t('logBackInOthersToo'),\n timeout: 15000,\n };\n this.toasterService.popAsync(toast);\n this.messagingService.send('logout');\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n private async makeRequest(): Promise {\n const key = await this.cryptoService.getKey();\n const encKey = await this.cryptoService.makeEncKey(key);\n const privateKey = await this.cryptoService.getPrivateKey();\n let encPrivateKey: EncString = null;\n if (privateKey != null) {\n encPrivateKey = await this.cryptoService.encrypt(privateKey, encKey[0]);\n }\n const request = new UpdateKeyRequest();\n request.privateKey = encPrivateKey != null ? encPrivateKey.encryptedString : null;\n request.key = encKey[1].encryptedString;\n request.masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, null);\n\n await this.syncService.fullSync(true);\n\n const folders = await this.folderService.getAllDecrypted();\n for (let i = 0; i < folders.length; i++) {\n if (folders[i].id == null) {\n continue;\n }\n const folder = await this.folderService.encrypt(folders[i], encKey[0]);\n request.folders.push(new FolderWithIdRequest(folder));\n }\n\n const ciphers = await this.cipherService.getAllDecrypted();\n for (let i = 0; i < ciphers.length; i++) {\n if (ciphers[i].organizationId != null) {\n continue;\n }\n const cipher = await this.cipherService.encrypt(ciphers[i], encKey[0]);\n request.ciphers.push(new CipherWithIdRequest(cipher));\n }\n\n return request;\n }\n}\n","

{{'updateEncryptionKey' | i18n}}

{{'updateEncryptionKeyShortDesc' | i18n}} {{'updateEncryptionKeyDesc' | i18n}} {{'learnMore' | i18n}}

{{'updateEncryptionKeyWarning' | i18n}}
","import { Component } from '@angular/core';\n\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport {\n FolderAddEditComponent as BaseFolderAddEditComponent,\n} from 'jslib-angular/components/folder-add-edit.component';\n\n@Component({\n selector: 'app-folder-add-edit',\n templateUrl: 'folder-add-edit.component.html',\n})\nexport class FolderAddEditComponent extends BaseFolderAddEditComponent {\n constructor(folderService: FolderService, i18nService: I18nService,\n platformUtilsService: PlatformUtilsService, logService: LogService) {\n super(folderService, i18nService, platformUtilsService, logService);\n }\n}\n","

{{title}}

","import {\n Component,\n OnDestroy,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\n\nimport { ShareComponent as BaseShareComponent } from 'jslib-angular/components/share.component';\nimport { LogService } from 'jslib-common/abstractions/log.service';\n\n@Component({\n selector: 'app-vault-share',\n templateUrl: 'share.component.html',\n})\nexport class ShareComponent extends BaseShareComponent implements OnDestroy {\n constructor(collectionService: CollectionService, platformUtilsService: PlatformUtilsService,\n i18nService: I18nService, userService: UserService,\n cipherService: CipherService, logService: LogService) {\n super(collectionService, platformUtilsService, i18nService, userService, cipherService,\n logService);\n }\n\n ngOnDestroy() {\n this.selectAll(false);\n }\n\n check(c: CollectionView, select?: boolean) {\n (c as any).checked = select == null ? !(c as any).checked : select;\n }\n\n selectAll(select: boolean) {\n const collections = select ? this.collections : this.writeableCollections;\n collections.forEach(c => this.check(c, select));\n }\n}\n","

{{'moveToOrganization' | i18n}} {{cipher.name}}

{{'noOrganizationsList' | i18n}}

{{'moveToOrgDesc' | i18n}}

{{'collections' | i18n}}

{{'noCollectionsInList' | i18n}}
{{c.name}}
{{'newOrganization' | i18n}}
","import { Component } from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\n\n@Component({\n selector: 'app-verify-email',\n templateUrl: 'verify-email.component.html',\n})\nexport class VerifyEmailComponent {\n actionPromise: Promise;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private logService: LogService) { }\n\n async send() {\n if (this.actionPromise != null) {\n return;\n }\n try {\n this.actionPromise = this.apiService.postAccountVerifyEmail();\n await this.actionPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('checkInboxForVerification'));\n } catch (e) {\n this.logService.error(e);\n }\n this.actionPromise = null;\n }\n}\n","
{{'verifyEmail' | i18n}}

{{'verifyEmailDesc' | i18n}}

","import {\n Component,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Provider } from 'jslib-common/models/domain/provider';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Component({\n selector: 'app-providers',\n templateUrl: 'providers.component.html',\n})\nexport class ProvidersComponent implements OnInit {\n @Input() vault = false;\n\n providers: Provider[];\n loaded: boolean = false;\n actionPromise: Promise;\n\n constructor(private userService: UserService, private i18nService: I18nService) { }\n\n async ngOnInit() {\n document.body.classList.remove('layout_frontend');\n await this.load();\n }\n\n async load() {\n const providers = await this.userService.getAllProviders();\n providers.sort(Utils.getSortFunction(this.i18nService, 'name'));\n this.providers = providers;\n this.loaded = true;\n }\n}\n","

{{'loading' | i18n}}

{{'providers' | i18n}}

{{'loading' | i18n}}

{{p.name}} {{'providerIsDisabled' | i18n}}
","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n Router,\n} from '@angular/router';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\n@Injectable()\nexport class OrganizationGuardService implements CanActivate {\n constructor(private userService: UserService, private router: Router,\n private toasterService: ToasterService, private i18nService: I18nService) { }\n\n async canActivate(route: ActivatedRouteSnapshot) {\n const org = await this.userService.getOrganization(route.params.organizationId);\n if (org == null) {\n this.router.navigate(['/']);\n return false;\n }\n if (!org.isOwner && !org.enabled) {\n this.toasterService.popAsync('error', null, this.i18nService.t('organizationIsDisabled'));\n this.router.navigate(['/']);\n return false;\n }\n\n return true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n Router,\n} from '@angular/router';\n\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Permissions } from 'jslib-common/enums/permissions';\n\n@Injectable()\nexport class OrganizationTypeGuardService implements CanActivate {\n constructor(private userService: UserService, private router: Router) { }\n\n async canActivate(route: ActivatedRouteSnapshot) {\n const org = await this.userService.getOrganization(route.params.organizationId);\n const permissions = route.data == null ? null : route.data.permissions as Permissions[];\n\n if (\n (permissions.indexOf(Permissions.AccessEventLogs) !== -1 && org.canAccessEventLogs) ||\n (permissions.indexOf(Permissions.AccessImportExport) !== -1 && org.canAccessImportExport) ||\n (permissions.indexOf(Permissions.AccessReports) !== -1 && org.canAccessReports) ||\n (permissions.indexOf(Permissions.CreateNewCollections) !== -1 && org.canCreateNewCollections) ||\n (permissions.indexOf(Permissions.EditAnyCollection) !== -1 && org.canEditAnyCollection) ||\n (permissions.indexOf(Permissions.DeleteAnyCollection) !== -1 && org.canDeleteAnyCollection) ||\n (permissions.indexOf(Permissions.EditAssignedCollections) !== -1 && org.canEditAssignedCollections) ||\n (permissions.indexOf(Permissions.DeleteAssignedCollections) !== -1 && org.canDeleteAssignedCollections) ||\n (permissions.indexOf(Permissions.ManageGroups) !== -1 && org.canManageGroups) ||\n (permissions.indexOf(Permissions.ManageOrganization) !== -1 && org.isOwner) ||\n (permissions.indexOf(Permissions.ManagePolicies) !== -1 && org.canManagePolicies) ||\n (permissions.indexOf(Permissions.ManageUsers) !== -1 && org.canManageUsers) ||\n (permissions.indexOf(Permissions.ManageUsersPassword) !== -1 && org.canManageUsersPassword) ||\n (permissions.indexOf(Permissions.ManageSso) !== -1 && org.canManageSso)\n ) {\n return true;\n }\n\n this.router.navigate(['/organizations', org.id]);\n return false;\n }\n}\n","export enum Permissions {\n AccessEventLogs,\n AccessImportExport,\n AccessReports,\n /**\n * @deprecated Sep 29 2021: This permission has been split out to `createNewCollections`, `editAnyCollection`, and\n * `deleteAnyCollection`. It exists here for backwards compatibility with Server versions <= 1.43.0\n */\n ManageAllCollections,\n /**\n * @deprecated Sep 29 2021: This permission has been split out to `editAssignedCollections` and\n * `deleteAssignedCollections`. It exists here for backwards compatibility with Server versions <= 1.43.0\n */\n ManageAssignedCollections,\n ManageGroups,\n ManageOrganization ,\n ManagePolicies,\n ManageProvider,\n ManageUsers,\n ManageUsersPassword,\n CreateNewCollections,\n EditAnyCollection,\n DeleteAnyCollection,\n EditAssignedCollections,\n DeleteAssignedCollections,\n ManageSso,\n}\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n Router,\n RouterStateSnapshot,\n} from '@angular/router';\n\nimport { KeyConnectorService } from 'jslib-common/abstractions/keyConnector.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\nimport { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service';\n\n@Injectable()\nexport class AuthGuardService implements CanActivate {\n constructor(private vaultTimeoutService: VaultTimeoutService, private userService: UserService,\n private router: Router, private messagingService: MessagingService, private keyConnectorService: KeyConnectorService) { }\n\n async canActivate(route: ActivatedRouteSnapshot, routerState: RouterStateSnapshot) {\n const isAuthed = await this.userService.isAuthenticated();\n if (!isAuthed) {\n this.messagingService.send('authBlocked');\n return false;\n }\n\n const locked = await this.vaultTimeoutService.isLocked();\n if (locked) {\n if (routerState != null) {\n this.messagingService.send('lockedUrl', { url: routerState.url });\n }\n this.router.navigate(['lock'], { queryParams: { promptBiometric: true }});\n return false;\n }\n\n if (!routerState.url.includes('remove-password') && await this.keyConnectorService.getConvertAccountRequired()) {\n this.router.navigate(['/remove-password']);\n return false;\n }\n\n return true;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n CanActivate,\n Router,\n} from '@angular/router';\n\nimport { UserService } from 'jslib-common/abstractions/user.service';\nimport { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service';\n\n@Injectable()\nexport class LockGuardService implements CanActivate {\n\n protected homepage = 'vault';\n constructor(private vaultTimeoutService: VaultTimeoutService, private userService: UserService,\n private router: Router) { }\n\n async canActivate() {\n const isAuthed = await this.userService.isAuthenticated();\n if (isAuthed) {\n const locked = await this.vaultTimeoutService.isLocked();\n if (locked) {\n return true;\n } else {\n this.router.navigate([this.homepage]);\n return false;\n }\n }\n\n this.router.navigate(['']);\n return false;\n }\n}\n","import { Injectable } from '@angular/core';\nimport {\n ActivatedRouteSnapshot,\n CanActivate,\n Router,\n} from '@angular/router';\n\nimport { UserService } from 'jslib-common/abstractions/user.service';\nimport { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service';\n\n@Injectable()\nexport class UnauthGuardService implements CanActivate {\n\n protected homepage = 'vault';\n constructor(private vaultTimeoutService: VaultTimeoutService, private userService: UserService,\n private router: Router) { }\n\n async canActivate() {\n const isAuthed = await this.userService.isAuthenticated();\n if (isAuthed) {\n const locked = await this.vaultTimeoutService.isLocked();\n if (locked) {\n this.router.navigate(['lock']);\n } else {\n this.router.navigate([this.homepage]);\n }\n return false;\n }\n\n return true;\n }\n}\n","import {\n Component,\n OnInit,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { CipherData } from 'jslib-common/models/data/cipherData';\nimport { Cipher } from 'jslib-common/models/domain/cipher';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\nimport { EmergencyAccessViewResponse } from 'jslib-common/models/response/emergencyAccessResponse';\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\nimport { EmergencyAccessAttachmentsComponent } from './emergency-access-attachments.component';\nimport { EmergencyAddEditComponent } from './emergency-add-edit.component';\n\n@Component({\n selector: 'emergency-access-view',\n templateUrl: 'emergency-access-view.component.html',\n})\nexport class EmergencyAccessViewComponent implements OnInit {\n @ViewChild('cipherAddEdit', { read: ViewContainerRef, static: true }) cipherAddEditModalRef: ViewContainerRef;\n @ViewChild('attachments', { read: ViewContainerRef, static: true }) attachmentsModalRef: ViewContainerRef;\n\n id: string;\n ciphers: CipherView[] = [];\n loaded = false;\n\n constructor(private cipherService: CipherService, private cryptoService: CryptoService,\n private modalService: ModalService, private router: Router,\n private route: ActivatedRoute, private apiService: ApiService) { }\n\n ngOnInit() {\n this.route.params.subscribe(qParams => {\n if (qParams.id == null) {\n return this.router.navigate(['settings/emergency-access']);\n }\n\n this.id = qParams.id;\n\n this.load();\n });\n }\n\n async selectCipher(cipher: CipherView) {\n const [_, childComponent] = await this.modalService.openViewRef(EmergencyAddEditComponent, this.cipherAddEditModalRef, comp => {\n comp.cipherId = cipher == null ? null : cipher.id;\n comp.cipher = cipher;\n });\n\n return childComponent;\n }\n\n async load() {\n const response = await this.apiService.postEmergencyAccessView(this.id);\n this.ciphers = await this.getAllCiphers(response);\n this.loaded = true;\n }\n\n async viewAttachments(cipher: CipherView) {\n await this.modalService.openViewRef(EmergencyAccessAttachmentsComponent, this.attachmentsModalRef, comp => {\n comp.cipher = cipher;\n comp.emergencyAccessId = this.id;\n });\n }\n\n protected async getAllCiphers(response: EmergencyAccessViewResponse): Promise {\n const ciphers = response.ciphers;\n\n const decCiphers: CipherView[] = [];\n const oldKeyBuffer = await this.cryptoService.rsaDecrypt(response.keyEncrypted);\n const oldEncKey = new SymmetricCryptoKey(oldKeyBuffer);\n\n const promises: any[] = [];\n ciphers.forEach(cipherResponse => {\n const cipherData = new CipherData(cipherResponse);\n const cipher = new Cipher(cipherData);\n promises.push(cipher.decrypt(oldEncKey).then(c => decCiphers.push(c)));\n });\n\n await Promise.all(promises);\n decCiphers.sort(this.cipherService.getLocaleSortingFunction());\n\n return decCiphers;\n }\n}\n","

{{'vault' | i18n}}

{{c.name}} {{'shared' | i18n}} {{'attachments' | i18n}}
{{c.subTitle}}
{{'loading' | i18n}}
","import { Component } from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { AttachmentView } from 'jslib-common/models/view/attachmentView';\n\nimport { AttachmentsComponent as BaseAttachmentsComponent } from 'jslib-angular/components/attachments.component';\n\n@Component({\n selector: 'emergency-access-attachments',\n templateUrl: '../vault/attachments.component.html',\n})\nexport class EmergencyAccessAttachmentsComponent extends BaseAttachmentsComponent {\n viewOnly = true;\n canAccessAttachments = true;\n\n constructor(cipherService: CipherService, i18nService: I18nService,\n cryptoService: CryptoService, userService: UserService,\n platformUtilsService: PlatformUtilsService, apiService: ApiService,\n logService: LogService) {\n super(cipherService, i18nService, cryptoService, userService, platformUtilsService, apiService, window,\n logService);\n }\n\n protected async init() {\n // Do nothing since cipher is already decoded\n }\n\n protected showFixOldAttachments(attachment: AttachmentView) {\n return false;\n }\n}\n","import { Component } from '@angular/core';\n\nimport { AuditService } from 'jslib-common/abstractions/audit.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PasswordRepromptService } from 'jslib-common/abstractions/passwordReprompt.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { TotpService } from 'jslib-common/abstractions/totp.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Cipher } from 'jslib-common/models/domain/cipher';\n\nimport { AddEditComponent as BaseAddEditComponent } from '../vault/add-edit.component';\n\n@Component({\n selector: 'app-org-vault-add-edit',\n templateUrl: '../vault/add-edit.component.html',\n})\nexport class EmergencyAddEditComponent extends BaseAddEditComponent {\n originalCipher: Cipher = null;\n viewOnly = true;\n\n constructor(cipherService: CipherService, folderService: FolderService,\n i18nService: I18nService, platformUtilsService: PlatformUtilsService,\n auditService: AuditService, stateService: StateService,\n userService: UserService, collectionService: CollectionService,\n totpService: TotpService, passwordGenerationService: PasswordGenerationService,\n messagingService: MessagingService, eventService: EventService, policyService: PolicyService,\n logService: LogService, passwordRepromptService: PasswordRepromptService) {\n super(cipherService, folderService, i18nService, platformUtilsService, auditService, stateService,\n userService, collectionService, totpService, passwordGenerationService, messagingService,\n eventService, policyService, passwordRepromptService, logService);\n }\n\n async load() {\n this.title = this.i18nService.t('viewItem');\n }\n\n protected async loadCipher() {\n return Promise.resolve(this.originalCipher);\n }\n}\n","import {\n Component,\n OnInit,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { EmergencyAccessStatusType } from 'jslib-common/enums/emergencyAccessStatusType';\nimport { EmergencyAccessType } from 'jslib-common/enums/emergencyAccessType';\nimport { Utils } from 'jslib-common/misc/utils';\nimport { EmergencyAccessConfirmRequest } from 'jslib-common/models/request/emergencyAccessConfirmRequest';\nimport { EmergencyAccessGranteeDetailsResponse, EmergencyAccessGrantorDetailsResponse } from 'jslib-common/models/response/emergencyAccessResponse';\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { UserNamePipe } from 'jslib-angular/pipes/user-name.pipe';\n\nimport { EmergencyAccessAddEditComponent } from './emergency-access-add-edit.component';\nimport { EmergencyAccessConfirmComponent } from './emergency-access-confirm.component';\nimport { EmergencyAccessTakeoverComponent } from './emergency-access-takeover.component';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\n@Component({\n selector: 'emergency-access',\n templateUrl: 'emergency-access.component.html',\n})\nexport class EmergencyAccessComponent implements OnInit {\n @ViewChild('addEdit', { read: ViewContainerRef, static: true }) addEditModalRef: ViewContainerRef;\n @ViewChild('takeoverTemplate', { read: ViewContainerRef, static: true}) takeoverModalRef: ViewContainerRef;\n @ViewChild('confirmTemplate', { read: ViewContainerRef, static: true }) confirmModalRef: ViewContainerRef;\n\n canAccessPremium: boolean;\n trustedContacts: EmergencyAccessGranteeDetailsResponse[];\n grantedContacts: EmergencyAccessGrantorDetailsResponse[];\n emergencyAccessType = EmergencyAccessType;\n emergencyAccessStatusType = EmergencyAccessStatusType;\n actionPromise: Promise;\n isOrganizationOwner: boolean;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private modalService: ModalService, private platformUtilsService: PlatformUtilsService,\n private toasterService: ToasterService, private cryptoService: CryptoService,\n private storageService: StorageService, private userService: UserService,\n private messagingService: MessagingService, private userNamePipe: UserNamePipe,\n private logService: LogService) { }\n\n async ngOnInit() {\n this.canAccessPremium = await this.userService.canAccessPremium();\n const orgs = await this.userService.getAllOrganizations();\n this.isOrganizationOwner = orgs.some(o => o.isOwner);\n this.load();\n }\n\n async load() {\n this.trustedContacts = (await this.apiService.getEmergencyAccessTrusted()).data;\n this.grantedContacts = (await this.apiService.getEmergencyAccessGranted()).data;\n }\n\n async premiumRequired() {\n if (!this.canAccessPremium) {\n this.messagingService.send('premiumRequired');\n return;\n }\n }\n\n async edit(details: EmergencyAccessGranteeDetailsResponse) {\n const [modal] = await this.modalService.openViewRef(EmergencyAccessAddEditComponent, this.addEditModalRef, comp => {\n comp.name = this.userNamePipe.transform(details);\n comp.emergencyAccessId = details?.id;\n comp.readOnly = !this.canAccessPremium;\n comp.onSaved.subscribe(() => {\n modal.close();\n this.load();\n });\n comp.onDeleted.subscribe(() => {\n modal.close();\n this.remove(details);\n });\n });\n }\n\n invite() {\n this.edit(null);\n }\n\n async reinvite(contact: EmergencyAccessGranteeDetailsResponse) {\n if (this.actionPromise != null) {\n return;\n }\n this.actionPromise = this.apiService.postEmergencyAccessReinvite(contact.id);\n await this.actionPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('hasBeenReinvited', contact.email));\n this.actionPromise = null;\n }\n\n async confirm(contact: EmergencyAccessGranteeDetailsResponse) {\n function updateUser() {\n contact.status = EmergencyAccessStatusType.Confirmed;\n }\n\n if (this.actionPromise != null) {\n return;\n }\n\n const autoConfirm = await this.storageService.get(ConstantsService.autoConfirmFingerprints);\n if (autoConfirm == null || !autoConfirm) {\n const [modal] = await this.modalService.openViewRef(EmergencyAccessConfirmComponent, this.confirmModalRef, comp => {\n comp.name = this.userNamePipe.transform(contact);\n comp.emergencyAccessId = contact.id;\n comp.userId = contact?.granteeId;\n comp.onConfirmed.subscribe(async () => {\n modal.close();\n\n comp.formPromise = this.doConfirmation(contact);\n await comp.formPromise;\n\n updateUser();\n this.toasterService.popAsync('success', null, this.i18nService.t('hasBeenConfirmed', this.userNamePipe.transform(contact)));\n });\n });\n return;\n }\n\n this.actionPromise = this.doConfirmation(contact);\n await this.actionPromise;\n updateUser();\n\n this.toasterService.popAsync('success', null, this.i18nService.t('hasBeenConfirmed', this.userNamePipe.transform(contact)));\n this.actionPromise = null;\n }\n\n async remove(details: EmergencyAccessGranteeDetailsResponse | EmergencyAccessGrantorDetailsResponse) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('removeUserConfirmation'), this.userNamePipe.transform(details),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n await this.apiService.deleteEmergencyAccess(details.id);\n this.toasterService.popAsync('success', null, this.i18nService.t('removedUserId', this.userNamePipe.transform(details)));\n\n if (details instanceof EmergencyAccessGranteeDetailsResponse) {\n this.removeGrantee(details);\n } else {\n this.removeGrantor(details);\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async requestAccess(details: EmergencyAccessGrantorDetailsResponse) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('requestAccessConfirmation', details.waitTimeDays.toString()),\n this.userNamePipe.transform(details),\n this.i18nService.t('requestAccess'),\n this.i18nService.t('no'),\n 'warning',\n );\n\n if (!confirmed) {\n return false;\n }\n\n await this.apiService.postEmergencyAccessInitiate(details.id);\n\n details.status = EmergencyAccessStatusType.RecoveryInitiated;\n this.toasterService.popAsync('success', null, this.i18nService.t('requestSent', this.userNamePipe.transform(details)));\n }\n\n async approve(details: EmergencyAccessGranteeDetailsResponse) {\n const type = this.i18nService.t(details.type === EmergencyAccessType.View ? 'view' : 'takeover');\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('approveAccessConfirmation', this.userNamePipe.transform(details), type),\n this.userNamePipe.transform(details),\n this.i18nService.t('approve'),\n this.i18nService.t('no'),\n 'warning',\n );\n\n if (!confirmed) {\n return false;\n }\n\n await this.apiService.postEmergencyAccessApprove(details.id);\n details.status = EmergencyAccessStatusType.RecoveryApproved;\n\n this.toasterService.popAsync('success', null, this.i18nService.t('emergencyApproved', this.userNamePipe.transform(details)));\n }\n\n async reject(details: EmergencyAccessGranteeDetailsResponse) {\n await this.apiService.postEmergencyAccessReject(details.id);\n details.status = EmergencyAccessStatusType.Confirmed;\n\n this.toasterService.popAsync('success', null, this.i18nService.t('emergencyRejected', this.userNamePipe.transform(details)));\n }\n\n async takeover(details: EmergencyAccessGrantorDetailsResponse) {\n const [modal] = await this.modalService.openViewRef(EmergencyAccessTakeoverComponent, this.takeoverModalRef, comp => {\n comp.name = this.userNamePipe.transform(details);\n comp.email = details.email;\n comp.emergencyAccessId = details != null ? details.id : null;\n\n comp.onDone.subscribe(() => {\n modal.close();\n this.toasterService.popAsync('success', null, this.i18nService.t('passwordResetFor', this.userNamePipe.transform(details)));\n });\n });\n }\n\n private removeGrantee(details: EmergencyAccessGranteeDetailsResponse) {\n const index = this.trustedContacts.indexOf(details);\n if (index > -1) {\n this.trustedContacts.splice(index, 1);\n }\n }\n\n private removeGrantor(details: EmergencyAccessGrantorDetailsResponse) {\n const index = this.grantedContacts.indexOf(details);\n if (index > -1) {\n this.grantedContacts.splice(index, 1);\n }\n }\n\n // Encrypt the master password hash using the grantees public key, and send it to bitwarden for escrow.\n private async doConfirmation(details: EmergencyAccessGranteeDetailsResponse) {\n const encKey = await this.cryptoService.getEncKey();\n const publicKeyResponse = await this.apiService.getUserPublicKey(details.granteeId);\n const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey);\n\n try {\n this.logService.debug('User\\'s fingerprint: ' +\n (await this.cryptoService.getFingerprint(details.granteeId, publicKey.buffer)).join('-'));\n } catch {\n // Ignore errors since it's just a debug message\n }\n\n const encryptedKey = await this.cryptoService.rsaEncrypt(encKey.key, publicKey.buffer);\n const request = new EmergencyAccessConfirmRequest();\n request.key = encryptedKey.encryptedString;\n await this.apiService.postEmergencyAccessConfirm(details.id, request);\n }\n}\n","

{{'emergencyAccess' | i18n}}

{{'emergencyAccessDesc' | i18n}} {{'learnMore' | i18n}}.

{{'warning' | i18n }}: {{'emergencyAccessOwnerWarning' | i18n}}

{{'trustedEmergencyContacts' | i18n}} {{'premium' | i18n}}

{{c.email}} {{'invited' | i18n}} {{'accepted' | i18n}} {{'emergencyAccessRecoveryInitiated' | i18n}} {{'emergencyAccessRecoveryApproved' | i18n}} {{'view' | i18n}} {{'takeover' | i18n}} {{c.name}}

{{'noTrustedContacts' | i18n}}

{{'designatedEmergencyContacts' | i18n}}

{{c.email}} {{'invited' | i18n}} {{'accepted' | i18n}} {{'emergencyAccessRecoveryInitiated' | i18n}} {{'emergencyAccessRecoveryApproved' | i18n}} {{'view' | i18n}} {{'takeover' | i18n}} {{c.name}}

{{'noGrantedAccess' | i18n}}

","export enum EmergencyAccessType\n{\n View = 0,\n Takeover = 1,\n}\n","import { EmergencyAccessStatusType } from '../../enums/emergencyAccessStatusType';\nimport { EmergencyAccessType } from '../../enums/emergencyAccessType';\nimport { KdfType } from '../../enums/kdfType';\nimport { BaseResponse } from './baseResponse';\nimport { CipherResponse } from './cipherResponse';\n\nexport class EmergencyAccessGranteeDetailsResponse extends BaseResponse {\n id: string;\n granteeId: string;\n name: string;\n email: string;\n type: EmergencyAccessType;\n status: EmergencyAccessStatusType;\n waitTimeDays: number;\n creationDate: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.granteeId = this.getResponseProperty('GranteeId');\n this.name = this.getResponseProperty('Name');\n this.email = this.getResponseProperty('Email');\n this.type = this.getResponseProperty('Type');\n this.status = this.getResponseProperty('Status');\n this.waitTimeDays = this.getResponseProperty('WaitTimeDays');\n this.creationDate = this.getResponseProperty('CreationDate');\n }\n}\n\nexport class EmergencyAccessGrantorDetailsResponse extends BaseResponse {\n id: string;\n grantorId: string;\n name: string;\n email: string;\n type: EmergencyAccessType;\n status: EmergencyAccessStatusType;\n waitTimeDays: number;\n creationDate: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.grantorId = this.getResponseProperty('GrantorId');\n this.name = this.getResponseProperty('Name');\n this.email = this.getResponseProperty('Email');\n this.type = this.getResponseProperty('Type');\n this.status = this.getResponseProperty('Status');\n this.waitTimeDays = this.getResponseProperty('WaitTimeDays');\n this.creationDate = this.getResponseProperty('CreationDate');\n }\n}\n\nexport class EmergencyAccessTakeoverResponse extends BaseResponse {\n keyEncrypted: string;\n kdf: KdfType;\n kdfIterations: number;\n\n constructor(response: any) {\n super(response);\n\n this.keyEncrypted = this.getResponseProperty('KeyEncrypted');\n this.kdf = this.getResponseProperty('Kdf');\n this.kdfIterations = this.getResponseProperty('KdfIterations');\n }\n}\n\nexport class EmergencyAccessViewResponse extends BaseResponse {\n keyEncrypted: string;\n ciphers: CipherResponse[] = [];\n\n constructor(response: any) {\n super(response);\n\n this.keyEncrypted = this.getResponseProperty('KeyEncrypted');\n\n const ciphers = this.getResponseProperty('Ciphers');\n if (ciphers != null) {\n this.ciphers = ciphers.map((c: any) => new CipherResponse(c));\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class AttachmentResponse extends BaseResponse {\n id: string;\n url: string;\n fileName: string;\n key: string;\n size: string;\n sizeName: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.url = this.getResponseProperty('Url');\n this.fileName = this.getResponseProperty('FileName');\n this.key = this.getResponseProperty('Key');\n this.size = this.getResponseProperty('Size');\n this.sizeName = this.getResponseProperty('SizeName');\n }\n}\n","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\n\nimport { EmergencyAccessType } from 'jslib-common/enums/emergencyAccessType';\nimport { EmergencyAccessInviteRequest } from 'jslib-common/models/request/emergencyAccessInviteRequest';\nimport { EmergencyAccessUpdateRequest } from 'jslib-common/models/request/emergencyAccessUpdateRequest';\n\n@Component({\n selector: 'emergency-access-add-edit',\n templateUrl: 'emergency-access-add-edit.component.html',\n})\nexport class EmergencyAccessAddEditComponent implements OnInit {\n @Input() name: string;\n @Input() emergencyAccessId: string;\n @Output() onSaved = new EventEmitter();\n @Output() onDeleted = new EventEmitter();\n\n loading = true;\n readOnly: boolean = false;\n editMode: boolean = false;\n title: string;\n email: string;\n type: EmergencyAccessType = EmergencyAccessType.View;\n\n formPromise: Promise;\n\n emergencyAccessType = EmergencyAccessType;\n waitTimes: { name: string; value: number; }[];\n waitTime: number;\n\n constructor(private apiService: ApiService, private i18nService: I18nService,\n private toasterService: ToasterService, private logService: LogService) { }\n\n async ngOnInit() {\n this.editMode = this.loading = this.emergencyAccessId != null;\n\n this.waitTimes = [\n { name: this.i18nService.t('oneDay'), value: 1 },\n { name: this.i18nService.t('days', '2'), value: 2 },\n { name: this.i18nService.t('days', '7'), value: 7 },\n { name: this.i18nService.t('days', '14'), value: 14 },\n { name: this.i18nService.t('days', '30'), value: 30 },\n { name: this.i18nService.t('days', '90'), value: 90 },\n ];\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t('editEmergencyContact');\n try {\n const emergencyAccess = await this.apiService.getEmergencyAccess(this.emergencyAccessId);\n this.type = emergencyAccess.type;\n this.waitTime = emergencyAccess.waitTimeDays;\n } catch (e) {\n this.logService.error(e);\n }\n } else {\n this.title = this.i18nService.t('inviteEmergencyContact');\n this.waitTime = this.waitTimes[2].value;\n }\n\n this.loading = false;\n }\n\n async submit() {\n try {\n if (this.editMode) {\n const request = new EmergencyAccessUpdateRequest();\n request.type = this.type;\n request.waitTimeDays = this.waitTime;\n\n this.formPromise = this.apiService.putEmergencyAccess(this.emergencyAccessId, request);\n } else {\n const request = new EmergencyAccessInviteRequest();\n request.email = this.email.trim();\n request.type = this.type;\n request.waitTimeDays = this.waitTime;\n\n this.formPromise = this.apiService.postEmergencyAccessInvite(request);\n }\n\n await this.formPromise;\n this.toasterService.popAsync('success', null,\n this.i18nService.t(this.editMode ? 'editedUserId' : 'invitedUsers', this.name));\n this.onSaved.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async delete() {\n this.onDeleted.emit();\n }\n}\n","

{{'premium' | i18n}} {{title}} {{name}}

{{'loading' | i18n}}

{{'inviteEmergencyContactDesc' | i18n}}

{{'userAccess' | i18n}}

{{'waitTimeDesc' | i18n}}
","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Component({\n selector: 'emergency-access-confirm',\n templateUrl: 'emergency-access-confirm.component.html',\n})\nexport class EmergencyAccessConfirmComponent implements OnInit {\n @Input() name: string;\n @Input() userId: string;\n @Input() emergencyAccessId: string;\n @Input() formPromise: Promise;\n @Output() onConfirmed = new EventEmitter();\n\n dontAskAgain = false;\n loading = true;\n fingerprint: string;\n\n constructor(private apiService: ApiService, private cryptoService: CryptoService,\n private storageService: StorageService, private logService: LogService) { }\n\n async ngOnInit() {\n try {\n const publicKeyResponse = await this.apiService.getUserPublicKey(this.userId);\n if (publicKeyResponse != null) {\n const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey);\n const fingerprint = await this.cryptoService.getFingerprint(this.userId, publicKey.buffer);\n if (fingerprint != null) {\n this.fingerprint = fingerprint.join('-');\n }\n }\n } catch (e) {\n this.logService.error(e);\n }\n this.loading = false;\n }\n\n async submit() {\n if (this.loading) {\n return;\n }\n\n if (this.dontAskAgain) {\n await this.storageService.save(ConstantsService.autoConfirmFingerprints, true);\n }\n\n try {\n this.onConfirmed.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","

{{'confirmUser' | i18n}} {{name}}

{{'fingerprintEnsureIntegrityVerify' | i18n}} {{'learnMore' | i18n}}

{{fingerprint}}

","import {\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { KdfType } from 'jslib-common/enums/kdfType';\nimport { PolicyData } from 'jslib-common/models/data/policyData';\nimport { Policy } from 'jslib-common/models/domain/policy';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\nimport { EmergencyAccessPasswordRequest } from 'jslib-common/models/request/emergencyAccessPasswordRequest';\nimport { PolicyResponse } from 'jslib-common/models/response/policyResponse';\n\nimport { ChangePasswordComponent } from 'jslib-angular/components/change-password.component';\n\n@Component({\n selector: 'emergency-access-takeover',\n templateUrl: 'emergency-access-takeover.component.html',\n})\nexport class EmergencyAccessTakeoverComponent extends ChangePasswordComponent implements OnInit {\n @Output() onDone = new EventEmitter();\n @Input() emergencyAccessId: string;\n @Input() name: string;\n @Input() email: string;\n @Input() kdf: KdfType;\n @Input() kdfIterations: number;\n\n formPromise: Promise;\n\n constructor(i18nService: I18nService, cryptoService: CryptoService,\n messagingService: MessagingService, userService: UserService,\n passwordGenerationService: PasswordGenerationService,\n platformUtilsService: PlatformUtilsService, policyService: PolicyService,\n private apiService: ApiService, private toasterService: ToasterService, private logService: LogService) {\n super(i18nService, cryptoService, messagingService, userService, passwordGenerationService,\n platformUtilsService, policyService);\n }\n\n async ngOnInit() {\n const response = await this.apiService.getEmergencyGrantorPolicies(this.emergencyAccessId);\n if (response.data != null && response.data.length > 0) {\n const policies = response.data.map((policyResponse: PolicyResponse) => new Policy(new PolicyData(policyResponse)));\n this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions(policies);\n }\n }\n\n async submit() {\n if (!await this.strongPassword()) {\n return;\n }\n\n const takeoverResponse = await this.apiService.postEmergencyAccessTakeover(this.emergencyAccessId);\n\n const oldKeyBuffer = await this.cryptoService.rsaDecrypt(takeoverResponse.keyEncrypted);\n const oldEncKey = new SymmetricCryptoKey(oldKeyBuffer);\n\n if (oldEncKey == null) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'), this.i18nService.t('unexpectedError'));\n return;\n }\n\n const key = await this.cryptoService.makeKey(this.masterPassword, this.email, takeoverResponse.kdf, takeoverResponse.kdfIterations);\n const masterPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, key);\n\n const encKey = await this.cryptoService.remakeEncKey(key, oldEncKey);\n\n const request = new EmergencyAccessPasswordRequest();\n request.newMasterPasswordHash = masterPasswordHash;\n request.key = encKey[1].encryptedString;\n\n this.apiService.postEmergencyAccessPassword(this.emergencyAccessId, request);\n\n try {\n this.onDone.emit();\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","

{{'takeover' | i18n}} {{name}}

{{'loggedOutWarning' | i18n}}
","import {\n Component,\n OnInit,\n} from '@angular/core';\nimport { ToasterService } from 'angular2-toaster';\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\nimport { PlanSponsorshipType } from 'jslib-common/enums/planSponsorshipType';\nimport { Organization } from 'jslib-common/models/domain/organization';\n\n@Component({\n selector: 'app-sponsored-families',\n templateUrl: 'sponsored-families.component.html',\n})\nexport class SponsoredFamiliesComponent implements OnInit {\n loading = false;\n\n availableSponsorshipOrgs: Organization[] = [];\n activeSponsorshipOrgs: Organization[] = [];\n selectedSponsorshipOrgId: string = '';\n sponsorshipEmail: string = '';\n\n // Conditional display properties\n formPromise: Promise;\n\n constructor(private userService: UserService, private apiService: ApiService,\n private i18nService: I18nService, private toasterService: ToasterService,\n private syncService: SyncService) { }\n\n async ngOnInit() {\n await this.load();\n }\n\n async submit() {\n this.formPromise = this.apiService.postCreateSponsorship(this.selectedSponsorshipOrgId, {\n sponsoredEmail: this.sponsorshipEmail,\n planSponsorshipType: PlanSponsorshipType.FamiliesForEnterprise,\n friendlyName: this.sponsorshipEmail,\n });\n\n await this.formPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('sponsorshipCreated'));\n this.formPromise = null;\n this.resetForm();\n await this.load(true);\n }\n\n async load(forceReload: boolean = false) {\n if (this.loading) {\n return;\n }\n\n this.loading = true;\n if (forceReload) {\n await this.syncService.fullSync(true);\n }\n\n const allOrgs = await this.userService.getAllOrganizations();\n this.availableSponsorshipOrgs = allOrgs.filter(org => org.familySponsorshipAvailable);\n\n this.activeSponsorshipOrgs = allOrgs.filter(org => org.familySponsorshipFriendlyName !== null);\n\n if (this.availableSponsorshipOrgs.length === 1) {\n this.selectedSponsorshipOrgId = this.availableSponsorshipOrgs[0].id;\n }\n this.loading = false;\n }\n\n\n private async resetForm() {\n this.sponsorshipEmail = '';\n this.selectedSponsorshipOrgId = '';\n }\n\n get anyActiveSponsorships(): boolean {\n return this.activeSponsorshipOrgs.length > 0;\n }\n\n get anyOrgsAvailable(): boolean {\n return this.availableSponsorshipOrgs.length > 0;\n }\n\n get moreThanOneOrgAvailable(): boolean {\n return this.availableSponsorshipOrgs.length > 1;\n }\n}\n","

{{'sponsoredFamilies' | i18n}}

{{'loading' | i18n}}

{{'sponsoredFamiliesEligible' | i18n}}

{{'sponsoredFamiliesInclude' | i18n}}:
  • {{'sponsoredFamiliesPremiumAccess' | i18n}}
  • {{'sponsoredFamiliesSharedCollections' | i18n}}
{{'recipient' | i18n}} {{'sponsoringOrg' | i18n}}
{{'sponsoredFamiliesLeaveCopy' | i18n}}
","import {\n Component,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\nimport { ToasterService } from 'angular2-toaster';\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\n@Component({\n selector: '[sponsoring-org-row]',\n templateUrl: 'sponsoring-org-row.component.html',\n})\nexport class SponsoringOrgRowComponent {\n @Input() sponsoringOrg: Organization = null;\n\n @Output() sponsorshipRemoved = new EventEmitter();\n\n revokeSponsorshipPromise: Promise;\n resendEmailPromise: Promise;\n\n constructor(private toasterService: ToasterService, private apiService: ApiService,\n private i18nService: I18nService, private logService: LogService,\n private platformUtilsService: PlatformUtilsService) { }\n\n async revokeSponsorship() {\n try {\n this.revokeSponsorshipPromise = this.doRevokeSponsorship();\n await this.revokeSponsorshipPromise;\n } catch (e) {\n this.logService.error(e);\n }\n\n this.revokeSponsorshipPromise = null;\n }\n\n async resendEmail() {\n this.resendEmailPromise = this.apiService.postResendSponsorshipOffer(this.sponsoringOrg.id);\n await this.resendEmailPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('emailSent'));\n this.resendEmailPromise = null;\n }\n\n private async doRevokeSponsorship() {\n const isConfirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('revokeSponsorshipConfirmation'),\n `${this.i18nService.t('remove')} ${this.sponsoringOrg.familySponsorshipFriendlyName}?`,\n this.i18nService.t('remove'), this.i18nService.t('cancel'), 'warning');\n\n if (!isConfirmed) {\n return;\n }\n\n await this.apiService.deleteRevokeSponsorship(this.sponsoringOrg.id);\n this.toasterService.popAsync('success', null, this.i18nService.t('reclaimedFreePlan'));\n this.sponsorshipRemoved.emit();\n }\n}\n"," {{sponsoringOrg.familySponsorshipFriendlyName}} {{sponsoringOrg.name}}
","import { Component } from '@angular/core';\n\nimport { PasswordRepromptComponent as BasePasswordRepromptComponent } from 'jslib-angular/components/password-reprompt.component';\n\n@Component({\n templateUrl: 'password-reprompt.component.html',\n})\nexport class PasswordRepromptComponent extends BasePasswordRepromptComponent {}\n","

{{'passwordConfirmation' | i18n}}

{{'passwordConfirmationDesc' | i18n}}
","import { Directive } from '@angular/core';\n\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { ModalRef } from './modal/modal.ref';\n\n@Directive()\nexport class PasswordRepromptComponent {\n\n showPassword = false;\n masterPassword = '';\n\n constructor(private modalRef: ModalRef, private cryptoService: CryptoService, private platformUtilsService: PlatformUtilsService,\n private i18nService: I18nService) {}\n\n togglePassword() {\n this.showPassword = !this.showPassword;\n }\n\n async submit() {\n if (!await this.cryptoService.compareAndUpdateKeyHash(this.masterPassword, null)) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidMasterPassword'));\n return;\n }\n\n this.modalRef.close(true);\n }\n}\n","import {\n Directive,\n ElementRef,\n HostListener,\n} from '@angular/core';\n\n@Directive({\n selector: '[appBlurClick]',\n})\nexport class BlurClickDirective {\n constructor(private el: ElementRef) {\n }\n\n @HostListener('click') onClick() {\n this.el.nativeElement.blur();\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { SelectionReadOnlyResponse } from './selectionReadOnlyResponse';\n\nexport class CollectionResponse extends BaseResponse {\n id: string;\n organizationId: string;\n name: string;\n externalId: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.name = this.getResponseProperty('Name');\n this.externalId = this.getResponseProperty('ExternalId');\n }\n}\n\nexport class CollectionDetailsResponse extends CollectionResponse {\n readOnly: boolean;\n\n constructor(response: any) {\n super(response);\n this.readOnly = this.getResponseProperty('ReadOnly') || false;\n }\n}\n\nexport class CollectionGroupDetailsResponse extends CollectionResponse {\n groups: SelectionReadOnlyResponse[] = [];\n\n constructor(response: any) {\n super(response);\n const groups = this.getResponseProperty('Groups');\n if (groups != null) {\n this.groups = groups.map((g: any) => new SelectionReadOnlyResponse(g));\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { GlobalDomainResponse } from './globalDomainResponse';\n\nexport class DomainsResponse extends BaseResponse {\n equivalentDomains: string[][];\n globalEquivalentDomains: GlobalDomainResponse[] = [];\n\n constructor(response: any) {\n super(response);\n this.equivalentDomains = this.getResponseProperty('EquivalentDomains');\n const globalEquivalentDomains = this.getResponseProperty('GlobalEquivalentDomains');\n if (globalEquivalentDomains != null) {\n this.globalEquivalentDomains = globalEquivalentDomains.map((d: any) => new GlobalDomainResponse(d));\n } else {\n this.globalEquivalentDomains = [];\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class FolderResponse extends BaseResponse {\n id: string;\n name: string;\n revisionDate: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.name = this.getResponseProperty('Name');\n this.revisionDate = this.getResponseProperty('RevisionDate');\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { PlanResponse } from './planResponse';\n\nimport { PlanType } from '../../enums/planType';\n\nexport class OrganizationResponse extends BaseResponse {\n id: string;\n identifier: string;\n name: string;\n businessName: string;\n businessAddress1: string;\n businessAddress2: string;\n businessAddress3: string;\n businessCountry: string;\n businessTaxNumber: string;\n billingEmail: string;\n plan: PlanResponse;\n planType: PlanType;\n seats: number;\n maxAutoscaleSeats: number;\n maxCollections: number;\n maxStorageGb: number;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n useResetPassword: boolean;\n hasPublicAndPrivateKeys: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.identifier = this.getResponseProperty('Identifier');\n this.name = this.getResponseProperty('Name');\n this.businessName = this.getResponseProperty('BusinessName');\n this.businessAddress1 = this.getResponseProperty('BusinessAddress1');\n this.businessAddress2 = this.getResponseProperty('BusinessAddress2');\n this.businessAddress3 = this.getResponseProperty('BusinessAddress3');\n this.businessCountry = this.getResponseProperty('BusinessCountry');\n this.businessTaxNumber = this.getResponseProperty('BusinessTaxNumber');\n this.billingEmail = this.getResponseProperty('BillingEmail');\n const plan = this.getResponseProperty('Plan');\n this.plan = plan == null ? null : new PlanResponse(plan);\n this.planType = this.getResponseProperty('PlanType');\n this.seats = this.getResponseProperty('Seats');\n this.maxAutoscaleSeats = this.getResponseProperty('MaxAutoscaleSeats');\n this.maxCollections = this.getResponseProperty('MaxCollections');\n this.maxStorageGb = this.getResponseProperty('MaxStorageGb');\n this.useGroups = this.getResponseProperty('UseGroups');\n this.useDirectory = this.getResponseProperty('UseDirectory');\n this.useEvents = this.getResponseProperty('UseEvents');\n this.useTotp = this.getResponseProperty('UseTotp');\n this.use2fa = this.getResponseProperty('Use2fa');\n this.useApi = this.getResponseProperty('UseApi');\n this.useResetPassword = this.getResponseProperty('UseResetPassword');\n this.hasPublicAndPrivateKeys = this.getResponseProperty('HasPublicAndPrivateKeys');\n }\n}\n","import { PlanType } from '../../enums/planType';\nimport { ProductType } from '../../enums/productType';\n\nimport { BaseResponse } from './baseResponse';\n\nexport class PlanResponse extends BaseResponse {\n type: PlanType;\n product: ProductType;\n name: string;\n isAnnual: boolean;\n nameLocalizationKey: string;\n descriptionLocalizationKey: string;\n canBeUsedByBusiness: boolean;\n baseSeats: number;\n baseStorageGb: number;\n maxCollections: number;\n maxUsers: number;\n\n hasAdditionalSeatsOption: boolean;\n maxAdditionalSeats: number;\n hasAdditionalStorageOption: boolean;\n maxAdditionalStorage: number;\n hasPremiumAccessOption: boolean;\n trialPeriodDays: number;\n\n hasSelfHost: boolean;\n hasPolicies: boolean;\n hasGroups: boolean;\n hasDirectory: boolean;\n hasEvents: boolean;\n hasTotp: boolean;\n has2fa: boolean;\n hasApi: boolean;\n hasSso: boolean;\n hasResetPassword: boolean;\n usersGetPremium: boolean;\n\n upgradeSortOrder: number;\n displaySortOrder: number;\n legacyYear: number;\n disabled: boolean;\n\n stripePlanId: string;\n stripeSeatPlanId: string;\n stripeStoragePlanId: string;\n stripePremiumAccessPlanId: string;\n basePrice: number;\n seatPrice: number;\n additionalStoragePricePerGb: number;\n premiumAccessOptionPrice: number;\n\n constructor(response: any) {\n super(response);\n this.type = this.getResponseProperty('Type');\n this.product = this.getResponseProperty('Product');\n this.name = this.getResponseProperty('Name');\n this.isAnnual = this.getResponseProperty('IsAnnual');\n this.nameLocalizationKey = this.getResponseProperty('NameLocalizationKey');\n this.descriptionLocalizationKey = this.getResponseProperty('DescriptionLocalizationKey');\n this.canBeUsedByBusiness = this.getResponseProperty('CanBeUsedByBusiness');\n this.baseSeats = this.getResponseProperty('BaseSeats');\n this.baseStorageGb = this.getResponseProperty('BaseStorageGb');\n this.maxCollections = this.getResponseProperty('MaxCollections');\n this.maxUsers = this.getResponseProperty('MaxUsers');\n this.hasAdditionalSeatsOption = this.getResponseProperty('HasAdditionalSeatsOption');\n this.maxAdditionalSeats = this.getResponseProperty('MaxAdditionalSeats');\n this.hasAdditionalStorageOption = this.getResponseProperty('HasAdditionalStorageOption');\n this.maxAdditionalStorage = this.getResponseProperty('MaxAdditionalStorage');\n this.hasPremiumAccessOption = this.getResponseProperty('HasPremiumAccessOption');\n this.trialPeriodDays = this.getResponseProperty('TrialPeriodDays');\n this.hasSelfHost = this.getResponseProperty('HasSelfHost');\n this.hasPolicies = this.getResponseProperty('HasPolicies');\n this.hasGroups = this.getResponseProperty('HasGroups');\n this.hasDirectory = this.getResponseProperty('HasDirectory');\n this.hasEvents = this.getResponseProperty('HasEvents');\n this.hasTotp = this.getResponseProperty('HasTotp');\n this.has2fa = this.getResponseProperty('Has2fa');\n this.hasApi = this.getResponseProperty('HasApi');\n this.hasSso = this.getResponseProperty('HasSso');\n this.hasResetPassword = this.getResponseProperty('HasResetPassword');\n this.usersGetPremium = this.getResponseProperty('UsersGetPremium');\n this.upgradeSortOrder = this.getResponseProperty('UpgradeSortOrder');\n this.displaySortOrder = this.getResponseProperty('SortOrder');\n this.legacyYear = this.getResponseProperty('LegacyYear');\n this.disabled = this.getResponseProperty('Disabled');\n this.stripePlanId = this.getResponseProperty('StripePlanId');\n this.stripeSeatPlanId = this.getResponseProperty('StripeSeatPlanId');\n this.stripeStoragePlanId = this.getResponseProperty('StripeStoragePlanId');\n this.stripePremiumAccessPlanId = this.getResponseProperty('StripePremiumAccessPlanId');\n this.basePrice = this.getResponseProperty('BasePrice');\n this.seatPrice = this.getResponseProperty('SeatPrice');\n this.additionalStoragePricePerGb = this.getResponseProperty('AdditionalStoragePricePerGb');\n this.premiumAccessOptionPrice = this.getResponseProperty('PremiumAccessOptionPrice');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class SubscriptionResponse extends BaseResponse {\n storageName: string;\n storageGb: number;\n maxStorageGb: number;\n subscription: BillingSubscriptionResponse;\n upcomingInvoice: BillingSubscriptionUpcomingInvoiceResponse;\n license: any;\n expiration: string;\n usingInAppPurchase: boolean;\n\n constructor(response: any) {\n super(response);\n this.storageName = this.getResponseProperty('StorageName');\n this.storageGb = this.getResponseProperty('StorageGb');\n this.maxStorageGb = this.getResponseProperty('MaxStorageGb');\n this.license = this.getResponseProperty('License');\n this.expiration = this.getResponseProperty('Expiration');\n this.usingInAppPurchase = this.getResponseProperty('UsingInAppPurchase');\n const subscription = this.getResponseProperty('Subscription');\n const upcomingInvoice = this.getResponseProperty('UpcomingInvoice');\n this.subscription = subscription == null ? null : new BillingSubscriptionResponse(subscription);\n this.upcomingInvoice = upcomingInvoice == null ? null :\n new BillingSubscriptionUpcomingInvoiceResponse(upcomingInvoice);\n }\n}\n\nexport class BillingSubscriptionResponse extends BaseResponse {\n trialStartDate: string;\n trialEndDate: string;\n periodStartDate: string;\n periodEndDate: string;\n cancelledDate: string;\n cancelAtEndDate: boolean;\n status: string;\n cancelled: boolean;\n items: BillingSubscriptionItemResponse[] = [];\n\n constructor(response: any) {\n super(response);\n this.trialEndDate = this.getResponseProperty('TrialStartDate');\n this.trialEndDate = this.getResponseProperty('TrialEndDate');\n this.periodStartDate = this.getResponseProperty('PeriodStartDate');\n this.periodEndDate = this.getResponseProperty('PeriodEndDate');\n this.cancelledDate = this.getResponseProperty('CancelledDate');\n this.cancelAtEndDate = this.getResponseProperty('CancelAtEndDate');\n this.status = this.getResponseProperty('Status');\n this.cancelled = this.getResponseProperty('Cancelled');\n const items = this.getResponseProperty('Items');\n if (items != null) {\n this.items = items.map((i: any) => new BillingSubscriptionItemResponse(i));\n }\n }\n}\n\nexport class BillingSubscriptionItemResponse extends BaseResponse {\n name: string;\n amount: number;\n quantity: number;\n interval: string;\n sponsoredSubscriptionItem: boolean;\n\n constructor(response: any) {\n super(response);\n this.name = this.getResponseProperty('Name');\n this.amount = this.getResponseProperty('Amount');\n this.quantity = this.getResponseProperty('Quantity');\n this.interval = this.getResponseProperty('Interval');\n this.sponsoredSubscriptionItem = this.getResponseProperty('SponsoredSubscriptionItem');\n }\n}\n\nexport class BillingSubscriptionUpcomingInvoiceResponse extends BaseResponse {\n date: string;\n amount: number;\n\n constructor(response: any) {\n super(response);\n this.date = this.getResponseProperty('Date');\n this.amount = this.getResponseProperty('Amount');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class OrganizationUserBulkPublicKeyResponse extends BaseResponse {\n id: string;\n userId: string;\n key: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.userId = this.getResponseProperty('UserId');\n this.key = this.getResponseProperty('Key');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { OrganizationUserStatusType } from '../../enums/organizationUserStatusType';\nimport { OrganizationUserType } from '../../enums/organizationUserType';\nimport { ProductType } from '../../enums/productType';\nimport { PermissionsApi } from '../api/permissionsApi';\n\nexport class ProfileOrganizationResponse extends BaseResponse {\n id: string;\n name: string;\n usePolicies: boolean;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n useSso: boolean;\n useKeyConnector: boolean;\n useResetPassword: boolean;\n selfHost: boolean;\n usersGetPremium: boolean;\n seats: number;\n maxCollections: number;\n maxStorageGb?: number;\n key: string;\n hasPublicAndPrivateKeys: boolean;\n status: OrganizationUserStatusType;\n type: OrganizationUserType;\n enabled: boolean;\n ssoBound: boolean;\n identifier: string;\n permissions: PermissionsApi;\n resetPasswordEnrolled: boolean;\n userId: string;\n providerId: string;\n providerName: string;\n familySponsorshipFriendlyName: string;\n familySponsorshipAvailable: boolean;\n planProductType: ProductType;\n keyConnectorEnabled: boolean;\n keyConnectorUrl: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.name = this.getResponseProperty('Name');\n this.usePolicies = this.getResponseProperty('UsePolicies');\n this.useGroups = this.getResponseProperty('UseGroups');\n this.useDirectory = this.getResponseProperty('UseDirectory');\n this.useEvents = this.getResponseProperty('UseEvents');\n this.useTotp = this.getResponseProperty('UseTotp');\n this.use2fa = this.getResponseProperty('Use2fa');\n this.useApi = this.getResponseProperty('UseApi');\n this.useSso = this.getResponseProperty('UseSso');\n this.useKeyConnector = this.getResponseProperty('UseKeyConnector') ?? false;\n this.useResetPassword = this.getResponseProperty('UseResetPassword');\n this.selfHost = this.getResponseProperty('SelfHost');\n this.usersGetPremium = this.getResponseProperty('UsersGetPremium');\n this.seats = this.getResponseProperty('Seats');\n this.maxCollections = this.getResponseProperty('MaxCollections');\n this.maxStorageGb = this.getResponseProperty('MaxStorageGb');\n this.key = this.getResponseProperty('Key');\n this.hasPublicAndPrivateKeys = this.getResponseProperty('HasPublicAndPrivateKeys');\n this.status = this.getResponseProperty('Status');\n this.type = this.getResponseProperty('Type');\n this.enabled = this.getResponseProperty('Enabled');\n this.ssoBound = this.getResponseProperty('SsoBound');\n this.identifier = this.getResponseProperty('Identifier');\n this.permissions = new PermissionsApi(this.getResponseProperty('permissions'));\n this.resetPasswordEnrolled = this.getResponseProperty('ResetPasswordEnrolled');\n this.userId = this.getResponseProperty('UserId');\n this.providerId = this.getResponseProperty('ProviderId');\n this.providerName = this.getResponseProperty('ProviderName');\n this.familySponsorshipFriendlyName = this.getResponseProperty('FamilySponsorshipFriendlyName');\n this.familySponsorshipAvailable = this.getResponseProperty('FamilySponsorshipAvailable');\n this.planProductType = this.getResponseProperty('PlanProductType');\n this.keyConnectorEnabled = this.getResponseProperty('KeyConnectorEnabled') ?? false;\n this.keyConnectorUrl = this.getResponseProperty('KeyConnectorUrl');\n }\n}\n","import { Utils } from '../../misc/utils';\nimport { BaseResponse } from './baseResponse';\n\nexport class TwoFactorWebAuthnResponse extends BaseResponse {\n enabled: boolean;\n keys: KeyResponse[];\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n const keys = this.getResponseProperty('Keys');\n this.keys = keys == null ? null : keys.map((k: any) => new KeyResponse(k));\n }\n}\n\nexport class KeyResponse extends BaseResponse {\n name: string;\n id: number;\n migrated: boolean;\n\n constructor(response: any) {\n super(response);\n this.name = this.getResponseProperty('Name');\n this.id = this.getResponseProperty('Id');\n this.migrated = this.getResponseProperty('Migrated');\n }\n}\n\nexport class ChallengeResponse extends BaseResponse implements PublicKeyCredentialCreationOptions {\n attestation?: AttestationConveyancePreference;\n authenticatorSelection?: AuthenticatorSelectionCriteria;\n challenge: BufferSource;\n excludeCredentials?: PublicKeyCredentialDescriptor[];\n extensions?: AuthenticationExtensionsClientInputs;\n pubKeyCredParams: PublicKeyCredentialParameters[];\n rp: PublicKeyCredentialRpEntity;\n timeout?: number;\n user: PublicKeyCredentialUserEntity;\n\n constructor(response: any) {\n super(response);\n this.attestation = this.getResponseProperty('attestation');\n this.authenticatorSelection = this.getResponseProperty('authenticatorSelection');\n this.challenge = Utils.fromUrlB64ToArray(this.getResponseProperty('challenge'));\n this.excludeCredentials = this.getResponseProperty('excludeCredentials').map((c: any) => {\n c.id = Utils.fromUrlB64ToArray(c.id).buffer;\n return c;\n });\n this.extensions = this.getResponseProperty('extensions');\n this.pubKeyCredParams = this.getResponseProperty('pubKeyCredParams');\n this.rp = this.getResponseProperty('rp');\n this.timeout = this.getResponseProperty('timeout');\n\n const user = this.getResponseProperty('user');\n user.id = Utils.fromUrlB64ToArray(user.id);\n\n this.user = user;\n }\n}\n","/**\n * Use as a Decorator on async functions, it will prevent multiple 'active' calls as the same time\n *\n * If a promise was returned from a previous call to this function, that hasn't yet resolved it will\n * be returned, instead of calling the original function again\n *\n * Results are not cached, once the promise has returned, the next call will result in a fresh call\n *\n * Read more at https://github.com/bitwarden/jslib/pull/7\n */\nexport function sequentialize(cacheKey: (args: any[]) => string) {\n return (target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {\n const originalMethod: () => Promise = descriptor.value;\n const caches = new Map>>();\n\n const getCache = (obj: any) => {\n let cache = caches.get(obj);\n if (cache != null) {\n return cache;\n }\n cache = new Map>();\n caches.set(obj, cache);\n return cache;\n };\n\n return {\n value: function(...args: any[]) {\n const cache = getCache(this);\n const argsCacheKey = cacheKey(args);\n let response = cache.get(argsCacheKey);\n if (response != null) {\n return response;\n }\n\n const onFinally = () => {\n cache.delete(argsCacheKey);\n if (cache.size === 0) {\n caches.delete(this);\n }\n };\n response = originalMethod.apply(this, args).then((val: any) => {\n onFinally();\n return val;\n }).catch((err: any) => {\n onFinally();\n throw err;\n });\n\n cache.set(argsCacheKey, response);\n return response;\n },\n };\n };\n}\n","import {\n ITreeNodeObject,\n TreeNode,\n} from '../models/domain/treeNode';\n\nexport class ServiceUtils {\n static nestedTraverse(nodeTree: TreeNode[], partIndex: number, parts: string[],\n obj: ITreeNodeObject, parent: ITreeNodeObject, delimiter: string) {\n if (parts.length <= partIndex) {\n return;\n }\n\n const end = partIndex === parts.length - 1;\n const partName = parts[partIndex];\n\n for (let i = 0; i < nodeTree.length; i++) {\n if (nodeTree[i].node.name !== parts[partIndex]) {\n continue;\n }\n if (end && nodeTree[i].node.id !== obj.id) {\n // Another node with the same name.\n nodeTree.push(new TreeNode(obj, partName, parent));\n return;\n }\n ServiceUtils.nestedTraverse(nodeTree[i].children, partIndex + 1, parts,\n obj, nodeTree[i].node, delimiter);\n return;\n }\n\n if (nodeTree.filter(n => n.node.name === partName).length === 0) {\n if (end) {\n nodeTree.push(new TreeNode(obj, partName, parent));\n return;\n }\n const newPartName = parts[partIndex] + delimiter + parts[partIndex + 1];\n ServiceUtils.nestedTraverse(nodeTree, 0, [newPartName, ...parts.slice(partIndex + 2)],\n obj, parent, delimiter);\n }\n }\n\n static getTreeNodeObject(nodeTree: TreeNode[], id: string): TreeNode {\n for (let i = 0; i < nodeTree.length; i++) {\n if (nodeTree[i].node.id === id) {\n return nodeTree[i];\n } else if (nodeTree[i].children != null) {\n const node = ServiceUtils.getTreeNodeObject(nodeTree[i].children, id);\n if (node !== null) {\n return node;\n }\n }\n }\n return null;\n }\n}\n","import { LogLevelType } from '../enums/logLevelType';\n\nimport { LogService as LogServiceAbstraction } from '../abstractions/log.service';\n\nimport * as hrtime from 'browser-hrtime';\n\nexport class ConsoleLogService implements LogServiceAbstraction {\n protected timersMap: Map = new Map();\n\n constructor(protected isDev: boolean, protected filter: (level: LogLevelType) => boolean = null) { }\n\n debug(message: string) {\n if (!this.isDev) {\n return;\n }\n this.write(LogLevelType.Debug, message);\n }\n\n info(message: string) {\n this.write(LogLevelType.Info, message);\n }\n\n warning(message: string) {\n this.write(LogLevelType.Warning, message);\n }\n\n error(message: string) {\n this.write(LogLevelType.Error, message);\n }\n\n write(level: LogLevelType, message: string) {\n if (this.filter != null && this.filter(level)) {\n return;\n }\n\n switch (level) {\n case LogLevelType.Debug:\n // tslint:disable-next-line\n console.log(message);\n break;\n case LogLevelType.Info:\n // tslint:disable-next-line\n console.log(message);\n break;\n case LogLevelType.Warning:\n // tslint:disable-next-line\n console.warn(message);\n break;\n case LogLevelType.Error:\n // tslint:disable-next-line\n console.error(message);\n break;\n default:\n break;\n }\n }\n\n time(label: string = 'default') {\n if (!this.timersMap.has(label)) {\n this.timersMap.set(label, hrtime());\n }\n }\n\n timeEnd(label: string = 'default'): [number, number] {\n const elapsed = hrtime(this.timersMap.get(label));\n this.timersMap.delete(label);\n this.write(LogLevelType.Info, `${label}: ${elapsed[0] * 1000 + elapsed[1] / 10e6}ms`);\n return elapsed;\n }\n}\n","// EFF's Long Wordlist from https://www.eff.org/dice\nexport const EEFLongWordList = [\n 'abacus',\n 'abdomen',\n 'abdominal',\n 'abide',\n 'abiding',\n 'ability',\n 'ablaze',\n 'able',\n 'abnormal',\n 'abrasion',\n 'abrasive',\n 'abreast',\n 'abridge',\n 'abroad',\n 'abruptly',\n 'absence',\n 'absentee',\n 'absently',\n 'absinthe',\n 'absolute',\n 'absolve',\n 'abstain',\n 'abstract',\n 'absurd',\n 'accent',\n 'acclaim',\n 'acclimate',\n 'accompany',\n 'account',\n 'accuracy',\n 'accurate',\n 'accustom',\n 'acetone',\n 'achiness',\n 'aching',\n 'acid',\n 'acorn',\n 'acquaint',\n 'acquire',\n 'acre',\n 'acrobat',\n 'acronym',\n 'acting',\n 'action',\n 'activate',\n 'activator',\n 'active',\n 'activism',\n 'activist',\n 'activity',\n 'actress',\n 'acts',\n 'acutely',\n 'acuteness',\n 'aeration',\n 'aerobics',\n 'aerosol',\n 'aerospace',\n 'afar',\n 'affair',\n 'affected',\n 'affecting',\n 'affection',\n 'affidavit',\n 'affiliate',\n 'affirm',\n 'affix',\n 'afflicted',\n 'affluent',\n 'afford',\n 'affront',\n 'aflame',\n 'afloat',\n 'aflutter',\n 'afoot',\n 'afraid',\n 'afterglow',\n 'afterlife',\n 'aftermath',\n 'aftermost',\n 'afternoon',\n 'aged',\n 'ageless',\n 'agency',\n 'agenda',\n 'agent',\n 'aggregate',\n 'aghast',\n 'agile',\n 'agility',\n 'aging',\n 'agnostic',\n 'agonize',\n 'agonizing',\n 'agony',\n 'agreeable',\n 'agreeably',\n 'agreed',\n 'agreeing',\n 'agreement',\n 'aground',\n 'ahead',\n 'ahoy',\n 'aide',\n 'aids',\n 'aim',\n 'ajar',\n 'alabaster',\n 'alarm',\n 'albatross',\n 'album',\n 'alfalfa',\n 'algebra',\n 'algorithm',\n 'alias',\n 'alibi',\n 'alienable',\n 'alienate',\n 'aliens',\n 'alike',\n 'alive',\n 'alkaline',\n 'alkalize',\n 'almanac',\n 'almighty',\n 'almost',\n 'aloe',\n 'aloft',\n 'aloha',\n 'alone',\n 'alongside',\n 'aloof',\n 'alphabet',\n 'alright',\n 'although',\n 'altitude',\n 'alto',\n 'aluminum',\n 'alumni',\n 'always',\n 'amaretto',\n 'amaze',\n 'amazingly',\n 'amber',\n 'ambiance',\n 'ambiguity',\n 'ambiguous',\n 'ambition',\n 'ambitious',\n 'ambulance',\n 'ambush',\n 'amendable',\n 'amendment',\n 'amends',\n 'amenity',\n 'amiable',\n 'amicably',\n 'amid',\n 'amigo',\n 'amino',\n 'amiss',\n 'ammonia',\n 'ammonium',\n 'amnesty',\n 'amniotic',\n 'among',\n 'amount',\n 'amperage',\n 'ample',\n 'amplifier',\n 'amplify',\n 'amply',\n 'amuck',\n 'amulet',\n 'amusable',\n 'amused',\n 'amusement',\n 'amuser',\n 'amusing',\n 'anaconda',\n 'anaerobic',\n 'anagram',\n 'anatomist',\n 'anatomy',\n 'anchor',\n 'anchovy',\n 'ancient',\n 'android',\n 'anemia',\n 'anemic',\n 'aneurism',\n 'anew',\n 'angelfish',\n 'angelic',\n 'anger',\n 'angled',\n 'angler',\n 'angles',\n 'angling',\n 'angrily',\n 'angriness',\n 'anguished',\n 'angular',\n 'animal',\n 'animate',\n 'animating',\n 'animation',\n 'animator',\n 'anime',\n 'animosity',\n 'ankle',\n 'annex',\n 'annotate',\n 'announcer',\n 'annoying',\n 'annually',\n 'annuity',\n 'anointer',\n 'another',\n 'answering',\n 'antacid',\n 'antarctic',\n 'anteater',\n 'antelope',\n 'antennae',\n 'anthem',\n 'anthill',\n 'anthology',\n 'antibody',\n 'antics',\n 'antidote',\n 'antihero',\n 'antiquely',\n 'antiques',\n 'antiquity',\n 'antirust',\n 'antitoxic',\n 'antitrust',\n 'antiviral',\n 'antivirus',\n 'antler',\n 'antonym',\n 'antsy',\n 'anvil',\n 'anybody',\n 'anyhow',\n 'anymore',\n 'anyone',\n 'anyplace',\n 'anything',\n 'anytime',\n 'anyway',\n 'anywhere',\n 'aorta',\n 'apache',\n 'apostle',\n 'appealing',\n 'appear',\n 'appease',\n 'appeasing',\n 'appendage',\n 'appendix',\n 'appetite',\n 'appetizer',\n 'applaud',\n 'applause',\n 'apple',\n 'appliance',\n 'applicant',\n 'applied',\n 'apply',\n 'appointee',\n 'appraisal',\n 'appraiser',\n 'apprehend',\n 'approach',\n 'approval',\n 'approve',\n 'apricot',\n 'april',\n 'apron',\n 'aptitude',\n 'aptly',\n 'aqua',\n 'aqueduct',\n 'arbitrary',\n 'arbitrate',\n 'ardently',\n 'area',\n 'arena',\n 'arguable',\n 'arguably',\n 'argue',\n 'arise',\n 'armadillo',\n 'armband',\n 'armchair',\n 'armed',\n 'armful',\n 'armhole',\n 'arming',\n 'armless',\n 'armoire',\n 'armored',\n 'armory',\n 'armrest',\n 'army',\n 'aroma',\n 'arose',\n 'around',\n 'arousal',\n 'arrange',\n 'array',\n 'arrest',\n 'arrival',\n 'arrive',\n 'arrogance',\n 'arrogant',\n 'arson',\n 'art',\n 'ascend',\n 'ascension',\n 'ascent',\n 'ascertain',\n 'ashamed',\n 'ashen',\n 'ashes',\n 'ashy',\n 'aside',\n 'askew',\n 'asleep',\n 'asparagus',\n 'aspect',\n 'aspirate',\n 'aspire',\n 'aspirin',\n 'astonish',\n 'astound',\n 'astride',\n 'astrology',\n 'astronaut',\n 'astronomy',\n 'astute',\n 'atlantic',\n 'atlas',\n 'atom',\n 'atonable',\n 'atop',\n 'atrium',\n 'atrocious',\n 'atrophy',\n 'attach',\n 'attain',\n 'attempt',\n 'attendant',\n 'attendee',\n 'attention',\n 'attentive',\n 'attest',\n 'attic',\n 'attire',\n 'attitude',\n 'attractor',\n 'attribute',\n 'atypical',\n 'auction',\n 'audacious',\n 'audacity',\n 'audible',\n 'audibly',\n 'audience',\n 'audio',\n 'audition',\n 'augmented',\n 'august',\n 'authentic',\n 'author',\n 'autism',\n 'autistic',\n 'autograph',\n 'automaker',\n 'automated',\n 'automatic',\n 'autopilot',\n 'available',\n 'avalanche',\n 'avatar',\n 'avenge',\n 'avenging',\n 'avenue',\n 'average',\n 'aversion',\n 'avert',\n 'aviation',\n 'aviator',\n 'avid',\n 'avoid',\n 'await',\n 'awaken',\n 'award',\n 'aware',\n 'awhile',\n 'awkward',\n 'awning',\n 'awoke',\n 'awry',\n 'axis',\n 'babble',\n 'babbling',\n 'babied',\n 'baboon',\n 'backache',\n 'backboard',\n 'backboned',\n 'backdrop',\n 'backed',\n 'backer',\n 'backfield',\n 'backfire',\n 'backhand',\n 'backing',\n 'backlands',\n 'backlash',\n 'backless',\n 'backlight',\n 'backlit',\n 'backlog',\n 'backpack',\n 'backpedal',\n 'backrest',\n 'backroom',\n 'backshift',\n 'backside',\n 'backslid',\n 'backspace',\n 'backspin',\n 'backstab',\n 'backstage',\n 'backtalk',\n 'backtrack',\n 'backup',\n 'backward',\n 'backwash',\n 'backwater',\n 'backyard',\n 'bacon',\n 'bacteria',\n 'bacterium',\n 'badass',\n 'badge',\n 'badland',\n 'badly',\n 'badness',\n 'baffle',\n 'baffling',\n 'bagel',\n 'bagful',\n 'baggage',\n 'bagged',\n 'baggie',\n 'bagginess',\n 'bagging',\n 'baggy',\n 'bagpipe',\n 'baguette',\n 'baked',\n 'bakery',\n 'bakeshop',\n 'baking',\n 'balance',\n 'balancing',\n 'balcony',\n 'balmy',\n 'balsamic',\n 'bamboo',\n 'banana',\n 'banish',\n 'banister',\n 'banjo',\n 'bankable',\n 'bankbook',\n 'banked',\n 'banker',\n 'banking',\n 'banknote',\n 'bankroll',\n 'banner',\n 'bannister',\n 'banshee',\n 'banter',\n 'barbecue',\n 'barbed',\n 'barbell',\n 'barber',\n 'barcode',\n 'barge',\n 'bargraph',\n 'barista',\n 'baritone',\n 'barley',\n 'barmaid',\n 'barman',\n 'barn',\n 'barometer',\n 'barrack',\n 'barracuda',\n 'barrel',\n 'barrette',\n 'barricade',\n 'barrier',\n 'barstool',\n 'bartender',\n 'barterer',\n 'bash',\n 'basically',\n 'basics',\n 'basil',\n 'basin',\n 'basis',\n 'basket',\n 'batboy',\n 'batch',\n 'bath',\n 'baton',\n 'bats',\n 'battalion',\n 'battered',\n 'battering',\n 'battery',\n 'batting',\n 'battle',\n 'bauble',\n 'bazooka',\n 'blabber',\n 'bladder',\n 'blade',\n 'blah',\n 'blame',\n 'blaming',\n 'blanching',\n 'blandness',\n 'blank',\n 'blaspheme',\n 'blasphemy',\n 'blast',\n 'blatancy',\n 'blatantly',\n 'blazer',\n 'blazing',\n 'bleach',\n 'bleak',\n 'bleep',\n 'blemish',\n 'blend',\n 'bless',\n 'blighted',\n 'blimp',\n 'bling',\n 'blinked',\n 'blinker',\n 'blinking',\n 'blinks',\n 'blip',\n 'blissful',\n 'blitz',\n 'blizzard',\n 'bloated',\n 'bloating',\n 'blob',\n 'blog',\n 'bloomers',\n 'blooming',\n 'blooper',\n 'blot',\n 'blouse',\n 'blubber',\n 'bluff',\n 'bluish',\n 'blunderer',\n 'blunt',\n 'blurb',\n 'blurred',\n 'blurry',\n 'blurt',\n 'blush',\n 'blustery',\n 'boaster',\n 'boastful',\n 'boasting',\n 'boat',\n 'bobbed',\n 'bobbing',\n 'bobble',\n 'bobcat',\n 'bobsled',\n 'bobtail',\n 'bodacious',\n 'body',\n 'bogged',\n 'boggle',\n 'bogus',\n 'boil',\n 'bok',\n 'bolster',\n 'bolt',\n 'bonanza',\n 'bonded',\n 'bonding',\n 'bondless',\n 'boned',\n 'bonehead',\n 'boneless',\n 'bonelike',\n 'boney',\n 'bonfire',\n 'bonnet',\n 'bonsai',\n 'bonus',\n 'bony',\n 'boogeyman',\n 'boogieman',\n 'book',\n 'boondocks',\n 'booted',\n 'booth',\n 'bootie',\n 'booting',\n 'bootlace',\n 'bootleg',\n 'boots',\n 'boozy',\n 'borax',\n 'boring',\n 'borough',\n 'borrower',\n 'borrowing',\n 'boss',\n 'botanical',\n 'botanist',\n 'botany',\n 'botch',\n 'both',\n 'bottle',\n 'bottling',\n 'bottom',\n 'bounce',\n 'bouncing',\n 'bouncy',\n 'bounding',\n 'boundless',\n 'bountiful',\n 'bovine',\n 'boxcar',\n 'boxer',\n 'boxing',\n 'boxlike',\n 'boxy',\n 'breach',\n 'breath',\n 'breeches',\n 'breeching',\n 'breeder',\n 'breeding',\n 'breeze',\n 'breezy',\n 'brethren',\n 'brewery',\n 'brewing',\n 'briar',\n 'bribe',\n 'brick',\n 'bride',\n 'bridged',\n 'brigade',\n 'bright',\n 'brilliant',\n 'brim',\n 'bring',\n 'brink',\n 'brisket',\n 'briskly',\n 'briskness',\n 'bristle',\n 'brittle',\n 'broadband',\n 'broadcast',\n 'broaden',\n 'broadly',\n 'broadness',\n 'broadside',\n 'broadways',\n 'broiler',\n 'broiling',\n 'broken',\n 'broker',\n 'bronchial',\n 'bronco',\n 'bronze',\n 'bronzing',\n 'brook',\n 'broom',\n 'brought',\n 'browbeat',\n 'brownnose',\n 'browse',\n 'browsing',\n 'bruising',\n 'brunch',\n 'brunette',\n 'brunt',\n 'brush',\n 'brussels',\n 'brute',\n 'brutishly',\n 'bubble',\n 'bubbling',\n 'bubbly',\n 'buccaneer',\n 'bucked',\n 'bucket',\n 'buckle',\n 'buckshot',\n 'buckskin',\n 'bucktooth',\n 'buckwheat',\n 'buddhism',\n 'buddhist',\n 'budding',\n 'buddy',\n 'budget',\n 'buffalo',\n 'buffed',\n 'buffer',\n 'buffing',\n 'buffoon',\n 'buggy',\n 'bulb',\n 'bulge',\n 'bulginess',\n 'bulgur',\n 'bulk',\n 'bulldog',\n 'bulldozer',\n 'bullfight',\n 'bullfrog',\n 'bullhorn',\n 'bullion',\n 'bullish',\n 'bullpen',\n 'bullring',\n 'bullseye',\n 'bullwhip',\n 'bully',\n 'bunch',\n 'bundle',\n 'bungee',\n 'bunion',\n 'bunkbed',\n 'bunkhouse',\n 'bunkmate',\n 'bunny',\n 'bunt',\n 'busboy',\n 'bush',\n 'busily',\n 'busload',\n 'bust',\n 'busybody',\n 'buzz',\n 'cabana',\n 'cabbage',\n 'cabbie',\n 'cabdriver',\n 'cable',\n 'caboose',\n 'cache',\n 'cackle',\n 'cacti',\n 'cactus',\n 'caddie',\n 'caddy',\n 'cadet',\n 'cadillac',\n 'cadmium',\n 'cage',\n 'cahoots',\n 'cake',\n 'calamari',\n 'calamity',\n 'calcium',\n 'calculate',\n 'calculus',\n 'caliber',\n 'calibrate',\n 'calm',\n 'caloric',\n 'calorie',\n 'calzone',\n 'camcorder',\n 'cameo',\n 'camera',\n 'camisole',\n 'camper',\n 'campfire',\n 'camping',\n 'campsite',\n 'campus',\n 'canal',\n 'canary',\n 'cancel',\n 'candied',\n 'candle',\n 'candy',\n 'cane',\n 'canine',\n 'canister',\n 'cannabis',\n 'canned',\n 'canning',\n 'cannon',\n 'cannot',\n 'canola',\n 'canon',\n 'canopener',\n 'canopy',\n 'canteen',\n 'canyon',\n 'capable',\n 'capably',\n 'capacity',\n 'cape',\n 'capillary',\n 'capital',\n 'capitol',\n 'capped',\n 'capricorn',\n 'capsize',\n 'capsule',\n 'caption',\n 'captivate',\n 'captive',\n 'captivity',\n 'capture',\n 'caramel',\n 'carat',\n 'caravan',\n 'carbon',\n 'cardboard',\n 'carded',\n 'cardiac',\n 'cardigan',\n 'cardinal',\n 'cardstock',\n 'carefully',\n 'caregiver',\n 'careless',\n 'caress',\n 'caretaker',\n 'cargo',\n 'caring',\n 'carless',\n 'carload',\n 'carmaker',\n 'carnage',\n 'carnation',\n 'carnival',\n 'carnivore',\n 'carol',\n 'carpenter',\n 'carpentry',\n 'carpool',\n 'carport',\n 'carried',\n 'carrot',\n 'carrousel',\n 'carry',\n 'cartel',\n 'cartload',\n 'carton',\n 'cartoon',\n 'cartridge',\n 'cartwheel',\n 'carve',\n 'carving',\n 'carwash',\n 'cascade',\n 'case',\n 'cash',\n 'casing',\n 'casino',\n 'casket',\n 'cassette',\n 'casually',\n 'casualty',\n 'catacomb',\n 'catalog',\n 'catalyst',\n 'catalyze',\n 'catapult',\n 'cataract',\n 'catatonic',\n 'catcall',\n 'catchable',\n 'catcher',\n 'catching',\n 'catchy',\n 'caterer',\n 'catering',\n 'catfight',\n 'catfish',\n 'cathedral',\n 'cathouse',\n 'catlike',\n 'catnap',\n 'catnip',\n 'catsup',\n 'cattail',\n 'cattishly',\n 'cattle',\n 'catty',\n 'catwalk',\n 'caucasian',\n 'caucus',\n 'causal',\n 'causation',\n 'cause',\n 'causing',\n 'cauterize',\n 'caution',\n 'cautious',\n 'cavalier',\n 'cavalry',\n 'caviar',\n 'cavity',\n 'cedar',\n 'celery',\n 'celestial',\n 'celibacy',\n 'celibate',\n 'celtic',\n 'cement',\n 'census',\n 'ceramics',\n 'ceremony',\n 'certainly',\n 'certainty',\n 'certified',\n 'certify',\n 'cesarean',\n 'cesspool',\n 'chafe',\n 'chaffing',\n 'chain',\n 'chair',\n 'chalice',\n 'challenge',\n 'chamber',\n 'chamomile',\n 'champion',\n 'chance',\n 'change',\n 'channel',\n 'chant',\n 'chaos',\n 'chaperone',\n 'chaplain',\n 'chapped',\n 'chaps',\n 'chapter',\n 'character',\n 'charbroil',\n 'charcoal',\n 'charger',\n 'charging',\n 'chariot',\n 'charity',\n 'charm',\n 'charred',\n 'charter',\n 'charting',\n 'chase',\n 'chasing',\n 'chaste',\n 'chastise',\n 'chastity',\n 'chatroom',\n 'chatter',\n 'chatting',\n 'chatty',\n 'cheating',\n 'cheddar',\n 'cheek',\n 'cheer',\n 'cheese',\n 'cheesy',\n 'chef',\n 'chemicals',\n 'chemist',\n 'chemo',\n 'cherisher',\n 'cherub',\n 'chess',\n 'chest',\n 'chevron',\n 'chevy',\n 'chewable',\n 'chewer',\n 'chewing',\n 'chewy',\n 'chief',\n 'chihuahua',\n 'childcare',\n 'childhood',\n 'childish',\n 'childless',\n 'childlike',\n 'chili',\n 'chill',\n 'chimp',\n 'chip',\n 'chirping',\n 'chirpy',\n 'chitchat',\n 'chivalry',\n 'chive',\n 'chloride',\n 'chlorine',\n 'choice',\n 'chokehold',\n 'choking',\n 'chomp',\n 'chooser',\n 'choosing',\n 'choosy',\n 'chop',\n 'chosen',\n 'chowder',\n 'chowtime',\n 'chrome',\n 'chubby',\n 'chuck',\n 'chug',\n 'chummy',\n 'chump',\n 'chunk',\n 'churn',\n 'chute',\n 'cider',\n 'cilantro',\n 'cinch',\n 'cinema',\n 'cinnamon',\n 'circle',\n 'circling',\n 'circular',\n 'circulate',\n 'circus',\n 'citable',\n 'citadel',\n 'citation',\n 'citizen',\n 'citric',\n 'citrus',\n 'city',\n 'civic',\n 'civil',\n 'clad',\n 'claim',\n 'clambake',\n 'clammy',\n 'clamor',\n 'clamp',\n 'clamshell',\n 'clang',\n 'clanking',\n 'clapped',\n 'clapper',\n 'clapping',\n 'clarify',\n 'clarinet',\n 'clarity',\n 'clash',\n 'clasp',\n 'class',\n 'clatter',\n 'clause',\n 'clavicle',\n 'claw',\n 'clay',\n 'clean',\n 'clear',\n 'cleat',\n 'cleaver',\n 'cleft',\n 'clench',\n 'clergyman',\n 'clerical',\n 'clerk',\n 'clever',\n 'clicker',\n 'client',\n 'climate',\n 'climatic',\n 'cling',\n 'clinic',\n 'clinking',\n 'clip',\n 'clique',\n 'cloak',\n 'clobber',\n 'clock',\n 'clone',\n 'cloning',\n 'closable',\n 'closure',\n 'clothes',\n 'clothing',\n 'cloud',\n 'clover',\n 'clubbed',\n 'clubbing',\n 'clubhouse',\n 'clump',\n 'clumsily',\n 'clumsy',\n 'clunky',\n 'clustered',\n 'clutch',\n 'clutter',\n 'coach',\n 'coagulant',\n 'coastal',\n 'coaster',\n 'coasting',\n 'coastland',\n 'coastline',\n 'coat',\n 'coauthor',\n 'cobalt',\n 'cobbler',\n 'cobweb',\n 'cocoa',\n 'coconut',\n 'cod',\n 'coeditor',\n 'coerce',\n 'coexist',\n 'coffee',\n 'cofounder',\n 'cognition',\n 'cognitive',\n 'cogwheel',\n 'coherence',\n 'coherent',\n 'cohesive',\n 'coil',\n 'coke',\n 'cola',\n 'cold',\n 'coleslaw',\n 'coliseum',\n 'collage',\n 'collapse',\n 'collar',\n 'collected',\n 'collector',\n 'collide',\n 'collie',\n 'collision',\n 'colonial',\n 'colonist',\n 'colonize',\n 'colony',\n 'colossal',\n 'colt',\n 'coma',\n 'come',\n 'comfort',\n 'comfy',\n 'comic',\n 'coming',\n 'comma',\n 'commence',\n 'commend',\n 'comment',\n 'commerce',\n 'commode',\n 'commodity',\n 'commodore',\n 'common',\n 'commotion',\n 'commute',\n 'commuting',\n 'compacted',\n 'compacter',\n 'compactly',\n 'compactor',\n 'companion',\n 'company',\n 'compare',\n 'compel',\n 'compile',\n 'comply',\n 'component',\n 'composed',\n 'composer',\n 'composite',\n 'compost',\n 'composure',\n 'compound',\n 'compress',\n 'comprised',\n 'computer',\n 'computing',\n 'comrade',\n 'concave',\n 'conceal',\n 'conceded',\n 'concept',\n 'concerned',\n 'concert',\n 'conch',\n 'concierge',\n 'concise',\n 'conclude',\n 'concrete',\n 'concur',\n 'condense',\n 'condiment',\n 'condition',\n 'condone',\n 'conducive',\n 'conductor',\n 'conduit',\n 'cone',\n 'confess',\n 'confetti',\n 'confidant',\n 'confident',\n 'confider',\n 'confiding',\n 'configure',\n 'confined',\n 'confining',\n 'confirm',\n 'conflict',\n 'conform',\n 'confound',\n 'confront',\n 'confused',\n 'confusing',\n 'confusion',\n 'congenial',\n 'congested',\n 'congrats',\n 'congress',\n 'conical',\n 'conjoined',\n 'conjure',\n 'conjuror',\n 'connected',\n 'connector',\n 'consensus',\n 'consent',\n 'console',\n 'consoling',\n 'consonant',\n 'constable',\n 'constant',\n 'constrain',\n 'constrict',\n 'construct',\n 'consult',\n 'consumer',\n 'consuming',\n 'contact',\n 'container',\n 'contempt',\n 'contend',\n 'contented',\n 'contently',\n 'contents',\n 'contest',\n 'context',\n 'contort',\n 'contour',\n 'contrite',\n 'control',\n 'contusion',\n 'convene',\n 'convent',\n 'copartner',\n 'cope',\n 'copied',\n 'copier',\n 'copilot',\n 'coping',\n 'copious',\n 'copper',\n 'copy',\n 'coral',\n 'cork',\n 'cornball',\n 'cornbread',\n 'corncob',\n 'cornea',\n 'corned',\n 'corner',\n 'cornfield',\n 'cornflake',\n 'cornhusk',\n 'cornmeal',\n 'cornstalk',\n 'corny',\n 'coronary',\n 'coroner',\n 'corporal',\n 'corporate',\n 'corral',\n 'correct',\n 'corridor',\n 'corrode',\n 'corroding',\n 'corrosive',\n 'corsage',\n 'corset',\n 'cortex',\n 'cosigner',\n 'cosmetics',\n 'cosmic',\n 'cosmos',\n 'cosponsor',\n 'cost',\n 'cottage',\n 'cotton',\n 'couch',\n 'cough',\n 'could',\n 'countable',\n 'countdown',\n 'counting',\n 'countless',\n 'country',\n 'county',\n 'courier',\n 'covenant',\n 'cover',\n 'coveted',\n 'coveting',\n 'coyness',\n 'cozily',\n 'coziness',\n 'cozy',\n 'crabbing',\n 'crabgrass',\n 'crablike',\n 'crabmeat',\n 'cradle',\n 'cradling',\n 'crafter',\n 'craftily',\n 'craftsman',\n 'craftwork',\n 'crafty',\n 'cramp',\n 'cranberry',\n 'crane',\n 'cranial',\n 'cranium',\n 'crank',\n 'crate',\n 'crave',\n 'craving',\n 'crawfish',\n 'crawlers',\n 'crawling',\n 'crayfish',\n 'crayon',\n 'crazed',\n 'crazily',\n 'craziness',\n 'crazy',\n 'creamed',\n 'creamer',\n 'creamlike',\n 'crease',\n 'creasing',\n 'creatable',\n 'create',\n 'creation',\n 'creative',\n 'creature',\n 'credible',\n 'credibly',\n 'credit',\n 'creed',\n 'creme',\n 'creole',\n 'crepe',\n 'crept',\n 'crescent',\n 'crested',\n 'cresting',\n 'crestless',\n 'crevice',\n 'crewless',\n 'crewman',\n 'crewmate',\n 'crib',\n 'cricket',\n 'cried',\n 'crier',\n 'crimp',\n 'crimson',\n 'cringe',\n 'cringing',\n 'crinkle',\n 'crinkly',\n 'crisped',\n 'crisping',\n 'crisply',\n 'crispness',\n 'crispy',\n 'criteria',\n 'critter',\n 'croak',\n 'crock',\n 'crook',\n 'croon',\n 'crop',\n 'cross',\n 'crouch',\n 'crouton',\n 'crowbar',\n 'crowd',\n 'crown',\n 'crucial',\n 'crudely',\n 'crudeness',\n 'cruelly',\n 'cruelness',\n 'cruelty',\n 'crumb',\n 'crummiest',\n 'crummy',\n 'crumpet',\n 'crumpled',\n 'cruncher',\n 'crunching',\n 'crunchy',\n 'crusader',\n 'crushable',\n 'crushed',\n 'crusher',\n 'crushing',\n 'crust',\n 'crux',\n 'crying',\n 'cryptic',\n 'crystal',\n 'cubbyhole',\n 'cube',\n 'cubical',\n 'cubicle',\n 'cucumber',\n 'cuddle',\n 'cuddly',\n 'cufflink',\n 'culinary',\n 'culminate',\n 'culpable',\n 'culprit',\n 'cultivate',\n 'cultural',\n 'culture',\n 'cupbearer',\n 'cupcake',\n 'cupid',\n 'cupped',\n 'cupping',\n 'curable',\n 'curator',\n 'curdle',\n 'cure',\n 'curfew',\n 'curing',\n 'curled',\n 'curler',\n 'curliness',\n 'curling',\n 'curly',\n 'curry',\n 'curse',\n 'cursive',\n 'cursor',\n 'curtain',\n 'curtly',\n 'curtsy',\n 'curvature',\n 'curve',\n 'curvy',\n 'cushy',\n 'cusp',\n 'cussed',\n 'custard',\n 'custodian',\n 'custody',\n 'customary',\n 'customer',\n 'customize',\n 'customs',\n 'cut',\n 'cycle',\n 'cyclic',\n 'cycling',\n 'cyclist',\n 'cylinder',\n 'cymbal',\n 'cytoplasm',\n 'cytoplast',\n 'dab',\n 'dad',\n 'daffodil',\n 'dagger',\n 'daily',\n 'daintily',\n 'dainty',\n 'dairy',\n 'daisy',\n 'dallying',\n 'dance',\n 'dancing',\n 'dandelion',\n 'dander',\n 'dandruff',\n 'dandy',\n 'danger',\n 'dangle',\n 'dangling',\n 'daredevil',\n 'dares',\n 'daringly',\n 'darkened',\n 'darkening',\n 'darkish',\n 'darkness',\n 'darkroom',\n 'darling',\n 'darn',\n 'dart',\n 'darwinism',\n 'dash',\n 'dastardly',\n 'data',\n 'datebook',\n 'dating',\n 'daughter',\n 'daunting',\n 'dawdler',\n 'dawn',\n 'daybed',\n 'daybreak',\n 'daycare',\n 'daydream',\n 'daylight',\n 'daylong',\n 'dayroom',\n 'daytime',\n 'dazzler',\n 'dazzling',\n 'deacon',\n 'deafening',\n 'deafness',\n 'dealer',\n 'dealing',\n 'dealmaker',\n 'dealt',\n 'dean',\n 'debatable',\n 'debate',\n 'debating',\n 'debit',\n 'debrief',\n 'debtless',\n 'debtor',\n 'debug',\n 'debunk',\n 'decade',\n 'decaf',\n 'decal',\n 'decathlon',\n 'decay',\n 'deceased',\n 'deceit',\n 'deceiver',\n 'deceiving',\n 'december',\n 'decency',\n 'decent',\n 'deception',\n 'deceptive',\n 'decibel',\n 'decidable',\n 'decimal',\n 'decimeter',\n 'decipher',\n 'deck',\n 'declared',\n 'decline',\n 'decode',\n 'decompose',\n 'decorated',\n 'decorator',\n 'decoy',\n 'decrease',\n 'decree',\n 'dedicate',\n 'dedicator',\n 'deduce',\n 'deduct',\n 'deed',\n 'deem',\n 'deepen',\n 'deeply',\n 'deepness',\n 'deface',\n 'defacing',\n 'defame',\n 'default',\n 'defeat',\n 'defection',\n 'defective',\n 'defendant',\n 'defender',\n 'defense',\n 'defensive',\n 'deferral',\n 'deferred',\n 'defiance',\n 'defiant',\n 'defile',\n 'defiling',\n 'define',\n 'definite',\n 'deflate',\n 'deflation',\n 'deflator',\n 'deflected',\n 'deflector',\n 'defog',\n 'deforest',\n 'defraud',\n 'defrost',\n 'deftly',\n 'defuse',\n 'defy',\n 'degraded',\n 'degrading',\n 'degrease',\n 'degree',\n 'dehydrate',\n 'deity',\n 'dejected',\n 'delay',\n 'delegate',\n 'delegator',\n 'delete',\n 'deletion',\n 'delicacy',\n 'delicate',\n 'delicious',\n 'delighted',\n 'delirious',\n 'delirium',\n 'deliverer',\n 'delivery',\n 'delouse',\n 'delta',\n 'deluge',\n 'delusion',\n 'deluxe',\n 'demanding',\n 'demeaning',\n 'demeanor',\n 'demise',\n 'democracy',\n 'democrat',\n 'demote',\n 'demotion',\n 'demystify',\n 'denatured',\n 'deniable',\n 'denial',\n 'denim',\n 'denote',\n 'dense',\n 'density',\n 'dental',\n 'dentist',\n 'denture',\n 'deny',\n 'deodorant',\n 'deodorize',\n 'departed',\n 'departure',\n 'depict',\n 'deplete',\n 'depletion',\n 'deplored',\n 'deploy',\n 'deport',\n 'depose',\n 'depraved',\n 'depravity',\n 'deprecate',\n 'depress',\n 'deprive',\n 'depth',\n 'deputize',\n 'deputy',\n 'derail',\n 'deranged',\n 'derby',\n 'derived',\n 'desecrate',\n 'deserve',\n 'deserving',\n 'designate',\n 'designed',\n 'designer',\n 'designing',\n 'deskbound',\n 'desktop',\n 'deskwork',\n 'desolate',\n 'despair',\n 'despise',\n 'despite',\n 'destiny',\n 'destitute',\n 'destruct',\n 'detached',\n 'detail',\n 'detection',\n 'detective',\n 'detector',\n 'detention',\n 'detergent',\n 'detest',\n 'detonate',\n 'detonator',\n 'detoxify',\n 'detract',\n 'deuce',\n 'devalue',\n 'deviancy',\n 'deviant',\n 'deviate',\n 'deviation',\n 'deviator',\n 'device',\n 'devious',\n 'devotedly',\n 'devotee',\n 'devotion',\n 'devourer',\n 'devouring',\n 'devoutly',\n 'dexterity',\n 'dexterous',\n 'diabetes',\n 'diabetic',\n 'diabolic',\n 'diagnoses',\n 'diagnosis',\n 'diagram',\n 'dial',\n 'diameter',\n 'diaper',\n 'diaphragm',\n 'diary',\n 'dice',\n 'dicing',\n 'dictate',\n 'dictation',\n 'dictator',\n 'difficult',\n 'diffused',\n 'diffuser',\n 'diffusion',\n 'diffusive',\n 'dig',\n 'dilation',\n 'diligence',\n 'diligent',\n 'dill',\n 'dilute',\n 'dime',\n 'diminish',\n 'dimly',\n 'dimmed',\n 'dimmer',\n 'dimness',\n 'dimple',\n 'diner',\n 'dingbat',\n 'dinghy',\n 'dinginess',\n 'dingo',\n 'dingy',\n 'dining',\n 'dinner',\n 'diocese',\n 'dioxide',\n 'diploma',\n 'dipped',\n 'dipper',\n 'dipping',\n 'directed',\n 'direction',\n 'directive',\n 'directly',\n 'directory',\n 'direness',\n 'dirtiness',\n 'disabled',\n 'disagree',\n 'disallow',\n 'disarm',\n 'disarray',\n 'disaster',\n 'disband',\n 'disbelief',\n 'disburse',\n 'discard',\n 'discern',\n 'discharge',\n 'disclose',\n 'discolor',\n 'discount',\n 'discourse',\n 'discover',\n 'discuss',\n 'disdain',\n 'disengage',\n 'disfigure',\n 'disgrace',\n 'dish',\n 'disinfect',\n 'disjoin',\n 'disk',\n 'dislike',\n 'disliking',\n 'dislocate',\n 'dislodge',\n 'disloyal',\n 'dismantle',\n 'dismay',\n 'dismiss',\n 'dismount',\n 'disobey',\n 'disorder',\n 'disown',\n 'disparate',\n 'disparity',\n 'dispatch',\n 'dispense',\n 'dispersal',\n 'dispersed',\n 'disperser',\n 'displace',\n 'display',\n 'displease',\n 'disposal',\n 'dispose',\n 'disprove',\n 'dispute',\n 'disregard',\n 'disrupt',\n 'dissuade',\n 'distance',\n 'distant',\n 'distaste',\n 'distill',\n 'distinct',\n 'distort',\n 'distract',\n 'distress',\n 'district',\n 'distrust',\n 'ditch',\n 'ditto',\n 'ditzy',\n 'dividable',\n 'divided',\n 'dividend',\n 'dividers',\n 'dividing',\n 'divinely',\n 'diving',\n 'divinity',\n 'divisible',\n 'divisibly',\n 'division',\n 'divisive',\n 'divorcee',\n 'dizziness',\n 'dizzy',\n 'doable',\n 'docile',\n 'dock',\n 'doctrine',\n 'document',\n 'dodge',\n 'dodgy',\n 'doily',\n 'doing',\n 'dole',\n 'dollar',\n 'dollhouse',\n 'dollop',\n 'dolly',\n 'dolphin',\n 'domain',\n 'domelike',\n 'domestic',\n 'dominion',\n 'dominoes',\n 'donated',\n 'donation',\n 'donator',\n 'donor',\n 'donut',\n 'doodle',\n 'doorbell',\n 'doorframe',\n 'doorknob',\n 'doorman',\n 'doormat',\n 'doornail',\n 'doorpost',\n 'doorstep',\n 'doorstop',\n 'doorway',\n 'doozy',\n 'dork',\n 'dormitory',\n 'dorsal',\n 'dosage',\n 'dose',\n 'dotted',\n 'doubling',\n 'douche',\n 'dove',\n 'down',\n 'dowry',\n 'doze',\n 'drab',\n 'dragging',\n 'dragonfly',\n 'dragonish',\n 'dragster',\n 'drainable',\n 'drainage',\n 'drained',\n 'drainer',\n 'drainpipe',\n 'dramatic',\n 'dramatize',\n 'drank',\n 'drapery',\n 'drastic',\n 'draw',\n 'dreaded',\n 'dreadful',\n 'dreadlock',\n 'dreamboat',\n 'dreamily',\n 'dreamland',\n 'dreamless',\n 'dreamlike',\n 'dreamt',\n 'dreamy',\n 'drearily',\n 'dreary',\n 'drench',\n 'dress',\n 'drew',\n 'dribble',\n 'dried',\n 'drier',\n 'drift',\n 'driller',\n 'drilling',\n 'drinkable',\n 'drinking',\n 'dripping',\n 'drippy',\n 'drivable',\n 'driven',\n 'driver',\n 'driveway',\n 'driving',\n 'drizzle',\n 'drizzly',\n 'drone',\n 'drool',\n 'droop',\n 'drop-down',\n 'dropbox',\n 'dropkick',\n 'droplet',\n 'dropout',\n 'dropper',\n 'drove',\n 'drown',\n 'drowsily',\n 'drudge',\n 'drum',\n 'dry',\n 'dubbed',\n 'dubiously',\n 'duchess',\n 'duckbill',\n 'ducking',\n 'duckling',\n 'ducktail',\n 'ducky',\n 'duct',\n 'dude',\n 'duffel',\n 'dugout',\n 'duh',\n 'duke',\n 'duller',\n 'dullness',\n 'duly',\n 'dumping',\n 'dumpling',\n 'dumpster',\n 'duo',\n 'dupe',\n 'duplex',\n 'duplicate',\n 'duplicity',\n 'durable',\n 'durably',\n 'duration',\n 'duress',\n 'during',\n 'dusk',\n 'dust',\n 'dutiful',\n 'duty',\n 'duvet',\n 'dwarf',\n 'dweeb',\n 'dwelled',\n 'dweller',\n 'dwelling',\n 'dwindle',\n 'dwindling',\n 'dynamic',\n 'dynamite',\n 'dynasty',\n 'dyslexia',\n 'dyslexic',\n 'each',\n 'eagle',\n 'earache',\n 'eardrum',\n 'earflap',\n 'earful',\n 'earlobe',\n 'early',\n 'earmark',\n 'earmuff',\n 'earphone',\n 'earpiece',\n 'earplugs',\n 'earring',\n 'earshot',\n 'earthen',\n 'earthlike',\n 'earthling',\n 'earthly',\n 'earthworm',\n 'earthy',\n 'earwig',\n 'easeful',\n 'easel',\n 'easiest',\n 'easily',\n 'easiness',\n 'easing',\n 'eastbound',\n 'eastcoast',\n 'easter',\n 'eastward',\n 'eatable',\n 'eaten',\n 'eatery',\n 'eating',\n 'eats',\n 'ebay',\n 'ebony',\n 'ebook',\n 'ecard',\n 'eccentric',\n 'echo',\n 'eclair',\n 'eclipse',\n 'ecologist',\n 'ecology',\n 'economic',\n 'economist',\n 'economy',\n 'ecosphere',\n 'ecosystem',\n 'edge',\n 'edginess',\n 'edging',\n 'edgy',\n 'edition',\n 'editor',\n 'educated',\n 'education',\n 'educator',\n 'eel',\n 'effective',\n 'effects',\n 'efficient',\n 'effort',\n 'eggbeater',\n 'egging',\n 'eggnog',\n 'eggplant',\n 'eggshell',\n 'egomaniac',\n 'egotism',\n 'egotistic',\n 'either',\n 'eject',\n 'elaborate',\n 'elastic',\n 'elated',\n 'elbow',\n 'eldercare',\n 'elderly',\n 'eldest',\n 'electable',\n 'election',\n 'elective',\n 'elephant',\n 'elevate',\n 'elevating',\n 'elevation',\n 'elevator',\n 'eleven',\n 'elf',\n 'eligible',\n 'eligibly',\n 'eliminate',\n 'elite',\n 'elitism',\n 'elixir',\n 'elk',\n 'ellipse',\n 'elliptic',\n 'elm',\n 'elongated',\n 'elope',\n 'eloquence',\n 'eloquent',\n 'elsewhere',\n 'elude',\n 'elusive',\n 'elves',\n 'email',\n 'embargo',\n 'embark',\n 'embassy',\n 'embattled',\n 'embellish',\n 'ember',\n 'embezzle',\n 'emblaze',\n 'emblem',\n 'embody',\n 'embolism',\n 'emboss',\n 'embroider',\n 'emcee',\n 'emerald',\n 'emergency',\n 'emission',\n 'emit',\n 'emote',\n 'emoticon',\n 'emotion',\n 'empathic',\n 'empathy',\n 'emperor',\n 'emphases',\n 'emphasis',\n 'emphasize',\n 'emphatic',\n 'empirical',\n 'employed',\n 'employee',\n 'employer',\n 'emporium',\n 'empower',\n 'emptier',\n 'emptiness',\n 'empty',\n 'emu',\n 'enable',\n 'enactment',\n 'enamel',\n 'enchanted',\n 'enchilada',\n 'encircle',\n 'enclose',\n 'enclosure',\n 'encode',\n 'encore',\n 'encounter',\n 'encourage',\n 'encroach',\n 'encrust',\n 'encrypt',\n 'endanger',\n 'endeared',\n 'endearing',\n 'ended',\n 'ending',\n 'endless',\n 'endnote',\n 'endocrine',\n 'endorphin',\n 'endorse',\n 'endowment',\n 'endpoint',\n 'endurable',\n 'endurance',\n 'enduring',\n 'energetic',\n 'energize',\n 'energy',\n 'enforced',\n 'enforcer',\n 'engaged',\n 'engaging',\n 'engine',\n 'engorge',\n 'engraved',\n 'engraver',\n 'engraving',\n 'engross',\n 'engulf',\n 'enhance',\n 'enigmatic',\n 'enjoyable',\n 'enjoyably',\n 'enjoyer',\n 'enjoying',\n 'enjoyment',\n 'enlarged',\n 'enlarging',\n 'enlighten',\n 'enlisted',\n 'enquirer',\n 'enrage',\n 'enrich',\n 'enroll',\n 'enslave',\n 'ensnare',\n 'ensure',\n 'entail',\n 'entangled',\n 'entering',\n 'entertain',\n 'enticing',\n 'entire',\n 'entitle',\n 'entity',\n 'entomb',\n 'entourage',\n 'entrap',\n 'entree',\n 'entrench',\n 'entrust',\n 'entryway',\n 'entwine',\n 'enunciate',\n 'envelope',\n 'enviable',\n 'enviably',\n 'envious',\n 'envision',\n 'envoy',\n 'envy',\n 'enzyme',\n 'epic',\n 'epidemic',\n 'epidermal',\n 'epidermis',\n 'epidural',\n 'epilepsy',\n 'epileptic',\n 'epilogue',\n 'epiphany',\n 'episode',\n 'equal',\n 'equate',\n 'equation',\n 'equator',\n 'equinox',\n 'equipment',\n 'equity',\n 'equivocal',\n 'eradicate',\n 'erasable',\n 'erased',\n 'eraser',\n 'erasure',\n 'ergonomic',\n 'errand',\n 'errant',\n 'erratic',\n 'error',\n 'erupt',\n 'escalate',\n 'escalator',\n 'escapable',\n 'escapade',\n 'escapist',\n 'escargot',\n 'eskimo',\n 'esophagus',\n 'espionage',\n 'espresso',\n 'esquire',\n 'essay',\n 'essence',\n 'essential',\n 'establish',\n 'estate',\n 'esteemed',\n 'estimate',\n 'estimator',\n 'estranged',\n 'estrogen',\n 'etching',\n 'eternal',\n 'eternity',\n 'ethanol',\n 'ether',\n 'ethically',\n 'ethics',\n 'euphemism',\n 'evacuate',\n 'evacuee',\n 'evade',\n 'evaluate',\n 'evaluator',\n 'evaporate',\n 'evasion',\n 'evasive',\n 'even',\n 'everglade',\n 'evergreen',\n 'everybody',\n 'everyday',\n 'everyone',\n 'evict',\n 'evidence',\n 'evident',\n 'evil',\n 'evoke',\n 'evolution',\n 'evolve',\n 'exact',\n 'exalted',\n 'example',\n 'excavate',\n 'excavator',\n 'exceeding',\n 'exception',\n 'excess',\n 'exchange',\n 'excitable',\n 'exciting',\n 'exclaim',\n 'exclude',\n 'excluding',\n 'exclusion',\n 'exclusive',\n 'excretion',\n 'excretory',\n 'excursion',\n 'excusable',\n 'excusably',\n 'excuse',\n 'exemplary',\n 'exemplify',\n 'exemption',\n 'exerciser',\n 'exert',\n 'exes',\n 'exfoliate',\n 'exhale',\n 'exhaust',\n 'exhume',\n 'exile',\n 'existing',\n 'exit',\n 'exodus',\n 'exonerate',\n 'exorcism',\n 'exorcist',\n 'expand',\n 'expanse',\n 'expansion',\n 'expansive',\n 'expectant',\n 'expedited',\n 'expediter',\n 'expel',\n 'expend',\n 'expenses',\n 'expensive',\n 'expert',\n 'expire',\n 'expiring',\n 'explain',\n 'expletive',\n 'explicit',\n 'explode',\n 'exploit',\n 'explore',\n 'exploring',\n 'exponent',\n 'exporter',\n 'exposable',\n 'expose',\n 'exposure',\n 'express',\n 'expulsion',\n 'exquisite',\n 'extended',\n 'extending',\n 'extent',\n 'extenuate',\n 'exterior',\n 'external',\n 'extinct',\n 'extortion',\n 'extradite',\n 'extras',\n 'extrovert',\n 'extrude',\n 'extruding',\n 'exuberant',\n 'fable',\n 'fabric',\n 'fabulous',\n 'facebook',\n 'facecloth',\n 'facedown',\n 'faceless',\n 'facelift',\n 'faceplate',\n 'faceted',\n 'facial',\n 'facility',\n 'facing',\n 'facsimile',\n 'faction',\n 'factoid',\n 'factor',\n 'factsheet',\n 'factual',\n 'faculty',\n 'fade',\n 'fading',\n 'failing',\n 'falcon',\n 'fall',\n 'false',\n 'falsify',\n 'fame',\n 'familiar',\n 'family',\n 'famine',\n 'famished',\n 'fanatic',\n 'fancied',\n 'fanciness',\n 'fancy',\n 'fanfare',\n 'fang',\n 'fanning',\n 'fantasize',\n 'fantastic',\n 'fantasy',\n 'fascism',\n 'fastball',\n 'faster',\n 'fasting',\n 'fastness',\n 'faucet',\n 'favorable',\n 'favorably',\n 'favored',\n 'favoring',\n 'favorite',\n 'fax',\n 'feast',\n 'federal',\n 'fedora',\n 'feeble',\n 'feed',\n 'feel',\n 'feisty',\n 'feline',\n 'felt-tip',\n 'feminine',\n 'feminism',\n 'feminist',\n 'feminize',\n 'femur',\n 'fence',\n 'fencing',\n 'fender',\n 'ferment',\n 'fernlike',\n 'ferocious',\n 'ferocity',\n 'ferret',\n 'ferris',\n 'ferry',\n 'fervor',\n 'fester',\n 'festival',\n 'festive',\n 'festivity',\n 'fetal',\n 'fetch',\n 'fever',\n 'fiber',\n 'fiction',\n 'fiddle',\n 'fiddling',\n 'fidelity',\n 'fidgeting',\n 'fidgety',\n 'fifteen',\n 'fifth',\n 'fiftieth',\n 'fifty',\n 'figment',\n 'figure',\n 'figurine',\n 'filing',\n 'filled',\n 'filler',\n 'filling',\n 'film',\n 'filter',\n 'filth',\n 'filtrate',\n 'finale',\n 'finalist',\n 'finalize',\n 'finally',\n 'finance',\n 'financial',\n 'finch',\n 'fineness',\n 'finer',\n 'finicky',\n 'finished',\n 'finisher',\n 'finishing',\n 'finite',\n 'finless',\n 'finlike',\n 'fiscally',\n 'fit',\n 'five',\n 'flaccid',\n 'flagman',\n 'flagpole',\n 'flagship',\n 'flagstick',\n 'flagstone',\n 'flail',\n 'flakily',\n 'flaky',\n 'flame',\n 'flammable',\n 'flanked',\n 'flanking',\n 'flannels',\n 'flap',\n 'flaring',\n 'flashback',\n 'flashbulb',\n 'flashcard',\n 'flashily',\n 'flashing',\n 'flashy',\n 'flask',\n 'flatbed',\n 'flatfoot',\n 'flatly',\n 'flatness',\n 'flatten',\n 'flattered',\n 'flatterer',\n 'flattery',\n 'flattop',\n 'flatware',\n 'flatworm',\n 'flavored',\n 'flavorful',\n 'flavoring',\n 'flaxseed',\n 'fled',\n 'fleshed',\n 'fleshy',\n 'flick',\n 'flier',\n 'flight',\n 'flinch',\n 'fling',\n 'flint',\n 'flip',\n 'flirt',\n 'float',\n 'flock',\n 'flogging',\n 'flop',\n 'floral',\n 'florist',\n 'floss',\n 'flounder',\n 'flyable',\n 'flyaway',\n 'flyer',\n 'flying',\n 'flyover',\n 'flypaper',\n 'foam',\n 'foe',\n 'fog',\n 'foil',\n 'folic',\n 'folk',\n 'follicle',\n 'follow',\n 'fondling',\n 'fondly',\n 'fondness',\n 'fondue',\n 'font',\n 'food',\n 'fool',\n 'footage',\n 'football',\n 'footbath',\n 'footboard',\n 'footer',\n 'footgear',\n 'foothill',\n 'foothold',\n 'footing',\n 'footless',\n 'footman',\n 'footnote',\n 'footpad',\n 'footpath',\n 'footprint',\n 'footrest',\n 'footsie',\n 'footsore',\n 'footwear',\n 'footwork',\n 'fossil',\n 'foster',\n 'founder',\n 'founding',\n 'fountain',\n 'fox',\n 'foyer',\n 'fraction',\n 'fracture',\n 'fragile',\n 'fragility',\n 'fragment',\n 'fragrance',\n 'fragrant',\n 'frail',\n 'frame',\n 'framing',\n 'frantic',\n 'fraternal',\n 'frayed',\n 'fraying',\n 'frays',\n 'freckled',\n 'freckles',\n 'freebase',\n 'freebee',\n 'freebie',\n 'freedom',\n 'freefall',\n 'freehand',\n 'freeing',\n 'freeload',\n 'freely',\n 'freemason',\n 'freeness',\n 'freestyle',\n 'freeware',\n 'freeway',\n 'freewill',\n 'freezable',\n 'freezing',\n 'freight',\n 'french',\n 'frenzied',\n 'frenzy',\n 'frequency',\n 'frequent',\n 'fresh',\n 'fretful',\n 'fretted',\n 'friction',\n 'friday',\n 'fridge',\n 'fried',\n 'friend',\n 'frighten',\n 'frightful',\n 'frigidity',\n 'frigidly',\n 'frill',\n 'fringe',\n 'frisbee',\n 'frisk',\n 'fritter',\n 'frivolous',\n 'frolic',\n 'from',\n 'front',\n 'frostbite',\n 'frosted',\n 'frostily',\n 'frosting',\n 'frostlike',\n 'frosty',\n 'froth',\n 'frown',\n 'frozen',\n 'fructose',\n 'frugality',\n 'frugally',\n 'fruit',\n 'frustrate',\n 'frying',\n 'gab',\n 'gaffe',\n 'gag',\n 'gainfully',\n 'gaining',\n 'gains',\n 'gala',\n 'gallantly',\n 'galleria',\n 'gallery',\n 'galley',\n 'gallon',\n 'gallows',\n 'gallstone',\n 'galore',\n 'galvanize',\n 'gambling',\n 'game',\n 'gaming',\n 'gamma',\n 'gander',\n 'gangly',\n 'gangrene',\n 'gangway',\n 'gap',\n 'garage',\n 'garbage',\n 'garden',\n 'gargle',\n 'garland',\n 'garlic',\n 'garment',\n 'garnet',\n 'garnish',\n 'garter',\n 'gas',\n 'gatherer',\n 'gathering',\n 'gating',\n 'gauging',\n 'gauntlet',\n 'gauze',\n 'gave',\n 'gawk',\n 'gazing',\n 'gear',\n 'gecko',\n 'geek',\n 'geiger',\n 'gem',\n 'gender',\n 'generic',\n 'generous',\n 'genetics',\n 'genre',\n 'gentile',\n 'gentleman',\n 'gently',\n 'gents',\n 'geography',\n 'geologic',\n 'geologist',\n 'geology',\n 'geometric',\n 'geometry',\n 'geranium',\n 'gerbil',\n 'geriatric',\n 'germicide',\n 'germinate',\n 'germless',\n 'germproof',\n 'gestate',\n 'gestation',\n 'gesture',\n 'getaway',\n 'getting',\n 'getup',\n 'giant',\n 'gibberish',\n 'giblet',\n 'giddily',\n 'giddiness',\n 'giddy',\n 'gift',\n 'gigabyte',\n 'gigahertz',\n 'gigantic',\n 'giggle',\n 'giggling',\n 'giggly',\n 'gigolo',\n 'gilled',\n 'gills',\n 'gimmick',\n 'girdle',\n 'giveaway',\n 'given',\n 'giver',\n 'giving',\n 'gizmo',\n 'gizzard',\n 'glacial',\n 'glacier',\n 'glade',\n 'gladiator',\n 'gladly',\n 'glamorous',\n 'glamour',\n 'glance',\n 'glancing',\n 'glandular',\n 'glare',\n 'glaring',\n 'glass',\n 'glaucoma',\n 'glazing',\n 'gleaming',\n 'gleeful',\n 'glider',\n 'gliding',\n 'glimmer',\n 'glimpse',\n 'glisten',\n 'glitch',\n 'glitter',\n 'glitzy',\n 'gloater',\n 'gloating',\n 'gloomily',\n 'gloomy',\n 'glorified',\n 'glorifier',\n 'glorify',\n 'glorious',\n 'glory',\n 'gloss',\n 'glove',\n 'glowing',\n 'glowworm',\n 'glucose',\n 'glue',\n 'gluten',\n 'glutinous',\n 'glutton',\n 'gnarly',\n 'gnat',\n 'goal',\n 'goatskin',\n 'goes',\n 'goggles',\n 'going',\n 'goldfish',\n 'goldmine',\n 'goldsmith',\n 'golf',\n 'goliath',\n 'gonad',\n 'gondola',\n 'gone',\n 'gong',\n 'good',\n 'gooey',\n 'goofball',\n 'goofiness',\n 'goofy',\n 'google',\n 'goon',\n 'gopher',\n 'gore',\n 'gorged',\n 'gorgeous',\n 'gory',\n 'gosling',\n 'gossip',\n 'gothic',\n 'gotten',\n 'gout',\n 'gown',\n 'grab',\n 'graceful',\n 'graceless',\n 'gracious',\n 'gradation',\n 'graded',\n 'grader',\n 'gradient',\n 'grading',\n 'gradually',\n 'graduate',\n 'graffiti',\n 'grafted',\n 'grafting',\n 'grain',\n 'granddad',\n 'grandkid',\n 'grandly',\n 'grandma',\n 'grandpa',\n 'grandson',\n 'granite',\n 'granny',\n 'granola',\n 'grant',\n 'granular',\n 'grape',\n 'graph',\n 'grapple',\n 'grappling',\n 'grasp',\n 'grass',\n 'gratified',\n 'gratify',\n 'grating',\n 'gratitude',\n 'gratuity',\n 'gravel',\n 'graveness',\n 'graves',\n 'graveyard',\n 'gravitate',\n 'gravity',\n 'gravy',\n 'gray',\n 'grazing',\n 'greasily',\n 'greedily',\n 'greedless',\n 'greedy',\n 'green',\n 'greeter',\n 'greeting',\n 'grew',\n 'greyhound',\n 'grid',\n 'grief',\n 'grievance',\n 'grieving',\n 'grievous',\n 'grill',\n 'grimace',\n 'grimacing',\n 'grime',\n 'griminess',\n 'grimy',\n 'grinch',\n 'grinning',\n 'grip',\n 'gristle',\n 'grit',\n 'groggily',\n 'groggy',\n 'groin',\n 'groom',\n 'groove',\n 'grooving',\n 'groovy',\n 'grope',\n 'ground',\n 'grouped',\n 'grout',\n 'grove',\n 'grower',\n 'growing',\n 'growl',\n 'grub',\n 'grudge',\n 'grudging',\n 'grueling',\n 'gruffly',\n 'grumble',\n 'grumbling',\n 'grumbly',\n 'grumpily',\n 'grunge',\n 'grunt',\n 'guacamole',\n 'guidable',\n 'guidance',\n 'guide',\n 'guiding',\n 'guileless',\n 'guise',\n 'gulf',\n 'gullible',\n 'gully',\n 'gulp',\n 'gumball',\n 'gumdrop',\n 'gumminess',\n 'gumming',\n 'gummy',\n 'gurgle',\n 'gurgling',\n 'guru',\n 'gush',\n 'gusto',\n 'gusty',\n 'gutless',\n 'guts',\n 'gutter',\n 'guy',\n 'guzzler',\n 'gyration',\n 'habitable',\n 'habitant',\n 'habitat',\n 'habitual',\n 'hacked',\n 'hacker',\n 'hacking',\n 'hacksaw',\n 'had',\n 'haggler',\n 'haiku',\n 'half',\n 'halogen',\n 'halt',\n 'halved',\n 'halves',\n 'hamburger',\n 'hamlet',\n 'hammock',\n 'hamper',\n 'hamster',\n 'hamstring',\n 'handbag',\n 'handball',\n 'handbook',\n 'handbrake',\n 'handcart',\n 'handclap',\n 'handclasp',\n 'handcraft',\n 'handcuff',\n 'handed',\n 'handful',\n 'handgrip',\n 'handgun',\n 'handheld',\n 'handiness',\n 'handiwork',\n 'handlebar',\n 'handled',\n 'handler',\n 'handling',\n 'handmade',\n 'handoff',\n 'handpick',\n 'handprint',\n 'handrail',\n 'handsaw',\n 'handset',\n 'handsfree',\n 'handshake',\n 'handstand',\n 'handwash',\n 'handwork',\n 'handwoven',\n 'handwrite',\n 'handyman',\n 'hangnail',\n 'hangout',\n 'hangover',\n 'hangup',\n 'hankering',\n 'hankie',\n 'hanky',\n 'haphazard',\n 'happening',\n 'happier',\n 'happiest',\n 'happily',\n 'happiness',\n 'happy',\n 'harbor',\n 'hardcopy',\n 'hardcore',\n 'hardcover',\n 'harddisk',\n 'hardened',\n 'hardener',\n 'hardening',\n 'hardhat',\n 'hardhead',\n 'hardiness',\n 'hardly',\n 'hardness',\n 'hardship',\n 'hardware',\n 'hardwired',\n 'hardwood',\n 'hardy',\n 'harmful',\n 'harmless',\n 'harmonica',\n 'harmonics',\n 'harmonize',\n 'harmony',\n 'harness',\n 'harpist',\n 'harsh',\n 'harvest',\n 'hash',\n 'hassle',\n 'haste',\n 'hastily',\n 'hastiness',\n 'hasty',\n 'hatbox',\n 'hatchback',\n 'hatchery',\n 'hatchet',\n 'hatching',\n 'hatchling',\n 'hate',\n 'hatless',\n 'hatred',\n 'haunt',\n 'haven',\n 'hazard',\n 'hazelnut',\n 'hazily',\n 'haziness',\n 'hazing',\n 'hazy',\n 'headache',\n 'headband',\n 'headboard',\n 'headcount',\n 'headdress',\n 'headed',\n 'header',\n 'headfirst',\n 'headgear',\n 'heading',\n 'headlamp',\n 'headless',\n 'headlock',\n 'headphone',\n 'headpiece',\n 'headrest',\n 'headroom',\n 'headscarf',\n 'headset',\n 'headsman',\n 'headstand',\n 'headstone',\n 'headway',\n 'headwear',\n 'heap',\n 'heat',\n 'heave',\n 'heavily',\n 'heaviness',\n 'heaving',\n 'hedge',\n 'hedging',\n 'heftiness',\n 'hefty',\n 'helium',\n 'helmet',\n 'helper',\n 'helpful',\n 'helping',\n 'helpless',\n 'helpline',\n 'hemlock',\n 'hemstitch',\n 'hence',\n 'henchman',\n 'henna',\n 'herald',\n 'herbal',\n 'herbicide',\n 'herbs',\n 'heritage',\n 'hermit',\n 'heroics',\n 'heroism',\n 'herring',\n 'herself',\n 'hertz',\n 'hesitancy',\n 'hesitant',\n 'hesitate',\n 'hexagon',\n 'hexagram',\n 'hubcap',\n 'huddle',\n 'huddling',\n 'huff',\n 'hug',\n 'hula',\n 'hulk',\n 'hull',\n 'human',\n 'humble',\n 'humbling',\n 'humbly',\n 'humid',\n 'humiliate',\n 'humility',\n 'humming',\n 'hummus',\n 'humongous',\n 'humorist',\n 'humorless',\n 'humorous',\n 'humpback',\n 'humped',\n 'humvee',\n 'hunchback',\n 'hundredth',\n 'hunger',\n 'hungrily',\n 'hungry',\n 'hunk',\n 'hunter',\n 'hunting',\n 'huntress',\n 'huntsman',\n 'hurdle',\n 'hurled',\n 'hurler',\n 'hurling',\n 'hurray',\n 'hurricane',\n 'hurried',\n 'hurry',\n 'hurt',\n 'husband',\n 'hush',\n 'husked',\n 'huskiness',\n 'hut',\n 'hybrid',\n 'hydrant',\n 'hydrated',\n 'hydration',\n 'hydrogen',\n 'hydroxide',\n 'hyperlink',\n 'hypertext',\n 'hyphen',\n 'hypnoses',\n 'hypnosis',\n 'hypnotic',\n 'hypnotism',\n 'hypnotist',\n 'hypnotize',\n 'hypocrisy',\n 'hypocrite',\n 'ibuprofen',\n 'ice',\n 'iciness',\n 'icing',\n 'icky',\n 'icon',\n 'icy',\n 'idealism',\n 'idealist',\n 'idealize',\n 'ideally',\n 'idealness',\n 'identical',\n 'identify',\n 'identity',\n 'ideology',\n 'idiocy',\n 'idiom',\n 'idly',\n 'igloo',\n 'ignition',\n 'ignore',\n 'iguana',\n 'illicitly',\n 'illusion',\n 'illusive',\n 'image',\n 'imaginary',\n 'imagines',\n 'imaging',\n 'imbecile',\n 'imitate',\n 'imitation',\n 'immature',\n 'immerse',\n 'immersion',\n 'imminent',\n 'immobile',\n 'immodest',\n 'immorally',\n 'immortal',\n 'immovable',\n 'immovably',\n 'immunity',\n 'immunize',\n 'impaired',\n 'impale',\n 'impart',\n 'impatient',\n 'impeach',\n 'impeding',\n 'impending',\n 'imperfect',\n 'imperial',\n 'impish',\n 'implant',\n 'implement',\n 'implicate',\n 'implicit',\n 'implode',\n 'implosion',\n 'implosive',\n 'imply',\n 'impolite',\n 'important',\n 'importer',\n 'impose',\n 'imposing',\n 'impotence',\n 'impotency',\n 'impotent',\n 'impound',\n 'imprecise',\n 'imprint',\n 'imprison',\n 'impromptu',\n 'improper',\n 'improve',\n 'improving',\n 'improvise',\n 'imprudent',\n 'impulse',\n 'impulsive',\n 'impure',\n 'impurity',\n 'iodine',\n 'iodize',\n 'ion',\n 'ipad',\n 'iphone',\n 'ipod',\n 'irate',\n 'irk',\n 'iron',\n 'irregular',\n 'irrigate',\n 'irritable',\n 'irritably',\n 'irritant',\n 'irritate',\n 'islamic',\n 'islamist',\n 'isolated',\n 'isolating',\n 'isolation',\n 'isotope',\n 'issue',\n 'issuing',\n 'italicize',\n 'italics',\n 'item',\n 'itinerary',\n 'itunes',\n 'ivory',\n 'ivy',\n 'jab',\n 'jackal',\n 'jacket',\n 'jackknife',\n 'jackpot',\n 'jailbird',\n 'jailbreak',\n 'jailer',\n 'jailhouse',\n 'jalapeno',\n 'jam',\n 'janitor',\n 'january',\n 'jargon',\n 'jarring',\n 'jasmine',\n 'jaundice',\n 'jaunt',\n 'java',\n 'jawed',\n 'jawless',\n 'jawline',\n 'jaws',\n 'jaybird',\n 'jaywalker',\n 'jazz',\n 'jeep',\n 'jeeringly',\n 'jellied',\n 'jelly',\n 'jersey',\n 'jester',\n 'jet',\n 'jiffy',\n 'jigsaw',\n 'jimmy',\n 'jingle',\n 'jingling',\n 'jinx',\n 'jitters',\n 'jittery',\n 'job',\n 'jockey',\n 'jockstrap',\n 'jogger',\n 'jogging',\n 'john',\n 'joining',\n 'jokester',\n 'jokingly',\n 'jolliness',\n 'jolly',\n 'jolt',\n 'jot',\n 'jovial',\n 'joyfully',\n 'joylessly',\n 'joyous',\n 'joyride',\n 'joystick',\n 'jubilance',\n 'jubilant',\n 'judge',\n 'judgingly',\n 'judicial',\n 'judiciary',\n 'judo',\n 'juggle',\n 'juggling',\n 'jugular',\n 'juice',\n 'juiciness',\n 'juicy',\n 'jujitsu',\n 'jukebox',\n 'july',\n 'jumble',\n 'jumbo',\n 'jump',\n 'junction',\n 'juncture',\n 'june',\n 'junior',\n 'juniper',\n 'junkie',\n 'junkman',\n 'junkyard',\n 'jurist',\n 'juror',\n 'jury',\n 'justice',\n 'justifier',\n 'justify',\n 'justly',\n 'justness',\n 'juvenile',\n 'kabob',\n 'kangaroo',\n 'karaoke',\n 'karate',\n 'karma',\n 'kebab',\n 'keenly',\n 'keenness',\n 'keep',\n 'keg',\n 'kelp',\n 'kennel',\n 'kept',\n 'kerchief',\n 'kerosene',\n 'kettle',\n 'kick',\n 'kiln',\n 'kilobyte',\n 'kilogram',\n 'kilometer',\n 'kilowatt',\n 'kilt',\n 'kimono',\n 'kindle',\n 'kindling',\n 'kindly',\n 'kindness',\n 'kindred',\n 'kinetic',\n 'kinfolk',\n 'king',\n 'kinship',\n 'kinsman',\n 'kinswoman',\n 'kissable',\n 'kisser',\n 'kissing',\n 'kitchen',\n 'kite',\n 'kitten',\n 'kitty',\n 'kiwi',\n 'kleenex',\n 'knapsack',\n 'knee',\n 'knelt',\n 'knickers',\n 'knoll',\n 'koala',\n 'kooky',\n 'kosher',\n 'krypton',\n 'kudos',\n 'kung',\n 'labored',\n 'laborer',\n 'laboring',\n 'laborious',\n 'labrador',\n 'ladder',\n 'ladies',\n 'ladle',\n 'ladybug',\n 'ladylike',\n 'lagged',\n 'lagging',\n 'lagoon',\n 'lair',\n 'lake',\n 'lance',\n 'landed',\n 'landfall',\n 'landfill',\n 'landing',\n 'landlady',\n 'landless',\n 'landline',\n 'landlord',\n 'landmark',\n 'landmass',\n 'landmine',\n 'landowner',\n 'landscape',\n 'landside',\n 'landslide',\n 'language',\n 'lankiness',\n 'lanky',\n 'lantern',\n 'lapdog',\n 'lapel',\n 'lapped',\n 'lapping',\n 'laptop',\n 'lard',\n 'large',\n 'lark',\n 'lash',\n 'lasso',\n 'last',\n 'latch',\n 'late',\n 'lather',\n 'latitude',\n 'latrine',\n 'latter',\n 'latticed',\n 'launch',\n 'launder',\n 'laundry',\n 'laurel',\n 'lavender',\n 'lavish',\n 'laxative',\n 'lazily',\n 'laziness',\n 'lazy',\n 'lecturer',\n 'left',\n 'legacy',\n 'legal',\n 'legend',\n 'legged',\n 'leggings',\n 'legible',\n 'legibly',\n 'legislate',\n 'lego',\n 'legroom',\n 'legume',\n 'legwarmer',\n 'legwork',\n 'lemon',\n 'lend',\n 'length',\n 'lens',\n 'lent',\n 'leotard',\n 'lesser',\n 'letdown',\n 'lethargic',\n 'lethargy',\n 'letter',\n 'lettuce',\n 'level',\n 'leverage',\n 'levers',\n 'levitate',\n 'levitator',\n 'liability',\n 'liable',\n 'liberty',\n 'librarian',\n 'library',\n 'licking',\n 'licorice',\n 'lid',\n 'life',\n 'lifter',\n 'lifting',\n 'liftoff',\n 'ligament',\n 'likely',\n 'likeness',\n 'likewise',\n 'liking',\n 'lilac',\n 'lilly',\n 'lily',\n 'limb',\n 'limeade',\n 'limelight',\n 'limes',\n 'limit',\n 'limping',\n 'limpness',\n 'line',\n 'lingo',\n 'linguini',\n 'linguist',\n 'lining',\n 'linked',\n 'linoleum',\n 'linseed',\n 'lint',\n 'lion',\n 'lip',\n 'liquefy',\n 'liqueur',\n 'liquid',\n 'lisp',\n 'list',\n 'litigate',\n 'litigator',\n 'litmus',\n 'litter',\n 'little',\n 'livable',\n 'lived',\n 'lively',\n 'liver',\n 'livestock',\n 'lividly',\n 'living',\n 'lizard',\n 'lubricant',\n 'lubricate',\n 'lucid',\n 'luckily',\n 'luckiness',\n 'luckless',\n 'lucrative',\n 'ludicrous',\n 'lugged',\n 'lukewarm',\n 'lullaby',\n 'lumber',\n 'luminance',\n 'luminous',\n 'lumpiness',\n 'lumping',\n 'lumpish',\n 'lunacy',\n 'lunar',\n 'lunchbox',\n 'luncheon',\n 'lunchroom',\n 'lunchtime',\n 'lung',\n 'lurch',\n 'lure',\n 'luridness',\n 'lurk',\n 'lushly',\n 'lushness',\n 'luster',\n 'lustfully',\n 'lustily',\n 'lustiness',\n 'lustrous',\n 'lusty',\n 'luxurious',\n 'luxury',\n 'lying',\n 'lyrically',\n 'lyricism',\n 'lyricist',\n 'lyrics',\n 'macarena',\n 'macaroni',\n 'macaw',\n 'mace',\n 'machine',\n 'machinist',\n 'magazine',\n 'magenta',\n 'maggot',\n 'magical',\n 'magician',\n 'magma',\n 'magnesium',\n 'magnetic',\n 'magnetism',\n 'magnetize',\n 'magnifier',\n 'magnify',\n 'magnitude',\n 'magnolia',\n 'mahogany',\n 'maimed',\n 'majestic',\n 'majesty',\n 'majorette',\n 'majority',\n 'makeover',\n 'maker',\n 'makeshift',\n 'making',\n 'malformed',\n 'malt',\n 'mama',\n 'mammal',\n 'mammary',\n 'mammogram',\n 'manager',\n 'managing',\n 'manatee',\n 'mandarin',\n 'mandate',\n 'mandatory',\n 'mandolin',\n 'manger',\n 'mangle',\n 'mango',\n 'mangy',\n 'manhandle',\n 'manhole',\n 'manhood',\n 'manhunt',\n 'manicotti',\n 'manicure',\n 'manifesto',\n 'manila',\n 'mankind',\n 'manlike',\n 'manliness',\n 'manly',\n 'manmade',\n 'manned',\n 'mannish',\n 'manor',\n 'manpower',\n 'mantis',\n 'mantra',\n 'manual',\n 'many',\n 'map',\n 'marathon',\n 'marauding',\n 'marbled',\n 'marbles',\n 'marbling',\n 'march',\n 'mardi',\n 'margarine',\n 'margarita',\n 'margin',\n 'marigold',\n 'marina',\n 'marine',\n 'marital',\n 'maritime',\n 'marlin',\n 'marmalade',\n 'maroon',\n 'married',\n 'marrow',\n 'marry',\n 'marshland',\n 'marshy',\n 'marsupial',\n 'marvelous',\n 'marxism',\n 'mascot',\n 'masculine',\n 'mashed',\n 'mashing',\n 'massager',\n 'masses',\n 'massive',\n 'mastiff',\n 'matador',\n 'matchbook',\n 'matchbox',\n 'matcher',\n 'matching',\n 'matchless',\n 'material',\n 'maternal',\n 'maternity',\n 'math',\n 'mating',\n 'matriarch',\n 'matrimony',\n 'matrix',\n 'matron',\n 'matted',\n 'matter',\n 'maturely',\n 'maturing',\n 'maturity',\n 'mauve',\n 'maverick',\n 'maximize',\n 'maximum',\n 'maybe',\n 'mayday',\n 'mayflower',\n 'moaner',\n 'moaning',\n 'mobile',\n 'mobility',\n 'mobilize',\n 'mobster',\n 'mocha',\n 'mocker',\n 'mockup',\n 'modified',\n 'modify',\n 'modular',\n 'modulator',\n 'module',\n 'moisten',\n 'moistness',\n 'moisture',\n 'molar',\n 'molasses',\n 'mold',\n 'molecular',\n 'molecule',\n 'molehill',\n 'mollusk',\n 'mom',\n 'monastery',\n 'monday',\n 'monetary',\n 'monetize',\n 'moneybags',\n 'moneyless',\n 'moneywise',\n 'mongoose',\n 'mongrel',\n 'monitor',\n 'monkhood',\n 'monogamy',\n 'monogram',\n 'monologue',\n 'monopoly',\n 'monorail',\n 'monotone',\n 'monotype',\n 'monoxide',\n 'monsieur',\n 'monsoon',\n 'monstrous',\n 'monthly',\n 'monument',\n 'moocher',\n 'moodiness',\n 'moody',\n 'mooing',\n 'moonbeam',\n 'mooned',\n 'moonlight',\n 'moonlike',\n 'moonlit',\n 'moonrise',\n 'moonscape',\n 'moonshine',\n 'moonstone',\n 'moonwalk',\n 'mop',\n 'morale',\n 'morality',\n 'morally',\n 'morbidity',\n 'morbidly',\n 'morphine',\n 'morphing',\n 'morse',\n 'mortality',\n 'mortally',\n 'mortician',\n 'mortified',\n 'mortify',\n 'mortuary',\n 'mosaic',\n 'mossy',\n 'most',\n 'mothball',\n 'mothproof',\n 'motion',\n 'motivate',\n 'motivator',\n 'motive',\n 'motocross',\n 'motor',\n 'motto',\n 'mountable',\n 'mountain',\n 'mounted',\n 'mounting',\n 'mourner',\n 'mournful',\n 'mouse',\n 'mousiness',\n 'moustache',\n 'mousy',\n 'mouth',\n 'movable',\n 'move',\n 'movie',\n 'moving',\n 'mower',\n 'mowing',\n 'much',\n 'muck',\n 'mud',\n 'mug',\n 'mulberry',\n 'mulch',\n 'mule',\n 'mulled',\n 'mullets',\n 'multiple',\n 'multiply',\n 'multitask',\n 'multitude',\n 'mumble',\n 'mumbling',\n 'mumbo',\n 'mummified',\n 'mummify',\n 'mummy',\n 'mumps',\n 'munchkin',\n 'mundane',\n 'municipal',\n 'muppet',\n 'mural',\n 'murkiness',\n 'murky',\n 'murmuring',\n 'muscular',\n 'museum',\n 'mushily',\n 'mushiness',\n 'mushroom',\n 'mushy',\n 'music',\n 'musket',\n 'muskiness',\n 'musky',\n 'mustang',\n 'mustard',\n 'muster',\n 'mustiness',\n 'musty',\n 'mutable',\n 'mutate',\n 'mutation',\n 'mute',\n 'mutilated',\n 'mutilator',\n 'mutiny',\n 'mutt',\n 'mutual',\n 'muzzle',\n 'myself',\n 'myspace',\n 'mystified',\n 'mystify',\n 'myth',\n 'nacho',\n 'nag',\n 'nail',\n 'name',\n 'naming',\n 'nanny',\n 'nanometer',\n 'nape',\n 'napkin',\n 'napped',\n 'napping',\n 'nappy',\n 'narrow',\n 'nastily',\n 'nastiness',\n 'national',\n 'native',\n 'nativity',\n 'natural',\n 'nature',\n 'naturist',\n 'nautical',\n 'navigate',\n 'navigator',\n 'navy',\n 'nearby',\n 'nearest',\n 'nearly',\n 'nearness',\n 'neatly',\n 'neatness',\n 'nebula',\n 'nebulizer',\n 'nectar',\n 'negate',\n 'negation',\n 'negative',\n 'neglector',\n 'negligee',\n 'negligent',\n 'negotiate',\n 'nemeses',\n 'nemesis',\n 'neon',\n 'nephew',\n 'nerd',\n 'nervous',\n 'nervy',\n 'nest',\n 'net',\n 'neurology',\n 'neuron',\n 'neurosis',\n 'neurotic',\n 'neuter',\n 'neutron',\n 'never',\n 'next',\n 'nibble',\n 'nickname',\n 'nicotine',\n 'niece',\n 'nifty',\n 'nimble',\n 'nimbly',\n 'nineteen',\n 'ninetieth',\n 'ninja',\n 'nintendo',\n 'ninth',\n 'nuclear',\n 'nuclei',\n 'nucleus',\n 'nugget',\n 'nullify',\n 'number',\n 'numbing',\n 'numbly',\n 'numbness',\n 'numeral',\n 'numerate',\n 'numerator',\n 'numeric',\n 'numerous',\n 'nuptials',\n 'nursery',\n 'nursing',\n 'nurture',\n 'nutcase',\n 'nutlike',\n 'nutmeg',\n 'nutrient',\n 'nutshell',\n 'nuttiness',\n 'nutty',\n 'nuzzle',\n 'nylon',\n 'oaf',\n 'oak',\n 'oasis',\n 'oat',\n 'obedience',\n 'obedient',\n 'obituary',\n 'object',\n 'obligate',\n 'obliged',\n 'oblivion',\n 'oblivious',\n 'oblong',\n 'obnoxious',\n 'oboe',\n 'obscure',\n 'obscurity',\n 'observant',\n 'observer',\n 'observing',\n 'obsessed',\n 'obsession',\n 'obsessive',\n 'obsolete',\n 'obstacle',\n 'obstinate',\n 'obstruct',\n 'obtain',\n 'obtrusive',\n 'obtuse',\n 'obvious',\n 'occultist',\n 'occupancy',\n 'occupant',\n 'occupier',\n 'occupy',\n 'ocean',\n 'ocelot',\n 'octagon',\n 'octane',\n 'october',\n 'octopus',\n 'ogle',\n 'oil',\n 'oink',\n 'ointment',\n 'okay',\n 'old',\n 'olive',\n 'olympics',\n 'omega',\n 'omen',\n 'ominous',\n 'omission',\n 'omit',\n 'omnivore',\n 'onboard',\n 'oncoming',\n 'ongoing',\n 'onion',\n 'online',\n 'onlooker',\n 'only',\n 'onscreen',\n 'onset',\n 'onshore',\n 'onslaught',\n 'onstage',\n 'onto',\n 'onward',\n 'onyx',\n 'oops',\n 'ooze',\n 'oozy',\n 'opacity',\n 'opal',\n 'open',\n 'operable',\n 'operate',\n 'operating',\n 'operation',\n 'operative',\n 'operator',\n 'opium',\n 'opossum',\n 'opponent',\n 'oppose',\n 'opposing',\n 'opposite',\n 'oppressed',\n 'oppressor',\n 'opt',\n 'opulently',\n 'osmosis',\n 'other',\n 'otter',\n 'ouch',\n 'ought',\n 'ounce',\n 'outage',\n 'outback',\n 'outbid',\n 'outboard',\n 'outbound',\n 'outbreak',\n 'outburst',\n 'outcast',\n 'outclass',\n 'outcome',\n 'outdated',\n 'outdoors',\n 'outer',\n 'outfield',\n 'outfit',\n 'outflank',\n 'outgoing',\n 'outgrow',\n 'outhouse',\n 'outing',\n 'outlast',\n 'outlet',\n 'outline',\n 'outlook',\n 'outlying',\n 'outmatch',\n 'outmost',\n 'outnumber',\n 'outplayed',\n 'outpost',\n 'outpour',\n 'output',\n 'outrage',\n 'outrank',\n 'outreach',\n 'outright',\n 'outscore',\n 'outsell',\n 'outshine',\n 'outshoot',\n 'outsider',\n 'outskirts',\n 'outsmart',\n 'outsource',\n 'outspoken',\n 'outtakes',\n 'outthink',\n 'outward',\n 'outweigh',\n 'outwit',\n 'oval',\n 'ovary',\n 'oven',\n 'overact',\n 'overall',\n 'overarch',\n 'overbid',\n 'overbill',\n 'overbite',\n 'overblown',\n 'overboard',\n 'overbook',\n 'overbuilt',\n 'overcast',\n 'overcoat',\n 'overcome',\n 'overcook',\n 'overcrowd',\n 'overdraft',\n 'overdrawn',\n 'overdress',\n 'overdrive',\n 'overdue',\n 'overeager',\n 'overeater',\n 'overexert',\n 'overfed',\n 'overfeed',\n 'overfill',\n 'overflow',\n 'overfull',\n 'overgrown',\n 'overhand',\n 'overhang',\n 'overhaul',\n 'overhead',\n 'overhear',\n 'overheat',\n 'overhung',\n 'overjoyed',\n 'overkill',\n 'overlabor',\n 'overlaid',\n 'overlap',\n 'overlay',\n 'overload',\n 'overlook',\n 'overlord',\n 'overlying',\n 'overnight',\n 'overpass',\n 'overpay',\n 'overplant',\n 'overplay',\n 'overpower',\n 'overprice',\n 'overrate',\n 'overreach',\n 'overreact',\n 'override',\n 'overripe',\n 'overrule',\n 'overrun',\n 'overshoot',\n 'overshot',\n 'oversight',\n 'oversized',\n 'oversleep',\n 'oversold',\n 'overspend',\n 'overstate',\n 'overstay',\n 'overstep',\n 'overstock',\n 'overstuff',\n 'oversweet',\n 'overtake',\n 'overthrow',\n 'overtime',\n 'overtly',\n 'overtone',\n 'overture',\n 'overturn',\n 'overuse',\n 'overvalue',\n 'overview',\n 'overwrite',\n 'owl',\n 'oxford',\n 'oxidant',\n 'oxidation',\n 'oxidize',\n 'oxidizing',\n 'oxygen',\n 'oxymoron',\n 'oyster',\n 'ozone',\n 'paced',\n 'pacemaker',\n 'pacific',\n 'pacifier',\n 'pacifism',\n 'pacifist',\n 'pacify',\n 'padded',\n 'padding',\n 'paddle',\n 'paddling',\n 'padlock',\n 'pagan',\n 'pager',\n 'paging',\n 'pajamas',\n 'palace',\n 'palatable',\n 'palm',\n 'palpable',\n 'palpitate',\n 'paltry',\n 'pampered',\n 'pamperer',\n 'pampers',\n 'pamphlet',\n 'panama',\n 'pancake',\n 'pancreas',\n 'panda',\n 'pandemic',\n 'pang',\n 'panhandle',\n 'panic',\n 'panning',\n 'panorama',\n 'panoramic',\n 'panther',\n 'pantomime',\n 'pantry',\n 'pants',\n 'pantyhose',\n 'paparazzi',\n 'papaya',\n 'paper',\n 'paprika',\n 'papyrus',\n 'parabola',\n 'parachute',\n 'parade',\n 'paradox',\n 'paragraph',\n 'parakeet',\n 'paralegal',\n 'paralyses',\n 'paralysis',\n 'paralyze',\n 'paramedic',\n 'parameter',\n 'paramount',\n 'parasail',\n 'parasite',\n 'parasitic',\n 'parcel',\n 'parched',\n 'parchment',\n 'pardon',\n 'parish',\n 'parka',\n 'parking',\n 'parkway',\n 'parlor',\n 'parmesan',\n 'parole',\n 'parrot',\n 'parsley',\n 'parsnip',\n 'partake',\n 'parted',\n 'parting',\n 'partition',\n 'partly',\n 'partner',\n 'partridge',\n 'party',\n 'passable',\n 'passably',\n 'passage',\n 'passcode',\n 'passenger',\n 'passerby',\n 'passing',\n 'passion',\n 'passive',\n 'passivism',\n 'passover',\n 'passport',\n 'password',\n 'pasta',\n 'pasted',\n 'pastel',\n 'pastime',\n 'pastor',\n 'pastrami',\n 'pasture',\n 'pasty',\n 'patchwork',\n 'patchy',\n 'paternal',\n 'paternity',\n 'path',\n 'patience',\n 'patient',\n 'patio',\n 'patriarch',\n 'patriot',\n 'patrol',\n 'patronage',\n 'patronize',\n 'pauper',\n 'pavement',\n 'paver',\n 'pavestone',\n 'pavilion',\n 'paving',\n 'pawing',\n 'payable',\n 'payback',\n 'paycheck',\n 'payday',\n 'payee',\n 'payer',\n 'paying',\n 'payment',\n 'payphone',\n 'payroll',\n 'pebble',\n 'pebbly',\n 'pecan',\n 'pectin',\n 'peculiar',\n 'peddling',\n 'pediatric',\n 'pedicure',\n 'pedigree',\n 'pedometer',\n 'pegboard',\n 'pelican',\n 'pellet',\n 'pelt',\n 'pelvis',\n 'penalize',\n 'penalty',\n 'pencil',\n 'pendant',\n 'pending',\n 'penholder',\n 'penknife',\n 'pennant',\n 'penniless',\n 'penny',\n 'penpal',\n 'pension',\n 'pentagon',\n 'pentagram',\n 'pep',\n 'perceive',\n 'percent',\n 'perch',\n 'percolate',\n 'perennial',\n 'perfected',\n 'perfectly',\n 'perfume',\n 'periscope',\n 'perish',\n 'perjurer',\n 'perjury',\n 'perkiness',\n 'perky',\n 'perm',\n 'peroxide',\n 'perpetual',\n 'perplexed',\n 'persecute',\n 'persevere',\n 'persuaded',\n 'persuader',\n 'pesky',\n 'peso',\n 'pessimism',\n 'pessimist',\n 'pester',\n 'pesticide',\n 'petal',\n 'petite',\n 'petition',\n 'petri',\n 'petroleum',\n 'petted',\n 'petticoat',\n 'pettiness',\n 'petty',\n 'petunia',\n 'phantom',\n 'phobia',\n 'phoenix',\n 'phonebook',\n 'phoney',\n 'phonics',\n 'phoniness',\n 'phony',\n 'phosphate',\n 'photo',\n 'phrase',\n 'phrasing',\n 'placard',\n 'placate',\n 'placidly',\n 'plank',\n 'planner',\n 'plant',\n 'plasma',\n 'plaster',\n 'plastic',\n 'plated',\n 'platform',\n 'plating',\n 'platinum',\n 'platonic',\n 'platter',\n 'platypus',\n 'plausible',\n 'plausibly',\n 'playable',\n 'playback',\n 'player',\n 'playful',\n 'playgroup',\n 'playhouse',\n 'playing',\n 'playlist',\n 'playmaker',\n 'playmate',\n 'playoff',\n 'playpen',\n 'playroom',\n 'playset',\n 'plaything',\n 'playtime',\n 'plaza',\n 'pleading',\n 'pleat',\n 'pledge',\n 'plentiful',\n 'plenty',\n 'plethora',\n 'plexiglas',\n 'pliable',\n 'plod',\n 'plop',\n 'plot',\n 'plow',\n 'ploy',\n 'pluck',\n 'plug',\n 'plunder',\n 'plunging',\n 'plural',\n 'plus',\n 'plutonium',\n 'plywood',\n 'poach',\n 'pod',\n 'poem',\n 'poet',\n 'pogo',\n 'pointed',\n 'pointer',\n 'pointing',\n 'pointless',\n 'pointy',\n 'poise',\n 'poison',\n 'poker',\n 'poking',\n 'polar',\n 'police',\n 'policy',\n 'polio',\n 'polish',\n 'politely',\n 'polka',\n 'polo',\n 'polyester',\n 'polygon',\n 'polygraph',\n 'polymer',\n 'poncho',\n 'pond',\n 'pony',\n 'popcorn',\n 'pope',\n 'poplar',\n 'popper',\n 'poppy',\n 'popsicle',\n 'populace',\n 'popular',\n 'populate',\n 'porcupine',\n 'pork',\n 'porous',\n 'porridge',\n 'portable',\n 'portal',\n 'portfolio',\n 'porthole',\n 'portion',\n 'portly',\n 'portside',\n 'poser',\n 'posh',\n 'posing',\n 'possible',\n 'possibly',\n 'possum',\n 'postage',\n 'postal',\n 'postbox',\n 'postcard',\n 'posted',\n 'poster',\n 'posting',\n 'postnasal',\n 'posture',\n 'postwar',\n 'pouch',\n 'pounce',\n 'pouncing',\n 'pound',\n 'pouring',\n 'pout',\n 'powdered',\n 'powdering',\n 'powdery',\n 'power',\n 'powwow',\n 'pox',\n 'praising',\n 'prance',\n 'prancing',\n 'pranker',\n 'prankish',\n 'prankster',\n 'prayer',\n 'praying',\n 'preacher',\n 'preaching',\n 'preachy',\n 'preamble',\n 'precinct',\n 'precise',\n 'precision',\n 'precook',\n 'precut',\n 'predator',\n 'predefine',\n 'predict',\n 'preface',\n 'prefix',\n 'preflight',\n 'preformed',\n 'pregame',\n 'pregnancy',\n 'pregnant',\n 'preheated',\n 'prelaunch',\n 'prelaw',\n 'prelude',\n 'premiere',\n 'premises',\n 'premium',\n 'prenatal',\n 'preoccupy',\n 'preorder',\n 'prepaid',\n 'prepay',\n 'preplan',\n 'preppy',\n 'preschool',\n 'prescribe',\n 'preseason',\n 'preset',\n 'preshow',\n 'president',\n 'presoak',\n 'press',\n 'presume',\n 'presuming',\n 'preteen',\n 'pretended',\n 'pretender',\n 'pretense',\n 'pretext',\n 'pretty',\n 'pretzel',\n 'prevail',\n 'prevalent',\n 'prevent',\n 'preview',\n 'previous',\n 'prewar',\n 'prewashed',\n 'prideful',\n 'pried',\n 'primal',\n 'primarily',\n 'primary',\n 'primate',\n 'primer',\n 'primp',\n 'princess',\n 'print',\n 'prior',\n 'prism',\n 'prison',\n 'prissy',\n 'pristine',\n 'privacy',\n 'private',\n 'privatize',\n 'prize',\n 'proactive',\n 'probable',\n 'probably',\n 'probation',\n 'probe',\n 'probing',\n 'probiotic',\n 'problem',\n 'procedure',\n 'process',\n 'proclaim',\n 'procreate',\n 'procurer',\n 'prodigal',\n 'prodigy',\n 'produce',\n 'product',\n 'profane',\n 'profanity',\n 'professed',\n 'professor',\n 'profile',\n 'profound',\n 'profusely',\n 'progeny',\n 'prognosis',\n 'program',\n 'progress',\n 'projector',\n 'prologue',\n 'prolonged',\n 'promenade',\n 'prominent',\n 'promoter',\n 'promotion',\n 'prompter',\n 'promptly',\n 'prone',\n 'prong',\n 'pronounce',\n 'pronto',\n 'proofing',\n 'proofread',\n 'proofs',\n 'propeller',\n 'properly',\n 'property',\n 'proponent',\n 'proposal',\n 'propose',\n 'props',\n 'prorate',\n 'protector',\n 'protegee',\n 'proton',\n 'prototype',\n 'protozoan',\n 'protract',\n 'protrude',\n 'proud',\n 'provable',\n 'proved',\n 'proven',\n 'provided',\n 'provider',\n 'providing',\n 'province',\n 'proving',\n 'provoke',\n 'provoking',\n 'provolone',\n 'prowess',\n 'prowler',\n 'prowling',\n 'proximity',\n 'proxy',\n 'prozac',\n 'prude',\n 'prudishly',\n 'prune',\n 'pruning',\n 'pry',\n 'psychic',\n 'public',\n 'publisher',\n 'pucker',\n 'pueblo',\n 'pug',\n 'pull',\n 'pulmonary',\n 'pulp',\n 'pulsate',\n 'pulse',\n 'pulverize',\n 'puma',\n 'pumice',\n 'pummel',\n 'punch',\n 'punctual',\n 'punctuate',\n 'punctured',\n 'pungent',\n 'punisher',\n 'punk',\n 'pupil',\n 'puppet',\n 'puppy',\n 'purchase',\n 'pureblood',\n 'purebred',\n 'purely',\n 'pureness',\n 'purgatory',\n 'purge',\n 'purging',\n 'purifier',\n 'purify',\n 'purist',\n 'puritan',\n 'purity',\n 'purple',\n 'purplish',\n 'purposely',\n 'purr',\n 'purse',\n 'pursuable',\n 'pursuant',\n 'pursuit',\n 'purveyor',\n 'pushcart',\n 'pushchair',\n 'pusher',\n 'pushiness',\n 'pushing',\n 'pushover',\n 'pushpin',\n 'pushup',\n 'pushy',\n 'putdown',\n 'putt',\n 'puzzle',\n 'puzzling',\n 'pyramid',\n 'pyromania',\n 'python',\n 'quack',\n 'quadrant',\n 'quail',\n 'quaintly',\n 'quake',\n 'quaking',\n 'qualified',\n 'qualifier',\n 'qualify',\n 'quality',\n 'qualm',\n 'quantum',\n 'quarrel',\n 'quarry',\n 'quartered',\n 'quarterly',\n 'quarters',\n 'quartet',\n 'quench',\n 'query',\n 'quicken',\n 'quickly',\n 'quickness',\n 'quicksand',\n 'quickstep',\n 'quiet',\n 'quill',\n 'quilt',\n 'quintet',\n 'quintuple',\n 'quirk',\n 'quit',\n 'quiver',\n 'quizzical',\n 'quotable',\n 'quotation',\n 'quote',\n 'rabid',\n 'race',\n 'racing',\n 'racism',\n 'rack',\n 'racoon',\n 'radar',\n 'radial',\n 'radiance',\n 'radiantly',\n 'radiated',\n 'radiation',\n 'radiator',\n 'radio',\n 'radish',\n 'raffle',\n 'raft',\n 'rage',\n 'ragged',\n 'raging',\n 'ragweed',\n 'raider',\n 'railcar',\n 'railing',\n 'railroad',\n 'railway',\n 'raisin',\n 'rake',\n 'raking',\n 'rally',\n 'ramble',\n 'rambling',\n 'ramp',\n 'ramrod',\n 'ranch',\n 'rancidity',\n 'random',\n 'ranged',\n 'ranger',\n 'ranging',\n 'ranked',\n 'ranking',\n 'ransack',\n 'ranting',\n 'rants',\n 'rare',\n 'rarity',\n 'rascal',\n 'rash',\n 'rasping',\n 'ravage',\n 'raven',\n 'ravine',\n 'raving',\n 'ravioli',\n 'ravishing',\n 'reabsorb',\n 'reach',\n 'reacquire',\n 'reaction',\n 'reactive',\n 'reactor',\n 'reaffirm',\n 'ream',\n 'reanalyze',\n 'reappear',\n 'reapply',\n 'reappoint',\n 'reapprove',\n 'rearrange',\n 'rearview',\n 'reason',\n 'reassign',\n 'reassure',\n 'reattach',\n 'reawake',\n 'rebalance',\n 'rebate',\n 'rebel',\n 'rebirth',\n 'reboot',\n 'reborn',\n 'rebound',\n 'rebuff',\n 'rebuild',\n 'rebuilt',\n 'reburial',\n 'rebuttal',\n 'recall',\n 'recant',\n 'recapture',\n 'recast',\n 'recede',\n 'recent',\n 'recess',\n 'recharger',\n 'recipient',\n 'recital',\n 'recite',\n 'reckless',\n 'reclaim',\n 'recliner',\n 'reclining',\n 'recluse',\n 'reclusive',\n 'recognize',\n 'recoil',\n 'recollect',\n 'recolor',\n 'reconcile',\n 'reconfirm',\n 'reconvene',\n 'recopy',\n 'record',\n 'recount',\n 'recoup',\n 'recovery',\n 'recreate',\n 'rectal',\n 'rectangle',\n 'rectified',\n 'rectify',\n 'recycled',\n 'recycler',\n 'recycling',\n 'reemerge',\n 'reenact',\n 'reenter',\n 'reentry',\n 'reexamine',\n 'referable',\n 'referee',\n 'reference',\n 'refill',\n 'refinance',\n 'refined',\n 'refinery',\n 'refining',\n 'refinish',\n 'reflected',\n 'reflector',\n 'reflex',\n 'reflux',\n 'refocus',\n 'refold',\n 'reforest',\n 'reformat',\n 'reformed',\n 'reformer',\n 'reformist',\n 'refract',\n 'refrain',\n 'refreeze',\n 'refresh',\n 'refried',\n 'refueling',\n 'refund',\n 'refurbish',\n 'refurnish',\n 'refusal',\n 'refuse',\n 'refusing',\n 'refutable',\n 'refute',\n 'regain',\n 'regalia',\n 'regally',\n 'reggae',\n 'regime',\n 'region',\n 'register',\n 'registrar',\n 'registry',\n 'regress',\n 'regretful',\n 'regroup',\n 'regular',\n 'regulate',\n 'regulator',\n 'rehab',\n 'reheat',\n 'rehire',\n 'rehydrate',\n 'reimburse',\n 'reissue',\n 'reiterate',\n 'rejoice',\n 'rejoicing',\n 'rejoin',\n 'rekindle',\n 'relapse',\n 'relapsing',\n 'relatable',\n 'related',\n 'relation',\n 'relative',\n 'relax',\n 'relay',\n 'relearn',\n 'release',\n 'relenting',\n 'reliable',\n 'reliably',\n 'reliance',\n 'reliant',\n 'relic',\n 'relieve',\n 'relieving',\n 'relight',\n 'relish',\n 'relive',\n 'reload',\n 'relocate',\n 'relock',\n 'reluctant',\n 'rely',\n 'remake',\n 'remark',\n 'remarry',\n 'rematch',\n 'remedial',\n 'remedy',\n 'remember',\n 'reminder',\n 'remindful',\n 'remission',\n 'remix',\n 'remnant',\n 'remodeler',\n 'remold',\n 'remorse',\n 'remote',\n 'removable',\n 'removal',\n 'removed',\n 'remover',\n 'removing',\n 'rename',\n 'renderer',\n 'rendering',\n 'rendition',\n 'renegade',\n 'renewable',\n 'renewably',\n 'renewal',\n 'renewed',\n 'renounce',\n 'renovate',\n 'renovator',\n 'rentable',\n 'rental',\n 'rented',\n 'renter',\n 'reoccupy',\n 'reoccur',\n 'reopen',\n 'reorder',\n 'repackage',\n 'repacking',\n 'repaint',\n 'repair',\n 'repave',\n 'repaying',\n 'repayment',\n 'repeal',\n 'repeated',\n 'repeater',\n 'repent',\n 'rephrase',\n 'replace',\n 'replay',\n 'replica',\n 'reply',\n 'reporter',\n 'repose',\n 'repossess',\n 'repost',\n 'repressed',\n 'reprimand',\n 'reprint',\n 'reprise',\n 'reproach',\n 'reprocess',\n 'reproduce',\n 'reprogram',\n 'reps',\n 'reptile',\n 'reptilian',\n 'repugnant',\n 'repulsion',\n 'repulsive',\n 'repurpose',\n 'reputable',\n 'reputably',\n 'request',\n 'require',\n 'requisite',\n 'reroute',\n 'rerun',\n 'resale',\n 'resample',\n 'rescuer',\n 'reseal',\n 'research',\n 'reselect',\n 'reseller',\n 'resemble',\n 'resend',\n 'resent',\n 'reset',\n 'reshape',\n 'reshoot',\n 'reshuffle',\n 'residence',\n 'residency',\n 'resident',\n 'residual',\n 'residue',\n 'resigned',\n 'resilient',\n 'resistant',\n 'resisting',\n 'resize',\n 'resolute',\n 'resolved',\n 'resonant',\n 'resonate',\n 'resort',\n 'resource',\n 'respect',\n 'resubmit',\n 'result',\n 'resume',\n 'resupply',\n 'resurface',\n 'resurrect',\n 'retail',\n 'retainer',\n 'retaining',\n 'retake',\n 'retaliate',\n 'retention',\n 'rethink',\n 'retinal',\n 'retired',\n 'retiree',\n 'retiring',\n 'retold',\n 'retool',\n 'retorted',\n 'retouch',\n 'retrace',\n 'retract',\n 'retrain',\n 'retread',\n 'retreat',\n 'retrial',\n 'retrieval',\n 'retriever',\n 'retry',\n 'return',\n 'retying',\n 'retype',\n 'reunion',\n 'reunite',\n 'reusable',\n 'reuse',\n 'reveal',\n 'reveler',\n 'revenge',\n 'revenue',\n 'reverb',\n 'revered',\n 'reverence',\n 'reverend',\n 'reversal',\n 'reverse',\n 'reversing',\n 'reversion',\n 'revert',\n 'revisable',\n 'revise',\n 'revision',\n 'revisit',\n 'revivable',\n 'revival',\n 'reviver',\n 'reviving',\n 'revocable',\n 'revoke',\n 'revolt',\n 'revolver',\n 'revolving',\n 'reward',\n 'rewash',\n 'rewind',\n 'rewire',\n 'reword',\n 'rework',\n 'rewrap',\n 'rewrite',\n 'rhyme',\n 'ribbon',\n 'ribcage',\n 'rice',\n 'riches',\n 'richly',\n 'richness',\n 'rickety',\n 'ricotta',\n 'riddance',\n 'ridden',\n 'ride',\n 'riding',\n 'rifling',\n 'rift',\n 'rigging',\n 'rigid',\n 'rigor',\n 'rimless',\n 'rimmed',\n 'rind',\n 'rink',\n 'rinse',\n 'rinsing',\n 'riot',\n 'ripcord',\n 'ripeness',\n 'ripening',\n 'ripping',\n 'ripple',\n 'rippling',\n 'riptide',\n 'rise',\n 'rising',\n 'risk',\n 'risotto',\n 'ritalin',\n 'ritzy',\n 'rival',\n 'riverbank',\n 'riverbed',\n 'riverboat',\n 'riverside',\n 'riveter',\n 'riveting',\n 'roamer',\n 'roaming',\n 'roast',\n 'robbing',\n 'robe',\n 'robin',\n 'robotics',\n 'robust',\n 'rockband',\n 'rocker',\n 'rocket',\n 'rockfish',\n 'rockiness',\n 'rocking',\n 'rocklike',\n 'rockslide',\n 'rockstar',\n 'rocky',\n 'rogue',\n 'roman',\n 'romp',\n 'rope',\n 'roping',\n 'roster',\n 'rosy',\n 'rotten',\n 'rotting',\n 'rotunda',\n 'roulette',\n 'rounding',\n 'roundish',\n 'roundness',\n 'roundup',\n 'roundworm',\n 'routine',\n 'routing',\n 'rover',\n 'roving',\n 'royal',\n 'rubbed',\n 'rubber',\n 'rubbing',\n 'rubble',\n 'rubdown',\n 'ruby',\n 'ruckus',\n 'rudder',\n 'rug',\n 'ruined',\n 'rule',\n 'rumble',\n 'rumbling',\n 'rummage',\n 'rumor',\n 'runaround',\n 'rundown',\n 'runner',\n 'running',\n 'runny',\n 'runt',\n 'runway',\n 'rupture',\n 'rural',\n 'ruse',\n 'rush',\n 'rust',\n 'rut',\n 'sabbath',\n 'sabotage',\n 'sacrament',\n 'sacred',\n 'sacrifice',\n 'sadden',\n 'saddlebag',\n 'saddled',\n 'saddling',\n 'sadly',\n 'sadness',\n 'safari',\n 'safeguard',\n 'safehouse',\n 'safely',\n 'safeness',\n 'saffron',\n 'saga',\n 'sage',\n 'sagging',\n 'saggy',\n 'said',\n 'saint',\n 'sake',\n 'salad',\n 'salami',\n 'salaried',\n 'salary',\n 'saline',\n 'salon',\n 'saloon',\n 'salsa',\n 'salt',\n 'salutary',\n 'salute',\n 'salvage',\n 'salvaging',\n 'salvation',\n 'same',\n 'sample',\n 'sampling',\n 'sanction',\n 'sanctity',\n 'sanctuary',\n 'sandal',\n 'sandbag',\n 'sandbank',\n 'sandbar',\n 'sandblast',\n 'sandbox',\n 'sanded',\n 'sandfish',\n 'sanding',\n 'sandlot',\n 'sandpaper',\n 'sandpit',\n 'sandstone',\n 'sandstorm',\n 'sandworm',\n 'sandy',\n 'sanitary',\n 'sanitizer',\n 'sank',\n 'santa',\n 'sapling',\n 'sappiness',\n 'sappy',\n 'sarcasm',\n 'sarcastic',\n 'sardine',\n 'sash',\n 'sasquatch',\n 'sassy',\n 'satchel',\n 'satiable',\n 'satin',\n 'satirical',\n 'satisfied',\n 'satisfy',\n 'saturate',\n 'saturday',\n 'sauciness',\n 'saucy',\n 'sauna',\n 'savage',\n 'savanna',\n 'saved',\n 'savings',\n 'savior',\n 'savor',\n 'saxophone',\n 'say',\n 'scabbed',\n 'scabby',\n 'scalded',\n 'scalding',\n 'scale',\n 'scaling',\n 'scallion',\n 'scallop',\n 'scalping',\n 'scam',\n 'scandal',\n 'scanner',\n 'scanning',\n 'scant',\n 'scapegoat',\n 'scarce',\n 'scarcity',\n 'scarecrow',\n 'scared',\n 'scarf',\n 'scarily',\n 'scariness',\n 'scarring',\n 'scary',\n 'scavenger',\n 'scenic',\n 'schedule',\n 'schematic',\n 'scheme',\n 'scheming',\n 'schilling',\n 'schnapps',\n 'scholar',\n 'science',\n 'scientist',\n 'scion',\n 'scoff',\n 'scolding',\n 'scone',\n 'scoop',\n 'scooter',\n 'scope',\n 'scorch',\n 'scorebook',\n 'scorecard',\n 'scored',\n 'scoreless',\n 'scorer',\n 'scoring',\n 'scorn',\n 'scorpion',\n 'scotch',\n 'scoundrel',\n 'scoured',\n 'scouring',\n 'scouting',\n 'scouts',\n 'scowling',\n 'scrabble',\n 'scraggly',\n 'scrambled',\n 'scrambler',\n 'scrap',\n 'scratch',\n 'scrawny',\n 'screen',\n 'scribble',\n 'scribe',\n 'scribing',\n 'scrimmage',\n 'script',\n 'scroll',\n 'scrooge',\n 'scrounger',\n 'scrubbed',\n 'scrubber',\n 'scruffy',\n 'scrunch',\n 'scrutiny',\n 'scuba',\n 'scuff',\n 'sculptor',\n 'sculpture',\n 'scurvy',\n 'scuttle',\n 'secluded',\n 'secluding',\n 'seclusion',\n 'second',\n 'secrecy',\n 'secret',\n 'sectional',\n 'sector',\n 'secular',\n 'securely',\n 'security',\n 'sedan',\n 'sedate',\n 'sedation',\n 'sedative',\n 'sediment',\n 'seduce',\n 'seducing',\n 'segment',\n 'seismic',\n 'seizing',\n 'seldom',\n 'selected',\n 'selection',\n 'selective',\n 'selector',\n 'self',\n 'seltzer',\n 'semantic',\n 'semester',\n 'semicolon',\n 'semifinal',\n 'seminar',\n 'semisoft',\n 'semisweet',\n 'senate',\n 'senator',\n 'send',\n 'senior',\n 'senorita',\n 'sensation',\n 'sensitive',\n 'sensitize',\n 'sensually',\n 'sensuous',\n 'sepia',\n 'september',\n 'septic',\n 'septum',\n 'sequel',\n 'sequence',\n 'sequester',\n 'series',\n 'sermon',\n 'serotonin',\n 'serpent',\n 'serrated',\n 'serve',\n 'service',\n 'serving',\n 'sesame',\n 'sessions',\n 'setback',\n 'setting',\n 'settle',\n 'settling',\n 'setup',\n 'sevenfold',\n 'seventeen',\n 'seventh',\n 'seventy',\n 'severity',\n 'shabby',\n 'shack',\n 'shaded',\n 'shadily',\n 'shadiness',\n 'shading',\n 'shadow',\n 'shady',\n 'shaft',\n 'shakable',\n 'shakily',\n 'shakiness',\n 'shaking',\n 'shaky',\n 'shale',\n 'shallot',\n 'shallow',\n 'shame',\n 'shampoo',\n 'shamrock',\n 'shank',\n 'shanty',\n 'shape',\n 'shaping',\n 'share',\n 'sharpener',\n 'sharper',\n 'sharpie',\n 'sharply',\n 'sharpness',\n 'shawl',\n 'sheath',\n 'shed',\n 'sheep',\n 'sheet',\n 'shelf',\n 'shell',\n 'shelter',\n 'shelve',\n 'shelving',\n 'sherry',\n 'shield',\n 'shifter',\n 'shifting',\n 'shiftless',\n 'shifty',\n 'shimmer',\n 'shimmy',\n 'shindig',\n 'shine',\n 'shingle',\n 'shininess',\n 'shining',\n 'shiny',\n 'ship',\n 'shirt',\n 'shivering',\n 'shock',\n 'shone',\n 'shoplift',\n 'shopper',\n 'shopping',\n 'shoptalk',\n 'shore',\n 'shortage',\n 'shortcake',\n 'shortcut',\n 'shorten',\n 'shorter',\n 'shorthand',\n 'shortlist',\n 'shortly',\n 'shortness',\n 'shorts',\n 'shortwave',\n 'shorty',\n 'shout',\n 'shove',\n 'showbiz',\n 'showcase',\n 'showdown',\n 'shower',\n 'showgirl',\n 'showing',\n 'showman',\n 'shown',\n 'showoff',\n 'showpiece',\n 'showplace',\n 'showroom',\n 'showy',\n 'shrank',\n 'shrapnel',\n 'shredder',\n 'shredding',\n 'shrewdly',\n 'shriek',\n 'shrill',\n 'shrimp',\n 'shrine',\n 'shrink',\n 'shrivel',\n 'shrouded',\n 'shrubbery',\n 'shrubs',\n 'shrug',\n 'shrunk',\n 'shucking',\n 'shudder',\n 'shuffle',\n 'shuffling',\n 'shun',\n 'shush',\n 'shut',\n 'shy',\n 'siamese',\n 'siberian',\n 'sibling',\n 'siding',\n 'sierra',\n 'siesta',\n 'sift',\n 'sighing',\n 'silenced',\n 'silencer',\n 'silent',\n 'silica',\n 'silicon',\n 'silk',\n 'silliness',\n 'silly',\n 'silo',\n 'silt',\n 'silver',\n 'similarly',\n 'simile',\n 'simmering',\n 'simple',\n 'simplify',\n 'simply',\n 'sincere',\n 'sincerity',\n 'singer',\n 'singing',\n 'single',\n 'singular',\n 'sinister',\n 'sinless',\n 'sinner',\n 'sinuous',\n 'sip',\n 'siren',\n 'sister',\n 'sitcom',\n 'sitter',\n 'sitting',\n 'situated',\n 'situation',\n 'sixfold',\n 'sixteen',\n 'sixth',\n 'sixties',\n 'sixtieth',\n 'sixtyfold',\n 'sizable',\n 'sizably',\n 'size',\n 'sizing',\n 'sizzle',\n 'sizzling',\n 'skater',\n 'skating',\n 'skedaddle',\n 'skeletal',\n 'skeleton',\n 'skeptic',\n 'sketch',\n 'skewed',\n 'skewer',\n 'skid',\n 'skied',\n 'skier',\n 'skies',\n 'skiing',\n 'skilled',\n 'skillet',\n 'skillful',\n 'skimmed',\n 'skimmer',\n 'skimming',\n 'skimpily',\n 'skincare',\n 'skinhead',\n 'skinless',\n 'skinning',\n 'skinny',\n 'skintight',\n 'skipper',\n 'skipping',\n 'skirmish',\n 'skirt',\n 'skittle',\n 'skydiver',\n 'skylight',\n 'skyline',\n 'skype',\n 'skyrocket',\n 'skyward',\n 'slab',\n 'slacked',\n 'slacker',\n 'slacking',\n 'slackness',\n 'slacks',\n 'slain',\n 'slam',\n 'slander',\n 'slang',\n 'slapping',\n 'slapstick',\n 'slashed',\n 'slashing',\n 'slate',\n 'slather',\n 'slaw',\n 'sled',\n 'sleek',\n 'sleep',\n 'sleet',\n 'sleeve',\n 'slept',\n 'sliceable',\n 'sliced',\n 'slicer',\n 'slicing',\n 'slick',\n 'slider',\n 'slideshow',\n 'sliding',\n 'slighted',\n 'slighting',\n 'slightly',\n 'slimness',\n 'slimy',\n 'slinging',\n 'slingshot',\n 'slinky',\n 'slip',\n 'slit',\n 'sliver',\n 'slobbery',\n 'slogan',\n 'sloped',\n 'sloping',\n 'sloppily',\n 'sloppy',\n 'slot',\n 'slouching',\n 'slouchy',\n 'sludge',\n 'slug',\n 'slum',\n 'slurp',\n 'slush',\n 'sly',\n 'small',\n 'smartly',\n 'smartness',\n 'smasher',\n 'smashing',\n 'smashup',\n 'smell',\n 'smelting',\n 'smile',\n 'smilingly',\n 'smirk',\n 'smite',\n 'smith',\n 'smitten',\n 'smock',\n 'smog',\n 'smoked',\n 'smokeless',\n 'smokiness',\n 'smoking',\n 'smoky',\n 'smolder',\n 'smooth',\n 'smother',\n 'smudge',\n 'smudgy',\n 'smuggler',\n 'smuggling',\n 'smugly',\n 'smugness',\n 'snack',\n 'snagged',\n 'snaking',\n 'snap',\n 'snare',\n 'snarl',\n 'snazzy',\n 'sneak',\n 'sneer',\n 'sneeze',\n 'sneezing',\n 'snide',\n 'sniff',\n 'snippet',\n 'snipping',\n 'snitch',\n 'snooper',\n 'snooze',\n 'snore',\n 'snoring',\n 'snorkel',\n 'snort',\n 'snout',\n 'snowbird',\n 'snowboard',\n 'snowbound',\n 'snowcap',\n 'snowdrift',\n 'snowdrop',\n 'snowfall',\n 'snowfield',\n 'snowflake',\n 'snowiness',\n 'snowless',\n 'snowman',\n 'snowplow',\n 'snowshoe',\n 'snowstorm',\n 'snowsuit',\n 'snowy',\n 'snub',\n 'snuff',\n 'snuggle',\n 'snugly',\n 'snugness',\n 'speak',\n 'spearfish',\n 'spearhead',\n 'spearman',\n 'spearmint',\n 'species',\n 'specimen',\n 'specked',\n 'speckled',\n 'specks',\n 'spectacle',\n 'spectator',\n 'spectrum',\n 'speculate',\n 'speech',\n 'speed',\n 'spellbind',\n 'speller',\n 'spelling',\n 'spendable',\n 'spender',\n 'spending',\n 'spent',\n 'spew',\n 'sphere',\n 'spherical',\n 'sphinx',\n 'spider',\n 'spied',\n 'spiffy',\n 'spill',\n 'spilt',\n 'spinach',\n 'spinal',\n 'spindle',\n 'spinner',\n 'spinning',\n 'spinout',\n 'spinster',\n 'spiny',\n 'spiral',\n 'spirited',\n 'spiritism',\n 'spirits',\n 'spiritual',\n 'splashed',\n 'splashing',\n 'splashy',\n 'splatter',\n 'spleen',\n 'splendid',\n 'splendor',\n 'splice',\n 'splicing',\n 'splinter',\n 'splotchy',\n 'splurge',\n 'spoilage',\n 'spoiled',\n 'spoiler',\n 'spoiling',\n 'spoils',\n 'spoken',\n 'spokesman',\n 'sponge',\n 'spongy',\n 'sponsor',\n 'spoof',\n 'spookily',\n 'spooky',\n 'spool',\n 'spoon',\n 'spore',\n 'sporting',\n 'sports',\n 'sporty',\n 'spotless',\n 'spotlight',\n 'spotted',\n 'spotter',\n 'spotting',\n 'spotty',\n 'spousal',\n 'spouse',\n 'spout',\n 'sprain',\n 'sprang',\n 'sprawl',\n 'spray',\n 'spree',\n 'sprig',\n 'spring',\n 'sprinkled',\n 'sprinkler',\n 'sprint',\n 'sprite',\n 'sprout',\n 'spruce',\n 'sprung',\n 'spry',\n 'spud',\n 'spur',\n 'sputter',\n 'spyglass',\n 'squabble',\n 'squad',\n 'squall',\n 'squander',\n 'squash',\n 'squatted',\n 'squatter',\n 'squatting',\n 'squeak',\n 'squealer',\n 'squealing',\n 'squeamish',\n 'squeegee',\n 'squeeze',\n 'squeezing',\n 'squid',\n 'squiggle',\n 'squiggly',\n 'squint',\n 'squire',\n 'squirt',\n 'squishier',\n 'squishy',\n 'stability',\n 'stabilize',\n 'stable',\n 'stack',\n 'stadium',\n 'staff',\n 'stage',\n 'staging',\n 'stagnant',\n 'stagnate',\n 'stainable',\n 'stained',\n 'staining',\n 'stainless',\n 'stalemate',\n 'staleness',\n 'stalling',\n 'stallion',\n 'stamina',\n 'stammer',\n 'stamp',\n 'stand',\n 'stank',\n 'staple',\n 'stapling',\n 'starboard',\n 'starch',\n 'stardom',\n 'stardust',\n 'starfish',\n 'stargazer',\n 'staring',\n 'stark',\n 'starless',\n 'starlet',\n 'starlight',\n 'starlit',\n 'starring',\n 'starry',\n 'starship',\n 'starter',\n 'starting',\n 'startle',\n 'startling',\n 'startup',\n 'starved',\n 'starving',\n 'stash',\n 'state',\n 'static',\n 'statistic',\n 'statue',\n 'stature',\n 'status',\n 'statute',\n 'statutory',\n 'staunch',\n 'stays',\n 'steadfast',\n 'steadier',\n 'steadily',\n 'steadying',\n 'steam',\n 'steed',\n 'steep',\n 'steerable',\n 'steering',\n 'steersman',\n 'stegosaur',\n 'stellar',\n 'stem',\n 'stench',\n 'stencil',\n 'step',\n 'stereo',\n 'sterile',\n 'sterility',\n 'sterilize',\n 'sterling',\n 'sternness',\n 'sternum',\n 'stew',\n 'stick',\n 'stiffen',\n 'stiffly',\n 'stiffness',\n 'stifle',\n 'stifling',\n 'stillness',\n 'stilt',\n 'stimulant',\n 'stimulate',\n 'stimuli',\n 'stimulus',\n 'stinger',\n 'stingily',\n 'stinging',\n 'stingray',\n 'stingy',\n 'stinking',\n 'stinky',\n 'stipend',\n 'stipulate',\n 'stir',\n 'stitch',\n 'stock',\n 'stoic',\n 'stoke',\n 'stole',\n 'stomp',\n 'stonewall',\n 'stoneware',\n 'stonework',\n 'stoning',\n 'stony',\n 'stood',\n 'stooge',\n 'stool',\n 'stoop',\n 'stoplight',\n 'stoppable',\n 'stoppage',\n 'stopped',\n 'stopper',\n 'stopping',\n 'stopwatch',\n 'storable',\n 'storage',\n 'storeroom',\n 'storewide',\n 'storm',\n 'stout',\n 'stove',\n 'stowaway',\n 'stowing',\n 'straddle',\n 'straggler',\n 'strained',\n 'strainer',\n 'straining',\n 'strangely',\n 'stranger',\n 'strangle',\n 'strategic',\n 'strategy',\n 'stratus',\n 'straw',\n 'stray',\n 'streak',\n 'stream',\n 'street',\n 'strength',\n 'strenuous',\n 'strep',\n 'stress',\n 'stretch',\n 'strewn',\n 'stricken',\n 'strict',\n 'stride',\n 'strife',\n 'strike',\n 'striking',\n 'strive',\n 'striving',\n 'strobe',\n 'strode',\n 'stroller',\n 'strongbox',\n 'strongly',\n 'strongman',\n 'struck',\n 'structure',\n 'strudel',\n 'struggle',\n 'strum',\n 'strung',\n 'strut',\n 'stubbed',\n 'stubble',\n 'stubbly',\n 'stubborn',\n 'stucco',\n 'stuck',\n 'student',\n 'studied',\n 'studio',\n 'study',\n 'stuffed',\n 'stuffing',\n 'stuffy',\n 'stumble',\n 'stumbling',\n 'stump',\n 'stung',\n 'stunned',\n 'stunner',\n 'stunning',\n 'stunt',\n 'stupor',\n 'sturdily',\n 'sturdy',\n 'styling',\n 'stylishly',\n 'stylist',\n 'stylized',\n 'stylus',\n 'suave',\n 'subarctic',\n 'subatomic',\n 'subdivide',\n 'subdued',\n 'subduing',\n 'subfloor',\n 'subgroup',\n 'subheader',\n 'subject',\n 'sublease',\n 'sublet',\n 'sublevel',\n 'sublime',\n 'submarine',\n 'submerge',\n 'submersed',\n 'submitter',\n 'subpanel',\n 'subpar',\n 'subplot',\n 'subprime',\n 'subscribe',\n 'subscript',\n 'subsector',\n 'subside',\n 'subsiding',\n 'subsidize',\n 'subsidy',\n 'subsoil',\n 'subsonic',\n 'substance',\n 'subsystem',\n 'subtext',\n 'subtitle',\n 'subtly',\n 'subtotal',\n 'subtract',\n 'subtype',\n 'suburb',\n 'subway',\n 'subwoofer',\n 'subzero',\n 'succulent',\n 'such',\n 'suction',\n 'sudden',\n 'sudoku',\n 'suds',\n 'sufferer',\n 'suffering',\n 'suffice',\n 'suffix',\n 'suffocate',\n 'suffrage',\n 'sugar',\n 'suggest',\n 'suing',\n 'suitable',\n 'suitably',\n 'suitcase',\n 'suitor',\n 'sulfate',\n 'sulfide',\n 'sulfite',\n 'sulfur',\n 'sulk',\n 'sullen',\n 'sulphate',\n 'sulphuric',\n 'sultry',\n 'superbowl',\n 'superglue',\n 'superhero',\n 'superior',\n 'superjet',\n 'superman',\n 'supermom',\n 'supernova',\n 'supervise',\n 'supper',\n 'supplier',\n 'supply',\n 'support',\n 'supremacy',\n 'supreme',\n 'surcharge',\n 'surely',\n 'sureness',\n 'surface',\n 'surfacing',\n 'surfboard',\n 'surfer',\n 'surgery',\n 'surgical',\n 'surging',\n 'surname',\n 'surpass',\n 'surplus',\n 'surprise',\n 'surreal',\n 'surrender',\n 'surrogate',\n 'surround',\n 'survey',\n 'survival',\n 'survive',\n 'surviving',\n 'survivor',\n 'sushi',\n 'suspect',\n 'suspend',\n 'suspense',\n 'sustained',\n 'sustainer',\n 'swab',\n 'swaddling',\n 'swagger',\n 'swampland',\n 'swan',\n 'swapping',\n 'swarm',\n 'sway',\n 'swear',\n 'sweat',\n 'sweep',\n 'swell',\n 'swept',\n 'swerve',\n 'swifter',\n 'swiftly',\n 'swiftness',\n 'swimmable',\n 'swimmer',\n 'swimming',\n 'swimsuit',\n 'swimwear',\n 'swinger',\n 'swinging',\n 'swipe',\n 'swirl',\n 'switch',\n 'swivel',\n 'swizzle',\n 'swooned',\n 'swoop',\n 'swoosh',\n 'swore',\n 'sworn',\n 'swung',\n 'sycamore',\n 'sympathy',\n 'symphonic',\n 'symphony',\n 'symptom',\n 'synapse',\n 'syndrome',\n 'synergy',\n 'synopses',\n 'synopsis',\n 'synthesis',\n 'synthetic',\n 'syrup',\n 'system',\n 't-shirt',\n 'tabasco',\n 'tabby',\n 'tableful',\n 'tables',\n 'tablet',\n 'tableware',\n 'tabloid',\n 'tackiness',\n 'tacking',\n 'tackle',\n 'tackling',\n 'tacky',\n 'taco',\n 'tactful',\n 'tactical',\n 'tactics',\n 'tactile',\n 'tactless',\n 'tadpole',\n 'taekwondo',\n 'tag',\n 'tainted',\n 'take',\n 'taking',\n 'talcum',\n 'talisman',\n 'tall',\n 'talon',\n 'tamale',\n 'tameness',\n 'tamer',\n 'tamper',\n 'tank',\n 'tanned',\n 'tannery',\n 'tanning',\n 'tantrum',\n 'tapeless',\n 'tapered',\n 'tapering',\n 'tapestry',\n 'tapioca',\n 'tapping',\n 'taps',\n 'tarantula',\n 'target',\n 'tarmac',\n 'tarnish',\n 'tarot',\n 'tartar',\n 'tartly',\n 'tartness',\n 'task',\n 'tassel',\n 'taste',\n 'tastiness',\n 'tasting',\n 'tasty',\n 'tattered',\n 'tattle',\n 'tattling',\n 'tattoo',\n 'taunt',\n 'tavern',\n 'thank',\n 'that',\n 'thaw',\n 'theater',\n 'theatrics',\n 'thee',\n 'theft',\n 'theme',\n 'theology',\n 'theorize',\n 'thermal',\n 'thermos',\n 'thesaurus',\n 'these',\n 'thesis',\n 'thespian',\n 'thicken',\n 'thicket',\n 'thickness',\n 'thieving',\n 'thievish',\n 'thigh',\n 'thimble',\n 'thing',\n 'think',\n 'thinly',\n 'thinner',\n 'thinness',\n 'thinning',\n 'thirstily',\n 'thirsting',\n 'thirsty',\n 'thirteen',\n 'thirty',\n 'thong',\n 'thorn',\n 'those',\n 'thousand',\n 'thrash',\n 'thread',\n 'threaten',\n 'threefold',\n 'thrift',\n 'thrill',\n 'thrive',\n 'thriving',\n 'throat',\n 'throbbing',\n 'throng',\n 'throttle',\n 'throwaway',\n 'throwback',\n 'thrower',\n 'throwing',\n 'thud',\n 'thumb',\n 'thumping',\n 'thursday',\n 'thus',\n 'thwarting',\n 'thyself',\n 'tiara',\n 'tibia',\n 'tidal',\n 'tidbit',\n 'tidiness',\n 'tidings',\n 'tidy',\n 'tiger',\n 'tighten',\n 'tightly',\n 'tightness',\n 'tightrope',\n 'tightwad',\n 'tigress',\n 'tile',\n 'tiling',\n 'till',\n 'tilt',\n 'timid',\n 'timing',\n 'timothy',\n 'tinderbox',\n 'tinfoil',\n 'tingle',\n 'tingling',\n 'tingly',\n 'tinker',\n 'tinkling',\n 'tinsel',\n 'tinsmith',\n 'tint',\n 'tinwork',\n 'tiny',\n 'tipoff',\n 'tipped',\n 'tipper',\n 'tipping',\n 'tiptoeing',\n 'tiptop',\n 'tiring',\n 'tissue',\n 'trace',\n 'tracing',\n 'track',\n 'traction',\n 'tractor',\n 'trade',\n 'trading',\n 'tradition',\n 'traffic',\n 'tragedy',\n 'trailing',\n 'trailside',\n 'train',\n 'traitor',\n 'trance',\n 'tranquil',\n 'transfer',\n 'transform',\n 'translate',\n 'transpire',\n 'transport',\n 'transpose',\n 'trapdoor',\n 'trapeze',\n 'trapezoid',\n 'trapped',\n 'trapper',\n 'trapping',\n 'traps',\n 'trash',\n 'travel',\n 'traverse',\n 'travesty',\n 'tray',\n 'treachery',\n 'treading',\n 'treadmill',\n 'treason',\n 'treat',\n 'treble',\n 'tree',\n 'trekker',\n 'tremble',\n 'trembling',\n 'tremor',\n 'trench',\n 'trend',\n 'trespass',\n 'triage',\n 'trial',\n 'triangle',\n 'tribesman',\n 'tribunal',\n 'tribune',\n 'tributary',\n 'tribute',\n 'triceps',\n 'trickery',\n 'trickily',\n 'tricking',\n 'trickle',\n 'trickster',\n 'tricky',\n 'tricolor',\n 'tricycle',\n 'trident',\n 'tried',\n 'trifle',\n 'trifocals',\n 'trillion',\n 'trilogy',\n 'trimester',\n 'trimmer',\n 'trimming',\n 'trimness',\n 'trinity',\n 'trio',\n 'tripod',\n 'tripping',\n 'triumph',\n 'trivial',\n 'trodden',\n 'trolling',\n 'trombone',\n 'trophy',\n 'tropical',\n 'tropics',\n 'trouble',\n 'troubling',\n 'trough',\n 'trousers',\n 'trout',\n 'trowel',\n 'truce',\n 'truck',\n 'truffle',\n 'trump',\n 'trunks',\n 'trustable',\n 'trustee',\n 'trustful',\n 'trusting',\n 'trustless',\n 'truth',\n 'try',\n 'tubby',\n 'tubeless',\n 'tubular',\n 'tucking',\n 'tuesday',\n 'tug',\n 'tuition',\n 'tulip',\n 'tumble',\n 'tumbling',\n 'tummy',\n 'turban',\n 'turbine',\n 'turbofan',\n 'turbojet',\n 'turbulent',\n 'turf',\n 'turkey',\n 'turmoil',\n 'turret',\n 'turtle',\n 'tusk',\n 'tutor',\n 'tutu',\n 'tux',\n 'tweak',\n 'tweed',\n 'tweet',\n 'tweezers',\n 'twelve',\n 'twentieth',\n 'twenty',\n 'twerp',\n 'twice',\n 'twiddle',\n 'twiddling',\n 'twig',\n 'twilight',\n 'twine',\n 'twins',\n 'twirl',\n 'twistable',\n 'twisted',\n 'twister',\n 'twisting',\n 'twisty',\n 'twitch',\n 'twitter',\n 'tycoon',\n 'tying',\n 'tyke',\n 'udder',\n 'ultimate',\n 'ultimatum',\n 'ultra',\n 'umbilical',\n 'umbrella',\n 'umpire',\n 'unabashed',\n 'unable',\n 'unadorned',\n 'unadvised',\n 'unafraid',\n 'unaired',\n 'unaligned',\n 'unaltered',\n 'unarmored',\n 'unashamed',\n 'unaudited',\n 'unawake',\n 'unaware',\n 'unbaked',\n 'unbalance',\n 'unbeaten',\n 'unbend',\n 'unbent',\n 'unbiased',\n 'unbitten',\n 'unblended',\n 'unblessed',\n 'unblock',\n 'unbolted',\n 'unbounded',\n 'unboxed',\n 'unbraided',\n 'unbridle',\n 'unbroken',\n 'unbuckled',\n 'unbundle',\n 'unburned',\n 'unbutton',\n 'uncanny',\n 'uncapped',\n 'uncaring',\n 'uncertain',\n 'unchain',\n 'unchanged',\n 'uncharted',\n 'uncheck',\n 'uncivil',\n 'unclad',\n 'unclaimed',\n 'unclamped',\n 'unclasp',\n 'uncle',\n 'unclip',\n 'uncloak',\n 'unclog',\n 'unclothed',\n 'uncoated',\n 'uncoiled',\n 'uncolored',\n 'uncombed',\n 'uncommon',\n 'uncooked',\n 'uncork',\n 'uncorrupt',\n 'uncounted',\n 'uncouple',\n 'uncouth',\n 'uncover',\n 'uncross',\n 'uncrown',\n 'uncrushed',\n 'uncured',\n 'uncurious',\n 'uncurled',\n 'uncut',\n 'undamaged',\n 'undated',\n 'undaunted',\n 'undead',\n 'undecided',\n 'undefined',\n 'underage',\n 'underarm',\n 'undercoat',\n 'undercook',\n 'undercut',\n 'underdog',\n 'underdone',\n 'underfed',\n 'underfeed',\n 'underfoot',\n 'undergo',\n 'undergrad',\n 'underhand',\n 'underline',\n 'underling',\n 'undermine',\n 'undermost',\n 'underpaid',\n 'underpass',\n 'underpay',\n 'underrate',\n 'undertake',\n 'undertone',\n 'undertook',\n 'undertow',\n 'underuse',\n 'underwear',\n 'underwent',\n 'underwire',\n 'undesired',\n 'undiluted',\n 'undivided',\n 'undocked',\n 'undoing',\n 'undone',\n 'undrafted',\n 'undress',\n 'undrilled',\n 'undusted',\n 'undying',\n 'unearned',\n 'unearth',\n 'unease',\n 'uneasily',\n 'uneasy',\n 'uneatable',\n 'uneaten',\n 'unedited',\n 'unelected',\n 'unending',\n 'unengaged',\n 'unenvied',\n 'unequal',\n 'unethical',\n 'uneven',\n 'unexpired',\n 'unexposed',\n 'unfailing',\n 'unfair',\n 'unfasten',\n 'unfazed',\n 'unfeeling',\n 'unfiled',\n 'unfilled',\n 'unfitted',\n 'unfitting',\n 'unfixable',\n 'unfixed',\n 'unflawed',\n 'unfocused',\n 'unfold',\n 'unfounded',\n 'unframed',\n 'unfreeze',\n 'unfrosted',\n 'unfrozen',\n 'unfunded',\n 'unglazed',\n 'ungloved',\n 'unglue',\n 'ungodly',\n 'ungraded',\n 'ungreased',\n 'unguarded',\n 'unguided',\n 'unhappily',\n 'unhappy',\n 'unharmed',\n 'unhealthy',\n 'unheard',\n 'unhearing',\n 'unheated',\n 'unhelpful',\n 'unhidden',\n 'unhinge',\n 'unhitched',\n 'unholy',\n 'unhook',\n 'unicorn',\n 'unicycle',\n 'unified',\n 'unifier',\n 'uniformed',\n 'uniformly',\n 'unify',\n 'unimpeded',\n 'uninjured',\n 'uninstall',\n 'uninsured',\n 'uninvited',\n 'union',\n 'uniquely',\n 'unisexual',\n 'unison',\n 'unissued',\n 'unit',\n 'universal',\n 'universe',\n 'unjustly',\n 'unkempt',\n 'unkind',\n 'unknotted',\n 'unknowing',\n 'unknown',\n 'unlaced',\n 'unlatch',\n 'unlawful',\n 'unleaded',\n 'unlearned',\n 'unleash',\n 'unless',\n 'unleveled',\n 'unlighted',\n 'unlikable',\n 'unlimited',\n 'unlined',\n 'unlinked',\n 'unlisted',\n 'unlit',\n 'unlivable',\n 'unloaded',\n 'unloader',\n 'unlocked',\n 'unlocking',\n 'unlovable',\n 'unloved',\n 'unlovely',\n 'unloving',\n 'unluckily',\n 'unlucky',\n 'unmade',\n 'unmanaged',\n 'unmanned',\n 'unmapped',\n 'unmarked',\n 'unmasked',\n 'unmasking',\n 'unmatched',\n 'unmindful',\n 'unmixable',\n 'unmixed',\n 'unmolded',\n 'unmoral',\n 'unmovable',\n 'unmoved',\n 'unmoving',\n 'unnamable',\n 'unnamed',\n 'unnatural',\n 'unneeded',\n 'unnerve',\n 'unnerving',\n 'unnoticed',\n 'unopened',\n 'unopposed',\n 'unpack',\n 'unpadded',\n 'unpaid',\n 'unpainted',\n 'unpaired',\n 'unpaved',\n 'unpeeled',\n 'unpicked',\n 'unpiloted',\n 'unpinned',\n 'unplanned',\n 'unplanted',\n 'unpleased',\n 'unpledged',\n 'unplowed',\n 'unplug',\n 'unpopular',\n 'unproven',\n 'unquote',\n 'unranked',\n 'unrated',\n 'unraveled',\n 'unreached',\n 'unread',\n 'unreal',\n 'unreeling',\n 'unrefined',\n 'unrelated',\n 'unrented',\n 'unrest',\n 'unretired',\n 'unrevised',\n 'unrigged',\n 'unripe',\n 'unrivaled',\n 'unroasted',\n 'unrobed',\n 'unroll',\n 'unruffled',\n 'unruly',\n 'unrushed',\n 'unsaddle',\n 'unsafe',\n 'unsaid',\n 'unsalted',\n 'unsaved',\n 'unsavory',\n 'unscathed',\n 'unscented',\n 'unscrew',\n 'unsealed',\n 'unseated',\n 'unsecured',\n 'unseeing',\n 'unseemly',\n 'unseen',\n 'unselect',\n 'unselfish',\n 'unsent',\n 'unsettled',\n 'unshackle',\n 'unshaken',\n 'unshaved',\n 'unshaven',\n 'unsheathe',\n 'unshipped',\n 'unsightly',\n 'unsigned',\n 'unskilled',\n 'unsliced',\n 'unsmooth',\n 'unsnap',\n 'unsocial',\n 'unsoiled',\n 'unsold',\n 'unsolved',\n 'unsorted',\n 'unspoiled',\n 'unspoken',\n 'unstable',\n 'unstaffed',\n 'unstamped',\n 'unsteady',\n 'unsterile',\n 'unstirred',\n 'unstitch',\n 'unstopped',\n 'unstuck',\n 'unstuffed',\n 'unstylish',\n 'unsubtle',\n 'unsubtly',\n 'unsuited',\n 'unsure',\n 'unsworn',\n 'untagged',\n 'untainted',\n 'untaken',\n 'untamed',\n 'untangled',\n 'untapped',\n 'untaxed',\n 'unthawed',\n 'unthread',\n 'untidy',\n 'untie',\n 'until',\n 'untimed',\n 'untimely',\n 'untitled',\n 'untoasted',\n 'untold',\n 'untouched',\n 'untracked',\n 'untrained',\n 'untreated',\n 'untried',\n 'untrimmed',\n 'untrue',\n 'untruth',\n 'unturned',\n 'untwist',\n 'untying',\n 'unusable',\n 'unused',\n 'unusual',\n 'unvalued',\n 'unvaried',\n 'unvarying',\n 'unveiled',\n 'unveiling',\n 'unvented',\n 'unviable',\n 'unvisited',\n 'unvocal',\n 'unwanted',\n 'unwarlike',\n 'unwary',\n 'unwashed',\n 'unwatched',\n 'unweave',\n 'unwed',\n 'unwelcome',\n 'unwell',\n 'unwieldy',\n 'unwilling',\n 'unwind',\n 'unwired',\n 'unwitting',\n 'unwomanly',\n 'unworldly',\n 'unworn',\n 'unworried',\n 'unworthy',\n 'unwound',\n 'unwoven',\n 'unwrapped',\n 'unwritten',\n 'unzip',\n 'upbeat',\n 'upchuck',\n 'upcoming',\n 'upcountry',\n 'update',\n 'upfront',\n 'upgrade',\n 'upheaval',\n 'upheld',\n 'uphill',\n 'uphold',\n 'uplifted',\n 'uplifting',\n 'upload',\n 'upon',\n 'upper',\n 'upright',\n 'uprising',\n 'upriver',\n 'uproar',\n 'uproot',\n 'upscale',\n 'upside',\n 'upstage',\n 'upstairs',\n 'upstart',\n 'upstate',\n 'upstream',\n 'upstroke',\n 'upswing',\n 'uptake',\n 'uptight',\n 'uptown',\n 'upturned',\n 'upward',\n 'upwind',\n 'uranium',\n 'urban',\n 'urchin',\n 'urethane',\n 'urgency',\n 'urgent',\n 'urging',\n 'urologist',\n 'urology',\n 'usable',\n 'usage',\n 'useable',\n 'used',\n 'uselessly',\n 'user',\n 'usher',\n 'usual',\n 'utensil',\n 'utility',\n 'utilize',\n 'utmost',\n 'utopia',\n 'utter',\n 'vacancy',\n 'vacant',\n 'vacate',\n 'vacation',\n 'vagabond',\n 'vagrancy',\n 'vagrantly',\n 'vaguely',\n 'vagueness',\n 'valiant',\n 'valid',\n 'valium',\n 'valley',\n 'valuables',\n 'value',\n 'vanilla',\n 'vanish',\n 'vanity',\n 'vanquish',\n 'vantage',\n 'vaporizer',\n 'variable',\n 'variably',\n 'varied',\n 'variety',\n 'various',\n 'varmint',\n 'varnish',\n 'varsity',\n 'varying',\n 'vascular',\n 'vaseline',\n 'vastly',\n 'vastness',\n 'veal',\n 'vegan',\n 'veggie',\n 'vehicular',\n 'velcro',\n 'velocity',\n 'velvet',\n 'vendetta',\n 'vending',\n 'vendor',\n 'veneering',\n 'vengeful',\n 'venomous',\n 'ventricle',\n 'venture',\n 'venue',\n 'venus',\n 'verbalize',\n 'verbally',\n 'verbose',\n 'verdict',\n 'verify',\n 'verse',\n 'version',\n 'versus',\n 'vertebrae',\n 'vertical',\n 'vertigo',\n 'very',\n 'vessel',\n 'vest',\n 'veteran',\n 'veto',\n 'vexingly',\n 'viability',\n 'viable',\n 'vibes',\n 'vice',\n 'vicinity',\n 'victory',\n 'video',\n 'viewable',\n 'viewer',\n 'viewing',\n 'viewless',\n 'viewpoint',\n 'vigorous',\n 'village',\n 'villain',\n 'vindicate',\n 'vineyard',\n 'vintage',\n 'violate',\n 'violation',\n 'violator',\n 'violet',\n 'violin',\n 'viper',\n 'viral',\n 'virtual',\n 'virtuous',\n 'virus',\n 'visa',\n 'viscosity',\n 'viscous',\n 'viselike',\n 'visible',\n 'visibly',\n 'vision',\n 'visiting',\n 'visitor',\n 'visor',\n 'vista',\n 'vitality',\n 'vitalize',\n 'vitally',\n 'vitamins',\n 'vivacious',\n 'vividly',\n 'vividness',\n 'vixen',\n 'vocalist',\n 'vocalize',\n 'vocally',\n 'vocation',\n 'voice',\n 'voicing',\n 'void',\n 'volatile',\n 'volley',\n 'voltage',\n 'volumes',\n 'voter',\n 'voting',\n 'voucher',\n 'vowed',\n 'vowel',\n 'voyage',\n 'wackiness',\n 'wad',\n 'wafer',\n 'waffle',\n 'waged',\n 'wager',\n 'wages',\n 'waggle',\n 'wagon',\n 'wake',\n 'waking',\n 'walk',\n 'walmart',\n 'walnut',\n 'walrus',\n 'waltz',\n 'wand',\n 'wannabe',\n 'wanted',\n 'wanting',\n 'wasabi',\n 'washable',\n 'washbasin',\n 'washboard',\n 'washbowl',\n 'washcloth',\n 'washday',\n 'washed',\n 'washer',\n 'washhouse',\n 'washing',\n 'washout',\n 'washroom',\n 'washstand',\n 'washtub',\n 'wasp',\n 'wasting',\n 'watch',\n 'water',\n 'waviness',\n 'waving',\n 'wavy',\n 'whacking',\n 'whacky',\n 'wham',\n 'wharf',\n 'wheat',\n 'whenever',\n 'whiff',\n 'whimsical',\n 'whinny',\n 'whiny',\n 'whisking',\n 'whoever',\n 'whole',\n 'whomever',\n 'whoopee',\n 'whooping',\n 'whoops',\n 'why',\n 'wick',\n 'widely',\n 'widen',\n 'widget',\n 'widow',\n 'width',\n 'wieldable',\n 'wielder',\n 'wife',\n 'wifi',\n 'wikipedia',\n 'wildcard',\n 'wildcat',\n 'wilder',\n 'wildfire',\n 'wildfowl',\n 'wildland',\n 'wildlife',\n 'wildly',\n 'wildness',\n 'willed',\n 'willfully',\n 'willing',\n 'willow',\n 'willpower',\n 'wilt',\n 'wimp',\n 'wince',\n 'wincing',\n 'wind',\n 'wing',\n 'winking',\n 'winner',\n 'winnings',\n 'winter',\n 'wipe',\n 'wired',\n 'wireless',\n 'wiring',\n 'wiry',\n 'wisdom',\n 'wise',\n 'wish',\n 'wisplike',\n 'wispy',\n 'wistful',\n 'wizard',\n 'wobble',\n 'wobbling',\n 'wobbly',\n 'wok',\n 'wolf',\n 'wolverine',\n 'womanhood',\n 'womankind',\n 'womanless',\n 'womanlike',\n 'womanly',\n 'womb',\n 'woof',\n 'wooing',\n 'wool',\n 'woozy',\n 'word',\n 'work',\n 'worried',\n 'worrier',\n 'worrisome',\n 'worry',\n 'worsening',\n 'worshiper',\n 'worst',\n 'wound',\n 'woven',\n 'wow',\n 'wrangle',\n 'wrath',\n 'wreath',\n 'wreckage',\n 'wrecker',\n 'wrecking',\n 'wrench',\n 'wriggle',\n 'wriggly',\n 'wrinkle',\n 'wrinkly',\n 'wrist',\n 'writing',\n 'written',\n 'wrongdoer',\n 'wronged',\n 'wrongful',\n 'wrongly',\n 'wrongness',\n 'wrought',\n 'xbox',\n 'xerox',\n 'yahoo',\n 'yam',\n 'yanking',\n 'yapping',\n 'yard',\n 'yarn',\n 'yeah',\n 'yearbook',\n 'yearling',\n 'yearly',\n 'yearning',\n 'yeast',\n 'yelling',\n 'yelp',\n 'yen',\n 'yesterday',\n 'yiddish',\n 'yield',\n 'yin',\n 'yippee',\n 'yo-yo',\n 'yodel',\n 'yoga',\n 'yogurt',\n 'yonder',\n 'yoyo',\n 'yummy',\n 'zap',\n 'zealous',\n 'zebra',\n 'zen',\n 'zeppelin',\n 'zero',\n 'zestfully',\n 'zesty',\n 'zigzagged',\n 'zipfile',\n 'zipping',\n 'zippy',\n 'zips',\n 'zit',\n 'zodiac',\n 'zombie',\n 'zone',\n 'zoning',\n 'zookeeper',\n 'zoologist',\n 'zoology',\n 'zoom',\n];\n","import { Cipher } from './cipher';\n\nimport { CipherView } from '../view/cipherView';\n\nimport { Cipher as CipherDomain } from '../domain/cipher';\n\nexport class CipherWithIds extends Cipher {\n id: string;\n collectionIds: string[];\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: CipherView | CipherDomain) {\n this.id = o.id;\n super.build(o);\n this.collectionIds = o.collectionIds;\n }\n}\n","import { Collection } from './collection';\n\nimport { CollectionView } from '../view/collectionView';\n\nimport { Collection as CollectionDomain } from '../domain/collection';\n\nexport class CollectionWithId extends Collection {\n id: string;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: CollectionView | CollectionDomain) {\n this.id = o.id;\n super.build(o);\n }\n}\n","import { Folder } from './folder';\n\nimport { FolderView } from '../view/folderView';\n\nimport { Folder as FolderDomain } from '../domain/folder';\n\nexport class FolderWithId extends Folder {\n id: string;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: FolderView | FolderDomain) {\n this.id = o.id;\n super.build(o);\n }\n}\n","import { FolderData } from '../data/folderData';\n\nimport { FolderView } from '../view/folderView';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\n\nexport class Folder extends Domain {\n id: string;\n name: EncString;\n revisionDate: Date;\n\n constructor(obj?: FolderData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n id: null,\n name: null,\n }, alreadyEncrypted, ['id']);\n\n this.revisionDate = obj.revisionDate != null ? new Date(obj.revisionDate) : null;\n }\n\n decrypt(): Promise {\n return this.decryptObj(new FolderView(this), {\n name: null,\n }, null);\n }\n}\n","import { FolderResponse } from '../response/folderResponse';\n\nexport class FolderData {\n id: string;\n userId: string;\n name: string;\n revisionDate: string;\n\n constructor(response: FolderResponse, userId: string) {\n this.userId = userId;\n this.name = response.name;\n this.id = response.id;\n this.revisionDate = response.revisionDate;\n }\n}\n","import { ImportResult } from '../../models/domain/importResult';\nimport { BaseImporter } from '../baseImporter';\nimport { Importer } from '../importer';\n\nimport { CipherType } from '../../enums/cipherType';\nimport { FieldType } from '../../enums/fieldType';\nimport { CipherView } from '../../models/view/cipherView';\nimport { CipherImportContext } from './cipherImportContext';\n\nexport const IgnoredProperties = ['ainfo', 'autosubmit', 'notesplain', 'ps', 'scope', 'tags', 'title', 'uuid', 'notes'];\n\nexport abstract class OnePasswordCsvImporter extends BaseImporter implements Importer {\n protected loginPropertyParsers = [this.setLoginUsername, this.setLoginPassword, this.setLoginUris];\n protected creditCardPropertyParsers = [this.setCreditCardNumber, this.setCreditCardVerification, this.setCreditCardCardholderName, this.setCreditCardExpiry];\n protected identityPropertyParsers = [this.setIdentityFirstName, this.setIdentityInitial, this.setIdentityLastName, this.setIdentityUserName, this.setIdentityEmail, this.setIdentityPhone, this.setIdentityCompany];\n\n abstract setCipherType(value: any, cipher: CipherView): void;\n\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true, {\n quoteChar: '\"',\n escapeChar: '\\\\',\n });\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (this.isNullOrWhitespace(this.getProp(value, 'title'))) {\n return;\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(this.getProp(value, 'title'), '--');\n\n this.setNotes(value, cipher);\n\n this.setCipherType(value, cipher);\n\n let altUsername: string = null;\n for (const property in value) {\n if (!value.hasOwnProperty(property) || this.isNullOrWhitespace(value[property])) {\n continue;\n }\n\n const context = new CipherImportContext(value, property, cipher);\n if (cipher.type === CipherType.Login && this.setKnownLoginValue(context)) {\n continue;\n } else if (cipher.type === CipherType.Card && this.setKnownCreditCardValue(context)) {\n continue;\n } else if (cipher.type === CipherType.Identity && this.setKnownIdentityValue(context)) {\n continue;\n }\n\n altUsername = this.setUnknownValue(context, altUsername);\n }\n\n if (cipher.type === CipherType.Login && !this.isNullOrWhitespace(altUsername) &&\n this.isNullOrWhitespace(cipher.login.username) && altUsername.indexOf('://') === -1) {\n cipher.login.username = altUsername;\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n protected getProp(obj: any, name: string): any {\n const lowerObj = Object.entries(obj).reduce((agg: any, entry: [string, any]) => {\n agg[entry[0].toLowerCase()] = entry[1];\n return agg;\n }, {});\n return lowerObj[name.toLowerCase()];\n }\n\n protected getPropByRegexp(obj: any, regexp: RegExp): any {\n const matchingKeys = Object.keys(obj).reduce((agg: string[], key: string) => {\n if (key.match(regexp)) {\n agg.push(key);\n }\n return agg;\n }, []);\n if (matchingKeys.length === 0) {\n return null;\n } else {\n return obj[matchingKeys[0]];\n }\n }\n\n protected getPropIncluding(obj: any, name: string): any {\n const includesMap = Object.keys(obj).reduce((agg: string[], entry: string) => {\n if (entry.toLowerCase().includes(name.toLowerCase())) {\n agg.push(entry);\n }\n return agg;\n }, []);\n if (includesMap.length === 0) {\n return null;\n } else {\n return obj[includesMap[0]];\n }\n }\n\n protected setNotes(importRecord: any, cipher: CipherView) {\n cipher.notes = this.getValueOrDefault(this.getProp(importRecord, 'notesPlain'), '') + '\\n' +\n this.getValueOrDefault(this.getProp(importRecord, 'notes'), '') + '\\n';\n cipher.notes.trim();\n\n }\n\n protected setKnownLoginValue(context: CipherImportContext): boolean {\n return this.loginPropertyParsers.reduce((agg: boolean, func) => {\n if (!agg) {\n agg = func.bind(this)(context);\n }\n return agg;\n }, false);\n }\n\n protected setKnownCreditCardValue(context: CipherImportContext): boolean {\n return this.creditCardPropertyParsers.reduce((agg: boolean, func) => {\n if (!agg) {\n agg = func.bind(this)(context);\n }\n return agg;\n }, false);\n }\n\n protected setKnownIdentityValue(context: CipherImportContext): boolean {\n return this.identityPropertyParsers.reduce((agg: boolean, func) => {\n if (!agg) {\n agg = func.bind(this)(context);\n }\n return agg;\n }, false);\n }\n\n protected setUnknownValue(context: CipherImportContext, altUsername: string): string {\n if (IgnoredProperties.indexOf(context.lowerProperty) === -1 && !context.lowerProperty.startsWith('section:') &&\n !context.lowerProperty.startsWith('section ')) {\n if (altUsername == null && context.lowerProperty === 'email') {\n return context.importRecord[context.property];\n }\n else if (context.lowerProperty === 'created date' || context.lowerProperty === 'modified date') {\n const readableDate = new Date(parseInt(context.importRecord[context.property], 10) * 1000).toUTCString();\n this.processKvp(context.cipher, '1Password ' + context.property, readableDate);\n return null;\n }\n if (context.lowerProperty.includes('password') || context.lowerProperty.includes('key') || context.lowerProperty.includes('secret')) {\n this.processKvp(context.cipher, context.property, context.importRecord[context.property], FieldType.Hidden);\n } else {\n this.processKvp(context.cipher, context.property, context.importRecord[context.property]);\n }\n }\n return null;\n }\n\n protected setIdentityFirstName(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.identity.firstName) && context.lowerProperty.includes('first name')) {\n context.cipher.identity.firstName = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityInitial(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.identity.middleName) && context.lowerProperty.includes('initial')) {\n context.cipher.identity.middleName = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityLastName(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.identity.lastName) && context.lowerProperty.includes('last name')) {\n context.cipher.identity.lastName = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityUserName(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.identity.username) && context.lowerProperty.includes('username')) {\n context.cipher.identity.username = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityCompany(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.identity.company) && context.lowerProperty.includes('company')) {\n context.cipher.identity.company = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityPhone(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.identity.phone) && context.lowerProperty.includes('default phone')) {\n context.cipher.identity.phone = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setIdentityEmail(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.identity.email) && context.lowerProperty.includes('email')) {\n context.cipher.identity.email = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setCreditCardNumber(context: CipherImportContext): boolean {\n if (this.isNullOrWhitespace(context.cipher.card.number) && context.lowerProperty.includes('number')) {\n context.cipher.card.number = context.importRecord[context.property];\n context.cipher.card.brand = this.getCardBrand(context.cipher.card.number);\n return true;\n }\n return false;\n }\n\n protected setCreditCardVerification(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.card.code) && context.lowerProperty.includes('verification number')) {\n context.cipher.card.code = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setCreditCardCardholderName(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.card.cardholderName) && context.lowerProperty.includes('cardholder name')) {\n context.cipher.card.cardholderName = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setCreditCardExpiry(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.card.expiration) && context.lowerProperty.includes('expiry date') &&\n context.importRecord[context.property].length === 7) {\n context.cipher.card.expMonth = (context.importRecord[context.property] as string).substr(0, 2);\n if (context.cipher.card.expMonth[0] === '0') {\n context.cipher.card.expMonth = context.cipher.card.expMonth.substr(1, 1);\n }\n context.cipher.card.expYear = (context.importRecord[context.property] as string).substr(3, 4);\n return true;\n }\n return false;\n }\n\n protected setLoginPassword(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.login.password) && context.lowerProperty === 'password') {\n context.cipher.login.password = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setLoginUsername(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.login.username) && context.lowerProperty === 'username') {\n context.cipher.login.username = context.importRecord[context.property];\n return true;\n }\n return false;\n }\n\n protected setLoginUris(context: CipherImportContext) {\n if ((context.cipher.login.uris == null || context.cipher.login.uris.length === 0) && context.lowerProperty === 'urls') {\n const urls = context.importRecord[context.property].split(this.newLineRegex);\n context.cipher.login.uris = this.makeUriArray(urls);\n return true;\n } else if ((context.lowerProperty === 'url')) {\n if (context.cipher.login.uris == null) {\n context.cipher.login.uris = [];\n }\n context.cipher.login.uris.concat(this.makeUriArray(context.importRecord[context.property]));\n return true;\n }\n return false;\n }\n}\n","export enum NotificationType {\n SyncCipherUpdate = 0,\n SyncCipherCreate = 1,\n SyncLoginDelete = 2,\n SyncFolderDelete = 3,\n SyncCiphers = 4,\n\n SyncVault = 5,\n SyncOrgKeys = 6,\n SyncFolderCreate = 7,\n SyncFolderUpdate = 8,\n SyncCipherDelete = 9,\n SyncSettings = 10,\n\n LogOut = 11,\n\n SyncSendCreate = 12,\n SyncSendUpdate = 13,\n SyncSendDelete = 14,\n}\n","import { SendType } from '../../enums/sendType';\n\nimport { SendFileData } from './sendFileData';\nimport { SendTextData } from './sendTextData';\n\nimport { SendResponse } from '../response/sendResponse';\n\nexport class SendData {\n id: string;\n accessId: string;\n userId: string;\n type: SendType;\n name: string;\n notes: string;\n file: SendFileData;\n text: SendTextData;\n key: string;\n maxAccessCount?: number;\n accessCount: number;\n revisionDate: string;\n expirationDate: string;\n deletionDate: string;\n password: string;\n disabled: boolean;\n hideEmail: boolean;\n\n constructor(response?: SendResponse, userId?: string) {\n if (response == null) {\n return;\n }\n\n this.id = response.id;\n this.accessId = response.accessId;\n this.userId = userId;\n this.type = response.type;\n this.name = response.name;\n this.notes = response.notes;\n this.key = response.key;\n this.maxAccessCount = response.maxAccessCount;\n this.accessCount = response.accessCount;\n this.revisionDate = response.revisionDate;\n this.expirationDate = response.expirationDate;\n this.deletionDate = response.deletionDate;\n this.password = response.password;\n this.disabled = response.disable;\n this.hideEmail = response.hideEmail;\n\n switch (this.type) {\n case SendType.Text:\n this.text = new SendTextData(response.text);\n break;\n case SendType.File:\n this.file = new SendFileData(response.file);\n break;\n default:\n break;\n }\n }\n}\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport 'bootstrap';\nimport 'jquery';\nimport 'popper.js';\n\n// tslint:disable-next-line\nrequire('../scss/styles.scss');\n\nimport { AppModule } from './app.module';\n\nif (process.env.NODE_ENV === 'production') {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule, { preserveWhitespaces: true });\n","// extracted by mini-css-extract-plugin\nexport {};","import { ToasterModule } from 'angular2-toaster';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\n\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\n\nimport { AppComponent } from './app.component';\nimport { OssRoutingModule } from './oss-routing.module';\nimport { OssModule } from './oss.module';\nimport { ServicesModule } from './services/services.module';\nimport { WildcardRoutingModule } from './wildcard-routing.module';\n\n@NgModule({\n imports: [\n OssModule,\n BrowserAnimationsModule,\n FormsModule,\n ServicesModule,\n ToasterModule.forRoot(),\n InfiniteScrollModule,\n DragDropModule,\n OssRoutingModule,\n WildcardRoutingModule, // Needs to be last to catch all non-existing routes\n ],\n declarations: [\n AppComponent,\n ],\n bootstrap: [AppComponent],\n})\nexport class AppModule { }\n","import * as jq from 'jquery';\nimport Swal from 'sweetalert2';\n\nimport {\n BodyOutputType,\n Toast,\n ToasterConfig,\n ToasterService,\n} from 'angular2-toaster';\n\nimport {\n Component,\n NgZone,\n OnDestroy,\n OnInit,\n SecurityContext,\n} from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport {\n NavigationEnd,\n Router,\n} from '@angular/router';\n\nimport { BroadcasterService } from 'jslib-angular/services/broadcaster.service';\n\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { KeyConnectorService } from 'jslib-common/abstractions/keyConnector.service';\nimport { NotificationsService } from 'jslib-common/abstractions/notifications.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SearchService } from 'jslib-common/abstractions/search.service';\nimport { SettingsService } from 'jslib-common/abstractions/settings.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { TokenService } from 'jslib-common/abstractions/token.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\nimport { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { PolicyListService } from './services/policy-list.service';\nimport { RouterService } from './services/router.service';\n\nimport { DisableSendPolicy } from './organizations/policies/disable-send.component';\nimport { MasterPasswordPolicy } from './organizations/policies/master-password.component';\nimport { PasswordGeneratorPolicy } from './organizations/policies/password-generator.component';\nimport { PersonalOwnershipPolicy } from './organizations/policies/personal-ownership.component';\nimport { RequireSsoPolicy } from './organizations/policies/require-sso.component';\nimport { ResetPasswordPolicy } from './organizations/policies/reset-password.component';\nimport { SendOptionsPolicy } from './organizations/policies/send-options.component';\nimport { SingleOrgPolicy } from './organizations/policies/single-org.component';\nimport { TwoFactorAuthenticationPolicy } from './organizations/policies/two-factor-authentication.component';\n\nconst BroadcasterSubscriptionId = 'AppComponent';\nconst IdleTimeout = 60000 * 10; // 10 minutes\n\n@Component({\n selector: 'app-root',\n templateUrl: 'app.component.html',\n})\nexport class AppComponent implements OnDestroy, OnInit {\n\n toasterConfig: ToasterConfig = new ToasterConfig({\n showCloseButton: true,\n mouseoverTimerStop: true,\n animation: 'flyRight',\n limit: 5,\n });\n\n private lastActivity: number = null;\n private idleTimer: number = null;\n private isIdle = false;\n\n constructor(\n private broadcasterService: BroadcasterService, private userService: UserService,\n private tokenService: TokenService, private folderService: FolderService,\n private settingsService: SettingsService, private syncService: SyncService,\n private passwordGenerationService: PasswordGenerationService, private cipherService: CipherService,\n private authService: AuthService, private router: Router,\n private toasterService: ToasterService, private i18nService: I18nService,\n private platformUtilsService: PlatformUtilsService, private ngZone: NgZone,\n private vaultTimeoutService: VaultTimeoutService, private storageService: StorageService,\n private cryptoService: CryptoService, private collectionService: CollectionService,\n private sanitizer: DomSanitizer, private searchService: SearchService,\n private notificationsService: NotificationsService, private routerService: RouterService,\n private stateService: StateService, private eventService: EventService,\n private policyService: PolicyService, protected policyListService: PolicyListService,\n private keyConnectorService: KeyConnectorService) { }\n\n ngOnInit() {\n this.ngZone.runOutsideAngular(() => {\n window.onmousemove = () => this.recordActivity();\n window.onmousedown = () => this.recordActivity();\n window.ontouchstart = () => this.recordActivity();\n window.onclick = () => this.recordActivity();\n window.onscroll = () => this.recordActivity();\n window.onkeypress = () => this.recordActivity();\n });\n\n this.broadcasterService.subscribe(BroadcasterSubscriptionId, async (message: any) => {\n this.ngZone.run(async () => {\n switch (message.command) {\n case 'loggedIn':\n case 'loggedOut':\n case 'unlocked':\n this.notificationsService.updateConnection(false);\n break;\n case 'authBlocked':\n this.router.navigate(['/']);\n break;\n case 'logout':\n this.logOut(!!message.expired);\n break;\n case 'lockVault':\n await this.vaultTimeoutService.lock();\n break;\n case 'locked':\n this.notificationsService.updateConnection(false);\n this.router.navigate(['lock']);\n break;\n case 'lockedUrl':\n window.setTimeout(() => this.routerService.setPreviousUrl(message.url), 500);\n break;\n case 'syncStarted':\n break;\n case 'syncCompleted':\n break;\n case 'upgradeOrganization':\n const upgradeConfirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('upgradeOrganizationDesc'), this.i18nService.t('upgradeOrganization'),\n this.i18nService.t('upgradeOrganization'), this.i18nService.t('cancel'));\n if (upgradeConfirmed) {\n this.router.navigate(['organizations', message.organizationId, 'settings', 'billing']);\n }\n break;\n case 'premiumRequired':\n const premiumConfirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('premiumRequiredDesc'), this.i18nService.t('premiumRequired'),\n this.i18nService.t('learnMore'), this.i18nService.t('cancel'));\n if (premiumConfirmed) {\n this.router.navigate(['settings/premium']);\n }\n break;\n case 'emailVerificationRequired':\n const emailVerificationConfirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('emailVerificationRequiredDesc'),\n this.i18nService.t('emailVerificationRequired'),\n this.i18nService.t('learnMore'), this.i18nService.t('cancel'));\n if (emailVerificationConfirmed) {\n this.platformUtilsService.launchUri('https://bitwarden.com/help/article/create-bitwarden-account/');\n }\n break;\n case 'showToast':\n if (typeof message.text === \"string\" && typeof crypto.subtle === 'undefined') {\n message.title=\"This browser requires HTTPS to use the web vault\";\n message.text=\"Check the Vaultwarden wiki for details on how to enable it\";\n }\n this.showToast(message);\n break;\n case 'setFullWidth':\n this.setFullWidth();\n break;\n case 'convertAccountToKeyConnector':\n this.keyConnectorService.setConvertAccountRequired(true);\n this.router.navigate(['/remove-password']);\n break;\n default:\n break;\n }\n });\n });\n\n this.router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n const modals = Array.from(document.querySelectorAll('.modal'));\n for (const modal of modals) {\n (jq(modal) as any).modal('hide');\n }\n\n if (document.querySelector('.swal-modal') != null) {\n Swal.close(undefined);\n }\n }\n });\n\n this.policyListService.addPolicies([\n new TwoFactorAuthenticationPolicy(),\n new MasterPasswordPolicy(),\n new PasswordGeneratorPolicy(),\n new SingleOrgPolicy(),\n new RequireSsoPolicy(),\n new PersonalOwnershipPolicy(),\n new DisableSendPolicy(),\n new SendOptionsPolicy(),\n new ResetPasswordPolicy(),\n ]);\n\n this.setFullWidth();\n }\n\n ngOnDestroy() {\n this.broadcasterService.unsubscribe(BroadcasterSubscriptionId);\n }\n\n private async logOut(expired: boolean) {\n await this.eventService.uploadEvents();\n const userId = await this.userService.getUserId();\n\n await Promise.all([\n this.eventService.clearEvents(),\n this.syncService.setLastSync(new Date(0)),\n this.tokenService.clearToken(),\n this.cryptoService.clearKeys(),\n this.userService.clear(),\n this.settingsService.clear(userId),\n this.cipherService.clear(userId),\n this.folderService.clear(userId),\n this.collectionService.clear(userId),\n this.policyService.clear(userId),\n this.passwordGenerationService.clear(),\n this.stateService.purge(),\n this.keyConnectorService.clear(),\n ]);\n\n this.searchService.clearIndex();\n this.authService.logOut(async () => {\n if (expired) {\n this.toasterService.popAsync('warning', this.i18nService.t('loggedOut'),\n this.i18nService.t('loginExpired'));\n }\n\n Swal.close();\n this.router.navigate(['/']);\n });\n }\n\n private async recordActivity() {\n const now = (new Date()).getTime();\n if (this.lastActivity != null && now - this.lastActivity < 250) {\n return;\n }\n\n this.lastActivity = now;\n this.storageService.save(ConstantsService.lastActiveKey, now);\n\n // Idle states\n if (this.isIdle) {\n this.isIdle = false;\n this.idleStateChanged();\n }\n if (this.idleTimer != null) {\n window.clearTimeout(this.idleTimer);\n this.idleTimer = null;\n }\n this.idleTimer = window.setTimeout(() => {\n if (!this.isIdle) {\n this.isIdle = true;\n this.idleStateChanged();\n }\n }, IdleTimeout);\n }\n\n private showToast(msg: any) {\n const toast: Toast = {\n type: msg.type,\n title: msg.title,\n };\n if (typeof (msg.text) === 'string') {\n toast.body = msg.text;\n } else if (msg.text.length === 1) {\n toast.body = msg.text[0];\n } else {\n let message = '';\n msg.text.forEach((t: string) =>\n message += ('

' + this.sanitizer.sanitize(SecurityContext.HTML, t) + '

'));\n toast.body = message;\n toast.bodyOutputType = BodyOutputType.TrustedHtml;\n }\n if (msg.options != null) {\n if (msg.options.trustedHtml === true) {\n toast.bodyOutputType = BodyOutputType.TrustedHtml;\n }\n if (msg.options.timeout != null && msg.options.timeout > 0) {\n toast.timeout = msg.options.timeout;\n }\n }\n this.toasterService.popAsync(toast);\n }\n\n private idleStateChanged() {\n if (this.isIdle) {\n this.notificationsService.disconnectFromInactivity();\n } else {\n this.notificationsService.reconnectFromActivity();\n }\n }\n\n private async setFullWidth() {\n const enableFullWidth = await this.storageService.get('enableFullWidth');\n if (enableFullWidth) {\n document.body.classList.add('full-width');\n } else {\n document.body.classList.remove('full-width');\n }\n }\n}\n"," ","import { BroadcasterService as BroadcasterServiceAbstraction } from '../abstractions/broadcaster.service';\n\nexport class BroadcasterService implements BroadcasterServiceAbstraction {\n subscribers: Map any> = new Map any>();\n\n send(message: any, id?: string) {\n if (id != null) {\n if (this.subscribers.has(id)) {\n this.subscribers.get(id)(message);\n }\n return;\n }\n\n this.subscribers.forEach(value => {\n value(message);\n });\n }\n\n subscribe(id: string, messageCallback: (message: any) => any) {\n this.subscribers.set(id, messageCallback);\n }\n\n unsubscribe(id: string) {\n if (this.subscribers.has(id)) {\n this.subscribers.delete(id);\n }\n }\n}\n","import { PolicyType } from '../../enums/policyType';\n\nexport class PolicyRequest {\n type: PolicyType;\n enabled: boolean;\n data: any;\n}\n","export function getDomain(host: string): string | null {\n return null;\n}\n\nexport function isValid(host: string): boolean {\n return true;\n}\n","import { NgModule } from '@angular/core';\nimport {\n RouterModule,\n Routes,\n} from '@angular/router';\n\nimport { FrontendLayoutComponent } from './layouts/frontend-layout.component';\nimport { OrganizationLayoutComponent } from './layouts/organization-layout.component';\nimport { UserLayoutComponent } from './layouts/user-layout.component';\n\nimport { AcceptEmergencyComponent } from './accounts/accept-emergency.component';\nimport { AcceptOrganizationComponent } from './accounts/accept-organization.component';\nimport { HintComponent } from './accounts/hint.component';\nimport { LockComponent } from './accounts/lock.component';\nimport { LoginComponent } from './accounts/login.component';\nimport { RecoverDeleteComponent } from './accounts/recover-delete.component';\nimport { RecoverTwoFactorComponent } from './accounts/recover-two-factor.component';\nimport { RegisterComponent } from './accounts/register.component';\nimport { RemovePasswordComponent } from './accounts/remove-password.component';\nimport { SetPasswordComponent } from './accounts/set-password.component';\nimport { SsoComponent } from './accounts/sso.component';\nimport { TwoFactorComponent } from './accounts/two-factor.component';\nimport { UpdateTempPasswordComponent } from './accounts/update-temp-password.component';\nimport { VerifyEmailTokenComponent } from './accounts/verify-email-token.component';\nimport { VerifyRecoverDeleteComponent } from './accounts/verify-recover-delete.component';\n\nimport { CollectionsComponent as OrgManageCollectionsComponent } from './organizations/manage/collections.component';\nimport { EventsComponent as OrgEventsComponent } from './organizations/manage/events.component';\nimport { GroupsComponent as OrgGroupsComponent } from './organizations/manage/groups.component';\nimport { ManageComponent as OrgManageComponent } from './organizations/manage/manage.component';\nimport { PeopleComponent as OrgPeopleComponent } from './organizations/manage/people.component';\nimport { PoliciesComponent as OrgPoliciesComponent } from './organizations/manage/policies.component';\n\nimport { AccountComponent as OrgAccountComponent } from './organizations/settings/account.component';\nimport { OrganizationBillingComponent } from './organizations/settings/organization-billing.component';\nimport { OrganizationSubscriptionComponent } from './organizations/settings/organization-subscription.component';\nimport { SettingsComponent as OrgSettingsComponent } from './organizations/settings/settings.component';\nimport {\n TwoFactorSetupComponent as OrgTwoFactorSetupComponent,\n} from './organizations/settings/two-factor-setup.component';\n\nimport { FamiliesForEnterpriseSetupComponent } from './organizations/sponsorships/families-for-enterprise-setup.component';\nimport { ExportComponent as OrgExportComponent } from './organizations/tools/export.component';\nimport {\n ExposedPasswordsReportComponent as OrgExposedPasswordsReportComponent,\n} from './organizations/tools/exposed-passwords-report.component';\nimport { ImportComponent as OrgImportComponent } from './organizations/tools/import.component';\nimport {\n InactiveTwoFactorReportComponent as OrgInactiveTwoFactorReportComponent,\n} from './organizations/tools/inactive-two-factor-report.component';\nimport {\n ReusedPasswordsReportComponent as OrgReusedPasswordsReportComponent,\n} from './organizations/tools/reused-passwords-report.component';\nimport { ToolsComponent as OrgToolsComponent } from './organizations/tools/tools.component';\nimport {\n UnsecuredWebsitesReportComponent as OrgUnsecuredWebsitesReportComponent,\n} from './organizations/tools/unsecured-websites-report.component';\nimport {\n WeakPasswordsReportComponent as OrgWeakPasswordsReportComponent,\n} from './organizations/tools/weak-passwords-report.component';\n\nimport { VaultComponent as OrgVaultComponent } from './organizations/vault/vault.component';\n\nimport { AccessComponent } from './send/access.component';\nimport { SendComponent } from './send/send.component';\n\nimport { AccountComponent } from './settings/account.component';\nimport { CreateOrganizationComponent } from './settings/create-organization.component';\nimport { DomainRulesComponent } from './settings/domain-rules.component';\nimport { OptionsComponent } from './settings/options.component';\nimport { OrganizationsComponent } from './settings/organizations.component';\nimport { PremiumComponent } from './settings/premium.component';\nimport { SettingsComponent } from './settings/settings.component';\nimport { TwoFactorSetupComponent } from './settings/two-factor-setup.component';\nimport { UserBillingComponent } from './settings/user-billing.component';\nimport { UserSubscriptionComponent } from './settings/user-subscription.component';\n\nimport { BreachReportComponent } from './tools/breach-report.component';\nimport { ExportComponent } from './tools/export.component';\nimport { ExposedPasswordsReportComponent } from './tools/exposed-passwords-report.component';\nimport { ImportComponent } from './tools/import.component';\nimport { InactiveTwoFactorReportComponent } from './tools/inactive-two-factor-report.component';\nimport { PasswordGeneratorComponent } from './tools/password-generator.component';\nimport { ReusedPasswordsReportComponent } from './tools/reused-passwords-report.component';\nimport { ToolsComponent } from './tools/tools.component';\nimport { UnsecuredWebsitesReportComponent } from './tools/unsecured-websites-report.component';\nimport { WeakPasswordsReportComponent } from './tools/weak-passwords-report.component';\n\nimport { VaultComponent } from './vault/vault.component';\n\nimport { OrganizationGuardService } from './services/organization-guard.service';\nimport { OrganizationTypeGuardService } from './services/organization-type-guard.service';\n\nimport { AuthGuardService } from 'jslib-angular/services/auth-guard.service';\nimport { LockGuardService } from 'jslib-angular/services/lock-guard.service';\nimport { UnauthGuardService } from 'jslib-angular/services/unauth-guard.service';\n\nimport { Permissions } from 'jslib-common/enums/permissions';\n\nimport { EmergencyAccessViewComponent } from './settings/emergency-access-view.component';\nimport { EmergencyAccessComponent } from './settings/emergency-access.component';\nimport { SponsoredFamiliesComponent } from './settings/sponsored-families.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: FrontendLayoutComponent,\n children: [\n { path: '', pathMatch: 'full', component: LoginComponent, canActivate: [UnauthGuardService] },\n { path: '2fa', component: TwoFactorComponent, canActivate: [UnauthGuardService] },\n {\n path: 'register', component: RegisterComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'createAccount' },\n },\n {\n path: 'sso', component: SsoComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'enterpriseSingleSignOn' },\n },\n {\n path: 'set-password', component: SetPasswordComponent,\n data: { titleId: 'setMasterPassword' },\n },\n {\n path: 'hint', component: HintComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'passwordHint' },\n },\n {\n path: 'lock',\n component: LockComponent,\n canActivate: [LockGuardService],\n },\n { path: 'verify-email', component: VerifyEmailTokenComponent },\n {\n path: 'accept-organization',\n component: AcceptOrganizationComponent,\n data: { titleId: 'joinOrganization' },\n },\n {\n path: 'accept-emergency',\n component: AcceptEmergencyComponent,\n data: { titleId: 'acceptEmergency' },\n },\n { path: 'recover', pathMatch: 'full', redirectTo: 'recover-2fa' },\n {\n path: 'recover-2fa',\n component: RecoverTwoFactorComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'recoverAccountTwoStep' },\n },\n {\n path: 'recover-delete',\n component: RecoverDeleteComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'deleteAccount' },\n },\n {\n path: 'verify-recover-delete',\n component: VerifyRecoverDeleteComponent,\n canActivate: [UnauthGuardService],\n data: { titleId: 'deleteAccount' },\n },\n {\n path: 'send/:sendId/:key',\n component: AccessComponent,\n data: { title: 'Bitwarden Send' },\n },\n {\n path: 'update-temp-password',\n component: UpdateTempPasswordComponent,\n canActivate: [AuthGuardService],\n data: { titleId: 'updateTempPassword' },\n },\n {\n path: 'remove-password',\n component: RemovePasswordComponent,\n canActivate: [AuthGuardService],\n data: { titleId: 'removeMasterPassword' },\n },\n ],\n },\n {\n path: '',\n component: UserLayoutComponent,\n canActivate: [AuthGuardService],\n children: [\n { path: 'vault', component: VaultComponent, data: { titleId: 'myVault' } },\n { path: 'sends', component: SendComponent, data: { title: 'Send' } },\n {\n path: 'settings',\n component: SettingsComponent,\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'account' },\n { path: 'account', component: AccountComponent, data: { titleId: 'myAccount' } },\n { path: 'options', component: OptionsComponent, data: { titleId: 'options' } },\n { path: 'domain-rules', component: DomainRulesComponent, data: { titleId: 'domainRules' } },\n { path: 'two-factor', component: TwoFactorSetupComponent, data: { titleId: 'twoStepLogin' } },\n { path: 'premium', component: PremiumComponent, data: { titleId: 'goPremium' } },\n { path: 'billing', component: UserBillingComponent, data: { titleId: 'billing' } },\n {\n path: 'subscription',\n component: UserSubscriptionComponent,\n data: { titleId: 'premiumMembership' },\n },\n { path: 'organizations', component: OrganizationsComponent, data: { titleId: 'organizations' } },\n {\n path: 'create-organization',\n component: CreateOrganizationComponent,\n data: { titleId: 'newOrganization' },\n },\n {\n path: 'emergency-access',\n children: [\n {\n path: '',\n component: EmergencyAccessComponent,\n data: { titleId: 'emergencyAccess' },\n },\n {\n path: ':id',\n component: EmergencyAccessViewComponent,\n data: { titleId: 'emergencyAccess' },\n },\n ],\n },\n {\n path: 'sponsored-families',\n component: SponsoredFamiliesComponent,\n data: { titleId: 'sponsoredFamilies' },\n },\n ],\n },\n {\n path: 'tools',\n component: ToolsComponent,\n canActivate: [AuthGuardService],\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'generator' },\n { path: 'import', component: ImportComponent, data: { titleId: 'importData' } },\n { path: 'export', component: ExportComponent, data: { titleId: 'exportVault' } },\n {\n path: 'generator',\n component: PasswordGeneratorComponent,\n data: { titleId: 'passwordGenerator' },\n },\n { path: 'breach-report', component: BreachReportComponent, data: { titleId: 'dataBreachReport' } },\n {\n path: 'reused-passwords-report',\n component: ReusedPasswordsReportComponent,\n data: { titleId: 'reusedPasswordsReport' },\n },\n {\n path: 'unsecured-websites-report',\n component: UnsecuredWebsitesReportComponent,\n data: { titleId: 'unsecuredWebsitesReport' },\n },\n {\n path: 'weak-passwords-report',\n component: WeakPasswordsReportComponent,\n data: { titleId: 'weakPasswordsReport' },\n },\n {\n path: 'exposed-passwords-report',\n component: ExposedPasswordsReportComponent,\n data: { titleId: 'exposedPasswordsReport' },\n },\n {\n path: 'inactive-two-factor-report',\n component: InactiveTwoFactorReportComponent,\n data: { titleId: 'inactive2faReport' },\n },\n ],\n },\n { path: 'setup/families-for-enterprise', component: FamiliesForEnterpriseSetupComponent },\n ],\n },\n {\n path: 'organizations/:organizationId',\n component: OrganizationLayoutComponent,\n canActivate: [AuthGuardService, OrganizationGuardService],\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'vault' },\n { path: 'vault', component: OrgVaultComponent, data: { titleId: 'vault' } },\n {\n path: 'tools',\n component: OrgToolsComponent,\n canActivate: [OrganizationTypeGuardService],\n data: { permissions: [Permissions.AccessImportExport, Permissions.AccessReports] },\n children: [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: 'import',\n },\n {\n path: 'import',\n component: OrgImportComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'importData',\n permissions: [Permissions.AccessImportExport],\n },\n },\n {\n path: 'export',\n component: OrgExportComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'exportVault',\n permissions: [Permissions.AccessImportExport],\n },\n },\n {\n path: 'exposed-passwords-report',\n component: OrgExposedPasswordsReportComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'exposedPasswordsReport',\n permissions: [Permissions.AccessReports],\n },\n },\n {\n path: 'inactive-two-factor-report',\n component: OrgInactiveTwoFactorReportComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'inactive2faReport',\n permissions: [Permissions.AccessReports],\n },\n },\n {\n path: 'reused-passwords-report',\n component: OrgReusedPasswordsReportComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'reusedPasswordsReport',\n permissions: [Permissions.AccessReports],\n },\n },\n {\n path: 'unsecured-websites-report',\n component: OrgUnsecuredWebsitesReportComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'unsecuredWebsitesReport',\n permissions: [Permissions.AccessReports],\n },\n },\n {\n path: 'weak-passwords-report',\n component: OrgWeakPasswordsReportComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'weakPasswordsReport',\n permissions: [Permissions.AccessReports],\n },\n },\n ],\n },\n {\n path: 'manage',\n component: OrgManageComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n permissions: [\n Permissions.CreateNewCollections,\n Permissions.EditAnyCollection,\n Permissions.DeleteAnyCollection,\n Permissions.EditAssignedCollections,\n Permissions.DeleteAssignedCollections,\n Permissions.AccessEventLogs,\n Permissions.ManageGroups,\n Permissions.ManageUsers,\n Permissions.ManagePolicies,\n ],\n },\n children: [\n {\n path: '',\n pathMatch: 'full',\n redirectTo: 'people',\n },\n {\n path: 'collections',\n component: OrgManageCollectionsComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'collections',\n permissions: [\n Permissions.CreateNewCollections,\n Permissions.EditAnyCollection,\n Permissions.DeleteAnyCollection,\n Permissions.EditAssignedCollections,\n Permissions.DeleteAssignedCollections,\n ],\n },\n },\n {\n path: 'events',\n component: OrgEventsComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'eventLogs',\n permissions: [Permissions.AccessEventLogs],\n },\n },\n {\n path: 'groups',\n component: OrgGroupsComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'groups',\n permissions: [Permissions.ManageGroups],\n },\n },\n {\n path: 'people',\n component: OrgPeopleComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'people',\n permissions: [Permissions.ManageUsers, Permissions.ManageUsersPassword],\n },\n },\n {\n path: 'policies',\n component: OrgPoliciesComponent,\n canActivate: [OrganizationTypeGuardService],\n data: {\n titleId: 'policies',\n permissions: [Permissions.ManagePolicies],\n },\n },\n ],\n },\n {\n path: 'settings',\n component: OrgSettingsComponent,\n canActivate: [OrganizationTypeGuardService],\n data: { permissions: [Permissions.ManageOrganization] },\n children: [\n { path: '', pathMatch: 'full', redirectTo: 'account' },\n { path: 'account', component: OrgAccountComponent, data: { titleId: 'myOrganization' } },\n { path: 'two-factor', component: OrgTwoFactorSetupComponent, data: { titleId: 'twoStepLogin' } },\n {\n path: 'billing',\n component: OrganizationBillingComponent,\n data: { titleId: 'billing' },\n },\n {\n path: 'subscription',\n component: OrganizationSubscriptionComponent,\n data: { titleId: 'subscription' },\n },\n ],\n },\n ],\n },\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, {\n useHash: true,\n paramsInheritanceStrategy: 'always',\n /*enableTracing: true,*/\n })],\n exports: [RouterModule],\n})\nexport class OssRoutingModule { }\n","export class EmergencyAccessAcceptRequest {\n token: string;\n}\n","export class OrganizationUserAcceptRequest {\n token: string;\n}\n","import { Router } from '@angular/router';\n\nimport { PasswordHintRequest } from 'jslib-common/models/request/passwordHintRequest';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nexport class HintComponent {\n email: string = '';\n formPromise: Promise;\n\n protected successRoute = 'login';\n protected onSuccessfulSubmit: () => void;\n\n constructor(protected router: Router, protected i18nService: I18nService,\n protected apiService: ApiService, protected platformUtilsService: PlatformUtilsService,\n private logService: LogService) { }\n\n async submit() {\n if (this.email == null || this.email === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('emailRequired'));\n return;\n }\n if (this.email.indexOf('@') === -1) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidEmail'));\n return;\n }\n\n try {\n this.formPromise = this.apiService.postPasswordHint(new PasswordHintRequest(this.email));\n await this.formPromise;\n this.platformUtilsService.showToast('success', null, this.i18nService.t('masterPassSent'));\n if (this.onSuccessfulSubmit != null) {\n this.onSuccessfulSubmit();\n } else if (this.router != null) {\n this.router.navigate([this.successRoute]);\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","export class PasswordHintRequest {\n email: string;\n\n constructor(email: string) {\n this.email = email;\n }\n}\n","import { Directive, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { KeyConnectorService } from 'jslib-common/abstractions/keyConnector.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\nimport { VaultTimeoutService } from 'jslib-common/abstractions/vaultTimeout.service';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { EncString } from 'jslib-common/models/domain/encString';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\n\nimport { SecretVerificationRequest } from 'jslib-common/models/request/secretVerificationRequest';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\nimport { HashPurpose } from 'jslib-common/enums/hashPurpose';\n\n@Directive()\nexport class LockComponent implements OnInit {\n masterPassword: string = '';\n pin: string = '';\n showPassword: boolean = false;\n email: string;\n pinLock: boolean = false;\n webVaultHostname: string = '';\n formPromise: Promise;\n supportsBiometric: boolean;\n biometricLock: boolean;\n biometricText: string;\n hideInput: boolean;\n\n protected successRoute: string = 'vault';\n protected onSuccessfulSubmit: () => void;\n\n private invalidPinAttempts = 0;\n private pinSet: [boolean, boolean];\n\n constructor(protected router: Router, protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService, protected messagingService: MessagingService,\n protected userService: UserService, protected cryptoService: CryptoService,\n protected storageService: StorageService, protected vaultTimeoutService: VaultTimeoutService,\n protected environmentService: EnvironmentService, protected stateService: StateService,\n protected apiService: ApiService, private logService: LogService,\n private keyConnectorService: KeyConnectorService) { }\n\n async ngOnInit() {\n this.pinSet = await this.vaultTimeoutService.isPinLockSet();\n this.pinLock = (this.pinSet[0] && this.vaultTimeoutService.pinProtectedKey != null) || this.pinSet[1];\n this.supportsBiometric = await this.platformUtilsService.supportsBiometric();\n this.biometricLock = await this.vaultTimeoutService.isBiometricLockSet() &&\n (await this.cryptoService.hasKeyStored('biometric') || !this.platformUtilsService.supportsSecureStorage());\n this.biometricText = await this.storageService.get(ConstantsService.biometricText);\n this.email = await this.userService.getEmail();\n const usesKeyConnector = await this.keyConnectorService.getUsesKeyConnector();\n this.hideInput = usesKeyConnector && !this.pinLock;\n\n // Users with key connector and without biometric or pin has no MP to unlock using\n if (usesKeyConnector && !(this.biometricLock || this.pinLock)) {\n await this.vaultTimeoutService.logOut();\n }\n\n const webVaultUrl = this.environmentService.getWebVaultUrl();\n const vaultUrl = webVaultUrl === 'https://vault.bitwarden.com' ? 'https://bitwarden.com' : webVaultUrl;\n this.webVaultHostname = Utils.getHostname(vaultUrl);\n }\n\n async submit() {\n if (this.pinLock && (this.pin == null || this.pin === '')) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('pinRequired'));\n return;\n }\n if (!this.pinLock && (this.masterPassword == null || this.masterPassword === '')) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n const kdf = await this.userService.getKdf();\n const kdfIterations = await this.userService.getKdfIterations();\n\n if (this.pinLock) {\n let failed = true;\n try {\n if (this.pinSet[0]) {\n const key = await this.cryptoService.makeKeyFromPin(this.pin, this.email, kdf, kdfIterations,\n this.vaultTimeoutService.pinProtectedKey);\n const encKey = await this.cryptoService.getEncKey(key);\n const protectedPin = await this.storageService.get(ConstantsService.protectedPin);\n const decPin = await this.cryptoService.decryptToUtf8(new EncString(protectedPin), encKey);\n failed = decPin !== this.pin;\n if (!failed) {\n await this.setKeyAndContinue(key);\n }\n } else {\n const key = await this.cryptoService.makeKeyFromPin(this.pin, this.email, kdf, kdfIterations);\n failed = false;\n await this.setKeyAndContinue(key);\n }\n } catch {\n failed = true;\n }\n\n if (failed) {\n this.invalidPinAttempts++;\n if (this.invalidPinAttempts >= 5) {\n this.messagingService.send('logout');\n return;\n }\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidPin'));\n }\n } else {\n const key = await this.cryptoService.makeKey(this.masterPassword, this.email, kdf, kdfIterations);\n const storedKeyHash = await this.cryptoService.getKeyHash();\n\n let passwordValid = false;\n\n if (storedKeyHash != null) {\n passwordValid = await this.cryptoService.compareAndUpdateKeyHash(this.masterPassword, key);\n } else {\n const request = new SecretVerificationRequest();\n const serverKeyHash = await this.cryptoService.hashPassword(this.masterPassword, key,\n HashPurpose.ServerAuthorization);\n request.masterPasswordHash = serverKeyHash;\n try {\n this.formPromise = this.apiService.postAccountVerifyPassword(request);\n await this.formPromise;\n passwordValid = true;\n const localKeyHash = await this.cryptoService.hashPassword(this.masterPassword, key,\n HashPurpose.LocalAuthorization);\n await this.cryptoService.setKeyHash(localKeyHash);\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n if (passwordValid) {\n if (this.pinSet[0]) {\n const protectedPin = await this.storageService.get(ConstantsService.protectedPin);\n const encKey = await this.cryptoService.getEncKey(key);\n const decPin = await this.cryptoService.decryptToUtf8(new EncString(protectedPin), encKey);\n const pinKey = await this.cryptoService.makePinKey(decPin, this.email, kdf, kdfIterations);\n this.vaultTimeoutService.pinProtectedKey = await this.cryptoService.encrypt(key.key, pinKey);\n }\n this.setKeyAndContinue(key);\n } else {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidMasterPassword'));\n }\n }\n }\n\n async logOut() {\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('logOutConfirmation'),\n this.i18nService.t('logOut'), this.i18nService.t('logOut'), this.i18nService.t('cancel'));\n if (confirmed) {\n this.messagingService.send('logout');\n }\n }\n\n async unlockBiometric(): Promise {\n if (!this.biometricLock) {\n return;\n }\n\n const success = (await this.cryptoService.getKey('biometric')) != null;\n\n if (success) {\n await this.doContinue();\n }\n\n return success;\n }\n\n togglePassword() {\n this.showPassword = !this.showPassword;\n document.getElementById(this.pinLock ? 'pin' : 'masterPassword').focus();\n }\n\n private async setKeyAndContinue(key: SymmetricCryptoKey) {\n await this.cryptoService.setKey(key);\n this.doContinue();\n }\n\n private async doContinue() {\n this.vaultTimeoutService.biometricLocked = false;\n this.vaultTimeoutService.everBeenUnlocked = true;\n const disableFavicon = await this.storageService.get(ConstantsService.disableFaviconKey);\n await this.stateService.save(ConstantsService.disableFaviconKey, !!disableFavicon);\n this.messagingService.send('unlocked');\n if (this.onSuccessfulSubmit != null) {\n this.onSuccessfulSubmit();\n } else if (this.router != null) {\n this.router.navigate([this.successRoute]);\n }\n }\n}\n","import {\n Directive,\n Input,\n OnInit,\n} from '@angular/core';\n\nimport { Router } from '@angular/router';\n\nimport { AuthResult } from 'jslib-common/models/domain/authResult';\n\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { CryptoFunctionService } from 'jslib-common/abstractions/cryptoFunction.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\nimport { CaptchaProtectedComponent } from './captchaProtected.component';\n\nconst Keys = {\n rememberedEmail: 'rememberedEmail',\n rememberEmail: 'rememberEmail',\n};\n\n@Directive()\nexport class LoginComponent extends CaptchaProtectedComponent implements OnInit {\n @Input() email: string = '';\n @Input() rememberEmail = true;\n\n masterPassword: string = '';\n showPassword: boolean = false;\n formPromise: Promise;\n onSuccessfulLogin: () => Promise;\n onSuccessfulLoginNavigate: () => Promise;\n onSuccessfulLoginTwoFactorNavigate: () => Promise;\n onSuccessfulLoginForceResetNavigate: () => Promise;\n\n protected twoFactorRoute = '2fa';\n protected successRoute = 'vault';\n protected forcePasswordResetRoute = 'update-temp-password';\n\n constructor(protected authService: AuthService, protected router: Router,\n platformUtilsService: PlatformUtilsService, i18nService: I18nService,\n protected stateService: StateService, environmentService: EnvironmentService,\n protected passwordGenerationService: PasswordGenerationService,\n protected cryptoFunctionService: CryptoFunctionService, private storageService: StorageService,\n protected logService: LogService) {\n super(environmentService, i18nService, platformUtilsService);\n }\n\n async ngOnInit() {\n if (this.email == null || this.email === '') {\n this.email = await this.storageService.get(Keys.rememberedEmail);\n if (this.email == null) {\n this.email = '';\n }\n }\n this.rememberEmail = await this.storageService.get(Keys.rememberEmail);\n if (this.rememberEmail == null) {\n this.rememberEmail = true;\n }\n if (Utils.isBrowser && !Utils.isNode) {\n this.focusInput();\n }\n }\n\n async submit() {\n await this.setupCaptcha();\n\n if (this.email == null || this.email === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('emailRequired'));\n return;\n }\n if (this.email.indexOf('@') === -1) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidEmail'));\n return;\n }\n if (this.masterPassword == null || this.masterPassword === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n\n try {\n this.formPromise = this.authService.logIn(this.email, this.masterPassword, this.captchaToken);\n const response = await this.formPromise;\n await this.storageService.save(Keys.rememberEmail, this.rememberEmail);\n if (this.rememberEmail) {\n await this.storageService.save(Keys.rememberedEmail, this.email);\n } else {\n await this.storageService.remove(Keys.rememberedEmail);\n }\n if (this.handleCaptchaRequired(response)) {\n return;\n } else if (response.twoFactor) {\n if (this.onSuccessfulLoginTwoFactorNavigate != null) {\n this.onSuccessfulLoginTwoFactorNavigate();\n } else {\n this.router.navigate([this.twoFactorRoute]);\n }\n } else if (response.forcePasswordReset) {\n if (this.onSuccessfulLoginForceResetNavigate != null) {\n this.onSuccessfulLoginForceResetNavigate();\n } else {\n this.router.navigate([this.forcePasswordResetRoute]);\n }\n } else {\n const disableFavicon = await this.storageService.get(ConstantsService.disableFaviconKey);\n await this.stateService.save(ConstantsService.disableFaviconKey, !!disableFavicon);\n if (this.onSuccessfulLogin != null) {\n this.onSuccessfulLogin();\n }\n if (this.onSuccessfulLoginNavigate != null) {\n this.onSuccessfulLoginNavigate();\n } else {\n this.router.navigate([this.successRoute]);\n }\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n togglePassword() {\n this.showPassword = !this.showPassword;\n document.getElementById('masterPassword').focus();\n }\n\n async launchSsoBrowser(clientId: string, ssoRedirectUri: string) {\n // Generate necessary sso params\n const passwordOptions: any = {\n type: 'password',\n length: 64,\n uppercase: true,\n lowercase: true,\n numbers: true,\n special: false,\n };\n const state = await this.passwordGenerationService.generatePassword(passwordOptions);\n const ssoCodeVerifier = await this.passwordGenerationService.generatePassword(passwordOptions);\n const codeVerifierHash = await this.cryptoFunctionService.hash(ssoCodeVerifier, 'sha256');\n const codeChallenge = Utils.fromBufferToUrlB64(codeVerifierHash);\n\n // Save sso params\n await this.storageService.save(ConstantsService.ssoStateKey, state);\n await this.storageService.save(ConstantsService.ssoCodeVerifierKey, ssoCodeVerifier);\n\n // Build URI\n const webUrl = this.environmentService.getWebVaultUrl();\n\n // Launch browser\n this.platformUtilsService.launchUri(webUrl + '/#/sso?clientId=' + clientId +\n '&redirectUri=' + encodeURIComponent(ssoRedirectUri) +\n '&state=' + state + '&codeChallenge=' + codeChallenge);\n }\n\n protected focusInput() {\n document.getElementById(this.email == null || this.email === '' ? 'email' : 'masterPassword').focus();\n }\n}\n","import { I18nService } from '../abstractions/i18n.service';\nimport { IFrameComponent } from './iframe_component';\n\nexport class CaptchaIFrame extends IFrameComponent {\n constructor(win: Window, webVaultUrl: string,\n private i18nService: I18nService, successCallback: (message: string) => any, errorCallback: (message: string) => any,\n infoCallback: (message: string) => any) {\n super(win, webVaultUrl, 'captcha-connector.html', 'hcaptcha_iframe', successCallback, errorCallback, (message: string) => {\n const parsedMessage = JSON.parse(message);\n if (typeof (parsedMessage) !== 'string') {\n this.iframe.height = (parsedMessage.height).toString();\n this.iframe.width = (parsedMessage.width).toString();\n } else {\n infoCallback(parsedMessage);\n }\n });\n }\n\n init(siteKey: string): void {\n super.initComponent(this.createParams({ siteKey: siteKey, locale: this.i18nService.translationLocale }, 1));\n }\n}\n","import { I18nService } from '../abstractions/i18n.service';\n\nexport abstract class IFrameComponent {\n iframe: HTMLIFrameElement;\n private connectorLink: HTMLAnchorElement;\n private parseFunction = this.parseMessage.bind(this);\n\n constructor(private win: Window, protected webVaultUrl: string, private path: string, private iframeId: string,\n public successCallback?: (message: string) => any,\n public errorCallback?: (message: string) => any, public infoCallback?: (message: string) => any) {\n this.connectorLink = win.document.createElement('a');\n }\n\n stop() {\n this.sendMessage('stop');\n }\n\n start() {\n this.sendMessage('start');\n }\n\n sendMessage(message: any) {\n if (!this.iframe || !this.iframe.src || !this.iframe.contentWindow) {\n return;\n }\n\n this.iframe.contentWindow.postMessage(message, this.iframe.src);\n }\n\n base64Encode(str: string): string {\n return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (match, p1) => {\n return String.fromCharCode(('0x' + p1) as any);\n }));\n }\n\n cleanup() {\n this.win.removeEventListener('message', this.parseFunction, false);\n }\n\n protected createParams(data: any, version: number) {\n return new URLSearchParams({\n data: this.base64Encode(JSON.stringify(data)),\n parent: encodeURIComponent(this.win.document.location.href),\n v: version.toString(),\n });\n }\n\n protected initComponent(params: URLSearchParams): void {\n this.connectorLink.href = `${this.webVaultUrl}/${this.path}?${params}`;\n this.iframe = this.win.document.getElementById(this.iframeId) as HTMLIFrameElement;\n this.iframe.src = this.connectorLink.href;\n\n this.win.addEventListener('message', this.parseFunction, false);\n }\n\n private parseMessage(event: MessageEvent) {\n if (!this.validMessage(event)) {\n return;\n }\n\n const parts: string[] = event.data.split('|');\n if (parts[0] === 'success' && this.successCallback) {\n this.successCallback(parts[1]);\n } else if (parts[0] === 'error' && this.errorCallback) {\n this.errorCallback(parts[1]);\n } else if (parts[0] === 'info' && this.infoCallback) {\n this.infoCallback(parts[1]);\n }\n }\n\n private validMessage(event: MessageEvent) {\n if (event.origin == null || event.origin === '' || event.origin !== (this.connectorLink as any).origin ||\n event.data == null || typeof (event.data) !== 'string') {\n return false;\n }\n\n return event.data.indexOf('success|') === 0 || event.data.indexOf('error|') === 0 ||\n event.data.indexOf('info|') === 0;\n }\n}\n","export class DeleteRecoverRequest {\n email: string;\n}\n","import { SecretVerificationRequest } from './secretVerificationRequest';\n\nexport class TwoFactorRecoveryRequest extends SecretVerificationRequest {\n recoveryCode: string;\n email: string;\n}\n","import { Directive, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { KeysRequest } from 'jslib-common/models/request/keysRequest';\nimport { ReferenceEventRequest } from 'jslib-common/models/request/referenceEventRequest';\nimport { RegisterRequest } from 'jslib-common/models/request/registerRequest';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\n\nimport { KdfType } from 'jslib-common/enums/kdfType';\n\nimport { CaptchaProtectedComponent } from './captchaProtected.component';\n\n@Directive()\nexport class RegisterComponent extends CaptchaProtectedComponent implements OnInit {\n name: string = '';\n email: string = '';\n masterPassword: string = '';\n confirmMasterPassword: string = '';\n hint: string = '';\n showPassword: boolean = false;\n formPromise: Promise;\n masterPasswordScore: number;\n referenceData: ReferenceEventRequest;\n showTerms = false;\n acceptPolicies: boolean = false;\n\n protected successRoute = 'login';\n private masterPasswordStrengthTimeout: any;\n\n constructor(protected authService: AuthService, protected router: Router,\n i18nService: I18nService, protected cryptoService: CryptoService,\n protected apiService: ApiService, protected stateService: StateService,\n platformUtilsService: PlatformUtilsService,\n protected passwordGenerationService: PasswordGenerationService, environmentService: EnvironmentService,\n protected logService: LogService) {\n super(environmentService, i18nService, platformUtilsService);\n this.showTerms = false;\n }\n\n async ngOnInit() {\n this.setupCaptcha();\n }\n\n get masterPasswordScoreWidth() {\n return this.masterPasswordScore == null ? 0 : (this.masterPasswordScore + 1) * 20;\n }\n\n get masterPasswordScoreColor() {\n switch (this.masterPasswordScore) {\n case 4:\n return 'success';\n case 3:\n return 'primary';\n case 2:\n return 'warning';\n default:\n return 'danger';\n }\n }\n\n get masterPasswordScoreText() {\n switch (this.masterPasswordScore) {\n case 4:\n return this.i18nService.t('strong');\n case 3:\n return this.i18nService.t('good');\n case 2:\n return this.i18nService.t('weak');\n default:\n return this.masterPasswordScore != null ? this.i18nService.t('weak') : null;\n }\n }\n\n async submit() {\n if (typeof crypto.subtle === 'undefined') {\n this.platformUtilsService.showToast('error', \"This browser requires HTTPS to use the web vault\",\n \"Check the Vaultwarden wiki for details on how to enable it\");\n return;\n }\n\n if (!this.acceptPolicies && this.showTerms) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('acceptPoliciesError'));\n return;\n }\n\n if (this.email == null || this.email === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('emailRequired'));\n return;\n }\n if (this.email.indexOf('@') === -1) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidEmail'));\n return;\n }\n if (this.masterPassword == null || this.masterPassword === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassRequired'));\n return;\n }\n if (this.masterPassword.length < 8) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassLength'));\n return;\n }\n if (this.masterPassword !== this.confirmMasterPassword) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('masterPassDoesntMatch'));\n return;\n }\n\n const strengthResult = this.passwordGenerationService.passwordStrength(this.masterPassword,\n this.getPasswordStrengthUserInput());\n if (strengthResult != null && strengthResult.score < 3) {\n const result = await this.platformUtilsService.showDialog(this.i18nService.t('weakMasterPasswordDesc'),\n this.i18nService.t('weakMasterPassword'), this.i18nService.t('yes'), this.i18nService.t('no'),\n 'warning');\n if (!result) {\n return;\n }\n }\n\n if (this.hint === this.masterPassword) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'), this.i18nService.t('hintEqualsPassword'));\n return;\n }\n\n this.name = this.name === '' ? null : this.name;\n this.email = this.email.trim().toLowerCase();\n const kdf = KdfType.PBKDF2_SHA256;\n const useLowerKdf = this.platformUtilsService.isIE();\n const kdfIterations = useLowerKdf ? 10000 : 100000;\n const key = await this.cryptoService.makeKey(this.masterPassword, this.email, kdf, kdfIterations);\n const encKey = await this.cryptoService.makeEncKey(key);\n const hashedPassword = await this.cryptoService.hashPassword(this.masterPassword, key);\n const keys = await this.cryptoService.makeKeyPair(encKey[0]);\n const request = new RegisterRequest(this.email, this.name, hashedPassword,\n this.hint, encKey[1].encryptedString, kdf, kdfIterations, this.referenceData, this.captchaToken);\n request.keys = new KeysRequest(keys[0], keys[1].encryptedString);\n const orgInvite = await this.stateService.get('orgInvitation');\n if (orgInvite != null && orgInvite.token != null && orgInvite.organizationUserId != null) {\n request.token = orgInvite.token;\n request.organizationUserId = orgInvite.organizationUserId;\n }\n\n try {\n this.formPromise = this.apiService.postRegister(request);\n try {\n await this.formPromise;\n } catch (e) {\n if (this.handleCaptchaRequired(e)) {\n return;\n } else {\n throw e;\n }\n }\n this.platformUtilsService.showToast('success', null, this.i18nService.t('newAccountCreated'));\n this.router.navigate([this.successRoute], { queryParams: { email: this.email } });\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n togglePassword(confirmField: boolean) {\n this.showPassword = !this.showPassword;\n document.getElementById(confirmField ? 'masterPasswordRetype' : 'masterPassword').focus();\n }\n\n updatePasswordStrength() {\n if (this.masterPasswordStrengthTimeout != null) {\n clearTimeout(this.masterPasswordStrengthTimeout);\n }\n this.masterPasswordStrengthTimeout = setTimeout(() => {\n const strengthResult = this.passwordGenerationService.passwordStrength(this.masterPassword,\n this.getPasswordStrengthUserInput());\n this.masterPasswordScore = strengthResult == null ? null : strengthResult.score;\n }, 300);\n }\n\n private getPasswordStrengthUserInput() {\n let userInput: string[] = [];\n const atPosition = this.email.indexOf('@');\n if (atPosition > -1) {\n userInput = userInput.concat(this.email.substr(0, atPosition).trim().toLowerCase().split(/[^A-Za-z0-9]/));\n }\n if (this.name != null && this.name !== '') {\n userInput = userInput.concat(this.name.trim().toLowerCase().split(' '));\n }\n return userInput;\n }\n}\n","import { KeysRequest } from './keysRequest';\nimport { ReferenceEventRequest } from './referenceEventRequest';\n\nimport { KdfType } from '../../enums/kdfType';\n\nimport { CaptchaProtectedRequest } from './captchaProtectedRequest';\n\nexport class RegisterRequest implements CaptchaProtectedRequest {\n masterPasswordHint: string;\n keys: KeysRequest;\n token: string;\n organizationUserId: string;\n\n\n constructor(public email: string, public name: string, public masterPasswordHash: string,\n masterPasswordHint: string, public key: string, public kdf: KdfType, public kdfIterations: number,\n public referenceData: ReferenceEventRequest, public captchaResponse: string) {\n this.masterPasswordHint = masterPasswordHint ? masterPasswordHint : null;\n }\n}\n","export class ReferenceEventRequest {\n id: string;\n layout: string;\n flow: string;\n}\n","import {\n Directive,\n OnInit,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { KeyConnectorService } from 'jslib-common/abstractions/keyConnector.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\n\n@Directive()\nexport class RemovePasswordComponent implements OnInit {\n\n actionPromise: Promise;\n continuing: boolean = false;\n leaving: boolean = false;\n\n loading: boolean = true;\n organization: Organization;\n email: string;\n\n constructor(private router: Router, private userService: UserService,\n private apiService: ApiService, private syncService: SyncService,\n private platformUtilsService: PlatformUtilsService, private i18nService: I18nService,\n private keyConnectorService: KeyConnectorService, private storageService: StorageService) { }\n\n async ngOnInit() {\n this.organization = await this.keyConnectorService.getManagingOrganization();\n this.email = await this.userService.getEmail();\n await this.syncService.fullSync(false);\n this.loading = false;\n }\n\n async convert() {\n this.continuing = true;\n this.actionPromise = this.keyConnectorService.migrateUser();\n\n try {\n await this.actionPromise;\n this.platformUtilsService.showToast('success', null, this.i18nService.t('removedMasterPassword'));\n await this.keyConnectorService.removeConvertAccountRequired();\n this.router.navigate(['']);\n } catch (e) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'), e.message);\n }\n }\n\n async leave() {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('leaveOrganizationConfirmation'), this.organization.name,\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.leaving = true;\n this.actionPromise = this.apiService.postLeaveOrganization(this.organization.id).then(() => {\n return this.syncService.fullSync(true);\n });\n await this.actionPromise;\n this.platformUtilsService.showToast('success', null, this.i18nService.t('leftOrganization'));\n await this.keyConnectorService.removeConvertAccountRequired();\n this.router.navigate(['']);\n } catch (e) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'), e);\n }\n }\n}\n","import { Directive } from '@angular/core';\nimport {\n ActivatedRoute,\n Router\n} from '@angular/router';\n\nimport { first } from 'rxjs/operators';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { EncString } from 'jslib-common/models/domain/encString';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\n\nimport { KeysRequest } from 'jslib-common/models/request/keysRequest';\nimport { OrganizationUserResetPasswordEnrollmentRequest } from 'jslib-common/models/request/organizationUserResetPasswordEnrollmentRequest';\nimport { SetPasswordRequest } from 'jslib-common/models/request/setPasswordRequest';\n\nimport { ChangePasswordComponent as BaseChangePasswordComponent } from './change-password.component';\n\nimport { HashPurpose } from 'jslib-common/enums/hashPurpose';\nimport { KdfType } from 'jslib-common/enums/kdfType';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Directive()\nexport class SetPasswordComponent extends BaseChangePasswordComponent {\n syncLoading: boolean = true;\n showPassword: boolean = false;\n hint: string = '';\n identifier: string = null;\n orgId: string;\n resetPasswordAutoEnroll = false;\n\n onSuccessfulChangePassword: () => Promise;\n successRoute = 'vault';\n\n constructor(i18nService: I18nService, cryptoService: CryptoService, messagingService: MessagingService,\n userService: UserService, passwordGenerationService: PasswordGenerationService,\n platformUtilsService: PlatformUtilsService, policyService: PolicyService, protected router: Router,\n private apiService: ApiService, private syncService: SyncService, private route: ActivatedRoute) {\n super(i18nService, cryptoService, messagingService, userService, passwordGenerationService,\n platformUtilsService, policyService);\n }\n\n async ngOnInit() {\n await this.syncService.fullSync(true);\n this.syncLoading = false;\n\n this.route.queryParams.pipe(first()).subscribe(async qParams => {\n if (qParams.identifier != null) {\n this.identifier = qParams.identifier;\n }\n });\n\n // Automatic Enrollment Detection\n if (this.identifier != null) {\n try {\n const response = await this.apiService.getOrganizationAutoEnrollStatus(this.identifier);\n this.orgId = response.id;\n this.resetPasswordAutoEnroll = response.resetPasswordEnabled;\n this.enforcedPolicyOptions =\n await this.policyService.getMasterPasswordPoliciesForInvitedUsers(this.orgId);\n } catch {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n }\n }\n\n super.ngOnInit();\n }\n\n async setupSubmitActions() {\n this.kdf = KdfType.PBKDF2_SHA256;\n const useLowerKdf = this.platformUtilsService.isIE();\n this.kdfIterations = useLowerKdf ? 10000 : 100000;\n return true;\n }\n\n async performSubmitActions(masterPasswordHash: string, key: SymmetricCryptoKey,\n encKey: [SymmetricCryptoKey, EncString]) {\n const keys = await this.cryptoService.makeKeyPair(encKey[0]);\n const request = new SetPasswordRequest(\n masterPasswordHash,\n encKey[1].encryptedString,\n this.hint,\n this.kdf,\n this.kdfIterations,\n this.identifier,\n new KeysRequest(keys[0], keys[1].encryptedString)\n );\n try {\n if (this.resetPasswordAutoEnroll) {\n this.formPromise = this.apiService.setPassword(request).then(async () => {\n await this.onSetPasswordSuccess(key, encKey, keys);\n return this.apiService.getOrganizationKeys(this.orgId);\n }).then(async response => {\n if (response == null) {\n throw new Error(this.i18nService.t('resetPasswordOrgKeysError'));\n }\n const userId = await this.userService.getUserId();\n const publicKey = Utils.fromB64ToArray(response.publicKey);\n\n // RSA Encrypt user's encKey.key with organization public key\n const userEncKey = await this.cryptoService.getEncKey();\n const encryptedKey = await this.cryptoService.rsaEncrypt(userEncKey.key, publicKey.buffer);\n\n const resetRequest = new OrganizationUserResetPasswordEnrollmentRequest();\n resetRequest.resetPasswordKey = encryptedKey.encryptedString;\n\n return this.apiService.putOrganizationUserResetPasswordEnrollment(this.orgId, userId, resetRequest);\n });\n } else {\n this.formPromise = this.apiService.setPassword(request).then(async () => {\n await this.onSetPasswordSuccess(key, encKey, keys);\n });\n }\n\n await this.formPromise;\n\n if (this.onSuccessfulChangePassword != null) {\n this.onSuccessfulChangePassword();\n } else {\n this.router.navigate([this.successRoute]);\n }\n } catch {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('errorOccurred'));\n }\n }\n\n togglePassword(confirmField: boolean) {\n this.showPassword = !this.showPassword;\n document.getElementById(confirmField ? 'masterPasswordRetype' : 'masterPassword').focus();\n }\n\n private async onSetPasswordSuccess(key: SymmetricCryptoKey, encKey: [SymmetricCryptoKey, EncString], keys: [string, EncString]) {\n await this.userService.setInformation(await this.userService.getUserId(), await this.userService.getEmail(),\n this.kdf, this.kdfIterations);\n await this.cryptoService.setKey(key);\n await this.cryptoService.setEncKey(encKey[1].encryptedString);\n await this.cryptoService.setEncPrivateKey(keys[1].encryptedString);\n\n const localKeyHash = await this.cryptoService.hashPassword(this.masterPassword, key,\n HashPurpose.LocalAuthorization);\n await this.cryptoService.setKeyHash(localKeyHash);\n }\n}\n","import { KeysRequest } from './keysRequest';\n\nimport { KdfType } from '../../enums/kdfType';\n\nexport class SetPasswordRequest {\n masterPasswordHash: string;\n key: string;\n masterPasswordHint: string;\n keys: KeysRequest;\n kdf: KdfType;\n kdfIterations: number;\n orgIdentifier: string;\n\n constructor(masterPasswordHash: string, key: string, masterPasswordHint: string, kdf: KdfType,\n kdfIterations: number, orgIdentifier: string, keys: KeysRequest) {\n this.masterPasswordHash = masterPasswordHash;\n this.key = key;\n this.masterPasswordHint = masterPasswordHint;\n this.kdf = kdf;\n this.kdfIterations = kdfIterations;\n this.orgIdentifier = orgIdentifier;\n this.keys = keys;\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n OnDestroy,\n Type,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\n\nimport {\n ConfigurableFocusTrap,\n ConfigurableFocusTrapFactory,\n} from '@angular/cdk/a11y';\n\nimport { ModalService } from '../../services/modal.service';\n\nimport { ModalRef } from './modal.ref';\n\n@Component({\n selector: 'app-modal',\n template: '',\n})\nexport class DynamicModalComponent implements AfterViewInit, OnDestroy {\n componentRef: ComponentRef;\n\n @ViewChild('modalContent', { read: ViewContainerRef, static: true }) modalContentRef: ViewContainerRef;\n\n childComponentType: Type;\n setComponentParameters: (component: any) => void;\n\n private focusTrap: ConfigurableFocusTrap;\n\n constructor(private modalService: ModalService, private cd: ChangeDetectorRef,\n private el: ElementRef, private focusTrapFactory: ConfigurableFocusTrapFactory,\n public modalRef: ModalRef) { }\n\n ngAfterViewInit() {\n this.loadChildComponent(this.childComponentType);\n if (this.setComponentParameters != null) {\n this.setComponentParameters(this.componentRef.instance);\n }\n this.cd.detectChanges();\n\n this.modalRef.created(this.el.nativeElement);\n this.focusTrap = this.focusTrapFactory.create(this.el.nativeElement.querySelector('.modal-dialog'));\n if (this.el.nativeElement.querySelector('[appAutoFocus]') == null) {\n this.focusTrap.focusFirstTabbableElementWhenReady();\n }\n }\n\n loadChildComponent(componentType: Type) {\n const componentFactory = this.modalService.resolveComponentFactory(componentType);\n\n this.modalContentRef.clear();\n this.componentRef = this.modalContentRef.createComponent(componentFactory);\n }\n\n ngOnDestroy() {\n if (this.componentRef) {\n this.componentRef.destroy();\n }\n this.focusTrap.destroy();\n }\n\n close() {\n this.modalRef.close();\n }\n\n getFocus() {\n const autoFocusEl = this.el.nativeElement.querySelector('[appAutoFocus]') as HTMLElement;\n autoFocusEl?.focus();\n }\n}\n","import {\n InjectFlags,\n InjectionToken,\n Injector,\n Type\n} from '@angular/core';\n\nexport class ModalInjector implements Injector {\n constructor(private _parentInjector: Injector, private _additionalTokens: WeakMap) {}\n\n get(token: Type | InjectionToken, notFoundValue?: T, flags?: InjectFlags): T;\n get(token: any, notFoundValue?: any, flags?: any) {\n return this._additionalTokens.get(token) ?? this._parentInjector.get(token, notFoundValue);\n }\n}\n","import { Directive, OnDestroy, OnInit } from '@angular/core';\n\nimport {\n ActivatedRoute,\n Router,\n} from '@angular/router';\n\nimport { first } from 'rxjs/operators';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\nimport { TwoFactorEmailRequest } from 'jslib-common/models/request/twoFactorEmailRequest';\n\nimport { AuthResult } from 'jslib-common/models/domain/authResult';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { TwoFactorProviders } from 'jslib-common/services/auth.service';\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport * as DuoWebSDK from 'duo_web_sdk';\nimport { WebAuthnIFrame } from 'jslib-common/misc/webauthn_iframe';\n\n@Directive()\nexport class TwoFactorComponent implements OnInit, OnDestroy {\n token: string = '';\n remember: boolean = false;\n webAuthnReady: boolean = false;\n webAuthnNewTab: boolean = false;\n providers = TwoFactorProviders;\n providerType = TwoFactorProviderType;\n selectedProviderType: TwoFactorProviderType = TwoFactorProviderType.Authenticator;\n webAuthnSupported: boolean = false;\n webAuthn: WebAuthnIFrame = null;\n title: string = '';\n twoFactorEmail: string = null;\n formPromise: Promise;\n emailPromise: Promise;\n identifier: string = null;\n onSuccessfulLogin: () => Promise;\n onSuccessfulLoginNavigate: () => Promise;\n\n get webAuthnAllow(): string {\n return `publickey-credentials-get ${this.environmentService.getWebVaultUrl()}`;\n }\n\n protected loginRoute = 'login';\n protected successRoute = 'vault';\n\n constructor(protected authService: AuthService, protected router: Router,\n protected i18nService: I18nService, protected apiService: ApiService,\n protected platformUtilsService: PlatformUtilsService, protected win: Window,\n protected environmentService: EnvironmentService, protected stateService: StateService,\n protected storageService: StorageService, protected route: ActivatedRoute,\n protected logService: LogService) {\n this.webAuthnSupported = this.platformUtilsService.supportsWebAuthn(win);\n }\n\n async ngOnInit() {\n if (!this.authing || this.authService.twoFactorProvidersData == null) {\n this.router.navigate([this.loginRoute]);\n return;\n }\n\n this.route.queryParams.pipe(first()).subscribe(qParams => {\n if (qParams.identifier != null) {\n this.identifier = qParams.identifier;\n }\n });\n\n if (this.needsLock) {\n this.successRoute = 'lock';\n }\n\n if (this.win != null && this.webAuthnSupported) {\n const webVaultUrl = this.environmentService.getWebVaultUrl();\n this.webAuthn = new WebAuthnIFrame(this.win, webVaultUrl, this.webAuthnNewTab, this.platformUtilsService,\n this.i18nService, (token: string) => {\n this.token = token;\n this.submit();\n }, (error: string) => {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'), error);\n }, (info: string) => {\n if (info === 'ready') {\n this.webAuthnReady = true;\n }\n }\n );\n }\n\n this.selectedProviderType = this.authService.getDefaultTwoFactorProvider(this.webAuthnSupported);\n await this.init();\n }\n\n ngOnDestroy(): void {\n this.cleanupWebAuthn();\n this.webAuthn = null;\n }\n\n async init() {\n if (this.selectedProviderType == null) {\n this.title = this.i18nService.t('loginUnavailable');\n return;\n }\n\n this.cleanupWebAuthn();\n this.title = (TwoFactorProviders as any)[this.selectedProviderType].name;\n const providerData = this.authService.twoFactorProvidersData.get(this.selectedProviderType);\n switch (this.selectedProviderType) {\n case TwoFactorProviderType.WebAuthn:\n if (!this.webAuthnNewTab) {\n setTimeout(() => {\n this.authWebAuthn();\n }, 500);\n }\n break;\n case TwoFactorProviderType.Duo:\n case TwoFactorProviderType.OrganizationDuo:\n setTimeout(() => {\n DuoWebSDK.init({\n iframe: undefined,\n host: providerData.Host,\n sig_request: providerData.Signature,\n submit_callback: async (f: HTMLFormElement) => {\n const sig = f.querySelector('input[name=\"sig_response\"]') as HTMLInputElement;\n if (sig != null) {\n this.token = sig.value;\n await this.submit();\n }\n },\n });\n }, 0);\n break;\n case TwoFactorProviderType.Email:\n this.twoFactorEmail = providerData.Email;\n if (this.authService.twoFactorProvidersData.size > 1) {\n await this.sendEmail(false);\n }\n break;\n default:\n break;\n }\n }\n\n async submit() {\n if (this.token == null || this.token === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('verificationCodeRequired'));\n return;\n }\n\n if (this.selectedProviderType === TwoFactorProviderType.WebAuthn) {\n if (this.webAuthn != null) {\n this.webAuthn.stop();\n } else {\n return;\n }\n } else if (this.selectedProviderType === TwoFactorProviderType.Email ||\n this.selectedProviderType === TwoFactorProviderType.Authenticator) {\n this.token = this.token.replace(' ', '').trim();\n }\n\n try {\n await this.doSubmit();\n } catch {\n if (this.selectedProviderType === TwoFactorProviderType.WebAuthn && this.webAuthn != null) {\n this.webAuthn.start();\n }\n }\n }\n\n async doSubmit() {\n this.formPromise = this.authService.logInTwoFactor(this.selectedProviderType, this.token, this.remember);\n const response: AuthResult = await this.formPromise;\n const disableFavicon = await this.storageService.get(ConstantsService.disableFaviconKey);\n await this.stateService.save(ConstantsService.disableFaviconKey, !!disableFavicon);\n if (this.onSuccessfulLogin != null) {\n this.onSuccessfulLogin();\n }\n if (response.resetMasterPassword) {\n this.successRoute = 'set-password';\n }\n if (response.forcePasswordReset) {\n this.successRoute = 'update-temp-password';\n }\n if (this.onSuccessfulLoginNavigate != null) {\n this.onSuccessfulLoginNavigate();\n } else {\n this.router.navigate([this.successRoute], {\n queryParams: {\n identifier: this.identifier,\n },\n });\n }\n }\n\n async sendEmail(doToast: boolean) {\n if (this.selectedProviderType !== TwoFactorProviderType.Email) {\n return;\n }\n\n if (this.emailPromise != null) {\n return;\n }\n\n try {\n const request = new TwoFactorEmailRequest();\n request.email = this.authService.email;\n request.masterPasswordHash = this.authService.masterPasswordHash;\n this.emailPromise = this.apiService.postTwoFactorEmail(request);\n await this.emailPromise;\n if (doToast) {\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t('verificationCodeEmailSent', this.twoFactorEmail));\n }\n } catch (e) {\n this.logService.error(e);\n }\n\n this.emailPromise = null;\n }\n\n authWebAuthn() {\n const providerData = this.authService.twoFactorProvidersData.get(this.selectedProviderType);\n\n if (!this.webAuthnSupported || this.webAuthn == null) {\n return;\n }\n\n this.webAuthn.init(providerData);\n }\n\n private cleanupWebAuthn() {\n if (this.webAuthn != null) {\n this.webAuthn.stop();\n this.webAuthn.cleanup();\n }\n }\n\n get authing(): boolean {\n return this.authService.authingWithPassword() || this.authService.authingWithSso() || this.authService.authingWithApiKey();\n }\n\n get needsLock(): boolean {\n return this.authService.authingWithSso() || this.authService.authingWithApiKey();\n }\n}\n","import { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nexport class AuthResult {\n twoFactor: boolean = false;\n captchaSiteKey: string = '';\n resetMasterPassword: boolean = false;\n forcePasswordReset: boolean = false;\n twoFactorProviders: Map = null;\n}\n","import { KeysRequest } from '../keysRequest';\n\nimport { KdfType } from '../../../enums/kdfType';\n\nexport class SetKeyConnectorKeyRequest {\n key: string;\n keys: KeysRequest;\n kdf: KdfType;\n kdfIterations: number;\n orgIdentifier: string;\n\n constructor(key: string, kdf: KdfType, kdfIterations: number, orgIdentifier: string, keys: KeysRequest) {\n this.key = key;\n this.kdf = kdf;\n this.kdfIterations = kdfIterations;\n this.orgIdentifier = orgIdentifier;\n this.keys = keys;\n }\n}\n","import { DeviceType } from '../../enums/deviceType';\n\nimport { PlatformUtilsService } from '../../abstractions/platformUtils.service';\n\nexport class DeviceRequest {\n type: DeviceType;\n name: string;\n identifier: string;\n pushToken?: string;\n\n constructor(appId: string, platformUtilsService: PlatformUtilsService) {\n this.type = platformUtilsService.getDevice();\n this.name = platformUtilsService.getDeviceString();\n this.identifier = appId;\n this.pushToken = null;\n }\n}\n","export class PreloginRequest {\n email: string;\n\n constructor(email: string) {\n this.email = email;\n }\n}\n","import { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nimport { CaptchaProtectedRequest } from './captchaProtectedRequest';\nimport { DeviceRequest } from './deviceRequest';\n\nimport { Utils } from '../../misc/utils';\n\nexport class TokenRequest implements CaptchaProtectedRequest {\n email: string;\n masterPasswordHash: string;\n code: string;\n codeVerifier: string;\n redirectUri: string;\n clientId: string;\n clientSecret: string;\n device?: DeviceRequest;\n\n constructor(credentials: string[], codes: string[], clientIdClientSecret: string[], public provider: TwoFactorProviderType,\n public token: string, public remember: boolean, public captchaResponse: string, device?: DeviceRequest) {\n if (credentials != null && credentials.length > 1) {\n this.email = credentials[0];\n this.masterPasswordHash = credentials[1];\n } else if (codes != null && codes.length > 2) {\n this.code = codes[0];\n this.codeVerifier = codes[1];\n this.redirectUri = codes[2];\n } else if (clientIdClientSecret != null && clientIdClientSecret.length > 1) {\n this.clientId = clientIdClientSecret[0];\n this.clientSecret = clientIdClientSecret[1];\n }\n this.device = device != null ? device : null;\n }\n\n toIdentityToken(clientId: string) {\n const obj: any = {\n scope: 'api offline_access',\n client_id: clientId,\n };\n\n if (this.clientSecret != null) {\n obj.scope = clientId.startsWith('organization') ? 'api.organization' : 'api';\n obj.grant_type = 'client_credentials';\n obj.client_secret = this.clientSecret;\n } else if (this.masterPasswordHash != null && this.email != null) {\n obj.grant_type = 'password';\n obj.username = this.email;\n obj.password = this.masterPasswordHash;\n } else if (this.code != null && this.codeVerifier != null && this.redirectUri != null) {\n obj.grant_type = 'authorization_code';\n obj.code = this.code;\n obj.code_verifier = this.codeVerifier;\n obj.redirect_uri = this.redirectUri;\n } else {\n throw new Error('must provide credentials or codes');\n }\n\n if (this.device) {\n obj.deviceType = this.device.type;\n obj.deviceIdentifier = this.device.identifier;\n obj.deviceName = this.device.name;\n // no push tokens for browser apps yet\n // obj.devicePushToken = this.device.pushToken;\n }\n\n if (this.token && this.provider != null) {\n obj.twoFactorToken = this.token;\n obj.twoFactorProvider = this.provider;\n obj.twoFactorRemember = this.remember ? '1' : '0';\n }\n\n if (this.captchaResponse != null) {\n obj.captchaResponse = this.captchaResponse;\n }\n\n\n return obj;\n }\n\n alterIdentityTokenHeaders(headers: Headers) {\n if (this.clientSecret == null && this.masterPasswordHash != null && this.email != null) {\n headers.set('Auth-Email', Utils.fromUtf8ToUrlB64(this.email));\n }\n }\n}\n","import { I18nService } from '../abstractions/i18n.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\n\nexport class WebAuthnIFrame {\n private iframe: HTMLIFrameElement = null;\n private connectorLink: HTMLAnchorElement;\n private parseFunction = this.parseMessage.bind(this);\n\n constructor(private win: Window, private webVaultUrl: string, private webAuthnNewTab: boolean,\n private platformUtilsService: PlatformUtilsService, private i18nService: I18nService,\n private successCallback: Function, private errorCallback: Function, private infoCallback: Function) {\n this.connectorLink = win.document.createElement('a');\n }\n\n init(data: any): void {\n const params = new URLSearchParams({\n data: this.base64Encode(JSON.stringify(data)),\n parent: encodeURIComponent(this.win.document.location.href),\n btnText: encodeURIComponent(this.i18nService.t('webAuthnAuthenticate')),\n v: '1',\n });\n\n if (this.webAuthnNewTab) {\n // Firefox fallback which opens the webauthn page in a new tab\n params.append('locale', this.i18nService.translationLocale);\n this.platformUtilsService.launchUri(`${this.webVaultUrl}/webauthn-fallback-connector.html?${params}`);\n } else {\n this.connectorLink.href = `${this.webVaultUrl}/webauthn-connector.html?${params}`;\n this.iframe = this.win.document.getElementById('webauthn_iframe') as HTMLIFrameElement;\n this.iframe.allow = 'publickey-credentials-get ' + new URL(this.webVaultUrl).origin;\n this.iframe.src = this.connectorLink.href;\n\n this.win.addEventListener('message', this.parseFunction, false);\n }\n }\n\n stop() {\n this.sendMessage('stop');\n }\n\n start() {\n this.sendMessage('start');\n }\n\n sendMessage(message: any) {\n if (!this.iframe || !this.iframe.src || !this.iframe.contentWindow) {\n return;\n }\n\n this.iframe.contentWindow.postMessage(message, this.iframe.src);\n }\n\n base64Encode(str: string): string {\n return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (match, p1) => {\n return String.fromCharCode(('0x' + p1) as any);\n }));\n }\n\n cleanup() {\n this.win.removeEventListener('message', this.parseFunction, false);\n }\n\n private parseMessage(event: MessageEvent) {\n if (!this.validMessage(event)) {\n return;\n }\n\n const parts: string[] = event.data.split('|');\n if (parts[0] === 'success' && this.successCallback) {\n this.successCallback(parts[1]);\n } else if (parts[0] === 'error' && this.errorCallback) {\n this.errorCallback(parts[1]);\n } else if (parts[0] === 'info' && this.infoCallback) {\n this.infoCallback(parts[1]);\n }\n }\n\n private validMessage(event: MessageEvent) {\n if (event.origin == null || event.origin === '' || event.origin !== (this.connectorLink as any).origin ||\n event.data == null || typeof (event.data) !== 'string') {\n return false;\n }\n\n return event.data.indexOf('success|') === 0 || event.data.indexOf('error|') === 0 ||\n event.data.indexOf('info|') === 0;\n }\n}\n","import {\n Directive,\n EventEmitter,\n OnInit,\n Output,\n} from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { TwoFactorProviderType } from 'jslib-common/enums/twoFactorProviderType';\n\nimport { AuthService } from 'jslib-common/abstractions/auth.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\n@Directive()\nexport class TwoFactorOptionsComponent implements OnInit {\n @Output() onProviderSelected = new EventEmitter();\n @Output() onRecoverSelected = new EventEmitter();\n\n providers: any[] = [];\n\n constructor(protected authService: AuthService, protected router: Router,\n protected i18nService: I18nService, protected platformUtilsService: PlatformUtilsService,\n protected win: Window) { }\n\n ngOnInit() {\n this.providers = this.authService.getSupportedTwoFactorProviders(this.win);\n }\n\n choose(p: any) {\n this.onProviderSelected.emit(p.type);\n }\n\n recover() {\n this.platformUtilsService.launchUri('https://help.bitwarden.com/article/lost-two-step-device/');\n this.onRecoverSelected.emit();\n }\n}\n","import { Directive } from '@angular/core';\n\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SyncService } from 'jslib-common/abstractions/sync.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ChangePasswordComponent as BaseChangePasswordComponent } from './change-password.component';\n\nimport { EncString } from 'jslib-common/models/domain/encString';\nimport { MasterPasswordPolicyOptions } from 'jslib-common/models/domain/masterPasswordPolicyOptions';\nimport { SymmetricCryptoKey } from 'jslib-common/models/domain/symmetricCryptoKey';\n\nimport { UpdateTempPasswordRequest } from 'jslib-common/models/request/updateTempPasswordRequest';\n\n@Directive()\nexport class UpdateTempPasswordComponent extends BaseChangePasswordComponent {\n hint: string;\n key: string;\n enforcedPolicyOptions: MasterPasswordPolicyOptions;\n showPassword: boolean = false;\n\n onSuccessfulChangePassword: () => Promise;\n\n constructor(i18nService: I18nService, platformUtilsService: PlatformUtilsService,\n passwordGenerationService: PasswordGenerationService, policyService: PolicyService,\n cryptoService: CryptoService, userService: UserService,\n messagingService: MessagingService, private apiService: ApiService,\n private syncService: SyncService, private logService: LogService) {\n super(i18nService, cryptoService, messagingService, userService, passwordGenerationService,\n platformUtilsService, policyService);\n }\n\n async ngOnInit() {\n await this.syncService.fullSync(true);\n super.ngOnInit();\n }\n\n togglePassword(confirmField: boolean) {\n this.showPassword = !this.showPassword;\n document.getElementById(confirmField ? 'masterPasswordRetype' : 'masterPassword').focus();\n }\n\n async setupSubmitActions(): Promise {\n this.enforcedPolicyOptions = await this.policyService.getMasterPasswordPolicyOptions();\n this.email = await this.userService.getEmail();\n this.kdf = await this.userService.getKdf();\n this.kdfIterations = await this.userService.getKdfIterations();\n return true;\n }\n\n async submit() {\n // Validation\n if (!await this.strongPassword()) {\n return;\n }\n\n if (!await this.setupSubmitActions()) {\n return;\n }\n\n try {\n // Create new key and hash new password\n const newKey = await this.cryptoService.makeKey(this.masterPassword, this.email.trim().toLowerCase(),\n this.kdf, this.kdfIterations);\n const newPasswordHash = await this.cryptoService.hashPassword(this.masterPassword, newKey);\n\n // Grab user's current enc key\n const userEncKey = await this.cryptoService.getEncKey();\n\n // Create new encKey for the User\n const newEncKey = await this.cryptoService.remakeEncKey(newKey, userEncKey);\n\n await this.performSubmitActions(newPasswordHash, newKey, newEncKey);\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async performSubmitActions(masterPasswordHash: string, key: SymmetricCryptoKey,\n encKey: [SymmetricCryptoKey, EncString]) {\n try {\n // Create request\n const request = new UpdateTempPasswordRequest();\n request.key = encKey[1].encryptedString;\n request.newMasterPasswordHash = masterPasswordHash;\n request.masterPasswordHint = this.hint;\n\n // Update user's password\n this.formPromise = this.apiService.putUpdateTempPassword(request);\n await this.formPromise;\n this.platformUtilsService.showToast('success', null, this.i18nService.t('updatedMasterPassword'));\n\n if (this.onSuccessfulChangePassword != null) {\n this.onSuccessfulChangePassword();\n } else {\n this.messagingService.send('logout');\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n}\n","import { OrganizationUserResetPasswordRequest } from './organizationUserResetPasswordRequest';\n\nexport class UpdateTempPasswordRequest extends OrganizationUserResetPasswordRequest {\n masterPasswordHint: string;\n}\n","export class VerifyEmailRequest {\n userId: string;\n token: string;\n\n constructor(userId: string, token: string) {\n this.userId = userId;\n this.token = token;\n }\n}\n","export class VerifyDeleteRecoverRequest {\n userId: string;\n token: string;\n\n constructor(userId: string, token: string) {\n this.userId = userId;\n this.token = token;\n }\n}\n","import { Directive } from '@angular/core';\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ExportService } from 'jslib-common/abstractions/export.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { EventView } from 'jslib-common/models/view/eventView';\n\nimport { EventResponse } from 'jslib-common/models/response/eventResponse';\nimport { ListResponse } from 'jslib-common/models/response/listResponse';\n\nimport { EventService } from 'src/app/services/event.service';\n\n@Directive()\nexport abstract class BaseEventsComponent {\n loading = true;\n loaded = false;\n events: EventView[];\n start: string;\n end: string;\n dirtyDates: boolean = true;\n continuationToken: string;\n refreshPromise: Promise;\n exportPromise: Promise;\n morePromise: Promise;\n\n abstract readonly exportFileName: string;\n\n constructor(protected eventService: EventService, protected i18nService: I18nService,\n protected toasterService: ToasterService, protected exportService: ExportService,\n protected platformUtilsService: PlatformUtilsService, protected logService: LogService) {\n const defaultDates = this.eventService.getDefaultDateFilters();\n this.start = defaultDates[0];\n this.end = defaultDates[1];\n }\n\n async exportEvents() {\n if (this.appApiPromiseUnfulfilled() || this.dirtyDates) {\n return;\n }\n\n this.loading = true;\n\n const dates = this.parseDates();\n if (dates == null) {\n return;\n }\n\n try {\n this.exportPromise = this.export(dates[0], dates[1]);\n\n await this.exportPromise;\n } catch (e) {\n this.logService.error(`Handled exception: ${e}`);\n }\n\n this.exportPromise = null;\n this.loading = false;\n }\n\n async loadEvents(clearExisting: boolean) {\n if (this.appApiPromiseUnfulfilled()) {\n return;\n }\n\n const dates = this.parseDates();\n if (dates == null) {\n return;\n }\n\n this.loading = true;\n let events: EventView[] = [];\n try {\n const promise = this.loadAndParseEvents(dates[0], dates[1], clearExisting ? null : this.continuationToken);\n if (clearExisting) {\n this.refreshPromise = promise;\n } else {\n this.morePromise = promise;\n }\n const result = await promise;\n this.continuationToken = result.continuationToken;\n events = result.events;\n } catch (e) {\n this.logService.error(`Handled exception: ${e}`);\n }\n\n if (!clearExisting && this.events != null && this.events.length > 0) {\n this.events = this.events.concat(events);\n } else {\n this.events = events;\n }\n\n this.dirtyDates = false;\n this.loading = false;\n this.morePromise = null;\n this.refreshPromise = null;\n }\n\n protected abstract requestEvents(startDate: string, endDate: string, continuationToken: string): Promise>;\n protected abstract getUserName(r: EventResponse, userId: string): { name: string, email: string };\n\n protected async loadAndParseEvents(startDate: string, endDate: string, continuationToken: string) {\n const response = await this.requestEvents(startDate, endDate, continuationToken);\n\n const events = await Promise.all(response.data.map(async r => {\n const userId = r.actingUserId == null ? r.userId : r.actingUserId;\n const eventInfo = await this.eventService.getEventInfo(r);\n const user = this.getUserName(r, userId);\n return new EventView({\n message: eventInfo.message,\n humanReadableMessage: eventInfo.humanReadableMessage,\n appIcon: eventInfo.appIcon,\n appName: eventInfo.appName,\n userId: userId,\n userName: user != null ? user.name : this.i18nService.t('unknown'),\n userEmail: user != null ? user.email : '',\n date: r.date,\n ip: r.ipAddress,\n type: r.type,\n });\n }));\n return { continuationToken: response.continuationToken, events: events };\n }\n\n protected parseDates() {\n let dates: string[] = null;\n try {\n dates = this.eventService.formatDateFilters(this.start, this.end);\n } catch (e) {\n this.toasterService.popAsync('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('invalidDateRange'));\n return null;\n }\n return dates;\n }\n\n protected appApiPromiseUnfulfilled() {\n return this.refreshPromise != null || this.morePromise != null || this.exportPromise != null;\n }\n\n private async export(start: string, end: string) {\n let continuationToken = this.continuationToken;\n let events = [].concat(this.events);\n\n while (continuationToken != null) {\n const result = await this.loadAndParseEvents(start, end, continuationToken);\n continuationToken = result.continuationToken;\n events = events.concat(result.events);\n }\n\n const data = await this.exportService.getEventExport(events);\n const fileName = this.exportService.getFileName(this.exportFileName, 'csv');\n this.platformUtilsService.saveFile(window, data, { type: 'text/plain' }, fileName);\n }\n}\n","import { EventType } from '../../enums/eventType';\n\nexport class EventView {\n message: string;\n humanReadableMessage: string;\n appIcon: string;\n appName: string;\n userId: string;\n userName: string;\n userEmail: string;\n date: string;\n ip: string;\n type: EventType;\n\n constructor(data: Required) {\n this.message = data.message;\n this.humanReadableMessage = data.humanReadableMessage;\n this.appIcon = data.appIcon;\n this.appName = data.appName;\n this.userId = data.userId;\n this.userName = data.userName;\n this.userEmail = data.userEmail;\n this.date = data.date;\n this.ip = data.ip;\n this.type = data.type;\n }\n}\n","import { SelectionReadOnlyRequest } from './selectionReadOnlyRequest';\n\nexport class GroupRequest {\n name: string;\n accessAll: boolean;\n externalId: string;\n collections: SelectionReadOnlyRequest[] = [];\n}\n","export class OrganizationUserConfirmRequest {\n key: string;\n}\n","import {\n Directive,\n ViewChild,\n ViewContainerRef\n} from '@angular/core';\nimport { ToasterService } from 'angular2-toaster';\n\nimport { ValidationService } from 'jslib-angular/services/validation.service';\nimport { ApiService } from 'jslib-common/abstractions/api.service';\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { SearchService } from 'jslib-common/abstractions/search.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nimport { ModalService } from 'jslib-angular/services/modal.service';\n\nimport { SearchPipe } from 'jslib-angular/pipes/search.pipe';\nimport { UserNamePipe } from 'jslib-angular/pipes/user-name.pipe';\n\nimport { OrganizationUserStatusType } from 'jslib-common/enums/organizationUserStatusType';\nimport { OrganizationUserType } from 'jslib-common/enums/organizationUserType';\nimport { ProviderUserStatusType } from 'jslib-common/enums/providerUserStatusType';\nimport { ProviderUserType } from 'jslib-common/enums/providerUserType';\n\nimport { ListResponse } from 'jslib-common/models/response/listResponse';\nimport { OrganizationUserUserDetailsResponse } from 'jslib-common/models/response/organizationUserResponse';\nimport { ProviderUserUserDetailsResponse } from 'jslib-common/models/response/provider/providerUserResponse';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\nimport { UserConfirmComponent } from '../organizations/manage/user-confirm.component';\n\ntype StatusType = OrganizationUserStatusType | ProviderUserStatusType;\n\nconst MaxCheckedCount = 500;\n\n@Directive()\nexport abstract class BasePeopleComponent {\n\n @ViewChild('confirmTemplate', { read: ViewContainerRef, static: true }) confirmModalRef: ViewContainerRef;\n\n get allCount() {\n return this.allUsers != null ? this.allUsers.length : 0;\n }\n\n get invitedCount() {\n return this.statusMap.has(this.userStatusType.Invited) ?\n this.statusMap.get(this.userStatusType.Invited).length : 0;\n }\n\n get acceptedCount() {\n return this.statusMap.has(this.userStatusType.Accepted) ?\n this.statusMap.get(this.userStatusType.Accepted).length : 0;\n }\n\n get confirmedCount() {\n return this.statusMap.has(this.userStatusType.Confirmed) ?\n this.statusMap.get(this.userStatusType.Confirmed).length : 0;\n }\n\n get showConfirmUsers(): boolean {\n return this.allUsers != null && this.statusMap != null && this.allUsers.length > 1 &&\n this.confirmedCount > 0 && this.confirmedCount < 3 && this.acceptedCount > 0;\n }\n\n get showBulkConfirmUsers(): boolean {\n return this.acceptedCount > 0;\n }\n\n abstract userType: typeof OrganizationUserType | typeof ProviderUserType;\n abstract userStatusType: typeof OrganizationUserStatusType | typeof ProviderUserStatusType;\n\n loading = true;\n statusMap = new Map();\n status: StatusType;\n users: UserType[] = [];\n pagedUsers: UserType[] = [];\n searchText: string;\n actionPromise: Promise;\n\n protected allUsers: UserType[] = [];\n\n protected didScroll = false;\n protected pageSize = 100;\n\n private pagedUsersCount = 0;\n\n constructor(protected apiService: ApiService, private searchService: SearchService,\n protected i18nService: I18nService, private platformUtilsService: PlatformUtilsService,\n protected toasterService: ToasterService, protected cryptoService: CryptoService,\n private storageService: StorageService, protected validationService: ValidationService,\n protected modalService: ModalService, private logService: LogService,\n private searchPipe: SearchPipe, protected userNamePipe: UserNamePipe ) { }\n\n abstract edit(user: UserType): void;\n abstract getUsers(): Promise>;\n abstract deleteUser(id: string): Promise;\n abstract reinviteUser(id: string): Promise;\n abstract confirmUser(user: UserType, publicKey: Uint8Array): Promise;\n\n async load() {\n const response = await this.getUsers();\n this.statusMap.clear();\n for (const status of Utils.iterateEnum(this.userStatusType)) {\n this.statusMap.set(status, []);\n }\n\n this.allUsers = response.data != null && response.data.length > 0 ? response.data : [];\n this.allUsers.sort(Utils.getSortFunction(this.i18nService, 'email'));\n this.allUsers.forEach(u => {\n if (!this.statusMap.has(u.status)) {\n this.statusMap.set(u.status, [u]);\n } else {\n this.statusMap.get(u.status).push(u);\n }\n });\n this.filter(this.status);\n this.loading = false;\n }\n\n filter(status: StatusType) {\n this.status = status;\n if (this.status != null) {\n this.users = this.statusMap.get(this.status);\n } else {\n this.users = this.allUsers;\n }\n // Reset checkbox selecton\n this.selectAll(false);\n this.resetPaging();\n }\n\n loadMore() {\n if (!this.users || this.users.length <= this.pageSize) {\n return;\n }\n const pagedLength = this.pagedUsers.length;\n let pagedSize = this.pageSize;\n if (pagedLength === 0 && this.pagedUsersCount > this.pageSize) {\n pagedSize = this.pagedUsersCount;\n }\n if (this.users.length > pagedLength) {\n this.pagedUsers = this.pagedUsers.concat(this.users.slice(pagedLength, pagedLength + pagedSize));\n }\n this.pagedUsersCount = this.pagedUsers.length;\n this.didScroll = this.pagedUsers.length > this.pageSize;\n }\n\n checkUser(user: OrganizationUserUserDetailsResponse, select?: boolean) {\n (user as any).checked = select == null ? !(user as any).checked : select;\n }\n\n selectAll(select: boolean) {\n if (select) {\n this.selectAll(false);\n }\n\n const filteredUsers = this.searchPipe.transform(this.users, this.searchText, 'name', 'email', 'id');\n\n const selectCount = select && filteredUsers.length > MaxCheckedCount\n ? MaxCheckedCount\n : filteredUsers.length;\n for (let i = 0; i < selectCount; i++) {\n this.checkUser(filteredUsers[i], select);\n }\n }\n\n async resetPaging() {\n this.pagedUsers = [];\n this.loadMore();\n }\n\n invite() {\n this.edit(null);\n }\n\n async remove(user: UserType) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.deleteWarningMessage(user), this.userNamePipe.transform(user),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n\n if (!confirmed) {\n return false;\n }\n\n this.actionPromise = this.deleteUser(user.id);\n try {\n await this.actionPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('removedUserId', this.userNamePipe.transform(user)));\n this.removeUser(user);\n } catch (e) {\n this.validationService.showError(e);\n }\n this.actionPromise = null;\n }\n\n async reinvite(user: UserType) {\n if (this.actionPromise != null) {\n return;\n }\n\n this.actionPromise = this.reinviteUser(user.id);\n try {\n await this.actionPromise;\n this.toasterService.popAsync('success', null, this.i18nService.t('hasBeenReinvited', this.userNamePipe.transform(user)));\n } catch (e) {\n this.validationService.showError(e);\n }\n this.actionPromise = null;\n }\n\n async confirm(user: UserType) {\n function updateUser(self: BasePeopleComponent) {\n user.status = self.userStatusType.Confirmed;\n const mapIndex = self.statusMap.get(self.userStatusType.Accepted).indexOf(user);\n if (mapIndex > -1) {\n self.statusMap.get(self.userStatusType.Accepted).splice(mapIndex, 1);\n self.statusMap.get(self.userStatusType.Confirmed).push(user);\n }\n }\n\n const confirmUser = async (publicKey: Uint8Array) => {\n try {\n this.actionPromise = this.confirmUser(user, publicKey);\n await this.actionPromise;\n updateUser(this);\n this.toasterService.popAsync('success', null, this.i18nService.t('hasBeenConfirmed', this.userNamePipe.transform(user)));\n } catch (e) {\n this.validationService.showError(e);\n throw e;\n } finally {\n this.actionPromise = null;\n }\n };\n\n if (this.actionPromise != null) {\n return;\n }\n\n try {\n const publicKeyResponse = await this.apiService.getUserPublicKey(user.userId);\n const publicKey = Utils.fromB64ToArray(publicKeyResponse.publicKey);\n\n const autoConfirm = await this.storageService.get(ConstantsService.autoConfirmFingerprints);\n if (autoConfirm == null || !autoConfirm) {\n const [modal] = await this.modalService.openViewRef(UserConfirmComponent, this.confirmModalRef, comp => {\n comp.name = this.userNamePipe.transform(user);\n comp.userId = user != null ? user.userId : null;\n comp.publicKey = publicKey;\n comp.onConfirmedUser.subscribe(async () => {\n try {\n comp.formPromise = confirmUser(publicKey);\n await comp.formPromise;\n modal.close();\n } catch (e) {\n this.logService.error(e);\n }\n });\n });\n return;\n }\n\n try {\n const fingerprint = await this.cryptoService.getFingerprint(user.userId, publicKey.buffer);\n this.logService.info(`User's fingerprint: ${fingerprint.join('-')}`);\n } catch (e) {\n this.logService.error(e);\n }\n await confirmUser(publicKey);\n } catch (e) {\n this.logService.error(`Handled exception: ${e}`);\n }\n }\n\n isSearching() {\n return this.searchService.isSearchable(this.searchText);\n }\n\n isPaging() {\n const searching = this.isSearching();\n if (searching && this.didScroll) {\n this.resetPaging();\n }\n return !searching && this.users && this.users.length > this.pageSize;\n }\n\n protected deleteWarningMessage(user: UserType): string {\n return this.i18nService.t('removeUserConfirmation');\n }\n\n protected getCheckedUsers() {\n return this.users.filter(u => (u as any).checked);\n }\n\n protected removeUser(user: UserType) {\n let index = this.users.indexOf(user);\n if (index > -1) {\n this.users.splice(index, 1);\n this.resetPaging();\n }\n if (this.statusMap.has(user.status)) {\n index = this.statusMap.get(user.status).indexOf(user);\n if (index > -1) {\n this.statusMap.get(user.status).splice(index, 1);\n }\n }\n }\n\n}\n","type OrganizationUserBulkRequestEntry = {\n id: string;\n key: string;\n};\n\nexport class OrganizationUserBulkConfirmRequest {\n keys: OrganizationUserBulkRequestEntry[];\n\n constructor(keys: OrganizationUserBulkRequestEntry[]) {\n this.keys = keys;\n }\n}\n","import { SelectionReadOnlyRequest } from './selectionReadOnlyRequest';\n\nimport { OrganizationUserType } from '../../enums/organizationUserType';\nimport { PermissionsApi } from '../api/permissionsApi';\n\nexport class OrganizationUserInviteRequest {\n emails: string[] = [];\n type: OrganizationUserType;\n accessAll: boolean;\n collections: SelectionReadOnlyRequest[] = [];\n permissions: PermissionsApi;\n}\n","import { SelectionReadOnlyRequest } from './selectionReadOnlyRequest';\n\nimport { OrganizationUserType } from '../../enums/organizationUserType';\nimport { PermissionsApi } from '../api/permissionsApi';\n\nexport class OrganizationUserUpdateRequest {\n type: OrganizationUserType;\n accessAll: boolean;\n collections: SelectionReadOnlyRequest[] = [];\n permissions: PermissionsApi;\n}\n","export class OrganizationUserUpdateGroupsRequest {\n groupIds: string[] = [];\n}\n","import { OrganizationKeysRequest } from './organizationKeysRequest';\n\nexport class OrganizationUpdateRequest {\n name: string;\n identifier: string;\n businessName: string;\n billingEmail: string;\n keys: OrganizationKeysRequest;\n}\n","export enum TransactionType {\n Charge = 0,\n Credit = 1,\n PromotionalCredit = 2,\n ReferralCredit = 3,\n Refund = 4,\n}\n","export class VerifyBankRequest {\n amount1: number;\n amount2: number;\n}\n","export class BitPayInvoiceRequest {\n userId: string;\n organizationId: string;\n credit: boolean;\n amount: number;\n returnUrl: string;\n name: string;\n email: string;\n}\n","import { PaymentMethodType } from '../../enums/paymentMethodType';\nimport { OrganizationTaxInfoUpdateRequest } from '../request/organizationTaxInfoUpdateRequest';\n\nexport class PaymentRequest extends OrganizationTaxInfoUpdateRequest {\n paymentMethodType: PaymentMethodType;\n paymentToken: string;\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"darkInputColor\":\"#fff\",\"darkInputPlaceholderColor\":\"#bac0ce\",\"lightInputColor\":\"#465057\",\"lightInputPlaceholderColor\":\"#b6b8b8\"};","import { PaymentMethodType } from '../../enums/paymentMethodType';\nimport { PlanType } from '../../enums/planType';\n\nimport { OrganizationKeysRequest } from './organizationKeysRequest';\n\nexport class OrganizationCreateRequest {\n name: string;\n businessName: string;\n billingEmail: string;\n planType: PlanType;\n key: string;\n keys: OrganizationKeysRequest;\n paymentMethodType: PaymentMethodType;\n paymentToken: string;\n additionalSeats: number;\n maxAutoscaleSeats: number;\n additionalStorageGb: number;\n premiumAccessAddon: boolean;\n collectionName: string;\n taxIdNumber: string;\n billingAddressLine1: string;\n billingAddressLine2: string;\n billingAddressCity: string;\n billingAddressState: string;\n billingAddressPostalCode: string;\n billingAddressCountry: string;\n}\n","import { PlanType } from '../../enums/planType';\n\nimport { OrganizationKeysRequest } from './organizationKeysRequest';\n\nexport class OrganizationUpgradeRequest {\n businessName: string;\n planType: PlanType;\n additionalSeats: number;\n additionalStorageGb: number;\n premiumAccessAddon: boolean;\n billingAddressCountry: string;\n billingAddressPostalCode: string;\n keys: OrganizationKeysRequest;\n}\n","import { OrganizationCreateRequest } from '../organizationCreateRequest';\n\nexport class ProviderOrganizationCreateRequest {\n constructor(public clientOwnerEmail: string, public organizationCreateRequest: OrganizationCreateRequest) { }\n}\n","export class OrganizationSubscriptionUpdateRequest {\n constructor(public seatAdjustment: number, public maxAutoscaleSeats?: number) { }\n}\n","export class StorageRequest {\n storageGbAdjustment: number;\n}\n","import { SecretVerificationRequest } from './secretVerificationRequest';\n\nexport class UpdateTwoFactorDuoRequest extends SecretVerificationRequest {\n integrationKey: string;\n secretKey: string;\n host: string;\n}\n","import { SecretVerificationRequest } from './secretVerificationRequest';\n\nimport { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nexport class TwoFactorProviderRequest extends SecretVerificationRequest {\n type: TwoFactorProviderType;\n}\n","import { SecretVerificationRequest } from './secretVerificationRequest';\n\nexport class UpdateTwoFactorAuthenticatorRequest extends SecretVerificationRequest {\n token: string;\n key: string;\n}\n","import { SecretVerificationRequest } from './secretVerificationRequest';\n\nexport class UpdateTwoFactorEmailRequest extends SecretVerificationRequest {\n token: string;\n email: string;\n}\n","import { SecretVerificationRequest } from './secretVerificationRequest';\n\nexport class UpdateTwoFactorWebAuthnDeleteRequest extends SecretVerificationRequest {\n id: number;\n}\n","import { SecretVerificationRequest } from './secretVerificationRequest';\n\nexport class UpdateTwoFactorWebAuthnRequest extends SecretVerificationRequest {\n deviceResponse: PublicKeyCredential;\n name: string;\n id: number;\n}\n","import { SecretVerificationRequest } from './secretVerificationRequest';\n\nexport class UpdateTwoFactorYubioOtpRequest extends SecretVerificationRequest {\n key1: string;\n key2: string;\n key3: string;\n key4: string;\n key5: string;\n nfc: boolean;\n}\n","import { PlanSponsorshipType } from '../../../enums/planSponsorshipType';\n\nexport class OrganizationSponsorshipRedeemRequest {\n planSponsorshipType: PlanSponsorshipType;\n sponsoredOrganizationId: string;\n}\n","import {\n Directive,\n EventEmitter,\n OnInit,\n Output,\n} from '@angular/core';\nimport { FormBuilder } from '@angular/forms';\n\nimport { CryptoService } from 'jslib-common/abstractions/crypto.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { ExportService } from 'jslib-common/abstractions/export.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { UserVerificationService } from 'jslib-common/abstractions/userVerification.service';\n\nimport { EventType } from 'jslib-common/enums/eventType';\nimport { PolicyType } from 'jslib-common/enums/policyType';\n\n@Directive()\nexport class ExportComponent implements OnInit {\n @Output() onSaved = new EventEmitter();\n\n formPromise: Promise;\n disabledByPolicy: boolean = false;\n\n exportForm = this.fb.group({\n format: ['json'],\n secret: [''],\n });\n\n formatOptions = [\n { name: '.json', value: 'json' },\n { name: '.csv', value: 'csv' },\n { name: '.json (Encrypted)', value: 'encrypted_json' },\n ];\n\n constructor(protected cryptoService: CryptoService, protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService, protected exportService: ExportService,\n protected eventService: EventService, private policyService: PolicyService, protected win: Window,\n private logService: LogService, private userVerificationService: UserVerificationService,\n private fb: FormBuilder) { }\n\n async ngOnInit() {\n await this.checkExportDisabled();\n }\n\n async checkExportDisabled() {\n this.disabledByPolicy = await this.policyService.policyAppliesToUser(PolicyType.DisablePersonalVaultExport);\n if (this.disabledByPolicy) {\n this.exportForm.disable();\n }\n }\n\n get encryptedFormat() {\n return this.format === 'encrypted_json';\n }\n\n async submit() {\n if (this.disabledByPolicy) {\n this.platformUtilsService.showToast('error', null, this.i18nService.t('personalVaultExportPolicyInEffect'));\n return;\n }\n\n const acceptedWarning = await this.warningDialog();\n if (!acceptedWarning) {\n return;\n }\n\n const secret = this.exportForm.get('secret').value;\n try {\n await this.userVerificationService.verifyUser(secret);\n } catch (e) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'), e.message);\n return;\n }\n\n try {\n this.formPromise = this.getExportData();\n const data = await this.formPromise;\n this.downloadFile(data);\n this.saved();\n await this.collectEvent();\n this.exportForm.get('secret').setValue('');\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async warningDialog() {\n if (this.encryptedFormat) {\n return await this.platformUtilsService.showDialog(\n '

' + this.i18nService.t('encExportKeyWarningDesc') +\n '

' + this.i18nService.t('encExportAccountWarningDesc'),\n this.i18nService.t('confirmVaultExport'), this.i18nService.t('exportVault'),\n this.i18nService.t('cancel'), 'warning',\n true);\n } else {\n return await this.platformUtilsService.showDialog(\n this.i18nService.t('exportWarningDesc'),\n this.i18nService.t('confirmVaultExport'), this.i18nService.t('exportVault'),\n this.i18nService.t('cancel'), 'warning');\n }\n }\n\n protected saved() {\n this.onSaved.emit();\n }\n\n protected getExportData() {\n return this.exportService.getExport(this.format);\n }\n\n protected getFileName(prefix?: string) {\n let extension = this.format;\n if (this.format === 'encrypted_json') {\n if (prefix == null) {\n prefix = 'encrypted';\n } else {\n prefix = 'encrypted_' + prefix;\n }\n extension = 'json';\n }\n return this.exportService.getFileName(prefix, extension);\n }\n\n protected async collectEvent(): Promise {\n await this.eventService.collect(EventType.User_ClientExportedVault);\n }\n\n get format() {\n return this.exportForm.get('format').value;\n }\n\n private downloadFile(csv: string): void {\n const fileName = this.getFileName();\n this.platformUtilsService.saveFile(this.win, csv, { type: 'text/plain' }, fileName);\n }\n}\n","import { View } from './view';\n\nimport { Attachment } from '../domain/attachment';\nimport { SymmetricCryptoKey } from '../domain/symmetricCryptoKey';\n\nexport class AttachmentView implements View {\n id: string = null;\n url: string = null;\n size: string = null;\n sizeName: string = null;\n fileName: string = null;\n key: SymmetricCryptoKey = null;\n\n constructor(a?: Attachment) {\n if (!a) {\n return;\n }\n\n this.id = a.id;\n this.url = a.url;\n this.size = a.size;\n this.sizeName = a.sizeName;\n }\n\n get fileSize(): number {\n try {\n if (this.size != null) {\n return parseInt(this.size, null);\n }\n } catch {\n // Invalid file size.\n }\n return 0;\n }\n}\n","export class AttachmentRequest {\n fileName: string;\n key: string;\n fileSize: number;\n adminRequest: boolean;\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { CipherRepromptType } from 'jslib-common/enums/cipherRepromptType';\nimport { CipherType } from 'jslib-common/enums/cipherType';\nimport { EventType } from 'jslib-common/enums/eventType';\nimport { OrganizationUserStatusType } from 'jslib-common/enums/organizationUserStatusType';\nimport { PolicyType } from 'jslib-common/enums/policyType';\nimport { SecureNoteType } from 'jslib-common/enums/secureNoteType';\nimport { UriMatchType } from 'jslib-common/enums/uriMatchType';\n\nimport { AuditService } from 'jslib-common/abstractions/audit.service';\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PasswordRepromptService } from 'jslib-common/abstractions/passwordReprompt.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { StateService } from 'jslib-common/abstractions/state.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Cipher } from 'jslib-common/models/domain/cipher';\n\nimport { CardView } from 'jslib-common/models/view/cardView';\nimport { CipherView } from 'jslib-common/models/view/cipherView';\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\nimport { FolderView } from 'jslib-common/models/view/folderView';\nimport { IdentityView } from 'jslib-common/models/view/identityView';\nimport { LoginUriView } from 'jslib-common/models/view/loginUriView';\nimport { LoginView } from 'jslib-common/models/view/loginView';\nimport { SecureNoteView } from 'jslib-common/models/view/secureNoteView';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Directive()\nexport class AddEditComponent implements OnInit {\n @Input() cloneMode: boolean = false;\n @Input() folderId: string = null;\n @Input() cipherId: string;\n @Input() type: CipherType;\n @Input() collectionIds: string[];\n @Input() organizationId: string = null;\n @Output() onSavedCipher = new EventEmitter();\n @Output() onDeletedCipher = new EventEmitter();\n @Output() onRestoredCipher = new EventEmitter();\n @Output() onCancelled = new EventEmitter();\n @Output() onEditAttachments = new EventEmitter();\n @Output() onShareCipher = new EventEmitter();\n @Output() onEditCollections = new EventEmitter();\n @Output() onGeneratePassword = new EventEmitter();\n\n editMode: boolean = false;\n cipher: CipherView;\n folders: FolderView[];\n collections: CollectionView[] = [];\n title: string;\n formPromise: Promise;\n deletePromise: Promise;\n restorePromise: Promise;\n checkPasswordPromise: Promise;\n showPassword: boolean = false;\n showCardNumber: boolean = false;\n showCardCode: boolean = false;\n cipherType = CipherType;\n typeOptions: any[];\n cardBrandOptions: any[];\n cardExpMonthOptions: any[];\n identityTitleOptions: any[];\n uriMatchOptions: any[];\n ownershipOptions: any[] = [];\n autofillOnPageLoadOptions: any[];\n currentDate = new Date();\n allowPersonal = true;\n reprompt: boolean = false;\n canUseReprompt: boolean = true;\n\n protected writeableCollections: CollectionView[];\n private previousCipherId: string;\n\n constructor(protected cipherService: CipherService, protected folderService: FolderService,\n protected i18nService: I18nService, protected platformUtilsService: PlatformUtilsService,\n protected auditService: AuditService, protected stateService: StateService,\n protected userService: UserService, protected collectionService: CollectionService,\n protected messagingService: MessagingService, protected eventService: EventService,\n protected policyService: PolicyService, protected passwordRepromptService: PasswordRepromptService,\n private logService: LogService) {\n this.typeOptions = [\n { name: i18nService.t('typeLogin'), value: CipherType.Login },\n { name: i18nService.t('typeCard'), value: CipherType.Card },\n { name: i18nService.t('typeIdentity'), value: CipherType.Identity },\n { name: i18nService.t('typeSecureNote'), value: CipherType.SecureNote },\n ];\n this.cardBrandOptions = [\n { name: '-- ' + i18nService.t('select') + ' --', value: null },\n { name: 'Visa', value: 'Visa' },\n { name: 'Mastercard', value: 'Mastercard' },\n { name: 'American Express', value: 'Amex' },\n { name: 'Discover', value: 'Discover' },\n { name: 'Diners Club', value: 'Diners Club' },\n { name: 'JCB', value: 'JCB' },\n { name: 'Maestro', value: 'Maestro' },\n { name: 'UnionPay', value: 'UnionPay' },\n { name: i18nService.t('other'), value: 'Other' },\n ];\n this.cardExpMonthOptions = [\n { name: '-- ' + i18nService.t('select') + ' --', value: null },\n { name: '01 - ' + i18nService.t('january'), value: '1' },\n { name: '02 - ' + i18nService.t('february'), value: '2' },\n { name: '03 - ' + i18nService.t('march'), value: '3' },\n { name: '04 - ' + i18nService.t('april'), value: '4' },\n { name: '05 - ' + i18nService.t('may'), value: '5' },\n { name: '06 - ' + i18nService.t('june'), value: '6' },\n { name: '07 - ' + i18nService.t('july'), value: '7' },\n { name: '08 - ' + i18nService.t('august'), value: '8' },\n { name: '09 - ' + i18nService.t('september'), value: '9' },\n { name: '10 - ' + i18nService.t('october'), value: '10' },\n { name: '11 - ' + i18nService.t('november'), value: '11' },\n { name: '12 - ' + i18nService.t('december'), value: '12' },\n ];\n this.identityTitleOptions = [\n { name: '-- ' + i18nService.t('select') + ' --', value: null },\n { name: i18nService.t('mr'), value: i18nService.t('mr') },\n { name: i18nService.t('mrs'), value: i18nService.t('mrs') },\n { name: i18nService.t('ms'), value: i18nService.t('ms') },\n { name: i18nService.t('dr'), value: i18nService.t('dr') },\n ];\n this.uriMatchOptions = [\n { name: i18nService.t('defaultMatchDetection'), value: null },\n { name: i18nService.t('baseDomain'), value: UriMatchType.Domain },\n { name: i18nService.t('host'), value: UriMatchType.Host },\n { name: i18nService.t('startsWith'), value: UriMatchType.StartsWith },\n { name: i18nService.t('regEx'), value: UriMatchType.RegularExpression },\n { name: i18nService.t('exact'), value: UriMatchType.Exact },\n { name: i18nService.t('never'), value: UriMatchType.Never },\n ];\n this.autofillOnPageLoadOptions = [\n { name: i18nService.t('autoFillOnPageLoadUseDefault'), value: null },\n { name: i18nService.t('autoFillOnPageLoadYes'), value: true },\n { name: i18nService.t('autoFillOnPageLoadNo'), value: false },\n ];\n }\n\n async ngOnInit() {\n await this.init();\n }\n\n async init() {\n if (await this.policyService.policyAppliesToUser(PolicyType.PersonalOwnership)) {\n this.allowPersonal = false;\n } else {\n const myEmail = await this.userService.getEmail();\n this.ownershipOptions.push({ name: myEmail, value: null });\n }\n\n const orgs = await this.userService.getAllOrganizations();\n orgs.sort(Utils.getSortFunction(this.i18nService, 'name')).forEach(o => {\n if (o.enabled && o.status === OrganizationUserStatusType.Confirmed) {\n this.ownershipOptions.push({ name: o.name, value: o.id });\n }\n });\n if (!this.allowPersonal) {\n this.organizationId = this.ownershipOptions[0].value;\n }\n\n this.writeableCollections = await this.loadCollections();\n\n this.canUseReprompt = await this.passwordRepromptService.enabled();\n }\n\n async load() {\n this.editMode = this.cipherId != null;\n if (this.editMode) {\n this.editMode = true;\n if (this.cloneMode) {\n this.cloneMode = true;\n this.title = this.i18nService.t('addItem');\n } else {\n this.title = this.i18nService.t('editItem');\n }\n } else {\n this.title = this.i18nService.t('addItem');\n }\n\n const addEditCipherInfo: any = await this.stateService.get('addEditCipherInfo');\n if (addEditCipherInfo != null) {\n this.cipher = addEditCipherInfo.cipher;\n this.collectionIds = addEditCipherInfo.collectionIds;\n }\n await this.stateService.remove('addEditCipherInfo');\n\n if (this.cipher == null) {\n if (this.editMode) {\n const cipher = await this.loadCipher();\n this.cipher = await cipher.decrypt();\n\n // Adjust Cipher Name if Cloning\n if (this.cloneMode) {\n this.cipher.name += ' - ' + this.i18nService.t('clone');\n // If not allowing personal ownership, update cipher's org Id to prompt downstream changes\n if (this.cipher.organizationId == null && !this.allowPersonal) {\n this.cipher.organizationId = this.organizationId;\n }\n }\n } else {\n this.cipher = new CipherView();\n this.cipher.organizationId = this.organizationId == null ? null : this.organizationId;\n this.cipher.folderId = this.folderId;\n this.cipher.type = this.type == null ? CipherType.Login : this.type;\n this.cipher.login = new LoginView();\n this.cipher.login.uris = [new LoginUriView()];\n this.cipher.card = new CardView();\n this.cipher.identity = new IdentityView();\n this.cipher.secureNote = new SecureNoteView();\n this.cipher.secureNote.type = SecureNoteType.Generic;\n this.cipher.reprompt = CipherRepromptType.None;\n }\n }\n\n if (this.cipher != null && (!this.editMode || addEditCipherInfo != null || this.cloneMode)) {\n await this.organizationChanged();\n if (this.collectionIds != null && this.collectionIds.length > 0 && this.collections.length > 0) {\n this.collections.forEach(c => {\n if (this.collectionIds.indexOf(c.id) > -1) {\n (c as any).checked = true;\n }\n });\n }\n }\n\n this.folders = await this.folderService.getAllDecrypted();\n\n if (this.editMode && this.previousCipherId !== this.cipherId) {\n this.eventService.collect(EventType.Cipher_ClientViewed, this.cipherId);\n }\n this.previousCipherId = this.cipherId;\n this.reprompt = this.cipher.reprompt !== CipherRepromptType.None;\n }\n\n async submit(): Promise {\n if (this.cipher.isDeleted) {\n return this.restore();\n }\n\n if (this.cipher.name == null || this.cipher.name === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nameRequired'));\n return false;\n }\n\n if ((!this.editMode || this.cloneMode) && !this.allowPersonal && this.cipher.organizationId == null) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('personalOwnershipSubmitError'));\n return false;\n }\n\n if ((!this.editMode || this.cloneMode) && this.cipher.type === CipherType.Login &&\n this.cipher.login.uris != null && this.cipher.login.uris.length === 1 &&\n (this.cipher.login.uris[0].uri == null || this.cipher.login.uris[0].uri === '')) {\n this.cipher.login.uris = null;\n }\n\n // Allows saving of selected collections during \"Add\" and \"Clone\" flows\n if ((!this.editMode || this.cloneMode) && this.cipher.organizationId != null) {\n this.cipher.collectionIds = this.collections == null ? [] :\n this.collections.filter(c => (c as any).checked).map(c => c.id);\n }\n\n // Clear current Cipher Id to trigger \"Add\" cipher flow\n if (this.cloneMode) {\n this.cipher.id = null;\n }\n\n const cipher = await this.encryptCipher();\n try {\n this.formPromise = this.saveCipher(cipher);\n await this.formPromise;\n this.cipher.id = cipher.id;\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t(this.editMode && !this.cloneMode ? 'editedItem' : 'addedItem'));\n this.onSavedCipher.emit(this.cipher);\n this.messagingService.send(this.editMode && !this.cloneMode ? 'editedCipher' : 'addedCipher');\n return true;\n } catch (e) {\n this.logService.error(e);\n }\n\n return false;\n }\n\n addUri() {\n if (this.cipher.type !== CipherType.Login) {\n return;\n }\n\n if (this.cipher.login.uris == null) {\n this.cipher.login.uris = [];\n }\n\n this.cipher.login.uris.push(new LoginUriView());\n }\n\n removeUri(uri: LoginUriView) {\n if (this.cipher.type !== CipherType.Login || this.cipher.login.uris == null) {\n return;\n }\n\n const i = this.cipher.login.uris.indexOf(uri);\n if (i > -1) {\n this.cipher.login.uris.splice(i, 1);\n }\n }\n\n trackByFunction(index: number, item: any) {\n return index;\n }\n\n cancel() {\n this.onCancelled.emit(this.cipher);\n }\n\n attachments() {\n this.onEditAttachments.emit(this.cipher);\n }\n\n share() {\n this.onShareCipher.emit(this.cipher);\n }\n\n editCollections() {\n this.onEditCollections.emit(this.cipher);\n }\n\n async delete(): Promise {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t(this.cipher.isDeleted ? 'permanentlyDeleteItemConfirmation' : 'deleteItemConfirmation'),\n this.i18nService.t('deleteItem'), this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.deleteCipher();\n await this.deletePromise;\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t(this.cipher.isDeleted ? 'permanentlyDeletedItem' : 'deletedItem'));\n this.onDeletedCipher.emit(this.cipher);\n this.messagingService.send(this.cipher.isDeleted ? 'permanentlyDeletedCipher' : 'deletedCipher');\n } catch (e) {\n this.logService.error(e);\n }\n\n return true;\n }\n\n async restore(): Promise {\n if (!this.cipher.isDeleted) {\n return false;\n }\n\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('restoreItemConfirmation'), this.i18nService.t('restoreItem'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.restorePromise = this.restoreCipher();\n await this.restorePromise;\n this.platformUtilsService.showToast('success', null, this.i18nService.t('restoredItem'));\n this.onRestoredCipher.emit(this.cipher);\n this.messagingService.send('restoredCipher');\n } catch (e) {\n this.logService.error(e);\n }\n\n return true;\n }\n\n async generatePassword(): Promise {\n if (this.cipher.login != null && this.cipher.login.password != null && this.cipher.login.password.length) {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('overwritePasswordConfirmation'), this.i18nService.t('overwritePassword'),\n this.i18nService.t('yes'), this.i18nService.t('no'));\n if (!confirmed) {\n return false;\n }\n }\n\n this.onGeneratePassword.emit();\n return true;\n }\n\n togglePassword() {\n this.showPassword = !this.showPassword;\n document.getElementById('loginPassword').focus();\n if (this.editMode && this.showPassword) {\n this.eventService.collect(EventType.Cipher_ClientToggledPasswordVisible, this.cipherId);\n }\n }\n\n async toggleCardNumber() {\n this.showCardNumber = !this.showCardNumber;\n if (this.showCardNumber) {\n this.eventService.collect(EventType.Cipher_ClientToggledCardNumberVisible, this.cipherId);\n }\n }\n\n toggleCardCode() {\n this.showCardCode = !this.showCardCode;\n document.getElementById('cardCode').focus();\n if (this.editMode && this.showCardCode) {\n this.eventService.collect(EventType.Cipher_ClientToggledCardCodeVisible, this.cipherId);\n }\n }\n\n toggleUriOptions(uri: LoginUriView) {\n const u = (uri as any);\n u.showOptions = u.showOptions == null && uri.match != null ? false : !u.showOptions;\n }\n\n loginUriMatchChanged(uri: LoginUriView) {\n const u = (uri as any);\n u.showOptions = u.showOptions == null ? true : u.showOptions;\n }\n\n async organizationChanged() {\n if (this.writeableCollections != null) {\n this.writeableCollections.forEach(c => (c as any).checked = false);\n }\n if (this.cipher.organizationId != null) {\n this.collections = this.writeableCollections.filter(c => c.organizationId === this.cipher.organizationId);\n const org = await this.userService.getOrganization(this.cipher.organizationId);\n if (org != null) {\n this.cipher.organizationUseTotp = org.useTotp;\n }\n } else {\n this.collections = [];\n }\n }\n\n async checkPassword() {\n if (this.checkPasswordPromise != null) {\n return;\n }\n\n if (this.cipher.login == null || this.cipher.login.password == null || this.cipher.login.password === '') {\n return;\n }\n\n this.checkPasswordPromise = this.auditService.passwordLeaked(this.cipher.login.password);\n const matches = await this.checkPasswordPromise;\n this.checkPasswordPromise = null;\n\n if (matches > 0) {\n this.platformUtilsService.showToast('warning', null,\n this.i18nService.t('passwordExposed', matches.toString()));\n } else {\n this.platformUtilsService.showToast('success', null, this.i18nService.t('passwordSafe'));\n }\n }\n\n repromptChanged() {\n this.reprompt = !this.reprompt;\n if (this.reprompt) {\n this.cipher.reprompt = CipherRepromptType.Password;\n } else {\n this.cipher.reprompt = CipherRepromptType.None;\n }\n }\n\n protected async loadCollections() {\n const allCollections = await this.collectionService.getAllDecrypted();\n return allCollections.filter(c => !c.readOnly);\n }\n\n protected loadCipher() {\n return this.cipherService.get(this.cipherId);\n }\n\n protected encryptCipher() {\n return this.cipherService.encrypt(this.cipher);\n }\n\n protected saveCipher(cipher: Cipher) {\n return this.cipherService.saveWithServer(cipher);\n }\n\n protected deleteCipher() {\n return this.cipher.isDeleted ? this.cipherService.deleteWithServer(this.cipher.id)\n : this.cipherService.softDeleteWithServer(this.cipher.id);\n }\n\n protected restoreCipher() {\n return this.cipherService.restoreWithServer(this.cipher.id);\n }\n}\n","import {\n Directive,\n Input,\n OnChanges,\n SimpleChanges,\n} from '@angular/core';\n\nimport {\n CdkDragDrop,\n moveItemInArray,\n} from '@angular/cdk/drag-drop';\n\nimport { EventService } from 'jslib-common/abstractions/event.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\nimport { FieldView } from 'jslib-common/models/view/fieldView';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\nimport { EventType } from 'jslib-common/enums/eventType';\nimport { FieldType } from 'jslib-common/enums/fieldType';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Directive()\nexport class AddEditCustomFieldsComponent implements OnChanges {\n @Input() cipher: CipherView;\n @Input() thisCipherType: CipherType;\n @Input() editMode: boolean;\n\n addFieldType: FieldType = FieldType.Text;\n addFieldTypeOptions: any[];\n addFieldLinkedTypeOption: any;\n linkedFieldOptions: any[] = [];\n\n cipherType = CipherType;\n fieldType = FieldType;\n eventType = EventType;\n\n constructor(private i18nService: I18nService, private eventService: EventService) {\n this.addFieldTypeOptions = [\n { name: i18nService.t('cfTypeText'), value: FieldType.Text },\n { name: i18nService.t('cfTypeHidden'), value: FieldType.Hidden },\n { name: i18nService.t('cfTypeBoolean'), value: FieldType.Boolean },\n ];\n this.addFieldLinkedTypeOption = { name: this.i18nService.t('cfTypeLinked'), value: FieldType.Linked };\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.thisCipherType != null) {\n this.setLinkedFieldOptions();\n\n if (!changes.thisCipherType.firstChange) {\n this.resetCipherLinkedFields();\n }\n }\n }\n\n addField() {\n if (this.cipher.fields == null) {\n this.cipher.fields = [];\n }\n\n const f = new FieldView();\n f.type = this.addFieldType;\n f.newField = true;\n\n if (f.type === FieldType.Linked) {\n f.linkedId = this.linkedFieldOptions[0].value;\n }\n\n this.cipher.fields.push(f);\n }\n\n removeField(field: FieldView) {\n const i = this.cipher.fields.indexOf(field);\n if (i > -1) {\n this.cipher.fields.splice(i, 1);\n }\n }\n\n toggleFieldValue(field: FieldView) {\n const f = (field as any);\n f.showValue = !f.showValue;\n if (this.editMode && f.showValue) {\n this.eventService.collect(EventType.Cipher_ClientToggledHiddenFieldVisible, this.cipher.id);\n }\n }\n\n trackByFunction(index: number, item: any) {\n return index;\n }\n\n drop(event: CdkDragDrop) {\n moveItemInArray(this.cipher.fields, event.previousIndex, event.currentIndex);\n }\n\n private setLinkedFieldOptions() {\n if (this.cipher.linkedFieldOptions == null) {\n return;\n }\n\n const options: any = [];\n this.cipher.linkedFieldOptions.forEach((linkedFieldOption, id) =>\n options.push({ name: this.i18nService.t(linkedFieldOption.i18nKey), value: id }));\n this.linkedFieldOptions = options.sort(Utils.getSortFunction(this.i18nService, 'name'));\n }\n\n private resetCipherLinkedFields() {\n if (this.cipher.fields == null || this.cipher.fields.length === 0) {\n return;\n }\n\n // Delete any Linked custom fields if the item type does not support them\n if (this.cipher.linkedFieldOptions == null) {\n this.cipher.fields = this.cipher.fields.filter(f => f.type !== FieldType.Linked);\n return;\n }\n\n this.cipher.fields\n .filter(f => f.type === FieldType.Linked)\n .forEach(f => f.linkedId = this.linkedFieldOptions[0].value);\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { SearchService } from 'jslib-common/abstractions/search.service';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\n@Directive()\nexport class CiphersComponent {\n @Input() activeCipherId: string = null;\n @Output() onCipherClicked = new EventEmitter();\n @Output() onCipherRightClicked = new EventEmitter();\n @Output() onAddCipher = new EventEmitter();\n @Output() onAddCipherOptions = new EventEmitter();\n\n loaded: boolean = false;\n ciphers: CipherView[] = [];\n searchText: string;\n searchPlaceholder: string = null;\n filter: (cipher: CipherView) => boolean = null;\n deleted: boolean = false;\n\n protected searchPending = false;\n\n private searchTimeout: any = null;\n\n constructor(protected searchService: SearchService) { }\n\n async load(filter: (cipher: CipherView) => boolean = null, deleted: boolean = false) {\n this.deleted = deleted || false;\n await this.applyFilter(filter);\n this.loaded = true;\n }\n\n async reload(filter: (cipher: CipherView) => boolean = null, deleted: boolean = false) {\n this.loaded = false;\n this.ciphers = [];\n await this.load(filter, deleted);\n }\n\n async refresh() {\n await this.reload(this.filter, this.deleted);\n }\n\n async applyFilter(filter: (cipher: CipherView) => boolean = null) {\n this.filter = filter;\n await this.search(null);\n }\n\n async search(timeout: number = null, indexedCiphers?: CipherView[]) {\n this.searchPending = false;\n if (this.searchTimeout != null) {\n clearTimeout(this.searchTimeout);\n }\n if (timeout == null) {\n await this.doSearch(indexedCiphers);\n return;\n }\n this.searchPending = true;\n this.searchTimeout = setTimeout(async () => {\n await this.doSearch(indexedCiphers);\n this.searchPending = false;\n }, timeout);\n }\n\n selectCipher(cipher: CipherView) {\n this.onCipherClicked.emit(cipher);\n }\n\n rightClickCipher(cipher: CipherView) {\n this.onCipherRightClicked.emit(cipher);\n }\n\n addCipher() {\n this.onAddCipher.emit();\n }\n\n addCipherOptions() {\n this.onAddCipherOptions.emit();\n }\n\n isSearching() {\n return !this.searchPending && this.searchService.isSearchable(this.searchText);\n }\n\n protected deletedFilter: (cipher: CipherView) => boolean = c => c.isDeleted === this.deleted;\n\n protected async doSearch(indexedCiphers?: CipherView[]) {\n this.ciphers = await this.searchService.searchCiphers(this.searchText, [this.filter, this.deletedFilter], indexedCiphers);\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\n\nimport { Cipher } from 'jslib-common/models/domain/cipher';\n\n@Directive()\nexport class CollectionsComponent implements OnInit {\n @Input() cipherId: string;\n @Input() allowSelectNone = false;\n @Output() onSavedCollections = new EventEmitter();\n\n formPromise: Promise;\n cipher: CipherView;\n collectionIds: string[];\n collections: CollectionView[] = [];\n\n protected cipherDomain: Cipher;\n\n constructor(protected collectionService: CollectionService, protected platformUtilsService: PlatformUtilsService,\n protected i18nService: I18nService, protected cipherService: CipherService, private logService: LogService) { }\n\n async ngOnInit() {\n await this.load();\n }\n\n async load() {\n this.cipherDomain = await this.loadCipher();\n this.collectionIds = this.loadCipherCollections();\n this.cipher = await this.cipherDomain.decrypt();\n this.collections = await this.loadCollections();\n\n this.collections.forEach(c => (c as any).checked = false);\n if (this.collectionIds != null) {\n this.collections.forEach(c => {\n (c as any).checked = this.collectionIds != null && this.collectionIds.indexOf(c.id) > -1;\n });\n }\n }\n\n async submit() {\n const selectedCollectionIds = this.collections\n .filter(c => !!(c as any).checked)\n .map(c => c.id);\n if (!this.allowSelectNone && selectedCollectionIds.length === 0) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectOneCollection'));\n return;\n }\n this.cipherDomain.collectionIds = selectedCollectionIds;\n try {\n this.formPromise = this.saveCollections();\n await this.formPromise;\n this.onSavedCollections.emit();\n this.platformUtilsService.showToast('success', null, this.i18nService.t('editedItem'));\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n protected loadCipher() {\n return this.cipherService.get(this.cipherId);\n }\n\n protected loadCipherCollections() {\n return this.cipherDomain.collectionIds;\n }\n\n protected async loadCollections() {\n const allCollections = await this.collectionService.getAllDecrypted();\n return allCollections.filter(c => !c.readOnly && c.organizationId === this.cipher.organizationId);\n }\n\n protected saveCollections() {\n return this.cipherService.saveCollectionsWithServer(this.cipherDomain);\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n Output,\n} from '@angular/core';\n\nimport { CipherType } from 'jslib-common/enums/cipherType';\n\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\nimport { FolderView } from 'jslib-common/models/view/folderView';\n\nimport { TreeNode } from 'jslib-common/models/domain/treeNode';\n\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\n@Directive()\nexport class GroupingsComponent {\n @Input() showFolders = true;\n @Input() showCollections = true;\n @Input() showFavorites = true;\n @Input() showTrash = true;\n\n @Output() onAllClicked = new EventEmitter();\n @Output() onFavoritesClicked = new EventEmitter();\n @Output() onTrashClicked = new EventEmitter();\n @Output() onCipherTypeClicked = new EventEmitter();\n @Output() onFolderClicked = new EventEmitter();\n @Output() onAddFolder = new EventEmitter();\n @Output() onEditFolder = new EventEmitter();\n @Output() onCollectionClicked = new EventEmitter();\n\n folders: FolderView[];\n nestedFolders: TreeNode[];\n collections: CollectionView[];\n nestedCollections: TreeNode[];\n loaded: boolean = false;\n cipherType = CipherType;\n selectedAll: boolean = false;\n selectedFavorites: boolean = false;\n selectedTrash: boolean = false;\n selectedType: CipherType = null;\n selectedFolder: boolean = false;\n selectedFolderId: string = null;\n selectedCollectionId: string = null;\n\n private collapsedGroupings: Set;\n private collapsedGroupingsKey: string;\n\n constructor(protected collectionService: CollectionService, protected folderService: FolderService,\n protected storageService: StorageService, protected userService: UserService) { }\n\n async load(setLoaded = true) {\n const userId = await this.userService.getUserId();\n this.collapsedGroupingsKey = ConstantsService.collapsedGroupingsKey + '_' + userId;\n const collapsedGroupings = await this.storageService.get(this.collapsedGroupingsKey);\n if (collapsedGroupings == null) {\n this.collapsedGroupings = new Set();\n } else {\n this.collapsedGroupings = new Set(collapsedGroupings);\n }\n\n await this.loadFolders();\n await this.loadCollections();\n\n if (setLoaded) {\n this.loaded = true;\n }\n }\n\n async loadCollections(organizationId?: string) {\n if (!this.showCollections) {\n return;\n }\n const collections = await this.collectionService.getAllDecrypted();\n if (organizationId != null) {\n this.collections = collections.filter(c => c.organizationId === organizationId);\n } else {\n this.collections = collections;\n }\n this.nestedCollections = await this.collectionService.getAllNested(this.collections);\n }\n\n async loadFolders() {\n if (!this.showFolders) {\n return;\n }\n this.folders = await this.folderService.getAllDecrypted();\n this.nestedFolders = await this.folderService.getAllNested();\n }\n\n selectAll() {\n this.clearSelections();\n this.selectedAll = true;\n this.onAllClicked.emit();\n }\n\n selectFavorites() {\n this.clearSelections();\n this.selectedFavorites = true;\n this.onFavoritesClicked.emit();\n }\n\n selectTrash() {\n this.clearSelections();\n this.selectedTrash = true;\n this.onTrashClicked.emit();\n }\n\n selectType(type: CipherType) {\n this.clearSelections();\n this.selectedType = type;\n this.onCipherTypeClicked.emit(type);\n }\n\n selectFolder(folder: FolderView) {\n this.clearSelections();\n this.selectedFolder = true;\n this.selectedFolderId = folder.id;\n this.onFolderClicked.emit(folder);\n }\n\n addFolder() {\n this.onAddFolder.emit();\n }\n\n editFolder(folder: FolderView) {\n this.onEditFolder.emit(folder);\n }\n\n selectCollection(collection: CollectionView) {\n this.clearSelections();\n this.selectedCollectionId = collection.id;\n this.onCollectionClicked.emit(collection);\n }\n\n clearSelections() {\n this.selectedAll = false;\n this.selectedFavorites = false;\n this.selectedTrash = false;\n this.selectedType = null;\n this.selectedFolder = false;\n this.selectedFolderId = null;\n this.selectedCollectionId = null;\n }\n\n collapse(grouping: FolderView | CollectionView, idPrefix = '') {\n if (grouping.id == null) {\n return;\n }\n const id = idPrefix + grouping.id;\n if (this.isCollapsed(grouping, idPrefix)) {\n this.collapsedGroupings.delete(id);\n } else {\n this.collapsedGroupings.add(id);\n }\n this.storageService.save(this.collapsedGroupingsKey, this.collapsedGroupings);\n }\n\n isCollapsed(grouping: FolderView | CollectionView, idPrefix = '') {\n return this.collapsedGroupings.has(idPrefix + grouping.id);\n }\n}\n","import { SendType } from '../../enums/sendType';\n\nimport { SendAccessResponse } from '../response/sendAccessResponse';\n\nimport { SendAccessView } from '../view/sendAccessView';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\nimport { SendFile } from './sendFile';\nimport { SendText } from './sendText';\nimport { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class SendAccess extends Domain {\n id: string;\n type: SendType;\n name: EncString;\n file: SendFile;\n text: SendText;\n expirationDate: Date;\n creatorIdentifier: string;\n\n constructor(obj?: SendAccessResponse, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n id: null,\n name: null,\n expirationDate: null,\n creatorIdentifier: null,\n }, alreadyEncrypted, ['id', 'expirationDate', 'creatorIdentifier']);\n\n this.type = obj.type;\n\n switch (this.type) {\n case SendType.Text:\n this.text = new SendText(obj.text, alreadyEncrypted);\n break;\n case SendType.File:\n this.file = new SendFile(obj.file, alreadyEncrypted);\n break;\n default:\n break;\n }\n }\n\n async decrypt(key: SymmetricCryptoKey): Promise {\n const model = new SendAccessView(this);\n\n await this.decryptObj(model, {\n name: null,\n }, null, key);\n\n switch (this.type) {\n case SendType.File:\n model.file = await this.file.decrypt(key);\n break;\n case SendType.Text:\n model.text = await this.text.decrypt(key);\n break;\n default:\n break;\n }\n\n return model;\n }\n}\n","import { SendType } from '../../enums/sendType';\n\nimport { SendAccess } from '../domain/sendAccess';\n\nimport { SendFileView } from './sendFileView';\nimport { SendTextView } from './sendTextView';\nimport { View } from './view';\n\nexport class SendAccessView implements View {\n id: string = null;\n name: string = null;\n type: SendType = null;\n text = new SendTextView();\n file = new SendFileView();\n expirationDate: Date = null;\n creatorIdentifier: string = null;\n\n constructor(s?: SendAccess) {\n if (!s) {\n return;\n }\n\n this.id = s.id;\n this.type = s.type;\n this.expirationDate = s.expirationDate;\n this.creatorIdentifier = s.creatorIdentifier;\n }\n}\n","export class SendAccessRequest {\n password: string;\n}\n","import {\n Directive,\n NgZone,\n OnInit,\n} from '@angular/core';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\nimport { SendType } from 'jslib-common/enums/sendType';\n\nimport { SendView } from 'jslib-common/models/view/sendView';\n\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SearchService } from 'jslib-common/abstractions/search.service';\nimport { SendService } from 'jslib-common/abstractions/send.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\n@Directive()\nexport class SendComponent implements OnInit {\n\n disableSend = false;\n sendType = SendType;\n loaded = false;\n loading = true;\n refreshing = false;\n expired: boolean = false;\n type: SendType = null;\n sends: SendView[] = [];\n filteredSends: SendView[] = [];\n searchText: string;\n selectedType: SendType;\n selectedAll: boolean;\n searchPlaceholder: string;\n filter: (cipher: SendView) => boolean;\n searchPending = false;\n hasSearched = false; // search() function called - returns true if text qualifies for search\n\n actionPromise: any;\n onSuccessfulRemovePassword: () => Promise;\n onSuccessfulDelete: () => Promise;\n onSuccessfulLoad: () => Promise;\n\n private searchTimeout: any;\n\n constructor(protected sendService: SendService, protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService, protected environmentService: EnvironmentService,\n protected ngZone: NgZone, protected searchService: SearchService,\n protected policyService: PolicyService, protected userService: UserService,\n private logService: LogService) { }\n\n async ngOnInit() {\n this.disableSend = await this.policyService.policyAppliesToUser(PolicyType.DisableSend);\n }\n\n async load(filter: (send: SendView) => boolean = null) {\n this.loading = true;\n const sends = await this.sendService.getAllDecrypted();\n this.sends = sends;\n if (this.onSuccessfulLoad != null) {\n await this.onSuccessfulLoad();\n } else {\n // Default action\n this.selectAll();\n }\n this.loading = false;\n this.loaded = true;\n }\n\n async reload(filter: (send: SendView) => boolean = null) {\n this.loaded = false;\n this.sends = [];\n await this.load(filter);\n }\n\n async refresh() {\n try {\n this.refreshing = true;\n await this.reload(this.filter);\n } finally {\n this.refreshing = false;\n }\n }\n\n async applyFilter(filter: (send: SendView) => boolean = null) {\n this.filter = filter;\n await this.search(null);\n }\n\n async search(timeout: number = null) {\n this.searchPending = false;\n if (this.searchTimeout != null) {\n clearTimeout(this.searchTimeout);\n }\n if (timeout == null) {\n this.hasSearched = this.searchService.isSearchable(this.searchText);\n this.filteredSends = this.sends.filter(s => this.filter == null || this.filter(s));\n this.applyTextSearch();\n return;\n }\n this.searchPending = true;\n this.searchTimeout = setTimeout(async () => {\n this.hasSearched = this.searchService.isSearchable(this.searchText);\n this.filteredSends = this.sends.filter(s => this.filter == null || this.filter(s));\n this.applyTextSearch();\n this.searchPending = false;\n }, timeout);\n }\n\n async removePassword(s: SendView): Promise {\n if (this.actionPromise != null || s.password == null) {\n return;\n }\n const confirmed = await this.platformUtilsService.showDialog(this.i18nService.t('removePasswordConfirmation'),\n this.i18nService.t('removePassword'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.sendService.removePasswordWithServer(s.id);\n await this.actionPromise;\n if (this.onSuccessfulRemovePassword != null) {\n this.onSuccessfulRemovePassword();\n } else {\n // Default actions\n this.platformUtilsService.showToast('success', null, this.i18nService.t('removedPassword'));\n await this.load();\n }\n } catch (e) {\n this.logService.error(e);\n }\n this.actionPromise = null;\n }\n\n async delete(s: SendView): Promise {\n if (this.actionPromise != null) {\n return false;\n }\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteSendConfirmation'),\n this.i18nService.t('deleteSend'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.actionPromise = this.sendService.deleteWithServer(s.id);\n await this.actionPromise;\n\n if (this.onSuccessfulDelete != null) {\n this.onSuccessfulDelete();\n } else {\n // Default actions\n this.platformUtilsService.showToast('success', null, this.i18nService.t('deletedSend'));\n await this.refresh();\n }\n } catch (e) {\n this.logService.error(e);\n }\n this.actionPromise = null;\n return true;\n }\n\n copy(s: SendView) {\n const sendLinkBaseUrl = this.environmentService.getSendUrl();\n const link = sendLinkBaseUrl + s.accessId + '/' + s.urlB64Key;\n this.platformUtilsService.copyToClipboard(link);\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t('valueCopied', this.i18nService.t('sendLink')));\n }\n\n searchTextChanged() {\n this.search(200);\n }\n\n selectAll() {\n this.clearSelections();\n this.selectedAll = true;\n this.applyFilter(null);\n }\n\n selectType(type: SendType) {\n this.clearSelections();\n this.selectedType = type;\n this.applyFilter(s => s.type === type);\n }\n\n clearSelections() {\n this.selectedAll = false;\n this.selectedType = null;\n }\n\n private applyTextSearch() {\n if (this.searchText != null) {\n this.filteredSends = this.searchService.searchSends(this.filteredSends, this.searchText);\n }\n }\n}\n","import { DatePipe } from '@angular/common';\nimport {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output\n} from '@angular/core';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\nimport { SendType } from 'jslib-common/enums/sendType';\n\nimport { EnvironmentService } from 'jslib-common/abstractions/environment.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\nimport { SendService } from 'jslib-common/abstractions/send.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { SendFileView } from 'jslib-common/models/view/sendFileView';\nimport { SendTextView } from 'jslib-common/models/view/sendTextView';\nimport { SendView } from 'jslib-common/models/view/sendView';\n\nimport { EncArrayBuffer } from 'jslib-common/models/domain/encArrayBuffer';\nimport { Send } from 'jslib-common/models/domain/send';\n\n@Directive()\nexport class AddEditComponent implements OnInit {\n @Input() sendId: string;\n @Input() type: SendType;\n\n @Output() onSavedSend = new EventEmitter();\n @Output() onDeletedSend = new EventEmitter();\n @Output() onCancelled = new EventEmitter();\n\n copyLink = false;\n disableSend = false;\n disableHideEmail = false;\n send: SendView;\n deletionDate: string;\n expirationDate: string;\n hasPassword: boolean;\n password: string;\n showPassword = false;\n formPromise: Promise;\n deletePromise: Promise;\n sendType = SendType;\n typeOptions: any[];\n canAccessPremium = true;\n emailVerified = true;\n alertShown = false;\n showOptions = false;\n\n private sendLinkBaseUrl: string;\n\n constructor(protected i18nService: I18nService, protected platformUtilsService: PlatformUtilsService,\n protected environmentService: EnvironmentService, protected datePipe: DatePipe,\n protected sendService: SendService, protected userService: UserService,\n protected messagingService: MessagingService, protected policyService: PolicyService,\n private logService: LogService) {\n this.typeOptions = [\n { name: i18nService.t('sendTypeFile'), value: SendType.File },\n { name: i18nService.t('sendTypeText'), value: SendType.Text },\n ];\n this.sendLinkBaseUrl = this.environmentService.getSendUrl();\n }\n\n get link(): string {\n if (this.send.id != null && this.send.accessId != null) {\n return this.sendLinkBaseUrl + this.send.accessId + '/' + this.send.urlB64Key;\n }\n return null;\n }\n\n get isSafari() {\n return this.platformUtilsService.isSafari();\n }\n\n get isDateTimeLocalSupported(): boolean {\n return !(this.platformUtilsService.isFirefox() || this.platformUtilsService.isSafari());\n }\n\n async ngOnInit() {\n await this.load();\n }\n\n get editMode(): boolean {\n return this.sendId != null;\n }\n\n get title(): string {\n return this.i18nService.t(\n this.editMode ?\n 'editSend' :\n 'createSend'\n );\n }\n\n setDates(event: {deletionDate: string, expirationDate: string}) {\n this.deletionDate = event.deletionDate;\n this.expirationDate = event.expirationDate;\n }\n\n async load() {\n this.disableSend = await this.policyService.policyAppliesToUser(PolicyType.DisableSend);\n this.disableHideEmail = await this.policyService.policyAppliesToUser(PolicyType.SendOptions,\n p => p.data.disableHideEmail);\n\n this.canAccessPremium = await this.userService.canAccessPremium();\n this.emailVerified = await this.userService.getEmailVerified();\n if (!this.canAccessPremium || !this.emailVerified) {\n this.type = SendType.Text;\n }\n\n if (this.send == null) {\n if (this.editMode) {\n const send = await this.loadSend();\n this.send = await send.decrypt();\n } else {\n this.send = new SendView();\n this.send.type = this.type == null ? SendType.File : this.type;\n this.send.file = new SendFileView();\n this.send.text = new SendTextView();\n this.send.deletionDate = new Date();\n this.send.deletionDate.setDate(this.send.deletionDate.getDate() + 7);\n }\n }\n\n this.hasPassword = this.send.password != null && this.send.password.trim() !== '';\n }\n\n async submit(): Promise {\n if (this.disableSend) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('sendDisabledWarning'));\n return false;\n }\n\n if (this.send.name == null || this.send.name === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nameRequired'));\n return false;\n }\n\n let file: File = null;\n if (this.send.type === SendType.File && !this.editMode) {\n const fileEl = document.getElementById('file') as HTMLInputElement;\n const files = fileEl.files;\n if (files == null || files.length === 0) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectFile'));\n return;\n }\n\n file = files[0];\n if (files[0].size > 524288000) { // 500 MB\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('maxFileSize'));\n return;\n }\n }\n\n if (this.password != null && this.password.trim() === '') {\n this.password = null;\n }\n\n this.formPromise = this.encryptSend(file)\n .then(async encSend => {\n const uploadPromise = this.sendService.saveWithServer(encSend);\n await uploadPromise;\n if (this.send.id == null) {\n this.send.id = encSend[0].id;\n }\n if (this.send.accessId == null) {\n this.send.accessId = encSend[0].accessId;\n }\n this.onSavedSend.emit(this.send);\n if (this.copyLink && this.link != null) {\n const copySuccess = await this.copyLinkToClipboard(this.link);\n if (copySuccess ?? true) {\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t(this.editMode ? 'editedSend' : 'createdSend'));\n } else {\n await this.platformUtilsService.showDialog(\n this.i18nService.t(this.editMode ? 'editedSend' : 'createdSend'), null,\n this.i18nService.t('ok'), null, 'success', null);\n await this.copyLinkToClipboard(this.link);\n }\n }\n });\n try {\n await this.formPromise;\n return true;\n } catch (e) {\n this.logService.error(e);\n }\n return false;\n }\n\n async copyLinkToClipboard(link: string): Promise {\n return Promise.resolve(this.platformUtilsService.copyToClipboard(link));\n }\n\n async delete(): Promise {\n if (this.deletePromise != null) {\n return false;\n }\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteSendConfirmation'),\n this.i18nService.t('deleteSend'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.sendService.deleteWithServer(this.send.id);\n await this.deletePromise;\n this.platformUtilsService.showToast('success', null, this.i18nService.t('deletedSend'));\n await this.load();\n this.onDeletedSend.emit(this.send);\n return true;\n } catch (e) {\n this.logService.error(e);\n }\n\n return false;\n }\n\n typeChanged() {\n if (this.send.type === SendType.File && !this.alertShown) {\n if (!this.canAccessPremium) {\n this.alertShown = true;\n this.messagingService.send('premiumRequired');\n } else if (!this.emailVerified) {\n this.alertShown = true;\n this.messagingService.send('emailVerificationRequired');\n }\n }\n }\n\n toggleOptions() {\n this.showOptions = !this.showOptions;\n }\n\n protected async loadSend(): Promise {\n return this.sendService.get(this.sendId);\n }\n\n protected async encryptSend(file: File): Promise<[Send, EncArrayBuffer]> {\n const sendData = await this.sendService.encrypt(this.send, file, this.password, null);\n\n // Parse dates\n try {\n sendData[0].deletionDate = this.deletionDate == null ? null : new Date(this.deletionDate);\n } catch {\n sendData[0].deletionDate = null;\n }\n try {\n sendData[0].expirationDate = this.expirationDate == null ? null : new Date(this.expirationDate);\n } catch {\n sendData[0].expirationDate = null;\n }\n\n return sendData;\n }\n\n protected togglePasswordVisible() {\n this.showPassword = !this.showPassword;\n document.getElementById('password').focus();\n }\n}\n","import { DatePipe } from '@angular/common';\nimport {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output\n} from '@angular/core';\nimport { FormControl, FormGroup } from '@angular/forms';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\n// Different BrowserPath = different controls.\nenum BrowserPath {\n // Native datetime-locale.\n // We are happy.\n Default = 'default',\n\n // Native date and time inputs, but no datetime-locale.\n // We use individual date and time inputs and create a datetime programatically on submit.\n Firefox = 'firefox',\n\n // No native date, time, or datetime-locale inputs.\n // We use a polyfill for dates and a dropdown for times.\n Safari = 'safari',\n}\n\nenum DateField {\n DeletionDate = 'deletion',\n ExpriationDate = 'expiration',\n}\n\n// Value = hours\nenum DatePreset {\n OneHour = 1,\n OneDay = 24,\n TwoDays = 48,\n ThreeDays = 72,\n SevenDays = 168,\n ThirtyDays = 720,\n Custom = 0,\n Never = null,\n}\n\n// TimeOption is used for the dropdown implementation of custom times\n// twelveHour = displayed time; twentyFourHour = time used in logic\ninterface TimeOption {\n twelveHour: string;\n twentyFourHour: string;\n}\n\n@Directive()\nexport class EffluxDatesComponent implements OnInit {\n @Input() readonly initialDeletionDate: Date;\n @Input() readonly initialExpirationDate: Date;\n @Input() readonly editMode: boolean;\n @Input() readonly disabled: boolean;\n\n @Output() datesChanged = new EventEmitter<{deletionDate: string, expirationDate: string}>();\n\n get browserPath(): BrowserPath {\n if (this.platformUtilsService.isFirefox()) {\n return BrowserPath.Firefox;\n } else if (this.platformUtilsService.isSafari()) {\n return BrowserPath.Safari;\n }\n return BrowserPath.Default;\n }\n\n datesForm = new FormGroup({\n selectedDeletionDatePreset: new FormControl(),\n selectedExpirationDatePreset: new FormControl(),\n defaultDeletionDateTime: new FormControl(),\n defaultExpirationDateTime: new FormControl(),\n fallbackDeletionDate: new FormControl(),\n fallbackDeletionTime: new FormControl(),\n fallbackExpirationDate: new FormControl(),\n fallbackExpirationTime: new FormControl(),\n });\n\n deletionDatePresets: any[] = [\n { name: this.i18nService.t('oneHour'), value: DatePreset.OneHour },\n { name: this.i18nService.t('oneDay'), value: DatePreset.OneDay },\n { name: this.i18nService.t('days', '2'), value: DatePreset.TwoDays },\n { name: this.i18nService.t('days', '3'), value: DatePreset.ThreeDays },\n { name: this.i18nService.t('days', '7'), value: DatePreset.SevenDays },\n { name: this.i18nService.t('days', '30'), value: DatePreset.ThirtyDays },\n { name: this.i18nService.t('custom'), value: DatePreset.Custom },\n ];\n\n expirationDatePresets: any[] = [\n { name: this.i18nService.t('never'), value: DatePreset.Never },\n ].concat([...this.deletionDatePresets]);\n\n get selectedDeletionDatePreset(): FormControl {\n return this.datesForm.get('selectedDeletionDatePreset') as FormControl;\n }\n\n get selectedExpirationDatePreset(): FormControl {\n return this.datesForm.get('selectedExpirationDatePreset') as FormControl;\n }\n\n get defaultDeletionDateTime(): FormControl {\n return this.datesForm.get('defaultDeletionDateTime') as FormControl;\n }\n\n get defaultExpirationDateTime(): FormControl {\n return this.datesForm.get('defaultExpirationDateTime') as FormControl;\n }\n\n get fallbackDeletionDate(): FormControl {\n return this.datesForm.get('fallbackDeletionDate') as FormControl;\n }\n\n get fallbackDeletionTime(): FormControl {\n return this.datesForm.get('fallbackDeletionTime') as FormControl;\n }\n\n get fallbackExpirationDate(): FormControl {\n return this.datesForm.get('fallbackExpirationDate') as FormControl;\n }\n\n get fallbackExpirationTime(): FormControl {\n return this.datesForm.get('fallbackExpirationTime') as FormControl;\n }\n\n // Should be able to call these at any time and compute a submitable value\n get formattedDeletionDate(): string {\n switch (this.selectedDeletionDatePreset.value as DatePreset) {\n case DatePreset.Never:\n this.selectedDeletionDatePreset.setValue(DatePreset.SevenDays);\n return this.formattedDeletionDate;\n case DatePreset.Custom:\n switch (this.browserPath) {\n case BrowserPath.Safari:\n case BrowserPath.Firefox:\n return this.fallbackDeletionDate.value + 'T' + this.fallbackDeletionTime.value;\n default:\n return this.defaultDeletionDateTime.value;\n }\n default:\n const now = new Date();\n const miliseconds = now.setTime(now.getTime() +\n (this.selectedDeletionDatePreset.value as number * 60 * 60 * 1000)) ;\n return new Date(miliseconds).toString();\n }\n }\n\n get formattedExpirationDate(): string {\n switch (this.selectedExpirationDatePreset.value as DatePreset) {\n case DatePreset.Never:\n return null;\n case DatePreset.Custom:\n switch (this.browserPath) {\n case BrowserPath.Safari:\n case BrowserPath.Firefox:\n if ((!this.fallbackExpirationDate.value || !this.fallbackExpirationTime.value) &&\n this.editMode) {\n return null;\n }\n return this.fallbackExpirationDate.value + 'T' + this.fallbackExpirationTime.value;\n default:\n if (!this.defaultExpirationDateTime.value) {\n return null;\n }\n return this.defaultExpirationDateTime.value;\n }\n default:\n const now = new Date();\n const miliseconds = now.setTime(now.getTime() +\n (this.selectedExpirationDatePreset.value as number * 60 * 60 * 1000));\n return new Date(miliseconds).toString();\n }\n }\n //\n\n get safariDeletionTimePresetOptions() {\n return this.safariTimePresetOptions(DateField.DeletionDate);\n }\n\n get safariExpirationTimePresetOptions() {\n return this.safariTimePresetOptions(DateField.ExpriationDate);\n }\n\n private get nextWeek(): Date {\n const nextWeek = new Date();\n nextWeek.setDate(nextWeek.getDate() + 7);\n return nextWeek;\n }\n\n constructor(protected i18nService: I18nService, protected platformUtilsService: PlatformUtilsService,\n protected datePipe: DatePipe) {\n }\n\n ngOnInit(): void {\n this.setInitialFormValues();\n this.emitDates();\n this.datesForm.valueChanges.subscribe(() => {\n this.emitDates();\n });\n }\n\n onDeletionDatePresetSelect(value: DatePreset) {\n this.selectedDeletionDatePreset.setValue(value);\n }\n\n clearExpiration() {\n switch (this.browserPath) {\n case BrowserPath.Safari:\n case BrowserPath.Firefox:\n this.fallbackExpirationDate.setValue(null);\n this.fallbackExpirationTime.setValue(null);\n break;\n case BrowserPath.Default:\n this.defaultExpirationDateTime.setValue(null);\n break;\n }\n }\n\n protected emitDates() {\n this.datesChanged.emit({\n deletionDate: this.formattedDeletionDate,\n expirationDate: this.formattedExpirationDate,\n });\n }\n\n protected setInitialFormValues() {\n if (this.editMode) {\n this.selectedDeletionDatePreset.setValue(DatePreset.Custom);\n this.selectedExpirationDatePreset.setValue(DatePreset.Custom);\n switch (this.browserPath) {\n case BrowserPath.Safari:\n case BrowserPath.Firefox:\n this.fallbackDeletionDate.setValue(this.initialDeletionDate.toISOString().slice(0, 10));\n this.fallbackDeletionTime.setValue(this.initialDeletionDate.toTimeString().slice(0, 5));\n if (this.initialExpirationDate != null) {\n this.fallbackExpirationDate.setValue(this.initialExpirationDate.toISOString().slice(0, 10));\n this.fallbackExpirationTime.setValue(this.initialExpirationDate.toTimeString().slice(0, 5));\n }\n break;\n case BrowserPath.Default:\n if (this.initialExpirationDate) {\n this.defaultExpirationDateTime.setValue(\n this.datePipe.transform(new Date(this.initialExpirationDate), 'yyyy-MM-ddTHH:mm'));\n }\n this.defaultDeletionDateTime.setValue(this.datePipe.transform(new Date(this.initialDeletionDate), 'yyyy-MM-ddTHH:mm'));\n break;\n }\n } else {\n this.selectedDeletionDatePreset.setValue(DatePreset.SevenDays);\n this.selectedExpirationDatePreset.setValue(DatePreset.Never);\n\n switch (this.browserPath) {\n case BrowserPath.Safari:\n this.fallbackDeletionDate.setValue(this.nextWeek.toISOString().slice(0, 10));\n this.fallbackDeletionTime.setValue(this.safariTimePresetOptions(DateField.DeletionDate)[1].twentyFourHour);\n break;\n default:\n break;\n }\n }\n }\n\n protected safariTimePresetOptions(field: DateField): TimeOption[] {\n // init individual arrays for major sort groups\n const noon: TimeOption[] = [];\n const midnight: TimeOption[] = [];\n const ams: TimeOption[] = [];\n const pms: TimeOption[] = [];\n\n // determine minute skip (5 min, 10 min, 15 min, etc.)\n const minuteIncrementer = 15;\n\n // loop through each hour on a 12 hour system\n for (let h = 1; h <= 12; h++) {\n // loop through each minute in the hour using the skip to incriment\n for (let m = 0; m < 60; m += minuteIncrementer) {\n // init the final strings that will be added to the lists\n let hour = h.toString();\n let minutes = m.toString();\n\n // add prepending 0s to single digit hours/minutes\n if (h < 10) {\n hour = '0' + hour;\n }\n if (m < 10) {\n minutes = '0' + minutes;\n }\n\n // build time strings and push to relevant sort groups\n if (h === 12) {\n const midnightOption: TimeOption = {\n twelveHour: `${hour}:${minutes} AM`,\n twentyFourHour: `00:${minutes}`,\n };\n midnight.push(midnightOption);\n\n const noonOption: TimeOption = {\n twelveHour: `${hour}:${minutes} PM`,\n twentyFourHour: `${hour}:${minutes}`,\n };\n noon.push(noonOption);\n } else {\n const amOption: TimeOption = {\n twelveHour: `${hour}:${minutes} AM`,\n twentyFourHour: `${hour}:${minutes}`,\n };\n ams.push(amOption);\n\n const pmOption: TimeOption = {\n twelveHour: `${hour}:${minutes} PM`,\n twentyFourHour: `${h + 12}:${minutes}`,\n };\n pms.push(pmOption);\n }\n }\n }\n\n // bring all the arrays together in the right order\n const validTimes = [...midnight, ...ams, ...noon, ...pms];\n\n // determine if an unsupported value already exists on the send & add that to the top of the option list\n // example: if the Send was created with a different client\n if (field === DateField.ExpriationDate && this.initialExpirationDate != null && this.editMode) {\n const previousValue: TimeOption = {\n twelveHour: this.datePipe.transform(this.initialExpirationDate, 'hh:mm a'),\n twentyFourHour: this.datePipe.transform(this.initialExpirationDate, 'HH:mm'),\n };\n return [previousValue, { twelveHour: null, twentyFourHour: null }, ...validTimes];\n } else if (field === DateField.DeletionDate && this.initialDeletionDate != null && this.editMode) {\n const previousValue: TimeOption = {\n twelveHour: this.datePipe.transform(this.initialDeletionDate, 'hh:mm a'),\n twentyFourHour: this.datePipe.transform(this.initialDeletionDate, 'HH:mm'),\n };\n return [previousValue, ...validTimes];\n } else {\n return [{ twelveHour: null, twentyFourHour: null }, ...validTimes];\n }\n }\n}\n","export class UpdateProfileRequest {\n name: string;\n masterPasswordHint: string;\n culture = 'en-US'; // deprecated\n\n constructor(name: string, masterPasswordHint: string) {\n this.name = name;\n this.masterPasswordHint = masterPasswordHint ? masterPasswordHint : null;\n }\n}\n","import { EmailTokenRequest } from './emailTokenRequest';\n\nexport class EmailRequest extends EmailTokenRequest {\n newMasterPasswordHash: string;\n token: string;\n key: string;\n}\n","import { SendRequest } from './sendRequest';\n\nimport { Send } from '../domain/send';\n\nexport class SendWithIdRequest extends SendRequest {\n id: string;\n\n constructor(send: Send) {\n super(send);\n this.id = send.id;\n }\n}\n","import { PasswordRequest } from './passwordRequest';\n\nimport { KdfType } from '../../enums/kdfType';\n\nexport class KdfRequest extends PasswordRequest {\n kdf: KdfType;\n kdfIterations: number;\n}\n","export class UpdateDomainsRequest {\n equivalentDomains: string[][];\n excludedGlobalEquivalentDomains: number[];\n}\n","import {\n Directive,\n Input,\n OnInit,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormBuilder,\n ValidationErrors,\n Validator\n} from '@angular/forms';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PolicyService } from 'jslib-common/abstractions/policy.service';\n\nimport { PolicyType } from 'jslib-common/enums/policyType';\nimport { Policy } from 'jslib-common/models/domain/policy';\n\n@Directive()\nexport class VaultTimeoutInputComponent implements ControlValueAccessor, Validator, OnInit {\n\n get showCustom() {\n return this.form.get('vaultTimeout').value === VaultTimeoutInputComponent.CUSTOM_VALUE;\n }\n\n static CUSTOM_VALUE = -100;\n\n form = this.fb.group({\n vaultTimeout: [null],\n custom: this.fb.group({\n hours: [null],\n minutes: [null],\n }),\n });\n\n @Input() vaultTimeouts: { name: string; value: number; }[];\n vaultTimeoutPolicy: Policy;\n vaultTimeoutPolicyHours: number;\n vaultTimeoutPolicyMinutes: number;\n\n private onChange: (vaultTimeout: number) => void;\n private validatorChange: () => void;\n\n constructor(private fb: FormBuilder, private policyService: PolicyService, private i18nService: I18nService) {\n }\n\n async ngOnInit() {\n if (await this.policyService.policyAppliesToUser(PolicyType.MaximumVaultTimeout)) {\n const vaultTimeoutPolicy = await this.policyService.getAll(PolicyType.MaximumVaultTimeout);\n\n this.vaultTimeoutPolicy = vaultTimeoutPolicy[0];\n this.vaultTimeoutPolicyHours = Math.floor(this.vaultTimeoutPolicy.data.minutes / 60);\n this.vaultTimeoutPolicyMinutes = this.vaultTimeoutPolicy.data.minutes % 60;\n\n this.vaultTimeouts = this.vaultTimeouts.filter(t =>\n t.value <= this.vaultTimeoutPolicy.data.minutes &&\n (t.value > 0 || t.value === VaultTimeoutInputComponent.CUSTOM_VALUE) &&\n t.value != null\n );\n this.validatorChange();\n }\n\n this.form.valueChanges.subscribe(async value => {\n this.onChange(this.getVaultTimeout(value));\n });\n\n // Assign the previous value to the custom fields\n this.form.get('vaultTimeout').valueChanges.subscribe(value => {\n if (value !== VaultTimeoutInputComponent.CUSTOM_VALUE) {\n return;\n }\n\n const current = Math.max(this.form.value.vaultTimeout, 0);\n this.form.patchValue({\n custom: {\n hours: Math.floor(current / 60),\n minutes: current % 60,\n },\n });\n });\n }\n\n ngOnChanges() {\n this.vaultTimeouts.push({ name: this.i18nService.t('custom'), value: VaultTimeoutInputComponent.CUSTOM_VALUE });\n }\n\n getVaultTimeout(value: any) {\n if (value.vaultTimeout !== VaultTimeoutInputComponent.CUSTOM_VALUE) {\n return value.vaultTimeout;\n }\n\n return value.custom.hours * 60 + value.custom.minutes;\n }\n\n writeValue(value: number): void {\n if (value == null) {\n return;\n }\n\n if (this.vaultTimeouts.every(p => p.value !== value)) {\n this.form.setValue({\n vaultTimeout: VaultTimeoutInputComponent.CUSTOM_VALUE,\n custom: {\n hours: Math.floor(value / 60),\n minutes: value % 60,\n },\n });\n return;\n }\n\n this.form.patchValue({\n vaultTimeout: value,\n });\n }\n\n registerOnChange(onChange: any): void {\n this.onChange = onChange;\n }\n\n // tslint:disable-next-line\n registerOnTouched(onTouched: any): void {}\n\n // tslint:disable-next-line\n setDisabledState?(isDisabled: boolean): void { }\n\n validate(control: AbstractControl): ValidationErrors {\n if (this.vaultTimeoutPolicy && this.vaultTimeoutPolicy?.data?.minutes < control.value) {\n return { policyError: true };\n }\n\n return null;\n }\n\n registerOnValidatorChange(fn: () => void): void {\n this.validatorChange = fn;\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { PasswordGeneratorPolicyOptions } from 'jslib-common/models/domain/passwordGeneratorPolicyOptions';\n\n@Directive()\nexport class PasswordGeneratorComponent implements OnInit {\n @Input() showSelect: boolean = false;\n @Output() onSelected = new EventEmitter();\n\n passTypeOptions: any[];\n options: any = {};\n password: string = '-';\n showOptions = false;\n avoidAmbiguous = false;\n enforcedPolicyOptions: PasswordGeneratorPolicyOptions;\n\n constructor(protected passwordGenerationService: PasswordGenerationService,\n protected platformUtilsService: PlatformUtilsService, protected i18nService: I18nService,\n private win: Window) {\n this.passTypeOptions = [\n { name: i18nService.t('password'), value: 'password' },\n { name: i18nService.t('passphrase'), value: 'passphrase' },\n ];\n }\n\n async ngOnInit() {\n const optionsResponse = await this.passwordGenerationService.getOptions();\n this.options = optionsResponse[0];\n this.enforcedPolicyOptions = optionsResponse[1];\n this.avoidAmbiguous = !this.options.ambiguous;\n this.options.type = this.options.type === 'passphrase' ? 'passphrase' : 'password';\n this.password = await this.passwordGenerationService.generatePassword(this.options);\n await this.passwordGenerationService.addHistory(this.password);\n }\n\n async sliderChanged() {\n this.saveOptions(false);\n await this.passwordGenerationService.addHistory(this.password);\n }\n\n async sliderInput() {\n this.normalizeOptions();\n this.password = await this.passwordGenerationService.generatePassword(this.options);\n }\n\n async saveOptions(regenerate: boolean = true) {\n this.normalizeOptions();\n await this.passwordGenerationService.saveOptions(this.options);\n\n if (regenerate) {\n await this.regenerate();\n }\n }\n\n async regenerate() {\n this.password = await this.passwordGenerationService.generatePassword(this.options);\n await this.passwordGenerationService.addHistory(this.password);\n }\n\n copy() {\n const copyOptions = this.win != null ? { window: this.win } : null;\n this.platformUtilsService.copyToClipboard(this.password, copyOptions);\n this.platformUtilsService.showToast('info', null,\n this.i18nService.t('valueCopied', this.i18nService.t('password')));\n }\n\n select() {\n this.onSelected.emit(this.password);\n }\n\n toggleOptions() {\n this.showOptions = !this.showOptions;\n }\n\n private normalizeOptions() {\n // Application level normalize options depedent on class variables\n this.options.ambiguous = !this.avoidAmbiguous;\n\n if (!this.options.uppercase && !this.options.lowercase && !this.options.number && !this.options.special) {\n this.options.lowercase = true;\n if (this.win != null) {\n const lowercase = this.win.document.querySelector('#lowercase') as HTMLInputElement;\n if (lowercase) {\n lowercase.checked = true;\n }\n }\n }\n\n this.passwordGenerationService.normalizeOptions(this.options, this.enforcedPolicyOptions);\n }\n}\n","import { Directive, OnInit } from '@angular/core';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { PasswordGenerationService } from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { GeneratedPasswordHistory } from 'jslib-common/models/domain/generatedPasswordHistory';\n\n@Directive()\nexport class PasswordGeneratorHistoryComponent implements OnInit {\n history: GeneratedPasswordHistory[] = [];\n\n constructor(protected passwordGenerationService: PasswordGenerationService,\n protected platformUtilsService: PlatformUtilsService, protected i18nService: I18nService,\n private win: Window) { }\n\n async ngOnInit() {\n this.history = await this.passwordGenerationService.getHistory();\n }\n\n clear() {\n this.history = [];\n this.passwordGenerationService.clear();\n }\n\n copy(password: string) {\n const copyOptions = this.win != null ? { window: this.win } : null;\n this.platformUtilsService.copyToClipboard(password, copyOptions);\n this.platformUtilsService.showToast('info', null,\n this.i18nService.t('valueCopied', this.i18nService.t('password')));\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { FolderService } from 'jslib-common/abstractions/folder.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\n\nimport { FolderView } from 'jslib-common/models/view/folderView';\n\n@Directive()\nexport class FolderAddEditComponent implements OnInit {\n @Input() folderId: string;\n @Output() onSavedFolder = new EventEmitter();\n @Output() onDeletedFolder = new EventEmitter();\n\n editMode: boolean = false;\n folder: FolderView = new FolderView();\n title: string;\n formPromise: Promise;\n deletePromise: Promise;\n\n constructor(protected folderService: FolderService, protected i18nService: I18nService,\n protected platformUtilsService: PlatformUtilsService, private logService: LogService) { }\n\n async ngOnInit() {\n await this.init();\n }\n\n async submit(): Promise {\n if (this.folder.name == null || this.folder.name === '') {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('nameRequired'));\n return false;\n }\n\n try {\n const folder = await this.folderService.encrypt(this.folder);\n this.formPromise = this.folderService.saveWithServer(folder);\n await this.formPromise;\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t(this.editMode ? 'editedFolder' : 'addedFolder'));\n this.onSavedFolder.emit(this.folder);\n return true;\n } catch (e) {\n this.logService.error(e);\n }\n\n return false;\n }\n\n async delete(): Promise {\n const confirmed = await this.platformUtilsService.showDialog(\n this.i18nService.t('deleteFolderConfirmation'), this.i18nService.t('deleteFolder'),\n this.i18nService.t('yes'), this.i18nService.t('no'), 'warning');\n if (!confirmed) {\n return false;\n }\n\n try {\n this.deletePromise = this.folderService.deleteWithServer(this.folder.id);\n await this.deletePromise;\n this.platformUtilsService.showToast('success', null, this.i18nService.t('deletedFolder'));\n this.onDeletedFolder.emit(this.folder);\n } catch (e) {\n this.logService.error(e);\n }\n\n return true;\n }\n\n protected async init() {\n this.editMode = this.folderId != null;\n\n if (this.editMode) {\n this.editMode = true;\n this.title = this.i18nService.t('editFolder');\n const folder = await this.folderService.get(this.folderId);\n this.folder = await folder.decrypt();\n } else {\n this.title = this.i18nService.t('addFolder');\n }\n }\n}\n","import {\n Directive,\n EventEmitter,\n Input,\n OnInit,\n Output,\n} from '@angular/core';\n\nimport { OrganizationUserStatusType } from 'jslib-common/enums/organizationUserStatusType';\n\nimport { CipherService } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService } from 'jslib-common/abstractions/collection.service';\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { UserService } from 'jslib-common/abstractions/user.service';\n\nimport { Organization } from 'jslib-common/models/domain/organization';\nimport { CipherView } from 'jslib-common/models/view/cipherView';\nimport { CollectionView } from 'jslib-common/models/view/collectionView';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Directive()\nexport class ShareComponent implements OnInit {\n @Input() cipherId: string;\n @Input() organizationId: string;\n @Output() onSharedCipher = new EventEmitter();\n\n formPromise: Promise;\n cipher: CipherView;\n collections: CollectionView[] = [];\n organizations: Organization[] = [];\n\n protected writeableCollections: CollectionView[] = [];\n\n constructor(protected collectionService: CollectionService, protected platformUtilsService: PlatformUtilsService,\n protected i18nService: I18nService, protected userService: UserService,\n protected cipherService: CipherService, private logService: LogService) { }\n\n async ngOnInit() {\n await this.load();\n }\n\n async load() {\n const allCollections = await this.collectionService.getAllDecrypted();\n this.writeableCollections = allCollections.map(c => c).filter(c => !c.readOnly);\n const orgs = await this.userService.getAllOrganizations();\n this.organizations = orgs.sort(Utils.getSortFunction(this.i18nService, 'name'))\n .filter(o => o.enabled && o.status === OrganizationUserStatusType.Confirmed);\n\n const cipherDomain = await this.cipherService.get(this.cipherId);\n this.cipher = await cipherDomain.decrypt();\n if (this.organizationId == null && this.organizations.length > 0) {\n this.organizationId = this.organizations[0].id;\n }\n this.filterCollections();\n }\n\n filterCollections() {\n this.writeableCollections.forEach(c => (c as any).checked = false);\n if (this.organizationId == null || this.writeableCollections.length === 0) {\n this.collections = [];\n } else {\n this.collections = this.writeableCollections.filter(c => c.organizationId === this.organizationId);\n }\n }\n\n async submit(): Promise {\n const selectedCollectionIds = this.collections\n .filter(c => !!(c as any).checked)\n .map(c => c.id);\n if (selectedCollectionIds.length === 0) {\n this.platformUtilsService.showToast('error', this.i18nService.t('errorOccurred'),\n this.i18nService.t('selectOneCollection'));\n return;\n }\n\n const cipherDomain = await this.cipherService.get(this.cipherId);\n const cipherView = await cipherDomain.decrypt();\n const orgName = this.organizations.find(o => o.id === this.organizationId)?.name ?? this.i18nService.t('organization');\n\n try {\n this.formPromise = this.cipherService.shareWithServer(cipherView, this.organizationId,\n selectedCollectionIds).then(async () => {\n this.onSharedCipher.emit();\n this.platformUtilsService.showToast('success', null,\n this.i18nService.t('movedItemToOrg', cipherView.name, orgName));\n });\n await this.formPromise;\n return true;\n } catch (e) {\n this.logService.error(e);\n }\n return false;\n }\n\n get canSave() {\n if (this.collections != null) {\n for (let i = 0; i < this.collections.length; i++) {\n if ((this.collections[i] as any).checked) {\n return true;\n }\n }\n }\n return false;\n }\n}\n","export class EmergencyAccessConfirmRequest {\n key: string;\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class PasswordHistoryResponse extends BaseResponse {\n password: string;\n lastUsedDate: string;\n\n constructor(response: any) {\n super(response);\n this.password = this.getResponseProperty('Password');\n this.lastUsedDate = this.getResponseProperty('LastUsedDate');\n }\n}\n","import { EmergencyAccessType } from '../../enums/emergencyAccessType';\n\nexport class EmergencyAccessInviteRequest {\n email: string;\n type: EmergencyAccessType;\n waitTimeDays: number;\n}\n","export class EmergencyAccessPasswordRequest {\n newMasterPasswordHash: string;\n key: string;\n}\n","import { DragDropModule } from '@angular/cdk/drag-drop';\nimport {\n DatePipe,\n registerLocaleData,\n} from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\n\nimport { ToasterModule } from 'angular2-toaster';\nimport { InfiniteScrollModule } from 'ngx-infinite-scroll';\n\nimport { NestedCheckboxComponent } from './components/nested-checkbox.component';\nimport { PasswordRepromptComponent } from './components/password-reprompt.component';\nimport { PasswordStrengthComponent } from './components/password-strength.component';\n\nimport { FooterComponent } from './layouts/footer.component';\nimport { FrontendLayoutComponent } from './layouts/frontend-layout.component';\nimport { NavbarComponent } from './layouts/navbar.component';\nimport { OrganizationLayoutComponent } from './layouts/organization-layout.component';\nimport { UserLayoutComponent } from './layouts/user-layout.component';\n\nimport { AcceptEmergencyComponent } from './accounts/accept-emergency.component';\nimport { AcceptOrganizationComponent } from './accounts/accept-organization.component';\nimport { HintComponent } from './accounts/hint.component';\nimport { LockComponent } from './accounts/lock.component';\nimport { LoginComponent } from './accounts/login.component';\nimport { RecoverDeleteComponent } from './accounts/recover-delete.component';\nimport { RecoverTwoFactorComponent } from './accounts/recover-two-factor.component';\nimport { RegisterComponent } from './accounts/register.component';\nimport { RemovePasswordComponent } from './accounts/remove-password.component';\nimport { SetPasswordComponent } from './accounts/set-password.component';\nimport { SsoComponent } from './accounts/sso.component';\nimport { TwoFactorOptionsComponent } from './accounts/two-factor-options.component';\nimport { TwoFactorComponent } from './accounts/two-factor.component';\nimport { UpdateTempPasswordComponent } from './accounts/update-temp-password.component';\nimport { VerifyEmailTokenComponent } from './accounts/verify-email-token.component';\nimport { VerifyRecoverDeleteComponent } from './accounts/verify-recover-delete.component';\n\nimport { BulkConfirmComponent as OrgBulkConfirmComponent } from './organizations/manage/bulk/bulk-confirm.component';\nimport { BulkRemoveComponent as OrgBulkRemoveComponent } from './organizations/manage/bulk/bulk-remove.component';\nimport { BulkStatusComponent as OrgBulkStatusComponent } from './organizations/manage/bulk/bulk-status.component';\nimport {\n CollectionAddEditComponent as OrgCollectionAddEditComponent,\n} from './organizations/manage/collection-add-edit.component';\nimport { CollectionsComponent as OrgManageCollectionsComponent } from './organizations/manage/collections.component';\nimport { EntityEventsComponent as OrgEntityEventsComponent } from './organizations/manage/entity-events.component';\nimport { EntityUsersComponent as OrgEntityUsersComponent } from './organizations/manage/entity-users.component';\nimport { EventsComponent as OrgEventsComponent } from './organizations/manage/events.component';\nimport { GroupAddEditComponent as OrgGroupAddEditComponent } from './organizations/manage/group-add-edit.component';\nimport { GroupsComponent as OrgGroupsComponent } from './organizations/manage/groups.component';\nimport { ManageComponent as OrgManageComponent } from './organizations/manage/manage.component';\nimport { PeopleComponent as OrgPeopleComponent } from './organizations/manage/people.component';\nimport { PoliciesComponent as OrgPoliciesComponent } from './organizations/manage/policies.component';\nimport { PolicyEditComponent as OrgPolicyEditComponent } from './organizations/manage/policy-edit.component';\nimport { ResetPasswordComponent as OrgResetPasswordComponent } from './organizations/manage/reset-password.component';\nimport { UserAddEditComponent as OrgUserAddEditComponent } from './organizations/manage/user-add-edit.component';\nimport { UserConfirmComponent as OrgUserConfirmComponent } from './organizations/manage/user-confirm.component';\nimport { UserGroupsComponent as OrgUserGroupsComponent } from './organizations/manage/user-groups.component';\n\nimport { AccountComponent as OrgAccountComponent } from './organizations/settings/account.component';\nimport { AdjustSubscription } from './organizations/settings/adjust-subscription.component';\nimport { ChangePlanComponent } from './organizations/settings/change-plan.component';\nimport { DeleteOrganizationComponent } from './organizations/settings/delete-organization.component';\nimport { DownloadLicenseComponent } from './organizations/settings/download-license.component';\nimport { OrganizationBillingComponent } from './organizations/settings/organization-billing.component';\nimport { OrganizationSubscriptionComponent } from './organizations/settings/organization-subscription.component';\nimport { SettingsComponent as OrgSettingComponent } from './organizations/settings/settings.component';\nimport {\n TwoFactorSetupComponent as OrgTwoFactorSetupComponent,\n} from './organizations/settings/two-factor-setup.component';\n\nimport { ExportComponent as OrgExportComponent } from './organizations/tools/export.component';\nimport {\n ExposedPasswordsReportComponent as OrgExposedPasswordsReportComponent,\n} from './organizations/tools/exposed-passwords-report.component';\nimport { ImportComponent as OrgImportComponent } from './organizations/tools/import.component';\nimport {\n InactiveTwoFactorReportComponent as OrgInactiveTwoFactorReportComponent,\n} from './organizations/tools/inactive-two-factor-report.component';\nimport {\n ReusedPasswordsReportComponent as OrgReusedPasswordsReportComponent,\n} from './organizations/tools/reused-passwords-report.component';\nimport { ToolsComponent as OrgToolsComponent } from './organizations/tools/tools.component';\nimport {\n UnsecuredWebsitesReportComponent as OrgUnsecuredWebsitesReportComponent,\n} from './organizations/tools/unsecured-websites-report.component';\nimport {\n WeakPasswordsReportComponent as OrgWeakPasswordsReportComponent,\n} from './organizations/tools/weak-passwords-report.component';\n\nimport { FamiliesForEnterpriseSetupComponent } from './organizations/sponsorships/families-for-enterprise-setup.component';\nimport { AddEditComponent as OrgAddEditComponent } from './organizations/vault/add-edit.component';\nimport { AttachmentsComponent as OrgAttachmentsComponent } from './organizations/vault/attachments.component';\nimport { CiphersComponent as OrgCiphersComponent } from './organizations/vault/ciphers.component';\nimport { CollectionsComponent as OrgCollectionsComponent } from './organizations/vault/collections.component';\nimport { GroupingsComponent as OrgGroupingsComponent } from './organizations/vault/groupings.component';\nimport { VaultComponent as OrgVaultComponent } from './organizations/vault/vault.component';\n\nimport { AccessComponent } from './send/access.component';\nimport { AddEditComponent as SendAddEditComponent } from './send/add-edit.component';\nimport { EffluxDatesComponent as SendEffluxDatesComponent } from './send/efflux-dates.component';\nimport { SendComponent } from './send/send.component';\n\nimport { AccountComponent } from './settings/account.component';\nimport { AddCreditComponent } from './settings/add-credit.component';\nimport { AdjustPaymentComponent } from './settings/adjust-payment.component';\nimport { AdjustStorageComponent } from './settings/adjust-storage.component';\nimport { ApiKeyComponent } from './settings/api-key.component';\nimport { ChangeEmailComponent } from './settings/change-email.component';\nimport { ChangeKdfComponent } from './settings/change-kdf.component';\nimport { ChangePasswordComponent } from './settings/change-password.component';\nimport { CreateOrganizationComponent } from './settings/create-organization.component';\nimport { DeauthorizeSessionsComponent } from './settings/deauthorize-sessions.component';\nimport { DeleteAccountComponent } from './settings/delete-account.component';\nimport { DomainRulesComponent } from './settings/domain-rules.component';\nimport { EmergencyAccessAddEditComponent } from './settings/emergency-access-add-edit.component';\nimport { EmergencyAccessAttachmentsComponent } from './settings/emergency-access-attachments.component';\nimport { EmergencyAccessConfirmComponent } from './settings/emergency-access-confirm.component';\nimport { EmergencyAccessTakeoverComponent } from './settings/emergency-access-takeover.component';\nimport { EmergencyAccessViewComponent } from './settings/emergency-access-view.component';\nimport { EmergencyAccessComponent } from './settings/emergency-access.component';\nimport { EmergencyAddEditComponent } from './settings/emergency-add-edit.component';\nimport { LinkSsoComponent } from './settings/link-sso.component';\nimport { OptionsComponent } from './settings/options.component';\nimport { OrganizationPlansComponent } from './settings/organization-plans.component';\nimport { OrganizationsComponent } from './settings/organizations.component';\nimport { PaymentComponent } from './settings/payment.component';\nimport { PremiumComponent } from './settings/premium.component';\nimport { ProfileComponent } from './settings/profile.component';\nimport { PurgeVaultComponent } from './settings/purge-vault.component';\nimport { SettingsComponent } from './settings/settings.component';\nimport { SponsoredFamiliesComponent } from './settings/sponsored-families.component';\nimport { SponsoringOrgRowComponent } from './settings/sponsoring-org-row.component';\nimport { TaxInfoComponent } from './settings/tax-info.component';\nimport { TwoFactorAuthenticatorComponent } from './settings/two-factor-authenticator.component';\nimport { TwoFactorDuoComponent } from './settings/two-factor-duo.component';\nimport { TwoFactorEmailComponent } from './settings/two-factor-email.component';\nimport { TwoFactorRecoveryComponent } from './settings/two-factor-recovery.component';\nimport { TwoFactorSetupComponent } from './settings/two-factor-setup.component';\nimport { TwoFactorVerifyComponent } from './settings/two-factor-verify.component';\nimport { TwoFactorWebAuthnComponent } from './settings/two-factor-webauthn.component';\nimport { TwoFactorYubiKeyComponent } from './settings/two-factor-yubikey.component';\nimport { UpdateKeyComponent } from './settings/update-key.component';\nimport { UpdateLicenseComponent } from './settings/update-license.component';\nimport { UserBillingComponent } from './settings/user-billing.component';\nimport { UserSubscriptionComponent } from './settings/user-subscription.component';\nimport { VaultTimeoutInputComponent } from './settings/vault-timeout-input.component';\nimport { VerifyEmailComponent } from './settings/verify-email.component';\n\nimport { BreachReportComponent } from './tools/breach-report.component';\nimport { ExportComponent } from './tools/export.component';\nimport { ExposedPasswordsReportComponent } from './tools/exposed-passwords-report.component';\nimport { ImportComponent } from './tools/import.component';\nimport { InactiveTwoFactorReportComponent } from './tools/inactive-two-factor-report.component';\nimport { PasswordGeneratorHistoryComponent } from './tools/password-generator-history.component';\nimport { PasswordGeneratorComponent } from './tools/password-generator.component';\nimport { ReusedPasswordsReportComponent } from './tools/reused-passwords-report.component';\nimport { ToolsComponent } from './tools/tools.component';\nimport { UnsecuredWebsitesReportComponent } from './tools/unsecured-websites-report.component';\nimport { WeakPasswordsReportComponent } from './tools/weak-passwords-report.component';\n\nimport { AddEditCustomFieldsComponent } from './vault/add-edit-custom-fields.component';\nimport { AddEditComponent } from './vault/add-edit.component';\nimport { AttachmentsComponent } from './vault/attachments.component';\nimport { BulkActionsComponent } from './vault/bulk-actions.component';\nimport { BulkDeleteComponent } from './vault/bulk-delete.component';\nimport { BulkMoveComponent } from './vault/bulk-move.component';\nimport { BulkRestoreComponent } from './vault/bulk-restore.component';\nimport { BulkShareComponent } from './vault/bulk-share.component';\nimport { CiphersComponent } from './vault/ciphers.component';\nimport { CollectionsComponent } from './vault/collections.component';\nimport { FolderAddEditComponent } from './vault/folder-add-edit.component';\nimport { GroupingsComponent } from './vault/groupings.component';\nimport { ShareComponent } from './vault/share.component';\nimport { VaultComponent } from './vault/vault.component';\n\nimport { ProvidersComponent } from './providers/providers.component';\n\nimport { AvatarComponent } from 'jslib-angular/components/avatar.component';\nimport { CalloutComponent } from 'jslib-angular/components/callout.component';\nimport { IconComponent } from 'jslib-angular/components/icon.component';\nimport { VerifyMasterPasswordComponent } from 'jslib-angular/components/verify-master-password.component';\n\nimport { A11yTitleDirective } from 'jslib-angular/directives/a11y-title.directive';\nimport { ApiActionDirective } from 'jslib-angular/directives/api-action.directive';\nimport { AutofocusDirective } from 'jslib-angular/directives/autofocus.directive';\nimport { BlurClickDirective } from 'jslib-angular/directives/blur-click.directive';\nimport { BoxRowDirective } from 'jslib-angular/directives/box-row.directive';\nimport { FallbackSrcDirective } from 'jslib-angular/directives/fallback-src.directive';\nimport { InputVerbatimDirective } from 'jslib-angular/directives/input-verbatim.directive';\nimport { SelectCopyDirective } from 'jslib-angular/directives/select-copy.directive';\nimport { StopClickDirective } from 'jslib-angular/directives/stop-click.directive';\nimport { StopPropDirective } from 'jslib-angular/directives/stop-prop.directive';\nimport { TrueFalseValueDirective } from 'jslib-angular/directives/true-false-value.directive';\n\nimport { ColorPasswordPipe } from 'jslib-angular/pipes/color-password.pipe';\nimport { I18nPipe } from 'jslib-angular/pipes/i18n.pipe';\nimport { SearchCiphersPipe } from 'jslib-angular/pipes/search-ciphers.pipe';\nimport { SearchPipe } from 'jslib-angular/pipes/search.pipe';\nimport { UserNamePipe } from 'jslib-angular/pipes/user-name.pipe';\n\nimport localeAz from '@angular/common/locales/az';\nimport localeBg from '@angular/common/locales/bg';\nimport localeCa from '@angular/common/locales/ca';\nimport localeCs from '@angular/common/locales/cs';\nimport localeDa from '@angular/common/locales/da';\nimport localeDe from '@angular/common/locales/de';\nimport localeEl from '@angular/common/locales/el';\nimport localeEnGb from '@angular/common/locales/en-GB';\nimport localeEnIn from '@angular/common/locales/en-IN';\nimport localeEo from '@angular/common/locales/eo';\nimport localeEs from '@angular/common/locales/es';\nimport localeEt from '@angular/common/locales/et';\nimport localeFi from '@angular/common/locales/fi';\nimport localeFr from '@angular/common/locales/fr';\nimport localeHe from '@angular/common/locales/he';\nimport localeHr from '@angular/common/locales/hr';\nimport localeHu from '@angular/common/locales/hu';\nimport localeId from '@angular/common/locales/id';\nimport localeIt from '@angular/common/locales/it';\nimport localeJa from '@angular/common/locales/ja';\nimport localeKn from '@angular/common/locales/kn';\nimport localeKo from '@angular/common/locales/ko';\nimport localeLv from '@angular/common/locales/lv';\nimport localeMl from '@angular/common/locales/ml';\nimport localeNb from '@angular/common/locales/nb';\nimport localeNl from '@angular/common/locales/nl';\nimport localePl from '@angular/common/locales/pl';\nimport localePtBr from '@angular/common/locales/pt';\nimport localePtPt from '@angular/common/locales/pt-PT';\nimport localeRo from '@angular/common/locales/ro';\nimport localeRu from '@angular/common/locales/ru';\nimport localeSk from '@angular/common/locales/sk';\nimport localeSr from '@angular/common/locales/sr';\nimport localeSv from '@angular/common/locales/sv';\nimport localeTr from '@angular/common/locales/tr';\nimport localeUk from '@angular/common/locales/uk';\nimport localeZhCn from '@angular/common/locales/zh-Hans';\nimport localeZhTw from '@angular/common/locales/zh-Hant';\n\nimport { DisableSendPolicyComponent } from './organizations/policies/disable-send.component';\nimport { MasterPasswordPolicyComponent } from './organizations/policies/master-password.component';\nimport { PasswordGeneratorPolicyComponent } from './organizations/policies/password-generator.component';\nimport { PersonalOwnershipPolicyComponent } from './organizations/policies/personal-ownership.component';\nimport { RequireSsoPolicyComponent } from './organizations/policies/require-sso.component';\nimport { ResetPasswordPolicyComponent } from './organizations/policies/reset-password.component';\nimport { SendOptionsPolicyComponent } from './organizations/policies/send-options.component';\nimport { SingleOrgPolicyComponent } from './organizations/policies/single-org.component';\nimport { TwoFactorAuthenticationPolicyComponent } from './organizations/policies/two-factor-authentication.component';\n\nregisterLocaleData(localeAz, 'az');\nregisterLocaleData(localeBg, 'bg');\nregisterLocaleData(localeCa, 'ca');\nregisterLocaleData(localeCs, 'cs');\nregisterLocaleData(localeDa, 'da');\nregisterLocaleData(localeDe, 'de');\nregisterLocaleData(localeEl, 'el');\nregisterLocaleData(localeEnGb, 'en-GB');\nregisterLocaleData(localeEnIn, 'en-IN');\nregisterLocaleData(localeEs, 'es');\nregisterLocaleData(localeEt, 'et');\nregisterLocaleData(localeEo, 'eo');\nregisterLocaleData(localeFi, 'fi');\nregisterLocaleData(localeFr, 'fr');\nregisterLocaleData(localeHe, 'he');\nregisterLocaleData(localeHr, 'hr');\nregisterLocaleData(localeHu, 'hu');\nregisterLocaleData(localeId, 'id');\nregisterLocaleData(localeIt, 'it');\nregisterLocaleData(localeJa, 'ja');\nregisterLocaleData(localeKn, 'kn');\nregisterLocaleData(localeKo, 'ko');\nregisterLocaleData(localeLv, 'lv');\nregisterLocaleData(localeMl, 'ml');\nregisterLocaleData(localeNb, 'nb');\nregisterLocaleData(localeNl, 'nl');\nregisterLocaleData(localePl, 'pl');\nregisterLocaleData(localePtBr, 'pt-BR');\nregisterLocaleData(localePtPt, 'pt-PT');\nregisterLocaleData(localeRo, 'ro');\nregisterLocaleData(localeRu, 'ru');\nregisterLocaleData(localeSk, 'sk');\nregisterLocaleData(localeSr, 'sr');\nregisterLocaleData(localeSv, 'sv');\nregisterLocaleData(localeTr, 'tr');\nregisterLocaleData(localeUk, 'uk');\nregisterLocaleData(localeZhCn, 'zh-CN');\nregisterLocaleData(localeZhTw, 'zh-TW');\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n InfiniteScrollModule,\n DragDropModule,\n ToasterModule.forChild(),\n ReactiveFormsModule,\n RouterModule,\n ],\n declarations: [\n A11yTitleDirective,\n AcceptEmergencyComponent,\n AccessComponent,\n AcceptOrganizationComponent,\n AccountComponent,\n SetPasswordComponent,\n AddCreditComponent,\n AddEditComponent,\n AddEditCustomFieldsComponent,\n AdjustPaymentComponent,\n AdjustSubscription,\n AdjustStorageComponent,\n ApiActionDirective,\n ApiKeyComponent,\n AttachmentsComponent,\n AutofocusDirective,\n AvatarComponent,\n BlurClickDirective,\n BoxRowDirective,\n BreachReportComponent,\n BulkActionsComponent,\n BulkDeleteComponent,\n BulkMoveComponent,\n BulkRestoreComponent,\n BulkShareComponent,\n CalloutComponent,\n ChangeEmailComponent,\n ChangeKdfComponent,\n ChangePasswordComponent,\n ChangePlanComponent,\n CiphersComponent,\n CollectionsComponent,\n ColorPasswordPipe,\n CreateOrganizationComponent,\n DeauthorizeSessionsComponent,\n DeleteAccountComponent,\n DeleteOrganizationComponent,\n DomainRulesComponent,\n DownloadLicenseComponent,\n EmergencyAccessAddEditComponent,\n EmergencyAccessAttachmentsComponent,\n EmergencyAccessComponent,\n EmergencyAccessConfirmComponent,\n EmergencyAccessTakeoverComponent,\n EmergencyAccessViewComponent,\n EmergencyAddEditComponent,\n ExportComponent,\n ExposedPasswordsReportComponent,\n FallbackSrcDirective,\n FamiliesForEnterpriseSetupComponent,\n FolderAddEditComponent,\n FooterComponent,\n FrontendLayoutComponent,\n GroupingsComponent,\n HintComponent,\n I18nPipe,\n IconComponent,\n ImportComponent,\n InactiveTwoFactorReportComponent,\n InputVerbatimDirective,\n LinkSsoComponent,\n LockComponent,\n LoginComponent,\n NavbarComponent,\n NestedCheckboxComponent,\n OptionsComponent,\n OrgAccountComponent,\n OrgAddEditComponent,\n OrganizationBillingComponent,\n OrganizationPlansComponent,\n OrganizationSubscriptionComponent,\n OrgAttachmentsComponent,\n OrgBulkStatusComponent,\n OrgBulkConfirmComponent,\n OrgBulkRemoveComponent,\n OrgCiphersComponent,\n OrgCollectionAddEditComponent,\n OrgCollectionsComponent,\n OrgEntityEventsComponent,\n OrgEntityUsersComponent,\n OrgEventsComponent,\n OrgExportComponent,\n OrgExposedPasswordsReportComponent,\n OrgImportComponent,\n OrgInactiveTwoFactorReportComponent,\n OrgGroupAddEditComponent,\n OrgGroupingsComponent,\n OrgGroupsComponent,\n OrgManageCollectionsComponent,\n OrgManageComponent,\n OrgPeopleComponent,\n OrgPolicyEditComponent,\n OrgPoliciesComponent,\n OrgResetPasswordComponent,\n OrgReusedPasswordsReportComponent,\n OrgSettingComponent,\n OrgToolsComponent,\n OrgTwoFactorSetupComponent,\n OrgUserAddEditComponent,\n OrgUserConfirmComponent,\n OrgUserGroupsComponent,\n OrganizationsComponent,\n OrganizationLayoutComponent,\n OrgUnsecuredWebsitesReportComponent,\n OrgVaultComponent,\n OrgWeakPasswordsReportComponent,\n PasswordGeneratorComponent,\n PasswordGeneratorHistoryComponent,\n PasswordStrengthComponent,\n PasswordRepromptComponent,\n PaymentComponent,\n PremiumComponent,\n ProfileComponent,\n PurgeVaultComponent,\n RecoverDeleteComponent,\n RecoverTwoFactorComponent,\n RegisterComponent,\n ReusedPasswordsReportComponent,\n SearchCiphersPipe,\n SearchPipe,\n SelectCopyDirective,\n SendAddEditComponent,\n SendEffluxDatesComponent,\n SendComponent,\n SettingsComponent,\n ShareComponent,\n SponsoredFamiliesComponent,\n SponsoringOrgRowComponent,\n SsoComponent,\n StopClickDirective,\n StopPropDirective,\n TaxInfoComponent,\n ToolsComponent,\n TrueFalseValueDirective,\n TwoFactorAuthenticatorComponent,\n TwoFactorComponent,\n TwoFactorDuoComponent,\n TwoFactorEmailComponent,\n TwoFactorOptionsComponent,\n TwoFactorRecoveryComponent,\n TwoFactorSetupComponent,\n TwoFactorVerifyComponent,\n TwoFactorWebAuthnComponent,\n TwoFactorYubiKeyComponent,\n UnsecuredWebsitesReportComponent,\n UpdateKeyComponent,\n UpdateLicenseComponent,\n UpdateTempPasswordComponent,\n UserBillingComponent,\n UserLayoutComponent,\n UserSubscriptionComponent,\n UserNamePipe,\n VaultComponent,\n VerifyEmailComponent,\n VerifyEmailTokenComponent,\n VerifyRecoverDeleteComponent,\n WeakPasswordsReportComponent,\n ProvidersComponent,\n TwoFactorAuthenticationPolicyComponent,\n MasterPasswordPolicyComponent,\n SingleOrgPolicyComponent,\n PasswordGeneratorPolicyComponent,\n RequireSsoPolicyComponent,\n PersonalOwnershipPolicyComponent,\n DisableSendPolicyComponent,\n SendOptionsPolicyComponent,\n ResetPasswordPolicyComponent,\n VaultTimeoutInputComponent,\n AddEditCustomFieldsComponent,\n VerifyMasterPasswordComponent,\n RemovePasswordComponent,\n ],\n exports: [\n A11yTitleDirective,\n AvatarComponent,\n CalloutComponent,\n ApiActionDirective,\n StopClickDirective,\n StopPropDirective,\n I18nPipe,\n SearchPipe,\n UserNamePipe,\n NavbarComponent,\n FooterComponent,\n OrganizationPlansComponent,\n ],\n providers: [DatePipe, SearchPipe, UserNamePipe],\n bootstrap: [],\n})\nexport class OssModule { }\n","import {\n Directive,\n ElementRef,\n HostListener,\n OnInit,\n} from '@angular/core';\n\n@Directive({\n selector: '[appBoxRow]',\n})\nexport class BoxRowDirective implements OnInit {\n el: HTMLElement = null;\n formEls: Element[];\n\n constructor(private elRef: ElementRef) {\n this.el = elRef.nativeElement;\n }\n\n ngOnInit(): void {\n this.formEls = Array.from(this.el.querySelectorAll('input:not([type=\"hidden\"]), select, textarea'));\n this.formEls.forEach(formEl => {\n formEl.addEventListener('focus', (event: Event) => {\n this.el.classList.add('active');\n }, false);\n\n formEl.addEventListener('blur', (event: Event) => {\n this.el.classList.remove('active');\n }, false);\n });\n }\n\n @HostListener('click', ['$event']) onClick(event: Event) {\n const target = event.target as HTMLElement;\n if (target !== this.el && !target.classList.contains('progress') &&\n !target.classList.contains('progress-bar')) {\n return;\n }\n\n if (this.formEls.length > 0) {\n const formEl = (this.formEls[0] as HTMLElement);\n if (formEl.tagName.toLowerCase() === 'input') {\n const inputEl = (formEl as HTMLInputElement);\n if (inputEl.type != null && inputEl.type.toLowerCase() === 'checkbox') {\n inputEl.click();\n return;\n }\n }\n formEl.focus();\n }\n }\n}\n","import {\n Pipe,\n PipeTransform,\n} from '@angular/core';\n\nimport { CipherView } from 'jslib-common/models/view/cipherView';\n\n@Pipe({\n name: 'searchCiphers',\n})\nexport class SearchCiphersPipe implements PipeTransform {\n transform(ciphers: CipherView[], searchText: string, deleted: boolean = false): CipherView[] {\n if (ciphers == null || ciphers.length === 0) {\n return [];\n }\n\n if (searchText == null || searchText.length < 2) {\n return ciphers.filter(c => {\n return deleted !== c.isDeleted;\n });\n }\n\n searchText = searchText.trim().toLowerCase();\n return ciphers.filter(c => {\n if (deleted !== c.isDeleted) {\n return false;\n }\n if (c.name != null && c.name.toLowerCase().indexOf(searchText) > -1) {\n return true;\n }\n if (searchText.length >= 8 && c.id.startsWith(searchText)) {\n return true;\n }\n if (c.subTitle != null && c.subTitle.toLowerCase().indexOf(searchText) > -1) {\n return true;\n }\n if (c.login && c.login.uri != null && c.login.uri.toLowerCase().indexOf(searchText) > -1) {\n return true;\n }\n\n return false;\n });\n }\n}\n","import {\n APP_INITIALIZER,\n LOCALE_ID,\n NgModule,\n} from '@angular/core';\n\nimport { ToasterModule } from 'angular2-toaster';\n\nimport { BroadcasterMessagingService } from '../../services/broadcasterMessaging.service';\nimport { HtmlStorageService } from '../../services/htmlStorage.service';\nimport { I18nService } from '../../services/i18n.service';\nimport { MemoryStorageService } from '../../services/memoryStorage.service';\nimport { PasswordRepromptService } from '../../services/passwordReprompt.service';\nimport { WebPlatformUtilsService } from '../../services/webPlatformUtils.service';\n\nimport { EventService } from './event.service';\nimport { OrganizationGuardService } from './organization-guard.service';\nimport { OrganizationTypeGuardService } from './organization-type-guard.service';\nimport { PolicyListService } from './policy-list.service';\nimport { RouterService } from './router.service';\n\nimport { AuthGuardService } from 'jslib-angular/services/auth-guard.service';\nimport { BroadcasterService } from 'jslib-angular/services/broadcaster.service';\nimport { LockGuardService } from 'jslib-angular/services/lock-guard.service';\nimport { ModalService as ModalServiceAbstraction } from 'jslib-angular/services/modal.service';\nimport { UnauthGuardService } from 'jslib-angular/services/unauth-guard.service';\nimport { ValidationService } from 'jslib-angular/services/validation.service';\n\nimport { ApiService } from 'jslib-common/services/api.service';\nimport { AppIdService } from 'jslib-common/services/appId.service';\nimport { AuditService } from 'jslib-common/services/audit.service';\nimport { AuthService } from 'jslib-common/services/auth.service';\nimport { CipherService } from 'jslib-common/services/cipher.service';\nimport { CollectionService } from 'jslib-common/services/collection.service';\nimport { ConsoleLogService } from 'jslib-common/services/consoleLog.service';\nimport { ConstantsService } from 'jslib-common/services/constants.service';\nimport { ContainerService } from 'jslib-common/services/container.service';\nimport { CryptoService } from 'jslib-common/services/crypto.service';\nimport { EnvironmentService } from 'jslib-common/services/environment.service';\nimport { EventService as EventLoggingService } from 'jslib-common/services/event.service';\nimport { ExportService } from 'jslib-common/services/export.service';\nimport { FileUploadService } from 'jslib-common/services/fileUpload.service';\nimport { FolderService } from 'jslib-common/services/folder.service';\nimport { ImportService } from 'jslib-common/services/import.service';\nimport { KeyConnectorService } from 'jslib-common/services/keyConnector.service';\nimport { NotificationsService } from 'jslib-common/services/notifications.service';\nimport { PasswordGenerationService } from 'jslib-common/services/passwordGeneration.service';\nimport { PolicyService } from 'jslib-common/services/policy.service';\nimport { SearchService } from 'jslib-common/services/search.service';\nimport { SendService } from 'jslib-common/services/send.service';\nimport { SettingsService } from 'jslib-common/services/settings.service';\nimport { StateService } from 'jslib-common/services/state.service';\nimport { SyncService } from 'jslib-common/services/sync.service';\nimport { TokenService } from 'jslib-common/services/token.service';\nimport { TotpService } from 'jslib-common/services/totp.service';\nimport { UserService } from 'jslib-common/services/user.service';\nimport { UserVerificationService } from 'jslib-common/services/userVerification.service';\nimport { VaultTimeoutService } from 'jslib-common/services/vaultTimeout.service';\nimport { WebCryptoFunctionService } from 'jslib-common/services/webCryptoFunction.service';\n\nimport { ApiService as ApiServiceAbstraction } from 'jslib-common/abstractions/api.service';\nimport { AuditService as AuditServiceAbstraction } from 'jslib-common/abstractions/audit.service';\nimport { AuthService as AuthServiceAbstraction } from 'jslib-common/abstractions/auth.service';\nimport { CipherService as CipherServiceAbstraction } from 'jslib-common/abstractions/cipher.service';\nimport { CollectionService as CollectionServiceAbstraction } from 'jslib-common/abstractions/collection.service';\nimport { CryptoService as CryptoServiceAbstraction } from 'jslib-common/abstractions/crypto.service';\nimport { CryptoFunctionService as CryptoFunctionServiceAbstraction } from 'jslib-common/abstractions/cryptoFunction.service';\nimport { EnvironmentService as EnvironmentServiceAbstraction, Urls } from 'jslib-common/abstractions/environment.service';\nimport { EventService as EventLoggingServiceAbstraction } from 'jslib-common/abstractions/event.service';\nimport { ExportService as ExportServiceAbstraction } from 'jslib-common/abstractions/export.service';\nimport { FileUploadService as FileUploadServiceAbstraction } from 'jslib-common/abstractions/fileUpload.service';\nimport { FolderService as FolderServiceAbstraction } from 'jslib-common/abstractions/folder.service';\nimport { I18nService as I18nServiceAbstraction } from 'jslib-common/abstractions/i18n.service';\nimport { ImportService as ImportServiceAbstraction } from 'jslib-common/abstractions/import.service';\nimport { KeyConnectorService as KeyConnectorServiceAbstraction } from 'jslib-common/abstractions/keyConnector.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { MessagingService as MessagingServiceAbstraction } from 'jslib-common/abstractions/messaging.service';\nimport { NotificationsService as NotificationsServiceAbstraction } from 'jslib-common/abstractions/notifications.service';\nimport {\n PasswordGenerationService as PasswordGenerationServiceAbstraction,\n} from 'jslib-common/abstractions/passwordGeneration.service';\nimport { PasswordRepromptService as PasswordRepromptServiceAbstraction } from 'jslib-common/abstractions/passwordReprompt.service';\nimport { PlatformUtilsService as PlatformUtilsServiceAbstraction } from 'jslib-common/abstractions/platformUtils.service';\nimport { PolicyService as PolicyServiceAbstraction } from 'jslib-common/abstractions/policy.service';\nimport { SearchService as SearchServiceAbstraction } from 'jslib-common/abstractions/search.service';\nimport { SendService as SendServiceAbstraction } from 'jslib-common/abstractions/send.service';\nimport { SettingsService as SettingsServiceAbstraction } from 'jslib-common/abstractions/settings.service';\nimport { StateService as StateServiceAbstraction } from 'jslib-common/abstractions/state.service';\nimport { StorageService as StorageServiceAbstraction } from 'jslib-common/abstractions/storage.service';\nimport { SyncService as SyncServiceAbstraction } from 'jslib-common/abstractions/sync.service';\nimport { TokenService as TokenServiceAbstraction } from 'jslib-common/abstractions/token.service';\nimport { TotpService as TotpServiceAbstraction } from 'jslib-common/abstractions/totp.service';\nimport { UserService as UserServiceAbstraction } from 'jslib-common/abstractions/user.service';\nimport { UserVerificationService as UserVerificationServiceAbstraction } from 'jslib-common/abstractions/userVerification.service';\nimport { VaultTimeoutService as VaultTimeoutServiceAbstraction } from 'jslib-common/abstractions/vaultTimeout.service';\nimport { ModalService } from './modal.service';\n\nimport { ThemeType } from 'jslib-common/enums/themeType';\n\nconst i18nService = new I18nService(window.navigator.language, 'locales');\nconst stateService = new StateService();\nconst broadcasterService = new BroadcasterService();\nconst messagingService = new BroadcasterMessagingService(broadcasterService);\nconst consoleLogService = new ConsoleLogService(false);\nconst platformUtilsService = new WebPlatformUtilsService(i18nService, messagingService, consoleLogService, () => storageService);\nconst storageService: StorageServiceAbstraction = new HtmlStorageService(platformUtilsService);\nconst secureStorageService: StorageServiceAbstraction = new MemoryStorageService();\nconst cryptoFunctionService: CryptoFunctionServiceAbstraction = new WebCryptoFunctionService(window,\n platformUtilsService);\nconst cryptoService = new CryptoService(storageService,\n platformUtilsService.isDev() ? storageService : secureStorageService, cryptoFunctionService, platformUtilsService,\n consoleLogService);\nconst tokenService = new TokenService(storageService);\nconst appIdService = new AppIdService(storageService);\nconst environmentService = new EnvironmentService(storageService);\nconst apiService = new ApiService(tokenService, platformUtilsService, environmentService,\n async (expired: boolean) => messagingService.send('logout', { expired: expired }));\nconst userService = new UserService(tokenService, storageService);\nconst settingsService = new SettingsService(userService, storageService);\nexport let searchService: SearchService = null;\nconst fileUploadService = new FileUploadService(consoleLogService, apiService);\nconst cipherService = new CipherService(cryptoService, userService, settingsService,\n apiService, fileUploadService, storageService, i18nService, () => searchService, consoleLogService);\nconst folderService = new FolderService(cryptoService, userService, apiService, storageService,\n i18nService, cipherService);\nconst collectionService = new CollectionService(cryptoService, userService, storageService, i18nService);\nsearchService = new SearchService(cipherService, consoleLogService, i18nService);\nconst policyService = new PolicyService(userService, storageService, apiService);\nconst sendService = new SendService(cryptoService, userService, apiService, fileUploadService, storageService,\n i18nService, cryptoFunctionService);\nconst keyConnectorService = new KeyConnectorService(storageService, userService, cryptoService, apiService,\n tokenService, consoleLogService);\nconst vaultTimeoutService = new VaultTimeoutService(cipherService, folderService, collectionService,\n cryptoService, platformUtilsService, storageService, messagingService, searchService, userService, tokenService,\n policyService, keyConnectorService, null, async () => messagingService.send('logout', { expired: false }));\nconst syncService = new SyncService(userService, apiService, settingsService,\n folderService, cipherService, cryptoService, collectionService, storageService, messagingService, policyService,\n sendService, consoleLogService, tokenService, keyConnectorService,\n async (expired: boolean) => messagingService.send('logout', { expired: expired }));\nconst passwordGenerationService = new PasswordGenerationService(cryptoService, storageService, policyService);\nconst totpService = new TotpService(storageService, cryptoFunctionService, consoleLogService);\nconst containerService = new ContainerService(cryptoService);\nconst authService = new AuthService(cryptoService, apiService,\n userService, tokenService, appIdService, i18nService, platformUtilsService, messagingService, vaultTimeoutService,\n consoleLogService, cryptoFunctionService, environmentService, keyConnectorService);\nconst exportService = new ExportService(folderService, cipherService, apiService, cryptoService);\nconst importService = new ImportService(cipherService, folderService, apiService, i18nService, collectionService,\n platformUtilsService, cryptoService);\nconst notificationsService = new NotificationsService(userService, syncService, appIdService, apiService, vaultTimeoutService,\n environmentService, async () => messagingService.send('logout', { expired: true }), consoleLogService);\nconst auditService = new AuditService(cryptoFunctionService, apiService);\nconst eventLoggingService = new EventLoggingService(storageService, apiService, userService, cipherService, consoleLogService);\nconst userVerificationService = new UserVerificationService(cryptoService, i18nService, apiService);\n\ncontainerService.attachToWindow(window);\n\nexport function initFactory(): Function {\n function getBaseUrl() {\n // If the base URL is `https://bitwarden.example.com/base/path/`,\n // `window.location.href` should have one of the following forms:\n //\n // - `https://bitwarden.example.com/base/path/`\n // - `https://bitwarden.example.com/base/path/#/some/route[?queryParam=...]`\n //\n // We want to get to just `https://bitwarden.example.com/base/path`.\n let baseUrl = window.location.href;\n baseUrl = baseUrl.replace(/#.*/, ''); // Strip off `#` and everything after.\n baseUrl = baseUrl.replace(/\\/+$/, ''); // Trim any trailing `/` chars.\n return baseUrl;\n }\n return async () => {\n await (storageService as HtmlStorageService).init();\n\n environmentService.setUrls({ base: getBaseUrl() }, false);\n\n setTimeout(() => notificationsService.init(), 3000);\n\n vaultTimeoutService.init(true);\n const locale = await storageService.get(ConstantsService.localeKey);\n await i18nService.init(locale);\n eventLoggingService.init(true);\n authService.init();\n const htmlEl = window.document.documentElement;\n htmlEl.classList.add('locale_' + i18nService.translationLocale);\n\n // Initial theme is set in index.html which must be updated if there are any changes to theming logic\n platformUtilsService.onDefaultSystemThemeChange(async sysTheme => {\n const bwTheme = await storageService.get(ConstantsService.themeKey);\n if (bwTheme === ThemeType.System) {\n htmlEl.classList.remove('theme_' + ThemeType.Light, 'theme_' + ThemeType.Dark);\n htmlEl.classList.add('theme_' + sysTheme);\n }\n });\n\n stateService.save(ConstantsService.disableFaviconKey,\n await storageService.get(ConstantsService.disableFaviconKey));\n stateService.save('enableGravatars', await storageService.get('enableGravatars'));\n };\n}\n\n@NgModule({\n imports: [\n ToasterModule,\n ],\n declarations: [],\n providers: [\n ValidationService,\n AuthGuardService,\n OrganizationGuardService,\n OrganizationTypeGuardService,\n UnauthGuardService,\n RouterService,\n EventService,\n LockGuardService,\n PolicyListService,\n { provide: ModalServiceAbstraction, useClass: ModalService },\n { provide: AuditServiceAbstraction, useValue: auditService },\n { provide: AuthServiceAbstraction, useValue: authService },\n { provide: CipherServiceAbstraction, useValue: cipherService },\n { provide: FolderServiceAbstraction, useValue: folderService },\n { provide: LogService, useValue: consoleLogService },\n { provide: CollectionServiceAbstraction, useValue: collectionService },\n { provide: EnvironmentServiceAbstraction, useValue: environmentService },\n { provide: TotpServiceAbstraction, useValue: totpService },\n { provide: TokenServiceAbstraction, useValue: tokenService },\n { provide: I18nServiceAbstraction, useValue: i18nService },\n { provide: CryptoServiceAbstraction, useValue: cryptoService },\n { provide: PlatformUtilsServiceAbstraction, useValue: platformUtilsService },\n { provide: PasswordGenerationServiceAbstraction, useValue: passwordGenerationService },\n { provide: ApiServiceAbstraction, useValue: apiService },\n { provide: FileUploadServiceAbstraction, useValue: fileUploadService },\n { provide: SyncServiceAbstraction, useValue: syncService },\n { provide: UserServiceAbstraction, useValue: userService },\n { provide: MessagingServiceAbstraction, useValue: messagingService },\n { provide: BroadcasterService, useValue: broadcasterService },\n { provide: SettingsServiceAbstraction, useValue: settingsService },\n { provide: VaultTimeoutServiceAbstraction, useValue: vaultTimeoutService },\n { provide: StorageServiceAbstraction, useValue: storageService },\n { provide: StateServiceAbstraction, useValue: stateService },\n { provide: ExportServiceAbstraction, useValue: exportService },\n { provide: SearchServiceAbstraction, useValue: searchService },\n { provide: ImportServiceAbstraction, useValue: importService },\n { provide: NotificationsServiceAbstraction, useValue: notificationsService },\n { provide: CryptoFunctionServiceAbstraction, useValue: cryptoFunctionService },\n { provide: EventLoggingServiceAbstraction, useValue: eventLoggingService },\n { provide: PolicyServiceAbstraction, useValue: policyService },\n { provide: SendServiceAbstraction, useValue: sendService },\n { provide: KeyConnectorServiceAbstraction, useValue: keyConnectorService },\n { provide: UserVerificationServiceAbstraction, useValue: userVerificationService },\n { provide: PasswordRepromptServiceAbstraction, useClass: PasswordRepromptService },\n { provide: LogService, useValue: consoleLogService },\n {\n provide: APP_INITIALIZER,\n useFactory: initFactory,\n deps: [],\n multi: true,\n },\n {\n provide: LOCALE_ID,\n useFactory: () => i18nService.translationLocale,\n deps: [],\n },\n ],\n})\nexport class ServicesModule {\n}\n","import { MessagingService } from 'jslib-common/abstractions/messaging.service';\n\nimport { BroadcasterService } from 'jslib-angular/services/broadcaster.service';\n\nexport class BroadcasterMessagingService implements MessagingService {\n constructor(private broadcasterService: BroadcasterService) { }\n\n send(subscriber: string, arg: any = {}) {\n const message = Object.assign({}, { command: subscriber }, arg);\n this.broadcasterService.send(message);\n }\n}\n","import { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nexport class HtmlStorageService implements StorageService {\n private localStorageKeys = new Set(['appId', 'anonymousAppId', 'rememberedEmail', 'passwordGenerationOptions',\n ConstantsService.disableFaviconKey, 'rememberEmail', 'enableGravatars', 'enableFullWidth',\n ConstantsService.localeKey, ConstantsService.autoConfirmFingerprints,\n ConstantsService.vaultTimeoutKey, ConstantsService.vaultTimeoutActionKey, ConstantsService.ssoCodeVerifierKey,\n ConstantsService.ssoStateKey, 'ssoOrgIdentifier', ConstantsService.themeKey]);\n private localStorageStartsWithKeys = ['twoFactorToken_', ConstantsService.collapsedGroupingsKey + '_'];\n private memoryStorageStartsWithKeys = ['ciphers_', 'folders_', 'collections_', 'settings_', 'lastSync_'];\n private memoryStorage = new Map();\n\n constructor(private platformUtilsService: PlatformUtilsService) { }\n\n async init() {\n // LockOption -> VaultTimeout (uses the same legacy string value for backwards compat)\n const vaultTimeout = await this.get(ConstantsService.vaultTimeoutKey);\n if (vaultTimeout == null && !this.platformUtilsService.isDev()) {\n await this.save(ConstantsService.vaultTimeoutKey, 15);\n }\n\n // Default Action to lock\n const vaultTimeoutAction = await this.get(ConstantsService.vaultTimeoutActionKey);\n if (vaultTimeoutAction == null) {\n await this.save(ConstantsService.vaultTimeoutActionKey, 'lock');\n }\n }\n\n get(key: string): Promise {\n let json: string = null;\n if (this.isLocalStorage(key)) {\n json = window.localStorage.getItem(key);\n } else if (this.isMemoryStorage(key)) {\n json = this.memoryStorage.get(key);\n } else {\n json = window.sessionStorage.getItem(key);\n }\n if (json != null) {\n const obj = JSON.parse(json);\n return Promise.resolve(obj as T);\n }\n return Promise.resolve(null);\n }\n\n async has(key: string): Promise {\n return await this.get(key) != null;\n }\n\n save(key: string, obj: any): Promise {\n if (obj == null) {\n return this.remove(key);\n }\n\n if (obj instanceof Set) {\n obj = Array.from(obj);\n }\n\n const json = JSON.stringify(obj);\n if (this.isLocalStorage(key)) {\n window.localStorage.setItem(key, json);\n } else if (this.isMemoryStorage(key)) {\n this.memoryStorage.set(key, json);\n } else {\n window.sessionStorage.setItem(key, json);\n }\n return Promise.resolve();\n }\n\n remove(key: string): Promise {\n if (this.isLocalStorage(key)) {\n window.localStorage.removeItem(key);\n } else if (this.isMemoryStorage(key)) {\n this.memoryStorage.delete(key);\n } else {\n window.sessionStorage.removeItem(key);\n }\n return Promise.resolve();\n }\n\n private isLocalStorage(key: string): boolean {\n if (this.localStorageKeys.has(key)) {\n return true;\n }\n for (const swKey of this.localStorageStartsWithKeys) {\n if (key.startsWith(swKey)) {\n return true;\n }\n }\n return false;\n }\n\n private isMemoryStorage(key: string): boolean {\n for (const swKey of this.memoryStorageStartsWithKeys) {\n if (key.startsWith(swKey)) {\n return true;\n }\n }\n return false;\n }\n}\n","import { I18nService as BaseI18nService } from 'jslib-common/services/i18n.service';\n\nexport class I18nService extends BaseI18nService {\n constructor(systemLanguage: string, localesDirectory: string) {\n super(systemLanguage || 'en-US', localesDirectory, async (formattedLocale: string) => {\n const filePath = this.localesDirectory + '/' + formattedLocale + '/messages.json?cache=' +\n process.env.CACHE_TAG;\n const localesResult = await fetch(filePath);\n const locales = await localesResult.json();\n return locales;\n });\n\n // Please leave 'en' where it is, as it's our fallback language in case no translation can be found\n this.supportedTranslationLocales = [\n 'en', 'az', 'bg', 'ca', 'cs', 'da', 'de', 'el', 'eo', 'en-GB', 'en-IN', 'es', 'et', 'fi', 'fr', 'he', 'hr', 'hu', 'id', 'it', 'ja', 'kn', 'ko', 'lv', 'ml', 'nb',\n 'nl', 'pl', 'pt-PT', 'pt-BR', 'ro', 'ru', 'sk', 'sr', 'sv', 'tr', 'uk', 'zh-CN', 'zh-TW',\n ];\n }\n}\n","import { I18nService as I18nServiceAbstraction } from '../abstractions/i18n.service';\n\nexport class I18nService implements I18nServiceAbstraction {\n locale: string;\n // First locale is the default (English)\n supportedTranslationLocales: string[] = ['en'];\n translationLocale: string;\n collator: Intl.Collator;\n localeNames = new Map([\n ['af', 'Afrikaans'],\n ['az', 'Azərbaycanca'],\n ['be', 'Беларуская'],\n ['bg', 'български'],\n ['ca', 'català'],\n ['cs', 'čeština'],\n ['da', 'dansk'],\n ['de', 'Deutsch'],\n ['el', 'Ελληνικά'],\n ['en', 'English'],\n ['en-GB', 'English (British)'],\n ['eo', 'Esperanto'],\n ['es', 'español'],\n ['et', 'eesti'],\n ['fa', 'فارسی'],\n ['fi', 'suomi'],\n ['fr', 'français'],\n ['he', 'עברית'],\n ['hi', 'हिन्दी'],\n ['hr', 'hrvatski'],\n ['hu', 'magyar'],\n ['id', 'Bahasa Indonesia'],\n ['it', 'italiano'],\n ['ja', '日本語'],\n ['ko', '한국어'],\n ['lv', 'Latvietis'],\n ['ml', 'മലയാളം'],\n ['nb', 'norsk (bokmål)'],\n ['nl', 'Nederlands'],\n ['pl', 'polski'],\n ['pt-BR', 'português do Brasil'],\n ['pt-PT', 'português'],\n ['ro', 'română'],\n ['ru', 'русский'],\n ['sk', 'slovenčina'],\n ['sr', 'Српски'],\n ['sv', 'svenska'],\n ['th', 'ไทย'],\n ['tr', 'Türkçe'],\n ['uk', 'українська'],\n ['vi', 'Tiếng Việt'],\n ['zh-CN', '中文(中国大陆)'],\n ['zh-TW', '中文(台灣)'],\n ]);\n\n protected inited: boolean;\n protected defaultMessages: any = {};\n protected localeMessages: any = {};\n\n constructor(protected systemLanguage: string, protected localesDirectory: string,\n protected getLocalesJson: (formattedLocale: string) => Promise) {\n this.systemLanguage = systemLanguage.replace('_', '-');\n }\n\n async init(locale?: string) {\n if (this.inited) {\n throw new Error('i18n already initialized.');\n }\n if (this.supportedTranslationLocales == null || this.supportedTranslationLocales.length === 0) {\n throw new Error('supportedTranslationLocales not set.');\n }\n\n this.inited = true;\n this.locale = this.translationLocale = locale != null ? locale : this.systemLanguage;\n\n try {\n this.collator = new Intl.Collator(this.locale, { numeric: true, sensitivity: 'base' });\n } catch {\n this.collator = null;\n }\n\n if (this.supportedTranslationLocales.indexOf(this.translationLocale) === -1) {\n this.translationLocale = this.translationLocale.slice(0, 2);\n\n if (this.supportedTranslationLocales.indexOf(this.translationLocale) === -1) {\n this.translationLocale = this.supportedTranslationLocales[0];\n }\n }\n\n if (this.localesDirectory != null) {\n await this.loadMessages(this.translationLocale, this.localeMessages);\n if (this.translationLocale !== this.supportedTranslationLocales[0]) {\n await this.loadMessages(this.supportedTranslationLocales[0], this.defaultMessages);\n }\n }\n }\n\n t(id: string, p1?: string, p2?: string, p3?: string): string {\n return this.translate(id, p1, p2, p3);\n }\n\n translate(id: string, p1?: string, p2?: string, p3?: string): string {\n let result: string;\n if (this.localeMessages.hasOwnProperty(id) && this.localeMessages[id]) {\n result = this.localeMessages[id];\n } else if (this.defaultMessages.hasOwnProperty(id) && this.defaultMessages[id]) {\n result = this.defaultMessages[id];\n } else {\n result = '';\n }\n\n if (result !== '') {\n if (p1 != null) {\n result = result.split('__$1__').join(p1);\n }\n if (p2 != null) {\n result = result.split('__$2__').join(p2);\n }\n if (p3 != null) {\n result = result.split('__$3__').join(p3);\n }\n }\n\n return result;\n }\n\n private async loadMessages(locale: string, messagesObj: any): Promise {\n const formattedLocale = locale.replace('-', '_');\n const locales = await this.getLocalesJson(formattedLocale);\n for (const prop in locales) {\n if (!locales.hasOwnProperty(prop)) {\n continue;\n }\n messagesObj[prop] = locales[prop].message;\n\n if (locales[prop].placeholders) {\n for (const placeProp in locales[prop].placeholders) {\n if (!locales[prop].placeholders.hasOwnProperty(placeProp) ||\n !locales[prop].placeholders[placeProp].content) {\n continue;\n }\n\n const replaceToken = '\\\\$' + placeProp.toUpperCase() + '\\\\$';\n let replaceContent = locales[prop].placeholders[placeProp].content;\n if (replaceContent === '$1' || replaceContent === '$2' || replaceContent === '$3') {\n replaceContent = '__$' + replaceContent + '__';\n }\n messagesObj[prop] = messagesObj[prop].replace(new RegExp(replaceToken, 'g'), replaceContent);\n }\n }\n }\n }\n\n}\n","import { StorageService } from 'jslib-common/abstractions/storage.service';\n\nexport class MemoryStorageService implements StorageService {\n private store = new Map();\n\n get(key: string): Promise {\n if (this.store.has(key)) {\n const obj = this.store.get(key);\n return Promise.resolve(obj as T);\n }\n return Promise.resolve(null);\n }\n\n async has(key: string): Promise {\n return this.get(key) != null;\n }\n\n save(key: string, obj: any): Promise {\n if (obj == null) {\n return this.remove(key);\n }\n this.store.set(key, obj);\n return Promise.resolve();\n }\n\n remove(key: string): Promise {\n this.store.delete(key);\n return Promise.resolve();\n }\n}\n","import { Injectable } from '@angular/core';\n\nimport { PasswordRepromptService as BasePasswordRepromptService } from 'jslib-angular/services/passwordReprompt.service';\nimport { PasswordRepromptComponent } from '../app/components/password-reprompt.component';\n\n@Injectable()\nexport class PasswordRepromptService extends BasePasswordRepromptService {\n component = PasswordRepromptComponent;\n}\n","import { Injectable } from '@angular/core';\n\nimport { KeyConnectorService } from 'jslib-common/abstractions/keyConnector.service';\nimport { PasswordRepromptService as PasswordRepromptServiceAbstraction } from 'jslib-common/abstractions/passwordReprompt.service';\n\nimport { PasswordRepromptComponent } from '../components/password-reprompt.component';\nimport { ModalService } from './modal.service';\n\n@Injectable()\nexport class PasswordRepromptService implements PasswordRepromptServiceAbstraction {\n protected component = PasswordRepromptComponent;\n\n constructor(private modalService: ModalService, private keyConnectorService: KeyConnectorService) { }\n\n protectedFields() {\n return ['TOTP', 'Password', 'H_Field', 'Card Number', 'Security Code'];\n }\n\n async showPasswordPrompt() {\n if (!await this.enabled()) {\n return true;\n }\n\n const ref = this.modalService.open(this.component, {allowMultipleModals: true});\n\n if (ref == null) {\n return false;\n }\n\n const result = await ref.onClosedPromise();\n return result === true;\n }\n\n async enabled() {\n return !await this.keyConnectorService.getUsesKeyConnector();\n }\n}\n","import Swal, { SweetAlertIcon } from 'sweetalert2';\n\nimport { DeviceType } from 'jslib-common/enums/deviceType';\nimport { ThemeType } from 'jslib-common/enums/themeType';\n\nimport { I18nService } from 'jslib-common/abstractions/i18n.service';\nimport { LogService } from 'jslib-common/abstractions/log.service';\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\nimport { PlatformUtilsService } from 'jslib-common/abstractions/platformUtils.service';\nimport { StorageService } from 'jslib-common/abstractions/storage.service';\n\nimport { ConstantsService } from 'jslib-common/services/constants.service';\n\nexport class WebPlatformUtilsService implements PlatformUtilsService {\n identityClientId: string = 'web';\n\n private browserCache: DeviceType = null;\n private prefersColorSchemeDark = window.matchMedia('(prefers-color-scheme: dark)');\n\n constructor(private i18nService: I18nService, private messagingService: MessagingService,\n private logService: LogService, private storageService: () => StorageService) { }\n\n getDevice(): DeviceType {\n if (this.browserCache != null) {\n return this.browserCache;\n }\n\n if (navigator.userAgent.indexOf(' Firefox/') !== -1 || navigator.userAgent.indexOf(' Gecko/') !== -1) {\n this.browserCache = DeviceType.FirefoxBrowser;\n } else if (navigator.userAgent.indexOf(' OPR/') >= 0) {\n this.browserCache = DeviceType.OperaBrowser;\n } else if (navigator.userAgent.indexOf(' Edg/') !== -1) {\n this.browserCache = DeviceType.EdgeBrowser;\n } else if (navigator.userAgent.indexOf(' Vivaldi/') !== -1) {\n this.browserCache = DeviceType.VivaldiBrowser;\n } else if (navigator.userAgent.indexOf(' Safari/') !== -1 && navigator.userAgent.indexOf('Chrome') === -1) {\n this.browserCache = DeviceType.SafariBrowser;\n } else if ((window as any).chrome && navigator.userAgent.indexOf(' Chrome/') !== -1) {\n this.browserCache = DeviceType.ChromeBrowser;\n } else if (navigator.userAgent.indexOf(' Trident/') !== -1) {\n this.browserCache = DeviceType.IEBrowser;\n } else {\n this.browserCache = DeviceType.UnknownBrowser;\n }\n\n return this.browserCache;\n }\n\n getDeviceString(): string {\n const device = DeviceType[this.getDevice()].toLowerCase();\n return device.replace('browser', '');\n }\n\n isFirefox(): boolean {\n return this.getDevice() === DeviceType.FirefoxBrowser;\n }\n\n isChrome(): boolean {\n return this.getDevice() === DeviceType.ChromeBrowser;\n }\n\n isEdge(): boolean {\n return this.getDevice() === DeviceType.EdgeBrowser;\n }\n\n isOpera(): boolean {\n return this.getDevice() === DeviceType.OperaBrowser;\n }\n\n isVivaldi(): boolean {\n return this.getDevice() === DeviceType.VivaldiBrowser;\n }\n\n isSafari(): boolean {\n return this.getDevice() === DeviceType.SafariBrowser;\n }\n\n isIE(): boolean {\n return this.getDevice() === DeviceType.IEBrowser;\n }\n\n isMacAppStore(): boolean {\n return false;\n }\n\n isViewOpen(): Promise {\n return Promise.resolve(false);\n }\n\n launchUri(uri: string, options?: any): void {\n const a = document.createElement('a');\n a.href = uri;\n if (options == null || !options.sameWindow) {\n a.target = '_blank';\n a.rel = 'noreferrer noopener';\n }\n a.classList.add('d-none');\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n }\n\n saveFile(win: Window, blobData: any, blobOptions: any, fileName: string): void {\n let blob: Blob = null;\n let type: string = null;\n const fileNameLower = fileName.toLowerCase();\n let doDownload = true;\n if (fileNameLower.endsWith('.pdf')) {\n type = 'application/pdf';\n doDownload = false;\n } else if (fileNameLower.endsWith('.xlsx')) {\n type = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n } else if (fileNameLower.endsWith('.docx')) {\n type = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n } else if (fileNameLower.endsWith('.pptx')) {\n type = 'application/vnd.openxmlformats-officedocument.presentationml.presentation';\n } else if (fileNameLower.endsWith('.csv')) {\n type = 'text/csv';\n } else if (fileNameLower.endsWith('.png')) {\n type = 'image/png';\n } else if (fileNameLower.endsWith('.jpg') || fileNameLower.endsWith('.jpeg')) {\n type = 'image/jpeg';\n } else if (fileNameLower.endsWith('.gif')) {\n type = 'image/gif';\n }\n if (type != null) {\n blobOptions = blobOptions || {};\n if (blobOptions.type == null) {\n blobOptions.type = type;\n }\n }\n if (blobOptions != null && !this.isIE()) {\n blob = new Blob([blobData], blobOptions);\n } else {\n blob = new Blob([blobData]);\n }\n if (navigator.msSaveOrOpenBlob) {\n navigator.msSaveBlob(blob, fileName);\n } else {\n const a = win.document.createElement('a');\n if (doDownload) {\n a.download = fileName;\n } else if (!this.isSafari()) {\n a.target = '_blank';\n }\n a.href = URL.createObjectURL(blob);\n a.style.position = 'fixed';\n win.document.body.appendChild(a);\n a.click();\n win.document.body.removeChild(a);\n }\n }\n\n getApplicationVersion(): Promise {\n return Promise.resolve(process.env.APPLICATION_VERSION || '-');\n }\n\n supportsWebAuthn(win: Window): boolean {\n return (typeof (PublicKeyCredential) !== 'undefined');\n }\n\n supportsDuo(): boolean {\n return true;\n }\n\n showToast(type: 'error' | 'success' | 'warning' | 'info', title: string, text: string | string[],\n options?: any): void {\n this.messagingService.send('showToast', {\n text: text,\n title: title,\n type: type,\n options: options,\n });\n }\n\n async showDialog(body: string, title?: string, confirmText?: string, cancelText?: string, type?: string,\n bodyIsHtml: boolean = false) {\n let iconClasses: string = null;\n if (type != null) {\n // If you add custom types to this part, the type to SweetAlertIcon cast below needs to be changed.\n switch (type) {\n case 'success':\n iconClasses = 'fa-check text-success';\n break;\n case 'warning':\n iconClasses = 'fa-warning text-warning';\n break;\n case 'error':\n iconClasses = 'fa-bolt text-danger';\n break;\n case 'info':\n iconClasses = 'fa-info-circle text-info';\n break;\n default:\n break;\n }\n }\n\n const bootstrapModal = document.querySelector('div.modal');\n if (bootstrapModal != null) {\n bootstrapModal.removeAttribute('tabindex');\n }\n\n const iconHtmlStr = iconClasses != null ? `` : undefined;\n const confirmed = await Swal.fire({\n heightAuto: false,\n buttonsStyling: false,\n icon: type as SweetAlertIcon, // required to be any of the SweetAlertIcons to output the iconHtml.\n iconHtml: iconHtmlStr,\n text: bodyIsHtml ? null : body,\n html: bodyIsHtml ? body : null,\n titleText: title,\n showCancelButton: (cancelText != null),\n cancelButtonText: cancelText,\n showConfirmButton: true,\n confirmButtonText: confirmText == null ? this.i18nService.t('ok') : confirmText,\n });\n\n if (bootstrapModal != null) {\n bootstrapModal.setAttribute('tabindex', '-1');\n }\n\n return confirmed.value;\n }\n\n isDev(): boolean {\n return false;\n }\n\n isSelfHost(): boolean {\n return false;\n }\n\n copyToClipboard(text: string, options?: any): void | boolean {\n let win = window;\n let doc = window.document;\n if (options && (options.window || options.win)) {\n win = options.window || options.win;\n doc = win.document;\n } else if (options && options.doc) {\n doc = options.doc;\n }\n if ((win as any).clipboardData && (win as any).clipboardData.setData) {\n // IE specific code path to prevent textarea being shown while dialog is visible.\n (win as any).clipboardData.setData('Text', text);\n } else if (doc.queryCommandSupported && doc.queryCommandSupported('copy')) {\n const textarea = doc.createElement('textarea');\n textarea.textContent = text;\n // Prevent scrolling to bottom of page in MS Edge.\n textarea.style.position = 'fixed';\n let copyEl = doc.body;\n // For some reason copy command won't work when modal is open if appending to body\n if (doc.body.classList.contains('modal-open')) {\n copyEl = doc.body.querySelector('.modal');\n }\n copyEl.appendChild(textarea);\n textarea.select();\n let success = false;\n try {\n // Security exception may be thrown by some browsers.\n success = doc.execCommand('copy');\n if (!success) {\n this.logService.debug('Copy command unsupported or disabled.');\n }\n } catch (e) {\n // tslint:disable-next-line\n console.warn('Copy to clipboard failed.', e);\n } finally {\n copyEl.removeChild(textarea);\n }\n return success;\n }\n }\n\n readFromClipboard(options?: any): Promise {\n throw new Error('Cannot read from clipboard on web.');\n }\n\n supportsBiometric() {\n return Promise.resolve(false);\n }\n\n authenticateBiometric() {\n return Promise.resolve(false);\n }\n\n supportsSecureStorage() {\n return false;\n }\n\n getDefaultSystemTheme(): Promise {\n return Promise.resolve(this.prefersColorSchemeDark.matches ? ThemeType.Dark : ThemeType.Light);\n }\n\n async getEffectiveTheme(): Promise {\n const theme = await this.storageService().get(ConstantsService.themeKey);\n if (theme === ThemeType.Dark) {\n return ThemeType.Dark;\n } else if (theme === ThemeType.System) {\n return this.getDefaultSystemTheme();\n } else {\n return ThemeType.Light;\n }\n }\n\n onDefaultSystemThemeChange(callback: ((theme: ThemeType.Light | ThemeType.Dark) => unknown)) {\n try {\n this.prefersColorSchemeDark.addEventListener('change', ({ matches }) => {\n callback(matches ? ThemeType.Dark : ThemeType.Light);\n });\n } catch (e) {\n // Safari older than v14\n this.prefersColorSchemeDark.addListener(ev => {\n callback(ev.matches ? ThemeType.Dark : ThemeType.Light);\n });\n }\n }\n}\n","import { DeviceType } from '../enums/deviceType';\nimport { PolicyType } from '../enums/policyType';\n\nimport { ApiService as ApiServiceAbstraction } from '../abstractions/api.service';\nimport { EnvironmentService } from '../abstractions/environment.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\nimport { TokenService } from '../abstractions/token.service';\n\nimport { AttachmentRequest } from '../models/request/attachmentRequest';\nimport { BitPayInvoiceRequest } from '../models/request/bitPayInvoiceRequest';\nimport { CipherBulkDeleteRequest } from '../models/request/cipherBulkDeleteRequest';\nimport { CipherBulkMoveRequest } from '../models/request/cipherBulkMoveRequest';\nimport { CipherBulkShareRequest } from '../models/request/cipherBulkShareRequest';\nimport { CipherCollectionsRequest } from '../models/request/cipherCollectionsRequest';\nimport { CipherCreateRequest } from '../models/request/cipherCreateRequest';\nimport { CipherRequest } from '../models/request/cipherRequest';\nimport { CipherShareRequest } from '../models/request/cipherShareRequest';\nimport { CollectionRequest } from '../models/request/collectionRequest';\nimport { DeleteRecoverRequest } from '../models/request/deleteRecoverRequest';\nimport { EmailRequest } from '../models/request/emailRequest';\nimport { EmailTokenRequest } from '../models/request/emailTokenRequest';\nimport { EmergencyAccessAcceptRequest } from '../models/request/emergencyAccessAcceptRequest';\nimport { EmergencyAccessConfirmRequest } from '../models/request/emergencyAccessConfirmRequest';\nimport { EmergencyAccessInviteRequest } from '../models/request/emergencyAccessInviteRequest';\nimport { EmergencyAccessPasswordRequest } from '../models/request/emergencyAccessPasswordRequest';\nimport { EmergencyAccessUpdateRequest } from '../models/request/emergencyAccessUpdateRequest';\nimport { EventRequest } from '../models/request/eventRequest';\nimport { FolderRequest } from '../models/request/folderRequest';\nimport { GroupRequest } from '../models/request/groupRequest';\nimport { IapCheckRequest } from '../models/request/iapCheckRequest';\nimport { ImportCiphersRequest } from '../models/request/importCiphersRequest';\nimport { ImportDirectoryRequest } from '../models/request/importDirectoryRequest';\nimport { ImportOrganizationCiphersRequest } from '../models/request/importOrganizationCiphersRequest';\nimport { KdfRequest } from '../models/request/kdfRequest';\nimport { KeysRequest } from '../models/request/keysRequest';\nimport { OrganizationSponsorshipCreateRequest } from '../models/request/organization/organizationSponsorshipCreateRequest';\nimport { OrganizationSponsorshipRedeemRequest } from '../models/request/organization/organizationSponsorshipRedeemRequest';\nimport { OrganizationSsoRequest } from '../models/request/organization/organizationSsoRequest';\nimport { OrganizationCreateRequest } from '../models/request/organizationCreateRequest';\nimport { OrganizationImportRequest } from '../models/request/organizationImportRequest';\nimport { OrganizationKeysRequest } from '../models/request/organizationKeysRequest';\nimport { OrganizationSubscriptionUpdateRequest } from '../models/request/organizationSubscriptionUpdateRequest';\nimport { OrganizationTaxInfoUpdateRequest } from '../models/request/organizationTaxInfoUpdateRequest';\nimport { OrganizationUpdateRequest } from '../models/request/organizationUpdateRequest';\nimport { OrganizationUpgradeRequest } from '../models/request/organizationUpgradeRequest';\nimport { OrganizationUserAcceptRequest } from '../models/request/organizationUserAcceptRequest';\nimport { OrganizationUserBulkConfirmRequest } from '../models/request/organizationUserBulkConfirmRequest';\nimport { OrganizationUserBulkRequest } from '../models/request/organizationUserBulkRequest';\nimport { OrganizationUserConfirmRequest } from '../models/request/organizationUserConfirmRequest';\nimport { OrganizationUserInviteRequest } from '../models/request/organizationUserInviteRequest';\nimport { OrganizationUserResetPasswordEnrollmentRequest } from '../models/request/organizationUserResetPasswordEnrollmentRequest';\nimport { OrganizationUserResetPasswordRequest } from '../models/request/organizationUserResetPasswordRequest';\nimport { OrganizationUserUpdateGroupsRequest } from '../models/request/organizationUserUpdateGroupsRequest';\nimport { OrganizationUserUpdateRequest } from '../models/request/organizationUserUpdateRequest';\nimport { PasswordHintRequest } from '../models/request/passwordHintRequest';\nimport { PasswordRequest } from '../models/request/passwordRequest';\nimport { PaymentRequest } from '../models/request/paymentRequest';\nimport { PolicyRequest } from '../models/request/policyRequest';\nimport { PreloginRequest } from '../models/request/preloginRequest';\nimport { ProviderAddOrganizationRequest } from '../models/request/provider/providerAddOrganizationRequest';\nimport { ProviderOrganizationCreateRequest } from '../models/request/provider/providerOrganizationCreateRequest';\nimport { ProviderSetupRequest } from '../models/request/provider/providerSetupRequest';\nimport { ProviderUpdateRequest } from '../models/request/provider/providerUpdateRequest';\nimport { ProviderUserAcceptRequest } from '../models/request/provider/providerUserAcceptRequest';\nimport { ProviderUserBulkConfirmRequest } from '../models/request/provider/providerUserBulkConfirmRequest';\nimport { ProviderUserBulkRequest } from '../models/request/provider/providerUserBulkRequest';\nimport { ProviderUserConfirmRequest } from '../models/request/provider/providerUserConfirmRequest';\nimport { ProviderUserInviteRequest } from '../models/request/provider/providerUserInviteRequest';\nimport { ProviderUserUpdateRequest } from '../models/request/provider/providerUserUpdateRequest';\nimport { RegisterRequest } from '../models/request/registerRequest';\nimport { SeatRequest } from '../models/request/seatRequest';\nimport { SecretVerificationRequest } from '../models/request/secretVerificationRequest';\nimport { SelectionReadOnlyRequest } from '../models/request/selectionReadOnlyRequest';\nimport { SendAccessRequest } from '../models/request/sendAccessRequest';\nimport { SendRequest } from '../models/request/sendRequest';\nimport { SetPasswordRequest } from '../models/request/setPasswordRequest';\nimport { StorageRequest } from '../models/request/storageRequest';\nimport { TaxInfoUpdateRequest } from '../models/request/taxInfoUpdateRequest';\nimport { TokenRequest } from '../models/request/tokenRequest';\nimport { TwoFactorEmailRequest } from '../models/request/twoFactorEmailRequest';\nimport { TwoFactorProviderRequest } from '../models/request/twoFactorProviderRequest';\nimport { TwoFactorRecoveryRequest } from '../models/request/twoFactorRecoveryRequest';\nimport { UpdateDomainsRequest } from '../models/request/updateDomainsRequest';\nimport { UpdateKeyRequest } from '../models/request/updateKeyRequest';\nimport { UpdateProfileRequest } from '../models/request/updateProfileRequest';\nimport { UpdateTempPasswordRequest } from '../models/request/updateTempPasswordRequest';\nimport { UpdateTwoFactorAuthenticatorRequest } from '../models/request/updateTwoFactorAuthenticatorRequest';\nimport { UpdateTwoFactorDuoRequest } from '../models/request/updateTwoFactorDuoRequest';\nimport { UpdateTwoFactorEmailRequest } from '../models/request/updateTwoFactorEmailRequest';\nimport { UpdateTwoFactorWebAuthnDeleteRequest } from '../models/request/updateTwoFactorWebAuthnDeleteRequest';\nimport { UpdateTwoFactorWebAuthnRequest } from '../models/request/updateTwoFactorWebAuthnRequest';\nimport { UpdateTwoFactorYubioOtpRequest } from '../models/request/updateTwoFactorYubioOtpRequest';\nimport { VerifyBankRequest } from '../models/request/verifyBankRequest';\nimport { VerifyDeleteRecoverRequest } from '../models/request/verifyDeleteRecoverRequest';\nimport { VerifyEmailRequest } from '../models/request/verifyEmailRequest';\n\nimport { Utils } from '../misc/utils';\n\nimport { ApiKeyResponse } from '../models/response/apiKeyResponse';\nimport { AttachmentResponse } from '../models/response/attachmentResponse';\nimport { AttachmentUploadDataResponse } from '../models/response/attachmentUploadDataResponse';\nimport { BillingResponse } from '../models/response/billingResponse';\nimport { BreachAccountResponse } from '../models/response/breachAccountResponse';\nimport { CipherResponse } from '../models/response/cipherResponse';\nimport {\n CollectionGroupDetailsResponse,\n CollectionResponse,\n} from '../models/response/collectionResponse';\nimport { DomainsResponse } from '../models/response/domainsResponse';\nimport {\n EmergencyAccessGranteeDetailsResponse,\n EmergencyAccessGrantorDetailsResponse,\n EmergencyAccessTakeoverResponse,\n EmergencyAccessViewResponse\n} from '../models/response/emergencyAccessResponse';\nimport { ErrorResponse } from '../models/response/errorResponse';\nimport { EventResponse } from '../models/response/eventResponse';\nimport { FolderResponse } from '../models/response/folderResponse';\nimport {\n GroupDetailsResponse,\n GroupResponse,\n} from '../models/response/groupResponse';\nimport { IdentityCaptchaResponse } from '../models/response/identityCaptchaResponse';\nimport { IdentityTokenResponse } from '../models/response/identityTokenResponse';\nimport { IdentityTwoFactorResponse } from '../models/response/identityTwoFactorResponse';\nimport { ListResponse } from '../models/response/listResponse';\nimport { OrganizationSsoResponse } from '../models/response/organization/organizationSsoResponse';\nimport { OrganizationAutoEnrollStatusResponse } from '../models/response/organizationAutoEnrollStatusResponse';\nimport { OrganizationKeysResponse } from '../models/response/organizationKeysResponse';\nimport { OrganizationResponse } from '../models/response/organizationResponse';\nimport { OrganizationSubscriptionResponse } from '../models/response/organizationSubscriptionResponse';\nimport { OrganizationUserBulkPublicKeyResponse } from '../models/response/organizationUserBulkPublicKeyResponse';\nimport { OrganizationUserBulkResponse } from '../models/response/organizationUserBulkResponse';\nimport {\n OrganizationUserDetailsResponse,\n OrganizationUserResetPasswordDetailsReponse,\n OrganizationUserUserDetailsResponse,\n} from '../models/response/organizationUserResponse';\nimport { PaymentResponse } from '../models/response/paymentResponse';\nimport { PlanResponse } from '../models/response/planResponse';\nimport { PolicyResponse } from '../models/response/policyResponse';\nimport { PreloginResponse } from '../models/response/preloginResponse';\nimport { ProfileResponse } from '../models/response/profileResponse';\nimport { ProviderOrganizationOrganizationDetailsResponse, ProviderOrganizationResponse } from '../models/response/provider/providerOrganizationResponse';\nimport { ProviderResponse } from '../models/response/provider/providerResponse';\nimport { ProviderUserBulkPublicKeyResponse } from '../models/response/provider/providerUserBulkPublicKeyResponse';\nimport { ProviderUserBulkResponse } from '../models/response/provider/providerUserBulkResponse';\nimport {\n ProviderUserResponse,\n ProviderUserUserDetailsResponse\n} from '../models/response/provider/providerUserResponse';\nimport { SelectionReadOnlyResponse } from '../models/response/selectionReadOnlyResponse';\nimport { SendAccessResponse } from '../models/response/sendAccessResponse';\nimport { SendFileDownloadDataResponse } from '../models/response/sendFileDownloadDataResponse';\nimport { SendFileUploadDataResponse } from '../models/response/sendFileUploadDataResponse';\nimport { SendResponse } from '../models/response/sendResponse';\nimport { SubscriptionResponse } from '../models/response/subscriptionResponse';\nimport { SyncResponse } from '../models/response/syncResponse';\nimport { TaxInfoResponse } from '../models/response/taxInfoResponse';\nimport { TaxRateResponse } from '../models/response/taxRateResponse';\nimport { TwoFactorAuthenticatorResponse } from '../models/response/twoFactorAuthenticatorResponse';\nimport { TwoFactorDuoResponse } from '../models/response/twoFactorDuoResponse';\nimport { TwoFactorEmailResponse } from '../models/response/twoFactorEmailResponse';\nimport { TwoFactorProviderResponse } from '../models/response/twoFactorProviderResponse';\nimport { TwoFactorRecoverResponse } from '../models/response/twoFactorRescoverResponse';\nimport { TwoFactorWebAuthnResponse } from '../models/response/twoFactorWebAuthnResponse';\nimport { ChallengeResponse } from '../models/response/twoFactorWebAuthnResponse';\nimport { TwoFactorYubiKeyResponse } from '../models/response/twoFactorYubiKeyResponse';\nimport { UserKeyResponse } from '../models/response/userKeyResponse';\n\nimport { SetKeyConnectorKeyRequest } from '../models/request/account/setKeyConnectorKeyRequest';\nimport { VerifyOTPRequest } from '../models/request/account/verifyOTPRequest';\nimport { KeyConnectorUserKeyRequest } from '../models/request/keyConnectorUserKeyRequest';\nimport { KeyConnectorUserKeyResponse } from '../models/response/keyConnectorUserKeyResponse';\nimport { SendAccessView } from '../models/view/sendAccessView';\n\n\n\nexport class ApiService implements ApiServiceAbstraction {\n protected apiKeyRefresh: (clientId: string, clientSecret: string) => Promise;\n private device: DeviceType;\n private deviceType: string;\n private isWebClient = false;\n private isDesktopClient = false;\n\n constructor(private tokenService: TokenService, private platformUtilsService: PlatformUtilsService,\n private environmentService: EnvironmentService, private logoutCallback: (expired: boolean) => Promise,\n private customUserAgent: string = null) {\n this.device = platformUtilsService.getDevice();\n this.deviceType = this.device.toString();\n this.isWebClient = this.device === DeviceType.IEBrowser || this.device === DeviceType.ChromeBrowser ||\n this.device === DeviceType.EdgeBrowser || this.device === DeviceType.FirefoxBrowser ||\n this.device === DeviceType.OperaBrowser || this.device === DeviceType.SafariBrowser ||\n this.device === DeviceType.UnknownBrowser || this.device === DeviceType.VivaldiBrowser;\n this.isDesktopClient = this.device === DeviceType.WindowsDesktop || this.device === DeviceType.MacOsDesktop ||\n this.device === DeviceType.LinuxDesktop;\n }\n\n // Auth APIs\n\n async postIdentityToken(request: TokenRequest): Promise {\n const headers = new Headers({\n 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n 'Accept': 'application/json',\n 'Device-Type': this.deviceType,\n });\n if (this.customUserAgent != null) {\n headers.set('User-Agent', this.customUserAgent);\n }\n request.alterIdentityTokenHeaders(headers);\n const response = await this.fetch(new Request(this.environmentService.getIdentityUrl() + '/connect/token', {\n body: this.qsStringify(request.toIdentityToken(request.clientId ?? this.platformUtilsService.identityClientId)),\n credentials: this.getCredentials(),\n cache: 'no-store',\n headers: headers,\n method: 'POST',\n }));\n\n let responseJson: any = null;\n if (this.isJsonResponse(response)) {\n responseJson = await response.json();\n }\n\n if (responseJson != null) {\n if (response.status === 200) {\n return new IdentityTokenResponse(responseJson);\n } else if (response.status === 400 && responseJson.TwoFactorProviders2 &&\n Object.keys(responseJson.TwoFactorProviders2).length) {\n await this.tokenService.clearTwoFactorToken(request.email);\n return new IdentityTwoFactorResponse(responseJson);\n } else if (response.status === 400 && responseJson.HCaptcha_SiteKey &&\n Object.keys(responseJson.HCaptcha_SiteKey).length) {\n return new IdentityCaptchaResponse(responseJson);\n }\n }\n\n return Promise.reject(new ErrorResponse(responseJson, response.status, true));\n }\n\n async refreshIdentityToken(): Promise {\n try {\n await this.doAuthRefresh();\n } catch (e) {\n return Promise.reject(null);\n }\n }\n\n // Account APIs\n\n async getProfile(): Promise {\n const r = await this.send('GET', '/accounts/profile', null, true, true);\n return new ProfileResponse(r);\n }\n\n async getUserBilling(): Promise {\n const r = await this.send('GET', '/accounts/billing', null, true, true);\n return new BillingResponse(r);\n }\n\n async getUserSubscription(): Promise {\n const r = await this.send('GET', '/accounts/subscription', null, true, true);\n return new SubscriptionResponse(r);\n }\n\n async getTaxInfo(): Promise {\n const r = await this.send('GET', '/accounts/tax', null, true, true);\n return new TaxInfoResponse(r);\n }\n\n async putProfile(request: UpdateProfileRequest): Promise {\n const r = await this.send('PUT', '/accounts/profile', request, true, true);\n return new ProfileResponse(r);\n }\n\n putTaxInfo(request: TaxInfoUpdateRequest): Promise {\n return this.send('PUT', '/accounts/tax', request, true, false);\n }\n\n async postPrelogin(request: PreloginRequest): Promise {\n const r = await this.send('POST', '/accounts/prelogin', request, false, true);\n return new PreloginResponse(r);\n }\n\n postEmailToken(request: EmailTokenRequest): Promise {\n return this.send('POST', '/accounts/email-token', request, true, false);\n }\n\n postEmail(request: EmailRequest): Promise {\n return this.send('POST', '/accounts/email', request, true, false);\n }\n\n postPassword(request: PasswordRequest): Promise {\n return this.send('POST', '/accounts/password', request, true, false);\n }\n\n setPassword(request: SetPasswordRequest): Promise {\n return this.send('POST', '/accounts/set-password', request, true, false);\n }\n\n postSetKeyConnectorKey(request: SetKeyConnectorKeyRequest): Promise {\n return this.send('POST', '/accounts/set-key-connector-key', request, true, false);\n }\n\n postSecurityStamp(request: SecretVerificationRequest): Promise {\n return this.send('POST', '/accounts/security-stamp', request, true, false);\n }\n\n deleteAccount(request: SecretVerificationRequest): Promise {\n return this.send('DELETE', '/accounts', request, true, false);\n }\n\n async getAccountRevisionDate(): Promise {\n const r = await this.send('GET', '/accounts/revision-date', null, true, true);\n return r as number;\n }\n\n postPasswordHint(request: PasswordHintRequest): Promise {\n return this.send('POST', '/accounts/password-hint', request, false, false);\n }\n\n postRegister(request: RegisterRequest): Promise {\n return this.send('POST', '/accounts/register', request, false, false);\n }\n\n async postPremium(data: FormData): Promise {\n const r = await this.send('POST', '/accounts/premium', data, true, true);\n return new PaymentResponse(r);\n }\n\n async postIapCheck(request: IapCheckRequest): Promise {\n return this.send('POST', '/accounts/iap-check', request, true, false);\n }\n\n postReinstatePremium(): Promise {\n return this.send('POST', '/accounts/reinstate-premium', null, true, false);\n }\n\n postCancelPremium(): Promise {\n return this.send('POST', '/accounts/cancel-premium', null, true, false);\n }\n\n async postAccountStorage(request: StorageRequest): Promise {\n const r = await this.send('POST', '/accounts/storage', request, true, true);\n return new PaymentResponse(r);\n }\n\n postAccountPayment(request: PaymentRequest): Promise {\n return this.send('POST', '/accounts/payment', request, true, false);\n }\n\n postAccountLicense(data: FormData): Promise {\n return this.send('POST', '/accounts/license', data, true, false);\n }\n\n postAccountKeys(request: KeysRequest): Promise {\n return this.send('POST', '/accounts/keys', request, true, false);\n }\n\n postAccountKey(request: UpdateKeyRequest): Promise {\n return this.send('POST', '/accounts/key', request, true, false);\n }\n\n postAccountVerifyEmail(): Promise {\n return this.send('POST', '/accounts/verify-email', null, true, false);\n }\n\n postAccountVerifyEmailToken(request: VerifyEmailRequest): Promise {\n return this.send('POST', '/accounts/verify-email-token', request, false, false);\n }\n\n postAccountVerifyPassword(request: SecretVerificationRequest): Promise {\n return this.send('POST', '/accounts/verify-password', request, true, false);\n }\n\n postAccountRecoverDelete(request: DeleteRecoverRequest): Promise {\n return this.send('POST', '/accounts/delete-recover', request, false, false);\n }\n\n postAccountRecoverDeleteToken(request: VerifyDeleteRecoverRequest): Promise {\n return this.send('POST', '/accounts/delete-recover-token', request, false, false);\n }\n\n postAccountKdf(request: KdfRequest): Promise {\n return this.send('POST', '/accounts/kdf', request, true, false);\n }\n\n async deleteSsoUser(organizationId: string): Promise {\n return this.send('DELETE', '/accounts/sso/' + organizationId, null, true, false);\n }\n\n async getSsoUserIdentifier(): Promise {\n return this.send('GET', '/accounts/sso/user-identifier', null, true, true);\n }\n\n async postUserApiKey(id: string, request: SecretVerificationRequest): Promise {\n const r = await this.send('POST', '/accounts/api-key', request, true, true);\n return new ApiKeyResponse(r);\n }\n\n async postUserRotateApiKey(id: string, request: SecretVerificationRequest): Promise {\n const r = await this.send('POST', '/accounts/rotate-api-key', request, true, true);\n return new ApiKeyResponse(r);\n }\n\n putUpdateTempPassword(request: UpdateTempPasswordRequest): Promise {\n return this.send('PUT', '/accounts/update-temp-password', request, true, false);\n }\n\n postAccountRequestOTP(): Promise {\n return this.send('POST', '/accounts/request-otp', null, true, false);\n }\n\n postAccountVerifyOTP(request: VerifyOTPRequest): Promise {\n return this.send('POST', '/accounts/verify-otp', request, true, false);\n }\n\n postConvertToKeyConnector(): Promise {\n return this.send('POST', '/accounts/convert-to-key-connector', null, true, false);\n }\n\n // Folder APIs\n\n async getFolder(id: string): Promise {\n const r = await this.send('GET', '/folders/' + id, null, true, true);\n return new FolderResponse(r);\n }\n\n async postFolder(request: FolderRequest): Promise {\n const r = await this.send('POST', '/folders', request, true, true);\n return new FolderResponse(r);\n }\n\n async putFolder(id: string, request: FolderRequest): Promise {\n const r = await this.send('PUT', '/folders/' + id, request, true, true);\n return new FolderResponse(r);\n }\n\n deleteFolder(id: string): Promise {\n return this.send('DELETE', '/folders/' + id, null, true, false);\n }\n\n // Send APIs\n\n async getSend(id: string): Promise {\n const r = await this.send('GET', '/sends/' + id, null, true, true);\n return new SendResponse(r);\n }\n\n async postSendAccess(id: string, request: SendAccessRequest, apiUrl?: string): Promise {\n const addSendIdHeader = (headers: Headers) => {\n headers.set('Send-Id', id);\n };\n const r = await this.send('POST', '/sends/access/' + id, request, false, true, apiUrl, addSendIdHeader);\n return new SendAccessResponse(r);\n }\n\n async getSendFileDownloadData(send: SendAccessView, request: SendAccessRequest, apiUrl?: string): Promise {\n const addSendIdHeader = (headers: Headers) => {\n headers.set('Send-Id', send.id);\n };\n const r = await this.send('POST', '/sends/' + send.id + '/access/file/' + send.file.id, request, false, true,\n apiUrl, addSendIdHeader);\n return new SendFileDownloadDataResponse(r);\n }\n\n async getSends(): Promise> {\n const r = await this.send('GET', '/sends', null, true, true);\n return new ListResponse(r, SendResponse);\n }\n\n async postSend(request: SendRequest): Promise {\n const r = await this.send('POST', '/sends', request, true, true);\n return new SendResponse(r);\n }\n\n async postFileTypeSend(request: SendRequest): Promise {\n const r = await this.send('POST', '/sends/file/v2', request, true, true);\n return new SendFileUploadDataResponse(r);\n }\n\n async renewSendFileUploadUrl(sendId: string, fileId: string): Promise {\n const r = await this.send('GET', '/sends/' + sendId + '/file/' + fileId, null, true, true);\n return new SendFileUploadDataResponse(r);\n }\n\n postSendFile(sendId: string, fileId: string, data: FormData): Promise {\n return this.send('POST', '/sends/' + sendId + '/file/' + fileId, data, true, false);\n }\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n async postSendFileLegacy(data: FormData): Promise {\n const r = await this.send('POST', '/sends/file', data, true, true);\n return new SendResponse(r);\n }\n\n async putSend(id: string, request: SendRequest): Promise {\n const r = await this.send('PUT', '/sends/' + id, request, true, true);\n return new SendResponse(r);\n }\n\n async putSendRemovePassword(id: string): Promise {\n const r = await this.send('PUT', '/sends/' + id + '/remove-password', null, true, true);\n return new SendResponse(r);\n }\n\n deleteSend(id: string): Promise {\n return this.send('DELETE', '/sends/' + id, null, true, false);\n }\n\n // Cipher APIs\n\n async getCipher(id: string): Promise {\n const r = await this.send('GET', '/ciphers/' + id, null, true, true);\n return new CipherResponse(r);\n }\n\n async getCipherAdmin(id: string): Promise {\n const r = await this.send('GET', '/ciphers/' + id + '/admin', null, true, true);\n return new CipherResponse(r);\n }\n\n async getCiphersOrganization(organizationId: string): Promise> {\n const r = await this.send('GET', '/ciphers/organization-details?organizationId=' + organizationId,\n null, true, true);\n return new ListResponse(r, CipherResponse);\n }\n\n async postCipher(request: CipherRequest): Promise {\n const r = await this.send('POST', '/ciphers', request, true, true);\n return new CipherResponse(r);\n }\n\n async postCipherCreate(request: CipherCreateRequest): Promise {\n const r = await this.send('POST', '/ciphers/create', request, true, true);\n return new CipherResponse(r);\n }\n\n async postCipherAdmin(request: CipherCreateRequest): Promise {\n const r = await this.send('POST', '/ciphers/admin', request, true, true);\n return new CipherResponse(r);\n }\n\n async putCipher(id: string, request: CipherRequest): Promise {\n const r = await this.send('PUT', '/ciphers/' + id, request, true, true);\n return new CipherResponse(r);\n }\n\n async putCipherAdmin(id: string, request: CipherRequest): Promise {\n const r = await this.send('PUT', '/ciphers/' + id + '/admin', request, true, true);\n return new CipherResponse(r);\n }\n\n deleteCipher(id: string): Promise {\n return this.send('DELETE', '/ciphers/' + id, null, true, false);\n }\n\n deleteCipherAdmin(id: string): Promise {\n return this.send('DELETE', '/ciphers/' + id + '/admin', null, true, false);\n }\n\n deleteManyCiphers(request: CipherBulkDeleteRequest): Promise {\n return this.send('DELETE', '/ciphers', request, true, false);\n }\n\n deleteManyCiphersAdmin(request: CipherBulkDeleteRequest): Promise {\n return this.send('DELETE', '/ciphers/admin', request, true, false);\n }\n\n putMoveCiphers(request: CipherBulkMoveRequest): Promise {\n return this.send('PUT', '/ciphers/move', request, true, false);\n }\n\n async putShareCipher(id: string, request: CipherShareRequest): Promise {\n const r = await this.send('PUT', '/ciphers/' + id + '/share', request, true, true);\n return new CipherResponse(r);\n }\n\n putShareCiphers(request: CipherBulkShareRequest): Promise {\n return this.send('PUT', '/ciphers/share', request, true, false);\n }\n\n putCipherCollections(id: string, request: CipherCollectionsRequest): Promise {\n return this.send('PUT', '/ciphers/' + id + '/collections', request, true, false);\n }\n\n putCipherCollectionsAdmin(id: string, request: CipherCollectionsRequest): Promise {\n return this.send('PUT', '/ciphers/' + id + '/collections-admin', request, true, false);\n }\n\n postPurgeCiphers(request: SecretVerificationRequest, organizationId: string = null): Promise {\n let path = '/ciphers/purge';\n if (organizationId != null) {\n path += '?organizationId=' + organizationId;\n }\n return this.send('POST', path, request, true, false);\n }\n\n postImportCiphers(request: ImportCiphersRequest): Promise {\n return this.send('POST', '/ciphers/import', request, true, false);\n }\n\n postImportOrganizationCiphers(organizationId: string, request: ImportOrganizationCiphersRequest): Promise {\n return this.send('POST', '/ciphers/import-organization?organizationId=' + organizationId, request, true, false);\n }\n\n putDeleteCipher(id: string): Promise {\n return this.send('PUT', '/ciphers/' + id + '/delete', null, true, false);\n }\n\n putDeleteCipherAdmin(id: string): Promise {\n return this.send('PUT', '/ciphers/' + id + '/delete-admin', null, true, false);\n }\n\n putDeleteManyCiphers(request: CipherBulkDeleteRequest): Promise {\n return this.send('PUT', '/ciphers/delete', request, true, false);\n }\n\n putDeleteManyCiphersAdmin(request: CipherBulkDeleteRequest): Promise {\n return this.send('PUT', '/ciphers/delete-admin', request, true, false);\n }\n\n async putRestoreCipher(id: string): Promise {\n const r = await this.send('PUT', '/ciphers/' + id + '/restore', null, true, true);\n return new CipherResponse(r);\n }\n\n async putRestoreCipherAdmin(id: string): Promise {\n const r = await this.send('PUT', '/ciphers/' + id + '/restore-admin', null, true, true);\n return new CipherResponse(r);\n }\n\n async putRestoreManyCiphers(request: CipherBulkDeleteRequest): Promise> {\n const r = await this.send('PUT', '/ciphers/restore', request, true, true);\n return new ListResponse(r, CipherResponse);\n }\n\n // Attachments APIs\n\n async getAttachmentData(cipherId: string, attachmentId: string, emergencyAccessId?: string): Promise {\n const path = (emergencyAccessId != null ?\n '/emergency-access/' + emergencyAccessId + '/' :\n '/ciphers/') + cipherId + '/attachment/' + attachmentId;\n const r = await this.send('GET', path, null, true, true);\n return new AttachmentResponse(r);\n }\n\n async postCipherAttachment(id: string, request: AttachmentRequest): Promise {\n const r = await this.send('POST', '/ciphers/' + id + '/attachment/v2', request, true, true);\n return new AttachmentUploadDataResponse(r);\n }\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n async postCipherAttachmentLegacy(id: string, data: FormData): Promise {\n const r = await this.send('POST', '/ciphers/' + id + '/attachment', data, true, true);\n return new CipherResponse(r);\n }\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n async postCipherAttachmentAdminLegacy(id: string, data: FormData): Promise {\n const r = await this.send('POST', '/ciphers/' + id + '/attachment-admin', data, true, true);\n return new CipherResponse(r);\n }\n\n deleteCipherAttachment(id: string, attachmentId: string): Promise {\n return this.send('DELETE', '/ciphers/' + id + '/attachment/' + attachmentId, null, true, false);\n }\n\n deleteCipherAttachmentAdmin(id: string, attachmentId: string): Promise {\n return this.send('DELETE', '/ciphers/' + id + '/attachment/' + attachmentId + '/admin', null, true, false);\n }\n\n postShareCipherAttachment(id: string, attachmentId: string, data: FormData,\n organizationId: string): Promise {\n return this.send('POST', '/ciphers/' + id + '/attachment/' +\n attachmentId + '/share?organizationId=' + organizationId, data, true, false);\n }\n\n async renewAttachmentUploadUrl(id: string, attachmentId: string): Promise {\n const r = await this.send('GET', '/ciphers/' + id + '/attachment/' + attachmentId + '/renew', null, true, true);\n return new AttachmentUploadDataResponse(r);\n }\n\n postAttachmentFile(id: string, attachmentId: string, data: FormData): Promise {\n return this.send('POST', '/ciphers/' + id + '/attachment/' + attachmentId, data, true, false);\n }\n\n // Collections APIs\n\n async getCollectionDetails(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/collections/' + id + '/details',\n null, true, true);\n return new CollectionGroupDetailsResponse(r);\n }\n\n async getUserCollections(): Promise> {\n const r = await this.send('GET', '/collections', null, true, true);\n return new ListResponse(r, CollectionResponse);\n }\n\n async getCollections(organizationId: string): Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/collections', null, true, true);\n return new ListResponse(r, CollectionResponse);\n }\n\n async getCollectionUsers(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/collections/' + id + '/users',\n null, true, true);\n return r.map((dr: any) => new SelectionReadOnlyResponse(dr));\n }\n\n async postCollection(organizationId: string, request: CollectionRequest): Promise {\n const r = await this.send('POST', '/organizations/' + organizationId + '/collections', request, true, true);\n return new CollectionResponse(r);\n }\n\n async putCollection(organizationId: string, id: string, request: CollectionRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + organizationId + '/collections/' + id,\n request, true, true);\n return new CollectionResponse(r);\n }\n\n async putCollectionUsers(organizationId: string, id: string, request: SelectionReadOnlyRequest[]): Promise {\n await this.send('PUT', '/organizations/' + organizationId + '/collections/' + id + '/users',\n request, true, false);\n }\n\n deleteCollection(organizationId: string, id: string): Promise {\n return this.send('DELETE', '/organizations/' + organizationId + '/collections/' + id, null, true, false);\n }\n\n deleteCollectionUser(organizationId: string, id: string, organizationUserId: string): Promise {\n return this.send('DELETE',\n '/organizations/' + organizationId + '/collections/' + id + '/user/' + organizationUserId,\n null, true, false);\n }\n\n // Groups APIs\n\n async getGroupDetails(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/groups/' + id + '/details',\n null, true, true);\n return new GroupDetailsResponse(r);\n }\n\n async getGroups(organizationId: string): Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/groups', null, true, true);\n return new ListResponse(r, GroupResponse);\n }\n\n async getGroupUsers(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/groups/' + id + '/users',\n null, true, true);\n return r;\n }\n\n async postGroup(organizationId: string, request: GroupRequest): Promise {\n const r = await this.send('POST', '/organizations/' + organizationId + '/groups', request, true, true);\n return new GroupResponse(r);\n }\n\n async putGroup(organizationId: string, id: string, request: GroupRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + organizationId + '/groups/' + id, request, true, true);\n return new GroupResponse(r);\n }\n\n async putGroupUsers(organizationId: string, id: string, request: string[]): Promise {\n await this.send('PUT', '/organizations/' + organizationId + '/groups/' + id + '/users', request, true, false);\n }\n\n deleteGroup(organizationId: string, id: string): Promise {\n return this.send('DELETE', '/organizations/' + organizationId + '/groups/' + id, null, true, false);\n }\n\n deleteGroupUser(organizationId: string, id: string, organizationUserId: string): Promise {\n return this.send('DELETE',\n '/organizations/' + organizationId + '/groups/' + id + '/user/' + organizationUserId, null, true, false);\n }\n\n // Policy APIs\n\n async getPolicy(organizationId: string, type: PolicyType): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/policies/' + type, null, true, true);\n return new PolicyResponse(r);\n }\n\n async getPolicies(organizationId: string): Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/policies', null, true, true);\n return new ListResponse(r, PolicyResponse);\n }\n\n async getPoliciesByToken(organizationId: string, token: string, email: string, organizationUserId: string):\n Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/policies/token?' +\n 'token=' + encodeURIComponent(token) + '&email=' + encodeURIComponent(email) +\n '&organizationUserId=' + organizationUserId, null, false, true);\n return new ListResponse(r, PolicyResponse);\n }\n\n async getPoliciesByInvitedUser(\n organizationId: string,\n userId: string\n ): Promise> {\n const r = await this.send(\n \"GET\",\n \"/organizations/\" + organizationId + \"/policies/invited-user?\" + \"userId=\" + userId,\n null,\n false,\n true\n );\n return new ListResponse(r, PolicyResponse);\n }\n\n async putPolicy(organizationId: string, type: PolicyType, request: PolicyRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + organizationId + '/policies/' + type, request, true, true);\n return new PolicyResponse(r);\n }\n\n // Organization User APIs\n\n async getOrganizationUser(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/users/' + id, null, true, true);\n return new OrganizationUserDetailsResponse(r);\n }\n\n async getOrganizationUserGroups(organizationId: string, id: string): Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/users/' + id + '/groups',\n null, true, true);\n return r;\n }\n\n async getOrganizationUsers(organizationId: string): Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/users', null, true, true);\n return new ListResponse(r, OrganizationUserUserDetailsResponse);\n }\n\n async getOrganizationUserResetPasswordDetails(organizationId: string, id: string):\n Promise {\n const r = await this.send('GET', '/organizations/' + organizationId + '/users/' + id +\n '/reset-password-details', null, true, true);\n return new OrganizationUserResetPasswordDetailsReponse(r);\n }\n\n async getOrganizationAutoEnrollStatus(identifier: string): Promise {\n const r = await this.send('GET', '/organizations/' + identifier + '/auto-enroll-status', null, true, true);\n return new OrganizationAutoEnrollStatusResponse(r);\n }\n\n postOrganizationUserInvite(organizationId: string, request: OrganizationUserInviteRequest): Promise {\n return this.send('POST', '/organizations/' + organizationId + '/users/invite', request, true, false);\n }\n\n postOrganizationUserReinvite(organizationId: string, id: string): Promise {\n return this.send('POST', '/organizations/' + organizationId + '/users/' + id + '/reinvite', null, true, false);\n }\n\n async postManyOrganizationUserReinvite(organizationId: string, request: OrganizationUserBulkRequest): Promise> {\n const r = await this.send('POST', '/organizations/' + organizationId + '/users/reinvite', request, true, true);\n return new ListResponse(r, OrganizationUserBulkResponse);\n }\n\n postOrganizationUserAccept(organizationId: string, id: string,\n request: OrganizationUserAcceptRequest): Promise {\n return this.send('POST', '/organizations/' + organizationId + '/users/' + id + '/accept', request, true, false);\n }\n\n postOrganizationUserConfirm(organizationId: string, id: string,\n request: OrganizationUserConfirmRequest): Promise {\n return this.send('POST', '/organizations/' + organizationId + '/users/' + id + '/confirm',\n request, true, false);\n }\n\n async postOrganizationUsersPublicKey(organizationId: string, request: OrganizationUserBulkRequest): Promise> {\n const r = await this.send('POST', '/organizations/' + organizationId + '/users/public-keys', request, true, true);\n return new ListResponse(r, OrganizationUserBulkPublicKeyResponse);\n }\n\n async postOrganizationUserBulkConfirm(organizationId: string, request: OrganizationUserBulkConfirmRequest): Promise> {\n const r = await this.send('POST', '/organizations/' + organizationId + '/users/confirm', request, true, true);\n return new ListResponse(r, OrganizationUserBulkResponse);\n }\n\n putOrganizationUser(organizationId: string, id: string, request: OrganizationUserUpdateRequest): Promise {\n return this.send('PUT', '/organizations/' + organizationId + '/users/' + id, request, true, false);\n }\n\n putOrganizationUserGroups(organizationId: string, id: string,\n request: OrganizationUserUpdateGroupsRequest): Promise {\n return this.send('PUT', '/organizations/' + organizationId + '/users/' + id + '/groups', request, true, false);\n }\n\n putOrganizationUserResetPasswordEnrollment(organizationId: string, userId: string,\n request: OrganizationUserResetPasswordEnrollmentRequest): Promise {\n return this.send('PUT', '/organizations/' + organizationId + '/users/' + userId + '/reset-password-enrollment',\n request, true, false);\n }\n\n putOrganizationUserResetPassword(organizationId: string, id: string,\n request: OrganizationUserResetPasswordRequest): Promise {\n return this.send('PUT', '/organizations/' + organizationId + '/users/' + id + '/reset-password',\n request, true, false);\n }\n\n deleteOrganizationUser(organizationId: string, id: string): Promise {\n return this.send('DELETE', '/organizations/' + organizationId + '/users/' + id, null, true, false);\n }\n\n async deleteManyOrganizationUsers(organizationId: string, request: OrganizationUserBulkRequest): Promise> {\n const r = await this.send('DELETE', '/organizations/' + organizationId + '/users', request, true, true);\n return new ListResponse(r, OrganizationUserBulkResponse);\n }\n\n // Plan APIs\n\n async getPlans(): Promise> {\n const r = await this.send('GET', '/plans/', null, true, true);\n return new ListResponse(r, PlanResponse);\n }\n\n async postImportDirectory(organizationId: string, request: ImportDirectoryRequest): Promise {\n return this.send('POST', '/organizations/' + organizationId + '/import', request, true, false);\n }\n\n async postPublicImportDirectory(request: OrganizationImportRequest): Promise {\n return this.send('POST', '/public/organization/import', request, true, false);\n }\n\n async getTaxRates(): Promise> {\n const r = await this.send('GET', '/plans/sales-tax-rates/', null, true, true);\n return new ListResponse(r, TaxRateResponse);\n }\n\n // Settings APIs\n\n async getSettingsDomains(): Promise {\n const r = await this.send('GET', '/settings/domains', null, true, true);\n return new DomainsResponse(r);\n }\n\n async putSettingsDomains(request: UpdateDomainsRequest): Promise {\n const r = await this.send('PUT', '/settings/domains', request, true, true);\n return new DomainsResponse(r);\n }\n\n // Sync APIs\n\n async getSync(): Promise {\n const path = this.isDesktopClient || this.isWebClient ? '/sync?excludeDomains=true' : '/sync';\n const r = await this.send('GET', path, null, true, true);\n return new SyncResponse(r);\n }\n\n // Two-factor APIs\n\n async getTwoFactorProviders(): Promise> {\n const r = await this.send('GET', '/two-factor', null, true, true);\n return new ListResponse(r, TwoFactorProviderResponse);\n }\n\n async getTwoFactorOrganizationProviders(organizationId: string): Promise> {\n const r = await this.send('GET', '/organizations/' + organizationId + '/two-factor', null, true, true);\n return new ListResponse(r, TwoFactorProviderResponse);\n }\n\n async getTwoFactorAuthenticator(request: SecretVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-authenticator', request, true, true);\n return new TwoFactorAuthenticatorResponse(r);\n }\n\n async getTwoFactorEmail(request: SecretVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-email', request, true, true);\n return new TwoFactorEmailResponse(r);\n }\n\n async getTwoFactorDuo(request: SecretVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-duo', request, true, true);\n return new TwoFactorDuoResponse(r);\n }\n\n async getTwoFactorOrganizationDuo(organizationId: string,\n request: SecretVerificationRequest): Promise {\n const r = await this.send('POST', '/organizations/' + organizationId + '/two-factor/get-duo',\n request, true, true);\n return new TwoFactorDuoResponse(r);\n }\n\n async getTwoFactorYubiKey(request: SecretVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-yubikey', request, true, true);\n return new TwoFactorYubiKeyResponse(r);\n }\n\n async getTwoFactorWebAuthn(request: SecretVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-webauthn', request, true, true);\n return new TwoFactorWebAuthnResponse(r);\n }\n\n async getTwoFactorWebAuthnChallenge(request: SecretVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-webauthn-challenge', request, true, true);\n return new ChallengeResponse(r);\n }\n\n async getTwoFactorRecover(request: SecretVerificationRequest): Promise {\n const r = await this.send('POST', '/two-factor/get-recover', request, true, true);\n return new TwoFactorRecoverResponse(r);\n }\n\n async putTwoFactorAuthenticator(\n request: UpdateTwoFactorAuthenticatorRequest): Promise {\n const r = await this.send('PUT', '/two-factor/authenticator', request, true, true);\n return new TwoFactorAuthenticatorResponse(r);\n }\n\n async putTwoFactorEmail(request: UpdateTwoFactorEmailRequest): Promise {\n const r = await this.send('PUT', '/two-factor/email', request, true, true);\n return new TwoFactorEmailResponse(r);\n }\n\n async putTwoFactorDuo(request: UpdateTwoFactorDuoRequest): Promise {\n const r = await this.send('PUT', '/two-factor/duo', request, true, true);\n return new TwoFactorDuoResponse(r);\n }\n\n async putTwoFactorOrganizationDuo(organizationId: string,\n request: UpdateTwoFactorDuoRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + organizationId + '/two-factor/duo', request, true, true);\n return new TwoFactorDuoResponse(r);\n }\n\n async putTwoFactorYubiKey(request: UpdateTwoFactorYubioOtpRequest): Promise {\n const r = await this.send('PUT', '/two-factor/yubikey', request, true, true);\n return new TwoFactorYubiKeyResponse(r);\n }\n\n async putTwoFactorWebAuthn(request: UpdateTwoFactorWebAuthnRequest): Promise {\n const response = request.deviceResponse.response as AuthenticatorAttestationResponse;\n const data: any = Object.assign({}, request);\n\n data.deviceResponse = {\n id: request.deviceResponse.id,\n rawId: btoa(request.deviceResponse.id),\n type: request.deviceResponse.type,\n extensions: request.deviceResponse.getClientExtensionResults(),\n response: {\n AttestationObject: Utils.fromBufferToB64(response.attestationObject),\n clientDataJson: Utils.fromBufferToB64(response.clientDataJSON),\n },\n };\n\n const r = await this.send('PUT', '/two-factor/webauthn', data, true, true);\n return new TwoFactorWebAuthnResponse(r);\n }\n\n async deleteTwoFactorWebAuthn(request: UpdateTwoFactorWebAuthnDeleteRequest): Promise {\n const r = await this.send('DELETE', '/two-factor/webauthn', request, true, true);\n return new TwoFactorWebAuthnResponse(r);\n }\n\n async putTwoFactorDisable(request: TwoFactorProviderRequest): Promise {\n const r = await this.send('PUT', '/two-factor/disable', request, true, true);\n return new TwoFactorProviderResponse(r);\n }\n\n async putTwoFactorOrganizationDisable(organizationId: string,\n request: TwoFactorProviderRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + organizationId + '/two-factor/disable',\n request, true, true);\n return new TwoFactorProviderResponse(r);\n }\n\n postTwoFactorRecover(request: TwoFactorRecoveryRequest): Promise {\n return this.send('POST', '/two-factor/recover', request, false, false);\n }\n\n postTwoFactorEmailSetup(request: TwoFactorEmailRequest): Promise {\n return this.send('POST', '/two-factor/send-email', request, true, false);\n }\n\n postTwoFactorEmail(request: TwoFactorEmailRequest): Promise {\n return this.send('POST', '/two-factor/send-email-login', request, false, false);\n }\n\n // Emergency Access APIs\n\n async getEmergencyAccessTrusted(): Promise> {\n const r = await this.send('GET', '/emergency-access/trusted', null, true, true);\n return new ListResponse(r, EmergencyAccessGranteeDetailsResponse);\n }\n\n async getEmergencyAccessGranted(): Promise> {\n const r = await this.send('GET', '/emergency-access/granted', null, true, true);\n return new ListResponse(r, EmergencyAccessGrantorDetailsResponse);\n }\n\n async getEmergencyAccess(id: string): Promise {\n const r = await this.send('GET', '/emergency-access/' + id, null, true, true);\n return new EmergencyAccessGranteeDetailsResponse(r);\n }\n\n async getEmergencyGrantorPolicies(id: string): Promise> {\n const r = await this.send('GET', '/emergency-access/' + id + '/policies', null, true, true);\n return new ListResponse(r, PolicyResponse);\n }\n\n putEmergencyAccess(id: string, request: EmergencyAccessUpdateRequest): Promise {\n return this.send('PUT', '/emergency-access/' + id, request, true, false);\n }\n\n deleteEmergencyAccess(id: string): Promise {\n return this.send('DELETE', '/emergency-access/' + id, null, true, false);\n }\n\n postEmergencyAccessInvite(request: EmergencyAccessInviteRequest): Promise {\n return this.send('POST', '/emergency-access/invite', request, true, false);\n }\n\n postEmergencyAccessReinvite(id: string): Promise {\n return this.send('POST', '/emergency-access/' + id + '/reinvite', null, true, false);\n }\n\n postEmergencyAccessAccept(id: string, request: EmergencyAccessAcceptRequest): Promise {\n return this.send('POST', '/emergency-access/' + id + '/accept', request, true, false);\n }\n\n postEmergencyAccessConfirm(id: string, request: EmergencyAccessConfirmRequest): Promise {\n return this.send('POST', '/emergency-access/' + id + '/confirm', request, true, false);\n }\n\n postEmergencyAccessInitiate(id: string): Promise {\n return this.send('POST', '/emergency-access/' + id + '/initiate', null, true, false);\n }\n\n postEmergencyAccessApprove(id: string): Promise {\n return this.send('POST', '/emergency-access/' + id + '/approve', null, true, false);\n }\n\n postEmergencyAccessReject(id: string): Promise {\n return this.send('POST', '/emergency-access/' + id + '/reject', null, true, false);\n }\n\n async postEmergencyAccessTakeover(id: string): Promise {\n const r = await this.send('POST', '/emergency-access/' + id + '/takeover', null, true, true);\n return new EmergencyAccessTakeoverResponse(r);\n }\n\n async postEmergencyAccessPassword(id: string, request: EmergencyAccessPasswordRequest): Promise {\n const r = await this.send('POST', '/emergency-access/' + id + '/password', request, true, true);\n }\n\n async postEmergencyAccessView(id: string): Promise {\n const r = await this.send('POST', '/emergency-access/' + id + '/view', null, true, true);\n return new EmergencyAccessViewResponse(r);\n }\n\n // Organization APIs\n\n async getOrganization(id: string): Promise {\n const r = await this.send('GET', '/organizations/' + id, null, true, true);\n return new OrganizationResponse(r);\n }\n\n async getOrganizationBilling(id: string): Promise {\n const r = await this.send('GET', '/organizations/' + id + '/billing', null, true, true);\n return new BillingResponse(r);\n }\n\n async getOrganizationSubscription(id: string): Promise {\n const r = await this.send('GET', '/organizations/' + id + '/subscription', null, true, true);\n return new OrganizationSubscriptionResponse(r);\n }\n\n async getOrganizationLicense(id: string, installationId: string): Promise {\n return this.send('GET', '/organizations/' + id + '/license?installationId=' + installationId,\n null, true, true);\n }\n\n async getOrganizationTaxInfo(id: string): Promise {\n const r = await this.send('GET', '/organizations/' + id + '/tax', null, true, true);\n return new TaxInfoResponse(r);\n }\n\n async getOrganizationSso(id: string): Promise {\n const r = await this.send('GET', '/organizations/' + id + '/sso', null, true, true);\n return new OrganizationSsoResponse(r);\n }\n\n async postOrganization(request: OrganizationCreateRequest): Promise {\n const r = await this.send('POST', '/organizations', request, true, true);\n return new OrganizationResponse(r);\n }\n\n async putOrganization(id: string, request: OrganizationUpdateRequest): Promise {\n const r = await this.send('PUT', '/organizations/' + id, request, true, true);\n return new OrganizationResponse(r);\n }\n\n async putOrganizationTaxInfo(id: string, request: OrganizationTaxInfoUpdateRequest): Promise {\n return this.send('PUT', '/organizations/' + id + '/tax', request, true, false);\n }\n\n postLeaveOrganization(id: string): Promise {\n return this.send('POST', '/organizations/' + id + '/leave', null, true, false);\n }\n\n async postOrganizationLicense(data: FormData): Promise {\n const r = await this.send('POST', '/organizations/license', data, true, true);\n return new OrganizationResponse(r);\n }\n\n async postOrganizationLicenseUpdate(id: string, data: FormData): Promise {\n return this.send('POST', '/organizations/' + id + '/license', data, true, false);\n }\n\n async postOrganizationApiKey(id: string, request: SecretVerificationRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/api-key', request, true, true);\n return new ApiKeyResponse(r);\n }\n\n async postOrganizationRotateApiKey(id: string, request: SecretVerificationRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/rotate-api-key', request, true, true);\n return new ApiKeyResponse(r);\n }\n\n async postOrganizationSso(id: string, request: OrganizationSsoRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/sso', request, true, true);\n return new OrganizationSsoResponse(r);\n }\n\n async postOrganizationUpgrade(id: string, request: OrganizationUpgradeRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/upgrade', request, true, true);\n return new PaymentResponse(r);\n }\n\n async postOrganizationUpdateSubscription(id: string, request: OrganizationSubscriptionUpdateRequest): Promise {\n return this.send('POST', '/organizations/' + id + '/subscription', request, true, false);\n }\n\n async postOrganizationSeat(id: string, request: SeatRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/seat', request, true, true);\n return new PaymentResponse(r);\n }\n\n async postOrganizationStorage(id: string, request: StorageRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/storage', request, true, true);\n return new PaymentResponse(r);\n }\n\n postOrganizationPayment(id: string, request: PaymentRequest): Promise {\n return this.send('POST', '/organizations/' + id + '/payment', request, true, false);\n }\n\n postOrganizationVerifyBank(id: string, request: VerifyBankRequest): Promise {\n return this.send('POST', '/organizations/' + id + '/verify-bank', request, true, false);\n }\n\n postOrganizationCancel(id: string): Promise {\n return this.send('POST', '/organizations/' + id + '/cancel', null, true, false);\n }\n\n postOrganizationReinstate(id: string): Promise {\n return this.send('POST', '/organizations/' + id + '/reinstate', null, true, false);\n }\n\n deleteOrganization(id: string, request: SecretVerificationRequest): Promise {\n return this.send('DELETE', '/organizations/' + id, request, true, false);\n }\n\n async getOrganizationKeys(id: string): Promise {\n const r = await this.send('GET', '/organizations/' + id + '/keys', null, true, true);\n return new OrganizationKeysResponse(r);\n }\n\n async postOrganizationKeys(id: string, request: OrganizationKeysRequest): Promise {\n const r = await this.send('POST', '/organizations/' + id + '/keys', request, true, true);\n return new OrganizationKeysResponse(r);\n }\n\n // Provider APIs\n\n async postProviderSetup(id: string, request: ProviderSetupRequest) {\n const r = await this.send('POST', '/providers/' + id + '/setup', request, true, true);\n return new ProviderResponse(r);\n }\n\n async getProvider(id: string) {\n const r = await this.send('GET', '/providers/' + id, null, true, true);\n return new ProviderResponse(r);\n }\n\n async putProvider(id: string, request: ProviderUpdateRequest) {\n const r = await this.send('PUT', '/providers/' + id, request, true, true);\n return new ProviderResponse(r);\n }\n\n // Provider User APIs\n\n async getProviderUsers(providerId: string): Promise> {\n const r = await this.send('GET', '/providers/' + providerId + '/users', null, true, true);\n return new ListResponse(r, ProviderUserUserDetailsResponse);\n }\n\n async getProviderUser(providerId: string, id: string): Promise {\n const r = await this.send('GET', '/providers/' + providerId + '/users/' + id, null, true, true);\n return new ProviderUserResponse(r);\n }\n\n postProviderUserInvite(providerId: string, request: ProviderUserInviteRequest): Promise {\n return this.send('POST', '/providers/' + providerId + '/users/invite', request, true, false);\n }\n\n postProviderUserReinvite(providerId: string, id: string): Promise {\n return this.send('POST', '/providers/' + providerId + '/users/' + id + '/reinvite', null, true, false);\n }\n\n async postManyProviderUserReinvite(providerId: string, request: ProviderUserBulkRequest): Promise> {\n const r = await this.send('POST', '/providers/' + providerId + '/users/reinvite', request, true, true);\n return new ListResponse(r, ProviderUserBulkResponse);\n }\n\n async postProviderUserBulkConfirm(providerId: string, request: ProviderUserBulkConfirmRequest): Promise> {\n const r = await this.send('POST', '/providers/' + providerId + '/users/confirm', request, true, true);\n return new ListResponse(r, ProviderUserBulkResponse);\n }\n\n async deleteManyProviderUsers(providerId: string, request: ProviderUserBulkRequest): Promise> {\n const r = await this.send('DELETE', '/providers/' + providerId + '/users', request, true, true);\n return new ListResponse(r, ProviderUserBulkResponse);\n }\n\n postProviderUserAccept(providerId: string, id: string, request: ProviderUserAcceptRequest): Promise {\n return this.send('POST', '/providers/' + providerId + '/users/' + id + '/accept', request, true, false);\n }\n\n postProviderUserConfirm(providerId: string, id: string, request: ProviderUserConfirmRequest): Promise {\n return this.send('POST', '/providers/' + providerId + '/users/' + id + '/confirm',\n request, true, false);\n }\n\n async postProviderUsersPublicKey(providerId: string, request: ProviderUserBulkRequest): Promise> {\n const r = await this.send('POST', '/providers/' + providerId + '/users/public-keys', request, true, true);\n return new ListResponse(r, ProviderUserBulkPublicKeyResponse);\n }\n\n\n putProviderUser(providerId: string, id: string, request: ProviderUserUpdateRequest): Promise {\n return this.send('PUT', '/providers/' + providerId + '/users/' + id, request, true, false);\n }\n\n deleteProviderUser(providerId: string, id: string): Promise {\n return this.send('DELETE', '/providers/' + providerId + '/users/' + id, null, true, false);\n }\n\n // Provider Organization APIs\n\n async getProviderClients(providerId: string): Promise> {\n const r = await this.send('GET', '/providers/' + providerId + '/organizations', null, true, true);\n return new ListResponse(r, ProviderOrganizationOrganizationDetailsResponse);\n }\n\n postProviderAddOrganization(providerId: string, request: ProviderAddOrganizationRequest): Promise {\n return this.send('POST', '/providers/' + providerId + '/organizations/add', request, true, false);\n }\n\n async postProviderCreateOrganization(providerId: string, request: ProviderOrganizationCreateRequest): Promise {\n const r = await this.send('POST', '/providers/' + providerId + '/organizations', request, true, true);\n return new ProviderOrganizationResponse(r);\n }\n\n deleteProviderOrganization(providerId: string, id: string): Promise {\n return this.send('DELETE', '/providers/' + providerId + '/organizations/' + id, null, true, false);\n }\n\n // Event APIs\n\n async getEvents(start: string, end: string, token: string): Promise> {\n const r = await this.send('GET', this.addEventParameters('/events', start, end, token), null, true, true);\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsCipher(id: string, start: string, end: string,\n token: string): Promise> {\n const r = await this.send('GET', this.addEventParameters('/ciphers/' + id + '/events', start, end, token),\n null, true, true);\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsOrganization(id: string, start: string, end: string,\n token: string): Promise> {\n const r = await this.send('GET', this.addEventParameters('/organizations/' + id + '/events', start, end, token),\n null, true, true);\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsOrganizationUser(organizationId: string, id: string,\n start: string, end: string, token: string): Promise> {\n const r = await this.send('GET',\n this.addEventParameters('/organizations/' + organizationId + '/users/' + id + '/events', start, end, token),\n null, true, true);\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsProvider(id: string, start: string, end: string, token: string): Promise> {\n const r = await this.send('GET', this.addEventParameters('/providers/' + id + '/events', start, end, token), null, true, true);\n return new ListResponse(r, EventResponse);\n }\n\n async getEventsProviderUser(providerId: string, id: string,\n start: string, end: string, token: string): Promise> {\n const r = await this.send('GET',\n this.addEventParameters('/providers/' + providerId + '/users/' + id + '/events', start, end, token),\n null, true, true);\n return new ListResponse(r, EventResponse);\n }\n\n async postEventsCollect(request: EventRequest[]): Promise {\n const authHeader = await this.getActiveBearerToken();\n const headers = new Headers({\n 'Device-Type': this.deviceType,\n 'Authorization': 'Bearer ' + authHeader,\n 'Content-Type': 'application/json; charset=utf-8',\n });\n if (this.customUserAgent != null) {\n headers.set('User-Agent', this.customUserAgent);\n }\n const response = await this.fetch(new Request(this.environmentService.getEventsUrl() + '/collect', {\n cache: 'no-store',\n credentials: this.getCredentials(),\n method: 'POST',\n body: JSON.stringify(request),\n headers: headers,\n }));\n if (response.status !== 200) {\n return Promise.reject('Event post failed.');\n }\n }\n\n // User APIs\n\n async getUserPublicKey(id: string): Promise {\n const r = await this.send('GET', '/users/' + id + '/public-key', null, true, true);\n return new UserKeyResponse(r);\n }\n\n // HIBP APIs\n\n async getHibpBreach(username: string): Promise {\n const r = await this.send('GET', '/hibp/breach?username=' + username, null, true, true);\n return r.map((a: any) => new BreachAccountResponse(a));\n }\n\n // Misc\n\n async postBitPayInvoice(request: BitPayInvoiceRequest): Promise {\n const r = await this.send('POST', '/bitpay-invoice', request, true, true);\n return r as string;\n }\n\n async postSetupPayment(): Promise {\n const r = await this.send('POST', '/setup-payment', null, true, true);\n return r as string;\n }\n\n // Key Connector\n\n async getUserKeyFromKeyConnector(keyConnectorUrl: string): Promise {\n const authHeader = await this.getActiveBearerToken();\n\n const response = await this.fetch(new Request(keyConnectorUrl + '/user-keys', {\n cache: 'no-store',\n method: 'GET',\n headers: new Headers({\n 'Accept': 'application/json',\n 'Authorization': 'Bearer ' + authHeader,\n }),\n }));\n\n if (response.status !== 200) {\n const error = await this.handleError(response, false, true);\n return Promise.reject(error);\n }\n\n return new KeyConnectorUserKeyResponse(await response.json());\n }\n\n async postUserKeyToKeyConnector(keyConnectorUrl: string, request: KeyConnectorUserKeyRequest): Promise {\n const authHeader = await this.getActiveBearerToken();\n\n const response = await this.fetch(new Request(keyConnectorUrl + '/user-keys', {\n cache: 'no-store',\n method: 'POST',\n headers: new Headers({\n 'Accept': 'application/json',\n 'Authorization': 'Bearer ' + authHeader,\n 'Content-Type': 'application/json; charset=utf-8',\n }),\n body: JSON.stringify(request),\n }));\n\n if (response.status !== 200) {\n const error = await this.handleError(response, false, true);\n return Promise.reject(error);\n }\n }\n\n async getKeyConnectorAlive(keyConnectorUrl: string) {\n const response = await this.fetch(new Request(keyConnectorUrl + '/alive', {\n cache: 'no-store',\n method: 'GET',\n headers: new Headers({\n 'Accept': 'application/json',\n 'Content-Type': 'application/json; charset=utf-8',\n }),\n }));\n\n if (response.status !== 200) {\n const error = await this.handleError(response, false, true);\n return Promise.reject(error);\n }\n }\n\n // Helpers\n\n async getActiveBearerToken(): Promise {\n let accessToken = await this.tokenService.getToken();\n if (this.tokenService.tokenNeedsRefresh()) {\n await this.doAuthRefresh();\n accessToken = await this.tokenService.getToken();\n }\n return accessToken;\n }\n\n fetch(request: Request): Promise {\n if (request.method === 'GET') {\n request.headers.set('Cache-Control', 'no-store');\n request.headers.set('Pragma', 'no-cache');\n }\n return this.nativeFetch(request);\n }\n\n nativeFetch(request: Request): Promise {\n return fetch(request);\n }\n\n async preValidateSso(identifier: string): Promise {\n if (identifier == null || identifier === '') {\n throw new Error('Organization Identifier was not provided.');\n }\n const headers = new Headers({\n 'Accept': 'application/json',\n 'Device-Type': this.deviceType,\n });\n if (this.customUserAgent != null) {\n headers.set('User-Agent', this.customUserAgent);\n }\n\n const path = `/account/prevalidate?domainHint=${encodeURIComponent(identifier)}`;\n const response = await this.fetch(new Request(this.environmentService.getIdentityUrl() + path, {\n cache: 'no-store',\n credentials: this.getCredentials(),\n headers: headers,\n method: 'GET',\n }));\n\n if (response.status === 200) {\n return true;\n } else {\n const error = await this.handleError(response, false, true);\n return Promise.reject(error);\n }\n }\n\n async postCreateSponsorship(sponsoredOrgId: string, request: OrganizationSponsorshipCreateRequest): Promise {\n return await this.send('POST',\n '/organization/sponsorship/' + sponsoredOrgId + '/families-for-enterprise',\n request, true, false);\n }\n\n async deleteRevokeSponsorship(sponsoringOrganizationId: string): Promise {\n return await this.send('DELETE',\n '/organization/sponsorship/' + sponsoringOrganizationId,\n null, true, false);\n }\n\n async deleteRemoveSponsorship(sponsoringOrgId: string): Promise {\n return await this.send('DELETE',\n '/organization/sponsorship/sponsored/' + sponsoringOrgId,\n null, true, false);\n }\n\n async postPreValidateSponsorshipToken(sponsorshipToken: string): Promise {\n const r = await this.send('POST', '/organization/sponsorship/validate-token?sponsorshipToken=' + encodeURIComponent(sponsorshipToken),\n null, true, true);\n return r as boolean;\n }\n\n async postRedeemSponsorship(sponsorshipToken: string, request: OrganizationSponsorshipRedeemRequest): Promise {\n return await this.send('POST', '/organization/sponsorship/redeem?sponsorshipToken=' + encodeURIComponent(sponsorshipToken),\n request, true, false);\n }\n\n async postResendSponsorshipOffer(sponsoringOrgId: string): Promise {\n return await this.send('POST',\n '/organization/sponsorship/' + sponsoringOrgId + '/families-for-enterprise/resend',\n null, true, false);\n }\n\n\n protected async doAuthRefresh(): Promise {\n const refreshToken = await this.tokenService.getRefreshToken();\n if (refreshToken != null && refreshToken !== '') {\n return this.doRefreshToken();\n }\n\n const clientId = await this.tokenService.getClientId();\n const clientSecret = await this.tokenService.getClientSecret();\n if (!Utils.isNullOrWhitespace(clientId) && !Utils.isNullOrWhitespace(clientSecret)) {\n return this.doApiTokenRefresh();\n }\n\n throw new Error('Cannot refresh token, no refresh token or api keys are stored');\n }\n\n protected async doApiTokenRefresh(): Promise {\n const clientId = await this.tokenService.getClientId();\n const clientSecret = await this.tokenService.getClientSecret();\n if (Utils.isNullOrWhitespace(clientId) || Utils.isNullOrWhitespace(clientSecret) || this.apiKeyRefresh == null) {\n throw new Error();\n }\n\n await this.apiKeyRefresh(clientId, clientSecret);\n }\n\n protected async doRefreshToken(): Promise {\n const refreshToken = await this.tokenService.getRefreshToken();\n if (refreshToken == null || refreshToken === '') {\n throw new Error();\n }\n const headers = new Headers({\n 'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8',\n 'Accept': 'application/json',\n 'Device-Type': this.deviceType,\n });\n if (this.customUserAgent != null) {\n headers.set('User-Agent', this.customUserAgent);\n }\n\n const decodedToken = this.tokenService.decodeToken();\n const response = await this.fetch(new Request(this.environmentService.getIdentityUrl() + '/connect/token', {\n body: this.qsStringify({\n grant_type: 'refresh_token',\n client_id: decodedToken.client_id,\n refresh_token: refreshToken,\n }),\n cache: 'no-store',\n credentials: this.getCredentials(),\n headers: headers,\n method: 'POST',\n }));\n\n if (response.status === 200) {\n const responseJson = await response.json();\n const tokenResponse = new IdentityTokenResponse(responseJson);\n await this.tokenService.setTokens(tokenResponse.accessToken, tokenResponse.refreshToken, null);\n } else {\n const error = await this.handleError(response, true, true);\n return Promise.reject(error);\n }\n }\n\n private async send(method: 'GET' | 'POST' | 'PUT' | 'DELETE', path: string, body: any,\n authed: boolean, hasResponse: boolean, apiUrl?: string,\n alterHeaders?: (headers: Headers) => void): Promise {\n apiUrl = Utils.isNullOrWhitespace(apiUrl) ? this.environmentService.getApiUrl() : apiUrl;\n\n const requestUrl = apiUrl + path;\n // Prevent directory traversal from malicious paths\n if (new URL(requestUrl).href !== requestUrl) {\n return Promise.reject('Invalid request url path.');\n }\n\n const headers = new Headers({\n 'Device-Type': this.deviceType,\n });\n if (this.customUserAgent != null) {\n headers.set('User-Agent', this.customUserAgent);\n }\n\n const requestInit: RequestInit = {\n cache: 'no-store',\n credentials: this.getCredentials(),\n method: method,\n };\n\n if (authed) {\n const authHeader = await this.getActiveBearerToken();\n headers.set('Authorization', 'Bearer ' + authHeader);\n }\n if (body != null) {\n if (typeof body === 'string') {\n requestInit.body = body;\n headers.set('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');\n } else if (typeof body === 'object') {\n if (body instanceof FormData) {\n requestInit.body = body;\n } else {\n headers.set('Content-Type', 'application/json; charset=utf-8');\n requestInit.body = JSON.stringify(body);\n }\n }\n }\n if (hasResponse) {\n headers.set('Accept', 'application/json');\n }\n if (alterHeaders != null) {\n alterHeaders(headers);\n }\n\n requestInit.headers = headers;\n const response = await this.fetch(new Request(requestUrl, requestInit));\n\n if (hasResponse && response.status === 200) {\n const responseJson = await response.json();\n return responseJson;\n } else if (response.status !== 200) {\n const error = await this.handleError(response, false, authed);\n return Promise.reject(error);\n }\n }\n\n private async handleError(response: Response, tokenError: boolean, authed: boolean): Promise {\n if (authed && ((tokenError && response.status === 400) || response.status === 401 || response.status === 403)) {\n await this.logoutCallback(true);\n return null;\n }\n\n let responseJson: any = null;\n if (this.isJsonResponse(response)) {\n responseJson = await response.json();\n } else if (this.isTextResponse(response)) {\n responseJson = { Message: await response.text() };\n }\n\n return new ErrorResponse(responseJson, response.status, tokenError);\n }\n\n private qsStringify(params: any): string {\n return Object.keys(params).map(key => {\n return encodeURIComponent(key) + '=' + encodeURIComponent(params[key]);\n }).join('&');\n }\n\n private getCredentials(): RequestCredentials {\n if (!this.isWebClient || this.environmentService.hasBaseUrl()) {\n return 'include';\n }\n return undefined;\n }\n\n private addEventParameters(base: string, start: string, end: string, token: string) {\n if (start != null) {\n base += ('?start=' + start);\n }\n if (end != null) {\n base += (base.indexOf('?') > -1 ? '&' : '?');\n base += ('end=' + end);\n }\n if (token != null) {\n base += (base.indexOf('?') > -1 ? '&' : '?');\n base += ('continuationToken=' + token);\n }\n return base;\n }\n\n private isJsonResponse(response: Response): boolean {\n const typeHeader = response.headers.get('content-type');\n return typeHeader != null && typeHeader.indexOf('application/json') > -1;\n }\n\n private isTextResponse(response: Response): boolean {\n const typeHeader = response.headers.get('content-type');\n return typeHeader != null && typeHeader.indexOf('text') > -1;\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class ApiKeyResponse extends BaseResponse {\n apiKey: string;\n\n constructor(response: any) {\n super(response);\n this.apiKey = this.getResponseProperty('ApiKey');\n }\n}\n","import { FileUploadType } from '../../enums/fileUploadType';\nimport { BaseResponse } from './baseResponse';\nimport { CipherResponse } from './cipherResponse';\n\nexport class AttachmentUploadDataResponse extends BaseResponse {\n attachmentId: string;\n fileUploadType: FileUploadType;\n cipherResponse: CipherResponse;\n cipherMiniResponse: CipherResponse;\n url: string = null;\n constructor(response: any) {\n super(response);\n this.attachmentId = this.getResponseProperty('AttachmentId');\n this.fileUploadType = this.getResponseProperty('FileUploadType');\n const cipherResponse = this.getResponseProperty('CipherResponse');\n const cipherMiniResponse = this.getResponseProperty('CipherMiniResponse');\n this.cipherResponse = cipherResponse == null ? null : new CipherResponse(cipherResponse);\n this.cipherMiniResponse = cipherMiniResponse == null ? null : new CipherResponse(cipherMiniResponse);\n this.url = this.getResponseProperty('Url');\n }\n\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { PaymentMethodType } from '../../enums/paymentMethodType';\nimport { TransactionType } from '../../enums/transactionType';\n\nexport class BillingResponse extends BaseResponse {\n balance: number;\n paymentSource: BillingSourceResponse;\n invoices: BillingInvoiceResponse[] = [];\n transactions: BillingTransactionResponse[] = [];\n\n constructor(response: any) {\n super(response);\n this.balance = this.getResponseProperty('Balance');\n const paymentSource = this.getResponseProperty('PaymentSource');\n const transactions = this.getResponseProperty('Transactions');\n const invoices = this.getResponseProperty('Invoices');\n this.paymentSource = paymentSource == null ? null : new BillingSourceResponse(paymentSource);\n if (transactions != null) {\n this.transactions = transactions.map((t: any) => new BillingTransactionResponse(t));\n }\n if (invoices != null) {\n this.invoices = invoices.map((i: any) => new BillingInvoiceResponse(i));\n }\n }\n}\n\nexport class BillingSourceResponse extends BaseResponse {\n type: PaymentMethodType;\n cardBrand: string;\n description: string;\n needsVerification: boolean;\n\n constructor(response: any) {\n super(response);\n this.type = this.getResponseProperty('Type');\n this.cardBrand = this.getResponseProperty('CardBrand');\n this.description = this.getResponseProperty('Description');\n this.needsVerification = this.getResponseProperty('NeedsVerification');\n }\n}\n\nexport class BillingInvoiceResponse extends BaseResponse {\n url: string;\n pdfUrl: string;\n number: string;\n paid: boolean;\n date: string;\n amount: number;\n\n constructor(response: any) {\n super(response);\n this.url = this.getResponseProperty('Url');\n this.pdfUrl = this.getResponseProperty('PdfUrl');\n this.number = this.getResponseProperty('Number');\n this.paid = this.getResponseProperty('Paid');\n this.date = this.getResponseProperty('Date');\n this.amount = this.getResponseProperty('Amount');\n }\n}\n\nexport class BillingTransactionResponse extends BaseResponse {\n createdDate: string;\n amount: number;\n refunded: boolean;\n partiallyRefunded: boolean;\n refundedAmount: number;\n type: TransactionType;\n paymentMethodType: PaymentMethodType;\n details: string;\n\n constructor(response: any) {\n super(response);\n this.createdDate = this.getResponseProperty('CreatedDate');\n this.amount = this.getResponseProperty('Amount');\n this.refunded = this.getResponseProperty('Refunded');\n this.partiallyRefunded = this.getResponseProperty('PartiallyRefunded');\n this.refundedAmount = this.getResponseProperty('RefundedAmount');\n this.type = this.getResponseProperty('Type');\n this.paymentMethodType = this.getResponseProperty('PaymentMethodType');\n this.details = this.getResponseProperty('Details');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class BreachAccountResponse extends BaseResponse {\n addedDate: string;\n breachDate: string;\n dataClasses: string[];\n description: string;\n domain: string;\n isActive: boolean;\n isVerified: boolean;\n logoPath: string;\n modifiedDate: string;\n name: string;\n pwnCount: number;\n title: string;\n\n constructor(response: any) {\n super(response);\n this.addedDate = this.getResponseProperty('AddedDate');\n this.breachDate = this.getResponseProperty('BreachDate');\n this.dataClasses = this.getResponseProperty('DataClasses');\n this.description = this.getResponseProperty('Description');\n this.domain = this.getResponseProperty('Domain');\n this.isActive = this.getResponseProperty('IsActive');\n this.isVerified = this.getResponseProperty('IsVerified');\n this.logoPath = this.getResponseProperty('LogoPath');\n this.modifiedDate = this.getResponseProperty('ModifiedDate');\n this.name = this.getResponseProperty('Name');\n this.pwnCount = this.getResponseProperty('PwnCount');\n this.title = this.getResponseProperty('Title');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class GlobalDomainResponse extends BaseResponse {\n type: number;\n domains: string[];\n excluded: boolean;\n\n constructor(response: any) {\n super(response);\n this.type = this.getResponseProperty('Type');\n this.domains = this.getResponseProperty('Domains');\n this.excluded = this.getResponseProperty('Excluded');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { DeviceType } from '../../enums/deviceType';\nimport { EventType } from '../../enums/eventType';\n\nexport class EventResponse extends BaseResponse {\n type: EventType;\n userId: string;\n organizationId: string;\n providerId: string;\n cipherId: string;\n collectionId: string;\n groupId: string;\n policyId: string;\n organizationUserId: string;\n providerUserId: string;\n providerOrganizationId: string;\n actingUserId: string;\n date: string;\n deviceType: DeviceType;\n ipAddress: string;\n\n constructor(response: any) {\n super(response);\n this.type = this.getResponseProperty('Type');\n this.userId = this.getResponseProperty('UserId');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.providerId = this.getResponseProperty('ProviderId');\n this.cipherId = this.getResponseProperty('CipherId');\n this.collectionId = this.getResponseProperty('CollectionId');\n this.groupId = this.getResponseProperty('GroupId');\n this.policyId = this.getResponseProperty('PolicyId');\n this.organizationUserId = this.getResponseProperty('OrganizationUserId');\n this.providerUserId = this.getResponseProperty('ProviderUserId');\n this.providerOrganizationId = this.getResponseProperty('ProviderOrganizationId');\n this.actingUserId = this.getResponseProperty('ActingUserId');\n this.date = this.getResponseProperty('Date');\n this.deviceType = this.getResponseProperty('DeviceType');\n this.ipAddress = this.getResponseProperty('IpAddress');\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { SelectionReadOnlyResponse } from './selectionReadOnlyResponse';\n\nexport class GroupResponse extends BaseResponse {\n id: string;\n organizationId: string;\n name: string;\n accessAll: boolean;\n externalId: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.name = this.getResponseProperty('Name');\n this.accessAll = this.getResponseProperty('AccessAll');\n this.externalId = this.getResponseProperty('ExternalId');\n }\n}\n\nexport class GroupDetailsResponse extends GroupResponse {\n collections: SelectionReadOnlyResponse[] = [];\n\n constructor(response: any) {\n super(response);\n const collections = this.getResponseProperty('Collections');\n if (collections != null) {\n this.collections = collections.map((c: any) => new SelectionReadOnlyResponse(c));\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class IdentityCaptchaResponse extends BaseResponse {\n siteKey: string;\n\n constructor(response: any) {\n super(response);\n this.siteKey = this.getResponseProperty('HCaptcha_SiteKey');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { KdfType } from '../../enums/kdfType';\n\nexport class IdentityTokenResponse extends BaseResponse {\n accessToken: string;\n expiresIn: number;\n refreshToken: string;\n tokenType: string;\n\n resetMasterPassword: boolean;\n privateKey: string;\n key: string;\n twoFactorToken: string;\n kdf: KdfType;\n kdfIterations: number;\n forcePasswordReset: boolean;\n apiUseKeyConnector: boolean;\n keyConnectorUrl: string;\n\n constructor(response: any) {\n super(response);\n this.accessToken = response.access_token;\n this.expiresIn = response.expires_in;\n this.refreshToken = response.refresh_token;\n this.tokenType = response.token_type;\n\n this.resetMasterPassword = this.getResponseProperty('ResetMasterPassword');\n this.privateKey = this.getResponseProperty('PrivateKey');\n this.key = this.getResponseProperty('Key');\n this.twoFactorToken = this.getResponseProperty('TwoFactorToken');\n this.kdf = this.getResponseProperty('Kdf');\n this.kdfIterations = this.getResponseProperty('KdfIterations');\n this.forcePasswordReset = this.getResponseProperty('ForcePasswordReset');\n this.apiUseKeyConnector = this.getResponseProperty('ApiUseKeyConnector');\n this.keyConnectorUrl = this.getResponseProperty('KeyConnectorUrl');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nexport class IdentityTwoFactorResponse extends BaseResponse {\n twoFactorProviders: TwoFactorProviderType[];\n twoFactorProviders2 = new Map();\n captchaToken: string;\n\n constructor(response: any) {\n super(response);\n this.captchaToken = this.getResponseProperty('CaptchaBypassToken');\n this.twoFactorProviders = this.getResponseProperty('TwoFactorProviders');\n const twoFactorProviders2 = this.getResponseProperty('TwoFactorProviders2');\n if (twoFactorProviders2 != null) {\n for (const prop in twoFactorProviders2) {\n if (twoFactorProviders2.hasOwnProperty(prop)) {\n this.twoFactorProviders2.set(parseInt(prop, null), twoFactorProviders2[prop]);\n }\n }\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class ListResponse extends BaseResponse {\n data: T[];\n continuationToken: string;\n\n constructor(response: any, t: new (dataResponse: any) => T) {\n super(response);\n const data = this.getResponseProperty('Data');\n this.data = data == null ? [] : data.map((dr: any) => new t(dr));\n this.continuationToken = this.getResponseProperty('ContinuationToken');\n }\n}\n","import { SsoConfigApi } from '../../api/ssoConfigApi';\nimport { BaseResponse } from '../baseResponse';\n\nexport class OrganizationSsoResponse extends BaseResponse {\n enabled: boolean;\n data: SsoConfigApi;\n urls: SsoUrls;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n this.data = new SsoConfigApi(this.getResponseProperty('Data'));\n this.urls = new SsoUrls(this.getResponseProperty('Urls'));\n }\n}\n\nclass SsoUrls extends BaseResponse {\n callbackPath: string;\n signedOutCallbackPath: string;\n spEntityId: string;\n spMetadataUrl: string;\n spAcsUrl: string;\n\n constructor(response: any) {\n super(response);\n this.callbackPath = this.getResponseProperty('CallbackPath');\n this.signedOutCallbackPath = this.getResponseProperty('SignedOutCallbackPath');\n this.spEntityId = this.getResponseProperty('SpEntityId');\n this.spMetadataUrl = this.getResponseProperty('SpMetadataUrl');\n this.spAcsUrl = this.getResponseProperty('SpAcsUrl');\n }\n}\n","import { BaseResponse } from '../response/baseResponse';\n\nenum SsoType {\n OpenIdConnect = 1,\n Saml2 = 2,\n}\n\nenum OpenIdConnectRedirectBehavior {\n RedirectGet = 0,\n FormPost = 1,\n}\n\nenum Saml2BindingType {\n HttpRedirect = 1,\n HttpPost = 2,\n Artifact = 4,\n}\n\nenum Saml2NameIdFormat {\n NotConfigured = 0,\n Unspecified = 1,\n EmailAddress = 2,\n X509SubjectName = 3,\n WindowsDomainQualifiedName = 4,\n KerberosPrincipalName = 5,\n EntityIdentifier = 6,\n Persistent = 7,\n Transient = 8,\n}\n\nenum Saml2SigningBehavior {\n IfIdpWantAuthnRequestsSigned = 0,\n Always = 1,\n Never = 3,\n}\n\nexport class SsoConfigApi extends BaseResponse {\n configType: SsoType;\n\n keyConnectorEnabled: boolean;\n keyConnectorUrl: string;\n\n // OpenId\n authority: string;\n clientId: string;\n clientSecret: string;\n metadataAddress: string;\n redirectBehavior: OpenIdConnectRedirectBehavior;\n getClaimsFromUserInfoEndpoint: boolean;\n additionalScopes: string;\n additionalUserIdClaimTypes: string;\n additionalEmailClaimTypes: string;\n additionalNameClaimTypes: string;\n acrValues: string;\n expectedReturnAcrValue: string;\n\n // SAML\n spNameIdFormat: Saml2NameIdFormat;\n spOutboundSigningAlgorithm: string;\n spSigningBehavior: Saml2SigningBehavior;\n spMinIncomingSigningAlgorithm: boolean;\n spWantAssertionsSigned: boolean;\n spValidateCertificates: boolean;\n\n idpEntityId: string;\n idpBindingType: Saml2BindingType;\n idpSingleSignOnServiceUrl: string;\n idpSingleLogoutServiceUrl: string;\n idpArtifactResolutionServiceUrl: string;\n idpX509PublicCert: string;\n idpOutboundSigningAlgorithm: string;\n idpAllowUnsolicitedAuthnResponse: boolean;\n idpDisableOutboundLogoutRequests: boolean;\n idpWantAuthnRequestsSigned: boolean;\n\n constructor(data: any = null) {\n super(data);\n if (data == null) {\n return;\n }\n\n this.configType = this.getResponseProperty('ConfigType');\n\n this.keyConnectorEnabled = this.getResponseProperty('KeyConnectorEnabled');\n this.keyConnectorUrl = this.getResponseProperty('KeyConnectorUrl');\n\n this.authority = this.getResponseProperty('Authority');\n this.clientId = this.getResponseProperty('ClientId');\n this.clientSecret = this.getResponseProperty('ClientSecret');\n this.metadataAddress = this.getResponseProperty('MetadataAddress');\n this.redirectBehavior = this.getResponseProperty('RedirectBehavior');\n this.getClaimsFromUserInfoEndpoint = this.getResponseProperty('GetClaimsFromUserInfoEndpoint');\n this.additionalScopes = this.getResponseProperty('AdditionalScopes');\n this.additionalUserIdClaimTypes = this.getResponseProperty('AdditionalUserIdClaimTypes');\n this.additionalEmailClaimTypes = this.getResponseProperty('AdditionalEmailClaimTypes');\n this.additionalNameClaimTypes = this.getResponseProperty('AdditionalNameClaimTypes');\n this.acrValues = this.getResponseProperty('AcrValues');\n this.expectedReturnAcrValue = this.getResponseProperty('ExpectedReturnAcrValue');\n\n this.spNameIdFormat = this.getResponseProperty('SpNameIdFormat');\n this.spOutboundSigningAlgorithm = this.getResponseProperty('SpOutboundSigningAlgorithm');\n this.spSigningBehavior = this.getResponseProperty('SpSigningBehavior');\n this.spMinIncomingSigningAlgorithm = this.getResponseProperty('SpMinIncomingSigningAlgorithm');\n this.spWantAssertionsSigned = this.getResponseProperty('SpWantAssertionsSigned');\n this.spValidateCertificates = this.getResponseProperty('SpValidateCertificates');\n\n this.idpEntityId = this.getResponseProperty('IdpEntityId');\n this.idpBindingType = this.getResponseProperty('IdpBindingType');\n this.idpSingleSignOnServiceUrl = this.getResponseProperty('IdpSingleSignOnServiceUrl');\n this.idpSingleLogoutServiceUrl = this.getResponseProperty('IdpSingleLogoutServiceUrl');\n this.idpArtifactResolutionServiceUrl = this.getResponseProperty('IdpArtifactResolutionServiceUrl');\n this.idpX509PublicCert = this.getResponseProperty('IdpX509PublicCert');\n this.idpOutboundSigningAlgorithm = this.getResponseProperty('IdpOutboundSigningAlgorithm');\n this.idpAllowUnsolicitedAuthnResponse = this.getResponseProperty('IdpAllowUnsolicitedAuthnResponse');\n this.idpDisableOutboundLogoutRequests = this.getResponseProperty('IdpDisableOutboundLogoutRequests');\n this.idpWantAuthnRequestsSigned = this.getResponseProperty('IdpWantAuthnRequestsSigned');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class OrganizationAutoEnrollStatusResponse extends BaseResponse {\n id: string;\n resetPasswordEnabled: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.resetPasswordEnabled = this.getResponseProperty('ResetPasswordEnabled');\n }\n}\n","import { KeysResponse } from './keysResponse';\n\nexport class OrganizationKeysResponse extends KeysResponse {\n constructor(response: any) {\n super(response);\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class KeysResponse extends BaseResponse {\n privateKey: string;\n publicKey: string;\n\n constructor(response: any) {\n super(response);\n this.privateKey = this.getResponseProperty('PrivateKey');\n this.publicKey = this.getResponseProperty('PublicKey');\n }\n}\n","import { OrganizationResponse } from './organizationResponse';\nimport {\n BillingSubscriptionResponse,\n BillingSubscriptionUpcomingInvoiceResponse,\n} from './subscriptionResponse';\n\nexport class OrganizationSubscriptionResponse extends OrganizationResponse {\n storageName: string;\n storageGb: number;\n subscription: BillingSubscriptionResponse;\n upcomingInvoice: BillingSubscriptionUpcomingInvoiceResponse;\n expiration: string;\n\n constructor(response: any) {\n super(response);\n this.storageName = this.getResponseProperty('StorageName');\n this.storageGb = this.getResponseProperty('StorageGb');\n const subscription = this.getResponseProperty('Subscription');\n this.subscription = subscription == null ? null : new BillingSubscriptionResponse(subscription);\n const upcomingInvoice = this.getResponseProperty('UpcomingInvoice');\n this.upcomingInvoice = upcomingInvoice == null ? null :\n new BillingSubscriptionUpcomingInvoiceResponse(upcomingInvoice);\n this.expiration = this.getResponseProperty('Expiration');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class OrganizationUserBulkResponse extends BaseResponse {\n id: string;\n error: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.error = this.getResponseProperty('Error');\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { SelectionReadOnlyResponse } from './selectionReadOnlyResponse';\n\nimport { PermissionsApi } from '../api/permissionsApi';\n\nimport { KdfType } from '../../enums/kdfType';\nimport { OrganizationUserStatusType } from '../../enums/organizationUserStatusType';\nimport { OrganizationUserType } from '../../enums/organizationUserType';\n\nexport class OrganizationUserResponse extends BaseResponse {\n id: string;\n userId: string;\n type: OrganizationUserType;\n status: OrganizationUserStatusType;\n accessAll: boolean;\n permissions: PermissionsApi;\n resetPasswordEnrolled: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.userId = this.getResponseProperty('UserId');\n this.type = this.getResponseProperty('Type');\n this.status = this.getResponseProperty('Status');\n this.permissions = new PermissionsApi(this.getResponseProperty('Permissions'));\n this.accessAll = this.getResponseProperty('AccessAll');\n this.resetPasswordEnrolled = this.getResponseProperty('ResetPasswordEnrolled');\n }\n}\n\nexport class OrganizationUserUserDetailsResponse extends OrganizationUserResponse {\n name: string;\n email: string;\n twoFactorEnabled: boolean;\n usesKeyConnector: boolean;\n\n constructor(response: any) {\n super(response);\n this.name = this.getResponseProperty('Name');\n this.email = this.getResponseProperty('Email');\n this.twoFactorEnabled = this.getResponseProperty('TwoFactorEnabled');\n this.usesKeyConnector = this.getResponseProperty('UsesKeyConnector') ?? false;\n }\n}\n\nexport class OrganizationUserDetailsResponse extends OrganizationUserResponse {\n collections: SelectionReadOnlyResponse[] = [];\n\n constructor(response: any) {\n super(response);\n const collections = this.getResponseProperty('Collections');\n if (collections != null) {\n this.collections = collections.map((c: any) => new SelectionReadOnlyResponse(c));\n }\n }\n}\n\nexport class OrganizationUserResetPasswordDetailsReponse extends BaseResponse {\n kdf: KdfType;\n kdfIterations: number;\n resetPasswordKey: string;\n encryptedPrivateKey: string;\n\n constructor(response: any) {\n super(response);\n this.kdf = this.getResponseProperty('Kdf');\n this.kdfIterations = this.getResponseProperty('KdfIterations');\n this.resetPasswordKey = this.getResponseProperty('ResetPasswordKey');\n this.encryptedPrivateKey = this.getResponseProperty('EncryptedPrivateKey');\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { ProfileResponse } from './profileResponse';\n\nexport class PaymentResponse extends BaseResponse {\n userProfile: ProfileResponse;\n paymentIntentClientSecret: string;\n success: boolean;\n\n constructor(response: any) {\n super(response);\n const userProfile = this.getResponseProperty('UserProfile');\n if (userProfile != null) {\n this.userProfile = new ProfileResponse(userProfile);\n }\n this.paymentIntentClientSecret = this.getResponseProperty('PaymentIntentClientSecret');\n this.success = this.getResponseProperty('Success');\n }\n}\n","import { ProfileOrganizationResponse } from './profileOrganizationResponse';\n\nexport class ProfileProviderOrganizationResponse extends ProfileOrganizationResponse {\n constructor(response: any) {\n super(response);\n this.keyConnectorEnabled = false;\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { ProviderUserStatusType } from '../../enums/providerUserStatusType';\nimport { ProviderUserType } from '../../enums/providerUserType';\n\nimport { PermissionsApi } from '../api/permissionsApi';\n\nexport class ProfileProviderResponse extends BaseResponse {\n id: string;\n name: string;\n key: string;\n status: ProviderUserStatusType;\n type: ProviderUserType;\n enabled: boolean;\n permissions: PermissionsApi;\n userId: string;\n useEvents: boolean;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.name = this.getResponseProperty('Name');\n this.key = this.getResponseProperty('Key');\n this.status = this.getResponseProperty('Status');\n this.type = this.getResponseProperty('Type');\n this.enabled = this.getResponseProperty('Enabled');\n this.permissions = new PermissionsApi(this.getResponseProperty('permissions'));\n this.userId = this.getResponseProperty('UserId');\n this.useEvents = this.getResponseProperty('UseEvents');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { KdfType } from '../../enums/kdfType';\n\nexport class PreloginResponse extends BaseResponse {\n kdf: KdfType;\n kdfIterations: number;\n\n constructor(response: any) {\n super(response);\n this.kdf = this.getResponseProperty('Kdf');\n this.kdfIterations = this.getResponseProperty('KdfIterations');\n }\n}\n","import { BaseResponse } from '../baseResponse';\n\nexport class ProviderOrganizationResponse extends BaseResponse {\n id: string;\n providerId: string;\n organizationId: string;\n key: string;\n settings: string;\n creationDate: string;\n revisionDate: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.providerId = this.getResponseProperty('ProviderId');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.key = this.getResponseProperty('Key');\n this.settings = this.getResponseProperty('Settings');\n this.creationDate = this.getResponseProperty('CreationDate');\n this.revisionDate = this.getResponseProperty('RevisionDate');\n }\n}\n\nexport class ProviderOrganizationOrganizationDetailsResponse extends ProviderOrganizationResponse {\n organizationName: string;\n\n constructor(response: any) {\n super(response);\n this.organizationName = this.getResponseProperty('OrganizationName');\n }\n}\n","import { BaseResponse } from '../baseResponse';\n\nexport class ProviderResponse extends BaseResponse {\n id: string;\n name: string;\n businessName: string;\n billingEmail: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.name = this.getResponseProperty('Name');\n this.businessName = this.getResponseProperty('BusinessName');\n this.billingEmail = this.getResponseProperty('BillingEmail');\n }\n}\n","import { OrganizationUserBulkPublicKeyResponse } from '../organizationUserBulkPublicKeyResponse';\n\nexport class ProviderUserBulkPublicKeyResponse extends OrganizationUserBulkPublicKeyResponse {\n\n}\n","import { BaseResponse } from '../baseResponse';\n\nexport class ProviderUserBulkResponse extends BaseResponse {\n id: string;\n error: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.error = this.getResponseProperty('Error');\n }\n}\n","import { BaseResponse } from '../baseResponse';\n\nimport { PermissionsApi } from '../../api/permissionsApi';\n\nimport { ProviderUserStatusType } from '../../../enums/providerUserStatusType';\nimport { ProviderUserType } from '../../../enums/providerUserType';\n\nexport class ProviderUserResponse extends BaseResponse {\n id: string;\n userId: string;\n type: ProviderUserType;\n status: ProviderUserStatusType;\n permissions: PermissionsApi;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.userId = this.getResponseProperty('UserId');\n this.type = this.getResponseProperty('Type');\n this.status = this.getResponseProperty('Status');\n this.permissions = new PermissionsApi(this.getResponseProperty('Permissions'));\n }\n}\n\nexport class ProviderUserUserDetailsResponse extends ProviderUserResponse {\n name: string;\n email: string;\n\n constructor(response: any) {\n super(response);\n this.name = this.getResponseProperty('Name');\n this.email = this.getResponseProperty('Email');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { SendType } from '../../enums/sendType';\n\nimport { SendFileApi } from '../api/sendFileApi';\nimport { SendTextApi } from '../api/sendTextApi';\n\nexport class SendAccessResponse extends BaseResponse {\n id: string;\n type: SendType;\n name: string;\n file: SendFileApi;\n text: SendTextApi;\n expirationDate: Date;\n creatorIdentifier: string;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.type = this.getResponseProperty('Type');\n this.name = this.getResponseProperty('Name');\n\n const text = this.getResponseProperty('Text');\n if (text != null) {\n this.text = new SendTextApi(text);\n }\n\n const file = this.getResponseProperty('File');\n if (file != null) {\n this.file = new SendFileApi(file);\n }\n\n this.expirationDate = this.getResponseProperty('ExpirationDate');\n this.creatorIdentifier = this.getResponseProperty('CreatorIdentifier');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class SendFileDownloadDataResponse extends BaseResponse {\n\n id: string = null;\n url: string = null;\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.url = this.getResponseProperty('Url');\n }\n}\n","import { FileUploadType } from '../../enums/fileUploadType';\n\nimport { BaseResponse } from './baseResponse';\nimport { SendResponse } from './sendResponse';\n\nexport class SendFileUploadDataResponse extends BaseResponse {\n\n fileUploadType: FileUploadType;\n sendResponse: SendResponse;\n url: string = null;\n constructor(response: any) {\n super(response);\n this.fileUploadType = this.getResponseProperty('FileUploadType');\n const sendResponse = this.getResponseProperty('SendResponse');\n this.sendResponse = sendResponse == null ? null : new SendResponse(sendResponse);\n this.url = this.getResponseProperty('Url');\n }\n}\n","import { BaseResponse } from './baseResponse';\nimport { CipherResponse } from './cipherResponse';\nimport { CollectionDetailsResponse } from './collectionResponse';\nimport { DomainsResponse } from './domainsResponse';\nimport { FolderResponse } from './folderResponse';\nimport { PolicyResponse } from './policyResponse';\nimport { ProfileResponse } from './profileResponse';\nimport { SendResponse } from './sendResponse';\n\nexport class SyncResponse extends BaseResponse {\n profile?: ProfileResponse;\n folders: FolderResponse[] = [];\n collections: CollectionDetailsResponse[] = [];\n ciphers: CipherResponse[] = [];\n domains?: DomainsResponse;\n policies?: PolicyResponse[] = [];\n sends: SendResponse[] = [];\n\n constructor(response: any) {\n super(response);\n\n const profile = this.getResponseProperty('Profile');\n if (profile != null) {\n this.profile = new ProfileResponse(profile);\n }\n\n const folders = this.getResponseProperty('Folders');\n if (folders != null) {\n this.folders = folders.map((f: any) => new FolderResponse(f));\n }\n\n const collections = this.getResponseProperty('Collections');\n if (collections != null) {\n this.collections = collections.map((c: any) => new CollectionDetailsResponse(c));\n }\n\n const ciphers = this.getResponseProperty('Ciphers');\n if (ciphers != null) {\n this.ciphers = ciphers.map((c: any) => new CipherResponse(c));\n }\n\n const domains = this.getResponseProperty('Domains');\n if (domains != null) {\n this.domains = new DomainsResponse(domains);\n }\n\n const policies = this.getResponseProperty('Policies');\n if (policies != null) {\n this.policies = policies.map((p: any) => new PolicyResponse(p));\n }\n\n const sends = this.getResponseProperty('Sends');\n if (sends != null) {\n this.sends = sends.map((s: any) => new SendResponse(s));\n }\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TaxInfoResponse extends BaseResponse {\n taxId: string;\n taxIdType: string;\n line1: string;\n line2: string;\n city: string;\n state: string;\n country: string;\n postalCode: string;\n\n constructor(response: any) {\n super(response);\n this.taxId = this.getResponseProperty('TaxIdNumber');\n this.taxIdType = this.getResponseProperty('TaxIdType');\n this.line1 = this.getResponseProperty('Line1');\n this.line2 = this.getResponseProperty('Line2');\n this.city = this.getResponseProperty('City');\n this.state = this.getResponseProperty('State');\n this.postalCode = this.getResponseProperty('PostalCode');\n this.country = this.getResponseProperty('Country');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TaxRateResponse extends BaseResponse {\n id: string;\n country: string;\n state: string;\n postalCode: string;\n rate: number;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.country = this.getResponseProperty('Country');\n this.state = this.getResponseProperty('State');\n this.postalCode = this.getResponseProperty('PostalCode');\n this.rate = this.getResponseProperty('Rate');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TwoFactorAuthenticatorResponse extends BaseResponse {\n enabled: boolean;\n key: string;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n this.key = this.getResponseProperty('Key');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TwoFactorDuoResponse extends BaseResponse {\n enabled: boolean;\n host: string;\n secretKey: string;\n integrationKey: string;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n this.host = this.getResponseProperty('Host');\n this.secretKey = this.getResponseProperty('SecretKey');\n this.integrationKey = this.getResponseProperty('IntegrationKey');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TwoFactorEmailResponse extends BaseResponse {\n enabled: boolean;\n email: string;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n this.email = this.getResponseProperty('Email');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { TwoFactorProviderType } from '../../enums/twoFactorProviderType';\n\nexport class TwoFactorProviderResponse extends BaseResponse {\n enabled: boolean;\n type: TwoFactorProviderType;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n this.type = this.getResponseProperty('Type');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TwoFactorRecoverResponse extends BaseResponse {\n code: string;\n\n constructor(response: any) {\n super(response);\n this.code = this.getResponseProperty('Code');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class TwoFactorYubiKeyResponse extends BaseResponse {\n enabled: boolean;\n key1: string;\n key2: string;\n key3: string;\n key4: string;\n key5: string;\n nfc: boolean;\n\n constructor(response: any) {\n super(response);\n this.enabled = this.getResponseProperty('Enabled');\n this.key1 = this.getResponseProperty('Key1');\n this.key2 = this.getResponseProperty('Key2');\n this.key3 = this.getResponseProperty('Key3');\n this.key4 = this.getResponseProperty('Key4');\n this.key5 = this.getResponseProperty('Key5');\n this.nfc = this.getResponseProperty('Nfc');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class UserKeyResponse extends BaseResponse {\n userId: string;\n publicKey: string;\n\n constructor(response: any) {\n super(response);\n this.userId = this.getResponseProperty('UserId');\n this.publicKey = this.getResponseProperty('PublicKey');\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nexport class KeyConnectorUserKeyResponse extends BaseResponse {\n key: string;\n\n constructor(response: any) {\n super(response);\n this.key = this.getResponseProperty('Key');\n }\n}\n","import { Utils } from '../misc/utils';\n\nimport { AppIdService as AppIdServiceAbstraction } from '../abstractions/appId.service';\nimport { StorageService } from '../abstractions/storage.service';\n\nexport class AppIdService implements AppIdServiceAbstraction {\n constructor(private storageService: StorageService) {\n }\n\n getAppId(): Promise {\n return this.makeAndGetAppId('appId');\n }\n\n getAnonymousAppId(): Promise {\n return this.makeAndGetAppId('anonymousAppId');\n }\n\n private async makeAndGetAppId(key: string) {\n const existingId = await this.storageService.get(key);\n if (existingId != null) {\n return existingId;\n }\n\n const guid = Utils.newGuid();\n await this.storageService.save(key, guid);\n return guid;\n }\n}\n","import { ApiService } from '../abstractions/api.service';\nimport { AuditService as AuditServiceAbstraction } from '../abstractions/audit.service';\nimport { CryptoFunctionService } from '../abstractions/cryptoFunction.service';\n\nimport { throttle } from '../misc/throttle';\nimport { Utils } from '../misc/utils';\n\nimport { BreachAccountResponse } from '../models/response/breachAccountResponse';\nimport { ErrorResponse } from '../models/response/errorResponse';\n\nconst PwnedPasswordsApi = 'https://api.pwnedpasswords.com/range/';\n\nexport class AuditService implements AuditServiceAbstraction {\n constructor(private cryptoFunctionService: CryptoFunctionService, private apiService: ApiService) { }\n\n @throttle(100, () => 'passwordLeaked')\n async passwordLeaked(password: string): Promise {\n const hashBytes = await this.cryptoFunctionService.hash(password, 'sha1');\n const hash = Utils.fromBufferToHex(hashBytes).toUpperCase();\n const hashStart = hash.substr(0, 5);\n const hashEnding = hash.substr(5);\n\n const response = await this.apiService.nativeFetch(new Request(PwnedPasswordsApi + hashStart));\n const leakedHashes = await response.text();\n const match = leakedHashes.split(/\\r?\\n/).find(v => {\n return v.split(':')[0] === hashEnding;\n });\n\n return match != null ? parseInt(match.split(':')[1], 10) : 0;\n }\n\n async breachedAccounts(username: string): Promise {\n try {\n return await this.apiService.getHibpBreach(username);\n } catch (e) {\n const error = e as ErrorResponse;\n if (error.statusCode === 404) {\n return [];\n }\n throw new Error();\n }\n }\n}\n","/**\n * Use as a Decorator on async functions, it will limit how many times the function can be\n * in-flight at a time.\n *\n * Calls beyond the limit will be queued, and run when one of the active calls finishes\n */\nexport function throttle(limit: number, throttleKey: (args: any[]) => string) {\n return (target: any, propertyKey: string | symbol,\n descriptor: TypedPropertyDescriptor<(...args: any[]) => Promise>) => {\n const originalMethod: () => Promise = descriptor.value;\n const allThrottles = new Map void)[]>>();\n\n const getThrottles = (obj: any) => {\n let throttles = allThrottles.get(obj);\n if (throttles != null) {\n return throttles;\n }\n throttles = new Map void)[]>();\n allThrottles.set(obj, throttles);\n return throttles;\n };\n\n return {\n value: function(...args: any[]) {\n const throttles = getThrottles(this);\n const argsThrottleKey = throttleKey(args);\n let queue = throttles.get(argsThrottleKey);\n if (queue == null) {\n queue = [];\n throttles.set(argsThrottleKey, queue);\n }\n\n return new Promise((resolve, reject) => {\n const exec = () => {\n const onFinally = () => {\n queue.splice(queue.indexOf(exec), 1);\n if (queue.length >= limit) {\n queue[limit - 1]();\n } else if (queue.length === 0) {\n throttles.delete(argsThrottleKey);\n if (throttles.size === 0) {\n allThrottles.delete(this);\n }\n }\n };\n originalMethod.apply(this, args).then((val: any) => {\n onFinally();\n return val;\n }).catch((err: any) => {\n onFinally();\n throw err;\n }).then(resolve, reject);\n };\n queue.push(exec);\n if (queue.length <= limit) {\n exec();\n }\n });\n },\n };\n };\n}\n","import { CipherType } from '../enums/cipherType';\nimport { FieldType } from '../enums/fieldType';\nimport { UriMatchType } from '../enums/uriMatchType';\n\nimport { CipherData } from '../models/data/cipherData';\n\nimport { Attachment } from '../models/domain/attachment';\nimport { Card } from '../models/domain/card';\nimport { Cipher } from '../models/domain/cipher';\nimport Domain from '../models/domain/domainBase';\nimport { EncArrayBuffer } from '../models/domain/encArrayBuffer';\nimport { EncString } from '../models/domain/encString';\nimport { Field } from '../models/domain/field';\nimport { Identity } from '../models/domain/identity';\nimport { Login } from '../models/domain/login';\nimport { LoginUri } from '../models/domain/loginUri';\nimport { Password } from '../models/domain/password';\nimport { SecureNote } from '../models/domain/secureNote';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { AttachmentRequest } from '../models/request/attachmentRequest';\nimport { CipherBulkDeleteRequest } from '../models/request/cipherBulkDeleteRequest';\nimport { CipherBulkMoveRequest } from '../models/request/cipherBulkMoveRequest';\nimport { CipherBulkRestoreRequest } from '../models/request/cipherBulkRestoreRequest';\nimport { CipherBulkShareRequest } from '../models/request/cipherBulkShareRequest';\nimport { CipherCollectionsRequest } from '../models/request/cipherCollectionsRequest';\nimport { CipherCreateRequest } from '../models/request/cipherCreateRequest';\nimport { CipherRequest } from '../models/request/cipherRequest';\nimport { CipherShareRequest } from '../models/request/cipherShareRequest';\n\nimport { CipherResponse } from '../models/response/cipherResponse';\nimport { ErrorResponse } from '../models/response/errorResponse';\n\nimport { AttachmentView } from '../models/view/attachmentView';\nimport { CipherView } from '../models/view/cipherView';\nimport { FieldView } from '../models/view/fieldView';\nimport { PasswordHistoryView } from '../models/view/passwordHistoryView';\nimport { View } from '../models/view/view';\n\nimport { SortedCiphersCache } from '../models/domain/sortedCiphersCache';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { CipherService as CipherServiceAbstraction } from '../abstractions/cipher.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { FileUploadService } from '../abstractions/fileUpload.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport { SearchService } from '../abstractions/search.service';\nimport { SettingsService } from '../abstractions/settings.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { ConstantsService } from './constants.service';\n\nimport { LogService } from '../abstractions/log.service';\nimport { sequentialize } from '../misc/sequentialize';\nimport { Utils } from '../misc/utils';\n\nconst Keys = {\n ciphersPrefix: 'ciphers_',\n localData: 'sitesLocalData',\n neverDomains: 'neverDomains',\n};\n\nconst DomainMatchBlacklist = new Map>([\n ['google.com', new Set(['script.google.com'])],\n]);\n\nexport class CipherService implements CipherServiceAbstraction {\n // tslint:disable-next-line\n _decryptedCipherCache: CipherView[];\n\n private sortedCiphersCache: SortedCiphersCache = new SortedCiphersCache(this.sortCiphersByLastUsed);\n\n constructor(private cryptoService: CryptoService, private userService: UserService,\n private settingsService: SettingsService, private apiService: ApiService,\n private fileUploadService: FileUploadService, private storageService: StorageService,\n private i18nService: I18nService, private searchService: () => SearchService,\n private logService: LogService) {\n }\n\n get decryptedCipherCache() {\n return this._decryptedCipherCache;\n }\n set decryptedCipherCache(value: CipherView[]) {\n this._decryptedCipherCache = value;\n if (this.searchService != null) {\n if (value == null) {\n this.searchService().clearIndex();\n } else {\n this.searchService().indexCiphers();\n }\n }\n }\n\n clearCache(): void {\n this.decryptedCipherCache = null;\n this.sortedCiphersCache.clear();\n }\n\n async encrypt(model: CipherView, key?: SymmetricCryptoKey, originalCipher: Cipher = null): Promise {\n // Adjust password history\n if (model.id != null) {\n if (originalCipher == null) {\n originalCipher = await this.get(model.id);\n }\n if (originalCipher != null) {\n const existingCipher = await originalCipher.decrypt();\n model.passwordHistory = existingCipher.passwordHistory || [];\n if (model.type === CipherType.Login && existingCipher.type === CipherType.Login) {\n if (existingCipher.login.password != null && existingCipher.login.password !== '' &&\n existingCipher.login.password !== model.login.password) {\n const ph = new PasswordHistoryView();\n ph.password = existingCipher.login.password;\n ph.lastUsedDate = model.login.passwordRevisionDate = new Date();\n model.passwordHistory.splice(0, 0, ph);\n } else {\n model.login.passwordRevisionDate = existingCipher.login.passwordRevisionDate;\n }\n }\n if (existingCipher.hasFields) {\n const existingHiddenFields = existingCipher.fields.filter(f => f.type === FieldType.Hidden &&\n f.name != null && f.name !== '' && f.value != null && f.value !== '');\n const hiddenFields = model.fields == null ? [] :\n model.fields.filter(f => f.type === FieldType.Hidden && f.name != null && f.name !== '');\n existingHiddenFields.forEach(ef => {\n const matchedField = hiddenFields.find(f => f.name === ef.name);\n if (matchedField == null || matchedField.value !== ef.value) {\n const ph = new PasswordHistoryView();\n ph.password = ef.name + ': ' + ef.value;\n ph.lastUsedDate = new Date();\n model.passwordHistory.splice(0, 0, ph);\n }\n });\n }\n }\n if (model.passwordHistory != null && model.passwordHistory.length === 0) {\n model.passwordHistory = null;\n } else if (model.passwordHistory != null && model.passwordHistory.length > 5) {\n // only save last 5 history\n model.passwordHistory = model.passwordHistory.slice(0, 5);\n }\n }\n\n const cipher = new Cipher();\n cipher.id = model.id;\n cipher.folderId = model.folderId;\n cipher.favorite = model.favorite;\n cipher.organizationId = model.organizationId;\n cipher.type = model.type;\n cipher.collectionIds = model.collectionIds;\n cipher.revisionDate = model.revisionDate;\n cipher.reprompt = model.reprompt;\n\n if (key == null && cipher.organizationId != null) {\n key = await this.cryptoService.getOrgKey(cipher.organizationId);\n if (key == null) {\n throw new Error('Cannot encrypt cipher for organization. No key.');\n }\n }\n await Promise.all([\n this.encryptObjProperty(model, cipher, {\n name: null,\n notes: null,\n }, key),\n this.encryptCipherData(cipher, model, key),\n this.encryptFields(model.fields, key).then(fields => {\n cipher.fields = fields;\n }),\n this.encryptPasswordHistories(model.passwordHistory, key).then(ph => {\n cipher.passwordHistory = ph;\n }),\n this.encryptAttachments(model.attachments, key).then(attachments => {\n cipher.attachments = attachments;\n }),\n ]);\n\n return cipher;\n }\n\n async encryptAttachments(attachmentsModel: AttachmentView[], key: SymmetricCryptoKey): Promise {\n if (attachmentsModel == null || attachmentsModel.length === 0) {\n return null;\n }\n\n const promises: Promise[] = [];\n const encAttachments: Attachment[] = [];\n attachmentsModel.forEach(async model => {\n const attachment = new Attachment();\n attachment.id = model.id;\n attachment.size = model.size;\n attachment.sizeName = model.sizeName;\n attachment.url = model.url;\n const promise = this.encryptObjProperty(model, attachment, {\n fileName: null,\n }, key).then(async () => {\n if (model.key != null) {\n attachment.key = await this.cryptoService.encrypt(model.key.key, key);\n }\n encAttachments.push(attachment);\n });\n promises.push(promise);\n });\n\n await Promise.all(promises);\n return encAttachments;\n }\n\n async encryptFields(fieldsModel: FieldView[], key: SymmetricCryptoKey): Promise {\n if (!fieldsModel || !fieldsModel.length) {\n return null;\n }\n\n const self = this;\n const encFields: Field[] = [];\n await fieldsModel.reduce((promise, field) => {\n return promise.then(() => {\n return self.encryptField(field, key);\n }).then((encField: Field) => {\n encFields.push(encField);\n });\n }, Promise.resolve());\n\n return encFields;\n }\n\n async encryptField(fieldModel: FieldView, key: SymmetricCryptoKey): Promise {\n const field = new Field();\n field.type = fieldModel.type;\n field.linkedId = fieldModel.linkedId;\n // normalize boolean type field values\n if (fieldModel.type === FieldType.Boolean && fieldModel.value !== 'true') {\n fieldModel.value = 'false';\n }\n\n await this.encryptObjProperty(fieldModel, field, {\n name: null,\n value: null,\n }, key);\n\n return field;\n }\n\n async encryptPasswordHistories(phModels: PasswordHistoryView[], key: SymmetricCryptoKey): Promise {\n if (!phModels || !phModels.length) {\n return null;\n }\n\n const self = this;\n const encPhs: Password[] = [];\n await phModels.reduce((promise, ph) => {\n return promise.then(() => {\n return self.encryptPasswordHistory(ph, key);\n }).then((encPh: Password) => {\n encPhs.push(encPh);\n });\n }, Promise.resolve());\n\n return encPhs;\n }\n\n async encryptPasswordHistory(phModel: PasswordHistoryView, key: SymmetricCryptoKey): Promise {\n const ph = new Password();\n ph.lastUsedDate = phModel.lastUsedDate;\n\n await this.encryptObjProperty(phModel, ph, {\n password: null,\n }, key);\n\n return ph;\n }\n\n async get(id: string): Promise {\n const userId = await this.userService.getUserId();\n const localData = await this.storageService.get(Keys.localData);\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null || !ciphers.hasOwnProperty(id)) {\n return null;\n }\n\n return new Cipher(ciphers[id], false, localData ? localData[id] : null);\n }\n\n async getAll(): Promise {\n const userId = await this.userService.getUserId();\n const localData = await this.storageService.get(Keys.localData);\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n const response: Cipher[] = [];\n for (const id in ciphers) {\n if (ciphers.hasOwnProperty(id)) {\n response.push(new Cipher(ciphers[id], false, localData ? localData[id] : null));\n }\n }\n return response;\n }\n\n @sequentialize(() => 'getAllDecrypted')\n async getAllDecrypted(): Promise {\n if (this.decryptedCipherCache != null) {\n const userId = await this.userService.getUserId();\n if (this.searchService != null && (this.searchService().indexedEntityId ?? userId) !== userId)\n {\n await this.searchService().indexCiphers(userId, this.decryptedCipherCache);\n }\n return this.decryptedCipherCache;\n }\n\n const decCiphers: CipherView[] = [];\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n throw new Error('No key.');\n }\n\n const promises: any[] = [];\n const ciphers = await this.getAll();\n ciphers.forEach(cipher => {\n promises.push(cipher.decrypt().then(c => decCiphers.push(c)));\n });\n\n await Promise.all(promises);\n decCiphers.sort(this.getLocaleSortingFunction());\n this.decryptedCipherCache = decCiphers;\n return this.decryptedCipherCache;\n }\n\n async getAllDecryptedForGrouping(groupingId: string, folder: boolean = true): Promise {\n const ciphers = await this.getAllDecrypted();\n\n return ciphers.filter(cipher => {\n if (cipher.isDeleted) {\n return false;\n }\n if (folder && cipher.folderId === groupingId) {\n return true;\n } else if (!folder && cipher.collectionIds != null && cipher.collectionIds.indexOf(groupingId) > -1) {\n return true;\n }\n\n return false;\n });\n }\n\n async getAllDecryptedForUrl(url: string, includeOtherTypes?: CipherType[],\n defaultMatch: UriMatchType = null): Promise {\n if (url == null && includeOtherTypes == null) {\n return Promise.resolve([]);\n }\n\n const domain = Utils.getDomain(url);\n const eqDomainsPromise = domain == null ? Promise.resolve([]) :\n this.settingsService.getEquivalentDomains().then((eqDomains: any[][]) => {\n let matches: any[] = [];\n eqDomains.forEach(eqDomain => {\n if (eqDomain.length && eqDomain.indexOf(domain) >= 0) {\n matches = matches.concat(eqDomain);\n }\n });\n\n if (!matches.length) {\n matches.push(domain);\n }\n\n return matches;\n });\n\n const result = await Promise.all([eqDomainsPromise, this.getAllDecrypted()]);\n const matchingDomains = result[0];\n const ciphers = result[1];\n\n if (defaultMatch == null) {\n defaultMatch = await this.storageService.get(ConstantsService.defaultUriMatch);\n if (defaultMatch == null) {\n defaultMatch = UriMatchType.Domain;\n }\n }\n\n return ciphers.filter(cipher => {\n if (cipher.deletedDate != null) {\n return false;\n }\n if (includeOtherTypes != null && includeOtherTypes.indexOf(cipher.type) > -1) {\n return true;\n }\n\n if (url != null && cipher.type === CipherType.Login && cipher.login.uris != null) {\n for (let i = 0; i < cipher.login.uris.length; i++) {\n const u = cipher.login.uris[i];\n if (u.uri == null) {\n continue;\n }\n\n const match = u.match == null ? defaultMatch : u.match;\n switch (match) {\n case UriMatchType.Domain:\n if (domain != null && u.domain != null && matchingDomains.indexOf(u.domain) > -1) {\n if (DomainMatchBlacklist.has(u.domain)) {\n const domainUrlHost = Utils.getHost(url);\n if (!DomainMatchBlacklist.get(u.domain).has(domainUrlHost)) {\n return true;\n }\n } else {\n return true;\n }\n }\n break;\n case UriMatchType.Host:\n const urlHost = Utils.getHost(url);\n if (urlHost != null && urlHost === Utils.getHost(u.uri)) {\n return true;\n }\n break;\n case UriMatchType.Exact:\n if (url === u.uri) {\n return true;\n }\n break;\n case UriMatchType.StartsWith:\n if (url.startsWith(u.uri)) {\n return true;\n }\n break;\n case UriMatchType.RegularExpression:\n try {\n const regex = new RegExp(u.uri, 'i');\n if (regex.test(url)) {\n return true;\n }\n } catch (e) {\n this.logService.error(e);\n }\n break;\n case UriMatchType.Never:\n default:\n break;\n }\n }\n }\n\n return false;\n });\n }\n\n async getAllFromApiForOrganization(organizationId: string): Promise {\n const ciphers = await this.apiService.getCiphersOrganization(organizationId);\n if (ciphers != null && ciphers.data != null && ciphers.data.length) {\n const decCiphers: CipherView[] = [];\n const promises: any[] = [];\n ciphers.data.forEach(r => {\n const data = new CipherData(r);\n const cipher = new Cipher(data);\n promises.push(cipher.decrypt().then(c => decCiphers.push(c)));\n });\n await Promise.all(promises);\n decCiphers.sort(this.getLocaleSortingFunction());\n return decCiphers;\n } else {\n return [];\n }\n }\n\n async getLastUsedForUrl(url: string, autofillOnPageLoad: boolean = false): Promise {\n return this.getCipherForUrl(url, true, false, autofillOnPageLoad);\n }\n\n async getLastLaunchedForUrl(url: string, autofillOnPageLoad: boolean = false): Promise {\n return this.getCipherForUrl(url, false, true, autofillOnPageLoad);\n }\n\n async getNextCipherForUrl(url: string): Promise {\n return this.getCipherForUrl(url, false, false, false);\n }\n\n updateLastUsedIndexForUrl(url: string) {\n this.sortedCiphersCache.updateLastUsedIndex(url);\n }\n\n async updateLastUsedDate(id: string): Promise {\n let ciphersLocalData = await this.storageService.get(Keys.localData);\n if (!ciphersLocalData) {\n ciphersLocalData = {};\n }\n\n if (ciphersLocalData[id]) {\n ciphersLocalData[id].lastUsedDate = new Date().getTime();\n } else {\n ciphersLocalData[id] = {\n lastUsedDate: new Date().getTime(),\n };\n }\n\n await this.storageService.save(Keys.localData, ciphersLocalData);\n\n if (this.decryptedCipherCache == null) {\n return;\n }\n\n for (let i = 0; i < this.decryptedCipherCache.length; i++) {\n const cached = this.decryptedCipherCache[i];\n if (cached.id === id) {\n cached.localData = ciphersLocalData[id];\n break;\n }\n }\n }\n\n async updateLastLaunchedDate(id: string): Promise {\n let ciphersLocalData = await this.storageService.get(Keys.localData);\n if (!ciphersLocalData) {\n ciphersLocalData = {};\n }\n\n if (ciphersLocalData[id]) {\n ciphersLocalData[id].lastLaunched = new Date().getTime();\n } else {\n ciphersLocalData[id] = {\n lastUsedDate: new Date().getTime(),\n };\n }\n\n await this.storageService.save(Keys.localData, ciphersLocalData);\n\n if (this.decryptedCipherCache == null) {\n return;\n }\n\n for (let i = 0; i < this.decryptedCipherCache.length; i++) {\n const cached = this.decryptedCipherCache[i];\n if (cached.id === id) {\n cached.localData = ciphersLocalData[id];\n break;\n }\n }\n }\n\n async saveNeverDomain(domain: string): Promise {\n if (domain == null) {\n return;\n }\n\n let domains = await this.storageService.get<{ [id: string]: any; }>(Keys.neverDomains);\n if (!domains) {\n domains = {};\n }\n domains[domain] = null;\n await this.storageService.save(Keys.neverDomains, domains);\n }\n\n async saveWithServer(cipher: Cipher): Promise {\n let response: CipherResponse;\n if (cipher.id == null) {\n if (cipher.collectionIds != null) {\n const request = new CipherCreateRequest(cipher);\n response = await this.apiService.postCipherCreate(request);\n } else {\n const request = new CipherRequest(cipher);\n response = await this.apiService.postCipher(request);\n }\n cipher.id = response.id;\n } else {\n const request = new CipherRequest(cipher);\n response = await this.apiService.putCipher(cipher.id, request);\n }\n\n const userId = await this.userService.getUserId();\n const data = new CipherData(response, userId, cipher.collectionIds);\n await this.upsert(data);\n }\n\n async shareWithServer(cipher: CipherView, organizationId: string, collectionIds: string[]): Promise {\n const attachmentPromises: Promise[] = [];\n if (cipher.attachments != null) {\n cipher.attachments.forEach(attachment => {\n if (attachment.key == null) {\n attachmentPromises.push(this.shareAttachmentWithServer(attachment, cipher.id, organizationId));\n }\n });\n }\n await Promise.all(attachmentPromises);\n\n cipher.organizationId = organizationId;\n cipher.collectionIds = collectionIds;\n const encCipher = await this.encrypt(cipher);\n const request = new CipherShareRequest(encCipher);\n const response = await this.apiService.putShareCipher(cipher.id, request);\n const userId = await this.userService.getUserId();\n const data = new CipherData(response, userId, collectionIds);\n await this.upsert(data);\n }\n\n async shareManyWithServer(ciphers: CipherView[], organizationId: string, collectionIds: string[]): Promise {\n const promises: Promise[] = [];\n const encCiphers: Cipher[] = [];\n for (const cipher of ciphers) {\n cipher.organizationId = organizationId;\n cipher.collectionIds = collectionIds;\n promises.push(this.encrypt(cipher).then(c => {\n encCiphers.push(c);\n }));\n }\n await Promise.all(promises);\n const request = new CipherBulkShareRequest(encCiphers, collectionIds);\n await this.apiService.putShareCiphers(request);\n const userId = await this.userService.getUserId();\n await this.upsert(encCiphers.map(c => c.toCipherData(userId)));\n }\n\n saveAttachmentWithServer(cipher: Cipher, unencryptedFile: any, admin = false): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsArrayBuffer(unencryptedFile);\n reader.onload = async (evt: any) => {\n try {\n const cData = await this.saveAttachmentRawWithServer(cipher,\n unencryptedFile.name, evt.target.result, admin);\n resolve(cData);\n } catch (e) {\n reject(e);\n }\n };\n reader.onerror = evt => {\n reject('Error reading file.');\n };\n });\n }\n\n async saveAttachmentRawWithServer(cipher: Cipher, filename: string,\n data: ArrayBuffer, admin = false): Promise {\n const key = await this.cryptoService.getOrgKey(cipher.organizationId);\n const encFileName = await this.cryptoService.encrypt(filename, key);\n\n const dataEncKey = await this.cryptoService.makeEncKey(key);\n const encData = await this.cryptoService.encryptToBytes(data, dataEncKey[0]);\n\n const request: AttachmentRequest = {\n key: dataEncKey[1].encryptedString,\n fileName: encFileName.encryptedString,\n fileSize: encData.buffer.byteLength,\n adminRequest: admin,\n };\n\n let response: CipherResponse;\n try {\n const uploadDataResponse = await this.apiService.postCipherAttachment(cipher.id, request);\n response = admin ? uploadDataResponse.cipherMiniResponse : uploadDataResponse.cipherResponse;\n await this.fileUploadService.uploadCipherAttachment(admin, uploadDataResponse, encFileName, encData);\n } catch (e) {\n if (e instanceof ErrorResponse && (e as ErrorResponse).statusCode === 404 || (e as ErrorResponse).statusCode === 405) {\n response = await this.legacyServerAttachmentFileUpload(admin, cipher.id, encFileName, encData, dataEncKey[1]);\n } else if (e instanceof ErrorResponse) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n } else {\n throw e;\n }\n }\n\n const userId = await this.userService.getUserId();\n const cData = new CipherData(response, userId, cipher.collectionIds);\n if (!admin) {\n await this.upsert(cData);\n }\n return new Cipher(cData);\n }\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n async legacyServerAttachmentFileUpload(admin: boolean, cipherId: string, encFileName: EncString,\n encData: EncArrayBuffer, key: EncString) {\n const fd = new FormData();\n try {\n const blob = new Blob([encData.buffer], { type: 'application/octet-stream' });\n fd.append('key', key.encryptedString);\n fd.append('data', blob, encFileName.encryptedString);\n } catch (e) {\n if (Utils.isNode && !Utils.isBrowser) {\n fd.append('key', key.encryptedString);\n fd.append('data', Buffer.from(encData.buffer) as any, {\n filepath: encFileName.encryptedString,\n contentType: 'application/octet-stream',\n } as any);\n } else {\n throw e;\n }\n }\n\n let response: CipherResponse;\n try {\n if (admin) {\n response = await this.apiService.postCipherAttachmentAdminLegacy(cipherId, fd);\n } else {\n response = await this.apiService.postCipherAttachmentLegacy(cipherId, fd);\n }\n } catch (e) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n }\n\n return response;\n }\n\n async saveCollectionsWithServer(cipher: Cipher): Promise {\n const request = new CipherCollectionsRequest(cipher.collectionIds);\n await this.apiService.putCipherCollections(cipher.id, request);\n const userId = await this.userService.getUserId();\n const data = cipher.toCipherData(userId);\n await this.upsert(data);\n }\n\n async upsert(cipher: CipherData | CipherData[]): Promise {\n const userId = await this.userService.getUserId();\n let ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null) {\n ciphers = {};\n }\n\n if (cipher instanceof CipherData) {\n const c = cipher as CipherData;\n ciphers[c.id] = c;\n } else {\n (cipher as CipherData[]).forEach(c => {\n ciphers[c.id] = c;\n });\n }\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async replace(ciphers: { [id: string]: CipherData; }): Promise {\n const userId = await this.userService.getUserId();\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.ciphersPrefix + userId);\n this.clearCache();\n }\n\n async moveManyWithServer(ids: string[], folderId: string): Promise {\n await this.apiService.putMoveCiphers(new CipherBulkMoveRequest(ids, folderId));\n\n const userId = await this.userService.getUserId();\n let ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null) {\n ciphers = {};\n }\n\n ids.forEach(id => {\n if (ciphers.hasOwnProperty(id)) {\n ciphers[id].folderId = folderId;\n }\n });\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async delete(id: string | string[]): Promise {\n const userId = await this.userService.getUserId();\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null) {\n return;\n }\n\n if (typeof id === 'string') {\n if (ciphers[id] == null) {\n return;\n }\n delete ciphers[id];\n } else {\n (id as string[]).forEach(i => {\n delete ciphers[i];\n });\n }\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async deleteWithServer(id: string): Promise {\n await this.apiService.deleteCipher(id);\n await this.delete(id);\n }\n\n async deleteManyWithServer(ids: string[]): Promise {\n await this.apiService.deleteManyCiphers(new CipherBulkDeleteRequest(ids));\n await this.delete(ids);\n }\n\n async deleteAttachment(id: string, attachmentId: string): Promise {\n const userId = await this.userService.getUserId();\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n\n if (ciphers == null || !ciphers.hasOwnProperty(id) || ciphers[id].attachments == null) {\n return;\n }\n\n for (let i = 0; i < ciphers[id].attachments.length; i++) {\n if (ciphers[id].attachments[i].id === attachmentId) {\n ciphers[id].attachments.splice(i, 1);\n }\n }\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async deleteAttachmentWithServer(id: string, attachmentId: string): Promise {\n try {\n await this.apiService.deleteCipherAttachment(id, attachmentId);\n } catch (e) {\n return Promise.reject((e as ErrorResponse).getSingleMessage());\n }\n await this.deleteAttachment(id, attachmentId);\n }\n\n sortCiphersByLastUsed(a: CipherView, b: CipherView): number {\n const aLastUsed = a.localData && a.localData.lastUsedDate ? a.localData.lastUsedDate as number : null;\n const bLastUsed = b.localData && b.localData.lastUsedDate ? b.localData.lastUsedDate as number : null;\n\n const bothNotNull = aLastUsed != null && bLastUsed != null;\n if (bothNotNull && aLastUsed < bLastUsed) {\n return 1;\n }\n if (aLastUsed != null && bLastUsed == null) {\n return -1;\n }\n\n if (bothNotNull && aLastUsed > bLastUsed) {\n return -1;\n }\n if (bLastUsed != null && aLastUsed == null) {\n return 1;\n }\n\n return 0;\n }\n\n sortCiphersByLastUsedThenName(a: CipherView, b: CipherView): number {\n const result = this.sortCiphersByLastUsed(a, b);\n if (result !== 0) {\n return result;\n }\n\n return this.getLocaleSortingFunction()(a, b);\n }\n\n getLocaleSortingFunction(): (a: CipherView, b: CipherView) => number {\n return (a, b) => {\n let aName = a.name;\n let bName = b.name;\n\n if (aName == null && bName != null) {\n return -1;\n }\n if (aName != null && bName == null) {\n return 1;\n }\n if (aName == null && bName == null) {\n return 0;\n }\n\n const result = this.i18nService.collator ? this.i18nService.collator.compare(aName, bName) :\n aName.localeCompare(bName);\n\n if (result !== 0 || a.type !== CipherType.Login || b.type !== CipherType.Login) {\n return result;\n }\n\n if (a.login.username != null) {\n aName += a.login.username;\n }\n\n if (b.login.username != null) {\n bName += b.login.username;\n }\n\n return this.i18nService.collator ? this.i18nService.collator.compare(aName, bName) :\n aName.localeCompare(bName);\n };\n }\n\n async softDelete(id: string | string[]): Promise {\n const userId = await this.userService.getUserId();\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null) {\n return;\n }\n\n const setDeletedDate = (cipherId: string) => {\n if (ciphers[cipherId] == null) {\n return;\n }\n ciphers[cipherId].deletedDate = new Date().toISOString();\n };\n\n if (typeof id === 'string') {\n setDeletedDate(id);\n } else {\n (id as string[]).forEach(setDeletedDate);\n }\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async softDeleteWithServer(id: string): Promise {\n await this.apiService.putDeleteCipher(id);\n await this.softDelete(id);\n }\n\n async softDeleteManyWithServer(ids: string[]): Promise {\n await this.apiService.putDeleteManyCiphers(new CipherBulkDeleteRequest(ids));\n await this.softDelete(ids);\n }\n\n async restore(cipher: { id: string, revisionDate: string; } | { id: string, revisionDate: string; }[]) {\n const userId = await this.userService.getUserId();\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(\n Keys.ciphersPrefix + userId);\n if (ciphers == null) {\n return;\n }\n\n const clearDeletedDate = (c: { id: string, revisionDate: string; }) => {\n if (ciphers[c.id] == null) {\n return;\n }\n ciphers[c.id].deletedDate = null;\n ciphers[c.id].revisionDate = c.revisionDate;\n };\n\n\n if (cipher.constructor.name === 'Array') {\n (cipher as { id: string, revisionDate: string; }[]).forEach(clearDeletedDate);\n } else {\n clearDeletedDate(cipher as { id: string, revisionDate: string; });\n }\n\n await this.storageService.save(Keys.ciphersPrefix + userId, ciphers);\n this.decryptedCipherCache = null;\n }\n\n async restoreWithServer(id: string): Promise {\n const response = await this.apiService.putRestoreCipher(id);\n await this.restore({ id: id, revisionDate: response.revisionDate });\n }\n\n async restoreManyWithServer(ids: string[]): Promise {\n const response = await this.apiService.putRestoreManyCiphers(new CipherBulkRestoreRequest(ids));\n const restores: { id: string, revisionDate: string; }[] = [];\n for (const cipher of response.data) {\n restores.push({ id: cipher.id, revisionDate: cipher.revisionDate });\n }\n await this.restore(restores);\n }\n\n // Helpers\n\n private async shareAttachmentWithServer(attachmentView: AttachmentView, cipherId: string,\n organizationId: string): Promise {\n const attachmentResponse = await this.apiService.nativeFetch(\n new Request(attachmentView.url, { cache: 'no-store' }));\n if (attachmentResponse.status !== 200) {\n throw Error('Failed to download attachment: ' + attachmentResponse.status.toString());\n }\n\n const buf = await attachmentResponse.arrayBuffer();\n const decBuf = await this.cryptoService.decryptFromBytes(buf, null);\n const key = await this.cryptoService.getOrgKey(organizationId);\n const encFileName = await this.cryptoService.encrypt(attachmentView.fileName, key);\n\n const dataEncKey = await this.cryptoService.makeEncKey(key);\n const encData = await this.cryptoService.encryptToBytes(decBuf, dataEncKey[0]);\n\n const fd = new FormData();\n try {\n const blob = new Blob([encData.buffer], { type: 'application/octet-stream' });\n fd.append('key', dataEncKey[1].encryptedString);\n fd.append('data', blob, encFileName.encryptedString);\n } catch (e) {\n if (Utils.isNode && !Utils.isBrowser) {\n fd.append('key', dataEncKey[1].encryptedString);\n fd.append('data', Buffer.from(encData.buffer) as any, {\n filepath: encFileName.encryptedString,\n contentType: 'application/octet-stream',\n } as any);\n } else {\n throw e;\n }\n }\n\n try {\n await this.apiService.postShareCipherAttachment(cipherId, attachmentView.id, fd, organizationId);\n } catch (e) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n }\n }\n\n private async encryptObjProperty(model: V, obj: D,\n map: any, key: SymmetricCryptoKey): Promise {\n const promises = [];\n const self = this;\n\n for (const prop in map) {\n if (!map.hasOwnProperty(prop)) {\n continue;\n }\n\n // tslint:disable-next-line\n (function (theProp, theObj) {\n const p = Promise.resolve().then(() => {\n const modelProp = (model as any)[(map[theProp] || theProp)];\n if (modelProp && modelProp !== '') {\n return self.cryptoService.encrypt(modelProp, key);\n }\n return null;\n }).then((val: EncString) => {\n (theObj as any)[theProp] = val;\n });\n promises.push(p);\n })(prop, obj);\n }\n\n await Promise.all(promises);\n }\n\n private async encryptCipherData(cipher: Cipher, model: CipherView, key: SymmetricCryptoKey) {\n switch (cipher.type) {\n case CipherType.Login:\n cipher.login = new Login();\n cipher.login.passwordRevisionDate = model.login.passwordRevisionDate;\n cipher.login.autofillOnPageLoad = model.login.autofillOnPageLoad;\n await this.encryptObjProperty(model.login, cipher.login, {\n username: null,\n password: null,\n totp: null,\n }, key);\n\n if (model.login.uris != null) {\n cipher.login.uris = [];\n for (let i = 0; i < model.login.uris.length; i++) {\n const loginUri = new LoginUri();\n loginUri.match = model.login.uris[i].match;\n await this.encryptObjProperty(model.login.uris[i], loginUri, {\n uri: null,\n }, key);\n cipher.login.uris.push(loginUri);\n }\n }\n return;\n case CipherType.SecureNote:\n cipher.secureNote = new SecureNote();\n cipher.secureNote.type = model.secureNote.type;\n return;\n case CipherType.Card:\n cipher.card = new Card();\n await this.encryptObjProperty(model.card, cipher.card, {\n cardholderName: null,\n brand: null,\n number: null,\n expMonth: null,\n expYear: null,\n code: null,\n }, key);\n return;\n case CipherType.Identity:\n cipher.identity = new Identity();\n await this.encryptObjProperty(model.identity, cipher.identity, {\n title: null,\n firstName: null,\n middleName: null,\n lastName: null,\n address1: null,\n address2: null,\n address3: null,\n city: null,\n state: null,\n postalCode: null,\n country: null,\n company: null,\n email: null,\n phone: null,\n ssn: null,\n username: null,\n passportNumber: null,\n licenseNumber: null,\n }, key);\n return;\n default:\n throw new Error('Unknown cipher type.');\n }\n }\n\n private async getCipherForUrl(url: string, lastUsed: boolean, lastLaunched: boolean, autofillOnPageLoad: boolean): Promise {\n const cacheKey = autofillOnPageLoad ? 'autofillOnPageLoad-' + url : url;\n\n if (!this.sortedCiphersCache.isCached(cacheKey)) {\n let ciphers = await this.getAllDecryptedForUrl(url);\n if (!ciphers) {\n return null;\n }\n\n if (autofillOnPageLoad) {\n const autofillOnPageLoadDefault = await this.storageService.get(ConstantsService.autoFillOnPageLoadDefaultKey);\n ciphers = ciphers.filter(cipher => cipher.login.autofillOnPageLoad ||\n (cipher.login.autofillOnPageLoad == null && autofillOnPageLoadDefault !== false));\n if (ciphers.length === 0) {\n return null;\n }\n }\n\n this.sortedCiphersCache.addCiphers(cacheKey, ciphers);\n }\n\n if (lastLaunched) {\n return this.sortedCiphersCache.getLastLaunched(cacheKey);\n } else if (lastUsed) {\n return this.sortedCiphersCache.getLastUsed(cacheKey);\n } else {\n return this.sortedCiphersCache.getNext(cacheKey);\n }\n }\n}\n","export class CipherBulkMoveRequest {\n ids: string[];\n folderId: string;\n\n constructor(ids: string[], folderId: string) {\n this.ids = ids == null ? [] : ids;\n this.folderId = folderId;\n }\n}\n","export class CipherBulkRestoreRequest {\n ids: string[];\n\n constructor(ids: string[]) {\n this.ids = ids == null ? [] : ids;\n }\n}\n","import { CipherWithIdRequest } from './cipherWithIdRequest';\n\nimport { Cipher } from '../domain/cipher';\n\nexport class CipherBulkShareRequest {\n ciphers: CipherWithIdRequest[];\n collectionIds: string[];\n\n constructor(ciphers: Cipher[], collectionIds: string[]) {\n if (ciphers != null) {\n this.ciphers = [];\n ciphers.forEach(c => {\n this.ciphers.push(new CipherWithIdRequest(c));\n });\n }\n this.collectionIds = collectionIds;\n }\n}\n","import { CipherRequest } from './cipherRequest';\n\nimport { Cipher } from '../domain/cipher';\n\nexport class CipherShareRequest {\n cipher: CipherRequest;\n collectionIds: string[];\n\n constructor(cipher: Cipher) {\n this.cipher = new CipherRequest(cipher);\n this.collectionIds = cipher.collectionIds;\n }\n}\n","import { CipherView } from '../view/cipherView';\n\nconst CacheTTL = 3000;\n\nexport class SortedCiphersCache {\n private readonly sortedCiphersByUrl: Map = new Map();\n private readonly timeouts: Map = new Map();\n\n constructor(private readonly comparator: (a: CipherView, b: CipherView) => number) { }\n\n isCached(url: string) {\n return this.sortedCiphersByUrl.has(url);\n }\n\n addCiphers(url: string, ciphers: CipherView[]) {\n ciphers.sort(this.comparator);\n this.sortedCiphersByUrl.set(url, new Ciphers(ciphers));\n this.resetTimer(url);\n }\n\n getLastUsed(url: string) {\n this.resetTimer(url);\n return this.isCached(url) ? this.sortedCiphersByUrl.get(url).getLastUsed() : null;\n }\n\n getLastLaunched(url: string) {\n return this.isCached(url) ? this.sortedCiphersByUrl.get(url).getLastLaunched() : null;\n }\n\n getNext(url: string) {\n this.resetTimer(url);\n return this.isCached(url) ? this.sortedCiphersByUrl.get(url).getNext() : null;\n }\n\n updateLastUsedIndex(url: string) {\n if (this.isCached(url)) {\n this.sortedCiphersByUrl.get(url).updateLastUsedIndex();\n }\n }\n\n clear() {\n this.sortedCiphersByUrl.clear();\n this.timeouts.clear();\n }\n\n private resetTimer(url: string) {\n clearTimeout(this.timeouts.get(url));\n this.timeouts.set(url, setTimeout(() => {\n this.sortedCiphersByUrl.delete(url);\n this.timeouts.delete(url);\n }, CacheTTL));\n }\n}\n\nclass Ciphers {\n lastUsedIndex = -1;\n\n constructor(private readonly ciphers: CipherView[]) { }\n\n getLastUsed() {\n this.lastUsedIndex = Math.max(this.lastUsedIndex, 0);\n return this.ciphers[this.lastUsedIndex];\n }\n\n getLastLaunched() {\n const usedCiphers = this.ciphers.filter(cipher => cipher.localData?.lastLaunched);\n const sortedCiphers = usedCiphers.sort((x, y) => y.localData.lastLaunched.valueOf() - x.localData.lastLaunched.valueOf());\n return sortedCiphers[0];\n }\n\n getNextIndex() {\n return (this.lastUsedIndex + 1) % this.ciphers.length;\n }\n\n getNext() {\n return this.ciphers[this.getNextIndex()];\n }\n\n updateLastUsedIndex() {\n this.lastUsedIndex = this.getNextIndex();\n }\n}\n","import { CollectionData } from '../models/data/collectionData';\n\nimport { Collection } from '../models/domain/collection';\nimport { TreeNode } from '../models/domain/treeNode';\n\nimport { CollectionView } from '../models/view/collectionView';\n\nimport { CollectionService as CollectionServiceAbstraction } from '../abstractions/collection.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { ServiceUtils } from '../misc/serviceUtils';\nimport { Utils } from '../misc/utils';\n\nconst Keys = {\n collectionsPrefix: 'collections_',\n};\nconst NestingDelimiter = '/';\n\nexport class CollectionService implements CollectionServiceAbstraction {\n decryptedCollectionCache: CollectionView[];\n\n constructor(private cryptoService: CryptoService, private userService: UserService,\n private storageService: StorageService, private i18nService: I18nService) {\n }\n\n clearCache(): void {\n this.decryptedCollectionCache = null;\n }\n\n async encrypt(model: CollectionView): Promise {\n if (model.organizationId == null) {\n throw new Error('Collection has no organization id.');\n }\n const key = await this.cryptoService.getOrgKey(model.organizationId);\n if (key == null) {\n throw new Error('No key for this collection\\'s organization.');\n }\n const collection = new Collection();\n collection.id = model.id;\n collection.organizationId = model.organizationId;\n collection.readOnly = model.readOnly;\n collection.name = await this.cryptoService.encrypt(model.name, key);\n return collection;\n }\n\n async decryptMany(collections: Collection[]): Promise {\n if (collections == null) {\n return [];\n }\n const decCollections: CollectionView[] = [];\n const promises: Promise[] = [];\n collections.forEach(collection => {\n promises.push(collection.decrypt().then(c => decCollections.push(c)));\n });\n await Promise.all(promises);\n return decCollections.sort(Utils.getSortFunction(this.i18nService, 'name'));\n }\n\n async get(id: string): Promise {\n const userId = await this.userService.getUserId();\n const collections = await this.storageService.get<{ [id: string]: CollectionData; }>(\n Keys.collectionsPrefix + userId);\n if (collections == null || !collections.hasOwnProperty(id)) {\n return null;\n }\n\n return new Collection(collections[id]);\n }\n\n async getAll(): Promise {\n const userId = await this.userService.getUserId();\n const collections = await this.storageService.get<{ [id: string]: CollectionData; }>(\n Keys.collectionsPrefix + userId);\n const response: Collection[] = [];\n for (const id in collections) {\n if (collections.hasOwnProperty(id)) {\n response.push(new Collection(collections[id]));\n }\n }\n return response;\n }\n\n async getAllDecrypted(): Promise {\n if (this.decryptedCollectionCache != null) {\n return this.decryptedCollectionCache;\n }\n\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n throw new Error('No key.');\n }\n\n const collections = await this.getAll();\n this.decryptedCollectionCache = await this.decryptMany(collections);\n return this.decryptedCollectionCache;\n }\n\n async getAllNested(collections: CollectionView[] = null): Promise[]> {\n if (collections == null) {\n collections = await this.getAllDecrypted();\n }\n const nodes: TreeNode[] = [];\n collections.forEach(c => {\n const collectionCopy = new CollectionView();\n collectionCopy.id = c.id;\n collectionCopy.organizationId = c.organizationId;\n const parts = c.name != null ? c.name.replace(/^\\/+|\\/+$/g, '').split(NestingDelimiter) : [];\n ServiceUtils.nestedTraverse(nodes, 0, parts, collectionCopy, null, NestingDelimiter);\n });\n return nodes;\n }\n\n async getNested(id: string): Promise> {\n const collections = await this.getAllNested();\n return ServiceUtils.getTreeNodeObject(collections, id) as TreeNode;\n }\n\n async upsert(collection: CollectionData | CollectionData[]): Promise {\n const userId = await this.userService.getUserId();\n let collections = await this.storageService.get<{ [id: string]: CollectionData; }>(\n Keys.collectionsPrefix + userId);\n if (collections == null) {\n collections = {};\n }\n\n if (collection instanceof CollectionData) {\n const c = collection as CollectionData;\n collections[c.id] = c;\n } else {\n (collection as CollectionData[]).forEach(c => {\n collections[c.id] = c;\n });\n }\n\n await this.storageService.save(Keys.collectionsPrefix + userId, collections);\n this.decryptedCollectionCache = null;\n }\n\n async replace(collections: { [id: string]: CollectionData; }): Promise {\n const userId = await this.userService.getUserId();\n await this.storageService.save(Keys.collectionsPrefix + userId, collections);\n this.decryptedCollectionCache = null;\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.collectionsPrefix + userId);\n this.decryptedCollectionCache = null;\n }\n\n async delete(id: string | string[]): Promise {\n const userId = await this.userService.getUserId();\n const collections = await this.storageService.get<{ [id: string]: CollectionData; }>(\n Keys.collectionsPrefix + userId);\n if (collections == null) {\n return;\n }\n\n if (typeof id === 'string') {\n const i = id as string;\n delete collections[id];\n } else {\n (id as string[]).forEach(i => {\n delete collections[i];\n });\n }\n\n await this.storageService.save(Keys.collectionsPrefix + userId, collections);\n this.decryptedCollectionCache = null;\n }\n}\n","export class TreeNode {\n parent: T;\n node: T;\n children: TreeNode[] = [];\n\n constructor(node: T, name: string, parent: T) {\n this.parent = parent;\n this.node = node;\n this.node.name = name;\n }\n}\n\nexport interface ITreeNodeObject {\n id: string;\n name: string;\n}\n","export enum LogLevelType {\n Debug,\n Info,\n Warning,\n Error,\n}\n","import { CryptoService } from '../abstractions/crypto.service';\n\nexport class ContainerService {\n constructor(private cryptoService: CryptoService) {\n }\n\n // deprecated, use attachToGlobal instead\n attachToWindow(win: any) {\n this.attachToGlobal(win);\n }\n\n attachToGlobal(global: any) {\n if (!global.bitwardenContainerService) {\n global.bitwardenContainerService = this;\n }\n }\n\n getCryptoService(): CryptoService {\n return this.cryptoService;\n }\n}\n","import * as bigInt from 'big-integer';\n\nimport { EncryptionType } from '../enums/encryptionType';\nimport { HashPurpose } from '../enums/hashPurpose';\nimport { KdfType } from '../enums/kdfType';\n\nimport { EncArrayBuffer } from '../models/domain/encArrayBuffer';\nimport { EncryptedObject } from '../models/domain/encryptedObject';\nimport { EncString } from '../models/domain/encString';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\nimport { ProfileOrganizationResponse } from '../models/response/profileOrganizationResponse';\n\nimport { CryptoService as CryptoServiceAbstraction } from '../abstractions/crypto.service';\nimport { CryptoFunctionService } from '../abstractions/cryptoFunction.service';\nimport { LogService } from '../abstractions/log.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\nimport {\n KeySuffixOptions,\n StorageService,\n} from '../abstractions/storage.service';\n\nimport { ConstantsService } from './constants.service';\n\nimport { sequentialize } from '../misc/sequentialize';\nimport { Utils } from '../misc/utils';\nimport { EEFLongWordList } from '../misc/wordlist';\nimport { ProfileProviderOrganizationResponse } from '../models/response/profileProviderOrganizationResponse';\nimport { ProfileProviderResponse } from '../models/response/profileProviderResponse';\n\nexport const Keys = {\n key: 'key', // Master Key\n encOrgKeys: 'encOrgKeys',\n encProviderKeys: 'encProviderKeys',\n encPrivateKey: 'encPrivateKey',\n encKey: 'encKey', // Generated Symmetric Key\n keyHash: 'keyHash',\n};\n\nexport class CryptoService implements CryptoServiceAbstraction {\n private key: SymmetricCryptoKey;\n private encKey: SymmetricCryptoKey;\n private legacyEtmKey: SymmetricCryptoKey;\n private keyHash: string;\n private publicKey: ArrayBuffer;\n private privateKey: ArrayBuffer;\n private orgKeys: Map;\n private providerKeys: Map;\n\n constructor(private storageService: StorageService, protected secureStorageService: StorageService,\n private cryptoFunctionService: CryptoFunctionService, protected platformUtilService: PlatformUtilsService,\n protected logService: LogService) {\n }\n\n async setKey(key: SymmetricCryptoKey): Promise {\n this.key = key;\n\n await this.storeKey(key);\n }\n\n setKeyHash(keyHash: string): Promise<{}> {\n this.keyHash = keyHash;\n return this.storageService.save(Keys.keyHash, keyHash);\n }\n\n async setEncKey(encKey: string): Promise<{}> {\n if (encKey == null) {\n return;\n }\n\n await this.storageService.save(Keys.encKey, encKey);\n this.encKey = null;\n }\n\n async setEncPrivateKey(encPrivateKey: string): Promise<{}> {\n if (encPrivateKey == null) {\n return;\n }\n\n await this.storageService.save(Keys.encPrivateKey, encPrivateKey);\n this.privateKey = null;\n }\n\n async setOrgKeys(orgs: ProfileOrganizationResponse[], providerOrgs: ProfileProviderOrganizationResponse[]): Promise<{}> {\n const orgKeys: any = {};\n orgs.forEach(org => {\n orgKeys[org.id] = org.key;\n });\n\n for (const providerOrg of providerOrgs) {\n // Convert provider encrypted keys to user encrypted.\n const providerKey = await this.getProviderKey(providerOrg.providerId);\n const decValue = await this.decryptToBytes(new EncString(providerOrg.key), providerKey);\n orgKeys[providerOrg.id] = await (await this.rsaEncrypt(decValue)).encryptedString;\n }\n\n this.orgKeys = null;\n return this.storageService.save(Keys.encOrgKeys, orgKeys);\n }\n\n setProviderKeys(providers: ProfileProviderResponse[]): Promise<{}> {\n const providerKeys: any = {};\n providers.forEach(provider => {\n providerKeys[provider.id] = provider.key;\n });\n\n this.providerKeys = null;\n return this.storageService.save(Keys.encProviderKeys, providerKeys);\n }\n\n async getKey(keySuffix?: KeySuffixOptions): Promise {\n if (this.key != null) {\n return this.key;\n }\n\n keySuffix ||= 'auto';\n const symmetricKey = await this.getKeyFromStorage(keySuffix);\n\n if (symmetricKey != null) {\n this.setKey(symmetricKey);\n }\n\n return symmetricKey;\n }\n\n async getKeyFromStorage(keySuffix: KeySuffixOptions): Promise {\n const key = await this.retrieveKeyFromStorage(keySuffix);\n if (key != null) {\n\n const symmetricKey = new SymmetricCryptoKey(Utils.fromB64ToArray(key).buffer);\n\n if (!await this.validateKey(symmetricKey)) {\n this.logService.warning('Wrong key, throwing away stored key');\n this.secureStorageService.remove(Keys.key, { keySuffix: keySuffix });\n return null;\n }\n\n return symmetricKey;\n }\n return null;\n }\n\n async getKeyHash(): Promise {\n if (this.keyHash != null) {\n return this.keyHash;\n }\n\n const keyHash = await this.storageService.get(Keys.keyHash);\n if (keyHash != null) {\n this.keyHash = keyHash;\n }\n\n return keyHash == null ? null : this.keyHash;\n }\n\n async compareAndUpdateKeyHash(masterPassword: string, key: SymmetricCryptoKey): Promise {\n const storedKeyHash = await this.getKeyHash();\n if (masterPassword != null && storedKeyHash != null) {\n const localKeyHash = await this.hashPassword(masterPassword, key, HashPurpose.LocalAuthorization);\n if (localKeyHash != null && storedKeyHash === localKeyHash) {\n return true;\n }\n\n // TODO: remove serverKeyHash check in 1-2 releases after everyone's keyHash has been updated\n const serverKeyHash = await this.hashPassword(masterPassword, key, HashPurpose.ServerAuthorization);\n if (serverKeyHash != null && storedKeyHash === serverKeyHash) {\n await this.setKeyHash(localKeyHash);\n return true;\n }\n }\n\n return false;\n }\n\n @sequentialize(() => 'getEncKey')\n async getEncKey(key: SymmetricCryptoKey = null): Promise {\n if (this.encKey != null) {\n return this.encKey;\n }\n\n const encKey = await this.storageService.get(Keys.encKey);\n if (encKey == null) {\n return null;\n }\n\n if (key == null) {\n key = await this.getKey();\n }\n if (key == null) {\n return null;\n }\n\n let decEncKey: ArrayBuffer;\n const encKeyCipher = new EncString(encKey);\n if (encKeyCipher.encryptionType === EncryptionType.AesCbc256_B64) {\n decEncKey = await this.decryptToBytes(encKeyCipher, key);\n } else if (encKeyCipher.encryptionType === EncryptionType.AesCbc256_HmacSha256_B64) {\n const newKey = await this.stretchKey(key);\n decEncKey = await this.decryptToBytes(encKeyCipher, newKey);\n } else {\n throw new Error('Unsupported encKey type.');\n }\n\n if (decEncKey == null) {\n return null;\n }\n this.encKey = new SymmetricCryptoKey(decEncKey);\n return this.encKey;\n }\n\n async getPublicKey(): Promise {\n if (this.publicKey != null) {\n return this.publicKey;\n }\n\n const privateKey = await this.getPrivateKey();\n if (privateKey == null) {\n return null;\n }\n\n this.publicKey = await this.cryptoFunctionService.rsaExtractPublicKey(privateKey);\n return this.publicKey;\n }\n\n async getPrivateKey(): Promise {\n if (this.privateKey != null) {\n return this.privateKey;\n }\n\n const encPrivateKey = await this.storageService.get(Keys.encPrivateKey);\n if (encPrivateKey == null) {\n return null;\n }\n\n this.privateKey = await this.decryptToBytes(new EncString(encPrivateKey), null);\n return this.privateKey;\n }\n\n async getFingerprint(userId: string, publicKey?: ArrayBuffer): Promise {\n if (publicKey == null) {\n publicKey = await this.getPublicKey();\n }\n if (publicKey === null) {\n throw new Error('No public key available.');\n }\n const keyFingerprint = await this.cryptoFunctionService.hash(publicKey, 'sha256');\n const userFingerprint = await this.cryptoFunctionService.hkdfExpand(keyFingerprint, userId, 32, 'sha256');\n return this.hashPhrase(userFingerprint);\n }\n\n @sequentialize(() => 'getOrgKeys')\n async getOrgKeys(): Promise> {\n if (this.orgKeys != null && this.orgKeys.size > 0) {\n return this.orgKeys;\n }\n\n const encOrgKeys = await this.storageService.get(Keys.encOrgKeys);\n if (encOrgKeys == null) {\n return null;\n }\n\n const orgKeys: Map = new Map();\n let setKey = false;\n\n for (const orgId in encOrgKeys) {\n if (!encOrgKeys.hasOwnProperty(orgId)) {\n continue;\n }\n\n const decValue = await this.rsaDecrypt(encOrgKeys[orgId]);\n orgKeys.set(orgId, new SymmetricCryptoKey(decValue));\n setKey = true;\n }\n\n if (setKey) {\n this.orgKeys = orgKeys;\n }\n\n return this.orgKeys;\n }\n\n async getOrgKey(orgId: string): Promise {\n if (orgId == null) {\n return null;\n }\n\n const orgKeys = await this.getOrgKeys();\n if (orgKeys == null || !orgKeys.has(orgId)) {\n return null;\n }\n\n return orgKeys.get(orgId);\n }\n\n @sequentialize(() => 'getProviderKeys')\n async getProviderKeys(): Promise> {\n if (this.providerKeys != null && this.providerKeys.size > 0) {\n return this.providerKeys;\n }\n\n const encProviderKeys = await this.storageService.get(Keys.encProviderKeys);\n if (encProviderKeys == null) {\n return null;\n }\n\n const providerKeys: Map = new Map();\n let setKey = false;\n\n for (const orgId in encProviderKeys) {\n if (!encProviderKeys.hasOwnProperty(orgId)) {\n continue;\n }\n\n const decValue = await this.rsaDecrypt(encProviderKeys[orgId]);\n providerKeys.set(orgId, new SymmetricCryptoKey(decValue));\n setKey = true;\n }\n\n if (setKey) {\n this.providerKeys = providerKeys;\n }\n\n return this.providerKeys;\n }\n\n async getProviderKey(providerId: string): Promise {\n if (providerId == null) {\n return null;\n }\n\n const providerKeys = await this.getProviderKeys();\n if (providerKeys == null || !providerKeys.has(providerId)) {\n return null;\n }\n\n return providerKeys.get(providerId);\n }\n\n async hasKey(): Promise {\n return this.hasKeyInMemory() || await this.hasKeyStored('auto') || await this.hasKeyStored('biometric');\n }\n\n hasKeyInMemory(): boolean {\n return this.key != null;\n }\n\n hasKeyStored(keySuffix: KeySuffixOptions): Promise {\n return this.secureStorageService.has(Keys.key, { keySuffix: keySuffix });\n }\n\n async hasEncKey(): Promise {\n const encKey = await this.storageService.get(Keys.encKey);\n return encKey != null;\n }\n\n async clearKey(clearSecretStorage: boolean = true): Promise {\n this.key = this.legacyEtmKey = null;\n if (clearSecretStorage) {\n this.clearStoredKey('auto');\n this.clearStoredKey('biometric');\n }\n }\n\n async clearStoredKey(keySuffix: KeySuffixOptions) {\n await this.secureStorageService.remove(Keys.key, { keySuffix: keySuffix });\n }\n\n clearKeyHash(): Promise {\n this.keyHash = null;\n return this.storageService.remove(Keys.keyHash);\n }\n\n clearEncKey(memoryOnly?: boolean): Promise {\n this.encKey = null;\n if (memoryOnly) {\n return Promise.resolve();\n }\n return this.storageService.remove(Keys.encKey);\n }\n\n clearKeyPair(memoryOnly?: boolean): Promise {\n this.privateKey = null;\n this.publicKey = null;\n if (memoryOnly) {\n return Promise.resolve();\n }\n return this.storageService.remove(Keys.encPrivateKey);\n }\n\n clearOrgKeys(memoryOnly?: boolean): Promise {\n this.orgKeys = null;\n if (memoryOnly) {\n return Promise.resolve();\n }\n return this.storageService.remove(Keys.encOrgKeys);\n }\n\n clearProviderKeys(memoryOnly?: boolean): Promise {\n this.providerKeys = null;\n if (memoryOnly) {\n return Promise.resolve();\n }\n return this.storageService.remove(Keys.encOrgKeys);\n }\n\n clearPinProtectedKey(): Promise {\n return this.storageService.remove(ConstantsService.pinProtectedKey);\n }\n\n async clearKeys(): Promise {\n await this.clearKey();\n await this.clearKeyHash();\n await this.clearOrgKeys();\n await this.clearProviderKeys();\n await this.clearEncKey();\n await this.clearKeyPair();\n await this.clearPinProtectedKey();\n }\n\n async toggleKey(): Promise {\n const key = await this.getKey();\n\n await this.setKey(key);\n }\n\n async makeKey(password: string, salt: string, kdf: KdfType, kdfIterations: number):\n Promise {\n let key: ArrayBuffer = null;\n if (kdf == null || kdf === KdfType.PBKDF2_SHA256) {\n if (kdfIterations == null) {\n kdfIterations = 5000;\n } else if (kdfIterations < 5000) {\n throw new Error('PBKDF2 iteration minimum is 5000.');\n }\n key = await this.cryptoFunctionService.pbkdf2(password, salt, 'sha256', kdfIterations);\n } else {\n throw new Error('Unknown Kdf.');\n }\n return new SymmetricCryptoKey(key);\n }\n\n async makeKeyFromPin(pin: string, salt: string, kdf: KdfType, kdfIterations: number,\n protectedKeyCs: EncString = null):\n Promise {\n if (protectedKeyCs == null) {\n const pinProtectedKey = await this.storageService.get(ConstantsService.pinProtectedKey);\n if (pinProtectedKey == null) {\n throw new Error('No PIN protected key found.');\n }\n protectedKeyCs = new EncString(pinProtectedKey);\n }\n const pinKey = await this.makePinKey(pin, salt, kdf, kdfIterations);\n const decKey = await this.decryptToBytes(protectedKeyCs, pinKey);\n return new SymmetricCryptoKey(decKey);\n }\n\n async makeShareKey(): Promise<[EncString, SymmetricCryptoKey]> {\n const shareKey = await this.cryptoFunctionService.randomBytes(64);\n const publicKey = await this.getPublicKey();\n const encShareKey = await this.rsaEncrypt(shareKey, publicKey);\n return [encShareKey, new SymmetricCryptoKey(shareKey)];\n }\n\n async makeKeyPair(key?: SymmetricCryptoKey): Promise<[string, EncString]> {\n const keyPair = await this.cryptoFunctionService.rsaGenerateKeyPair(2048);\n const publicB64 = Utils.fromBufferToB64(keyPair[0]);\n const privateEnc = await this.encrypt(keyPair[1], key);\n return [publicB64, privateEnc];\n }\n\n async makePinKey(pin: string, salt: string, kdf: KdfType, kdfIterations: number): Promise {\n const pinKey = await this.makeKey(pin, salt, kdf, kdfIterations);\n return await this.stretchKey(pinKey);\n }\n\n async makeSendKey(keyMaterial: ArrayBuffer): Promise {\n const sendKey = await this.cryptoFunctionService.hkdf(keyMaterial, 'bitwarden-send', 'send', 64, 'sha256');\n return new SymmetricCryptoKey(sendKey);\n }\n\n async hashPassword(password: string, key: SymmetricCryptoKey, hashPurpose?: HashPurpose): Promise {\n if (key == null) {\n key = await this.getKey();\n }\n if (password == null || key == null) {\n throw new Error('Invalid parameters.');\n }\n\n const iterations = hashPurpose === HashPurpose.LocalAuthorization ? 2 : 1;\n const hash = await this.cryptoFunctionService.pbkdf2(key.key, password, 'sha256', iterations);\n return Utils.fromBufferToB64(hash);\n }\n\n async makeEncKey(key: SymmetricCryptoKey): Promise<[SymmetricCryptoKey, EncString]> {\n const theKey = await this.getKeyForEncryption(key);\n const encKey = await this.cryptoFunctionService.randomBytes(64);\n return this.buildEncKey(theKey, encKey);\n }\n\n async remakeEncKey(key: SymmetricCryptoKey, encKey?: SymmetricCryptoKey): Promise<[SymmetricCryptoKey, EncString]> {\n if (encKey == null) {\n encKey = await this.getEncKey();\n }\n return this.buildEncKey(key, encKey.key);\n }\n\n async encrypt(plainValue: string | ArrayBuffer, key?: SymmetricCryptoKey): Promise {\n if (plainValue == null) {\n return Promise.resolve(null);\n }\n\n let plainBuf: ArrayBuffer;\n if (typeof (plainValue) === 'string') {\n plainBuf = Utils.fromUtf8ToArray(plainValue).buffer;\n } else {\n plainBuf = plainValue;\n }\n\n const encObj = await this.aesEncrypt(plainBuf, key);\n const iv = Utils.fromBufferToB64(encObj.iv);\n const data = Utils.fromBufferToB64(encObj.data);\n const mac = encObj.mac != null ? Utils.fromBufferToB64(encObj.mac) : null;\n return new EncString(encObj.key.encType, data, iv, mac);\n }\n\n async encryptToBytes(plainValue: ArrayBuffer, key?: SymmetricCryptoKey): Promise {\n const encValue = await this.aesEncrypt(plainValue, key);\n let macLen = 0;\n if (encValue.mac != null) {\n macLen = encValue.mac.byteLength;\n }\n\n const encBytes = new Uint8Array(1 + encValue.iv.byteLength + macLen + encValue.data.byteLength);\n encBytes.set([encValue.key.encType]);\n encBytes.set(new Uint8Array(encValue.iv), 1);\n if (encValue.mac != null) {\n encBytes.set(new Uint8Array(encValue.mac), 1 + encValue.iv.byteLength);\n }\n\n encBytes.set(new Uint8Array(encValue.data), 1 + encValue.iv.byteLength + macLen);\n return new EncArrayBuffer(encBytes.buffer);\n }\n\n async rsaEncrypt(data: ArrayBuffer, publicKey?: ArrayBuffer): Promise {\n if (publicKey == null) {\n publicKey = await this.getPublicKey();\n }\n if (publicKey == null) {\n throw new Error('Public key unavailable.');\n }\n\n const encBytes = await this.cryptoFunctionService.rsaEncrypt(data, publicKey, 'sha1');\n return new EncString(EncryptionType.Rsa2048_OaepSha1_B64, Utils.fromBufferToB64(encBytes));\n }\n\n async rsaDecrypt(encValue: string, privateKeyValue?: ArrayBuffer): Promise {\n const headerPieces = encValue.split('.');\n let encType: EncryptionType = null;\n let encPieces: string[];\n\n if (headerPieces.length === 1) {\n encType = EncryptionType.Rsa2048_OaepSha256_B64;\n encPieces = [headerPieces[0]];\n } else if (headerPieces.length === 2) {\n try {\n encType = parseInt(headerPieces[0], null);\n encPieces = headerPieces[1].split('|');\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n switch (encType) {\n case EncryptionType.Rsa2048_OaepSha256_B64:\n case EncryptionType.Rsa2048_OaepSha1_B64:\n // HmacSha256 types are deprecated\n case EncryptionType.Rsa2048_OaepSha256_HmacSha256_B64:\n case EncryptionType.Rsa2048_OaepSha1_HmacSha256_B64:\n break;\n default:\n throw new Error('encType unavailable.');\n }\n\n if (encPieces == null || encPieces.length <= 0) {\n throw new Error('encPieces unavailable.');\n }\n\n const data = Utils.fromB64ToArray(encPieces[0]).buffer;\n const privateKey = privateKeyValue ?? await this.getPrivateKey();\n if (privateKey == null) {\n throw new Error('No private key.');\n }\n\n let alg: 'sha1' | 'sha256' = 'sha1';\n switch (encType) {\n case EncryptionType.Rsa2048_OaepSha256_B64:\n case EncryptionType.Rsa2048_OaepSha256_HmacSha256_B64:\n alg = 'sha256';\n break;\n case EncryptionType.Rsa2048_OaepSha1_B64:\n case EncryptionType.Rsa2048_OaepSha1_HmacSha256_B64:\n break;\n default:\n throw new Error('encType unavailable.');\n }\n\n return this.cryptoFunctionService.rsaDecrypt(data, privateKey, alg);\n }\n\n async decryptToBytes(encString: EncString, key?: SymmetricCryptoKey): Promise {\n const iv = Utils.fromB64ToArray(encString.iv).buffer;\n const data = Utils.fromB64ToArray(encString.data).buffer;\n const mac = encString.mac ? Utils.fromB64ToArray(encString.mac).buffer : null;\n const decipher = await this.aesDecryptToBytes(encString.encryptionType, data, iv, mac, key);\n if (decipher == null) {\n return null;\n }\n\n return decipher;\n }\n\n async decryptToUtf8(encString: EncString, key?: SymmetricCryptoKey): Promise {\n return await this.aesDecryptToUtf8(encString.encryptionType, encString.data,\n encString.iv, encString.mac, key);\n }\n\n async decryptFromBytes(encBuf: ArrayBuffer, key: SymmetricCryptoKey): Promise {\n if (encBuf == null) {\n throw new Error('no encBuf.');\n }\n\n const encBytes = new Uint8Array(encBuf);\n const encType = encBytes[0];\n let ctBytes: Uint8Array = null;\n let ivBytes: Uint8Array = null;\n let macBytes: Uint8Array = null;\n\n switch (encType) {\n case EncryptionType.AesCbc128_HmacSha256_B64:\n case EncryptionType.AesCbc256_HmacSha256_B64:\n if (encBytes.length <= 49) { // 1 + 16 + 32 + ctLength\n return null;\n }\n\n ivBytes = encBytes.slice(1, 17);\n macBytes = encBytes.slice(17, 49);\n ctBytes = encBytes.slice(49);\n break;\n case EncryptionType.AesCbc256_B64:\n if (encBytes.length <= 17) { // 1 + 16 + ctLength\n return null;\n }\n\n ivBytes = encBytes.slice(1, 17);\n ctBytes = encBytes.slice(17);\n break;\n default:\n return null;\n }\n\n return await this.aesDecryptToBytes(encType, ctBytes.buffer, ivBytes.buffer,\n macBytes != null ? macBytes.buffer : null, key);\n }\n\n // EFForg/OpenWireless\n // ref https://github.com/EFForg/OpenWireless/blob/master/app/js/diceware.js\n async randomNumber(min: number, max: number): Promise {\n let rval = 0;\n const range = max - min + 1;\n const bitsNeeded = Math.ceil(Math.log2(range));\n if (bitsNeeded > 53) {\n throw new Error('We cannot generate numbers larger than 53 bits.');\n }\n\n const bytesNeeded = Math.ceil(bitsNeeded / 8);\n const mask = Math.pow(2, bitsNeeded) - 1;\n // 7776 -> (2^13 = 8192) -1 == 8191 or 0x00001111 11111111\n\n // Fill a byte array with N random numbers\n const byteArray = new Uint8Array(await this.cryptoFunctionService.randomBytes(bytesNeeded));\n\n let p = (bytesNeeded - 1) * 8;\n for (let i = 0; i < bytesNeeded; i++) {\n rval += byteArray[i] * Math.pow(2, p);\n p -= 8;\n }\n\n // Use & to apply the mask and reduce the number of recursive lookups\n // tslint:disable-next-line\n rval = rval & mask;\n\n if (rval >= range) {\n // Integer out of acceptable range\n return this.randomNumber(min, max);\n }\n\n // Return an integer that falls within the range\n return min + rval;\n }\n\n async validateKey(key: SymmetricCryptoKey) {\n try {\n const encPrivateKey = await this.storageService.get(Keys.encPrivateKey);\n const encKey = await this.getEncKey(key);\n if (encPrivateKey == null || encKey == null) {\n return false;\n }\n\n const privateKey = await this.decryptToBytes(new EncString(encPrivateKey), encKey);\n await this.cryptoFunctionService.rsaExtractPublicKey(privateKey);\n } catch (e) {\n return false;\n }\n\n return true;\n }\n\n // Helpers\n\n protected async storeKey(key: SymmetricCryptoKey) {\n if (await this.shouldStoreKey('auto') || await this.shouldStoreKey('biometric')) {\n this.secureStorageService.save(Keys.key, key.keyB64);\n } else {\n this.secureStorageService.remove(Keys.key);\n }\n }\n\n protected async shouldStoreKey(keySuffix: KeySuffixOptions) {\n let shouldStoreKey = false;\n if (keySuffix === 'auto') {\n const vaultTimeout = await this.storageService.get(ConstantsService.vaultTimeoutKey);\n shouldStoreKey = vaultTimeout == null;\n } else if (keySuffix === 'biometric') {\n const biometricUnlock = await this.storageService.get(ConstantsService.biometricUnlockKey);\n shouldStoreKey = biometricUnlock && this.platformUtilService.supportsSecureStorage();\n }\n return shouldStoreKey;\n }\n\n protected retrieveKeyFromStorage(keySuffix: KeySuffixOptions) {\n return this.secureStorageService.get(Keys.key, { keySuffix: keySuffix });\n }\n\n private async aesEncrypt(data: ArrayBuffer, key: SymmetricCryptoKey): Promise {\n const obj = new EncryptedObject();\n obj.key = await this.getKeyForEncryption(key);\n obj.iv = await this.cryptoFunctionService.randomBytes(16);\n obj.data = await this.cryptoFunctionService.aesEncrypt(data, obj.iv, obj.key.encKey);\n\n if (obj.key.macKey != null) {\n const macData = new Uint8Array(obj.iv.byteLength + obj.data.byteLength);\n macData.set(new Uint8Array(obj.iv), 0);\n macData.set(new Uint8Array(obj.data), obj.iv.byteLength);\n obj.mac = await this.cryptoFunctionService.hmac(macData.buffer, obj.key.macKey, 'sha256');\n }\n\n return obj;\n }\n\n private async aesDecryptToUtf8(encType: EncryptionType, data: string, iv: string, mac: string,\n key: SymmetricCryptoKey): Promise {\n const keyForEnc = await this.getKeyForEncryption(key);\n const theKey = this.resolveLegacyKey(encType, keyForEnc);\n\n if (theKey.macKey != null && mac == null) {\n this.logService.error('mac required.');\n return null;\n }\n\n if (theKey.encType !== encType) {\n this.logService.error('encType unavailable.');\n return null;\n }\n\n const fastParams = this.cryptoFunctionService.aesDecryptFastParameters(data, iv, mac, theKey);\n if (fastParams.macKey != null && fastParams.mac != null) {\n const computedMac = await this.cryptoFunctionService.hmacFast(fastParams.macData,\n fastParams.macKey, 'sha256');\n const macsEqual = await this.cryptoFunctionService.compareFast(fastParams.mac, computedMac);\n if (!macsEqual) {\n this.logService.error('mac failed.');\n return null;\n }\n }\n\n return this.cryptoFunctionService.aesDecryptFast(fastParams);\n }\n\n private async aesDecryptToBytes(encType: EncryptionType, data: ArrayBuffer, iv: ArrayBuffer,\n mac: ArrayBuffer, key: SymmetricCryptoKey): Promise {\n const keyForEnc = await this.getKeyForEncryption(key);\n const theKey = this.resolveLegacyKey(encType, keyForEnc);\n\n if (theKey.macKey != null && mac == null) {\n return null;\n }\n\n if (theKey.encType !== encType) {\n return null;\n }\n\n if (theKey.macKey != null && mac != null) {\n const macData = new Uint8Array(iv.byteLength + data.byteLength);\n macData.set(new Uint8Array(iv), 0);\n macData.set(new Uint8Array(data), iv.byteLength);\n const computedMac = await this.cryptoFunctionService.hmac(macData.buffer, theKey.macKey, 'sha256');\n if (computedMac === null) {\n return null;\n }\n\n const macsMatch = await this.cryptoFunctionService.compare(mac, computedMac);\n if (!macsMatch) {\n this.logService.error('mac failed.');\n return null;\n }\n }\n\n return await this.cryptoFunctionService.aesDecrypt(data, iv, theKey.encKey);\n }\n\n private async getKeyForEncryption(key?: SymmetricCryptoKey): Promise {\n if (key != null) {\n return key;\n }\n\n const encKey = await this.getEncKey();\n if (encKey != null) {\n return encKey;\n }\n\n return await this.getKey();\n }\n\n private resolveLegacyKey(encType: EncryptionType, key: SymmetricCryptoKey): SymmetricCryptoKey {\n if (encType === EncryptionType.AesCbc128_HmacSha256_B64 &&\n key.encType === EncryptionType.AesCbc256_B64) {\n // Old encrypt-then-mac scheme, make a new key\n if (this.legacyEtmKey == null) {\n this.legacyEtmKey = new SymmetricCryptoKey(key.key, EncryptionType.AesCbc128_HmacSha256_B64);\n }\n return this.legacyEtmKey;\n }\n\n return key;\n }\n\n private async stretchKey(key: SymmetricCryptoKey): Promise {\n const newKey = new Uint8Array(64);\n const encKey = await this.cryptoFunctionService.hkdfExpand(key.key, 'enc', 32, 'sha256');\n const macKey = await this.cryptoFunctionService.hkdfExpand(key.key, 'mac', 32, 'sha256');\n newKey.set(new Uint8Array(encKey));\n newKey.set(new Uint8Array(macKey), 32);\n return new SymmetricCryptoKey(newKey.buffer);\n }\n\n private async hashPhrase(hash: ArrayBuffer, minimumEntropy: number = 64) {\n const entropyPerWord = Math.log(EEFLongWordList.length) / Math.log(2);\n let numWords = Math.ceil(minimumEntropy / entropyPerWord);\n\n const hashArr = Array.from(new Uint8Array(hash));\n const entropyAvailable = hashArr.length * 4;\n if (numWords * entropyPerWord > entropyAvailable) {\n throw new Error('Output entropy of hash function is too small');\n }\n\n const phrase: string[] = [];\n let hashNumber = bigInt.fromArray(hashArr, 256);\n while (numWords--) {\n const remainder = hashNumber.mod(EEFLongWordList.length);\n hashNumber = hashNumber.divide(EEFLongWordList.length);\n phrase.push(EEFLongWordList[remainder as any]);\n }\n return phrase;\n }\n\n private async buildEncKey(key: SymmetricCryptoKey, encKey: ArrayBuffer)\n : Promise<[SymmetricCryptoKey, EncString]> {\n let encKeyEnc: EncString = null;\n if (key.key.byteLength === 32) {\n const newKey = await this.stretchKey(key);\n encKeyEnc = await this.encrypt(encKey, newKey);\n } else if (key.key.byteLength === 64) {\n encKeyEnc = await this.encrypt(encKey, key);\n } else {\n throw new Error('Invalid key size.');\n }\n return [new SymmetricCryptoKey(encKey), encKeyEnc];\n }\n}\n","export class EncArrayBuffer {\n constructor(public buffer: ArrayBuffer) { }\n}\n","import { SymmetricCryptoKey } from './symmetricCryptoKey';\n\nexport class EncryptedObject {\n iv: ArrayBuffer;\n data: ArrayBuffer;\n mac: ArrayBuffer;\n key: SymmetricCryptoKey;\n}\n","import { Observable, Subject } from 'rxjs';\n\nimport { EnvironmentUrls } from '../models/domain/environmentUrls';\n\nimport { ConstantsService } from './constants.service';\n\nimport { EnvironmentService as EnvironmentServiceAbstraction, Urls } from '../abstractions/environment.service';\nimport { StorageService } from '../abstractions/storage.service';\n\nexport class EnvironmentService implements EnvironmentServiceAbstraction {\n\n private readonly urlsSubject = new Subject();\n urls: Observable = this.urlsSubject; // tslint:disable-line\n\n private baseUrl: string;\n private webVaultUrl: string;\n private apiUrl: string;\n private identityUrl: string;\n private iconsUrl: string;\n private notificationsUrl: string;\n private eventsUrl: string;\n private keyConnectorUrl: string;\n\n constructor(private storageService: StorageService) {}\n\n hasBaseUrl() {\n return this.baseUrl != null;\n }\n\n getNotificationsUrl() {\n if (this.notificationsUrl != null) {\n return this.notificationsUrl;\n }\n\n if (this.baseUrl != null) {\n return this.baseUrl + '/notifications';\n }\n\n return 'https://notifications.bitwarden.com';\n }\n\n getWebVaultUrl() {\n if (this.webVaultUrl != null) {\n return this.webVaultUrl;\n }\n\n if (this.baseUrl) {\n return this.baseUrl;\n }\n return 'https://vault.bitwarden.com';\n }\n\n getSendUrl() {\n return this.getWebVaultUrl() === 'https://vault.bitwarden.com'\n ? 'https://send.bitwarden.com/#'\n : this.getWebVaultUrl() + '/#/send/';\n }\n\n getIconsUrl() {\n if (this.iconsUrl != null) {\n return this.iconsUrl;\n }\n\n if (this.baseUrl) {\n return this.baseUrl + '/icons';\n }\n\n return 'https://icons.bitwarden.net';\n }\n\n getApiUrl() {\n if (this.apiUrl != null) {\n return this.apiUrl;\n }\n\n if (this.baseUrl) {\n return this.baseUrl + '/api';\n }\n\n return 'https://api.bitwarden.com';\n }\n\n getIdentityUrl() {\n if (this.identityUrl != null) {\n return this.identityUrl;\n }\n\n if (this.baseUrl) {\n return this.baseUrl + '/identity';\n }\n\n return 'https://identity.bitwarden.com';\n }\n\n getEventsUrl() {\n if (this.eventsUrl != null) {\n return this.eventsUrl;\n }\n\n if (this.baseUrl) {\n return this.baseUrl + '/events';\n }\n\n return 'https://events.bitwarden.com';\n }\n\n getKeyConnectorUrl() {\n return this.keyConnectorUrl;\n }\n\n async setUrlsFromStorage(): Promise {\n const urlsObj: any = await this.storageService.get(ConstantsService.environmentUrlsKey);\n const urls = urlsObj || {\n base: null,\n api: null,\n identity: null,\n icons: null,\n notifications: null,\n events: null,\n webVault: null,\n keyConnector: null,\n };\n\n const envUrls = new EnvironmentUrls();\n\n if (urls.base) {\n this.baseUrl = envUrls.base = urls.base;\n return;\n }\n\n this.webVaultUrl = urls.webVault;\n this.apiUrl = envUrls.api = urls.api;\n this.identityUrl = envUrls.identity = urls.identity;\n this.iconsUrl = urls.icons;\n this.notificationsUrl = urls.notifications;\n this.eventsUrl = envUrls.events = urls.events;\n this.keyConnectorUrl = urls.keyConnector;\n }\n\n async setUrls(urls: Urls, saveSettings: boolean = true): Promise {\n urls.base = this.formatUrl(urls.base);\n urls.webVault = this.formatUrl(urls.webVault);\n urls.api = this.formatUrl(urls.api);\n urls.identity = this.formatUrl(urls.identity);\n urls.icons = this.formatUrl(urls.icons);\n urls.notifications = this.formatUrl(urls.notifications);\n urls.events = this.formatUrl(urls.events);\n urls.keyConnector = this.formatUrl(urls.keyConnector);\n\n if (saveSettings) {\n await this.storageService.save(ConstantsService.environmentUrlsKey, {\n base: urls.base,\n api: urls.api,\n identity: urls.identity,\n webVault: urls.webVault,\n icons: urls.icons,\n notifications: urls.notifications,\n events: urls.events,\n keyConnector: urls.keyConnector,\n });\n }\n\n this.baseUrl = urls.base;\n this.webVaultUrl = urls.webVault;\n this.apiUrl = urls.api;\n this.identityUrl = urls.identity;\n this.iconsUrl = urls.icons;\n this.notificationsUrl = urls.notifications;\n this.eventsUrl = urls.events;\n this.keyConnectorUrl = urls.keyConnector;\n\n this.urlsSubject.next(urls);\n\n return urls;\n }\n\n getUrls() {\n return {\n base: this.baseUrl,\n webVault: this.webVaultUrl,\n api: this.apiUrl,\n identity: this.identityUrl,\n icons: this.iconsUrl,\n notifications: this.notificationsUrl,\n events: this.eventsUrl,\n keyConnector: this.keyConnectorUrl,\n };\n }\n\n private formatUrl(url: string): string {\n if (url == null || url === '') {\n return null;\n }\n\n url = url.replace(/\\/+$/g, '');\n if (!url.startsWith('http://') && !url.startsWith('https://')) {\n url = 'https://' + url;\n }\n\n return url.trim();\n }\n}\n","export class EnvironmentUrls {\n base: string;\n api: string;\n identity: string;\n events: string;\n}\n","import { EventType } from '../enums/eventType';\n\nimport { EventData } from '../models/data/eventData';\n\nimport { EventRequest } from '../models/request/eventRequest';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { CipherService } from '../abstractions/cipher.service';\nimport { EventService as EventServiceAbstraction } from '../abstractions/event.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { LogService } from '../abstractions/log.service';\nimport { ConstantsService } from './constants.service';\n\nexport class EventService implements EventServiceAbstraction {\n private inited = false;\n\n constructor(private storageService: StorageService, private apiService: ApiService,\n private userService: UserService, private cipherService: CipherService,\n private logService: LogService) { }\n\n init(checkOnInterval: boolean) {\n if (this.inited) {\n return;\n }\n\n this.inited = true;\n if (checkOnInterval) {\n this.uploadEvents();\n setInterval(() => this.uploadEvents(), 60 * 1000); // check every 60 seconds\n }\n }\n\n async collect(eventType: EventType, cipherId: string = null, uploadImmediately = false): Promise {\n const authed = await this.userService.isAuthenticated();\n if (!authed) {\n return;\n }\n const organizations = await this.userService.getAllOrganizations();\n if (organizations == null) {\n return;\n }\n const orgIds = new Set(organizations.filter(o => o.useEvents).map(o => o.id));\n if (orgIds.size === 0) {\n return;\n }\n if (cipherId != null) {\n const cipher = await this.cipherService.get(cipherId);\n if (cipher == null || cipher.organizationId == null || !orgIds.has(cipher.organizationId)) {\n return;\n }\n }\n let eventCollection = await this.storageService.get(ConstantsService.eventCollectionKey);\n if (eventCollection == null) {\n eventCollection = [];\n }\n const event = new EventData();\n event.type = eventType;\n event.cipherId = cipherId;\n event.date = new Date().toISOString();\n eventCollection.push(event);\n await this.storageService.save(ConstantsService.eventCollectionKey, eventCollection);\n if (uploadImmediately) {\n await this.uploadEvents();\n }\n }\n\n async uploadEvents(): Promise {\n const authed = await this.userService.isAuthenticated();\n if (!authed) {\n return;\n }\n const eventCollection = await this.storageService.get(ConstantsService.eventCollectionKey);\n if (eventCollection == null || eventCollection.length === 0) {\n return;\n }\n const request = eventCollection.map(e => {\n const req = new EventRequest();\n req.type = e.type;\n req.cipherId = e.cipherId;\n req.date = e.date;\n return req;\n });\n try {\n await this.apiService.postEventsCollect(request);\n this.clearEvents();\n } catch (e) {\n this.logService.error(e);\n }\n }\n\n async clearEvents(): Promise {\n await this.storageService.remove(ConstantsService.eventCollectionKey);\n }\n}\n","import { EventType } from '../../enums/eventType';\n\nexport class EventData {\n type: EventType;\n cipherId: string;\n date: string;\n}\n","import { EventType } from '../../enums/eventType';\n\nexport class EventRequest {\n type: EventType;\n cipherId: string;\n date: string;\n}\n","import * as papa from 'papaparse';\n\nimport { CipherType } from '../enums/cipherType';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { CipherService } from '../abstractions/cipher.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { ExportService as ExportServiceAbstraction } from '../abstractions/export.service';\nimport { FolderService } from '../abstractions/folder.service';\n\nimport { CipherView } from '../models/view/cipherView';\nimport { CollectionView } from '../models/view/collectionView';\nimport { FolderView } from '../models/view/folderView';\n\nimport { Cipher } from '../models/domain/cipher';\nimport { Collection } from '../models/domain/collection';\nimport { Folder } from '../models/domain/folder';\n\nimport { CipherData } from '../models/data/cipherData';\nimport { CollectionData } from '../models/data/collectionData';\nimport { CollectionDetailsResponse } from '../models/response/collectionResponse';\n\nimport { CipherWithIds as CipherExport } from '../models/export/cipherWithIds';\nimport { CollectionWithId as CollectionExport } from '../models/export/collectionWithId';\nimport { Event } from '../models/export/event';\nimport { FolderWithId as FolderExport } from '../models/export/folderWithId';\nimport { EventView } from '../models/view/eventView';\n\nimport { Utils } from '../misc/utils';\n\nexport class ExportService implements ExportServiceAbstraction {\n constructor(private folderService: FolderService, private cipherService: CipherService,\n private apiService: ApiService, private cryptoService: CryptoService) { }\n\n async getExport(format: 'csv' | 'json' | 'encrypted_json' = 'csv'): Promise {\n if (format === 'encrypted_json') {\n return this.getEncryptedExport();\n } else {\n return this.getDecryptedExport(format);\n }\n }\n\n async getOrganizationExport(organizationId: string,\n format: 'csv' | 'json' | 'encrypted_json' = 'csv'): Promise {\n if (format === 'encrypted_json') {\n return this.getOrganizationEncryptedExport(organizationId);\n } else {\n return this.getOrganizationDecryptedExport(organizationId, format);\n }\n }\n\n async getEventExport(events: EventView[]): Promise {\n return papa.unparse(events.map(e => new Event(e)));\n }\n\n getFileName(prefix: string = null, extension: string = 'csv'): string {\n const now = new Date();\n const dateString =\n now.getFullYear() + '' + this.padNumber(now.getMonth() + 1, 2) + '' + this.padNumber(now.getDate(), 2) +\n this.padNumber(now.getHours(), 2) + '' + this.padNumber(now.getMinutes(), 2) +\n this.padNumber(now.getSeconds(), 2);\n\n return 'bitwarden' + (prefix ? ('_' + prefix) : '') + '_export_' + dateString + '.' + extension;\n }\n\n private async getDecryptedExport(format: 'json' | 'csv'): Promise {\n let decFolders: FolderView[] = [];\n let decCiphers: CipherView[] = [];\n const promises = [];\n\n promises.push(this.folderService.getAllDecrypted().then(folders => {\n decFolders = folders;\n }));\n\n promises.push(this.cipherService.getAllDecrypted().then(ciphers => {\n decCiphers = ciphers.filter(f => f.deletedDate == null);\n }));\n\n await Promise.all(promises);\n\n if (format === 'csv') {\n const foldersMap = new Map();\n decFolders.forEach(f => {\n if (f.id != null) {\n foldersMap.set(f.id, f);\n }\n });\n\n const exportCiphers: any[] = [];\n decCiphers.forEach(c => {\n // only export logins and secure notes\n if (c.type !== CipherType.Login && c.type !== CipherType.SecureNote) {\n return;\n }\n if (c.organizationId != null) {\n return;\n }\n\n const cipher: any = {};\n cipher.folder = c.folderId != null && foldersMap.has(c.folderId) ?\n foldersMap.get(c.folderId).name : null;\n cipher.favorite = c.favorite ? 1 : null;\n this.buildCommonCipher(cipher, c);\n exportCiphers.push(cipher);\n });\n\n return papa.unparse(exportCiphers);\n } else {\n const jsonDoc: any = {\n encrypted: false,\n folders: [],\n items: [],\n };\n\n decFolders.forEach(f => {\n if (f.id == null) {\n return;\n }\n const folder = new FolderExport();\n folder.build(f);\n jsonDoc.folders.push(folder);\n });\n\n decCiphers.forEach(c => {\n if (c.organizationId != null) {\n return;\n }\n const cipher = new CipherExport();\n cipher.build(c);\n cipher.collectionIds = null;\n jsonDoc.items.push(cipher);\n });\n\n return JSON.stringify(jsonDoc, null, ' ');\n }\n }\n\n private async getEncryptedExport(): Promise {\n let folders: Folder[] = [];\n let ciphers: Cipher[] = [];\n const promises = [];\n\n promises.push(this.folderService.getAll().then(f => {\n folders = f;\n }));\n\n promises.push(this.cipherService.getAll().then(c => {\n ciphers = c.filter(f => f.deletedDate == null);\n }));\n\n await Promise.all(promises);\n\n const encKeyValidation = await this.cryptoService.encrypt(Utils.newGuid());\n\n const jsonDoc: any = {\n encrypted: true,\n encKeyValidation_DO_NOT_EDIT: encKeyValidation.encryptedString,\n folders: [],\n items: [],\n };\n\n folders.forEach(f => {\n if (f.id == null) {\n return;\n }\n const folder = new FolderExport();\n folder.build(f);\n jsonDoc.folders.push(folder);\n });\n\n ciphers.forEach(c => {\n if (c.organizationId != null) {\n return;\n }\n const cipher = new CipherExport();\n cipher.build(c);\n cipher.collectionIds = null;\n jsonDoc.items.push(cipher);\n });\n\n return JSON.stringify(jsonDoc, null, ' ');\n }\n\n private async getOrganizationDecryptedExport(organizationId: string, format: 'json' | 'csv'): Promise {\n const decCollections: CollectionView[] = [];\n const decCiphers: CipherView[] = [];\n const promises = [];\n\n promises.push(this.apiService.getCollections(organizationId).then(collections => {\n const collectionPromises: any = [];\n if (collections != null && collections.data != null && collections.data.length > 0) {\n collections.data.forEach(c => {\n const collection = new Collection(new CollectionData(c as CollectionDetailsResponse));\n collectionPromises.push(collection.decrypt().then(decCol => {\n decCollections.push(decCol);\n }));\n });\n }\n return Promise.all(collectionPromises);\n }));\n\n promises.push(this.apiService.getCiphersOrganization(organizationId).then(ciphers => {\n const cipherPromises: any = [];\n if (ciphers != null && ciphers.data != null && ciphers.data.length > 0) {\n ciphers.data.filter(c => c.deletedDate === null).forEach(c => {\n const cipher = new Cipher(new CipherData(c));\n cipherPromises.push(cipher.decrypt().then(decCipher => {\n decCiphers.push(decCipher);\n }));\n });\n }\n return Promise.all(cipherPromises);\n }));\n\n await Promise.all(promises);\n\n if (format === 'csv') {\n const collectionsMap = new Map();\n decCollections.forEach(c => {\n collectionsMap.set(c.id, c);\n });\n\n const exportCiphers: any[] = [];\n decCiphers.forEach(c => {\n // only export logins and secure notes\n if (c.type !== CipherType.Login && c.type !== CipherType.SecureNote) {\n return;\n }\n\n const cipher: any = {};\n cipher.collections = [];\n if (c.collectionIds != null) {\n cipher.collections = c.collectionIds.filter(id => collectionsMap.has(id))\n .map(id => collectionsMap.get(id).name);\n }\n this.buildCommonCipher(cipher, c);\n exportCiphers.push(cipher);\n });\n\n return papa.unparse(exportCiphers);\n } else {\n const jsonDoc: any = {\n encrypted: false,\n collections: [],\n items: [],\n };\n\n decCollections.forEach(c => {\n const collection = new CollectionExport();\n collection.build(c);\n jsonDoc.collections.push(collection);\n });\n\n decCiphers.forEach(c => {\n const cipher = new CipherExport();\n cipher.build(c);\n jsonDoc.items.push(cipher);\n });\n return JSON.stringify(jsonDoc, null, ' ');\n }\n }\n\n private async getOrganizationEncryptedExport(organizationId: string): Promise {\n const collections: Collection[] = [];\n const ciphers: Cipher[] = [];\n const promises = [];\n\n promises.push(this.apiService.getCollections(organizationId).then(c => {\n const collectionPromises: any = [];\n if (c != null && c.data != null && c.data.length > 0) {\n c.data.forEach(r => {\n const collection = new Collection(new CollectionData(r as CollectionDetailsResponse));\n collections.push(collection);\n });\n }\n return Promise.all(collectionPromises);\n }));\n\n promises.push(this.apiService.getCiphersOrganization(organizationId).then(c => {\n const cipherPromises: any = [];\n if (c != null && c.data != null && c.data.length > 0) {\n c.data.filter(item => item.deletedDate === null).forEach(item => {\n const cipher = new Cipher(new CipherData(item));\n ciphers.push(cipher);\n });\n }\n return Promise.all(cipherPromises);\n }));\n\n await Promise.all(promises);\n\n const orgKey = await this.cryptoService.getOrgKey(organizationId);\n const encKeyValidation = await this.cryptoService.encrypt(Utils.newGuid(), orgKey);\n\n const jsonDoc: any = {\n encrypted: true,\n encKeyValidation_DO_NOT_EDIT: encKeyValidation.encryptedString,\n collections: [],\n items: [],\n };\n\n collections.forEach(c => {\n const collection = new CollectionExport();\n collection.build(c);\n jsonDoc.collections.push(collection);\n });\n\n ciphers.forEach(c => {\n const cipher = new CipherExport();\n cipher.build(c);\n jsonDoc.items.push(cipher);\n });\n return JSON.stringify(jsonDoc, null, ' ');\n }\n\n private padNumber(num: number, width: number, padCharacter: string = '0'): string {\n const numString = num.toString();\n return numString.length >= width ? numString :\n new Array(width - numString.length + 1).join(padCharacter) + numString;\n }\n\n private buildCommonCipher(cipher: any, c: CipherView) {\n cipher.type = null;\n cipher.name = c.name;\n cipher.notes = c.notes;\n cipher.fields = null;\n cipher.reprompt = c.reprompt;\n // Login props\n cipher.login_uri = null;\n cipher.login_username = null;\n cipher.login_password = null;\n cipher.login_totp = null;\n\n if (c.fields) {\n c.fields.forEach((f: any) => {\n if (!cipher.fields) {\n cipher.fields = '';\n } else {\n cipher.fields += '\\n';\n }\n\n cipher.fields += ((f.name || '') + ': ' + f.value);\n });\n }\n\n switch (c.type) {\n case CipherType.Login:\n cipher.type = 'login';\n cipher.login_username = c.login.username;\n cipher.login_password = c.login.password;\n cipher.login_totp = c.login.totp;\n\n if (c.login.uris) {\n cipher.login_uri = [];\n c.login.uris.forEach(u => {\n cipher.login_uri.push(u.uri);\n });\n }\n break;\n case CipherType.SecureNote:\n cipher.type = 'note';\n break;\n default:\n return;\n }\n\n return cipher;\n }\n}\n","import { CipherRepromptType } from '../../enums/cipherRepromptType';\nimport { CipherType } from '../../enums/cipherType';\n\nimport { CipherView } from '../view/cipherView';\n\nimport { Cipher as CipherDomain } from '../domain/cipher';\nimport { EncString } from '../domain/encString';\n\nimport { Card } from './card';\nimport { Field } from './field';\nimport { Identity } from './identity';\nimport { Login } from './login';\nimport { SecureNote } from './secureNote';\n\nexport class Cipher {\n static template(): Cipher {\n const req = new Cipher();\n req.organizationId = null;\n req.collectionIds = null;\n req.folderId = null;\n req.type = CipherType.Login;\n req.name = 'Item name';\n req.notes = 'Some notes about this item.';\n req.favorite = false;\n req.fields = [];\n req.login = null;\n req.secureNote = null;\n req.card = null;\n req.identity = null;\n req.reprompt = CipherRepromptType.None;\n return req;\n }\n\n static toView(req: Cipher, view = new CipherView()) {\n view.type = req.type;\n view.folderId = req.folderId;\n if (view.organizationId == null) {\n view.organizationId = req.organizationId;\n }\n if (view.collectionIds || req.collectionIds) {\n const set = new Set((view.collectionIds ?? []).concat(req.collectionIds ?? []));\n view.collectionIds = Array.from(set.values());\n }\n view.name = req.name;\n view.notes = req.notes;\n view.favorite = req.favorite;\n view.reprompt = req.reprompt ?? CipherRepromptType.None;\n\n if (req.fields != null) {\n view.fields = req.fields.map(f => Field.toView(f));\n }\n\n switch (req.type) {\n case CipherType.Login:\n view.login = Login.toView(req.login);\n break;\n case CipherType.SecureNote:\n view.secureNote = SecureNote.toView(req.secureNote);\n break;\n case CipherType.Card:\n view.card = Card.toView(req.card);\n break;\n case CipherType.Identity:\n view.identity = Identity.toView(req.identity);\n break;\n }\n\n return view;\n }\n\n static toDomain(req: Cipher, domain = new CipherDomain()) {\n domain.type = req.type;\n domain.folderId = req.folderId;\n if (domain.organizationId == null) {\n domain.organizationId = req.organizationId;\n }\n domain.name = req.name != null ? new EncString(req.name) : null;\n domain.notes = req.notes != null ? new EncString(req.notes) : null;\n domain.favorite = req.favorite;\n domain.reprompt = req.reprompt ?? CipherRepromptType.None;\n\n if (req.fields != null) {\n domain.fields = req.fields.map(f => Field.toDomain(f));\n }\n\n switch (req.type) {\n case CipherType.Login:\n domain.login = Login.toDomain(req.login);\n break;\n case CipherType.SecureNote:\n domain.secureNote = SecureNote.toDomain(req.secureNote);\n break;\n case CipherType.Card:\n domain.card = Card.toDomain(req.card);\n break;\n case CipherType.Identity:\n domain.identity = Identity.toDomain(req.identity);\n break;\n }\n\n return domain;\n }\n\n type: CipherType;\n folderId: string;\n organizationId: string;\n collectionIds: string[];\n name: string;\n notes: string;\n favorite: boolean;\n fields: Field[];\n login: Login;\n secureNote: SecureNote;\n card: Card;\n identity: Identity;\n reprompt: CipherRepromptType;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: CipherView | CipherDomain) {\n this.organizationId = o.organizationId;\n this.folderId = o.folderId;\n this.type = o.type;\n this.reprompt = o.reprompt;\n\n if (o instanceof CipherView) {\n this.name = o.name;\n this.notes = o.notes;\n } else {\n this.name = o.name?.encryptedString;\n this.notes = o.notes?.encryptedString;\n }\n\n this.favorite = o.favorite;\n\n if (o.fields != null) {\n if (o instanceof CipherView) {\n this.fields = o.fields.map(f => new Field(f));\n } else {\n this.fields = o.fields.map(f => new Field(f));\n }\n }\n\n switch (o.type) {\n case CipherType.Login:\n this.login = new Login(o.login);\n break;\n case CipherType.SecureNote:\n this.secureNote = new SecureNote(o.secureNote);\n break;\n case CipherType.Card:\n this.card = new Card(o.card);\n break;\n case CipherType.Identity:\n this.identity = new Identity(o.identity);\n break;\n }\n }\n}\n","import { CardView } from '../view/cardView';\n\nimport { Card as CardDomain } from '../domain/card';\nimport { EncString } from '../domain/encString';\n\nexport class Card {\n static template(): Card {\n const req = new Card();\n req.cardholderName = 'John Doe';\n req.brand = 'visa';\n req.number = '4242424242424242';\n req.expMonth = '04';\n req.expYear = '2023';\n req.code = '123';\n return req;\n }\n\n static toView(req: Card, view = new CardView()) {\n view.cardholderName = req.cardholderName;\n view.brand = req.brand;\n view.number = req.number;\n view.expMonth = req.expMonth;\n view.expYear = req.expYear;\n view.code = req.code;\n return view;\n }\n\n static toDomain(req: Card, domain = new CardDomain()) {\n domain.cardholderName = req.cardholderName != null ? new EncString(req.cardholderName) : null;\n domain.brand = req.brand != null ? new EncString(req.brand) : null;\n domain.number = req.number != null ? new EncString(req.number) : null;\n domain.expMonth = req.expMonth != null ? new EncString(req.expMonth) : null;\n domain.expYear = req.expYear != null ? new EncString(req.expYear) : null;\n domain.code = req.code != null ? new EncString(req.code) : null;\n return domain;\n }\n\n cardholderName: string;\n brand: string;\n number: string;\n expMonth: string;\n expYear: string;\n code: string;\n\n constructor(o?: CardView | CardDomain) {\n if (o == null) {\n return;\n }\n\n if (o instanceof CardView) {\n this.cardholderName = o.cardholderName;\n this.brand = o.brand;\n this.number = o.number;\n this.expMonth = o.expMonth;\n this.expYear = o.expYear;\n this.code = o.code;\n } else {\n this.cardholderName = o.cardholderName?.encryptedString;\n this.brand = o.brand?.encryptedString;\n this.number = o.number?.encryptedString;\n this.expMonth = o.expMonth?.encryptedString;\n this.expYear = o.expYear?.encryptedString;\n this.code = o.code?.encryptedString;\n }\n }\n}\n","import { FieldType } from '../../enums/fieldType';\nimport { LinkedIdType } from '../../enums/linkedIdType';\n\nimport { FieldView } from '../view/fieldView';\n\nimport { EncString } from '../domain/encString';\nimport { Field as FieldDomain } from '../domain/field';\n\nexport class Field {\n static template(): Field {\n const req = new Field();\n req.name = 'Field name';\n req.value = 'Some value';\n req.type = FieldType.Text;\n return req;\n }\n\n static toView(req: Field, view = new FieldView()) {\n view.type = req.type;\n view.value = req.value;\n view.name = req.name;\n view.linkedId = req.linkedId;\n return view;\n }\n\n static toDomain(req: Field, domain = new FieldDomain()) {\n domain.type = req.type;\n domain.value = req.value != null ? new EncString(req.value) : null;\n domain.name = req.name != null ? new EncString(req.name) : null;\n domain.linkedId = req.linkedId;\n return domain;\n }\n\n name: string;\n value: string;\n type: FieldType;\n linkedId: LinkedIdType;\n\n constructor(o?: FieldView | FieldDomain) {\n if (o == null) {\n return;\n }\n\n if (o instanceof FieldView) {\n this.name = o.name;\n this.value = o.value;\n } else {\n this.name = o.name?.encryptedString;\n this.value = o.value?.encryptedString;\n }\n this.type = o.type;\n this.linkedId = o.linkedId;\n }\n}\n","import { IdentityView } from '../view/identityView';\n\nimport { EncString } from '../domain/encString';\nimport { Identity as IdentityDomain } from '../domain/identity';\n\nexport class Identity {\n static template(): Identity {\n const req = new Identity();\n req.title = 'Mr';\n req.firstName = 'John';\n req.middleName = 'William';\n req.lastName = 'Doe';\n req.address1 = '123 Any St';\n req.address2 = 'Apt #123';\n req.address3 = null;\n req.city = 'New York';\n req.state = 'NY';\n req.postalCode = '10001';\n req.country = 'US';\n req.company = 'Acme Inc.';\n req.email = 'john@company.com';\n req.phone = '5555551234';\n req.ssn = '000-123-4567';\n req.username = 'jdoe';\n req.passportNumber = 'US-123456789';\n req.licenseNumber = 'D123-12-123-12333';\n return req;\n }\n\n static toView(req: Identity, view = new IdentityView()) {\n view.title = req.title;\n view.firstName = req.firstName;\n view.middleName = req.middleName;\n view.lastName = req.lastName;\n view.address1 = req.address1;\n view.address2 = req.address2;\n view.address3 = req.address3;\n view.city = req.city;\n view.state = req.state;\n view.postalCode = req.postalCode;\n view.country = req.country;\n view.company = req.company;\n view.email = req.email;\n view.phone = req.phone;\n view.ssn = req.ssn;\n view.username = req.username;\n view.passportNumber = req.passportNumber;\n view.licenseNumber = req.licenseNumber;\n return view;\n }\n\n static toDomain(req: Identity, domain = new IdentityDomain()) {\n domain.title = req.title != null ? new EncString(req.title) : null;\n domain.firstName = req.firstName != null ? new EncString(req.firstName) : null;\n domain.middleName = req.middleName != null ? new EncString(req.middleName) : null;\n domain.lastName = req.lastName != null ? new EncString(req.lastName) : null;\n domain.address1 = req.address1 != null ? new EncString(req.address1) : null;\n domain.address2 = req.address2 != null ? new EncString(req.address2) : null;\n domain.address3 = req.address3 != null ? new EncString(req.address3) : null;\n domain.city = req.city != null ? new EncString(req.city) : null;\n domain.state = req.state != null ? new EncString(req.state) : null;\n domain.postalCode = req.postalCode != null ? new EncString(req.postalCode) : null;\n domain.country = req.country != null ? new EncString(req.country) : null;\n domain.company = req.company != null ? new EncString(req.company) : null;\n domain.email = req.email != null ? new EncString(req.email) : null;\n domain.phone = req.phone != null ? new EncString(req.phone) : null;\n domain.ssn = req.ssn != null ? new EncString(req.ssn) : null;\n domain.username = req.username != null ? new EncString(req.username) : null;\n domain.passportNumber = req.passportNumber != null ? new EncString(req.passportNumber) : null;\n domain.licenseNumber = req.licenseNumber != null ? new EncString(req.licenseNumber) : null;\n return domain;\n }\n\n title: string;\n firstName: string;\n middleName: string;\n lastName: string;\n address1: string;\n address2: string;\n address3: string;\n city: string;\n state: string;\n postalCode: string;\n country: string;\n company: string;\n email: string;\n phone: string;\n ssn: string;\n username: string;\n passportNumber: string;\n licenseNumber: string;\n\n constructor(o?: IdentityView | IdentityDomain) {\n if (o == null) {\n return;\n }\n\n if (o instanceof IdentityView) {\n this.title = o.title;\n this.firstName = o.firstName;\n this.middleName = o.middleName;\n this.lastName = o.lastName;\n this.address1 = o.address1;\n this.address2 = o.address2;\n this.address3 = o.address3;\n this.city = o.city;\n this.state = o.state;\n this.postalCode = o.postalCode;\n this.country = o.country;\n this.company = o.company;\n this.email = o.email;\n this.phone = o.phone;\n this.ssn = o.ssn;\n this.username = o.username;\n this.passportNumber = o.passportNumber;\n this.licenseNumber = o.licenseNumber;\n } else {\n this.title = o.title?.encryptedString;\n this.firstName = o.firstName?.encryptedString;\n this.middleName = o.middleName?.encryptedString;\n this.lastName = o.lastName?.encryptedString;\n this.address1 = o.address1?.encryptedString;\n this.address2 = o.address2?.encryptedString;\n this.address3 = o.address3?.encryptedString;\n this.city = o.city?.encryptedString;\n this.state = o.state?.encryptedString;\n this.postalCode = o.postalCode?.encryptedString;\n this.country = o.country?.encryptedString;\n this.company = o.company?.encryptedString;\n this.email = o.email?.encryptedString;\n this.phone = o.phone?.encryptedString;\n this.ssn = o.ssn?.encryptedString;\n this.username = o.username?.encryptedString;\n this.passportNumber = o.passportNumber?.encryptedString;\n this.licenseNumber = o.licenseNumber?.encryptedString;\n }\n }\n}\n","import { LoginUri } from './loginUri';\n\nimport { LoginView } from '../view/loginView';\n\nimport { EncString } from '../domain/encString';\nimport { Login as LoginDomain } from '../domain/login';\n\nexport class Login {\n static template(): Login {\n const req = new Login();\n req.uris = [];\n req.username = 'jdoe';\n req.password = 'myp@ssword123';\n req.totp = 'JBSWY3DPEHPK3PXP';\n return req;\n }\n\n static toView(req: Login, view = new LoginView()) {\n if (req.uris != null) {\n view.uris = req.uris.map(u => LoginUri.toView(u));\n }\n view.username = req.username;\n view.password = req.password;\n view.totp = req.totp;\n return view;\n }\n\n static toDomain(req: Login, domain = new LoginDomain()) {\n if (req.uris != null) {\n domain.uris = req.uris.map(u => LoginUri.toDomain(u));\n }\n domain.username = req.username != null ? new EncString(req.username) : null;\n domain.password = req.password != null ? new EncString(req.password) : null;\n domain.totp = req.totp != null ? new EncString(req.totp) : null;\n return domain;\n }\n\n uris: LoginUri[];\n username: string;\n password: string;\n totp: string;\n\n constructor(o?: LoginView | LoginDomain) {\n if (o == null) {\n return;\n }\n\n if (o.uris != null) {\n if (o instanceof LoginView) {\n this.uris = o.uris.map(u => new LoginUri(u));\n } else {\n this.uris = o.uris.map(u => new LoginUri(u));\n }\n }\n\n if (o instanceof LoginView) {\n this.username = o.username;\n this.password = o.password;\n this.totp = o.totp;\n } else {\n this.username = o.username?.encryptedString;\n this.password = o.password?.encryptedString;\n this.totp = o.totp?.encryptedString;\n }\n }\n}\n","import { UriMatchType } from '../../enums/uriMatchType';\n\nimport { LoginUriView } from '../view/loginUriView';\n\nimport { EncString } from '../domain/encString';\nimport { LoginUri as LoginUriDomain } from '../domain/loginUri';\n\nexport class LoginUri {\n static template(): LoginUri {\n const req = new LoginUri();\n req.uri = 'https://google.com';\n req.match = null;\n return req;\n }\n\n static toView(req: LoginUri, view = new LoginUriView()) {\n view.uri = req.uri;\n view.match = req.match;\n return view;\n }\n\n static toDomain(req: LoginUri, domain = new LoginUriDomain()) {\n domain.uri = req.uri != null ? new EncString(req.uri) : null;\n domain.match = req.match;\n return domain;\n }\n\n uri: string;\n match: UriMatchType = null;\n\n constructor(o?: LoginUriView | LoginUriDomain) {\n if (o == null) {\n return;\n }\n\n if (o instanceof LoginUriView) {\n this.uri = o.uri;\n } else {\n this.uri = o.uri?.encryptedString;\n }\n this.match = o.match;\n }\n}\n","import { SecureNoteType } from '../../enums/secureNoteType';\n\nimport { SecureNoteView } from '../view/secureNoteView';\n\nimport { SecureNote as SecureNoteDomain } from '../domain/secureNote';\n\nexport class SecureNote {\n static template(): SecureNote {\n const req = new SecureNote();\n req.type = SecureNoteType.Generic;\n return req;\n }\n\n static toView(req: SecureNote, view = new SecureNoteView()) {\n view.type = req.type;\n return view;\n }\n\n static toDomain(req: SecureNote, view = new SecureNoteDomain()) {\n view.type = req.type;\n return view;\n }\n\n type: SecureNoteType;\n\n constructor(o?: SecureNoteView | SecureNoteDomain) {\n if (o == null) {\n return;\n }\n\n this.type = o.type;\n }\n}\n","import { CollectionView } from '../view/collectionView';\n\nimport { Collection as CollectionDomain } from '../domain/collection';\nimport { EncString } from '../domain/encString';\n\nexport class Collection {\n static template(): Collection {\n const req = new Collection();\n req.organizationId = '00000000-0000-0000-0000-000000000000';\n req.name = 'Collection name';\n req.externalId = null;\n return req;\n }\n\n static toView(req: Collection, view = new CollectionView()) {\n view.name = req.name;\n view.externalId = req.externalId;\n if (view.organizationId == null) {\n view.organizationId = req.organizationId;\n }\n return view;\n }\n\n static toDomain(req: Collection, domain = new CollectionDomain()) {\n domain.name = req.name != null ? new EncString(req.name) : null;\n domain.externalId = req.externalId;\n if (domain.organizationId == null) {\n domain.organizationId = req.organizationId;\n }\n return domain;\n }\n\n organizationId: string;\n name: string;\n externalId: string;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: CollectionView | CollectionDomain) {\n this.organizationId = o.organizationId;\n if (o instanceof CollectionView) {\n this.name = o.name;\n } else {\n this.name = o.name?.encryptedString;\n }\n this.externalId = o.externalId;\n }\n}\n","import { EventType } from '../../enums/eventType';\nimport { EventView } from '../view/eventView';\n\nexport class Event {\n message: string;\n appIcon: string;\n appName: string;\n userId: string;\n userName: string;\n userEmail: string;\n date: string;\n ip: string;\n type: string;\n\n constructor(event: EventView) {\n this.message = event.humanReadableMessage;\n this.appIcon = event.appIcon;\n this.appName = event.appName;\n this.userId = event.userId;\n this.userName = event.userName;\n this.userEmail = event.userEmail;\n this.date = event.date;\n this.ip = event.ip;\n this.type = EventType[event.type];\n }\n}\n","import { FolderView } from '../view/folderView';\n\nimport { EncString } from '../domain/encString';\nimport { Folder as FolderDomain } from '../domain/folder';\n\nexport class Folder {\n static template(): Folder {\n const req = new Folder();\n req.name = 'Folder name';\n return req;\n }\n\n static toView(req: Folder, view = new FolderView()) {\n view.name = req.name;\n return view;\n }\n\n static toDomain(req: Folder, domain = new FolderDomain()) {\n domain.name = req.name != null ? new EncString(req.name) : null;\n return domain;\n }\n\n name: string;\n\n // Use build method instead of ctor so that we can control order of JSON stringify for pretty print\n build(o: FolderView | FolderDomain) {\n if (o instanceof FolderView) {\n this.name = o.name;\n } else {\n this.name = o.name?.encryptedString;\n }\n }\n}\n","import { ApiService } from '../abstractions/api.service';\nimport { FileUploadService as FileUploadServiceAbstraction } from '../abstractions/fileUpload.service';\nimport { LogService } from '../abstractions/log.service';\n\nimport { FileUploadType } from '../enums/fileUploadType';\n\nimport { EncArrayBuffer } from '../models/domain/encArrayBuffer';\nimport { EncString } from '../models/domain/encString';\n\nimport { AttachmentUploadDataResponse } from '../models/response/attachmentUploadDataResponse';\nimport { SendFileUploadDataResponse } from '../models/response/sendFileUploadDataResponse';\n\nimport { AzureFileUploadService } from './azureFileUpload.service';\nimport { BitwardenFileUploadService } from './bitwardenFileUpload.service';\n\nexport class FileUploadService implements FileUploadServiceAbstraction {\n private azureFileUploadService: AzureFileUploadService;\n private bitwardenFileUploadService: BitwardenFileUploadService;\n\n constructor(private logService: LogService, private apiService: ApiService) {\n this.azureFileUploadService = new AzureFileUploadService(logService);\n this.bitwardenFileUploadService = new BitwardenFileUploadService(apiService);\n }\n\n async uploadSendFile(uploadData: SendFileUploadDataResponse, fileName: EncString, encryptedFileData: EncArrayBuffer) {\n try {\n switch (uploadData.fileUploadType) {\n case FileUploadType.Direct:\n await this.bitwardenFileUploadService.upload(fileName.encryptedString, encryptedFileData,\n fd => this.apiService.postSendFile(uploadData.sendResponse.id, uploadData.sendResponse.file.id, fd));\n break;\n case FileUploadType.Azure:\n const renewalCallback = async () => {\n const renewalResponse = await this.apiService.renewSendFileUploadUrl(uploadData.sendResponse.id,\n uploadData.sendResponse.file.id);\n return renewalResponse.url;\n };\n await this.azureFileUploadService.upload(uploadData.url, encryptedFileData,\n renewalCallback);\n break;\n default:\n throw new Error('Unknown file upload type');\n }\n } catch (e) {\n await this.apiService.deleteSend(uploadData.sendResponse.id);\n throw e;\n }\n }\n\n async uploadCipherAttachment(admin: boolean, uploadData: AttachmentUploadDataResponse, encryptedFileName: EncString,\n encryptedFileData: EncArrayBuffer) {\n const response = admin ? uploadData.cipherMiniResponse : uploadData.cipherResponse;\n try {\n switch (uploadData.fileUploadType) {\n case FileUploadType.Direct:\n await this.bitwardenFileUploadService.upload(encryptedFileName.encryptedString, encryptedFileData,\n fd => this.apiService.postAttachmentFile(response.id, uploadData.attachmentId, fd));\n break;\n case FileUploadType.Azure:\n const renewalCallback = async () => {\n const renewalResponse = await this.apiService.renewAttachmentUploadUrl(response.id,\n uploadData.attachmentId);\n return renewalResponse.url;\n };\n await this.azureFileUploadService.upload(uploadData.url, encryptedFileData, renewalCallback);\n break;\n default:\n throw new Error('Unknown file upload type.');\n }\n } catch (e) {\n if (admin) {\n await this.apiService.deleteCipherAttachmentAdmin(response.id, uploadData.attachmentId);\n } else {\n await this.apiService.deleteCipherAttachment(response.id, uploadData.attachmentId);\n }\n throw e;\n }\n }\n}\n","export enum FileUploadType {\n Direct = 0,\n Azure = 1,\n}\n","import { LogService } from '../abstractions/log.service';\n\nimport { Utils } from '../misc/utils';\n\nimport { EncArrayBuffer } from '../models/domain/encArrayBuffer';\n\nconst MAX_SINGLE_BLOB_UPLOAD_SIZE = 256 * 1024 * 1024; // 256 MiB\nconst MAX_BLOCKS_PER_BLOB = 50000;\n\nexport class AzureFileUploadService {\n constructor(private logService: LogService) { }\n\n async upload(url: string, data: EncArrayBuffer, renewalCallback: () => Promise) {\n if (data.buffer.byteLength <= MAX_SINGLE_BLOB_UPLOAD_SIZE) {\n return await this.azureUploadBlob(url, data);\n } else {\n return await this.azureUploadBlocks(url, data, renewalCallback);\n }\n }\n private async azureUploadBlob(url: string, data: EncArrayBuffer) {\n const urlObject = Utils.getUrl(url);\n const headers = new Headers({\n 'x-ms-date': new Date().toUTCString(),\n 'x-ms-version': urlObject.searchParams.get('sv'),\n 'Content-Length': data.buffer.byteLength.toString(),\n 'x-ms-blob-type': 'BlockBlob',\n });\n\n const request = new Request(url, {\n body: data.buffer,\n cache: 'no-store',\n method: 'PUT',\n headers: headers,\n });\n\n const blobResponse = await fetch(request);\n\n if (blobResponse.status !== 201) {\n throw new Error(`Failed to create Azure blob: ${blobResponse.status}`);\n }\n }\n private async azureUploadBlocks(url: string, data: EncArrayBuffer, renewalCallback: () => Promise) {\n const baseUrl = Utils.getUrl(url);\n const blockSize = this.getMaxBlockSize(baseUrl.searchParams.get('sv'));\n let blockIndex = 0;\n const numBlocks = Math.ceil(data.buffer.byteLength / blockSize);\n const blocksStaged: string[] = [];\n\n if (numBlocks > MAX_BLOCKS_PER_BLOB) {\n throw new Error(`Cannot upload file, exceeds maximum size of ${blockSize * MAX_BLOCKS_PER_BLOB}`);\n }\n\n try {\n while (blockIndex < numBlocks) {\n url = await this.renewUrlIfNecessary(url, renewalCallback);\n const blockUrl = Utils.getUrl(url);\n const blockId = this.encodedBlockId(blockIndex);\n blockUrl.searchParams.append('comp', 'block');\n blockUrl.searchParams.append('blockid', blockId);\n const start = blockIndex * blockSize;\n const blockData = data.buffer.slice(start, start + blockSize);\n const blockHeaders = new Headers({\n 'x-ms-date': new Date().toUTCString(),\n 'x-ms-version': blockUrl.searchParams.get('sv'),\n 'Content-Length': blockData.byteLength.toString(),\n });\n\n const blockRequest = new Request(blockUrl.toString(), {\n body: blockData,\n cache: 'no-store',\n method: 'PUT',\n headers: blockHeaders,\n });\n\n const blockResponse = await fetch(blockRequest);\n\n if (blockResponse.status !== 201) {\n const message = `Unsuccessful block PUT. Received status ${blockResponse.status}`;\n this.logService.error(message + '\\n' + await blockResponse.json());\n throw new Error(message);\n }\n\n blocksStaged.push(blockId);\n blockIndex++;\n }\n\n url = await this.renewUrlIfNecessary(url, renewalCallback);\n const blockListUrl = Utils.getUrl(url);\n const blockListXml = this.blockListXml(blocksStaged);\n blockListUrl.searchParams.append('comp', 'blocklist');\n const headers = new Headers({\n 'x-ms-date': new Date().toUTCString(),\n 'x-ms-version': blockListUrl.searchParams.get('sv'),\n 'Content-Length': blockListXml.length.toString(),\n });\n\n const request = new Request(blockListUrl.toString(), {\n body: blockListXml,\n cache: 'no-store',\n method: 'PUT',\n headers: headers,\n });\n\n const response = await fetch(request);\n\n if (response.status !== 201) {\n const message = `Unsuccessful block list PUT. Received status ${response.status}`;\n this.logService.error(message + '\\n' + await response.json());\n throw new Error(message);\n }\n } catch (e) {\n throw e;\n }\n }\n\n private async renewUrlIfNecessary(url: string, renewalCallback: () => Promise): Promise {\n const urlObject = Utils.getUrl(url);\n const expiry = new Date(urlObject.searchParams.get('se') ?? '');\n\n if (isNaN(expiry.getTime())) {\n expiry.setTime(Date.now() + 3600000);\n }\n\n if (expiry.getTime() < Date.now() + 1000) {\n return await renewalCallback();\n }\n return url;\n }\n\n private encodedBlockId(blockIndex: number) {\n // Encoded blockId max size is 64, so pre-encoding max size is 48\n const utfBlockId = ('000000000000000000000000000000000000000000000000' + blockIndex.toString()).slice(-48);\n return Utils.fromUtf8ToB64(utfBlockId);\n }\n\n private blockListXml(blockIdList: string[]) {\n let xml = '';\n blockIdList.forEach(blockId => {\n xml += `${blockId}`;\n });\n xml += '';\n return xml;\n }\n\n private getMaxBlockSize(version: string) {\n if (Version.compare(version, '2019-12-12') >= 0) {\n return 4000 * 1024 * 1024; // 4000 MiB\n } else if (Version.compare(version, '2016-05-31') >= 0) {\n return 100 * 1024 * 1024; // 100 MiB\n } else {\n return 4 * 1024 * 1024; // 4 MiB\n }\n }\n}\n\nclass Version {\n /**\n * Compares two Azure Versions against each other\n * @param a Version to compare\n * @param b Version to compare\n * @returns a number less than zero if b is newer than a, 0 if equal,\n * and greater than zero if a is newer than b\n */\n static compare(a: Required | string, b: Required | string) {\n if (typeof (a) === 'string') {\n a = new Version(a);\n }\n\n if (typeof (b) === 'string') {\n b = new Version(b);\n }\n\n return a.year !== b.year ? a.year - b.year :\n a.month !== b.month ? a.month - b.month :\n a.day !== b.day ? a.day - b.day :\n 0;\n }\n year = 0;\n month = 0;\n day = 0;\n\n constructor(version: string) {\n try {\n const parts = version.split('-').map(v => Number.parseInt(v, 10));\n this.year = parts[0];\n this.month = parts[1];\n this.day = parts[2];\n } catch {\n // Ignore error\n }\n }\n /**\n * Compares two Azure Versions against each other\n * @param compareTo Version to compare against\n * @returns a number less than zero if compareTo is newer, 0 if equal,\n * and greater than zero if this is greater than compareTo\n */\n compare(compareTo: Required | string) {\n return Version.compare(this, compareTo);\n }\n}\n","import { ApiService } from '../abstractions/api.service';\n\nimport { EncArrayBuffer } from '../models/domain/encArrayBuffer';\n\nimport { Utils } from '../misc/utils';\n\nexport class BitwardenFileUploadService\n{\n constructor(private apiService: ApiService) { }\n\n async upload(encryptedFileName: string, encryptedFileData: EncArrayBuffer, apiCall: (fd: FormData) => Promise) {\n const fd = new FormData();\n try {\n const blob = new Blob([encryptedFileData.buffer], { type: 'application/octet-stream' });\n fd.append('data', blob, encryptedFileName);\n } catch (e) {\n if (Utils.isNode && !Utils.isBrowser) {\n fd.append('data', Buffer.from(encryptedFileData.buffer) as any, {\n filepath: encryptedFileName,\n contentType: 'application/octet-stream',\n } as any);\n } else {\n throw e;\n }\n }\n\n await apiCall(fd);\n }\n}\n","import { FolderData } from '../models/data/folderData';\n\nimport { Folder } from '../models/domain/folder';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\nimport { TreeNode } from '../models/domain/treeNode';\n\nimport { FolderRequest } from '../models/request/folderRequest';\n\nimport { FolderResponse } from '../models/response/folderResponse';\n\nimport { FolderView } from '../models/view/folderView';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { CipherService } from '../abstractions/cipher.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { FolderService as FolderServiceAbstraction } from '../abstractions/folder.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\nimport { CipherData } from '../models/data/cipherData';\n\nimport { ServiceUtils } from '../misc/serviceUtils';\nimport { Utils } from '../misc/utils';\n\nconst Keys = {\n foldersPrefix: 'folders_',\n ciphersPrefix: 'ciphers_',\n};\nconst NestingDelimiter = '/';\n\nexport class FolderService implements FolderServiceAbstraction {\n decryptedFolderCache: FolderView[];\n\n constructor(private cryptoService: CryptoService, private userService: UserService,\n private apiService: ApiService, private storageService: StorageService,\n private i18nService: I18nService, private cipherService: CipherService) { }\n\n clearCache(): void {\n this.decryptedFolderCache = null;\n }\n\n async encrypt(model: FolderView, key?: SymmetricCryptoKey): Promise {\n const folder = new Folder();\n folder.id = model.id;\n folder.name = await this.cryptoService.encrypt(model.name, key);\n return folder;\n }\n\n async get(id: string): Promise {\n const userId = await this.userService.getUserId();\n const folders = await this.storageService.get<{ [id: string]: FolderData; }>(\n Keys.foldersPrefix + userId);\n if (folders == null || !folders.hasOwnProperty(id)) {\n return null;\n }\n\n return new Folder(folders[id]);\n }\n\n async getAll(): Promise {\n const userId = await this.userService.getUserId();\n const folders = await this.storageService.get<{ [id: string]: FolderData; }>(\n Keys.foldersPrefix + userId);\n const response: Folder[] = [];\n for (const id in folders) {\n if (folders.hasOwnProperty(id)) {\n response.push(new Folder(folders[id]));\n }\n }\n return response;\n }\n\n async getAllDecrypted(): Promise {\n if (this.decryptedFolderCache != null) {\n return this.decryptedFolderCache;\n }\n\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n throw new Error('No key.');\n }\n\n const decFolders: FolderView[] = [];\n const promises: Promise[] = [];\n const folders = await this.getAll();\n folders.forEach(folder => {\n promises.push(folder.decrypt().then(f => decFolders.push(f)));\n });\n\n await Promise.all(promises);\n decFolders.sort(Utils.getSortFunction(this.i18nService, 'name'));\n\n const noneFolder = new FolderView();\n noneFolder.name = this.i18nService.t('noneFolder');\n decFolders.push(noneFolder);\n\n this.decryptedFolderCache = decFolders;\n return this.decryptedFolderCache;\n }\n\n async getAllNested(): Promise[]> {\n const folders = await this.getAllDecrypted();\n const nodes: TreeNode[] = [];\n folders.forEach(f => {\n const folderCopy = new FolderView();\n folderCopy.id = f.id;\n folderCopy.revisionDate = f.revisionDate;\n const parts = f.name != null ? f.name.replace(/^\\/+|\\/+$/g, '').split(NestingDelimiter) : [];\n ServiceUtils.nestedTraverse(nodes, 0, parts, folderCopy, null, NestingDelimiter);\n });\n return nodes;\n }\n\n async getNested(id: string): Promise> {\n const folders = await this.getAllNested();\n return ServiceUtils.getTreeNodeObject(folders, id) as TreeNode;\n }\n\n async saveWithServer(folder: Folder): Promise {\n const request = new FolderRequest(folder);\n\n let response: FolderResponse;\n if (folder.id == null) {\n response = await this.apiService.postFolder(request);\n folder.id = response.id;\n } else {\n response = await this.apiService.putFolder(folder.id, request);\n }\n\n const userId = await this.userService.getUserId();\n const data = new FolderData(response, userId);\n await this.upsert(data);\n }\n\n async upsert(folder: FolderData | FolderData[]): Promise {\n const userId = await this.userService.getUserId();\n let folders = await this.storageService.get<{ [id: string]: FolderData; }>(\n Keys.foldersPrefix + userId);\n if (folders == null) {\n folders = {};\n }\n\n if (folder instanceof FolderData) {\n const f = folder as FolderData;\n folders[f.id] = f;\n } else {\n (folder as FolderData[]).forEach(f => {\n folders[f.id] = f;\n });\n }\n\n await this.storageService.save(Keys.foldersPrefix + userId, folders);\n this.decryptedFolderCache = null;\n }\n\n async replace(folders: { [id: string]: FolderData; }): Promise {\n const userId = await this.userService.getUserId();\n await this.storageService.save(Keys.foldersPrefix + userId, folders);\n this.decryptedFolderCache = null;\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.foldersPrefix + userId);\n this.decryptedFolderCache = null;\n }\n\n async delete(id: string | string[]): Promise {\n const userId = await this.userService.getUserId();\n const folders = await this.storageService.get<{ [id: string]: FolderData; }>(\n Keys.foldersPrefix + userId);\n if (folders == null) {\n return;\n }\n\n if (typeof id === 'string') {\n if (folders[id] == null) {\n return;\n }\n delete folders[id];\n } else {\n (id as string[]).forEach(i => {\n delete folders[i];\n });\n }\n\n await this.storageService.save(Keys.foldersPrefix + userId, folders);\n this.decryptedFolderCache = null;\n\n // Items in a deleted folder are re-assigned to \"No Folder\"\n const ciphers = await this.storageService.get<{ [id: string]: CipherData; }>(Keys.ciphersPrefix + userId);\n if (ciphers != null) {\n const updates: CipherData[] = [];\n for (const cId in ciphers) {\n if (ciphers[cId].folderId === id) {\n ciphers[cId].folderId = null;\n updates.push(ciphers[cId]);\n }\n }\n if (updates.length > 0) {\n this.cipherService.upsert(updates);\n }\n }\n }\n\n async deleteWithServer(id: string): Promise {\n await this.apiService.deleteFolder(id);\n await this.delete(id);\n }\n}\n","import { ApiService } from '../abstractions/api.service';\nimport { CipherService } from '../abstractions/cipher.service';\nimport { CollectionService } from '../abstractions/collection.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { FolderService } from '../abstractions/folder.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport {\n ImportOption,\n ImportService as ImportServiceAbstraction,\n} from '../abstractions/import.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherType } from '../enums/cipherType';\n\nimport { Utils } from '../misc/utils';\n\nimport { CipherRequest } from '../models/request/cipherRequest';\nimport { CollectionRequest } from '../models/request/collectionRequest';\nimport { FolderRequest } from '../models/request/folderRequest';\nimport { ImportCiphersRequest } from '../models/request/importCiphersRequest';\nimport { ImportOrganizationCiphersRequest } from '../models/request/importOrganizationCiphersRequest';\nimport { KvpRequest } from '../models/request/kvpRequest';\n\nimport { ErrorResponse } from '../models/response/errorResponse';\nimport { CipherView } from '../models/view/cipherView';\n\nimport { AscendoCsvImporter } from '../importers/ascendoCsvImporter';\nimport { AvastCsvImporter } from '../importers/avastCsvImporter';\nimport { AvastJsonImporter } from '../importers/avastJsonImporter';\nimport { AviraCsvImporter } from '../importers/aviraCsvImporter';\nimport { BitwardenCsvImporter } from '../importers/bitwardenCsvImporter';\nimport { BitwardenJsonImporter } from '../importers/bitwardenJsonImporter';\nimport { BlackBerryCsvImporter } from '../importers/blackBerryCsvImporter';\nimport { BlurCsvImporter } from '../importers/blurCsvImporter';\nimport { ButtercupCsvImporter } from '../importers/buttercupCsvImporter';\nimport { ChromeCsvImporter } from '../importers/chromeCsvImporter';\nimport { ClipperzHtmlImporter } from '../importers/clipperzHtmlImporter';\nimport { CodebookCsvImporter } from '../importers/codebookCsvImporter';\nimport { DashlaneJsonImporter } from '../importers/dashlaneJsonImporter';\nimport { EncryptrCsvImporter } from '../importers/encryptrCsvImporter';\nimport { EnpassCsvImporter } from '../importers/enpassCsvImporter';\nimport { EnpassJsonImporter } from '../importers/enpassJsonImporter';\nimport { FirefoxCsvImporter } from '../importers/firefoxCsvImporter';\nimport { FSecureFskImporter } from '../importers/fsecureFskImporter';\nimport { GnomeJsonImporter } from '../importers/gnomeJsonImporter';\nimport { Importer } from '../importers/importer';\nimport { KasperskyTxtImporter } from '../importers/kasperskyTxtImporter';\nimport { KeePass2XmlImporter } from '../importers/keepass2XmlImporter';\nimport { KeePassXCsvImporter } from '../importers/keepassxCsvImporter';\nimport { KeeperCsvImporter } from '../importers/keeperCsvImporter';\nimport { LastPassCsvImporter } from '../importers/lastpassCsvImporter';\nimport { LogMeOnceCsvImporter } from '../importers/logMeOnceCsvImporter';\nimport { MeldiumCsvImporter } from '../importers/meldiumCsvImporter';\nimport { MSecureCsvImporter } from '../importers/msecureCsvImporter';\nimport { MykiCsvImporter } from '../importers/mykiCsvImporter';\nimport { NordPassCsvImporter } from '../importers/nordpassCsvImporter';\nimport { OnePassword1PifImporter } from '../importers/onepasswordImporters/onepassword1PifImporter';\nimport { OnePasswordMacCsvImporter } from '../importers/onepasswordImporters/onepasswordMacCsvImporter';\nimport { OnePasswordWinCsvImporter } from '../importers/onepasswordImporters/onepasswordWinCsvImporter';\nimport { PadlockCsvImporter } from '../importers/padlockCsvImporter';\nimport { PassKeepCsvImporter } from '../importers/passkeepCsvImporter';\nimport { PassmanJsonImporter } from '../importers/passmanJsonImporter';\nimport { PasspackCsvImporter } from '../importers/passpackCsvImporter';\nimport { PasswordAgentCsvImporter } from '../importers/passwordAgentCsvImporter';\nimport { PasswordBossJsonImporter } from '../importers/passwordBossJsonImporter';\nimport { PasswordDragonXmlImporter } from '../importers/passwordDragonXmlImporter';\nimport { PasswordSafeXmlImporter } from '../importers/passwordSafeXmlImporter';\nimport { PasswordWalletTxtImporter } from '../importers/passwordWalletTxtImporter';\nimport { RememBearCsvImporter } from '../importers/rememBearCsvImporter';\nimport { RoboFormCsvImporter } from '../importers/roboformCsvImporter';\nimport { SafariCsvImporter } from '../importers/safariCsvImporter';\nimport { SafeInCloudXmlImporter } from '../importers/safeInCloudXmlImporter';\nimport { SaferPassCsvImporter } from '../importers/saferpassCsvImport';\nimport { SecureSafeCsvImporter } from '../importers/secureSafeCsvImporter';\nimport { SplashIdCsvImporter } from '../importers/splashIdCsvImporter';\nimport { StickyPasswordXmlImporter } from '../importers/stickyPasswordXmlImporter';\nimport { TrueKeyCsvImporter } from '../importers/truekeyCsvImporter';\nimport { UpmCsvImporter } from '../importers/upmCsvImporter';\nimport { YotiCsvImporter } from '../importers/yotiCsvImporter';\nimport { ZohoVaultCsvImporter } from '../importers/zohoVaultCsvImporter';\n\nexport class ImportService implements ImportServiceAbstraction {\n featuredImportOptions = [\n { id: 'bitwardenjson', name: 'Bitwarden (json)' },\n { id: 'bitwardencsv', name: 'Bitwarden (csv)' },\n { id: 'chromecsv', name: 'Chrome (csv)' },\n { id: 'dashlanejson', name: 'Dashlane (json)' },\n { id: 'firefoxcsv', name: 'Firefox (csv)' },\n { id: 'keepass2xml', name: 'KeePass 2 (xml)' },\n { id: 'lastpasscsv', name: 'LastPass (csv)' },\n { id: 'safaricsv', name: 'Safari and macOS (csv)' },\n { id: '1password1pif', name: '1Password (1pif)' },\n ];\n\n regularImportOptions: ImportOption[] = [\n { id: 'keepassxcsv', name: 'KeePassX (csv)' },\n { id: '1passwordwincsv', name: '1Password 6 and 7 Windows (csv)' },\n { id: '1passwordmaccsv', name: '1Password 6 and 7 Mac (csv)' },\n { id: 'roboformcsv', name: 'RoboForm (csv)' },\n { id: 'keepercsv', name: 'Keeper (csv)' },\n { id: 'enpasscsv', name: 'Enpass (csv)' },\n { id: 'enpassjson', name: 'Enpass (json)' },\n { id: 'safeincloudxml', name: 'SafeInCloud (xml)' },\n { id: 'pwsafexml', name: 'Password Safe (xml)' },\n { id: 'stickypasswordxml', name: 'Sticky Password (xml)' },\n { id: 'msecurecsv', name: 'mSecure (csv)' },\n { id: 'truekeycsv', name: 'True Key (csv)' },\n { id: 'passwordbossjson', name: 'Password Boss (json)' },\n { id: 'zohovaultcsv', name: 'Zoho Vault (csv)' },\n { id: 'splashidcsv', name: 'SplashID (csv)' },\n { id: 'passworddragonxml', name: 'Password Dragon (xml)' },\n { id: 'padlockcsv', name: 'Padlock (csv)' },\n { id: 'passboltcsv', name: 'Passbolt (csv)' },\n { id: 'clipperzhtml', name: 'Clipperz (html)' },\n { id: 'aviracsv', name: 'Avira (csv)' },\n { id: 'saferpasscsv', name: 'SaferPass (csv)' },\n { id: 'upmcsv', name: 'Universal Password Manager (csv)' },\n { id: 'ascendocsv', name: 'Ascendo DataVault (csv)' },\n { id: 'meldiumcsv', name: 'Meldium (csv)' },\n { id: 'passkeepcsv', name: 'PassKeep (csv)' },\n { id: 'operacsv', name: 'Opera (csv)' },\n { id: 'vivaldicsv', name: 'Vivaldi (csv)' },\n { id: 'gnomejson', name: 'GNOME Passwords and Keys/Seahorse (json)' },\n { id: 'blurcsv', name: 'Blur (csv)' },\n { id: 'passwordagentcsv', name: 'Password Agent (csv)' },\n { id: 'passpackcsv', name: 'Passpack (csv)' },\n { id: 'passmanjson', name: 'Passman (json)' },\n { id: 'avastcsv', name: 'Avast Passwords (csv)' },\n { id: 'avastjson', name: 'Avast Passwords (json)' },\n { id: 'fsecurefsk', name: 'F-Secure KEY (fsk)' },\n { id: 'kasperskytxt', name: 'Kaspersky Password Manager (txt)' },\n { id: 'remembearcsv', name: 'RememBear (csv)' },\n { id: 'passwordwallettxt', name: 'PasswordWallet (txt)' },\n { id: 'mykicsv', name: 'Myki (csv)' },\n { id: 'securesafecsv', name: 'SecureSafe (csv)' },\n { id: 'logmeoncecsv', name: 'LogMeOnce (csv)' },\n { id: 'blackberrycsv', name: 'BlackBerry Password Keeper (csv)' },\n { id: 'buttercupcsv', name: 'Buttercup (csv)' },\n { id: 'codebookcsv', name: 'Codebook (csv)' },\n { id: 'encryptrcsv', name: 'Encryptr (csv)' },\n { id: 'yoticsv', name: 'Yoti (csv)' },\n { id: 'nordpasscsv', name: 'Nordpass (csv)' },\n ];\n\n constructor(private cipherService: CipherService, private folderService: FolderService,\n private apiService: ApiService, private i18nService: I18nService,\n private collectionService: CollectionService, private platformUtilsService: PlatformUtilsService,\n private cryptoService: CryptoService) { }\n\n getImportOptions(): ImportOption[] {\n return this.featuredImportOptions.concat(this.regularImportOptions);\n }\n\n async import(importer: Importer, fileContents: string, organizationId: string = null): Promise {\n const importResult = await importer.parse(fileContents);\n if (importResult.success) {\n if (importResult.folders.length === 0 && importResult.ciphers.length === 0) {\n return new Error(this.i18nService.t('importNothingError'));\n } else if (importResult.ciphers.length > 0) {\n const halfway = Math.floor(importResult.ciphers.length / 2);\n const last = importResult.ciphers.length - 1;\n\n if (this.badData(importResult.ciphers[0]) &&\n this.badData(importResult.ciphers[halfway]) &&\n this.badData(importResult.ciphers[last])) {\n return new Error(this.i18nService.t('importFormatError'));\n }\n }\n try {\n await this.postImport(importResult, organizationId);\n } catch (error) {\n const errorResponse = new ErrorResponse(error, 400);\n return this.handleServerError(errorResponse, importResult);\n }\n return null;\n } else {\n if (!Utils.isNullOrWhitespace(importResult.errorMessage)) {\n return new Error(importResult.errorMessage);\n } else {\n return new Error(this.i18nService.t('importFormatError'));\n }\n }\n }\n\n getImporter(format: string, organizationId: string = null): Importer {\n const importer = this.getImporterInstance(format);\n if (importer == null) {\n return null;\n }\n importer.organizationId = organizationId;\n return importer;\n }\n\n private getImporterInstance(format: string) {\n if (format == null || format === '') {\n return null;\n }\n\n switch (format) {\n case 'bitwardencsv':\n return new BitwardenCsvImporter();\n case 'bitwardenjson':\n return new BitwardenJsonImporter(this.cryptoService, this.i18nService);\n case 'lastpasscsv':\n case 'passboltcsv':\n return new LastPassCsvImporter();\n case 'keepassxcsv':\n return new KeePassXCsvImporter();\n case 'aviracsv':\n return new AviraCsvImporter();\n case 'blurcsv':\n return new BlurCsvImporter();\n case 'safeincloudxml':\n return new SafeInCloudXmlImporter();\n case 'padlockcsv':\n return new PadlockCsvImporter();\n case 'keepass2xml':\n return new KeePass2XmlImporter();\n case 'chromecsv':\n case 'operacsv':\n case 'vivaldicsv':\n return new ChromeCsvImporter();\n case 'firefoxcsv':\n return new FirefoxCsvImporter();\n case 'upmcsv':\n return new UpmCsvImporter();\n case 'saferpasscsv':\n return new SaferPassCsvImporter();\n case 'safaricsv':\n return new SafariCsvImporter();\n case 'meldiumcsv':\n return new MeldiumCsvImporter();\n case '1password1pif':\n return new OnePassword1PifImporter();\n case '1passwordwincsv':\n return new OnePasswordWinCsvImporter();\n case '1passwordmaccsv':\n return new OnePasswordMacCsvImporter();\n case 'keepercsv':\n return new KeeperCsvImporter();\n case 'passworddragonxml':\n return new PasswordDragonXmlImporter();\n case 'enpasscsv':\n return new EnpassCsvImporter();\n case 'enpassjson':\n return new EnpassJsonImporter();\n case 'pwsafexml':\n return new PasswordSafeXmlImporter();\n case 'dashlanejson':\n return new DashlaneJsonImporter();\n case 'msecurecsv':\n return new MSecureCsvImporter();\n case 'stickypasswordxml':\n return new StickyPasswordXmlImporter();\n case 'truekeycsv':\n return new TrueKeyCsvImporter();\n case 'clipperzhtml':\n return new ClipperzHtmlImporter();\n case 'roboformcsv':\n return new RoboFormCsvImporter();\n case 'ascendocsv':\n return new AscendoCsvImporter();\n case 'passwordbossjson':\n return new PasswordBossJsonImporter();\n case 'zohovaultcsv':\n return new ZohoVaultCsvImporter();\n case 'splashidcsv':\n return new SplashIdCsvImporter();\n case 'passkeepcsv':\n return new PassKeepCsvImporter();\n case 'gnomejson':\n return new GnomeJsonImporter();\n case 'passwordagentcsv':\n return new PasswordAgentCsvImporter();\n case 'passpackcsv':\n return new PasspackCsvImporter();\n case 'passmanjson':\n return new PassmanJsonImporter();\n case 'avastcsv':\n return new AvastCsvImporter();\n case 'avastjson':\n return new AvastJsonImporter();\n case 'fsecurefsk':\n return new FSecureFskImporter();\n case 'kasperskytxt':\n return new KasperskyTxtImporter();\n case 'remembearcsv':\n return new RememBearCsvImporter();\n case 'passwordwallettxt':\n return new PasswordWalletTxtImporter();\n case 'mykicsv':\n return new MykiCsvImporter();\n case 'securesafecsv':\n return new SecureSafeCsvImporter();\n case 'logmeoncecsv':\n return new LogMeOnceCsvImporter();\n case 'blackberrycsv':\n return new BlackBerryCsvImporter();\n case 'buttercupcsv':\n return new ButtercupCsvImporter();\n case 'codebookcsv':\n return new CodebookCsvImporter();\n case 'encryptrcsv':\n return new EncryptrCsvImporter();\n case 'yoticsv':\n return new YotiCsvImporter();\n case 'nordpasscsv':\n return new NordPassCsvImporter();\n default:\n return null;\n }\n }\n\n private async postImport(importResult: ImportResult, organizationId: string = null) {\n if (organizationId == null) {\n const request = new ImportCiphersRequest();\n for (let i = 0; i < importResult.ciphers.length; i++) {\n const c = await this.cipherService.encrypt(importResult.ciphers[i]);\n request.ciphers.push(new CipherRequest(c));\n }\n if (importResult.folders != null) {\n for (let i = 0; i < importResult.folders.length; i++) {\n const f = await this.folderService.encrypt(importResult.folders[i]);\n request.folders.push(new FolderRequest(f));\n }\n }\n if (importResult.folderRelationships != null) {\n importResult.folderRelationships.forEach(r =>\n request.folderRelationships.push(new KvpRequest(r[0], r[1])));\n }\n return await this.apiService.postImportCiphers(request);\n } else {\n const request = new ImportOrganizationCiphersRequest();\n for (let i = 0; i < importResult.ciphers.length; i++) {\n importResult.ciphers[i].organizationId = organizationId;\n const c = await this.cipherService.encrypt(importResult.ciphers[i]);\n request.ciphers.push(new CipherRequest(c));\n }\n if (importResult.collections != null) {\n for (let i = 0; i < importResult.collections.length; i++) {\n importResult.collections[i].organizationId = organizationId;\n const c = await this.collectionService.encrypt(importResult.collections[i]);\n request.collections.push(new CollectionRequest(c));\n }\n }\n if (importResult.collectionRelationships != null) {\n importResult.collectionRelationships.forEach(r =>\n request.collectionRelationships.push(new KvpRequest(r[0], r[1])));\n }\n return await this.apiService.postImportOrganizationCiphers(organizationId, request);\n }\n }\n\n private badData(c: CipherView) {\n return (c.name == null || c.name === '--') &&\n (c.type === CipherType.Login && c.login != null && Utils.isNullOrWhitespace(c.login.password));\n }\n\n private handleServerError(errorResponse: ErrorResponse, importResult: ImportResult): Error {\n if (errorResponse.validationErrors == null) {\n return new Error(errorResponse.message);\n }\n\n let errorMessage = '';\n\n Object.entries(errorResponse.validationErrors).forEach(([key, value], index) => {\n let item;\n let itemType;\n const i = Number(key.match(/[0-9]+/)[0]);\n\n switch (key.match(/^\\w+/)[0]) {\n case 'Ciphers':\n item = importResult.ciphers[i];\n itemType = CipherType[item.type];\n break;\n case 'Folders':\n item = importResult.folders[i];\n itemType = 'Folder';\n break;\n case 'Collections':\n item = importResult.collections[i];\n itemType = 'Collection';\n break;\n default:\n return;\n }\n\n if (index > 0) {\n errorMessage += '\\n\\n';\n }\n\n if (itemType !== 'Folder' && itemType !== 'Collection') {\n errorMessage += '[' + (i + 1) + '] ';\n }\n\n errorMessage += '[' + itemType + '] \"' + item.name + '\": ' + value;\n });\n\n return new Error(errorMessage);\n }\n}\n","import { CipherRequest } from './cipherRequest';\nimport { FolderRequest } from './folderRequest';\nimport { KvpRequest } from './kvpRequest';\n\nexport class ImportCiphersRequest {\n ciphers: CipherRequest[] = [];\n folders: FolderRequest[] = [];\n folderRelationships: KvpRequest[] = [];\n}\n","import { CipherRequest } from './cipherRequest';\nimport { CollectionRequest } from './collectionRequest';\nimport { KvpRequest } from './kvpRequest';\n\nexport class ImportOrganizationCiphersRequest {\n ciphers: CipherRequest[] = [];\n collections: CollectionRequest[] = [];\n collectionRelationships: KvpRequest[] = [];\n}\n","export class KvpRequest {\n key: TK;\n value: TV;\n\n constructor(key: TK, value: TV) {\n this.key = key;\n this.value = value;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class AscendoCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.length < 2) {\n return;\n }\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value[value.length - 1]);\n cipher.name = this.getValueOrDefault(value[0], '--');\n\n if (value.length > 2 && (value.length % 2) === 0) {\n for (let i = 0; i < value.length - 2; i += 2) {\n const val: string = value[i + 2];\n const field: string = value[i + 1];\n if (this.isNullOrWhitespace(val) || this.isNullOrWhitespace(field)) {\n continue;\n }\n\n const fieldLower = field.toLowerCase();\n if (cipher.login.password == null && this.passwordFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.password = this.getValueOrDefault(val);\n } else if (cipher.login.username == null &&\n this.usernameFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.username = this.getValueOrDefault(val);\n } else if ((cipher.login.uris == null || cipher.login.uris.length === 0) &&\n this.uriFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.uris = this.makeUriArray(val);\n } else {\n this.processKvp(cipher, field, val);\n }\n }\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class AvastCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name);\n cipher.login.uris = this.makeUriArray(value.web);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.username = this.getValueOrDefault(value.login);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nexport class AvastJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n if (results.logins != null) {\n results.logins.forEach((value: any) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.custName);\n cipher.notes = this.getValueOrDefault(value.note);\n cipher.login.uris = this.makeUriArray(value.url);\n cipher.login.password = this.getValueOrDefault(value.pwd);\n cipher.login.username = this.getValueOrDefault(value.loginName);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n }\n\n if (results.notes != null) {\n results.notes.forEach((value: any) => {\n const cipher = this.initLoginCipher();\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n cipher.name = this.getValueOrDefault(value.label);\n cipher.notes = this.getValueOrDefault(value.text);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n }\n\n if (results.cards != null) {\n results.cards.forEach((value: any) => {\n const cipher = this.initLoginCipher();\n cipher.type = CipherType.Card;\n cipher.name = this.getValueOrDefault(value.custName);\n cipher.notes = this.getValueOrDefault(value.note);\n cipher.card.cardholderName = this.getValueOrDefault(value.holderName);\n cipher.card.number = this.getValueOrDefault(value.cardNumber);\n cipher.card.code = this.getValueOrDefault(value.cvv);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n if (value.expirationDate != null) {\n if (value.expirationDate.month != null) {\n cipher.card.expMonth = value.expirationDate.month + '';\n }\n if (value.expirationDate.year != null) {\n cipher.card.expYear = value.expirationDate.year + '';\n }\n }\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class AviraCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name,\n this.getValueOrDefault(this.nameFromUrl(value.website), '--'));\n cipher.login.uris = this.makeUriArray(value.website);\n cipher.login.password = this.getValueOrDefault(value.password);\n\n if (this.isNullOrWhitespace(value.username) && !this.isNullOrWhitespace(value.secondary_username)) {\n cipher.login.username = value.secondary_username;\n } else {\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.notes = this.getValueOrDefault(value.secondary_username);\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherView } from '../models/view/cipherView';\nimport { CollectionView } from '../models/view/collectionView';\nimport { FieldView } from '../models/view/fieldView';\nimport { FolderView } from '../models/view/folderView';\nimport { LoginView } from '../models/view/loginView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherRepromptType } from '../enums/cipherRepromptType';\nimport { CipherType } from '../enums/cipherType';\nimport { FieldType } from '../enums/fieldType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nexport class BitwardenCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (this.organization && !this.isNullOrWhitespace(value.collections)) {\n const collections = (value.collections as string).split(',');\n collections.forEach(col => {\n let addCollection = true;\n let collectionIndex = result.collections.length;\n\n for (let i = 0; i < result.collections.length; i++) {\n if (result.collections[i].name === col) {\n addCollection = false;\n collectionIndex = i;\n break;\n }\n }\n\n if (addCollection) {\n const collection = new CollectionView();\n collection.name = col;\n result.collections.push(collection);\n }\n\n result.collectionRelationships.push([result.ciphers.length, collectionIndex]);\n });\n } else if (!this.organization) {\n this.processFolder(result, value.folder);\n }\n\n const cipher = new CipherView();\n cipher.favorite = !this.organization && this.getValueOrDefault(value.favorite, '0') !== '0' ? true : false;\n cipher.type = CipherType.Login;\n cipher.notes = this.getValueOrDefault(value.notes);\n cipher.name = this.getValueOrDefault(value.name, '--');\n try {\n cipher.reprompt = parseInt(this.getValueOrDefault(value.reprompt, CipherRepromptType.None.toString()), 10);\n } catch (e) {\n // tslint:disable-next-line\n console.error('Unable to parse reprompt value', e);\n cipher.reprompt = CipherRepromptType.None;\n }\n\n if (!this.isNullOrWhitespace(value.fields)) {\n const fields = this.splitNewLine(value.fields);\n for (let i = 0; i < fields.length; i++) {\n if (this.isNullOrWhitespace(fields[i])) {\n continue;\n }\n\n const delimPosition = fields[i].lastIndexOf(': ');\n if (delimPosition === -1) {\n continue;\n }\n\n if (cipher.fields == null) {\n cipher.fields = [];\n }\n\n const field = new FieldView();\n field.name = fields[i].substr(0, delimPosition);\n field.value = null;\n field.type = FieldType.Text;\n if (fields[i].length > (delimPosition + 2)) {\n field.value = fields[i].substr(delimPosition + 2);\n }\n cipher.fields.push(field);\n }\n }\n\n const valueType = value.type != null ? value.type.toLowerCase() : null;\n switch (valueType) {\n case 'note':\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n break;\n default:\n cipher.type = CipherType.Login;\n cipher.login = new LoginView();\n cipher.login.totp = this.getValueOrDefault(value.login_totp || value.totp);\n cipher.login.username = this.getValueOrDefault(value.login_username || value.username);\n cipher.login.password = this.getValueOrDefault(value.login_password || value.password);\n const uris = this.parseSingleRowCsv(value.login_uri || value.uri);\n cipher.login.uris = this.makeUriArray(uris);\n break;\n }\n\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { EncString } from '../models/domain/encString';\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherWithIds } from '../models/export/cipherWithIds';\nimport { CollectionWithId } from '../models/export/collectionWithId';\nimport { FolderWithId } from '../models/export/folderWithId';\n\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { I18nService } from '../abstractions/i18n.service';\n\nexport class BitwardenJsonImporter extends BaseImporter implements Importer {\n private results: any;\n private result: ImportResult;\n\n constructor(private cryptoService: CryptoService, private i18nService: I18nService) {\n super();\n }\n\n async parse(data: string): Promise {\n this.result = new ImportResult();\n this.results = JSON.parse(data);\n if (this.results == null || this.results.items == null || this.results.items.length === 0) {\n this.result.success = false;\n return this.result;\n }\n\n if (this.results.encrypted) {\n await this.parseEncrypted();\n } else {\n this.parseDecrypted();\n }\n\n return this.result;\n }\n\n private async parseEncrypted() {\n if (this.results.encKeyValidation_DO_NOT_EDIT != null) {\n const orgKey = await this.cryptoService.getOrgKey(this.organizationId);\n const encKeyValidation = new EncString(this.results.encKeyValidation_DO_NOT_EDIT);\n const encKeyValidationDecrypt = await this.cryptoService.decryptToUtf8(encKeyValidation, orgKey);\n if (encKeyValidationDecrypt === null) {\n this.result.success = false;\n this.result.errorMessage = this.i18nService.t('importEncKeyError');\n return;\n }\n }\n\n const groupingsMap = new Map();\n\n if (this.organization && this.results.collections != null) {\n for (const c of this.results.collections as CollectionWithId[]) {\n const collection = CollectionWithId.toDomain(c);\n if (collection != null) {\n collection.id = null;\n collection.organizationId = this.organizationId;\n const view = await collection.decrypt();\n groupingsMap.set(c.id, this.result.collections.length);\n this.result.collections.push(view);\n }\n }\n } else if (!this.organization && this.results.folders != null) {\n for (const f of this.results.folders as FolderWithId[]) {\n const folder = FolderWithId.toDomain(f);\n if (folder != null) {\n folder.id = null;\n const view = await folder.decrypt();\n groupingsMap.set(f.id, this.result.folders.length);\n this.result.folders.push(view);\n }\n }\n }\n\n for (const c of this.results.items as CipherWithIds[]) {\n const cipher = CipherWithIds.toDomain(c);\n // reset ids incase they were set for some reason\n cipher.id = null;\n cipher.folderId = null;\n cipher.organizationId = this.organizationId;\n cipher.collectionIds = null;\n\n // make sure password history is limited\n if (cipher.passwordHistory != null && cipher.passwordHistory.length > 5) {\n cipher.passwordHistory = cipher.passwordHistory.slice(0, 5);\n }\n\n if (!this.organization && c.folderId != null && groupingsMap.has(c.folderId)) {\n this.result.folderRelationships.push([this.result.ciphers.length, groupingsMap.get(c.folderId)]);\n } else if (this.organization && c.collectionIds != null) {\n c.collectionIds.forEach(cId => {\n if (groupingsMap.has(cId)) {\n this.result.collectionRelationships.push([this.result.ciphers.length, groupingsMap.get(cId)]);\n }\n });\n }\n\n const view = await cipher.decrypt();\n this.cleanupCipher(view);\n this.result.ciphers.push(view);\n }\n\n this.result.success = true;\n }\n\n private parseDecrypted() {\n const groupingsMap = new Map();\n if (this.organization && this.results.collections != null) {\n this.results.collections.forEach((c: CollectionWithId) => {\n const collection = CollectionWithId.toView(c);\n if (collection != null) {\n collection.id = null;\n collection.organizationId = null;\n groupingsMap.set(c.id, this.result.collections.length);\n this.result.collections.push(collection);\n }\n });\n } else if (!this.organization && this.results.folders != null) {\n this.results.folders.forEach((f: FolderWithId) => {\n const folder = FolderWithId.toView(f);\n if (folder != null) {\n folder.id = null;\n groupingsMap.set(f.id, this.result.folders.length);\n this.result.folders.push(folder);\n }\n });\n }\n\n this.results.items.forEach((c: CipherWithIds) => {\n const cipher = CipherWithIds.toView(c);\n // reset ids incase they were set for some reason\n cipher.id = null;\n cipher.folderId = null;\n cipher.organizationId = null;\n cipher.collectionIds = null;\n\n // make sure password history is limited\n if (cipher.passwordHistory != null && cipher.passwordHistory.length > 5) {\n cipher.passwordHistory = cipher.passwordHistory.slice(0, 5);\n }\n\n if (!this.organization && c.folderId != null && groupingsMap.has(c.folderId)) {\n this.result.folderRelationships.push([this.result.ciphers.length, groupingsMap.get(c.folderId)]);\n } else if (this.organization && c.collectionIds != null) {\n c.collectionIds.forEach(cId => {\n if (groupingsMap.has(cId)) {\n this.result.collectionRelationships.push([this.result.ciphers.length, groupingsMap.get(cId)]);\n }\n });\n }\n\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n\n this.result.success = true;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class BlackBerryCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.grouping === 'list') {\n return;\n }\n const cipher = this.initLoginCipher();\n cipher.favorite = value.fav === '1';\n cipher.name = this.getValueOrDefault(value.name);\n cipher.notes = this.getValueOrDefault(value.extra);\n if (value.grouping !== 'note') {\n cipher.login.uris = this.makeUriArray(value.url);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.username = this.getValueOrDefault(value.username);\n }\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class BlurCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.label === 'null') {\n value.label = null;\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.label,\n this.getValueOrDefault(this.nameFromUrl(value.domain), '--'));\n cipher.login.uris = this.makeUriArray(value.domain);\n cipher.login.password = this.getValueOrDefault(value.password);\n\n if (this.isNullOrWhitespace(value.email) && !this.isNullOrWhitespace(value.username)) {\n cipher.login.username = value.username;\n } else {\n cipher.login.username = this.getValueOrDefault(value.email);\n cipher.notes = this.getValueOrDefault(value.username);\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nconst OfficialProps = [\n '!group_id', '!group_name', 'title', 'username', 'password', 'URL', 'id',\n];\n\nexport class ButtercupCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n this.processFolder(result, this.getValueOrDefault(value['!group_name']));\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.title, '--');\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.URL);\n\n let processingCustomFields = false;\n for (const prop in value) {\n if (value.hasOwnProperty(prop)) {\n if (!processingCustomFields && OfficialProps.indexOf(prop) === -1) {\n processingCustomFields = true;\n }\n if (processingCustomFields) {\n this.processKvp(cipher, prop, value[prop]);\n }\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class ChromeCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name, '--');\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.url);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class ClipperzHtmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const textarea = doc.querySelector('textarea');\n if (textarea == null || this.isNullOrWhitespace(textarea.textContent)) {\n result.errorMessage = 'Missing textarea.';\n result.success = false;\n return Promise.resolve(result);\n }\n\n const entries = JSON.parse(textarea.textContent);\n entries.forEach((entry: any) => {\n const cipher = this.initLoginCipher();\n if (!this.isNullOrWhitespace(entry.label)) {\n cipher.name = entry.label.split(' ')[0];\n }\n if (entry.data != null && !this.isNullOrWhitespace(entry.data.notes)) {\n cipher.notes = entry.data.notes.split('\\\\n').join('\\n');\n }\n\n if (entry.currentVersion != null && entry.currentVersion.fields != null) {\n for (const property in entry.currentVersion.fields) {\n if (!entry.currentVersion.fields.hasOwnProperty(property)) {\n continue;\n }\n\n const field = entry.currentVersion.fields[property];\n const actionType = field.actionType != null ? field.actionType.toLowerCase() : null;\n switch (actionType) {\n case 'password':\n cipher.login.password = this.getValueOrDefault(field.value);\n break;\n case 'email':\n case 'username':\n case 'user':\n case 'name':\n cipher.login.username = this.getValueOrDefault(field.value);\n break;\n case 'url':\n cipher.login.uris = this.makeUriArray(field.value);\n break;\n default:\n const labelLower = field.label != null ? field.label.toLowerCase() : null;\n if (cipher.login.password == null && this.passwordFieldNames.indexOf(labelLower) > -1) {\n cipher.login.password = this.getValueOrDefault(field.value);\n } else if (cipher.login.username == null &&\n this.usernameFieldNames.indexOf(labelLower) > -1) {\n cipher.login.username = this.getValueOrDefault(field.value);\n } else if ((cipher.login.uris == null || cipher.login.uris.length === 0) &&\n this.uriFieldNames.indexOf(labelLower) > -1) {\n cipher.login.uris = this.makeUriArray(field.value);\n } else {\n this.processKvp(cipher, field.label, field.value);\n }\n break;\n }\n }\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class CodebookCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n this.processFolder(result, this.getValueOrDefault(value.Category));\n\n const cipher = this.initLoginCipher();\n cipher.favorite = this.getValueOrDefault(value.Favorite) === 'True';\n cipher.name = this.getValueOrDefault(value.Entry, '--');\n cipher.notes = this.getValueOrDefault(value.Note);\n cipher.login.username = this.getValueOrDefault(value.Username, value.Email);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.totp = this.getValueOrDefault(value.TOTP);\n cipher.login.uris = this.makeUriArray(value.Website);\n\n if (!this.isNullOrWhitespace(value.Username)) {\n this.processKvp(cipher, 'Email', value.Email);\n }\n this.processKvp(cipher, 'Phone', value.Phone);\n this.processKvp(cipher, 'PIN', value.PIN);\n this.processKvp(cipher, 'Account', value.Account);\n this.processKvp(cipher, 'Date', value.Date);\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\nimport { CipherView } from '../models/view/cipherView';\nimport { IdentityView } from '../models/view/identityView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nconst HandledResults = new Set(['ADDRESS', 'AUTHENTIFIANT', 'BANKSTATEMENT', 'IDCARD', 'IDENTITY',\n 'PAYMENTMEANS_CREDITCARD', 'PAYMENTMEAN_PAYPAL', 'EMAIL']);\n\nexport class DashlaneJsonImporter extends BaseImporter implements Importer {\n private result: ImportResult;\n\n parse(data: string): Promise {\n this.result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.length === 0) {\n this.result.success = false;\n return Promise.resolve(this.result);\n }\n\n if (results.ADDRESS != null) {\n this.processAddress(results.ADDRESS);\n }\n if (results.AUTHENTIFIANT != null) {\n this.processAuth(results.AUTHENTIFIANT);\n }\n if (results.BANKSTATEMENT != null) {\n this.processNote(results.BANKSTATEMENT, 'BankAccountName');\n }\n if (results.IDCARD != null) {\n this.processNote(results.IDCARD, 'Fullname');\n }\n if (results.PAYMENTMEANS_CREDITCARD != null) {\n this.processCard(results.PAYMENTMEANS_CREDITCARD);\n }\n if (results.IDENTITY != null) {\n this.processIdentity(results.IDENTITY);\n }\n\n for (const key in results) {\n if (results.hasOwnProperty(key) && !HandledResults.has(key)) {\n this.processNote(results[key], null, 'Generic Note');\n }\n }\n\n this.result.success = true;\n return Promise.resolve(this.result);\n }\n\n private processAuth(results: any[]) {\n results.forEach((credential: any) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(credential.title);\n\n cipher.login.username = this.getValueOrDefault(credential.login,\n this.getValueOrDefault(credential.secondaryLogin));\n if (this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = this.getValueOrDefault(credential.email);\n } else if (!this.isNullOrWhitespace(credential.email)) {\n cipher.notes = ('Email: ' + credential.email + '\\n');\n }\n\n cipher.login.password = this.getValueOrDefault(credential.password);\n cipher.login.uris = this.makeUriArray(credential.domain);\n cipher.notes += this.getValueOrDefault(credential.note, '');\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n\n private processIdentity(results: any[]) {\n results.forEach((obj: any) => {\n const cipher = new CipherView();\n cipher.identity = new IdentityView();\n cipher.type = CipherType.Identity;\n cipher.name = this.getValueOrDefault(obj.fullName, '');\n const nameParts = cipher.name.split(' ');\n if (nameParts.length > 0) {\n cipher.identity.firstName = this.getValueOrDefault(nameParts[0]);\n }\n if (nameParts.length === 2) {\n cipher.identity.lastName = this.getValueOrDefault(nameParts[1]);\n } else if (nameParts.length === 3) {\n cipher.identity.middleName = this.getValueOrDefault(nameParts[1]);\n cipher.identity.lastName = this.getValueOrDefault(nameParts[2]);\n }\n cipher.identity.username = this.getValueOrDefault(obj.pseudo);\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n\n private processAddress(results: any[]) {\n results.forEach((obj: any) => {\n const cipher = new CipherView();\n cipher.identity = new IdentityView();\n cipher.type = CipherType.Identity;\n cipher.name = this.getValueOrDefault(obj.addressName);\n cipher.identity.address1 = this.getValueOrDefault(obj.addressFull);\n cipher.identity.city = this.getValueOrDefault(obj.city);\n cipher.identity.state = this.getValueOrDefault(obj.state);\n cipher.identity.postalCode = this.getValueOrDefault(obj.zipcode);\n cipher.identity.country = this.getValueOrDefault(obj.country);\n if (cipher.identity.country != null) {\n cipher.identity.country = cipher.identity.country.toUpperCase();\n }\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n\n private processCard(results: any[]) {\n results.forEach((obj: any) => {\n const cipher = new CipherView();\n cipher.card = new CardView();\n cipher.type = CipherType.Card;\n cipher.name = this.getValueOrDefault(obj.bank);\n cipher.card.number = this.getValueOrDefault(obj.cardNumber);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.cardholderName = this.getValueOrDefault(obj.owner);\n if (!this.isNullOrWhitespace(cipher.card.brand)) {\n if (this.isNullOrWhitespace(cipher.name)) {\n cipher.name = cipher.card.brand;\n } else {\n cipher.name += (' - ' + cipher.card.brand);\n }\n }\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n\n private processNote(results: any[], nameProperty: string, name: string = null) {\n results.forEach((obj: any) => {\n const cipher = new CipherView();\n cipher.secureNote = new SecureNoteView();\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n if (name != null) {\n cipher.name = name;\n } else {\n cipher.name = this.getValueOrDefault(obj[nameProperty]);\n }\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && key !== nameProperty) {\n this.processKvp(cipher, key, obj[key].toString());\n }\n }\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\n\nimport { CipherType } from '../enums/cipherType';\n\nexport class EncryptrCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.Label, '--');\n cipher.notes = this.getValueOrDefault(value.Notes);\n const text = this.getValueOrDefault(value.Text);\n if (!this.isNullOrWhitespace(text)) {\n if (this.isNullOrWhitespace(cipher.notes)) {\n cipher.notes = text;\n } else {\n cipher.notes += ('\\n\\n' + text);\n }\n }\n\n const type = value['Entry Type'];\n if (type === 'Password') {\n cipher.login.username = this.getValueOrDefault(value.Username);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value['Site URL']);\n } else if (type === 'Credit Card') {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n cipher.card.cardholderName = this.getValueOrDefault(value['Name on card']);\n cipher.card.number = this.getValueOrDefault(value['Card Number']);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.code = this.getValueOrDefault(value.CVV);\n const expiry = this.getValueOrDefault(value.Expiry);\n if (!this.isNullOrWhitespace(expiry)) {\n const expParts = expiry.split('/');\n if (expParts.length > 1) {\n cipher.card.expMonth = parseInt(expParts[0], null).toString();\n cipher.card.expYear = (2000 + parseInt(expParts[1], null)).toString();\n }\n }\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nimport { CardView } from '../models/view/cardView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nexport class EnpassCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n let firstRow = true;\n results.forEach(value => {\n if (value.length < 2 || (firstRow && (value[0] === 'Title' || value[0] === 'title'))) {\n firstRow = false;\n return;\n }\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value[value.length - 1]);\n cipher.name = this.getValueOrDefault(value[0], '--');\n\n if (value.length === 2 || (!this.containsField(value, 'username') &&\n !this.containsField(value, 'password') && !this.containsField(value, 'email') &&\n !this.containsField(value, 'url'))) {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n }\n\n if (this.containsField(value, 'cardholder') && this.containsField(value, 'number') &&\n this.containsField(value, 'expiry date')) {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n }\n\n if (value.length > 2 && (value.length % 2) === 0) {\n for (let i = 0; i < value.length - 2; i += 2) {\n const fieldValue: string = value[i + 2];\n if (this.isNullOrWhitespace(fieldValue)) {\n continue;\n }\n\n const fieldName: string = value[i + 1];\n const fieldNameLower = fieldName.toLowerCase();\n\n if (cipher.type === CipherType.Login) {\n if (fieldNameLower === 'url' && (cipher.login.uris == null || cipher.login.uris.length === 0)) {\n cipher.login.uris = this.makeUriArray(fieldValue);\n continue;\n } else if ((fieldNameLower === 'username' || fieldNameLower === 'email') &&\n this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = fieldValue;\n continue;\n } else if (fieldNameLower === 'password' && this.isNullOrWhitespace(cipher.login.password)) {\n cipher.login.password = fieldValue;\n continue;\n } else if (fieldNameLower === 'totp' && this.isNullOrWhitespace(cipher.login.totp)) {\n cipher.login.totp = fieldValue;\n continue;\n }\n } else if (cipher.type === CipherType.Card) {\n if (fieldNameLower === 'cardholder' && this.isNullOrWhitespace(cipher.card.cardholderName)) {\n cipher.card.cardholderName = fieldValue;\n continue;\n } else if (fieldNameLower === 'number' && this.isNullOrWhitespace(cipher.card.number)) {\n cipher.card.number = fieldValue;\n cipher.card.brand = this.getCardBrand(fieldValue);\n continue;\n } else if (fieldNameLower === 'cvc' && this.isNullOrWhitespace(cipher.card.code)) {\n cipher.card.code = fieldValue;\n continue;\n } else if (fieldNameLower === 'expiry date' && this.isNullOrWhitespace(cipher.card.expMonth) &&\n this.isNullOrWhitespace(cipher.card.expYear)) {\n if (this.setCardExpiration(cipher, fieldValue)) {\n continue;\n }\n } else if (fieldNameLower === 'type') {\n // Skip since brand was determined from number above\n continue;\n }\n }\n\n this.processKvp(cipher, fieldName, fieldValue);\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private containsField(fields: any[], name: string) {\n if (fields == null || name == null) {\n return false;\n }\n return fields.filter(f => !this.isNullOrWhitespace(f) &&\n f.toLowerCase() === name.toLowerCase()).length > 0;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\nimport { CipherView } from '../models/view/cipherView';\nimport { FolderView } from '../models/view/folderView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { FieldType } from '../enums/fieldType';\n\nexport class EnpassJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.items == null || results.items.length === 0) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const foldersMap = new Map();\n const foldersIndexMap = new Map();\n const folderTree = this.buildFolderTree(results.folders);\n this.flattenFolderTree(null, folderTree, foldersMap);\n foldersMap.forEach((val, key) => {\n foldersIndexMap.set(key, result.folders.length);\n const f = new FolderView();\n f.name = val;\n result.folders.push(f);\n });\n\n results.items.forEach((item: any) => {\n if (item.folders != null && item.folders.length > 0 && foldersIndexMap.has(item.folders[0])) {\n result.folderRelationships.push([result.ciphers.length, foldersIndexMap.get(item.folders[0])]);\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(item.title);\n cipher.favorite = item.favorite > 0;\n\n if (item.template_type != null && item.fields != null && item.fields.length > 0) {\n if (item.template_type.indexOf('login.') === 0 || item.template_type.indexOf('password.') === 0) {\n this.processLogin(cipher, item.fields);\n } else if (item.template_type.indexOf('creditcard.') === 0) {\n this.processCard(cipher, item.fields);\n } else if (item.template_type.indexOf('identity.') < 0 &&\n item.fields.some((f: any) => f.type === 'password' && !this.isNullOrWhitespace(f.value))) {\n this.processLogin(cipher, item.fields);\n } else {\n this.processNote(cipher, item.fields);\n }\n }\n\n cipher.notes += ('\\n' + this.getValueOrDefault(item.note, ''));\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private processLogin(cipher: CipherView, fields: any[]) {\n const urls: string[] = [];\n fields.forEach((field: any) => {\n if (this.isNullOrWhitespace(field.value) || field.type === 'section') {\n return;\n }\n\n if ((field.type === 'username' || field.type === 'email') &&\n this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = field.value;\n } else if (field.type === 'password' && this.isNullOrWhitespace(cipher.login.password)) {\n cipher.login.password = field.value;\n } else if (field.type === 'totp' && this.isNullOrWhitespace(cipher.login.totp)) {\n cipher.login.totp = field.value;\n } else if (field.type === 'url') {\n urls.push(field.value);\n } else {\n this.processKvp(cipher, field.label, field.value,\n field.sensitive === 1 ? FieldType.Hidden : FieldType.Text);\n }\n });\n cipher.login.uris = this.makeUriArray(urls);\n }\n\n private processCard(cipher: CipherView, fields: any[]) {\n cipher.card = new CardView();\n cipher.type = CipherType.Card;\n fields.forEach((field: any) => {\n if (this.isNullOrWhitespace(field.value) || field.type === 'section' || field.type === 'ccType') {\n return;\n }\n\n if (field.type === 'ccName' && this.isNullOrWhitespace(cipher.card.cardholderName)) {\n cipher.card.cardholderName = field.value;\n } else if (field.type === 'ccNumber' && this.isNullOrWhitespace(cipher.card.number)) {\n cipher.card.number = field.value;\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n } else if (field.type === 'ccCvc' && this.isNullOrWhitespace(cipher.card.code)) {\n cipher.card.code = field.value;\n } else if (field.type === 'ccExpiry' && this.isNullOrWhitespace(cipher.card.expYear)) {\n if (!this.setCardExpiration(cipher, field.value)) {\n this.processKvp(cipher, field.label, field.value,\n field.sensitive === 1 ? FieldType.Hidden : FieldType.Text);\n }\n } else {\n this.processKvp(cipher, field.label, field.value,\n field.sensitive === 1 ? FieldType.Hidden : FieldType.Text);\n }\n });\n }\n\n private processNote(cipher: CipherView, fields: any[]) {\n fields.forEach((field: any) => {\n if (this.isNullOrWhitespace(field.value) || field.type === 'section') {\n return;\n }\n this.processKvp(cipher, field.label, field.value,\n field.sensitive === 1 ? FieldType.Hidden : FieldType.Text);\n });\n }\n\n private buildFolderTree(folders: any[]): any[] {\n if (folders == null) {\n return [];\n }\n const folderTree: any[] = [];\n const map = new Map([]);\n folders.forEach((obj: any) => {\n map.set(obj.uuid, obj);\n obj.children = [];\n });\n folders.forEach((obj: any) => {\n if (obj.parent_uuid != null && obj.parent_uuid !== '' && map.has(obj.parent_uuid)) {\n map.get(obj.parent_uuid).children.push(obj);\n } else {\n folderTree.push(obj);\n }\n });\n return folderTree;\n }\n\n private flattenFolderTree(titlePrefix: string, tree: any[], map: Map) {\n if (tree == null) {\n return;\n }\n tree.forEach((f: any) => {\n if (f.title != null && f.title.trim() !== '') {\n let title = f.title.trim();\n if (titlePrefix != null && titlePrefix.trim() !== '') {\n title = titlePrefix + '/' + title;\n }\n map.set(f.uuid, title);\n if (f.children != null && f.children.length !== 0) {\n this.flattenFolderTree(title, f.children, map);\n }\n }\n });\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class FirefoxCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.filter(value => {\n return value.url !== 'chrome://FirefoxAccounts';\n }).forEach(value => {\n const cipher = this.initLoginCipher();\n const url = this.getValueOrDefault(value.url, this.getValueOrDefault(value.hostname));\n cipher.name = this.getValueOrDefault(this.nameFromUrl(url), '--');\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(url);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\n\nimport { CipherType } from '../enums/cipherType';\n\nexport class FSecureFskImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.data == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n for (const key in results.data) {\n if (!results.data.hasOwnProperty(key)) {\n continue;\n }\n\n const value = results.data[key];\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.service);\n cipher.notes = this.getValueOrDefault(value.notes);\n\n if (value.style === 'website') {\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.url);\n } else if (value.style === 'creditcard') {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n cipher.card.cardholderName = this.getValueOrDefault(value.username);\n cipher.card.number = this.getValueOrDefault(value.creditNumber);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.code = this.getValueOrDefault(value.creditCvv);\n if (!this.isNullOrWhitespace(value.creditExpiry)) {\n if (!this.setCardExpiration(cipher, value.creditExpiry)) {\n this.processKvp(cipher, 'Expiration', value.creditExpiry);\n }\n }\n if (!this.isNullOrWhitespace(value.password)) {\n this.processKvp(cipher, 'PIN', value.password);\n }\n } else {\n continue;\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class GnomeJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || Object.keys(results).length === 0) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n for (const keyRing in results) {\n if (!results.hasOwnProperty(keyRing) || this.isNullOrWhitespace(keyRing) ||\n results[keyRing].length === 0) {\n continue;\n }\n\n results[keyRing].forEach((value: any) => {\n if (this.isNullOrWhitespace(value.display_name) || value.display_name.indexOf('http') !== 0) {\n return;\n }\n\n this.processFolder(result, keyRing);\n const cipher = this.initLoginCipher();\n cipher.name = value.display_name.replace('http://', '').replace('https://', '');\n if (cipher.name.length > 30) {\n cipher.name = cipher.name.substring(0, 30);\n }\n cipher.login.password = this.getValueOrDefault(value.secret);\n cipher.login.uris = this.makeUriArray(value.display_name);\n\n if (value.attributes != null) {\n cipher.login.username = value.attributes != null ?\n this.getValueOrDefault(value.attributes.username_value) : null;\n for (const attr in value.attributes) {\n if (!value.attributes.hasOwnProperty(attr) || attr === 'username_value' ||\n attr === 'xdg:schema') {\n continue;\n }\n this.processKvp(cipher, attr, value.attributes[attr]);\n }\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n }\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nconst NotesHeader = 'Notes\\n\\n';\nconst ApplicationsHeader = 'Applications\\n\\n';\nconst WebsitesHeader = 'Websites\\n\\n';\nconst Delimiter = '\\n---\\n';\n\nexport class KasperskyTxtImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n\n let notesData: string;\n let applicationsData: string;\n let websitesData: string;\n let workingData = this.splitNewLine(data).join('\\n');\n\n if (workingData.indexOf(NotesHeader) !== -1) {\n const parts = workingData.split(NotesHeader);\n if (parts.length > 1) {\n workingData = parts[0];\n notesData = parts[1];\n }\n }\n if (workingData.indexOf(ApplicationsHeader) !== -1) {\n const parts = workingData.split(ApplicationsHeader);\n if (parts.length > 1) {\n workingData = parts[0];\n applicationsData = parts[1];\n }\n }\n if (workingData.indexOf(WebsitesHeader) === 0) {\n const parts = workingData.split(WebsitesHeader);\n if (parts.length > 1) {\n workingData = parts[0];\n websitesData = parts[1];\n }\n }\n\n const notes = this.parseDataCategory(notesData);\n const applications = this.parseDataCategory(applicationsData);\n const websites = this.parseDataCategory(websitesData);\n\n notes.forEach(n => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(n.get('Name'));\n cipher.notes = this.getValueOrDefault(n.get('Text'));\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n websites.concat(applications).forEach(w => {\n const cipher = this.initLoginCipher();\n const nameKey = w.has('Website name') ? 'Website name' : 'Application';\n cipher.name = this.getValueOrDefault(w.get(nameKey), '');\n if (!this.isNullOrWhitespace(w.get('Login name'))) {\n if (!this.isNullOrWhitespace(cipher.name)) {\n cipher.name += ': ';\n }\n cipher.name += w.get('Login name');\n }\n cipher.notes = this.getValueOrDefault(w.get('Comment'));\n if (w.has('Website URL')) {\n cipher.login.uris = this.makeUriArray(w.get('Website URL'));\n }\n cipher.login.username = this.getValueOrDefault(w.get('Login'));\n cipher.login.password = this.getValueOrDefault(w.get('Password'));\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private parseDataCategory(data: string): Map[] {\n if (this.isNullOrWhitespace(data) || data.indexOf(Delimiter) === -1) {\n return [];\n }\n const items: Map[] = [];\n data.split(Delimiter).forEach(p => {\n if (p.indexOf('\\n') === -1) {\n return;\n }\n const item = new Map();\n let itemComment: string;\n let itemCommentKey: string;\n p.split('\\n').forEach(l => {\n if (itemComment != null) {\n itemComment += ('\\n' + l);\n return;\n }\n const colonIndex = l.indexOf(':');\n let key: string;\n let val: string;\n if (colonIndex === -1) {\n return;\n } else {\n key = l.substring(0, colonIndex);\n if (l.length > colonIndex + 1) {\n val = l.substring(colonIndex + 2);\n }\n }\n if (key != null) {\n item.set(key, val);\n }\n if (key === 'Comment' || key === 'Text') {\n itemComment = val;\n itemCommentKey = key;\n }\n });\n if (itemComment != null && itemCommentKey != null) {\n item.set(itemCommentKey, itemComment);\n }\n if (item.size === 0) {\n return;\n }\n items.push(item);\n });\n return items;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { FieldType } from '../enums/fieldType';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { FolderView } from '../models/view/folderView';\n\nexport class KeePass2XmlImporter extends BaseImporter implements Importer {\n result = new ImportResult();\n\n parse(data: string): Promise {\n const doc = this.parseXml(data);\n if (doc == null) {\n this.result.success = false;\n return Promise.resolve(this.result);\n }\n\n const rootGroup = doc.querySelector('KeePassFile > Root > Group');\n if (rootGroup == null) {\n this.result.errorMessage = 'Missing `KeePassFile > Root > Group` node.';\n this.result.success = false;\n return Promise.resolve(this.result);\n }\n\n this.traverse(rootGroup, true, '');\n\n if (this.organization) {\n this.moveFoldersToCollections(this.result);\n }\n\n this.result.success = true;\n return Promise.resolve(this.result);\n }\n\n traverse(node: Element, isRootNode: boolean, groupPrefixName: string) {\n const folderIndex = this.result.folders.length;\n let groupName = groupPrefixName;\n\n if (!isRootNode) {\n if (groupName !== '') {\n groupName += '/';\n }\n const nameEl = this.querySelectorDirectChild(node, 'Name');\n groupName += nameEl == null ? '-' : nameEl.textContent;\n const folder = new FolderView();\n folder.name = groupName;\n this.result.folders.push(folder);\n }\n\n this.querySelectorAllDirectChild(node, 'Entry').forEach(entry => {\n const cipherIndex = this.result.ciphers.length;\n\n const cipher = this.initLoginCipher();\n this.querySelectorAllDirectChild(entry, 'String').forEach(entryString => {\n const valueEl = this.querySelectorDirectChild(entryString, 'Value');\n const value = valueEl != null ? valueEl.textContent : null;\n if (this.isNullOrWhitespace(value)) {\n return;\n }\n const keyEl = this.querySelectorDirectChild(entryString, 'Key');\n const key = keyEl != null ? keyEl.textContent : null;\n\n if (key === 'URL') {\n cipher.login.uris = this.makeUriArray(value);\n } else if (key === 'UserName') {\n cipher.login.username = value;\n } else if (key === 'Password') {\n cipher.login.password = value;\n } else if (key === 'otp') {\n cipher.login.totp = value.replace('key=', '');\n } else if (key === 'Title') {\n cipher.name = value;\n } else if (key === 'Notes') {\n cipher.notes += (value + '\\n');\n } else {\n let type = FieldType.Text;\n const attrs = (valueEl.attributes as any);\n if (attrs.length > 0 && attrs.ProtectInMemory != null &&\n attrs.ProtectInMemory.value === 'True') {\n type = FieldType.Hidden;\n }\n this.processKvp(cipher, key, value, type);\n }\n });\n\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n\n if (!isRootNode) {\n this.result.folderRelationships.push([cipherIndex, folderIndex]);\n }\n });\n\n this.querySelectorAllDirectChild(node, 'Group').forEach(group => {\n this.traverse(group, false, groupName);\n });\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class KeePassXCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (this.isNullOrWhitespace(value.Title)) {\n return;\n }\n\n value.Group = !this.isNullOrWhitespace(value.Group) && value.Group.startsWith('Root/') ?\n value.Group.replace('Root/', '') : value.Group;\n const groupName = !this.isNullOrWhitespace(value.Group) ? value.Group : null;\n this.processFolder(result, groupName);\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value.Notes);\n cipher.name = this.getValueOrDefault(value.Title, '--');\n cipher.login.username = this.getValueOrDefault(value.Username);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.URL);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { FolderView } from '../models/view/folderView';\n\nexport class KeeperCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.length < 6) {\n return;\n }\n\n this.processFolder(result, value[0]);\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value[5]) + '\\n';\n cipher.name = this.getValueOrDefault(value[1], '--');\n cipher.login.username = this.getValueOrDefault(value[2]);\n cipher.login.password = this.getValueOrDefault(value[3]);\n cipher.login.uris = this.makeUriArray(value[4]);\n\n if (value.length > 7) {\n // we have some custom fields.\n for (let i = 7; i < value.length; i = i + 2) {\n this.processKvp(cipher, value[i], value[i + 1]);\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\nimport { CipherView } from '../models/view/cipherView';\nimport { FolderView } from '../models/view/folderView';\nimport { IdentityView } from '../models/view/identityView';\nimport { LoginView } from '../models/view/loginView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nexport class LastPassCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((value, index) => {\n const cipherIndex = result.ciphers.length;\n let folderIndex = result.folders.length;\n let grouping = value.grouping;\n if (grouping != null) {\n grouping = grouping.replace(/\\\\/g, '/').replace(/[\\x00-\\x1F\\x7F-\\x9F]/g, '');\n }\n const hasFolder = this.getValueOrDefault(grouping, '(none)') !== '(none)';\n let addFolder = hasFolder;\n\n if (hasFolder) {\n for (let i = 0; i < result.folders.length; i++) {\n if (result.folders[i].name === grouping) {\n addFolder = false;\n folderIndex = i;\n break;\n }\n }\n }\n\n const cipher = this.buildBaseCipher(value);\n if (cipher.type === CipherType.Login) {\n cipher.notes = this.getValueOrDefault(value.extra);\n cipher.login = new LoginView();\n cipher.login.uris = this.makeUriArray(value.url);\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.totp = this.getValueOrDefault(value.totp);\n } else if (cipher.type === CipherType.SecureNote) {\n this.parseSecureNote(value, cipher);\n } else if (cipher.type === CipherType.Card) {\n cipher.card = this.parseCard(value);\n cipher.notes = this.getValueOrDefault(value.notes);\n } else if (cipher.type === CipherType.Identity) {\n cipher.identity = this.parseIdentity(value);\n cipher.notes = this.getValueOrDefault(value.notes);\n if (!this.isNullOrWhitespace(value.ccnum)) {\n // there is a card on this identity too\n const cardCipher = this.buildBaseCipher(value);\n cardCipher.identity = null;\n cardCipher.type = CipherType.Card;\n cardCipher.card = this.parseCard(value);\n result.ciphers.push(cardCipher);\n }\n }\n\n result.ciphers.push(cipher);\n\n if (addFolder) {\n const f = new FolderView();\n f.name = grouping;\n result.folders.push(f);\n }\n if (hasFolder) {\n result.folderRelationships.push([cipherIndex, folderIndex]);\n }\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private buildBaseCipher(value: any) {\n const cipher = new CipherView();\n if (value.hasOwnProperty('profilename') && value.hasOwnProperty('profilelanguage')) {\n // form fill\n cipher.favorite = false;\n cipher.name = this.getValueOrDefault(value.profilename, '--');\n cipher.type = CipherType.Card;\n\n if (!this.isNullOrWhitespace(value.title) || !this.isNullOrWhitespace(value.firstname) ||\n !this.isNullOrWhitespace(value.lastname) || !this.isNullOrWhitespace(value.address1) ||\n !this.isNullOrWhitespace(value.phone) || !this.isNullOrWhitespace(value.username) ||\n !this.isNullOrWhitespace(value.email)) {\n cipher.type = CipherType.Identity;\n }\n } else {\n // site or secure note\n cipher.favorite = !this.organization && this.getValueOrDefault(value.fav, '0') === '1';\n cipher.name = this.getValueOrDefault(value.name, '--');\n cipher.type = value.url === 'http://sn' ? CipherType.SecureNote : CipherType.Login;\n }\n return cipher;\n }\n\n private parseCard(value: any): CardView {\n const card = new CardView();\n card.cardholderName = this.getValueOrDefault(value.ccname);\n card.number = this.getValueOrDefault(value.ccnum);\n card.code = this.getValueOrDefault(value.cccsc);\n card.brand = this.getCardBrand(value.ccnum);\n\n if (!this.isNullOrWhitespace(value.ccexp) && value.ccexp.indexOf('-') > -1) {\n const ccexpParts = (value.ccexp as string).split('-');\n if (ccexpParts.length > 1) {\n card.expYear = ccexpParts[0];\n card.expMonth = ccexpParts[1];\n if (card.expMonth.length === 2 && card.expMonth[0] === '0') {\n card.expMonth = card.expMonth[1];\n }\n }\n }\n\n return card;\n }\n\n private parseIdentity(value: any): IdentityView {\n const identity = new IdentityView();\n identity.title = this.getValueOrDefault(value.title);\n identity.firstName = this.getValueOrDefault(value.firstname);\n identity.middleName = this.getValueOrDefault(value.middlename);\n identity.lastName = this.getValueOrDefault(value.lastname);\n identity.username = this.getValueOrDefault(value.username);\n identity.company = this.getValueOrDefault(value.company);\n identity.ssn = this.getValueOrDefault(value.ssn);\n identity.address1 = this.getValueOrDefault(value.address1);\n identity.address2 = this.getValueOrDefault(value.address2);\n identity.address3 = this.getValueOrDefault(value.address3);\n identity.city = this.getValueOrDefault(value.city);\n identity.state = this.getValueOrDefault(value.state);\n identity.postalCode = this.getValueOrDefault(value.zip);\n identity.country = this.getValueOrDefault(value.country);\n identity.email = this.getValueOrDefault(value.email);\n identity.phone = this.getValueOrDefault(value.phone);\n\n if (!this.isNullOrWhitespace(identity.title)) {\n identity.title = identity.title.charAt(0).toUpperCase() + identity.title.slice(1);\n }\n\n return identity;\n }\n\n private parseSecureNote(value: any, cipher: CipherView) {\n const extraParts = this.splitNewLine(value.extra);\n let processedNote = false;\n\n if (extraParts.length) {\n const typeParts = extraParts[0].split(':');\n if (typeParts.length > 1 && typeParts[0] === 'NoteType' &&\n (typeParts[1] === 'Credit Card' || typeParts[1] === 'Address')) {\n if (typeParts[1] === 'Credit Card') {\n const mappedData = this.parseSecureNoteMapping(cipher, extraParts, {\n 'Number': 'number',\n 'Name on Card': 'cardholderName',\n 'Security Code': 'code',\n // LP provides date in a format like 'June,2020'\n // Store in expMonth, then parse and modify\n 'Expiration Date': 'expMonth',\n });\n\n if (this.isNullOrWhitespace(mappedData.expMonth) || mappedData.expMonth === ',') {\n // No expiration data\n mappedData.expMonth = undefined;\n } else {\n const [monthString, year] = mappedData.expMonth.split(',');\n // Parse month name into number\n if (!this.isNullOrWhitespace(monthString)) {\n const month = new Date(Date.parse(monthString.trim() + ' 1, 2012')).getMonth() + 1;\n if (isNaN(month)) {\n mappedData.expMonth = undefined;\n } else {\n mappedData.expMonth = month.toString();\n }\n } else {\n mappedData.expMonth = undefined;\n }\n if (!this.isNullOrWhitespace(year)) {\n mappedData.expYear = year;\n }\n }\n\n cipher.type = CipherType.Card;\n cipher.card = mappedData;\n } else if (typeParts[1] === 'Address') {\n const mappedData = this.parseSecureNoteMapping(cipher, extraParts, {\n 'Title': 'title',\n 'First Name': 'firstName',\n 'Last Name': 'lastName',\n 'Middle Name': 'middleName',\n 'Company': 'company',\n 'Address 1': 'address1',\n 'Address 2': 'address2',\n 'Address 3': 'address3',\n 'City / Town': 'city',\n 'State': 'state',\n 'Zip / Postal Code': 'postalCode',\n 'Country': 'country',\n 'Email Address': 'email',\n 'Username': 'username',\n });\n cipher.type = CipherType.Identity;\n cipher.identity = mappedData;\n }\n processedNote = true;\n }\n }\n\n if (!processedNote) {\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n cipher.notes = this.getValueOrDefault(value.extra);\n }\n }\n\n private parseSecureNoteMapping(cipher: CipherView, extraParts: string[], map: any): T {\n const dataObj: any = {};\n\n let processingNotes = false;\n extraParts.forEach(extraPart => {\n let key: string = null;\n let val: string = null;\n if (!processingNotes) {\n if (this.isNullOrWhitespace(extraPart)) {\n return;\n }\n const colonIndex = extraPart.indexOf(':');\n if (colonIndex === -1) {\n key = extraPart;\n } else {\n key = extraPart.substring(0, colonIndex);\n if (extraPart.length > colonIndex) {\n val = extraPart.substring(colonIndex + 1);\n }\n }\n if (this.isNullOrWhitespace(key) || this.isNullOrWhitespace(val) || key === 'NoteType') {\n return;\n }\n }\n\n if (processingNotes) {\n cipher.notes += ('\\n' + extraPart);\n } else if (key === 'Notes') {\n if (!this.isNullOrWhitespace(cipher.notes)) {\n cipher.notes += ('\\n' + val);\n } else {\n cipher.notes = val;\n }\n processingNotes = true;\n } else if (map.hasOwnProperty(key)) {\n dataObj[map[key]] = val;\n } else {\n this.processKvp(cipher, key, val);\n }\n });\n\n return dataObj;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class LogMeOnceCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.length < 4) {\n return;\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[0], '--');\n cipher.login.username = this.getValueOrDefault(value[2]);\n cipher.login.password = this.getValueOrDefault(value[3]);\n cipher.login.uris = this.makeUriArray(value[1]);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class MeldiumCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.DisplayName, '--');\n cipher.notes = this.getValueOrDefault(value.Notes);\n cipher.login.username = this.getValueOrDefault(value.UserName);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.Url);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nexport class MSecureCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.length < 3) {\n return;\n }\n\n const folderName = this.getValueOrDefault(value[0], 'Unassigned') !== 'Unassigned' ? value[0] : null;\n this.processFolder(result, folderName);\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[2], '--');\n\n if (value[1] === 'Web Logins' || value[1] === 'Login') {\n cipher.login.uris = this.makeUriArray(value[4]);\n cipher.login.username = this.getValueOrDefault(value[5]);\n cipher.login.password = this.getValueOrDefault(value[6]);\n cipher.notes = !this.isNullOrWhitespace(value[3]) ? value[3].split('\\\\n').join('\\n') : null;\n } else if (value.length > 3) {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n for (let i = 3; i < value.length; i++) {\n if (!this.isNullOrWhitespace(value[i])) {\n cipher.notes += (value[i] + '\\n');\n }\n }\n }\n\n if (!this.isNullOrWhitespace(value[1]) && cipher.type !== CipherType.Login) {\n cipher.name = value[1] + ': ' + cipher.name;\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nimport { CardView } from '../models/view/cardView';\nimport { IdentityView } from '../models/view/identityView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class MykiCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.nickname, '--');\n cipher.notes = this.getValueOrDefault(value.additionalInfo);\n\n if (value.url !== undefined) {\n // Accounts\n cipher.login.uris = this.makeUriArray(value.url);\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.totp = this.getValueOrDefault(value.twoFactAuthToken);\n } else if (value.cardNumber !== undefined) {\n // Cards\n cipher.card = new CardView();\n cipher.type = CipherType.Card;\n cipher.card.cardholderName = this.getValueOrDefault(value.cardName);\n cipher.card.number = this.getValueOrDefault(value.cardNumber);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.expMonth = this.getValueOrDefault(value.exp_month);\n cipher.card.expYear = this.getValueOrDefault(value.exp_year);\n cipher.card.code = this.getValueOrDefault(value.cvv);\n } else if (value.firstName !== undefined) {\n // Identities\n cipher.identity = new IdentityView();\n cipher.type = CipherType.Identity;\n cipher.identity.title = this.getValueOrDefault(value.title);\n cipher.identity.firstName = this.getValueOrDefault(value.firstName);\n cipher.identity.middleName = this.getValueOrDefault(value.middleName);\n cipher.identity.lastName = this.getValueOrDefault(value.lastName);\n cipher.identity.phone = this.getValueOrDefault(value.number);\n cipher.identity.email = this.getValueOrDefault(value.email);\n cipher.identity.address1 = this.getValueOrDefault(value.firstAddressLine);\n cipher.identity.address2 = this.getValueOrDefault(value.secondAddressLine);\n cipher.identity.city = this.getValueOrDefault(value.city);\n cipher.identity.country = this.getValueOrDefault(value.country);\n cipher.identity.postalCode = this.getValueOrDefault(value.zipCode);\n } else if (value.content !== undefined) {\n // Notes\n cipher.secureNote = new SecureNoteView();\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n cipher.name = this.getValueOrDefault(value.title, '--');\n cipher.notes = this.getValueOrDefault(value.content);\n } else {\n return;\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CipherView } from '../models/view/cipherView';\nimport { LoginView } from '../models/view/loginView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\ntype nodePassCsvParsed = {\n name: string;\n url: string;\n username: string;\n password: string;\n note: string;\n cardholdername: string;\n cardnumber: string;\n cvc: string;\n expirydate: string;\n zipcode: string;\n folder: string;\n full_name: string;\n phone_number: string;\n email: string;\n address1: string;\n address2: string;\n city: string;\n country: string;\n state: string;\n};\n\nexport class NordPassCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results: nodePassCsvParsed[] = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(record => {\n\n const recordType = this.evaluateType(record);\n if (recordType === undefined) {\n return;\n }\n\n if (!this.organization) {\n this.processFolder(result, record.folder);\n }\n\n const cipher = new CipherView();\n cipher.name = this.getValueOrDefault(record.name, '--');\n cipher.notes = this.getValueOrDefault(record.note);\n\n switch (recordType) {\n case CipherType.Login:\n cipher.type = CipherType.Login;\n cipher.login = new LoginView();\n cipher.login.username = this.getValueOrDefault(record.username);\n cipher.login.password = this.getValueOrDefault(record.password);\n cipher.login.uris = this.makeUriArray(record.url);\n break;\n case CipherType.Card:\n cipher.type = CipherType.Card;\n cipher.card.cardholderName = this.getValueOrDefault(record.cardholdername);\n cipher.card.number = this.getValueOrDefault(record.cardnumber);\n cipher.card.code = this.getValueOrDefault(record.cvc);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n this.setCardExpiration(cipher, record.expirydate);\n break;\n\n case CipherType.Identity:\n cipher.type = CipherType.Identity;\n\n this.processName(cipher, this.getValueOrDefault(record.full_name));\n cipher.identity.address1 = this.getValueOrDefault(record.address1);\n cipher.identity.address2 = this.getValueOrDefault(record.address2);\n cipher.identity.city = this.getValueOrDefault(record.city);\n cipher.identity.state = this.getValueOrDefault(record.state);\n cipher.identity.postalCode = this.getValueOrDefault(record.zipcode);\n cipher.identity.country = this.getValueOrDefault(record.country);\n if (cipher.identity.country != null) {\n cipher.identity.country = cipher.identity.country.toUpperCase();\n }\n cipher.identity.email = this.getValueOrDefault(record.email);\n cipher.identity.phone = this.getValueOrDefault(record.phone_number);\n break;\n case CipherType.SecureNote:\n cipher.type = CipherType.SecureNote;\n cipher.secureNote.type = SecureNoteType.Generic;\n break;\n default:\n break;\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private evaluateType(record: nodePassCsvParsed): CipherType {\n\n if (!this.isNullOrWhitespace(record.username)) {\n return CipherType.Login;\n }\n\n if (!this.isNullOrWhitespace(record.cardnumber)) {\n return CipherType.Card;\n }\n\n if (!this.isNullOrWhitespace(record.full_name)) {\n return CipherType.Identity;\n }\n\n if (!this.isNullOrWhitespace(record.note)) {\n return CipherType.SecureNote;\n }\n\n return undefined;\n }\n\n private processName(cipher: CipherView, fullName: string) {\n\n if (this.isNullOrWhitespace(fullName)) {\n return;\n }\n\n const nameParts = fullName.split(' ');\n if (nameParts.length > 0) {\n cipher.identity.firstName = this.getValueOrDefault(nameParts[0]);\n }\n if (nameParts.length === 2) {\n cipher.identity.lastName = this.getValueOrDefault(nameParts[1]);\n } else if (nameParts.length >= 3) {\n cipher.identity.middleName = this.getValueOrDefault(nameParts[1]);\n cipher.identity.lastName = nameParts.slice(2, nameParts.length).join(' ');\n }\n }\n}\n","import { BaseImporter } from '../baseImporter';\nimport { Importer } from '../importer';\n\nimport { ImportResult } from '../../models/domain/importResult';\n\nimport { CardView } from '../../models/view/cardView';\nimport { CipherView } from '../../models/view/cipherView';\nimport { IdentityView } from '../../models/view/identityView';\nimport { PasswordHistoryView } from '../../models/view/passwordHistoryView';\nimport { SecureNoteView } from '../../models/view/secureNoteView';\n\nimport { CipherType } from '../../enums/cipherType';\nimport { FieldType } from '../../enums/fieldType';\nimport { SecureNoteType } from '../../enums/secureNoteType';\n\nexport class OnePassword1PifImporter extends BaseImporter implements Importer {\n result = new ImportResult();\n\n parse(data: string): Promise {\n data.split(this.newLineRegex).forEach(line => {\n if (this.isNullOrWhitespace(line) || line[0] !== '{') {\n return;\n }\n const item = JSON.parse(line);\n if (item.trashed === true) {\n return;\n }\n const cipher = this.initLoginCipher();\n\n if (this.isNullOrWhitespace(item.hmac)) {\n this.processStandardItem(item, cipher);\n } else {\n this.processWinOpVaultItem(item, cipher);\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n this.result.ciphers.push(cipher);\n });\n\n this.result.success = true;\n return Promise.resolve(this.result);\n }\n\n private processWinOpVaultItem(item: any, cipher: CipherView) {\n if (item.overview != null) {\n cipher.name = this.getValueOrDefault(item.overview.title);\n if (item.overview.URLs != null) {\n const urls: string[] = [];\n item.overview.URLs.forEach((url: any) => {\n if (!this.isNullOrWhitespace(url.u)) {\n urls.push(url.u);\n }\n });\n cipher.login.uris = this.makeUriArray(urls);\n }\n }\n\n if (item.details != null) {\n if (item.details.passwordHistory != null) {\n this.parsePasswordHistory(item.details.passwordHistory, cipher);\n }\n if (!this.isNullOrWhitespace(item.details.ccnum) || !this.isNullOrWhitespace(item.details.cvv)) {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n } else if (!this.isNullOrWhitespace(item.details.firstname) ||\n !this.isNullOrWhitespace(item.details.address1)) {\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n }\n if (cipher.type === CipherType.Login && !this.isNullOrWhitespace(item.details.password)) {\n cipher.login.password = item.details.password;\n }\n if (!this.isNullOrWhitespace(item.details.notesPlain)) {\n cipher.notes = item.details.notesPlain.split(this.newLineRegex).join('\\n') + '\\n';\n }\n if (item.details.fields != null) {\n this.parseFields(item.details.fields, cipher, 'designation', 'value', 'name');\n }\n if (item.details.sections != null) {\n item.details.sections.forEach((section: any) => {\n if (section.fields != null) {\n this.parseFields(section.fields, cipher, 'n', 'v', 't');\n }\n });\n }\n }\n }\n\n private processStandardItem(item: any, cipher: CipherView) {\n cipher.favorite = item.openContents && item.openContents.faveIndex ? true : false;\n cipher.name = this.getValueOrDefault(item.title);\n\n if (item.typeName === 'securenotes.SecureNote') {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n } else if (item.typeName === 'wallet.financial.CreditCard') {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n } else if (item.typeName === 'identities.Identity') {\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n } else {\n cipher.login.uris = this.makeUriArray(item.location);\n }\n\n if (item.secureContents != null) {\n if (item.secureContents.passwordHistory != null) {\n this.parsePasswordHistory(item.secureContents.passwordHistory, cipher);\n }\n if (!this.isNullOrWhitespace(item.secureContents.notesPlain)) {\n cipher.notes = item.secureContents.notesPlain.split(this.newLineRegex).join('\\n') + '\\n';\n }\n if (cipher.type === CipherType.Login) {\n if (!this.isNullOrWhitespace(item.secureContents.password)) {\n cipher.login.password = item.secureContents.password;\n }\n if (item.secureContents.URLs != null) {\n const urls: string[] = [];\n item.secureContents.URLs.forEach((u: any) => {\n if (!this.isNullOrWhitespace(u.url)) {\n urls.push(u.url);\n }\n });\n if (urls.length > 0) {\n cipher.login.uris = this.makeUriArray(urls);\n }\n }\n }\n if (item.secureContents.fields != null) {\n this.parseFields(item.secureContents.fields, cipher, 'designation', 'value', 'name');\n }\n if (item.secureContents.sections != null) {\n item.secureContents.sections.forEach((section: any) => {\n if (section.fields != null) {\n this.parseFields(section.fields, cipher, 'n', 'v', 't');\n }\n });\n }\n }\n }\n\n private parsePasswordHistory(items: any[], cipher: CipherView) {\n const maxSize = items.length > 5 ? 5 : items.length;\n cipher.passwordHistory = items\n .filter((h: any) => !this.isNullOrWhitespace(h.value) && h.time != null)\n .sort((a, b) => b.time - a.time)\n .slice(0, maxSize)\n .map((h: any) => {\n const ph = new PasswordHistoryView();\n ph.password = h.value;\n ph.lastUsedDate = new Date(('' + h.time).length >= 13 ? h.time : h.time * 1000);\n return ph;\n });\n }\n\n private parseFields(fields: any[], cipher: CipherView, designationKey: string, valueKey: string, nameKey: string) {\n fields.forEach((field: any) => {\n if (field[valueKey] == null || field[valueKey].toString().trim() === '') {\n return;\n }\n\n const fieldValue = field[valueKey].toString();\n const fieldDesignation = field[designationKey] != null ? field[designationKey].toString() : null;\n\n if (cipher.type === CipherType.Login) {\n if (this.isNullOrWhitespace(cipher.login.username) && fieldDesignation === 'username') {\n cipher.login.username = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(cipher.login.password) && fieldDesignation === 'password') {\n cipher.login.password = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(cipher.login.totp) && fieldDesignation != null &&\n fieldDesignation.startsWith('TOTP_')) {\n cipher.login.totp = fieldValue;\n return;\n }\n } else if (cipher.type === CipherType.Card) {\n if (this.isNullOrWhitespace(cipher.card.number) && fieldDesignation === 'ccnum') {\n cipher.card.number = fieldValue;\n cipher.card.brand = this.getCardBrand(fieldValue);\n return;\n } else if (this.isNullOrWhitespace(cipher.card.code) && fieldDesignation === 'cvv') {\n cipher.card.code = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(cipher.card.cardholderName) && fieldDesignation === 'cardholder') {\n cipher.card.cardholderName = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(cipher.card.expiration) && fieldDesignation === 'expiry' &&\n fieldValue.length === 6) {\n cipher.card.expMonth = (fieldValue as string).substr(4, 2);\n if (cipher.card.expMonth[0] === '0') {\n cipher.card.expMonth = cipher.card.expMonth.substr(1, 1);\n }\n cipher.card.expYear = (fieldValue as string).substr(0, 4);\n return;\n } else if (fieldDesignation === 'type') {\n // Skip since brand was determined from number above\n return;\n }\n } else if (cipher.type === CipherType.Identity) {\n const identity = cipher.identity;\n if (this.isNullOrWhitespace(identity.firstName) && fieldDesignation === 'firstname') {\n identity.firstName = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.lastName) && fieldDesignation === 'lastname') {\n identity.lastName = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.middleName) && fieldDesignation === 'initial') {\n identity.middleName = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.phone) && fieldDesignation === 'defphone') {\n identity.phone = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.company) && fieldDesignation === 'company') {\n identity.company = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.email) && fieldDesignation === 'email') {\n identity.email = fieldValue;\n return;\n } else if (this.isNullOrWhitespace(identity.username) && fieldDesignation === 'username') {\n identity.username = fieldValue;\n return;\n } else if (fieldDesignation === 'address') {\n // fieldValue is an object casted into a string, so access the plain value instead\n const { street, city, country, zip } = field[valueKey];\n identity.address1 = this.getValueOrDefault(street);\n identity.city = this.getValueOrDefault(city);\n if (!this.isNullOrWhitespace(country)) {\n identity.country = country.toUpperCase();\n }\n identity.postalCode = this.getValueOrDefault(zip);\n return;\n }\n }\n\n const fieldName = this.isNullOrWhitespace(field[nameKey]) ? 'no_name' : field[nameKey];\n if (fieldName === 'password' && cipher.passwordHistory != null &&\n cipher.passwordHistory.some(h => h.password === fieldValue)) {\n return;\n }\n\n const fieldType = field.k === 'concealed' ? FieldType.Hidden : FieldType.Text;\n this.processKvp(cipher, fieldName, fieldValue, fieldType);\n });\n }\n}\n","import { Importer } from '../importer';\nimport { IgnoredProperties, OnePasswordCsvImporter } from './onepasswordCsvImporter';\n\nimport { CipherType } from '../../enums/cipherType';\nimport { CardView } from '../../models/view/cardView';\nimport { CipherView } from '../../models/view/cipherView';\nimport { IdentityView } from '../../models/view/identityView';\n\nexport class OnePasswordMacCsvImporter extends OnePasswordCsvImporter implements Importer {\n setCipherType(value: any, cipher: CipherView) {\n const onePassType = this.getValueOrDefault(this.getProp(value, 'type'), 'Login');\n switch (onePassType) {\n case 'Credit Card':\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n IgnoredProperties.push('type');\n break;\n case 'Identity':\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n IgnoredProperties.push('type');\n break;\n case 'Login':\n case 'Secure Note':\n IgnoredProperties.push('type');\n default:\n break;\n }\n }\n}\n","import { CipherView } from '../../models/view/cipherView';\n\nexport class CipherImportContext {\n lowerProperty: string;\n constructor(public importRecord: any, public property: string, public cipher: CipherView) {\n this.lowerProperty = property.toLowerCase();\n }\n}\n","import { Importer } from '../importer';\nimport { CipherImportContext } from './cipherImportContext';\nimport { OnePasswordCsvImporter } from './onepasswordCsvImporter';\n\nimport { CipherType } from '../../enums/cipherType';\nimport { CardView } from '../../models/view/cardView';\nimport { CipherView } from '../../models/view/cipherView';\nimport { IdentityView } from '../../models/view/identityView';\nimport { LoginView } from '../../models/view/loginView';\n\nexport class OnePasswordWinCsvImporter extends OnePasswordCsvImporter implements Importer {\n constructor() {\n super();\n this.identityPropertyParsers.push(this.setIdentityAddress);\n }\n\n setCipherType(value: any, cipher: CipherView) {\n cipher.type = CipherType.Login;\n cipher.login = new LoginView();\n\n if (!this.isNullOrWhitespace(this.getPropByRegexp(value, /\\d+: number/i)) &&\n !this.isNullOrWhitespace(this.getPropByRegexp(value, /\\d+: expiry date/i))) {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n }\n\n if (!this.isNullOrWhitespace(this.getPropByRegexp(value, /name \\d+: first name/i)) ||\n !this.isNullOrWhitespace(this.getPropByRegexp(value, /name \\d+: initial/i)) ||\n !this.isNullOrWhitespace(this.getPropByRegexp(value, /name \\d+: last name/i)) ||\n !this.isNullOrWhitespace(this.getPropByRegexp(value, /internet \\d+: email/i))) {\n cipher.type = CipherType.Identity;\n cipher.identity = new IdentityView();\n }\n }\n\n setIdentityAddress(context: CipherImportContext) {\n if (context.lowerProperty.match(/address \\d+: address/i)) {\n this.processKvp(context.cipher, 'address', context.importRecord[context.property]);\n return true;\n }\n return false;\n }\n\n setCreditCardExpiry(context: CipherImportContext) {\n if (this.isNullOrWhitespace(context.cipher.card.expiration) && context.lowerProperty.includes('expiry date')) {\n const expSplit = (context.importRecord[context.property] as string).split('/');\n context.cipher.card.expMonth = expSplit[0];\n if (context.cipher.card.expMonth[0] === '0' && context.cipher.card.expMonth.length === 2) {\n context.cipher.card.expMonth = context.cipher.card.expMonth.substr(1, 1);\n }\n context.cipher.card.expYear = expSplit[2].length > 4 ? expSplit[2].substr(0, 4) : expSplit[2];\n return true;\n }\n return false;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CollectionView } from '../models/view/collectionView';\nimport { FolderView } from '../models/view/folderView';\n\nexport class PadlockCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n let headers: string[] = null;\n results.forEach(value => {\n if (headers == null) {\n headers = value.map((v: string) => v);\n return;\n }\n\n if (value.length < 2 || value.length !== headers.length) {\n return;\n }\n\n if (!this.isNullOrWhitespace(value[1])) {\n if (this.organization) {\n const tags = (value[1] as string).split(',');\n tags.forEach(tag => {\n tag = tag.trim();\n let addCollection = true;\n let collectionIndex = result.collections.length;\n\n for (let i = 0; i < result.collections.length; i++) {\n if (result.collections[i].name === tag) {\n addCollection = false;\n collectionIndex = i;\n break;\n }\n }\n\n if (addCollection) {\n const collection = new CollectionView();\n collection.name = tag;\n result.collections.push(collection);\n }\n\n result.collectionRelationships.push([result.ciphers.length, collectionIndex]);\n });\n } else {\n const tags = (value[1] as string).split(',');\n const tag = tags.length > 0 ? tags[0].trim() : null;\n this.processFolder(result, tag);\n }\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[0], '--');\n\n for (let i = 2; i < value.length; i++) {\n const header = headers[i].trim().toLowerCase();\n if (this.isNullOrWhitespace(value[i]) || this.isNullOrWhitespace(header)) {\n continue;\n }\n\n if (this.usernameFieldNames.indexOf(header) > -1) {\n cipher.login.username = value[i];\n } else if (this.passwordFieldNames.indexOf(header) > -1) {\n cipher.login.password = value[i];\n } else if (this.uriFieldNames.indexOf(header) > -1) {\n cipher.login.uris = this.makeUriArray(value[i]);\n } else {\n this.processKvp(cipher, headers[i], value[i]);\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PassKeepCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n this.processFolder(result, this.getValue('category', value));\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValue('description', value);\n cipher.name = this.getValueOrDefault(this.getValue('title', value), '--');\n cipher.login.username = this.getValue('username', value);\n cipher.login.password = this.getValue('password', value);\n cipher.login.uris = this.makeUriArray(this.getValue('site', value));\n this.processKvp(cipher, 'Password 2', this.getValue('password2', value));\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private getValue(key: string, value: any) {\n return this.getValueOrDefault(value[key], this.getValueOrDefault(value[(' ' + key)]));\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PassmanJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.length === 0) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach((credential: any) => {\n if (credential.tags != null && credential.tags.length > 0) {\n const folderName = credential.tags[0].text;\n this.processFolder(result, folderName);\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = credential.label;\n\n cipher.login.username = this.getValueOrDefault(credential.username);\n if (this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = this.getValueOrDefault(credential.email);\n } else if (!this.isNullOrWhitespace(credential.email)) {\n cipher.notes = ('Email: ' + credential.email + '\\n');\n }\n\n cipher.login.password = this.getValueOrDefault(credential.password);\n cipher.login.uris = this.makeUriArray(credential.url);\n cipher.notes += this.getValueOrDefault(credential.description, '');\n if (credential.otp != null) {\n cipher.login.totp = this.getValueOrDefault(credential.otp.secret);\n }\n\n if (credential.custom_fields != null) {\n credential.custom_fields.forEach((customField: any) => {\n switch (customField.field_type) {\n case 'text':\n case 'password':\n this.processKvp(cipher, customField.label, customField.value);\n break;\n }\n });\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CollectionView } from '../models/view/collectionView';\n\nexport class PasspackCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const tagsJson = !this.isNullOrWhitespace(value.Tags) ? JSON.parse(value.Tags) : null;\n const tags: string[] = tagsJson != null && tagsJson.tags != null && tagsJson.tags.length > 0 ?\n tagsJson.tags.map((tagJson: string) => {\n try {\n const t = JSON.parse(tagJson);\n return this.getValueOrDefault(t.tag);\n } catch {\n // Ignore error\n }\n return null;\n }).filter((t: string) => !this.isNullOrWhitespace(t)) : null;\n\n if (this.organization && tags != null && tags.length > 0) {\n tags.forEach(tag => {\n let addCollection = true;\n let collectionIndex = result.collections.length;\n\n for (let i = 0; i < result.collections.length; i++) {\n if (result.collections[i].name === tag) {\n addCollection = false;\n collectionIndex = i;\n break;\n }\n }\n\n if (addCollection) {\n const collection = new CollectionView();\n collection.name = tag;\n result.collections.push(collection);\n }\n\n result.collectionRelationships.push([result.ciphers.length, collectionIndex]);\n });\n } else if (!this.organization && tags != null && tags.length > 0) {\n this.processFolder(result, tags[0]);\n }\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value.Notes, '');\n cipher.notes += ('\\n\\n' + this.getValueOrDefault(value['Shared Notes'], '') + '\\n');\n cipher.name = this.getValueOrDefault(value['Entry Name'], '--');\n cipher.login.username = this.getValueOrDefault(value['User ID']);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.URL);\n\n if (value.__parsed_extra != null && value.__parsed_extra.length > 0) {\n value.__parsed_extra.forEach((extra: string) => {\n if (!this.isNullOrWhitespace(extra)) {\n cipher.notes += ('\\n' + extra);\n }\n });\n }\n\n const fieldsJson = !this.isNullOrWhitespace(value['Extra Fields']) ?\n JSON.parse(value['Extra Fields']) : null;\n const fields = fieldsJson != null && fieldsJson.extraFields != null &&\n fieldsJson.extraFields.length > 0 ? fieldsJson.extraFields.map((fieldJson: string) => {\n try {\n return JSON.parse(fieldJson);\n } catch {\n // Ignore error\n }\n return null;\n }) : null;\n if (fields != null) {\n fields.forEach((f: any) => {\n if (f != null) {\n this.processKvp(cipher, f.name, f.data);\n }\n });\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PasswordAgentCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n let newVersion = true;\n results.forEach(value => {\n if (value.length !== 5 && value.length < 9) {\n return;\n }\n const altFormat = value.length === 10 && value[0] === '0';\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[altFormat ? 1 : 0], '--');\n cipher.login.username = this.getValueOrDefault(value[altFormat ? 2 : 1]);\n cipher.login.password = this.getValueOrDefault(value[altFormat ? 3 : 2]);\n if (value.length === 5) {\n newVersion = false;\n cipher.notes = this.getValueOrDefault(value[4]);\n cipher.login.uris = this.makeUriArray(value[3]);\n } else {\n const folder = this.getValueOrDefault(value[altFormat ? 9 : 8], '(None)');\n let folderName = folder !== '(None)' ? folder.split('\\\\').join('/') : null;\n if (folderName != null) {\n folderName = folder.split(' > ').join('/');\n folderName = folder.split('>').join('/');\n }\n this.processFolder(result, folderName);\n cipher.notes = this.getValueOrDefault(value[altFormat ? 5 : 3]);\n cipher.login.uris = this.makeUriArray(value[4]);\n }\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (newVersion && this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\nimport { FolderView } from '../models/view/folderView';\n\nimport { CipherType } from '../enums/cipherType';\n\nexport class PasswordBossJsonImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = JSON.parse(data);\n if (results == null || results.items == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const foldersMap = new Map();\n results.folders.forEach((value: any) => {\n foldersMap.set(value.id, value.name);\n });\n const foldersIndexMap = new Map();\n foldersMap.forEach((val, key) => {\n foldersIndexMap.set(key, result.folders.length);\n const f = new FolderView();\n f.name = val;\n result.folders.push(f);\n });\n\n results.items.forEach((value: any) => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name, '--');\n cipher.login.uris = this.makeUriArray(value.login_url);\n\n if (value.folder != null && foldersIndexMap.has(value.folder)) {\n result.folderRelationships.push([result.ciphers.length, foldersIndexMap.get(value.folder)]);\n }\n\n if (value.identifiers == null) {\n return;\n }\n\n if (!this.isNullOrWhitespace(value.identifiers.notes)) {\n cipher.notes = value.identifiers.notes.split('\\\\r\\\\n').join('\\n').split('\\\\n').join('\\n');\n }\n\n if (value.type === 'CreditCard') {\n cipher.card = new CardView();\n cipher.type = CipherType.Card;\n }\n\n for (const property in value.identifiers) {\n if (!value.identifiers.hasOwnProperty(property)) {\n continue;\n }\n const valObj = value.identifiers[property];\n const val = valObj != null ? valObj.toString() : null;\n if (this.isNullOrWhitespace(val) || property === 'notes' || property === 'ignoreItemInSecurityScore') {\n continue;\n }\n\n if (property === 'custom_fields') {\n valObj.forEach((cf: any) => {\n this.processKvp(cipher, cf.name, cf.value);\n });\n continue;\n }\n\n if (cipher.type === CipherType.Card) {\n if (property === 'cardNumber') {\n cipher.card.number = val;\n cipher.card.brand = this.getCardBrand(val);\n continue;\n } else if (property === 'nameOnCard') {\n cipher.card.cardholderName = val;\n continue;\n } else if (property === 'security_code') {\n cipher.card.code = val;\n continue;\n } else if (property === 'expires') {\n try {\n const expDate = new Date(val);\n cipher.card.expYear = expDate.getFullYear().toString();\n cipher.card.expMonth = (expDate.getMonth() + 1).toString();\n } catch {\n // Ignore error\n }\n continue;\n } else if (property === 'cardType') {\n continue;\n }\n } else {\n if ((property === 'username' || property === 'email') &&\n this.isNullOrWhitespace(cipher.login.username)) {\n cipher.login.username = val;\n continue;\n } else if (property === 'password') {\n cipher.login.password = val;\n continue;\n } else if (property === 'totp') {\n cipher.login.totp = val;\n continue;\n } else if ((cipher.login.uris == null || cipher.login.uris.length === 0) &&\n this.uriFieldNames.indexOf(property) > -1) {\n cipher.login.uris = this.makeUriArray(val);\n continue;\n }\n }\n\n this.processKvp(cipher, property, val);\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PasswordDragonXmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const records = doc.querySelectorAll('PasswordManager > record');\n Array.from(records).forEach(record => {\n const category = this.querySelectorDirectChild(record, 'Category');\n const categoryText = category != null && !this.isNullOrWhitespace(category.textContent) &&\n category.textContent !== 'Unfiled' ? category.textContent : null;\n this.processFolder(result, categoryText);\n\n const accountName = this.querySelectorDirectChild(record, 'Account-Name');\n const userId = this.querySelectorDirectChild(record, 'User-Id');\n const password = this.querySelectorDirectChild(record, 'Password');\n const url = this.querySelectorDirectChild(record, 'URL');\n const notes = this.querySelectorDirectChild(record, 'Notes');\n const cipher = this.initLoginCipher();\n cipher.name = accountName != null ? this.getValueOrDefault(accountName.textContent, '--') : '--';\n cipher.notes = notes != null ? this.getValueOrDefault(notes.textContent) : '';\n cipher.login.username = userId != null ? this.getValueOrDefault(userId.textContent) : null;\n cipher.login.password = password != null ? this.getValueOrDefault(password.textContent) : null;\n cipher.login.uris = url != null ? this.makeUriArray(url.textContent) : null;\n\n const attributes: string[] = [];\n for (let i = 1; i <= 10; i++) {\n attributes.push('Attribute-' + i);\n }\n\n this.querySelectorAllDirectChild(record, attributes.join(',')).forEach(attr => {\n if (this.isNullOrWhitespace(attr.textContent) || attr.textContent === 'null') {\n return;\n }\n this.processKvp(cipher, attr.tagName, attr.textContent);\n });\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PasswordSafeXmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const passwordSafe = doc.querySelector('passwordsafe');\n if (passwordSafe == null) {\n result.errorMessage = 'Missing `passwordsafe` node.';\n result.success = false;\n return Promise.resolve(result);\n }\n\n const notesDelimiter = passwordSafe.getAttribute('delimiter');\n const entries = doc.querySelectorAll('passwordsafe > entry');\n Array.from(entries).forEach(entry => {\n const group = this.querySelectorDirectChild(entry, 'group');\n const groupText = group != null && !this.isNullOrWhitespace(group.textContent) ?\n group.textContent.split('.').join('/') : null;\n this.processFolder(result, groupText);\n\n const title = this.querySelectorDirectChild(entry, 'title');\n const username = this.querySelectorDirectChild(entry, 'username');\n const email = this.querySelectorDirectChild(entry, 'email');\n const password = this.querySelectorDirectChild(entry, 'password');\n const url = this.querySelectorDirectChild(entry, 'url');\n const notes = this.querySelectorDirectChild(entry, 'notes');\n const cipher = this.initLoginCipher();\n cipher.name = title != null ? this.getValueOrDefault(title.textContent, '--') : '--';\n cipher.notes = notes != null ?\n this.getValueOrDefault(notes.textContent, '').split(notesDelimiter).join('\\n') : null;\n cipher.login.username = username != null ? this.getValueOrDefault(username.textContent) : null;\n cipher.login.password = password != null ? this.getValueOrDefault(password.textContent) : null;\n cipher.login.uris = url != null ? this.makeUriArray(url.textContent) : null;\n\n if (this.isNullOrWhitespace(cipher.login.username) && email != null) {\n cipher.login.username = this.getValueOrDefault(email.textContent);\n } else if (email != null && !this.isNullOrWhitespace(email.textContent)) {\n cipher.notes = this.isNullOrWhitespace(cipher.notes) ? 'Email: ' + email.textContent\n : (cipher.notes + '\\n' + 'Email: ' + email.textContent);\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class PasswordWalletTxtImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.length < 1) {\n return;\n }\n if (value.length > 5) {\n this.processFolder(result, value[5]);\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[0], '--');\n if (value.length > 4) {\n cipher.notes = this.getValueOrDefault(value[4], '').split('¬').join('\\n');\n }\n if (value.length > 2) {\n cipher.login.username = this.getValueOrDefault(value[2]);\n }\n if (value.length > 3) {\n cipher.login.password = this.getValueOrDefault(value[3]);\n }\n if (value.length > 1) {\n cipher.login.uris = this.makeUriArray(value[1]);\n }\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { CipherType } from '../enums/cipherType';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\n\nexport class RememBearCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.trash === 'true') {\n return;\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.name);\n cipher.notes = this.getValueOrDefault(value.notes);\n if (value.type === 'LoginItem') {\n cipher.login.uris = this.makeUriArray(value.website);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.username = this.getValueOrDefault(value.username);\n } else if (value.type === 'CreditCardItem') {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n cipher.card.cardholderName = this.getValueOrDefault(value.cardholder);\n cipher.card.number = this.getValueOrDefault(value.number);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n cipher.card.code = this.getValueOrDefault(value.verification);\n\n try {\n const expMonth = this.getValueOrDefault(value.expiryMonth);\n if (expMonth != null) {\n const expMonthNumber = parseInt(expMonth, null);\n if (expMonthNumber != null && expMonthNumber >= 1 && expMonthNumber <= 12) {\n cipher.card.expMonth = expMonthNumber.toString();\n }\n }\n } catch {\n // Ignore error\n }\n try {\n const expYear = this.getValueOrDefault(value.expiryYear);\n if (expYear != null) {\n const expYearNumber = parseInt(expYear, null);\n if (expYearNumber != null) {\n cipher.card.expYear = expYearNumber.toString();\n }\n }\n } catch {\n // Ignore error\n }\n\n const pin = this.getValueOrDefault(value.pin);\n if (pin != null) {\n this.processKvp(cipher, 'PIN', pin);\n }\n const zip = this.getValueOrDefault(value.zipCode);\n if (zip != null) {\n this.processKvp(cipher, 'Zip Code', zip);\n }\n }\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class RoboFormCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n let i = 1;\n results.forEach(value => {\n const folder = !this.isNullOrWhitespace(value.Folder) && value.Folder.startsWith('/') ?\n value.Folder.replace('/', '') : value.Folder;\n const folderName = !this.isNullOrWhitespace(folder) ? folder : null;\n this.processFolder(result, folderName);\n\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value.Note);\n cipher.name = this.getValueOrDefault(value.Name, '--');\n cipher.login.username = this.getValueOrDefault(value.Login);\n cipher.login.password = this.getValueOrDefault(value.Pwd);\n cipher.login.uris = this.makeUriArray(value.Url);\n\n if (!this.isNullOrWhitespace(value.Rf_fields)) {\n let fields: string[] = [value.Rf_fields];\n if (value.__parsed_extra != null && value.__parsed_extra.length > 0) {\n fields = fields.concat(value.__parsed_extra);\n }\n fields.forEach((field: string) => {\n const parts = field.split(':');\n if (parts.length < 3) {\n return;\n }\n const key = parts[0] === '-no-name-' ? null : parts[0];\n const val = parts.length === 4 && parts[2] === 'rck' ? parts[1] : parts[2];\n this.processKvp(cipher, key, val);\n });\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n\n if (i === results.length && cipher.name === '--' && this.isNullOrWhitespace(cipher.login.password)) {\n return;\n }\n\n result.ciphers.push(cipher);\n i++;\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class SafariCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.Title, '--');\n cipher.login.username = this.getValueOrDefault(value.Username);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.Url);\n cipher.login.totp = this.getValueOrDefault(value.OTPAuth);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { FolderView } from '../models/view/folderView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nimport { FieldType } from '../enums/fieldType';\nimport { CipherView } from '../models/view/cipherView';\nimport { FieldView } from '../models/view/fieldView';\n\nexport class SafeInCloudXmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const db = doc.querySelector('database');\n if (db == null) {\n result.errorMessage = 'Missing `database` node.';\n result.success = false;\n return Promise.resolve(result);\n }\n\n const foldersMap = new Map();\n\n Array.from(doc.querySelectorAll('database > label')).forEach(labelEl => {\n const name = labelEl.getAttribute('name');\n const id = labelEl.getAttribute('id');\n if (!this.isNullOrWhitespace(name) && !this.isNullOrWhitespace(id)) {\n foldersMap.set(id, result.folders.length);\n const folder = new FolderView();\n folder.name = name;\n result.folders.push(folder);\n }\n });\n\n Array.from(doc.querySelectorAll('database > card')).forEach(cardEl => {\n if (cardEl.getAttribute('template') === 'true' || cardEl.getAttribute('deleted') === 'true') {\n return;\n }\n\n const labelIdEl = this.querySelectorDirectChild(cardEl, 'label_id');\n if (labelIdEl != null) {\n const labelId = labelIdEl.textContent;\n if (!this.isNullOrWhitespace(labelId) && foldersMap.has(labelId)) {\n result.folderRelationships.push([result.ciphers.length, foldersMap.get(labelId)]);\n }\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(cardEl.getAttribute('title'), '--');\n\n if (cardEl.getAttribute('star') === 'true') {\n cipher.favorite = true;\n }\n\n const cardType = cardEl.getAttribute('type');\n if (cardType === 'note') {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n } else {\n Array.from(this.querySelectorAllDirectChild(cardEl, 'field')).forEach(fieldEl => {\n const text = fieldEl.textContent;\n if (this.isNullOrWhitespace(text)) {\n return;\n }\n const name = fieldEl.getAttribute('name');\n const fieldType = this.getValueOrDefault(fieldEl.getAttribute('type'), '').toLowerCase();\n if (fieldType === 'login') {\n cipher.login.username = text;\n } else if (fieldType === 'password' || fieldType === 'secret') {\n // safeInCloud allows for more than one password. we just insert them here and find the one used as password later\n this.processKvp(cipher, name, text, FieldType.Hidden);\n } else if (fieldType === 'one_time_password') {\n cipher.login.totp = text;\n } else if (fieldType === 'notes') {\n cipher.notes += (text + '\\n');\n } else if (fieldType === 'weblogin' || fieldType === 'website') {\n cipher.login.uris = this.makeUriArray(text);\n }\n else {\n this.processKvp(cipher, name, text);\n }\n });\n }\n\n Array.from(this.querySelectorAllDirectChild(cardEl, 'notes')).forEach(notesEl => {\n cipher.notes += (notesEl.textContent + '\\n');\n });\n\n this.setPassword(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n // Choose a password from all passwords. Take one that has password in its name, or the first one if there is no such entry\n // if its name is password, we can safely remove it form the fields. otherwise, it would maybe be best to keep it as a hidden field\n setPassword(cipher: CipherView) {\n const candidates = cipher.fields.filter(field => field.type === FieldType.Hidden);\n if (!candidates.length) {\n return;\n }\n\n let choice: FieldView;\n for (const field of candidates) {\n if (this.passwordFieldNames.includes(field.name.toLowerCase())) {\n choice = field;\n cipher.fields = cipher.fields.filter(f => f !== choice);\n break;\n }\n }\n\n if (!choice) {\n choice = candidates[0];\n }\n\n cipher.login.password = choice.value;\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class SaferPassCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(this.nameFromUrl(value.url), '--');\n cipher.notes = this.getValueOrDefault(value.notes);\n cipher.login.username = this.getValueOrDefault(value.username);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.url);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class SecureSafeCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.Title);\n cipher.notes = this.getValueOrDefault(value.Comment);\n cipher.login.uris = this.makeUriArray(value.Url);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.username = this.getValueOrDefault(value.Username);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\nimport { CipherView } from '../models/view/cipherView';\n\nexport class SplashIdCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.length < 3) {\n return;\n }\n\n this.processFolder(result, this.getValueOrDefault(value[value.length - 1]));\n const cipher = this.initLoginCipher();\n cipher.notes = this.getValueOrDefault(value[value.length - 2], '');\n cipher.name = this.getValueOrDefault(value[1], '--');\n\n if (value[0] === 'Web Logins' || value[0] === 'Servers' || value[0] === 'Email Accounts') {\n cipher.login.username = this.getValueOrDefault(value[2]);\n cipher.login.password = this.getValueOrDefault(value[3]);\n cipher.login.uris = this.makeUriArray(value[4]);\n this.parseFieldsToNotes(cipher, 5, value);\n } else {\n this.parseFieldsToNotes(cipher, 2, value);\n }\n\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private parseFieldsToNotes(cipher: CipherView, startIndex: number, value: any) {\n // last 3 rows do not get parsed\n for (let i = startIndex; i < value.length - 3; i++) {\n if (this.isNullOrWhitespace(value[i])) {\n continue;\n }\n cipher.notes += (value[i] + '\\n');\n }\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class StickyPasswordXmlImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const doc = this.parseXml(data);\n if (doc == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n const loginNodes = doc.querySelectorAll('root > Database > Logins > Login');\n Array.from(loginNodes).forEach(loginNode => {\n const accountId = loginNode.getAttribute('ID');\n if (this.isNullOrWhitespace(accountId)) {\n return;\n }\n\n const usernameText = loginNode.getAttribute('Name');\n const passwordText = loginNode.getAttribute('Password');\n let titleText: string = null;\n let linkText: string = null;\n let notesText: string = null;\n let groupId: string = null;\n let groupText: string = null;\n\n const accountLogin = doc.querySelector('root > Database > Accounts > Account > ' +\n 'LoginLinks > Login[SourceLoginID=\"' + accountId + '\"]');\n if (accountLogin != null) {\n const account = accountLogin.parentElement.parentElement;\n if (account != null) {\n titleText = account.getAttribute('Name');\n linkText = account.getAttribute('Link');\n groupId = account.getAttribute('ParentID');\n notesText = account.getAttribute('Comments');\n if (!this.isNullOrWhitespace(notesText)) {\n notesText = notesText.split('/n').join('\\n');\n }\n }\n }\n\n if (!this.isNullOrWhitespace(groupId)) {\n groupText = this.buildGroupText(doc, groupId, '');\n this.processFolder(result, groupText);\n }\n\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(titleText, '--');\n cipher.notes = this.getValueOrDefault(notesText);\n cipher.login.username = this.getValueOrDefault(usernameText);\n cipher.login.password = this.getValueOrDefault(passwordText);\n cipher.login.uris = this.makeUriArray(linkText);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n buildGroupText(doc: Document, groupId: string, groupText: string): string {\n const group = doc.querySelector('root > Database > Groups > Group[ID=\"' + groupId + '\"]');\n if (group == null) {\n return groupText;\n }\n if (!this.isNullOrWhitespace(groupText)) {\n groupText = '/' + groupText;\n }\n groupText = group.getAttribute('Name') + groupText;\n return this.buildGroupText(doc, group.getAttribute('ParentID'), groupText);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nimport { CardView } from '../models/view/cardView';\nimport { SecureNoteView } from '../models/view/secureNoteView';\n\nimport { CipherType } from '../enums/cipherType';\nimport { SecureNoteType } from '../enums/secureNoteType';\n\nconst PropertiesToIgnore = ['kind', 'autologin', 'favorite', 'hexcolor', 'protectedwithpassword', 'subdomainonly',\n 'type', 'tk_export_version', 'note', 'title', 'document_content',\n];\n\nexport class TrueKeyCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.favorite = this.getValueOrDefault(value.favorite, '').toLowerCase() === 'true';\n cipher.name = this.getValueOrDefault(value.name, '--');\n cipher.notes = this.getValueOrDefault(value.memo, '');\n cipher.login.username = this.getValueOrDefault(value.login);\n cipher.login.password = this.getValueOrDefault(value.password);\n cipher.login.uris = this.makeUriArray(value.url);\n\n if (value.kind !== 'login') {\n cipher.name = this.getValueOrDefault(value.title, '--');\n cipher.notes = this.getValueOrDefault(value.note, '');\n }\n\n if (value.kind === 'cc') {\n cipher.type = CipherType.Card;\n cipher.card = new CardView();\n cipher.card.cardholderName = this.getValueOrDefault(value.cardholder);\n cipher.card.number = this.getValueOrDefault(value.number);\n cipher.card.brand = this.getCardBrand(cipher.card.number);\n if (!this.isNullOrWhitespace(value.expiryDate)) {\n try {\n const expDate = new Date(value.expiryDate);\n cipher.card.expYear = expDate.getFullYear().toString();\n cipher.card.expMonth = (expDate.getMonth() + 1).toString();\n } catch {\n // Ignore error\n }\n }\n } else if (value.kind !== 'login') {\n cipher.type = CipherType.SecureNote;\n cipher.secureNote = new SecureNoteView();\n cipher.secureNote.type = SecureNoteType.Generic;\n if (!this.isNullOrWhitespace(cipher.notes)) {\n cipher.notes = this.getValueOrDefault(value.document_content, '');\n }\n for (const property in value) {\n if (value.hasOwnProperty(property) && PropertiesToIgnore.indexOf(property.toLowerCase()) < 0 &&\n !this.isNullOrWhitespace(value[property])) {\n this.processKvp(cipher, property, value[property]);\n }\n }\n }\n\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class UpmCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, false);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (value.length !== 5) {\n return;\n }\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value[0], '--');\n cipher.notes = this.getValueOrDefault(value[4]);\n cipher.login.username = this.getValueOrDefault(value[1]);\n cipher.login.password = this.getValueOrDefault(value[2]);\n cipher.login.uris = this.makeUriArray(value[3]);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\n\nexport class YotiCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n const cipher = this.initLoginCipher();\n cipher.name = this.getValueOrDefault(value.Name, '--');\n cipher.login.username = this.getValueOrDefault(value['User name']);\n cipher.login.password = this.getValueOrDefault(value.Password);\n cipher.login.uris = this.makeUriArray(value.URL);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n result.success = true;\n return Promise.resolve(result);\n }\n}\n","import { BaseImporter } from './baseImporter';\nimport { Importer } from './importer';\n\nimport { ImportResult } from '../models/domain/importResult';\nimport { CipherView } from '../models/view/cipherView';\n\nexport class ZohoVaultCsvImporter extends BaseImporter implements Importer {\n parse(data: string): Promise {\n const result = new ImportResult();\n const results = this.parseCsv(data, true);\n if (results == null) {\n result.success = false;\n return Promise.resolve(result);\n }\n\n results.forEach(value => {\n if (this.isNullOrWhitespace(value['Password Name']) && this.isNullOrWhitespace(value['Secret Name'])) {\n return;\n }\n this.processFolder(result, this.getValueOrDefault(value.ChamberName));\n const cipher = this.initLoginCipher();\n cipher.favorite = this.getValueOrDefault(value.Favorite, '0') === '1';\n cipher.notes = this.getValueOrDefault(value.Notes);\n cipher.name = this.getValueOrDefault(\n value['Password Name'], this.getValueOrDefault(value['Secret Name'], '--'));\n cipher.login.uris = this.makeUriArray(\n this.getValueOrDefault(value['Password URL'], this.getValueOrDefault(value['Secret URL'])));\n this.parseData(cipher, value.SecretData);\n this.parseData(cipher, value.CustomData);\n this.convertToNoteIfNeeded(cipher);\n this.cleanupCipher(cipher);\n result.ciphers.push(cipher);\n });\n\n if (this.organization) {\n this.moveFoldersToCollections(result);\n }\n\n result.success = true;\n return Promise.resolve(result);\n }\n\n private parseData(cipher: CipherView, data: string) {\n if (this.isNullOrWhitespace(data)) {\n return;\n }\n const dataLines = this.splitNewLine(data);\n dataLines.forEach(line => {\n const delimPosition = line.indexOf(':');\n if (delimPosition < 0) {\n return;\n }\n const field = line.substring(0, delimPosition);\n const value = line.length > delimPosition ? line.substring(delimPosition + 1) : null;\n if (this.isNullOrWhitespace(field) || this.isNullOrWhitespace(value) || field === 'SecretType') {\n return;\n }\n const fieldLower = field.toLowerCase();\n if (cipher.login.username == null && this.usernameFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.username = value;\n } else if (cipher.login.password == null && this.passwordFieldNames.indexOf(fieldLower) > -1) {\n cipher.login.password = value;\n } else {\n this.processKvp(cipher, field, value);\n }\n });\n }\n}\n","import { ApiService } from '../abstractions/api.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { KeyConnectorService as KeyConnectorServiceAbstraction } from '../abstractions/keyConnector.service';\nimport { LogService } from '../abstractions/log.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { TokenService } from '../abstractions/token.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { OrganizationUserType } from '../enums/organizationUserType';\n\nimport { Utils } from '../misc/utils';\n\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { KeyConnectorUserKeyRequest } from '../models/request/keyConnectorUserKeyRequest';\n\nconst Keys = {\n usesKeyConnector: 'usesKeyConnector',\n convertAccountToKeyConnector: 'convertAccountToKeyConnector',\n};\n\nexport class KeyConnectorService implements KeyConnectorServiceAbstraction {\n private usesKeyConnector?: boolean = null;\n\n constructor(private storageService: StorageService, private userService: UserService,\n private cryptoService: CryptoService, private apiService: ApiService,\n private tokenService: TokenService, private logService: LogService) { }\n\n setUsesKeyConnector(usesKeyConnector: boolean) {\n this.usesKeyConnector = usesKeyConnector;\n return this.storageService.save(Keys.usesKeyConnector, usesKeyConnector);\n }\n\n async getUsesKeyConnector(): Promise {\n return this.usesKeyConnector ??= await this.storageService.get(Keys.usesKeyConnector);\n }\n\n async userNeedsMigration() {\n const loggedInUsingSso = this.tokenService.getIsExternal();\n const requiredByOrganization = await this.getManagingOrganization() != null;\n const userIsNotUsingKeyConnector = !await this.getUsesKeyConnector();\n\n return loggedInUsingSso && requiredByOrganization && userIsNotUsingKeyConnector;\n }\n\n async migrateUser() {\n const organization = await this.getManagingOrganization();\n const key = await this.cryptoService.getKey();\n\n try {\n const keyConnectorRequest = new KeyConnectorUserKeyRequest(key.encKeyB64);\n await this.apiService.postUserKeyToKeyConnector(organization.keyConnectorUrl, keyConnectorRequest);\n } catch (e) {\n throw new Error('Unable to reach key connector');\n }\n\n await this.apiService.postConvertToKeyConnector();\n }\n\n async getAndSetKey(url: string) {\n try {\n const userKeyResponse = await this.apiService.getUserKeyFromKeyConnector(url);\n const keyArr = Utils.fromB64ToArray(userKeyResponse.key);\n const k = new SymmetricCryptoKey(keyArr);\n await this.cryptoService.setKey(k);\n } catch (e) {\n this.logService.error(e);\n throw new Error('Unable to reach key connector');\n }\n }\n\n async getManagingOrganization() {\n const orgs = await this.userService.getAllOrganizations();\n return orgs.find(o =>\n o.keyConnectorEnabled &&\n o.type !== OrganizationUserType.Admin &&\n o.type !== OrganizationUserType.Owner &&\n !o.isProviderUser);\n }\n\n async setConvertAccountRequired(status: boolean) {\n await this.storageService.save(Keys.convertAccountToKeyConnector, status);\n }\n\n async getConvertAccountRequired(): Promise {\n return await this.storageService.get(Keys.convertAccountToKeyConnector);\n }\n\n async removeConvertAccountRequired() {\n await this.storageService.remove(Keys.convertAccountToKeyConnector);\n }\n\n async clear() {\n await this.removeConvertAccountRequired();\n }\n}\n","import * as signalR from '@microsoft/signalr';\nimport * as signalRMsgPack from '@microsoft/signalr-protocol-msgpack';\n\nimport { NotificationType } from '../enums/notificationType';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { AppIdService } from '../abstractions/appId.service';\nimport { EnvironmentService } from '../abstractions/environment.service';\nimport { LogService } from '../abstractions/log.service';\nimport { NotificationsService as NotificationsServiceAbstraction } from '../abstractions/notifications.service';\nimport { SyncService } from '../abstractions/sync.service';\nimport { UserService } from '../abstractions/user.service';\nimport { VaultTimeoutService } from '../abstractions/vaultTimeout.service';\n\nimport {\n NotificationResponse,\n SyncCipherNotification,\n SyncFolderNotification,\n SyncSendNotification,\n} from '../models/response/notificationResponse';\n\nexport class NotificationsService implements NotificationsServiceAbstraction {\n private signalrConnection: signalR.HubConnection;\n private url: string;\n private connected = false;\n private inited = false;\n private inactive = false;\n private reconnectTimer: any = null;\n\n constructor(private userService: UserService, private syncService: SyncService,\n private appIdService: AppIdService, private apiService: ApiService,\n private vaultTimeoutService: VaultTimeoutService, private environmentService: EnvironmentService,\n private logoutCallback: () => Promise, private logService: LogService) {\n this.environmentService.urls.subscribe(() => {\n if (!this.inited) {\n return;\n }\n\n this.init();\n });\n }\n\n async init(): Promise {\n this.inited = false;\n this.url = this.environmentService.getNotificationsUrl();\n\n // Set notifications server URL to `https://-` to effectively disable communication\n // with the notifications server from the client app\n if (this.url === 'https://-') {\n return;\n }\n\n if (this.signalrConnection != null) {\n this.signalrConnection.off('ReceiveMessage');\n this.signalrConnection.off('Heartbeat');\n await this.signalrConnection.stop();\n this.connected = false;\n this.signalrConnection = null;\n }\n\n this.signalrConnection = new signalR.HubConnectionBuilder()\n .withUrl(this.url + '/hub', {\n accessTokenFactory: () => this.apiService.getActiveBearerToken(),\n skipNegotiation: true,\n transport: signalR.HttpTransportType.WebSockets,\n })\n .withHubProtocol(new signalRMsgPack.MessagePackHubProtocol() as signalR.IHubProtocol)\n // .configureLogging(signalR.LogLevel.Trace)\n .build();\n\n this.signalrConnection.on('ReceiveMessage',\n (data: any) => this.processNotification(new NotificationResponse(data)));\n this.signalrConnection.on('Heartbeat',\n (data: any) => { /*console.log('Heartbeat!');*/ });\n this.signalrConnection.onclose(() => {\n this.connected = false;\n this.reconnect(true);\n });\n this.inited = true;\n if (await this.isAuthedAndUnlocked()) {\n await this.reconnect(false);\n }\n }\n\n async updateConnection(sync = false): Promise {\n if (!this.inited) {\n return;\n }\n try {\n if (await this.isAuthedAndUnlocked()) {\n await this.reconnect(sync);\n } else {\n await this.signalrConnection.stop();\n }\n } catch (e) {\n this.logService.error(e.toString());\n }\n }\n\n async reconnectFromActivity(): Promise {\n this.inactive = false;\n if (this.inited && !this.connected) {\n await this.reconnect(true);\n }\n }\n\n async disconnectFromInactivity(): Promise {\n this.inactive = true;\n if (this.inited && this.connected) {\n await this.signalrConnection.stop();\n }\n }\n\n private async processNotification(notification: NotificationResponse) {\n const appId = await this.appIdService.getAppId();\n if (notification == null || notification.contextId === appId) {\n return;\n }\n\n const isAuthenticated = await this.userService.isAuthenticated();\n const payloadUserId = notification.payload.userId || notification.payload.UserId;\n const myUserId = await this.userService.getUserId();\n if (isAuthenticated && payloadUserId != null && payloadUserId !== myUserId) {\n return;\n }\n\n switch (notification.type) {\n case NotificationType.SyncCipherCreate:\n case NotificationType.SyncCipherUpdate:\n await this.syncService.syncUpsertCipher(notification.payload as SyncCipherNotification,\n notification.type === NotificationType.SyncCipherUpdate);\n break;\n case NotificationType.SyncCipherDelete:\n case NotificationType.SyncLoginDelete:\n await this.syncService.syncDeleteCipher(notification.payload as SyncCipherNotification);\n break;\n case NotificationType.SyncFolderCreate:\n case NotificationType.SyncFolderUpdate:\n await this.syncService.syncUpsertFolder(notification.payload as SyncFolderNotification,\n notification.type === NotificationType.SyncFolderUpdate);\n break;\n case NotificationType.SyncFolderDelete:\n await this.syncService.syncDeleteFolder(notification.payload as SyncFolderNotification);\n break;\n case NotificationType.SyncVault:\n case NotificationType.SyncCiphers:\n case NotificationType.SyncSettings:\n if (isAuthenticated) {\n await this.syncService.fullSync(false);\n }\n break;\n case NotificationType.SyncOrgKeys:\n if (isAuthenticated) {\n await this.syncService.fullSync(true);\n // Stop so a reconnect can be made\n await this.signalrConnection.stop();\n }\n break;\n case NotificationType.LogOut:\n if (isAuthenticated) {\n this.logoutCallback();\n }\n break;\n case NotificationType.SyncSendCreate:\n case NotificationType.SyncSendUpdate:\n await this.syncService.syncUpsertSend(notification.payload as SyncSendNotification,\n notification.type === NotificationType.SyncSendUpdate);\n break;\n case NotificationType.SyncSendDelete:\n await this.syncService.syncDeleteSend(notification.payload as SyncSendNotification);\n default:\n break;\n }\n }\n\n private async reconnect(sync: boolean) {\n if (this.reconnectTimer != null) {\n clearTimeout(this.reconnectTimer);\n this.reconnectTimer = null;\n }\n if (this.connected || !this.inited || this.inactive) {\n return;\n }\n const authedAndUnlocked = await this.isAuthedAndUnlocked();\n if (!authedAndUnlocked) {\n return;\n }\n\n try {\n await this.signalrConnection.start();\n this.connected = true;\n if (sync) {\n await this.syncService.fullSync(false);\n }\n } catch (e) {\n this.logService.error(e);\n }\n\n if (!this.connected) {\n this.reconnectTimer = setTimeout(() => this.reconnect(sync), this.random(120000, 300000));\n }\n }\n\n private async isAuthedAndUnlocked() {\n if (await this.userService.isAuthenticated()) {\n const locked = await this.vaultTimeoutService.isLocked();\n return !locked;\n }\n return false;\n }\n\n private random(min: number, max: number) {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n }\n}\n","import { BaseResponse } from './baseResponse';\n\nimport { NotificationType } from '../../enums/notificationType';\n\nexport class NotificationResponse extends BaseResponse {\n contextId: string;\n type: NotificationType;\n payload: any;\n\n constructor(response: any) {\n super(response);\n this.contextId = this.getResponseProperty('ContextId');\n this.type = this.getResponseProperty('Type');\n\n const payload = this.getResponseProperty('Payload');\n switch (this.type) {\n case NotificationType.SyncCipherCreate:\n case NotificationType.SyncCipherDelete:\n case NotificationType.SyncCipherUpdate:\n case NotificationType.SyncLoginDelete:\n this.payload = new SyncCipherNotification(payload);\n break;\n case NotificationType.SyncFolderCreate:\n case NotificationType.SyncFolderDelete:\n case NotificationType.SyncFolderUpdate:\n this.payload = new SyncFolderNotification(payload);\n break;\n case NotificationType.SyncVault:\n case NotificationType.SyncCiphers:\n case NotificationType.SyncOrgKeys:\n case NotificationType.SyncSettings:\n case NotificationType.LogOut:\n this.payload = new UserNotification(payload);\n break;\n case NotificationType.SyncSendCreate:\n case NotificationType.SyncSendUpdate:\n case NotificationType.SyncSendDelete:\n this.payload = new SyncSendNotification(payload);\n default:\n break;\n }\n }\n}\n\nexport class SyncCipherNotification extends BaseResponse {\n id: string;\n userId: string;\n organizationId: string;\n collectionIds: string[];\n revisionDate: Date;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.userId = this.getResponseProperty('UserId');\n this.organizationId = this.getResponseProperty('OrganizationId');\n this.collectionIds = this.getResponseProperty('CollectionIds');\n this.revisionDate = new Date(this.getResponseProperty('RevisionDate'));\n }\n}\n\nexport class SyncFolderNotification extends BaseResponse {\n id: string;\n userId: string;\n revisionDate: Date;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.userId = this.getResponseProperty('UserId');\n this.revisionDate = new Date(this.getResponseProperty('RevisionDate'));\n }\n}\n\nexport class UserNotification extends BaseResponse {\n userId: string;\n date: Date;\n\n constructor(response: any) {\n super(response);\n this.userId = this.getResponseProperty('UserId');\n this.date = new Date(this.getResponseProperty('Date'));\n }\n}\n\nexport class SyncSendNotification extends BaseResponse {\n id: string;\n userId: string;\n revisionDate: Date;\n\n constructor(response: any) {\n super(response);\n this.id = this.getResponseProperty('Id');\n this.userId = this.getResponseProperty('UserId');\n this.revisionDate = new Date(this.getResponseProperty('RevisionDate'));\n }\n}\n","import * as zxcvbn from 'zxcvbn';\n\nimport { EncString } from '../models/domain/encString';\nimport { GeneratedPasswordHistory } from '../models/domain/generatedPasswordHistory';\nimport { PasswordGeneratorPolicyOptions } from '../models/domain/passwordGeneratorPolicyOptions';\nimport { Policy } from '../models/domain/policy';\n\nimport { CryptoService } from '../abstractions/crypto.service';\nimport {\n PasswordGenerationService as PasswordGenerationServiceAbstraction,\n} from '../abstractions/passwordGeneration.service';\nimport { PolicyService } from '../abstractions/policy.service';\nimport { StorageService } from '../abstractions/storage.service';\n\nimport { EEFLongWordList } from '../misc/wordlist';\n\nimport { PolicyType } from '../enums/policyType';\n\nconst DefaultOptions = {\n length: 14,\n ambiguous: false,\n number: true,\n minNumber: 1,\n uppercase: true,\n minUppercase: 0,\n lowercase: true,\n minLowercase: 0,\n special: false,\n minSpecial: 1,\n type: 'password',\n numWords: 3,\n wordSeparator: '-',\n capitalize: false,\n includeNumber: false,\n};\n\nconst Keys = {\n options: 'passwordGenerationOptions',\n history: 'generatedPasswordHistory',\n};\n\nconst MaxPasswordsInHistory = 100;\n\nexport class PasswordGenerationService implements PasswordGenerationServiceAbstraction {\n private optionsCache: any;\n private history: GeneratedPasswordHistory[];\n\n constructor(private cryptoService: CryptoService, private storageService: StorageService,\n private policyService: PolicyService) { }\n\n async generatePassword(options: any): Promise {\n // overload defaults with given options\n const o = Object.assign({}, DefaultOptions, options);\n\n if (o.type === 'passphrase') {\n return this.generatePassphrase(options);\n }\n\n // sanitize\n this.sanitizePasswordLength(o, true);\n\n const minLength: number = o.minUppercase + o.minLowercase + o.minNumber + o.minSpecial;\n if (o.length < minLength) {\n o.length = minLength;\n }\n\n const positions: string[] = [];\n if (o.lowercase && o.minLowercase > 0) {\n for (let i = 0; i < o.minLowercase; i++) {\n positions.push('l');\n }\n }\n if (o.uppercase && o.minUppercase > 0) {\n for (let i = 0; i < o.minUppercase; i++) {\n positions.push('u');\n }\n }\n if (o.number && o.minNumber > 0) {\n for (let i = 0; i < o.minNumber; i++) {\n positions.push('n');\n }\n }\n if (o.special && o.minSpecial > 0) {\n for (let i = 0; i < o.minSpecial; i++) {\n positions.push('s');\n }\n }\n while (positions.length < o.length) {\n positions.push('a');\n }\n\n // shuffle\n await this.shuffleArray(positions);\n\n // build out the char sets\n let allCharSet = '';\n\n let lowercaseCharSet = 'abcdefghijkmnopqrstuvwxyz';\n if (o.ambiguous) {\n lowercaseCharSet += 'l';\n }\n if (o.lowercase) {\n allCharSet += lowercaseCharSet;\n }\n\n let uppercaseCharSet = 'ABCDEFGHJKLMNPQRSTUVWXYZ';\n if (o.ambiguous) {\n uppercaseCharSet += 'IO';\n }\n if (o.uppercase) {\n allCharSet += uppercaseCharSet;\n }\n\n let numberCharSet = '23456789';\n if (o.ambiguous) {\n numberCharSet += '01';\n }\n if (o.number) {\n allCharSet += numberCharSet;\n }\n\n const specialCharSet = '!@#$%^&*';\n if (o.special) {\n allCharSet += specialCharSet;\n }\n\n let password = '';\n for (let i = 0; i < o.length; i++) {\n let positionChars: string;\n switch (positions[i]) {\n case 'l':\n positionChars = lowercaseCharSet;\n break;\n case 'u':\n positionChars = uppercaseCharSet;\n break;\n case 'n':\n positionChars = numberCharSet;\n break;\n case 's':\n positionChars = specialCharSet;\n break;\n case 'a':\n positionChars = allCharSet;\n break;\n default:\n break;\n }\n\n const randomCharIndex = await this.cryptoService.randomNumber(0, positionChars.length - 1);\n password += positionChars.charAt(randomCharIndex);\n }\n\n return password;\n }\n\n async generatePassphrase(options: any): Promise {\n const o = Object.assign({}, DefaultOptions, options);\n\n if (o.numWords == null || o.numWords <= 2) {\n o.numWords = DefaultOptions.numWords;\n }\n if (o.wordSeparator == null || o.wordSeparator.length === 0 || o.wordSeparator.length > 1) {\n o.wordSeparator = ' ';\n }\n if (o.capitalize == null) {\n o.capitalize = false;\n }\n if (o.includeNumber == null) {\n o.includeNumber = false;\n }\n\n const listLength = EEFLongWordList.length - 1;\n const wordList = new Array(o.numWords);\n for (let i = 0; i < o.numWords; i++) {\n const wordIndex = await this.cryptoService.randomNumber(0, listLength);\n if (o.capitalize) {\n wordList[i] = this.capitalize(EEFLongWordList[wordIndex]);\n } else {\n wordList[i] = EEFLongWordList[wordIndex];\n }\n }\n\n if (o.includeNumber) {\n await this.appendRandomNumberToRandomWord(wordList);\n }\n return wordList.join(o.wordSeparator);\n }\n\n async getOptions(): Promise<[any, PasswordGeneratorPolicyOptions]> {\n if (this.optionsCache == null) {\n const options = await this.storageService.get(Keys.options);\n if (options == null) {\n this.optionsCache = DefaultOptions;\n } else {\n this.optionsCache = Object.assign({}, DefaultOptions, options);\n }\n }\n const enforcedOptions = await this.enforcePasswordGeneratorPoliciesOnOptions(this.optionsCache);\n this.optionsCache = enforcedOptions[0];\n return [this.optionsCache, enforcedOptions[1]];\n }\n\n async enforcePasswordGeneratorPoliciesOnOptions(options: any): Promise<[any, PasswordGeneratorPolicyOptions]> {\n let enforcedPolicyOptions = await this.getPasswordGeneratorPolicyOptions();\n if (enforcedPolicyOptions != null) {\n if (options.length < enforcedPolicyOptions.minLength) {\n options.length = enforcedPolicyOptions.minLength;\n }\n\n if (enforcedPolicyOptions.useUppercase) {\n options.uppercase = true;\n }\n\n if (enforcedPolicyOptions.useLowercase) {\n options.lowercase = true;\n }\n\n if (enforcedPolicyOptions.useNumbers) {\n options.number = true;\n }\n\n if (options.minNumber < enforcedPolicyOptions.numberCount) {\n options.minNumber = enforcedPolicyOptions.numberCount;\n }\n\n if (enforcedPolicyOptions.useSpecial) {\n options.special = true;\n }\n\n if (options.minSpecial < enforcedPolicyOptions.specialCount) {\n options.minSpecial = enforcedPolicyOptions.specialCount;\n }\n\n // Must normalize these fields because the receiving call expects all options to pass the current rules\n if (options.minSpecial + options.minNumber > options.length) {\n options.minSpecial = options.length - options.minNumber;\n }\n\n if (options.numWords < enforcedPolicyOptions.minNumberWords) {\n options.numWords = enforcedPolicyOptions.minNumberWords;\n }\n\n if (enforcedPolicyOptions.capitalize) {\n options.capitalize = true;\n }\n\n if (enforcedPolicyOptions.includeNumber) {\n options.includeNumber = true;\n }\n\n // Force default type if password/passphrase selected via policy\n if (enforcedPolicyOptions.defaultType === 'password' ||\n enforcedPolicyOptions.defaultType === 'passphrase') {\n options.type = enforcedPolicyOptions.defaultType;\n }\n } else { // UI layer expects an instantiated object to prevent more explicit null checks\n enforcedPolicyOptions = new PasswordGeneratorPolicyOptions();\n }\n return [options, enforcedPolicyOptions];\n }\n\n async getPasswordGeneratorPolicyOptions(): Promise {\n const policies: Policy[] = this.policyService == null ? null :\n await this.policyService.getAll(PolicyType.PasswordGenerator);\n let enforcedOptions: PasswordGeneratorPolicyOptions = null;\n\n if (policies == null || policies.length === 0) {\n return enforcedOptions;\n }\n\n policies.forEach(currentPolicy => {\n if (!currentPolicy.enabled || currentPolicy.data == null) {\n return;\n }\n\n if (enforcedOptions == null) {\n enforcedOptions = new PasswordGeneratorPolicyOptions();\n }\n\n // Password wins in multi-org collisions\n if (currentPolicy.data.defaultType != null && enforcedOptions.defaultType !== 'password') {\n enforcedOptions.defaultType = currentPolicy.data.defaultType;\n }\n\n if (currentPolicy.data.minLength != null\n && currentPolicy.data.minLength > enforcedOptions.minLength) {\n enforcedOptions.minLength = currentPolicy.data.minLength;\n }\n\n if (currentPolicy.data.useUpper) {\n enforcedOptions.useUppercase = true;\n }\n\n if (currentPolicy.data.useLower) {\n enforcedOptions.useLowercase = true;\n }\n\n if (currentPolicy.data.useNumbers) {\n enforcedOptions.useNumbers = true;\n }\n\n if (currentPolicy.data.minNumbers != null\n && currentPolicy.data.minNumbers > enforcedOptions.numberCount) {\n enforcedOptions.numberCount = currentPolicy.data.minNumbers;\n }\n\n if (currentPolicy.data.useSpecial) {\n enforcedOptions.useSpecial = true;\n }\n\n if (currentPolicy.data.minSpecial != null\n && currentPolicy.data.minSpecial > enforcedOptions.specialCount) {\n enforcedOptions.specialCount = currentPolicy.data.minSpecial;\n }\n\n if (currentPolicy.data.minNumberWords != null\n && currentPolicy.data.minNumberWords > enforcedOptions.minNumberWords) {\n enforcedOptions.minNumberWords = currentPolicy.data.minNumberWords;\n }\n\n if (currentPolicy.data.capitalize) {\n enforcedOptions.capitalize = true;\n }\n\n if (currentPolicy.data.includeNumber) {\n enforcedOptions.includeNumber = true;\n }\n });\n\n return enforcedOptions;\n }\n\n async saveOptions(options: any) {\n await this.storageService.save(Keys.options, options);\n this.optionsCache = options;\n }\n\n async getHistory(): Promise {\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n return new Array();\n }\n\n if (!this.history) {\n const encrypted = await this.storageService.get(Keys.history);\n this.history = await this.decryptHistory(encrypted);\n }\n\n return this.history || new Array();\n }\n\n async addHistory(password: string): Promise {\n // Cannot add new history if no key is available\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n return;\n }\n\n const currentHistory = await this.getHistory();\n\n // Prevent duplicates\n if (this.matchesPrevious(password, currentHistory)) {\n return;\n }\n\n currentHistory.unshift(new GeneratedPasswordHistory(password, Date.now()));\n\n // Remove old items.\n if (currentHistory.length > MaxPasswordsInHistory) {\n currentHistory.pop();\n }\n\n const newHistory = await this.encryptHistory(currentHistory);\n return await this.storageService.save(Keys.history, newHistory);\n }\n\n async clear(): Promise {\n this.history = [];\n return await this.storageService.remove(Keys.history);\n }\n\n passwordStrength(password: string, userInputs: string[] = null): zxcvbn.ZXCVBNResult {\n if (password == null || password.length === 0) {\n return null;\n }\n let globalUserInputs = ['bitwarden', 'bit', 'warden'];\n if (userInputs != null && userInputs.length > 0) {\n globalUserInputs = globalUserInputs.concat(userInputs);\n }\n // Use a hash set to get rid of any duplicate user inputs\n const finalUserInputs = Array.from(new Set(globalUserInputs));\n const result = zxcvbn(password, finalUserInputs);\n return result;\n }\n\n normalizeOptions(options: any, enforcedPolicyOptions: PasswordGeneratorPolicyOptions) {\n options.minLowercase = 0;\n options.minUppercase = 0;\n\n if (!options.length || options.length < 5) {\n options.length = 5;\n } else if (options.length > 128) {\n options.length = 128;\n }\n\n if (options.length < enforcedPolicyOptions.minLength) {\n options.length = enforcedPolicyOptions.minLength;\n }\n\n if (!options.minNumber) {\n options.minNumber = 0;\n } else if (options.minNumber > options.length) {\n options.minNumber = options.length;\n } else if (options.minNumber > 9) {\n options.minNumber = 9;\n }\n\n if (options.minNumber < enforcedPolicyOptions.numberCount) {\n options.minNumber = enforcedPolicyOptions.numberCount;\n }\n\n if (!options.minSpecial) {\n options.minSpecial = 0;\n } else if (options.minSpecial > options.length) {\n options.minSpecial = options.length;\n } else if (options.minSpecial > 9) {\n options.minSpecial = 9;\n }\n\n if (options.minSpecial < enforcedPolicyOptions.specialCount) {\n options.minSpecial = enforcedPolicyOptions.specialCount;\n }\n\n if (options.minSpecial + options.minNumber > options.length) {\n options.minSpecial = options.length - options.minNumber;\n }\n\n if (options.numWords == null || options.length < 3) {\n options.numWords = 3;\n } else if (options.numWords > 20) {\n options.numWords = 20;\n }\n\n if (options.numWords < enforcedPolicyOptions.minNumberWords) {\n options.numWords = enforcedPolicyOptions.minNumberWords;\n }\n\n if (options.wordSeparator != null && options.wordSeparator.length > 1) {\n options.wordSeparator = options.wordSeparator[0];\n }\n\n this.sanitizePasswordLength(options, false);\n }\n\n private capitalize(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n private async appendRandomNumberToRandomWord(wordList: string[]) {\n if (wordList == null || wordList.length <= 0) {\n return;\n }\n const index = await this.cryptoService.randomNumber(0, wordList.length - 1);\n const num = await this.cryptoService.randomNumber(0, 9);\n wordList[index] = wordList[index] + num;\n }\n\n private async encryptHistory(history: GeneratedPasswordHistory[]): Promise {\n if (history == null || history.length === 0) {\n return Promise.resolve([]);\n }\n\n const promises = history.map(async item => {\n const encrypted = await this.cryptoService.encrypt(item.password);\n return new GeneratedPasswordHistory(encrypted.encryptedString, item.date);\n });\n\n return await Promise.all(promises);\n }\n\n private async decryptHistory(history: GeneratedPasswordHistory[]): Promise {\n if (history == null || history.length === 0) {\n return Promise.resolve([]);\n }\n\n const promises = history.map(async item => {\n const decrypted = await this.cryptoService.decryptToUtf8(new EncString(item.password));\n return new GeneratedPasswordHistory(decrypted, item.date);\n });\n\n return await Promise.all(promises);\n }\n\n private matchesPrevious(password: string, history: GeneratedPasswordHistory[]): boolean {\n if (history == null || history.length === 0) {\n return false;\n }\n\n return history[history.length - 1].password === password;\n }\n\n // ref: https://stackoverflow.com/a/12646864/1090359\n private async shuffleArray(array: string[]) {\n for (let i = array.length - 1; i > 0; i--) {\n const j = await this.cryptoService.randomNumber(0, i);\n [array[i], array[j]] = [array[j], array[i]];\n }\n }\n\n private sanitizePasswordLength(options: any, forGeneration: boolean) {\n let minUppercaseCalc = 0;\n let minLowercaseCalc = 0;\n let minNumberCalc: number = options.minNumber;\n let minSpecialCalc: number = options.minSpecial;\n\n if (options.uppercase && options.minUppercase <= 0) {\n minUppercaseCalc = 1;\n } else if (!options.uppercase) {\n minUppercaseCalc = 0;\n }\n\n if (options.lowercase && options.minLowercase <= 0) {\n minLowercaseCalc = 1;\n } else if (!options.lowercase) {\n minLowercaseCalc = 0;\n }\n\n if (options.number && options.minNumber <= 0) {\n minNumberCalc = 1;\n } else if (!options.number) {\n minNumberCalc = 0;\n }\n\n if (options.special && options.minSpecial <= 0) {\n minSpecialCalc = 1;\n } else if (!options.special) {\n minSpecialCalc = 0;\n }\n\n // This should never happen but is a final safety net\n if (!options.length || options.length < 1) {\n options.length = 10;\n }\n\n const minLength: number = minUppercaseCalc + minLowercaseCalc + minNumberCalc + minSpecialCalc;\n // Normalize and Generation both require this modification\n if (options.length < minLength) {\n options.length = minLength;\n }\n\n // Apply other changes if the options object passed in is for generation\n if (forGeneration) {\n options.minUppercase = minUppercaseCalc;\n options.minLowercase = minLowercaseCalc;\n options.minNumber = minNumberCalc;\n options.minSpecial = minSpecialCalc;\n }\n }\n}\n","export class GeneratedPasswordHistory {\n password: string;\n date: number;\n\n constructor(password: string, date: number) {\n this.password = password;\n this.date = date;\n }\n}\n","import Domain from './domainBase';\n\nexport class PasswordGeneratorPolicyOptions extends Domain {\n defaultType: string = '';\n minLength: number = 0;\n useUppercase: boolean = false;\n useLowercase: boolean = false;\n useNumbers: boolean = false;\n numberCount: number = 0;\n useSpecial: boolean = false;\n specialCount: number = 0;\n minNumberWords: number = 0;\n capitalize: boolean = false;\n includeNumber: boolean = false;\n\n inEffect() {\n return this.defaultType !== '' ||\n this.minLength > 0 ||\n this.numberCount > 0 ||\n this.specialCount > 0 ||\n this.useUppercase ||\n this.useLowercase ||\n this.useNumbers ||\n this.useSpecial ||\n this.minNumberWords > 0 ||\n this.capitalize ||\n this.includeNumber;\n }\n}\n","import { PolicyService as PolicyServiceAbstraction } from '../abstractions/policy.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { PolicyData } from '../models/data/policyData';\n\nimport { MasterPasswordPolicyOptions } from '../models/domain/masterPasswordPolicyOptions';\nimport { Organization } from '../models/domain/organization';\nimport { Policy } from '../models/domain/policy';\nimport { ResetPasswordPolicyOptions } from '../models/domain/resetPasswordPolicyOptions';\n\nimport { OrganizationUserStatusType } from '../enums/organizationUserStatusType';\nimport { OrganizationUserType } from '../enums/organizationUserType';\nimport { PolicyType } from '../enums/policyType';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { ListResponse } from '../models/response/listResponse';\nimport { PolicyResponse } from '../models/response/policyResponse';\n\nconst Keys = {\n policiesPrefix: 'policies_',\n};\n\nexport class PolicyService implements PolicyServiceAbstraction {\n policyCache: Policy[];\n\n constructor(private userService: UserService, private storageService: StorageService,\n private apiService: ApiService) {\n }\n\n clearCache(): void {\n this.policyCache = null;\n }\n\n async getAll(type?: PolicyType): Promise {\n if (this.policyCache == null) {\n const userId = await this.userService.getUserId();\n const policies = await this.storageService.get<{ [id: string]: PolicyData; }>(\n Keys.policiesPrefix + userId);\n const response: Policy[] = [];\n for (const id in policies) {\n if (policies.hasOwnProperty(id)) {\n response.push(new Policy(policies[id]));\n }\n }\n this.policyCache = response;\n }\n if (type != null) {\n return this.policyCache.filter(p => p.type === type);\n } else {\n return this.policyCache;\n }\n }\n\n async getPolicyForOrganization(policyType: PolicyType, organizationId: string): Promise {\n const org = await this.userService.getOrganization(organizationId);\n if (org?.isProviderUser) {\n const orgPolicies = await this.apiService.getPolicies(organizationId);\n const policy = orgPolicies.data.find(p => p.organizationId === organizationId);\n\n if (policy == null) {\n return null;\n }\n\n return new Policy(new PolicyData(policy));\n }\n\n const policies = await this.getAll(policyType);\n return policies.find(p => p.organizationId === organizationId);\n }\n\n async replace(policies: { [id: string]: PolicyData; }): Promise {\n const userId = await this.userService.getUserId();\n await this.storageService.save(Keys.policiesPrefix + userId, policies);\n this.policyCache = null;\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.policiesPrefix + userId);\n this.policyCache = null;\n }\n\n async getMasterPasswordPoliciesForInvitedUsers(\n orgId: string\n ): Promise {\n const userId = await this.userService.getUserId();\n const response = await this.apiService.getPoliciesByInvitedUser(orgId, userId);\n const policies = await this.mapPoliciesFromToken(response);\n return this.getMasterPasswordPolicyOptions(policies);\n }\n\n async getMasterPasswordPolicyOptions(policies?: Policy[]): Promise {\n let enforcedOptions: MasterPasswordPolicyOptions = null;\n\n if (policies == null) {\n policies = await this.getAll(PolicyType.MasterPassword);\n } else {\n policies = policies.filter(p => p.type === PolicyType.MasterPassword);\n }\n\n if (policies == null || policies.length === 0) {\n return enforcedOptions;\n }\n\n policies.forEach(currentPolicy => {\n if (!currentPolicy.enabled || currentPolicy.data == null) {\n return;\n }\n\n if (enforcedOptions == null) {\n enforcedOptions = new MasterPasswordPolicyOptions();\n }\n\n if (currentPolicy.data.minComplexity != null\n && currentPolicy.data.minComplexity > enforcedOptions.minComplexity) {\n enforcedOptions.minComplexity = currentPolicy.data.minComplexity;\n }\n\n if (currentPolicy.data.minLength != null\n && currentPolicy.data.minLength > enforcedOptions.minLength) {\n enforcedOptions.minLength = currentPolicy.data.minLength;\n }\n\n if (currentPolicy.data.requireUpper) {\n enforcedOptions.requireUpper = true;\n }\n\n if (currentPolicy.data.requireLower) {\n enforcedOptions.requireLower = true;\n }\n\n if (currentPolicy.data.requireNumbers) {\n enforcedOptions.requireNumbers = true;\n }\n\n if (currentPolicy.data.requireSpecial) {\n enforcedOptions.requireSpecial = true;\n }\n });\n\n return enforcedOptions;\n }\n\n evaluateMasterPassword(passwordStrength: number, newPassword: string,\n enforcedPolicyOptions: MasterPasswordPolicyOptions): boolean {\n if (enforcedPolicyOptions == null) {\n return true;\n }\n\n if (enforcedPolicyOptions.minComplexity > 0 && enforcedPolicyOptions.minComplexity > passwordStrength) {\n return false;\n }\n\n if (enforcedPolicyOptions.minLength > 0 && enforcedPolicyOptions.minLength > newPassword.length) {\n return false;\n }\n\n if (enforcedPolicyOptions.requireUpper && newPassword.toLocaleLowerCase() === newPassword) {\n return false;\n }\n\n if (enforcedPolicyOptions.requireLower && newPassword.toLocaleUpperCase() === newPassword) {\n return false;\n }\n\n if (enforcedPolicyOptions.requireNumbers && !(/[0-9]/.test(newPassword))) {\n return false;\n }\n\n if (enforcedPolicyOptions.requireSpecial && !(/[!@#$%\\^&*]/g.test(newPassword))) {\n return false;\n }\n\n return true;\n }\n\n getResetPasswordPolicyOptions(policies: Policy[], orgId: string): [ResetPasswordPolicyOptions, boolean] {\n const resetPasswordPolicyOptions = new ResetPasswordPolicyOptions();\n\n if (policies == null || orgId == null) {\n return [resetPasswordPolicyOptions, false];\n }\n\n const policy = policies.find(p => p.organizationId === orgId && p.type === PolicyType.ResetPassword && p.enabled);\n resetPasswordPolicyOptions.autoEnrollEnabled = policy?.data?.autoEnrollEnabled ?? false;\n\n return [resetPasswordPolicyOptions, policy?.enabled ?? false];\n }\n\n mapPoliciesFromToken(policiesResponse: ListResponse): Policy[] {\n if (policiesResponse == null || policiesResponse.data == null) {\n return null;\n }\n\n const policiesData = policiesResponse.data.map(p => new PolicyData(p));\n return policiesData.map(p => new Policy(p));\n }\n\n async policyAppliesToUser(policyType: PolicyType, policyFilter?: (policy: Policy) => boolean) {\n const policies = await this.getAll(policyType);\n const organizations = await this.userService.getAllOrganizations();\n let filteredPolicies;\n\n if (policyFilter != null) {\n filteredPolicies = policies.filter(p => p.enabled && policyFilter(p));\n }\n else {\n filteredPolicies = policies.filter(p => p.enabled);\n }\n\n const policySet = new Set(filteredPolicies.map(p => p.organizationId));\n\n return organizations.some(o =>\n o.enabled &&\n o.status >= OrganizationUserStatusType.Accepted &&\n o.usePolicies &&\n !this.isExcemptFromPolicies(o, policyType) &&\n policySet.has(o.id));\n }\n\n private isExcemptFromPolicies(organization: Organization, policyType: PolicyType) {\n if (policyType === PolicyType.MaximumVaultTimeout) {\n return organization.type === OrganizationUserType.Owner;\n }\n\n return organization.isExemptFromPolicies;\n }\n}\n","import Domain from './domainBase';\n\nexport class ResetPasswordPolicyOptions extends Domain {\n autoEnrollEnabled: boolean = false;\n}\n","import * as lunr from 'lunr';\n\nimport { CipherView } from '../models/view/cipherView';\n\nimport { CipherService } from '../abstractions/cipher.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport { LogService } from '../abstractions/log.service';\nimport { SearchService as SearchServiceAbstraction } from '../abstractions/search.service';\n\nimport { CipherType } from '../enums/cipherType';\nimport { FieldType } from '../enums/fieldType';\nimport { UriMatchType } from '../enums/uriMatchType';\nimport { SendView } from '../models/view/sendView';\n\nexport class SearchService implements SearchServiceAbstraction {\n indexedEntityId?: string = null;\n private indexing = false;\n private index: lunr.Index = null;\n private searchableMinLength = 2;\n\n constructor(private cipherService: CipherService, private logService: LogService,\n private i18nService: I18nService) {\n if (['zh-CN', 'zh-TW'].indexOf(i18nService.locale) !== -1) {\n this.searchableMinLength = 1;\n }\n }\n\n clearIndex(): void {\n this.indexedEntityId = null;\n this.index = null;\n }\n\n isSearchable(query: string): boolean {\n const notSearchable = query == null || (this.index == null && query.length < this.searchableMinLength) ||\n (this.index != null && query.length < this.searchableMinLength && query.indexOf('>') !== 0);\n return !notSearchable;\n }\n\n async indexCiphers(indexedEntityId?: string, ciphers?: CipherView[]): Promise {\n if (this.indexing) {\n return;\n }\n\n this.logService.time('search indexing');\n this.indexing = true;\n this.indexedEntityId = indexedEntityId;\n this.index = null;\n const builder = new lunr.Builder();\n builder.ref('id');\n builder.field('shortid', { boost: 100, extractor: (c: CipherView) => c.id.substr(0, 8) });\n builder.field('name', { boost: 10 });\n builder.field('subtitle', {\n boost: 5,\n extractor: (c: CipherView) => {\n if (c.subTitle != null && c.type === CipherType.Card) {\n return c.subTitle.replace(/\\*/g, '');\n }\n return c.subTitle;\n },\n });\n builder.field('notes');\n builder.field('login.username', {\n extractor: (c: CipherView) => c.type === CipherType.Login && c.login != null ? c.login.username : null,\n });\n builder.field('login.uris', { boost: 2, extractor: (c: CipherView) => this.uriExtractor(c) });\n builder.field('fields', { extractor: (c: CipherView) => this.fieldExtractor(c, false) });\n builder.field('fields_joined', { extractor: (c: CipherView) => this.fieldExtractor(c, true) });\n builder.field('attachments', { extractor: (c: CipherView) => this.attachmentExtractor(c, false) });\n builder.field('attachments_joined',\n { extractor: (c: CipherView) => this.attachmentExtractor(c, true) });\n builder.field('organizationid', { extractor: (c: CipherView) => c.organizationId });\n ciphers = ciphers || await this.cipherService.getAllDecrypted();\n ciphers.forEach(c => builder.add(c));\n this.index = builder.build();\n\n this.indexing = false;\n\n this.logService.timeEnd('search indexing');\n }\n\n async searchCiphers(query: string,\n filter: (((cipher: CipherView) => boolean) | (((cipher: CipherView) => boolean)[])) = null,\n ciphers: CipherView[] = null):\n Promise {\n const results: CipherView[] = [];\n if (query != null) {\n query = query.trim().toLowerCase();\n }\n if (query === '') {\n query = null;\n }\n\n if (ciphers == null) {\n ciphers = await this.cipherService.getAllDecrypted();\n }\n\n if (filter != null && Array.isArray(filter) && filter.length > 0) {\n ciphers = ciphers.filter(c => filter.every(f => f == null || f(c)));\n } else if (filter != null) {\n ciphers = ciphers.filter(filter as (cipher: CipherView) => boolean);\n }\n\n if (!this.isSearchable(query)) {\n return ciphers;\n }\n\n if (this.indexing) {\n await new Promise(r => setTimeout(r, 250));\n if (this.indexing) {\n await new Promise(r => setTimeout(r, 500));\n }\n }\n\n const index = this.getIndexForSearch();\n if (index == null) {\n // Fall back to basic search if index is not available\n return this.searchCiphersBasic(ciphers, query);\n }\n\n const ciphersMap = new Map();\n ciphers.forEach(c => ciphersMap.set(c.id, c));\n\n let searchResults: lunr.Index.Result[] = null;\n const isQueryString = query != null && query.length > 1 && query.indexOf('>') === 0;\n if (isQueryString) {\n try {\n searchResults = index.search(query.substr(1).trim());\n } catch (e) {\n this.logService.error(e);\n }\n } else {\n // tslint:disable-next-line\n const soWild = lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING;\n searchResults = index.query(q => {\n lunr.tokenizer(query).forEach(token => {\n const t = token.toString();\n q.term(t, { fields: ['name'], wildcard: soWild });\n q.term(t, { fields: ['subtitle'], wildcard: soWild });\n q.term(t, { fields: ['login.uris'], wildcard: soWild });\n q.term(t, {});\n });\n });\n }\n\n if (searchResults != null) {\n searchResults.forEach(r => {\n if (ciphersMap.has(r.ref)) {\n results.push(ciphersMap.get(r.ref));\n }\n });\n }\n return results;\n }\n\n searchCiphersBasic(ciphers: CipherView[], query: string, deleted: boolean = false) {\n query = query.trim().toLowerCase();\n return ciphers.filter(c => {\n if (deleted !== c.isDeleted) {\n return false;\n }\n if (c.name != null && c.name.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (query.length >= 8 && c.id.startsWith(query)) {\n return true;\n }\n if (c.subTitle != null && c.subTitle.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (c.login && c.login.uri != null && c.login.uri.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n return false;\n });\n }\n\n searchSends(sends: SendView[], query: string) {\n query = query.trim().toLocaleLowerCase();\n\n return sends.filter(s => {\n if (s.name != null && s.name.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (query.length >= 8 && (s.id.startsWith(query) || s.accessId.toLocaleLowerCase().startsWith(query) || (s.file?.id != null && s.file.id.startsWith(query)))) {\n return true;\n }\n if (s.notes != null && s.notes.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (s.text?.text != null && s.text.text.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n if (s.file?.fileName != null && s.file.fileName.toLowerCase().indexOf(query) > -1) {\n return true;\n }\n });\n }\n\n getIndexForSearch(): lunr.Index {\n return this.index;\n }\n\n private fieldExtractor(c: CipherView, joined: boolean) {\n if (!c.hasFields) {\n return null;\n }\n let fields: string[] = [];\n c.fields.forEach(f => {\n if (f.name != null) {\n fields.push(f.name);\n }\n if (f.type === FieldType.Text && f.value != null) {\n fields.push(f.value);\n }\n });\n fields = fields.filter(f => f.trim() !== '');\n if (fields.length === 0) {\n return null;\n }\n return joined ? fields.join(' ') : fields;\n }\n\n private attachmentExtractor(c: CipherView, joined: boolean) {\n if (!c.hasAttachments) {\n return null;\n }\n let attachments: string[] = [];\n c.attachments.forEach(a => {\n if (a != null && a.fileName != null) {\n if (joined && a.fileName.indexOf('.') > -1) {\n attachments.push(a.fileName.substr(0, a.fileName.lastIndexOf('.')));\n } else {\n attachments.push(a.fileName);\n }\n }\n });\n attachments = attachments.filter(f => f.trim() !== '');\n if (attachments.length === 0) {\n return null;\n }\n return joined ? attachments.join(' ') : attachments;\n }\n\n private uriExtractor(c: CipherView) {\n if (c.type !== CipherType.Login || c.login == null || !c.login.hasUris) {\n return null;\n }\n const uris: string[] = [];\n c.login.uris.forEach(u => {\n if (u.uri == null || u.uri === '') {\n return;\n }\n if (u.hostname != null) {\n uris.push(u.hostname);\n return;\n }\n let uri = u.uri;\n if (u.match !== UriMatchType.RegularExpression) {\n const protocolIndex = uri.indexOf('://');\n if (protocolIndex > -1) {\n uri = uri.substr(protocolIndex + 3);\n }\n const queryIndex = uri.search(/\\?|&|#/);\n if (queryIndex > -1) {\n uri = uri.substring(0, queryIndex);\n }\n }\n uris.push(uri);\n });\n return uris.length > 0 ? uris : null;\n }\n}\n","import { SendData } from '../models/data/sendData';\n\nimport { SendRequest } from '../models/request/sendRequest';\n\nimport { ErrorResponse } from '../models/response/errorResponse';\nimport { SendResponse } from '../models/response/sendResponse';\n\nimport { EncArrayBuffer } from '../models/domain/encArrayBuffer';\nimport { EncString } from '../models/domain/encString';\nimport { Send } from '../models/domain/send';\nimport { SendFile } from '../models/domain/sendFile';\nimport { SendText } from '../models/domain/sendText';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nimport { FileUploadType } from '../enums/fileUploadType';\nimport { SendType } from '../enums/sendType';\n\nimport { SendView } from '../models/view/sendView';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { CryptoFunctionService } from '../abstractions/cryptoFunction.service';\nimport { FileUploadService } from '../abstractions/fileUpload.service';\nimport { I18nService } from '../abstractions/i18n.service';\nimport { SendService as SendServiceAbstraction } from '../abstractions/send.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { Utils } from '../misc/utils';\n\nconst Keys = {\n sendsPrefix: 'sends_',\n};\n\nexport class SendService implements SendServiceAbstraction {\n decryptedSendCache: SendView[];\n\n constructor(private cryptoService: CryptoService, private userService: UserService,\n private apiService: ApiService, private fileUploadService: FileUploadService,\n private storageService: StorageService, private i18nService: I18nService,\n private cryptoFunctionService: CryptoFunctionService) { }\n\n clearCache(): void {\n this.decryptedSendCache = null;\n }\n\n async encrypt(model: SendView, file: File | ArrayBuffer, password: string,\n key?: SymmetricCryptoKey): Promise<[Send, EncArrayBuffer]> {\n let fileData: EncArrayBuffer = null;\n const send = new Send();\n send.id = model.id;\n send.type = model.type;\n send.disabled = model.disabled;\n send.hideEmail = model.hideEmail;\n send.maxAccessCount = model.maxAccessCount;\n if (model.key == null) {\n model.key = await this.cryptoFunctionService.randomBytes(16);\n model.cryptoKey = await this.cryptoService.makeSendKey(model.key);\n }\n if (password != null) {\n const passwordHash = await this.cryptoFunctionService.pbkdf2(password, model.key, 'sha256', 100000);\n send.password = Utils.fromBufferToB64(passwordHash);\n }\n send.key = await this.cryptoService.encrypt(model.key, key);\n send.name = await this.cryptoService.encrypt(model.name, model.cryptoKey);\n send.notes = await this.cryptoService.encrypt(model.notes, model.cryptoKey);\n if (send.type === SendType.Text) {\n send.text = new SendText();\n send.text.text = await this.cryptoService.encrypt(model.text.text, model.cryptoKey);\n send.text.hidden = model.text.hidden;\n } else if (send.type === SendType.File) {\n send.file = new SendFile();\n if (file != null) {\n if (file instanceof ArrayBuffer) {\n const [name, data] = await this.encryptFileData(model.file.fileName, file, model.cryptoKey);\n send.file.fileName = name;\n fileData = data;\n } else {\n fileData = await this.parseFile(send, file, model.cryptoKey);\n }\n }\n }\n\n return [send, fileData];\n }\n\n async get(id: string): Promise {\n const userId = await this.userService.getUserId();\n const sends = await this.storageService.get<{ [id: string]: SendData; }>(\n Keys.sendsPrefix + userId);\n if (sends == null || !sends.hasOwnProperty(id)) {\n return null;\n }\n\n return new Send(sends[id]);\n }\n\n async getAll(): Promise {\n const userId = await this.userService.getUserId();\n const sends = await this.storageService.get<{ [id: string]: SendData; }>(\n Keys.sendsPrefix + userId);\n const response: Send[] = [];\n for (const id in sends) {\n if (sends.hasOwnProperty(id)) {\n response.push(new Send(sends[id]));\n }\n }\n return response;\n }\n\n async getAllDecrypted(): Promise {\n if (this.decryptedSendCache != null) {\n return this.decryptedSendCache;\n }\n\n const hasKey = await this.cryptoService.hasKey();\n if (!hasKey) {\n throw new Error('No key.');\n }\n\n const decSends: SendView[] = [];\n const promises: Promise[] = [];\n const sends = await this.getAll();\n sends.forEach(send => {\n promises.push(send.decrypt().then(f => decSends.push(f)));\n });\n\n await Promise.all(promises);\n decSends.sort(Utils.getSortFunction(this.i18nService, 'name'));\n\n this.decryptedSendCache = decSends;\n return this.decryptedSendCache;\n }\n\n async saveWithServer(sendData: [Send, EncArrayBuffer]): Promise {\n const request = new SendRequest(sendData[0], sendData[1]?.buffer.byteLength);\n let response: SendResponse;\n if (sendData[0].id == null) {\n if (sendData[0].type === SendType.Text) {\n response = await this.apiService.postSend(request);\n } else {\n try {\n const uploadDataResponse = await this.apiService.postFileTypeSend(request);\n response = uploadDataResponse.sendResponse;\n\n await this.fileUploadService.uploadSendFile(uploadDataResponse, sendData[0].file.fileName, sendData[1]);\n } catch (e) {\n if (e instanceof ErrorResponse && (e as ErrorResponse).statusCode === 404) {\n response = await this.legacyServerSendFileUpload(sendData, request);\n } else if (e instanceof ErrorResponse) {\n throw new Error((e as ErrorResponse).getSingleMessage());\n } else {\n throw e;\n }\n }\n }\n sendData[0].id = response.id;\n sendData[0].accessId = response.accessId;\n } else {\n response = await this.apiService.putSend(sendData[0].id, request);\n }\n\n const userId = await this.userService.getUserId();\n const data = new SendData(response, userId);\n await this.upsert(data);\n }\n\n /**\n * @deprecated Mar 25 2021: This method has been deprecated in favor of direct uploads.\n * This method still exists for backward compatibility with old server versions.\n */\n async legacyServerSendFileUpload(sendData: [Send, EncArrayBuffer], request: SendRequest): Promise\n {\n const fd = new FormData();\n try {\n const blob = new Blob([sendData[1].buffer], { type: 'application/octet-stream' });\n fd.append('model', JSON.stringify(request));\n fd.append('data', blob, sendData[0].file.fileName.encryptedString);\n } catch (e) {\n if (Utils.isNode && !Utils.isBrowser) {\n fd.append('model', JSON.stringify(request));\n fd.append('data', Buffer.from(sendData[1].buffer) as any, {\n filepath: sendData[0].file.fileName.encryptedString,\n contentType: 'application/octet-stream',\n } as any);\n } else {\n throw e;\n }\n }\n return await this.apiService.postSendFileLegacy(fd);\n }\n\n async upsert(send: SendData | SendData[]): Promise {\n const userId = await this.userService.getUserId();\n let sends = await this.storageService.get<{ [id: string]: SendData; }>(\n Keys.sendsPrefix + userId);\n if (sends == null) {\n sends = {};\n }\n\n if (send instanceof SendData) {\n const s = send as SendData;\n sends[s.id] = s;\n } else {\n (send as SendData[]).forEach(s => {\n sends[s.id] = s;\n });\n }\n\n await this.storageService.save(Keys.sendsPrefix + userId, sends);\n this.decryptedSendCache = null;\n }\n\n async replace(sends: { [id: string]: SendData; }): Promise {\n const userId = await this.userService.getUserId();\n await this.storageService.save(Keys.sendsPrefix + userId, sends);\n this.decryptedSendCache = null;\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.sendsPrefix + userId);\n this.decryptedSendCache = null;\n }\n\n async delete(id: string | string[]): Promise {\n const userId = await this.userService.getUserId();\n const sends = await this.storageService.get<{ [id: string]: SendData; }>(\n Keys.sendsPrefix + userId);\n if (sends == null) {\n return;\n }\n\n if (typeof id === 'string') {\n if (sends[id] == null) {\n return;\n }\n delete sends[id];\n } else {\n (id as string[]).forEach(i => {\n delete sends[i];\n });\n }\n\n await this.storageService.save(Keys.sendsPrefix + userId, sends);\n this.decryptedSendCache = null;\n }\n\n async deleteWithServer(id: string): Promise {\n await this.apiService.deleteSend(id);\n await this.delete(id);\n }\n\n async removePasswordWithServer(id: string): Promise {\n const response = await this.apiService.putSendRemovePassword(id);\n const userId = await this.userService.getUserId();\n const data = new SendData(response, userId);\n await this.upsert(data);\n }\n\n private parseFile(send: Send, file: File, key: SymmetricCryptoKey): Promise {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.readAsArrayBuffer(file);\n reader.onload = async evt => {\n try {\n const [name, data] = await this.encryptFileData(file.name, evt.target.result as ArrayBuffer, key);\n send.file.fileName = name;\n resolve(data);\n } catch (e) {\n reject(e);\n }\n };\n reader.onerror = evt => {\n reject('Error reading file.');\n };\n });\n }\n\n private async encryptFileData(fileName: string, data: ArrayBuffer,\n key: SymmetricCryptoKey): Promise<[EncString, EncArrayBuffer]> {\n const encFileName = await this.cryptoService.encrypt(fileName, key);\n const encFileData = await this.cryptoService.encryptToBytes(data, key);\n return [encFileName, encFileData];\n }\n}\n","import { SendFileApi } from '../api/sendFileApi';\n\nexport class SendFileData {\n id: string;\n fileName: string;\n key: string;\n size: string;\n sizeName: string;\n\n constructor(data?: SendFileApi) {\n if (data == null) {\n return;\n }\n\n this.id = data.id;\n this.fileName = data.fileName;\n this.key = data.key;\n this.size = data.size;\n this.sizeName = data.sizeName;\n }\n}\n","import { SendTextApi } from '../api/sendTextApi';\n\nexport class SendTextData {\n text: string;\n hidden: boolean;\n\n constructor(data?: SendTextApi) {\n if (data == null) {\n return;\n }\n\n this.text = data.text;\n this.hidden = data.hidden;\n }\n}\n","import { CryptoService } from '../../abstractions/crypto.service';\n\nimport { SendType } from '../../enums/sendType';\n\nimport { Utils } from '../../misc/utils';\n\nimport { SendData } from '../data/sendData';\n\nimport { SendView } from '../view/sendView';\n\nimport Domain from './domainBase';\nimport { EncString } from './encString';\nimport { SendFile } from './sendFile';\nimport { SendText } from './sendText';\n\nexport class Send extends Domain {\n id: string;\n accessId: string;\n userId: string;\n type: SendType;\n name: EncString;\n notes: EncString;\n file: SendFile;\n text: SendText;\n key: EncString;\n maxAccessCount?: number;\n accessCount: number;\n revisionDate: Date;\n expirationDate: Date;\n deletionDate: Date;\n password: string;\n disabled: boolean;\n hideEmail: boolean;\n\n constructor(obj?: SendData, alreadyEncrypted: boolean = false) {\n super();\n if (obj == null) {\n return;\n }\n\n this.buildDomainModel(this, obj, {\n id: null,\n accessId: null,\n userId: null,\n name: null,\n notes: null,\n key: null,\n }, alreadyEncrypted, ['id', 'accessId', 'userId']);\n\n this.type = obj.type;\n this.maxAccessCount = obj.maxAccessCount;\n this.accessCount = obj.accessCount;\n this.password = obj.password;\n this.disabled = obj.disabled;\n this.revisionDate = obj.revisionDate != null ? new Date(obj.revisionDate) : null;\n this.deletionDate = obj.deletionDate != null ? new Date(obj.deletionDate) : null;\n this.expirationDate = obj.expirationDate != null ? new Date(obj.expirationDate) : null;\n this.hideEmail = obj.hideEmail;\n\n switch (this.type) {\n case SendType.Text:\n this.text = new SendText(obj.text, alreadyEncrypted);\n break;\n case SendType.File:\n this.file = new SendFile(obj.file, alreadyEncrypted);\n break;\n default:\n break;\n }\n }\n\n async decrypt(): Promise {\n const model = new SendView(this);\n\n let cryptoService: CryptoService;\n const containerService = (Utils.global as any).bitwardenContainerService;\n if (containerService) {\n cryptoService = containerService.getCryptoService();\n } else {\n throw new Error('global bitwardenContainerService not initialized.');\n }\n\n try {\n model.key = await cryptoService.decryptToBytes(this.key, null);\n model.cryptoKey = await cryptoService.makeSendKey(model.key);\n } catch (e) {\n // TODO: error?\n }\n\n await this.decryptObj(model, {\n name: null,\n notes: null,\n }, null, model.cryptoKey);\n\n switch (this.type) {\n case SendType.File:\n model.file = await this.file.decrypt(model.cryptoKey);\n break;\n case SendType.Text:\n model.text = await this.text.decrypt(model.cryptoKey);\n break;\n default:\n break;\n }\n\n return model;\n }\n}\n","import { SettingsService as SettingsServiceAbstraction } from '../abstractions/settings.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { UserService } from '../abstractions/user.service';\n\nconst Keys = {\n settingsPrefix: 'settings_',\n equivalentDomains: 'equivalentDomains',\n};\n\nexport class SettingsService implements SettingsServiceAbstraction {\n private settingsCache: any;\n\n constructor(private userService: UserService, private storageService: StorageService) {\n }\n\n clearCache(): void {\n this.settingsCache = null;\n }\n\n getEquivalentDomains(): Promise {\n return this.getSettingsKey(Keys.equivalentDomains);\n }\n\n async setEquivalentDomains(equivalentDomains: string[][]): Promise {\n await this.setSettingsKey(Keys.equivalentDomains, equivalentDomains);\n }\n\n async clear(userId: string): Promise {\n await this.storageService.remove(Keys.settingsPrefix + userId);\n this.clearCache();\n }\n\n // Helpers\n\n private async getSettings(): Promise {\n if (this.settingsCache == null) {\n const userId = await this.userService.getUserId();\n this.settingsCache = this.storageService.get(Keys.settingsPrefix + userId);\n }\n return this.settingsCache;\n }\n\n private async getSettingsKey(key: string): Promise {\n const settings = await this.getSettings();\n if (settings != null && settings[key]) {\n return settings[key];\n }\n return null;\n }\n\n private async setSettingsKey(key: string, value: any): Promise {\n const userId = await this.userService.getUserId();\n let settings = await this.getSettings();\n if (!settings) {\n settings = {};\n }\n\n settings[key] = value;\n await this.storageService.save(Keys.settingsPrefix + userId, settings);\n this.settingsCache = settings;\n }\n}\n","import { StateService as StateServiceAbstraction } from '../abstractions/state.service';\n\nexport class StateService implements StateServiceAbstraction {\n private state: any = {};\n\n get(key: string): Promise {\n if (this.state.hasOwnProperty(key)) {\n return Promise.resolve(this.state[key]);\n }\n return Promise.resolve(null);\n }\n\n save(key: string, obj: any): Promise {\n this.state[key] = obj;\n return Promise.resolve();\n }\n\n remove(key: string): Promise {\n delete this.state[key];\n return Promise.resolve();\n }\n\n purge(): Promise {\n this.state = {};\n return Promise.resolve();\n }\n}\n","import { ApiService } from '../abstractions/api.service';\nimport { CipherService } from '../abstractions/cipher.service';\nimport { CollectionService } from '../abstractions/collection.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { FolderService } from '../abstractions/folder.service';\nimport { KeyConnectorService } from '../abstractions/keyConnector.service';\nimport { LogService } from '../abstractions/log.service';\nimport { MessagingService } from '../abstractions/messaging.service';\nimport { PolicyService } from '../abstractions/policy.service';\nimport { SendService } from '../abstractions/send.service';\nimport { SettingsService } from '../abstractions/settings.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { SyncService as SyncServiceAbstraction } from '../abstractions/sync.service';\nimport { TokenService } from '../abstractions/token.service';\nimport { UserService } from '../abstractions/user.service';\n\nimport { CipherData } from '../models/data/cipherData';\nimport { CollectionData } from '../models/data/collectionData';\nimport { FolderData } from '../models/data/folderData';\nimport { OrganizationData } from '../models/data/organizationData';\nimport { PolicyData } from '../models/data/policyData';\nimport { ProviderData } from '../models/data/providerData';\nimport { SendData } from '../models/data/sendData';\n\nimport { CipherResponse } from '../models/response/cipherResponse';\nimport { CollectionDetailsResponse } from '../models/response/collectionResponse';\nimport { DomainsResponse } from '../models/response/domainsResponse';\nimport { FolderResponse } from '../models/response/folderResponse';\nimport {\n SyncCipherNotification,\n SyncFolderNotification,\n SyncSendNotification,\n} from '../models/response/notificationResponse';\nimport { PolicyResponse } from '../models/response/policyResponse';\nimport { ProfileResponse } from '../models/response/profileResponse';\nimport { SendResponse } from '../models/response/sendResponse';\n\nconst Keys = {\n lastSyncPrefix: 'lastSync_',\n};\n\nexport class SyncService implements SyncServiceAbstraction {\n syncInProgress: boolean = false;\n\n constructor(private userService: UserService, private apiService: ApiService,\n private settingsService: SettingsService, private folderService: FolderService,\n private cipherService: CipherService, private cryptoService: CryptoService,\n private collectionService: CollectionService, private storageService: StorageService,\n private messagingService: MessagingService, private policyService: PolicyService,\n private sendService: SendService, private logService: LogService,\n private tokenService: TokenService, private keyConnectorService: KeyConnectorService,\n private logoutCallback: (expired: boolean) => Promise) {\n }\n\n async getLastSync(): Promise {\n const userId = await this.userService.getUserId();\n if (userId == null) {\n return null;\n }\n\n const lastSync = await this.storageService.get(Keys.lastSyncPrefix + userId);\n if (lastSync) {\n return new Date(lastSync);\n }\n\n return null;\n }\n\n async setLastSync(date: Date): Promise {\n const userId = await this.userService.getUserId();\n if (userId == null) {\n return;\n }\n\n await this.storageService.save(Keys.lastSyncPrefix + userId, date.toJSON());\n }\n\n async fullSync(forceSync: boolean, allowThrowOnError = false): Promise {\n this.syncStarted();\n const isAuthenticated = await this.userService.isAuthenticated();\n if (!isAuthenticated) {\n return this.syncCompleted(false);\n }\n\n const now = new Date();\n let needsSync = false;\n try {\n needsSync = await this.needsSyncing(forceSync);\n } catch (e) {\n if (allowThrowOnError) {\n throw e;\n }\n }\n\n if (!needsSync) {\n await this.setLastSync(now);\n return this.syncCompleted(false);\n }\n\n const userId = await this.userService.getUserId();\n try {\n await this.apiService.refreshIdentityToken();\n const response = await this.apiService.getSync();\n\n await this.syncProfile(response.profile);\n await this.syncFolders(userId, response.folders);\n await this.syncCollections(response.collections);\n await this.syncCiphers(userId, response.ciphers);\n await this.syncSends(userId, response.sends);\n await this.syncSettings(userId, response.domains);\n await this.syncPolicies(response.policies);\n\n await this.setLastSync(now);\n return this.syncCompleted(true);\n } catch (e) {\n if (allowThrowOnError) {\n throw e;\n } else {\n return this.syncCompleted(false);\n }\n }\n }\n\n async syncUpsertFolder(notification: SyncFolderNotification, isEdit: boolean): Promise {\n this.syncStarted();\n if (await this.userService.isAuthenticated()) {\n try {\n const localFolder = await this.folderService.get(notification.id);\n if ((!isEdit && localFolder == null) ||\n (isEdit && localFolder != null && localFolder.revisionDate < notification.revisionDate)) {\n const remoteFolder = await this.apiService.getFolder(notification.id);\n if (remoteFolder != null) {\n const userId = await this.userService.getUserId();\n await this.folderService.upsert(new FolderData(remoteFolder, userId));\n this.messagingService.send('syncedUpsertedFolder', { folderId: notification.id });\n return this.syncCompleted(true);\n }\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n return this.syncCompleted(false);\n }\n\n async syncDeleteFolder(notification: SyncFolderNotification): Promise {\n this.syncStarted();\n if (await this.userService.isAuthenticated()) {\n await this.folderService.delete(notification.id);\n this.messagingService.send('syncedDeletedFolder', { folderId: notification.id });\n this.syncCompleted(true);\n return true;\n }\n return this.syncCompleted(false);\n }\n\n async syncUpsertCipher(notification: SyncCipherNotification, isEdit: boolean): Promise {\n this.syncStarted();\n if (await this.userService.isAuthenticated()) {\n try {\n let shouldUpdate = true;\n const localCipher = await this.cipherService.get(notification.id);\n if (localCipher != null && localCipher.revisionDate >= notification.revisionDate) {\n shouldUpdate = false;\n }\n\n let checkCollections = false;\n if (shouldUpdate) {\n if (isEdit) {\n shouldUpdate = localCipher != null;\n checkCollections = true;\n } else {\n if (notification.collectionIds == null || notification.organizationId == null) {\n shouldUpdate = localCipher == null;\n } else {\n shouldUpdate = false;\n checkCollections = true;\n }\n }\n }\n\n if (!shouldUpdate && checkCollections && notification.organizationId != null &&\n notification.collectionIds != null && notification.collectionIds.length > 0) {\n const collections = await this.collectionService.getAll();\n if (collections != null) {\n for (let i = 0; i < collections.length; i++) {\n if (notification.collectionIds.indexOf(collections[i].id) > -1) {\n shouldUpdate = true;\n break;\n }\n }\n }\n }\n\n if (shouldUpdate) {\n const remoteCipher = await this.apiService.getCipher(notification.id);\n if (remoteCipher != null) {\n const userId = await this.userService.getUserId();\n await this.cipherService.upsert(new CipherData(remoteCipher, userId));\n this.messagingService.send('syncedUpsertedCipher', { cipherId: notification.id });\n return this.syncCompleted(true);\n }\n }\n } catch (e) {\n if (e != null && e.statusCode === 404 && isEdit) {\n await this.cipherService.delete(notification.id);\n this.messagingService.send('syncedDeletedCipher', { cipherId: notification.id });\n return this.syncCompleted(true);\n }\n }\n }\n return this.syncCompleted(false);\n }\n\n async syncDeleteCipher(notification: SyncCipherNotification): Promise {\n this.syncStarted();\n if (await this.userService.isAuthenticated()) {\n await this.cipherService.delete(notification.id);\n this.messagingService.send('syncedDeletedCipher', { cipherId: notification.id });\n return this.syncCompleted(true);\n }\n return this.syncCompleted(false);\n }\n\n async syncUpsertSend(notification: SyncSendNotification, isEdit: boolean): Promise {\n this.syncStarted();\n if (await this.userService.isAuthenticated()) {\n try {\n const localSend = await this.sendService.get(notification.id);\n if ((!isEdit && localSend == null) ||\n (isEdit && localSend != null && localSend.revisionDate < notification.revisionDate)) {\n const remoteSend = await this.apiService.getSend(notification.id);\n if (remoteSend != null) {\n const userId = await this.userService.getUserId();\n await this.sendService.upsert(new SendData(remoteSend, userId));\n this.messagingService.send('syncedUpsertedSend', { sendId: notification.id });\n return this.syncCompleted(true);\n }\n }\n } catch (e) {\n this.logService.error(e);\n }\n }\n return this.syncCompleted(false);\n }\n\n async syncDeleteSend(notification: SyncSendNotification): Promise {\n this.syncStarted();\n if (await this.userService.isAuthenticated()) {\n await this.sendService.delete(notification.id);\n this.messagingService.send('syncedDeletedSend', { sendId: notification.id });\n this.syncCompleted(true);\n return true;\n }\n return this.syncCompleted(false);\n }\n\n // Helpers\n\n private syncStarted() {\n this.syncInProgress = true;\n this.messagingService.send('syncStarted');\n }\n\n private syncCompleted(successfully: boolean): boolean {\n this.syncInProgress = false;\n this.messagingService.send('syncCompleted', { successfully: successfully });\n return successfully;\n }\n\n private async needsSyncing(forceSync: boolean) {\n if (forceSync) {\n return true;\n }\n\n const lastSync = await this.getLastSync();\n if (lastSync == null || lastSync.getTime() === 0) {\n return true;\n }\n\n const response = await this.apiService.getAccountRevisionDate();\n if (new Date(response) <= lastSync) {\n return false;\n }\n return true;\n }\n\n private async syncProfile(response: ProfileResponse) {\n const stamp = await this.userService.getSecurityStamp();\n if (stamp != null && stamp !== response.securityStamp) {\n if (this.logoutCallback != null) {\n await this.logoutCallback(true);\n }\n\n throw new Error('Stamp has changed');\n }\n\n await this.cryptoService.setEncKey(response.key);\n await this.cryptoService.setEncPrivateKey(response.privateKey);\n await this.cryptoService.setProviderKeys(response.providers);\n await this.cryptoService.setOrgKeys(response.organizations, response.providerOrganizations);\n await this.userService.setSecurityStamp(response.securityStamp);\n await this.userService.setEmailVerified(response.emailVerified);\n await this.userService.setForcePasswordReset(response.forcePasswordReset);\n await this.keyConnectorService.setUsesKeyConnector(response.usesKeyConnector);\n\n const organizations: { [id: string]: OrganizationData; } = {};\n response.organizations.forEach(o => {\n organizations[o.id] = new OrganizationData(o);\n });\n\n const providers: { [id: string]: ProviderData; } = {};\n response.providers.forEach(p => {\n providers[p.id] = new ProviderData(p);\n });\n\n response.providerOrganizations.forEach(o => {\n if (organizations[o.id] == null) {\n organizations[o.id] = new OrganizationData(o);\n organizations[o.id].isProviderUser = true;\n }\n });\n\n await Promise.all([\n this.userService.replaceOrganizations(organizations),\n this.userService.replaceProviders(providers),\n ]);\n\n if (await this.keyConnectorService.userNeedsMigration()) {\n this.messagingService.send('convertAccountToKeyConnector');\n } else {\n this.keyConnectorService.removeConvertAccountRequired();\n }\n }\n\n private async syncFolders(userId: string, response: FolderResponse[]) {\n const folders: { [id: string]: FolderData; } = {};\n response.forEach(f => {\n folders[f.id] = new FolderData(f, userId);\n });\n return await this.folderService.replace(folders);\n }\n\n private async syncCollections(response: CollectionDetailsResponse[]) {\n const collections: { [id: string]: CollectionData; } = {};\n response.forEach(c => {\n collections[c.id] = new CollectionData(c);\n });\n return await this.collectionService.replace(collections);\n }\n\n private async syncCiphers(userId: string, response: CipherResponse[]) {\n const ciphers: { [id: string]: CipherData; } = {};\n response.forEach(c => {\n ciphers[c.id] = new CipherData(c, userId);\n });\n return await this.cipherService.replace(ciphers);\n }\n\n private async syncSends(userId: string, response: SendResponse[]) {\n const sends: { [id: string]: SendData; } = {};\n response.forEach(s => {\n sends[s.id] = new SendData(s, userId);\n });\n return await this.sendService.replace(sends);\n }\n\n private async syncSettings(userId: string, response: DomainsResponse) {\n let eqDomains: string[][] = [];\n if (response != null && response.equivalentDomains != null) {\n eqDomains = eqDomains.concat(response.equivalentDomains);\n }\n\n if (response != null && response.globalEquivalentDomains != null) {\n response.globalEquivalentDomains.forEach(global => {\n if (global.domains.length > 0) {\n eqDomains.push(global.domains);\n }\n });\n }\n\n return this.settingsService.setEquivalentDomains(eqDomains);\n }\n\n private async syncPolicies(response: PolicyResponse[]) {\n const policies: { [id: string]: PolicyData; } = {};\n if (response != null) {\n response.forEach(p => {\n policies[p.id] = new PolicyData(p);\n });\n }\n return await this.policyService.replace(policies);\n }\n}\n","import { ProfileOrganizationResponse } from '../response/profileOrganizationResponse';\n\nimport { OrganizationUserStatusType } from '../../enums/organizationUserStatusType';\nimport { OrganizationUserType } from '../../enums/organizationUserType';\nimport { ProductType } from '../../enums/productType';\n\nimport { PermissionsApi } from '../api/permissionsApi';\n\nexport class OrganizationData {\n id: string;\n name: string;\n status: OrganizationUserStatusType;\n type: OrganizationUserType;\n enabled: boolean;\n usePolicies: boolean;\n useGroups: boolean;\n useDirectory: boolean;\n useEvents: boolean;\n useTotp: boolean;\n use2fa: boolean;\n useApi: boolean;\n useSso: boolean;\n useKeyConnector: boolean;\n useResetPassword: boolean;\n selfHost: boolean;\n usersGetPremium: boolean;\n seats: number;\n maxCollections: number;\n maxStorageGb?: number;\n ssoBound: boolean;\n identifier: string;\n permissions: PermissionsApi;\n resetPasswordEnrolled: boolean;\n userId: string;\n hasPublicAndPrivateKeys: boolean;\n providerId: string;\n providerName: string;\n isProviderUser: boolean;\n familySponsorshipFriendlyName: string;\n familySponsorshipAvailable: boolean;\n planProductType: ProductType;\n keyConnectorEnabled: boolean;\n keyConnectorUrl: string;\n\n constructor(response: ProfileOrganizationResponse) {\n this.id = response.id;\n this.name = response.name;\n this.status = response.status;\n this.type = response.type;\n this.enabled = response.enabled;\n this.usePolicies = response.usePolicies;\n this.useGroups = response.useGroups;\n this.useDirectory = response.useDirectory;\n this.useEvents = response.useEvents;\n this.useTotp = response.useTotp;\n this.use2fa = response.use2fa;\n this.useApi = response.useApi;\n this.useSso = response.useSso;\n this.useKeyConnector = response.useKeyConnector;\n this.useResetPassword = response.useResetPassword;\n this.selfHost = response.selfHost;\n this.usersGetPremium = response.usersGetPremium;\n this.seats = response.seats;\n this.maxCollections = response.maxCollections;\n this.maxStorageGb = response.maxStorageGb;\n this.ssoBound = response.ssoBound;\n this.identifier = response.identifier;\n this.permissions = response.permissions;\n this.resetPasswordEnrolled = response.resetPasswordEnrolled;\n this.userId = response.userId;\n this.hasPublicAndPrivateKeys = response.hasPublicAndPrivateKeys;\n this.providerId = response.providerId;\n this.providerName = response.providerName;\n this.familySponsorshipFriendlyName = response.familySponsorshipFriendlyName;\n this.familySponsorshipAvailable = response.familySponsorshipAvailable;\n this.planProductType = response.planProductType;\n this.keyConnectorEnabled = response.keyConnectorEnabled;\n this.keyConnectorUrl = response.keyConnectorUrl;\n }\n}\n","import { ProfileProviderResponse } from '../response/profileProviderResponse';\n\nimport { ProviderUserStatusType } from '../../enums/providerUserStatusType';\nimport { ProviderUserType } from '../../enums/providerUserType';\n\nexport class ProviderData {\n id: string;\n name: string;\n status: ProviderUserStatusType;\n type: ProviderUserType;\n enabled: boolean;\n userId: string;\n useEvents: boolean;\n\n constructor(response: ProfileProviderResponse) {\n this.id = response.id;\n this.name = response.name;\n this.status = response.status;\n this.type = response.type;\n this.enabled = response.enabled;\n this.userId = response.userId;\n this.useEvents = response.useEvents;\n }\n}\n","import { ConstantsService } from './constants.service';\n\nimport { StorageService } from '../abstractions/storage.service';\nimport { TokenService as TokenServiceAbstraction } from '../abstractions/token.service';\n\nimport { Utils } from '../misc/utils';\n\nconst Keys = {\n accessToken: 'accessToken',\n refreshToken: 'refreshToken',\n twoFactorTokenPrefix: 'twoFactorToken_',\n clientId: 'apikey_clientId',\n clientSecret: 'apikey_clientSecret',\n};\n\nexport class TokenService implements TokenServiceAbstraction {\n token: string;\n decodedToken: any;\n refreshToken: string;\n clientId: string;\n clientSecret: string;\n\n constructor(private storageService: StorageService) {\n }\n\n async setTokens(accessToken: string, refreshToken: string, clientIdClientSecret: [string, string]): Promise {\n await this.setToken(accessToken);\n await this.setRefreshToken(refreshToken);\n if (clientIdClientSecret != null) {\n await this.setClientId(clientIdClientSecret[0]);\n await this.setClientSecret(clientIdClientSecret[1]);\n }\n }\n\n async setClientId(clientId: string): Promise {\n this.clientId = clientId;\n return this.storeTokenValue(Keys.clientId, clientId);\n }\n\n async getClientId(): Promise {\n if (this.clientId != null) {\n return this.clientId;\n }\n\n this.clientId = await this.storageService.get(Keys.clientId);\n return this.clientId;\n }\n\n async setClientSecret(clientSecret: string): Promise {\n this.clientSecret = clientSecret;\n return this.storeTokenValue(Keys.clientSecret, clientSecret);\n }\n\n async getClientSecret(): Promise {\n if (this.clientSecret != null) {\n return this.clientSecret;\n }\n\n this.clientSecret = await this.storageService.get(Keys.clientSecret);\n return this.clientSecret;\n }\n\n async setToken(token: string): Promise {\n this.token = token;\n this.decodedToken = null;\n return this.storeTokenValue(Keys.accessToken, token);\n }\n\n async getToken(): Promise {\n if (this.token != null) {\n return this.token;\n }\n\n this.token = await this.storageService.get(Keys.accessToken);\n return this.token;\n }\n\n async setRefreshToken(refreshToken: string): Promise {\n this.refreshToken = refreshToken;\n return this.storeTokenValue(Keys.refreshToken, refreshToken);\n }\n\n async getRefreshToken(): Promise {\n if (this.refreshToken != null) {\n return this.refreshToken;\n }\n\n this.refreshToken = await this.storageService.get(Keys.refreshToken);\n return this.refreshToken;\n }\n\n async toggleTokens(): Promise {\n const token = await this.getToken();\n const refreshToken = await this.getRefreshToken();\n const clientId = await this.getClientId();\n const clientSecret = await this.getClientSecret();\n const timeout = await this.storageService.get(ConstantsService.vaultTimeoutKey);\n const action = await this.storageService.get(ConstantsService.vaultTimeoutActionKey);\n if ((timeout != null || timeout === 0) && action === 'logOut') {\n // if we have a vault timeout and the action is log out, reset tokens\n await this.clearToken();\n this.token = token;\n this.refreshToken = refreshToken;\n this.clientId = clientId;\n this.clientSecret = clientSecret;\n return;\n }\n\n await this.setToken(token);\n await this.setRefreshToken(refreshToken);\n await this.setClientId(clientId);\n await this.setClientSecret(clientSecret);\n }\n\n setTwoFactorToken(token: string, email: string): Promise {\n return this.storageService.save(Keys.twoFactorTokenPrefix + email, token);\n }\n\n getTwoFactorToken(email: string): Promise {\n return this.storageService.get(Keys.twoFactorTokenPrefix + email);\n }\n\n clearTwoFactorToken(email: string): Promise {\n return this.storageService.remove(Keys.twoFactorTokenPrefix + email);\n }\n\n async clearToken(): Promise {\n this.token = null;\n this.decodedToken = null;\n this.refreshToken = null;\n this.clientId = null;\n this.clientSecret = null;\n\n await this.storageService.remove(Keys.accessToken);\n await this.storageService.remove(Keys.refreshToken);\n await this.storageService.remove(Keys.clientId);\n await this.storageService.remove(Keys.clientSecret);\n }\n\n // jwthelper methods\n // ref https://github.com/auth0/angular-jwt/blob/master/src/angularJwt/services/jwt.js\n\n decodeToken(): any {\n if (this.decodedToken) {\n return this.decodedToken;\n }\n\n if (this.token == null) {\n throw new Error('Token not found.');\n }\n\n const parts = this.token.split('.');\n if (parts.length !== 3) {\n throw new Error('JWT must have 3 parts');\n }\n\n const decoded = Utils.fromUrlB64ToUtf8(parts[1]);\n if (decoded == null) {\n throw new Error('Cannot decode the token');\n }\n\n this.decodedToken = JSON.parse(decoded);\n return this.decodedToken;\n }\n\n getTokenExpirationDate(): Date {\n const decoded = this.decodeToken();\n if (typeof decoded.exp === 'undefined') {\n return null;\n }\n\n const d = new Date(0); // The 0 here is the key, which sets the date to the epoch\n d.setUTCSeconds(decoded.exp);\n return d;\n }\n\n tokenSecondsRemaining(offsetSeconds: number = 0): number {\n const d = this.getTokenExpirationDate();\n if (d == null) {\n return 0;\n }\n\n const msRemaining = d.valueOf() - (new Date().valueOf() + (offsetSeconds * 1000));\n return Math.round(msRemaining / 1000);\n }\n\n tokenNeedsRefresh(minutes: number = 5): boolean {\n const sRemaining = this.tokenSecondsRemaining();\n return sRemaining < (60 * minutes);\n }\n\n getUserId(): string {\n const decoded = this.decodeToken();\n if (typeof decoded.sub === 'undefined') {\n throw new Error('No user id found');\n }\n\n return decoded.sub as string;\n }\n\n getEmail(): string {\n const decoded = this.decodeToken();\n if (typeof decoded.email === 'undefined') {\n throw new Error('No email found');\n }\n\n return decoded.email as string;\n }\n\n getEmailVerified(): boolean {\n const decoded = this.decodeToken();\n if (typeof decoded.email_verified === 'undefined') {\n throw new Error('No email verification found');\n }\n\n return decoded.email_verified as boolean;\n }\n\n getName(): string {\n const decoded = this.decodeToken();\n if (typeof decoded.name === 'undefined') {\n return null;\n }\n\n return decoded.name as string;\n }\n\n getPremium(): boolean {\n const decoded = this.decodeToken();\n if (typeof decoded.premium === 'undefined') {\n return false;\n }\n\n return decoded.premium as boolean;\n }\n\n getIssuer(): string {\n const decoded = this.decodeToken();\n if (typeof decoded.iss === 'undefined') {\n throw new Error('No issuer found');\n }\n\n return decoded.iss as string;\n }\n\n getIsExternal(): boolean {\n const decoded = this.decodeToken();\n if (!Array.isArray(decoded.amr)) {\n throw new Error('No amr found');\n }\n\n return decoded.amr.includes('external');\n }\n\n private async storeTokenValue(key: string, value: string) {\n if (await this.skipTokenStorage()) {\n // if we have a vault timeout and the action is log out, don't store token\n return;\n }\n\n return this.storageService.save(key, value);\n }\n\n private async skipTokenStorage(): Promise {\n const timeout = await this.storageService.get(ConstantsService.vaultTimeoutKey);\n const action = await this.storageService.get(ConstantsService.vaultTimeoutActionKey);\n return timeout != null && action === 'logOut';\n }\n}\n","import { ConstantsService } from './constants.service';\n\nimport { CryptoFunctionService } from '../abstractions/cryptoFunction.service';\nimport { LogService } from '../abstractions/log.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { TotpService as TotpServiceAbstraction } from '../abstractions/totp.service';\n\nimport { Utils } from '../misc/utils';\n\nconst B32Chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';\nconst SteamChars = '23456789BCDFGHJKMNPQRTVWXY';\n\nexport class TotpService implements TotpServiceAbstraction {\n constructor(private storageService: StorageService, private cryptoFunctionService: CryptoFunctionService,\n private logService: LogService) { }\n\n async getCode(key: string): Promise {\n if (key == null) {\n return null;\n }\n let period = 30;\n let alg: 'sha1' | 'sha256' | 'sha512' = 'sha1';\n let digits = 6;\n let keyB32 = key;\n const isOtpAuth = key.toLowerCase().indexOf('otpauth://') === 0;\n const isSteamAuth = !isOtpAuth && key.toLowerCase().indexOf('steam://') === 0;\n if (isOtpAuth) {\n const params = Utils.getQueryParams(key);\n if (params.has('digits') && params.get('digits') != null) {\n try {\n const digitParams = parseInt(params.get('digits').trim(), null);\n if (digitParams > 10) {\n digits = 10;\n } else if (digitParams > 0) {\n digits = digitParams;\n }\n } catch {\n this.logService.error('Invalid digits param.');\n }\n }\n if (params.has('period') && params.get('period') != null) {\n try {\n const periodParam = parseInt(params.get('period').trim(), null);\n if (periodParam > 0) {\n period = periodParam;\n }\n } catch {\n this.logService.error('Invalid period param.');\n }\n }\n if (params.has('secret') && params.get('secret') != null) {\n keyB32 = params.get('secret');\n }\n if (params.has('algorithm') && params.get('algorithm') != null) {\n const algParam = params.get('algorithm').toLowerCase();\n if (algParam === 'sha1' || algParam === 'sha256' || algParam === 'sha512') {\n alg = algParam;\n }\n }\n } else if (isSteamAuth) {\n keyB32 = key.substr('steam://'.length);\n digits = 5;\n }\n\n const epoch = Math.round(new Date().getTime() / 1000.0);\n const timeHex = this.leftPad(this.decToHex(Math.floor(epoch / period)), 16, '0');\n const timeBytes = Utils.fromHexToArray(timeHex);\n const keyBytes = this.b32ToBytes(keyB32);\n\n if (!keyBytes.length || !timeBytes.length) {\n return null;\n }\n\n const hash = await this.sign(keyBytes, timeBytes, alg);\n if (hash.length === 0) {\n return null;\n }\n\n /* tslint:disable */\n const offset = (hash[hash.length - 1] & 0xf);\n const binary = ((hash[offset] & 0x7f) << 24) | ((hash[offset + 1] & 0xff) << 16) |\n ((hash[offset + 2] & 0xff) << 8) | (hash[offset + 3] & 0xff);\n /* tslint:enable */\n\n let otp = '';\n if (isSteamAuth) {\n // tslint:disable-next-line\n let fullCode = binary & 0x7fffffff;\n for (let i = 0; i < digits; i++) {\n otp += SteamChars[fullCode % SteamChars.length];\n fullCode = Math.trunc(fullCode / SteamChars.length);\n }\n } else {\n otp = (binary % Math.pow(10, digits)).toString();\n otp = this.leftPad(otp, digits, '0');\n }\n\n return otp;\n }\n\n getTimeInterval(key: string): number {\n let period = 30;\n if (key != null && key.toLowerCase().indexOf('otpauth://') === 0) {\n const params = Utils.getQueryParams(key);\n if (params.has('period') && params.get('period') != null) {\n try {\n period = parseInt(params.get('period').trim(), null);\n } catch {\n this.logService.error('Invalid period param.');\n }\n }\n }\n return period;\n }\n\n async isAutoCopyEnabled(): Promise {\n return !(await this.storageService.get(ConstantsService.disableAutoTotpCopyKey));\n }\n\n // Helpers\n\n private leftPad(s: string, l: number, p: string): string {\n if (l + 1 >= s.length) {\n s = Array(l + 1 - s.length).join(p) + s;\n }\n return s;\n }\n\n private decToHex(d: number): string {\n return (d < 15.5 ? '0' : '') + Math.round(d).toString(16);\n }\n\n private b32ToHex(s: string): string {\n s = s.toUpperCase();\n let cleanedInput = '';\n\n for (let i = 0; i < s.length; i++) {\n if (B32Chars.indexOf(s[i]) < 0) {\n continue;\n }\n\n cleanedInput += s[i];\n }\n s = cleanedInput;\n\n let bits = '';\n let hex = '';\n for (let i = 0; i < s.length; i++) {\n const byteIndex = B32Chars.indexOf(s.charAt(i));\n if (byteIndex < 0) {\n continue;\n }\n bits += this.leftPad(byteIndex.toString(2), 5, '0');\n }\n for (let i = 0; i + 4 <= bits.length; i += 4) {\n const chunk = bits.substr(i, 4);\n hex = hex + parseInt(chunk, 2).toString(16);\n }\n return hex;\n }\n\n private b32ToBytes(s: string): Uint8Array {\n return Utils.fromHexToArray(this.b32ToHex(s));\n }\n\n private async sign(keyBytes: Uint8Array, timeBytes: Uint8Array, alg: 'sha1' | 'sha256' | 'sha512') {\n const signature = await this.cryptoFunctionService.hmac(timeBytes.buffer, keyBytes.buffer, alg);\n return new Uint8Array(signature);\n }\n}\n","import { StorageService } from '../abstractions/storage.service';\nimport { TokenService } from '../abstractions/token.service';\nimport { UserService as UserServiceAbstraction } from '../abstractions/user.service';\n\nimport { OrganizationData } from '../models/data/organizationData';\nimport { Organization } from '../models/domain/organization';\n\nimport { KdfType } from '../enums/kdfType';\n\nimport { ProviderData } from '../models/data/providerData';\nimport { Provider } from '../models/domain/provider';\n\nconst Keys = {\n userId: 'userId',\n userEmail: 'userEmail',\n stamp: 'securityStamp',\n kdf: 'kdf',\n kdfIterations: 'kdfIterations',\n organizationsPrefix: 'organizations_',\n providersPrefix: 'providers_',\n emailVerified: 'emailVerified',\n forcePasswordReset: 'forcePasswordReset',\n};\n\nexport class UserService implements UserServiceAbstraction {\n private userId: string;\n private email: string;\n private stamp: string;\n private kdf: KdfType;\n private kdfIterations: number;\n private emailVerified: boolean;\n private forcePasswordReset: boolean;\n\n constructor(private tokenService: TokenService, private storageService: StorageService) { }\n\n async setInformation(userId: string, email: string, kdf: KdfType, kdfIterations: number): Promise {\n this.email = email;\n this.userId = userId;\n this.kdf = kdf;\n this.kdfIterations = kdfIterations;\n\n await this.storageService.save(Keys.userEmail, email);\n await this.storageService.save(Keys.userId, userId);\n await this.storageService.save(Keys.kdf, kdf);\n await this.storageService.save(Keys.kdfIterations, kdfIterations);\n }\n\n setSecurityStamp(stamp: string): Promise {\n this.stamp = stamp;\n return this.storageService.save(Keys.stamp, stamp);\n }\n\n setEmailVerified(emailVerified: boolean) {\n this.emailVerified = emailVerified;\n return this.storageService.save(Keys.emailVerified, emailVerified);\n }\n\n setForcePasswordReset(forcePasswordReset: boolean) {\n this.forcePasswordReset = forcePasswordReset;\n return this.storageService.save(Keys.forcePasswordReset, forcePasswordReset);\n }\n\n async getUserId(): Promise {\n if (this.userId == null) {\n this.userId = await this.storageService.get(Keys.userId);\n }\n return this.userId;\n }\n\n async getEmail(): Promise {\n if (this.email == null) {\n this.email = await this.storageService.get(Keys.userEmail);\n }\n return this.email;\n }\n\n async getSecurityStamp(): Promise {\n if (this.stamp == null) {\n this.stamp = await this.storageService.get(Keys.stamp);\n }\n return this.stamp;\n }\n\n async getKdf(): Promise {\n if (this.kdf == null) {\n this.kdf = await this.storageService.get(Keys.kdf);\n }\n return this.kdf;\n }\n\n async getKdfIterations(): Promise {\n if (this.kdfIterations == null) {\n this.kdfIterations = await this.storageService.get(Keys.kdfIterations);\n }\n return this.kdfIterations;\n }\n\n async getEmailVerified(): Promise {\n if (this.emailVerified == null) {\n this.emailVerified = await this.storageService.get(Keys.emailVerified);\n }\n return this.emailVerified;\n }\n\n async getForcePasswordReset(): Promise {\n if (this.forcePasswordReset == null) {\n this.forcePasswordReset = await this.storageService.get(Keys.forcePasswordReset);\n }\n return this.forcePasswordReset;\n }\n\n async clear(): Promise {\n const userId = await this.getUserId();\n\n await this.storageService.remove(Keys.userId);\n await this.storageService.remove(Keys.userEmail);\n await this.storageService.remove(Keys.stamp);\n await this.storageService.remove(Keys.kdf);\n await this.storageService.remove(Keys.kdfIterations);\n await this.storageService.remove(Keys.forcePasswordReset);\n await this.clearOrganizations(userId);\n await this.clearProviders(userId);\n\n this.userId = this.email = this.stamp = null;\n this.kdf = null;\n this.kdfIterations = null;\n }\n\n async isAuthenticated(): Promise {\n const token = await this.tokenService.getToken();\n if (token == null) {\n return false;\n }\n\n const userId = await this.getUserId();\n return userId != null;\n }\n\n async canAccessPremium(): Promise {\n const authed = await this.isAuthenticated();\n if (!authed) {\n return false;\n }\n\n const tokenPremium = this.tokenService.getPremium();\n if (tokenPremium) {\n return true;\n }\n\n const orgs = await this.getAllOrganizations();\n for (let i = 0; i < orgs.length; i++) {\n if (orgs[i].usersGetPremium && orgs[i].enabled) {\n return true;\n }\n }\n return false;\n }\n\n async canManageSponsorships(): Promise {\n const orgs = await this.getAllOrganizations();\n return orgs.some(o => o.familySponsorshipAvailable || o.familySponsorshipFriendlyName !== null);\n }\n\n async getOrganization(id: string): Promise {\n const userId = await this.getUserId();\n const organizations = await this.storageService.get<{ [id: string]: OrganizationData; }>(\n Keys.organizationsPrefix + userId);\n if (organizations == null || !organizations.hasOwnProperty(id)) {\n return null;\n }\n\n return new Organization(organizations[id]);\n }\n\n async getOrganizationByIdentifier(identifier: string): Promise {\n const organizations = await this.getAllOrganizations();\n if (organizations == null || organizations.length === 0) {\n return null;\n }\n\n return organizations.find(o => o.identifier === identifier);\n }\n\n async getAllOrganizations(): Promise {\n const userId = await this.getUserId();\n const organizations = await this.storageService.get<{ [id: string]: OrganizationData; }>(\n Keys.organizationsPrefix + userId);\n const response: Organization[] = [];\n for (const id in organizations) {\n if (organizations.hasOwnProperty(id) && !organizations[id].isProviderUser) {\n response.push(new Organization(organizations[id]));\n }\n }\n return response;\n }\n\n async replaceOrganizations(organizations: { [id: string]: OrganizationData; }): Promise {\n const userId = await this.getUserId();\n await this.storageService.save(Keys.organizationsPrefix + userId, organizations);\n }\n\n async clearOrganizations(userId: string): Promise {\n await this.storageService.remove(Keys.organizationsPrefix + userId);\n }\n\n async getProvider(id: string): Promise {\n const userId = await this.getUserId();\n const providers = await this.storageService.get<{ [id: string]: ProviderData; }>(\n Keys.providersPrefix + userId);\n if (providers == null || !providers.hasOwnProperty(id)) {\n return null;\n }\n\n return new Provider(providers[id]);\n }\n\n async getAllProviders(): Promise {\n const userId = await this.getUserId();\n const providers = await this.storageService.get<{ [id: string]: ProviderData; }>(\n Keys.providersPrefix + userId);\n const response: Provider[] = [];\n for (const id in providers) {\n if (providers.hasOwnProperty(id)) {\n response.push(new Provider(providers[id]));\n }\n }\n return response;\n }\n\n async replaceProviders(providers: { [id: string]: ProviderData; }): Promise {\n const userId = await this.getUserId();\n await this.storageService.save(Keys.providersPrefix + userId, providers);\n }\n\n async clearProviders(userId: string): Promise {\n await this.storageService.remove(Keys.providersPrefix + userId);\n }\n}\n","import { ProviderUserStatusType } from '../../enums/providerUserStatusType';\nimport { ProviderUserType } from '../../enums/providerUserType';\nimport { ProviderData } from '../data/providerData';\n\nexport class Provider {\n id: string;\n name: string;\n status: ProviderUserStatusType;\n type: ProviderUserType;\n enabled: boolean;\n userId: string;\n useEvents: boolean;\n\n constructor(obj?: ProviderData) {\n if (obj == null) {\n return;\n }\n\n this.id = obj.id;\n this.name = obj.name;\n this.status = obj.status;\n this.type = obj.type;\n this.enabled = obj.enabled;\n this.userId = obj.userId;\n this.useEvents = obj.useEvents;\n }\n\n get canAccess() {\n if (this.isProviderAdmin) {\n return true;\n }\n return this.enabled && this.status === ProviderUserStatusType.Confirmed;\n }\n\n get canCreateOrganizations() {\n return this.enabled && this.isProviderAdmin;\n }\n\n get canManageUsers() {\n return this.isProviderAdmin;\n }\n\n get canAccessEventLogs() {\n return this.isProviderAdmin;\n }\n\n get isProviderAdmin() {\n return this.type === ProviderUserType.ProviderAdmin;\n }\n}\n","export enum ProviderUserStatusType {\n Invited = 0,\n Accepted = 1,\n Confirmed = 2,\n}\n","export enum ProviderUserType {\n ProviderAdmin = 0,\n ServiceUser = 1,\n}\n","import { UserVerificationService as UserVerificationServiceAbstraction } from '../abstractions/userVerification.service';\n\nimport { ApiService } from '../abstractions/api.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { I18nService } from '../abstractions/i18n.service';\n\nimport { VerificationType } from '../enums/verificationType';\n\nimport { VerifyOTPRequest } from '../models/request/account/verifyOTPRequest';\nimport { SecretVerificationRequest } from '../models/request/secretVerificationRequest';\n\nimport { Verification } from '../types/verification';\n\nexport class UserVerificationService implements UserVerificationServiceAbstraction {\n constructor(private cryptoService: CryptoService, private i18nService: I18nService,\n private apiService: ApiService) { }\n\n async buildRequest(verification: Verification,\n requestClass?: new () => T, alreadyHashed?: boolean) {\n this.validateInput(verification);\n\n const request = requestClass != null\n ? new requestClass()\n : new SecretVerificationRequest() as T;\n\n if (verification.type === VerificationType.OTP) {\n request.otp = verification.secret;\n } else {\n request.masterPasswordHash = alreadyHashed\n ? verification.secret\n : await this.cryptoService.hashPassword(verification.secret, null);\n }\n\n return request;\n }\n\n async verifyUser(verification: Verification): Promise {\n this.validateInput(verification);\n\n if (verification.type === VerificationType.OTP) {\n const request = new VerifyOTPRequest(verification.secret);\n try {\n await this.apiService.postAccountVerifyOTP(request);\n } catch (e) {\n throw new Error(this.i18nService.t('invalidVerificationCode'));\n }\n } else {\n const passwordValid = await this.cryptoService.compareAndUpdateKeyHash(verification.secret, null);\n if (!passwordValid) {\n throw new Error(this.i18nService.t('invalidMasterPassword'));\n }\n }\n return true;\n }\n\n async requestOTP() {\n await this.apiService.postAccountRequestOTP();\n }\n\n private validateInput(verification: Verification) {\n if (verification?.secret == null || verification.secret === '') {\n if (verification.type === VerificationType.OTP) {\n throw new Error(this.i18nService.t('verificationCodeRequired'));\n } else {\n throw new Error(this.i18nService.t('masterPassRequired'));\n }\n }\n }\n}\n","export class VerifyOTPRequest {\n OTP: string;\n\n constructor(OTP: string) {\n this.OTP = OTP;\n }\n}\n","import { ConstantsService } from './constants.service';\n\nimport { CipherService } from '../abstractions/cipher.service';\nimport { CollectionService } from '../abstractions/collection.service';\nimport { CryptoService } from '../abstractions/crypto.service';\nimport { FolderService } from '../abstractions/folder.service';\nimport { KeyConnectorService } from '../abstractions/keyConnector.service';\nimport { MessagingService } from '../abstractions/messaging.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\nimport { PolicyService } from '../abstractions/policy.service';\nimport { SearchService } from '../abstractions/search.service';\nimport { StorageService } from '../abstractions/storage.service';\nimport { TokenService } from '../abstractions/token.service';\nimport { UserService } from '../abstractions/user.service';\nimport { VaultTimeoutService as VaultTimeoutServiceAbstraction } from '../abstractions/vaultTimeout.service';\n\nimport { PolicyType } from '../enums/policyType';\nimport { EncString } from '../models/domain/encString';\n\nexport class VaultTimeoutService implements VaultTimeoutServiceAbstraction {\n pinProtectedKey: EncString = null;\n biometricLocked: boolean = true;\n everBeenUnlocked: boolean = false;\n\n private inited = false;\n\n constructor(private cipherService: CipherService, private folderService: FolderService,\n private collectionService: CollectionService, private cryptoService: CryptoService,\n protected platformUtilsService: PlatformUtilsService, private storageService: StorageService,\n private messagingService: MessagingService, private searchService: SearchService,\n private userService: UserService, private tokenService: TokenService, private policyService: PolicyService,\n private keyConnectorService: KeyConnectorService,\n private lockedCallback: () => Promise = null, private loggedOutCallback: () => Promise = null) {\n }\n\n init(checkOnInterval: boolean) {\n if (this.inited) {\n return;\n }\n\n this.inited = true;\n if (checkOnInterval) {\n this.startCheck();\n }\n }\n\n startCheck() {\n this.checkVaultTimeout();\n setInterval(() => this.checkVaultTimeout(), 10 * 1000); // check every 10 seconds\n }\n\n // Keys aren't stored for a device that is locked or logged out.\n async isLocked(): Promise {\n // Handle never lock startup situation\n if (await this.cryptoService.hasKeyStored('auto') && !this.everBeenUnlocked) {\n await this.cryptoService.getKey('auto');\n }\n\n return !this.cryptoService.hasKeyInMemory();\n }\n\n async checkVaultTimeout(): Promise {\n if (await this.platformUtilsService.isViewOpen()) {\n // Do not lock\n return;\n }\n\n // \"is logged out check\" - similar to isLocked, below\n const authed = await this.userService.isAuthenticated();\n if (!authed) {\n return;\n }\n\n if (await this.isLocked()) {\n return;\n }\n\n const vaultTimeout = await this.getVaultTimeout();\n if (vaultTimeout == null || vaultTimeout < 0) {\n return;\n }\n\n const lastActive = await this.storageService.get(ConstantsService.lastActiveKey);\n if (lastActive == null) {\n return;\n }\n\n const vaultTimeoutSeconds = vaultTimeout * 60;\n const diffSeconds = ((new Date()).getTime() - lastActive) / 1000;\n if (diffSeconds >= vaultTimeoutSeconds) {\n // Pivot based on the saved vault timeout action\n const timeoutAction = await this.storageService.get(ConstantsService.vaultTimeoutActionKey);\n timeoutAction === 'logOut' ? await this.logOut() : await this.lock(true);\n }\n }\n\n async lock(allowSoftLock = false): Promise {\n const authed = await this.userService.isAuthenticated();\n if (!authed) {\n return;\n }\n\n if (await this.keyConnectorService.getUsesKeyConnector()) {\n const pinSet = await this.isPinLockSet();\n const pinLock = (pinSet[0] && this.pinProtectedKey != null) || pinSet[1];\n\n if (!pinLock && !await this.isBiometricLockSet()) {\n await this.logOut();\n }\n }\n\n this.biometricLocked = true;\n this.everBeenUnlocked = true;\n await this.cryptoService.clearKey(false);\n await this.cryptoService.clearOrgKeys(true);\n await this.cryptoService.clearKeyPair(true);\n await this.cryptoService.clearEncKey(true);\n\n this.folderService.clearCache();\n this.cipherService.clearCache();\n this.collectionService.clearCache();\n this.searchService.clearIndex();\n this.messagingService.send('locked');\n if (this.lockedCallback != null) {\n await this.lockedCallback();\n }\n }\n\n async logOut(): Promise {\n if (this.loggedOutCallback != null) {\n await this.loggedOutCallback();\n }\n }\n\n async setVaultTimeoutOptions(timeout: number, action: string): Promise {\n await this.storageService.save(ConstantsService.vaultTimeoutKey, timeout);\n await this.storageService.save(ConstantsService.vaultTimeoutActionKey, action);\n await this.cryptoService.toggleKey();\n await this.tokenService.toggleTokens();\n }\n\n async isPinLockSet(): Promise<[boolean, boolean]> {\n const protectedPin = await this.storageService.get(ConstantsService.protectedPin);\n const pinProtectedKey = await this.storageService.get(ConstantsService.pinProtectedKey);\n return [protectedPin != null, pinProtectedKey != null];\n }\n\n async isBiometricLockSet(): Promise {\n return await this.storageService.get(ConstantsService.biometricUnlockKey);\n }\n\n async getVaultTimeout(): Promise {\n const vaultTimeout = await this.storageService.get(ConstantsService.vaultTimeoutKey);\n\n if (await this.policyService.policyAppliesToUser(PolicyType.MaximumVaultTimeout)) {\n const policy = await this.policyService.getAll(PolicyType.MaximumVaultTimeout);\n // Remove negative values, and ensure it's smaller than maximum allowed value according to policy\n let timeout = Math.min(vaultTimeout, policy[0].data.minutes);\n\n if (vaultTimeout == null || timeout < 0) {\n timeout = policy[0].data.minutes;\n }\n\n // We really shouldn't need to set the value here, but multiple services relies on this value being correct.\n if (vaultTimeout !== timeout) {\n await this.storageService.save(ConstantsService.vaultTimeoutKey, timeout);\n }\n\n return timeout;\n }\n\n return vaultTimeout;\n }\n\n clear(): Promise {\n this.everBeenUnlocked = false;\n this.pinProtectedKey = null;\n return this.storageService.remove(ConstantsService.protectedPin);\n }\n}\n","import * as forge from 'node-forge';\n\nimport { CryptoFunctionService } from '../abstractions/cryptoFunction.service';\nimport { PlatformUtilsService } from '../abstractions/platformUtils.service';\n\nimport { Utils } from '../misc/utils';\n\nimport { DecryptParameters } from '../models/domain/decryptParameters';\nimport { SymmetricCryptoKey } from '../models/domain/symmetricCryptoKey';\n\nexport class WebCryptoFunctionService implements CryptoFunctionService {\n private crypto: Crypto;\n private subtle: SubtleCrypto;\n private isIE: boolean;\n private isOldSafari: boolean;\n\n constructor(private win: Window, private platformUtilsService: PlatformUtilsService) {\n this.crypto = typeof win.crypto !== 'undefined' ? win.crypto : null;\n this.subtle = (!!this.crypto && typeof win.crypto.subtle !== 'undefined') ? win.crypto.subtle : null;\n this.isIE = platformUtilsService.isIE();\n const ua = win.navigator.userAgent;\n this.isOldSafari = platformUtilsService.isSafari() &&\n (ua.indexOf(' Version/10.') > -1 || ua.indexOf(' Version/9.') > -1);\n }\n\n async pbkdf2(password: string | ArrayBuffer, salt: string | ArrayBuffer, algorithm: 'sha256' | 'sha512',\n iterations: number): Promise {\n if (this.isIE || this.isOldSafari) {\n const forgeLen = algorithm === 'sha256' ? 32 : 64;\n const passwordBytes = this.toByteString(password);\n const saltBytes = this.toByteString(salt);\n const derivedKeyBytes = (forge as any).pbkdf2(passwordBytes, saltBytes, iterations, forgeLen, algorithm);\n return Utils.fromByteStringToArray(derivedKeyBytes).buffer;\n }\n\n const wcLen = algorithm === 'sha256' ? 256 : 512;\n const passwordBuf = this.toBuf(password);\n const saltBuf = this.toBuf(salt);\n\n const pbkdf2Params: Pbkdf2Params = {\n name: 'PBKDF2',\n salt: saltBuf,\n iterations: iterations,\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n\n const impKey = await this.subtle.importKey('raw', passwordBuf, { name: 'PBKDF2' } as any,\n false, ['deriveBits']);\n return await this.subtle.deriveBits(pbkdf2Params, impKey, wcLen);\n }\n\n async hkdf(ikm: ArrayBuffer, salt: string | ArrayBuffer, info: string | ArrayBuffer,\n outputByteSize: number, algorithm: 'sha256' | 'sha512'): Promise {\n const saltBuf = this.toBuf(salt);\n const infoBuf = this.toBuf(info);\n\n const hkdfParams: HkdfParams = {\n name: 'HKDF',\n salt: saltBuf,\n info: infoBuf,\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n\n const impKey = await this.subtle.importKey('raw', ikm, { name: 'HKDF' } as any,\n false, ['deriveBits']);\n return await this.subtle.deriveBits(hkdfParams as any, impKey, outputByteSize * 8);\n }\n\n // ref: https://tools.ietf.org/html/rfc5869\n async hkdfExpand(prk: ArrayBuffer, info: string | ArrayBuffer, outputByteSize: number,\n algorithm: 'sha256' | 'sha512'): Promise {\n const hashLen = algorithm === 'sha256' ? 32 : 64;\n if (outputByteSize > 255 * hashLen) {\n throw new Error('outputByteSize is too large.');\n }\n const prkArr = new Uint8Array(prk);\n if (prkArr.length < hashLen) {\n throw new Error('prk is too small.');\n }\n const infoBuf = this.toBuf(info);\n const infoArr = new Uint8Array(infoBuf);\n let runningOkmLength = 0;\n let previousT = new Uint8Array(0);\n const n = Math.ceil(outputByteSize / hashLen);\n const okm = new Uint8Array(n * hashLen);\n for (let i = 0; i < n; i++) {\n const t = new Uint8Array(previousT.length + infoArr.length + 1);\n t.set(previousT);\n t.set(infoArr, previousT.length);\n t.set([i + 1], t.length - 1);\n previousT = new Uint8Array(await this.hmac(t.buffer, prk, algorithm));\n okm.set(previousT, runningOkmLength);\n runningOkmLength += previousT.length;\n if (runningOkmLength >= outputByteSize) {\n break;\n }\n }\n return okm.slice(0, outputByteSize).buffer;\n }\n\n async hash(value: string | ArrayBuffer, algorithm: 'sha1' | 'sha256' | 'sha512' | 'md5'): Promise {\n if ((this.isIE && algorithm === 'sha1') || algorithm === 'md5') {\n const md = algorithm === 'md5' ? forge.md.md5.create() : forge.md.sha1.create();\n const valueBytes = this.toByteString(value);\n md.update(valueBytes, 'raw');\n return Utils.fromByteStringToArray(md.digest().data).buffer;\n }\n\n const valueBuf = this.toBuf(value);\n return await this.subtle.digest({ name: this.toWebCryptoAlgorithm(algorithm) }, valueBuf);\n }\n\n async hmac(value: ArrayBuffer, key: ArrayBuffer, algorithm: 'sha1' | 'sha256' | 'sha512'): Promise {\n if (this.isIE && algorithm === 'sha512') {\n const hmac = (forge as any).hmac.create();\n const keyBytes = this.toByteString(key);\n const valueBytes = this.toByteString(value);\n hmac.start(algorithm, keyBytes);\n hmac.update(valueBytes, 'raw');\n return Utils.fromByteStringToArray(hmac.digest().data).buffer;\n }\n\n const signingAlgorithm = {\n name: 'HMAC',\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n\n const impKey = await this.subtle.importKey('raw', key, signingAlgorithm, false, ['sign']);\n return await this.subtle.sign(signingAlgorithm, impKey, value);\n }\n\n // Safely compare two values in a way that protects against timing attacks (Double HMAC Verification).\n // ref: https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2011/february/double-hmac-verification/\n // ref: https://paragonie.com/blog/2015/11/preventing-timing-attacks-on-string-comparison-with-double-hmac-strategy\n async compare(a: ArrayBuffer, b: ArrayBuffer): Promise {\n const macKey = await this.randomBytes(32);\n const signingAlgorithm = {\n name: 'HMAC',\n hash: { name: 'SHA-256' },\n };\n const impKey = await this.subtle.importKey('raw', macKey, signingAlgorithm, false, ['sign']);\n const mac1 = await this.subtle.sign(signingAlgorithm, impKey, a);\n const mac2 = await this.subtle.sign(signingAlgorithm, impKey, b);\n\n if (mac1.byteLength !== mac2.byteLength) {\n return false;\n }\n\n const arr1 = new Uint8Array(mac1);\n const arr2 = new Uint8Array(mac2);\n for (let i = 0; i < arr2.length; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n hmacFast(value: string, key: string, algorithm: 'sha1' | 'sha256' | 'sha512'): Promise {\n const hmac = (forge as any).hmac.create();\n hmac.start(algorithm, key);\n hmac.update(value);\n const bytes = hmac.digest().getBytes();\n return Promise.resolve(bytes);\n }\n\n async compareFast(a: string, b: string): Promise {\n const rand = await this.randomBytes(32);\n const bytes = new Uint32Array(rand);\n const buffer = forge.util.createBuffer();\n for (let i = 0; i < bytes.length; i++) {\n buffer.putInt32(bytes[i]);\n }\n const macKey = buffer.getBytes();\n\n const hmac = (forge as any).hmac.create();\n hmac.start('sha256', macKey);\n hmac.update(a);\n const mac1 = hmac.digest().getBytes();\n\n hmac.start(null, null);\n hmac.update(b);\n const mac2 = hmac.digest().getBytes();\n\n const equals = mac1 === mac2;\n return equals;\n }\n\n async aesEncrypt(data: ArrayBuffer, iv: ArrayBuffer, key: ArrayBuffer): Promise {\n const impKey = await this.subtle.importKey('raw', key, { name: 'AES-CBC' } as any, false, ['encrypt']);\n return await this.subtle.encrypt({ name: 'AES-CBC', iv: iv }, impKey, data);\n }\n\n aesDecryptFastParameters(data: string, iv: string, mac: string, key: SymmetricCryptoKey):\n DecryptParameters {\n const p = new DecryptParameters();\n if (key.meta != null) {\n p.encKey = key.meta.encKeyByteString;\n p.macKey = key.meta.macKeyByteString;\n }\n\n if (p.encKey == null) {\n p.encKey = forge.util.decode64(key.encKeyB64);\n }\n p.data = forge.util.decode64(data);\n p.iv = forge.util.decode64(iv);\n p.macData = p.iv + p.data;\n if (p.macKey == null && key.macKeyB64 != null) {\n p.macKey = forge.util.decode64(key.macKeyB64);\n }\n if (mac != null) {\n p.mac = forge.util.decode64(mac);\n }\n\n // cache byte string keys for later\n if (key.meta == null) {\n key.meta = {};\n }\n if (key.meta.encKeyByteString == null) {\n key.meta.encKeyByteString = p.encKey;\n }\n if (p.macKey != null && key.meta.macKeyByteString == null) {\n key.meta.macKeyByteString = p.macKey;\n }\n\n return p;\n }\n\n aesDecryptFast(parameters: DecryptParameters): Promise {\n const dataBuffer = (forge as any).util.createBuffer(parameters.data);\n const decipher = (forge as any).cipher.createDecipher('AES-CBC', parameters.encKey);\n decipher.start({ iv: parameters.iv });\n decipher.update(dataBuffer);\n decipher.finish();\n const val = decipher.output.toString('utf8');\n return Promise.resolve(val);\n }\n\n async aesDecrypt(data: ArrayBuffer, iv: ArrayBuffer, key: ArrayBuffer): Promise {\n const impKey = await this.subtle.importKey('raw', key, { name: 'AES-CBC' } as any, false, ['decrypt']);\n return await this.subtle.decrypt({ name: 'AES-CBC', iv: iv }, impKey, data);\n }\n\n async rsaEncrypt(data: ArrayBuffer, publicKey: ArrayBuffer, algorithm: 'sha1' | 'sha256'): Promise {\n // Note: Edge browser requires that we specify name and hash for both key import and decrypt.\n // We cannot use the proper types here.\n const rsaParams = {\n name: 'RSA-OAEP',\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n const impKey = await this.subtle.importKey('spki', publicKey, rsaParams, false, ['encrypt']);\n return await this.subtle.encrypt(rsaParams, impKey, data);\n }\n\n async rsaDecrypt(data: ArrayBuffer, privateKey: ArrayBuffer, algorithm: 'sha1' | 'sha256'): Promise {\n // Note: Edge browser requires that we specify name and hash for both key import and decrypt.\n // We cannot use the proper types here.\n const rsaParams = {\n name: 'RSA-OAEP',\n hash: { name: this.toWebCryptoAlgorithm(algorithm) },\n };\n const impKey = await this.subtle.importKey('pkcs8', privateKey, rsaParams, false, ['decrypt']);\n return await this.subtle.decrypt(rsaParams, impKey, data);\n }\n\n async rsaExtractPublicKey(privateKey: ArrayBuffer): Promise {\n const rsaParams = {\n name: 'RSA-OAEP',\n // Have to specify some algorithm\n hash: { name: this.toWebCryptoAlgorithm('sha1') },\n };\n const impPrivateKey = await this.subtle.importKey('pkcs8', privateKey, rsaParams, true, ['decrypt']);\n const jwkPrivateKey = await this.subtle.exportKey('jwk', impPrivateKey);\n const jwkPublicKeyParams = {\n kty: 'RSA',\n e: jwkPrivateKey.e,\n n: jwkPrivateKey.n,\n alg: 'RSA-OAEP',\n ext: true,\n };\n const impPublicKey = await this.subtle.importKey('jwk', jwkPublicKeyParams, rsaParams, true, ['encrypt']);\n return await this.subtle.exportKey('spki', impPublicKey);\n }\n\n async rsaGenerateKeyPair(length: 1024 | 2048 | 4096): Promise<[ArrayBuffer, ArrayBuffer]> {\n const rsaParams = {\n name: 'RSA-OAEP',\n modulusLength: length,\n publicExponent: new Uint8Array([0x01, 0x00, 0x01]), // 65537\n // Have to specify some algorithm\n hash: { name: this.toWebCryptoAlgorithm('sha1') },\n };\n const keyPair = (await this.subtle.generateKey(rsaParams, true, ['encrypt', 'decrypt'])) as CryptoKeyPair;\n const publicKey = await this.subtle.exportKey('spki', keyPair.publicKey);\n const privateKey = await this.subtle.exportKey('pkcs8', keyPair.privateKey);\n return [publicKey, privateKey];\n }\n\n randomBytes(length: number): Promise {\n const arr = new Uint8Array(length);\n this.crypto.getRandomValues(arr);\n return Promise.resolve(arr.buffer);\n }\n\n private toBuf(value: string | ArrayBuffer): ArrayBuffer {\n let buf: ArrayBuffer;\n if (typeof (value) === 'string') {\n buf = Utils.fromUtf8ToArray(value).buffer;\n } else {\n buf = value;\n }\n return buf;\n }\n\n private toByteString(value: string | ArrayBuffer): string {\n let bytes: string;\n if (typeof (value) === 'string') {\n bytes = forge.util.encodeUtf8(value);\n } else {\n bytes = Utils.fromBufferToByteString(value);\n }\n return bytes;\n }\n\n private toWebCryptoAlgorithm(algorithm: 'sha1' | 'sha256' | 'sha512' | 'md5'): string {\n if (algorithm === 'md5') {\n throw new Error('MD5 is not supported in WebCrypto.');\n }\n return algorithm === 'sha1' ? 'SHA-1' : algorithm === 'sha256' ? 'SHA-256' : 'SHA-512';\n }\n}\n","export class DecryptParameters {\n encKey: T;\n data: T;\n iv: T;\n macKey: T;\n mac: T;\n macData: T;\n}\n","import { EncArrayBuffer } from '../models/domain/encArrayBuffer';\nimport { EncString } from '../models/domain/encString';\nimport { AttachmentUploadDataResponse } from '../models/response/attachmentUploadDataResponse';\nimport { SendFileUploadDataResponse } from '../models/response/sendFileUploadDataResponse';\n\nexport abstract class FileUploadService {\n uploadSendFile: (uploadData: SendFileUploadDataResponse, fileName: EncString,\n encryptedFileData: EncArrayBuffer) => Promise;\n uploadCipherAttachment: (admin: boolean, uploadData: AttachmentUploadDataResponse, fileName: EncString,\n encryptedFileData: EncArrayBuffer) => Promise;\n}\n","import {\n ApplicationRef,\n ComponentFactoryResolver,\n Injectable,\n Injector,\n} from '@angular/core';\nimport * as jq from 'jquery';\nimport { first } from 'rxjs/operators';\n\nimport { MessagingService } from 'jslib-common/abstractions/messaging.service';\n\nimport { ModalRef } from 'jslib-angular/components/modal/modal.ref';\nimport { ModalService as BaseModalService } from 'jslib-angular/services/modal.service';\n\nimport { Utils } from 'jslib-common/misc/utils';\n\n@Injectable()\nexport class ModalService extends BaseModalService {\n el: any = null;\n modalOpen: boolean = false;\n\n constructor(componentFactoryResolver: ComponentFactoryResolver, applicationRef: ApplicationRef,\n injector: Injector, private messagingService: MessagingService) {\n super(componentFactoryResolver, applicationRef, injector);\n }\n\n protected setupHandlers(modalRef: ModalRef) {\n modalRef.onCreated.pipe(first()).subscribe(() => {\n const modals = Array.from(document.querySelectorAll('.modal'));\n if (modals.length > 0) {\n this.el = jq(modals[0]);\n this.el.modal('show');\n\n this.el.on('show.bs.modal', () => {\n modalRef.show();\n this.messagingService.send('modalShow');\n });\n this.el.on('shown.bs.modal', () => {\n modalRef.shown();\n this.messagingService.send('modalShown');\n if (!Utils.isMobileBrowser) {\n this.el.find('*[appAutoFocus]').focus();\n }\n });\n this.el.on('hide.bs.modal', () => {\n this.messagingService.send('modalClose');\n });\n this.el.on('hidden.bs.modal', () => {\n modalRef.closed();\n this.messagingService.send('modalClosed');\n });\n }\n });\n\n modalRef.onClose.pipe(first()).subscribe(() => {\n if (this.el != null) {\n this.el.modal('hide');\n }\n });\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nconst routes: Routes = [\n { path: '**', redirectTo: '' },\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class WildcardRoutingModule { }\n"],"sourceRoot":""}