ngx-firebase 1.1.13 → 22.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +51 -11
- package/fesm2022/ngx-firebase.mjs +158 -0
- package/fesm2022/ngx-firebase.mjs.map +1 -0
- package/package.json +40 -30
- package/types/ngx-firebase.d.ts +55 -0
- package/bundles/ngx-firebase-capacitor.umd.js +0 -763
- package/bundles/ngx-firebase-capacitor.umd.js.map +0 -1
- package/bundles/ngx-firebase-capacitor.umd.min.js +0 -16
- package/bundles/ngx-firebase-capacitor.umd.min.js.map +0 -1
- package/bundles/ngx-firebase-iap.umd.js +0 -718
- package/bundles/ngx-firebase-iap.umd.js.map +0 -1
- package/bundles/ngx-firebase-iap.umd.min.js +0 -2
- package/bundles/ngx-firebase-iap.umd.min.js.map +0 -1
- package/bundles/ngx-firebase-ionic-auth-ui.umd.js +0 -2116
- package/bundles/ngx-firebase-ionic-auth-ui.umd.js.map +0 -1
- package/bundles/ngx-firebase-ionic-auth-ui.umd.min.js +0 -16
- package/bundles/ngx-firebase-ionic-auth-ui.umd.min.js.map +0 -1
- package/bundles/ngx-firebase-ionic.umd.js +0 -979
- package/bundles/ngx-firebase-ionic.umd.js.map +0 -1
- package/bundles/ngx-firebase-ionic.umd.min.js +0 -16
- package/bundles/ngx-firebase-ionic.umd.min.js.map +0 -1
- package/bundles/ngx-firebase-testing.umd.js +0 -801
- package/bundles/ngx-firebase-testing.umd.js.map +0 -1
- package/bundles/ngx-firebase-testing.umd.min.js +0 -2
- package/bundles/ngx-firebase-testing.umd.min.js.map +0 -1
- package/bundles/ngx-firebase.umd.js +0 -2299
- package/bundles/ngx-firebase.umd.js.map +0 -1
- package/bundles/ngx-firebase.umd.min.js +0 -2
- package/bundles/ngx-firebase.umd.min.js.map +0 -1
- package/capacitor/capacitor.module.d.ts +0 -9
- package/capacitor/interfaces/config.d.ts +0 -12
- package/capacitor/interfaces/index.d.ts +0 -1
- package/capacitor/ngx-firebase-capacitor.d.ts +0 -5
- package/capacitor/ngx-firebase-capacitor.metadata.json +0 -1
- package/capacitor/package.json +0 -25
- package/capacitor/public-api.d.ts +0 -3
- package/capacitor/services/analytics-firebase-capacitor.service.d.ts +0 -9
- package/capacitor/services/crashlytics-firebase-capacitor.service.d.ts +0 -8
- package/capacitor/services/credential-factory-capacitor.service.d.ts +0 -18
- package/capacitor/services/index.d.ts +0 -3
- package/esm2015/capacitor/capacitor.module.js +0 -78
- package/esm2015/capacitor/interfaces/config.js +0 -3
- package/esm2015/capacitor/interfaces/index.js +0 -2
- package/esm2015/capacitor/ngx-firebase-capacitor.js +0 -6
- package/esm2015/capacitor/public-api.js +0 -4
- package/esm2015/capacitor/services/analytics-firebase-capacitor.service.js +0 -43
- package/esm2015/capacitor/services/crashlytics-firebase-capacitor.service.js +0 -40
- package/esm2015/capacitor/services/credential-factory-capacitor.service.js +0 -182
- package/esm2015/capacitor/services/index.js +0 -4
- package/esm2015/iap/iap.module.js +0 -32
- package/esm2015/iap/interfaces/index.js +0 -5
- package/esm2015/iap/ngx-firebase-iap.js +0 -5
- package/esm2015/iap/public-api.js +0 -5
- package/esm2015/iap/services/iap.service.js +0 -317
- package/esm2015/iap/tokens/index.js +0 -4
- package/esm2015/ionic/animations/index.js +0 -30
- package/esm2015/ionic/components/avatar/avatar.component.js +0 -98
- package/esm2015/ionic/components/avatar/index.js +0 -2
- package/esm2015/ionic/components/index.js +0 -3
- package/esm2015/ionic/components/popover-menu/index.js +0 -3
- package/esm2015/ionic/components/popover-menu/interface.js +0 -2
- package/esm2015/ionic/components/popover-menu/popover-menu.component.js +0 -34
- package/esm2015/ionic/ionic.module.js +0 -46
- package/esm2015/ionic/ngx-firebase-ionic.js +0 -5
- package/esm2015/ionic/public-api.js +0 -5
- package/esm2015/ionic/services/alerts-ionic.service.js +0 -107
- package/esm2015/ionic/services/index.js +0 -6
- package/esm2015/ionic/services/legality-dialog-ionic.service.js +0 -85
- package/esm2015/ionic/services/loading-ionic.service.js +0 -46
- package/esm2015/ionic/services/picker-ionic.service.js +0 -44
- package/esm2015/ionic/services/toast-ionic.service.js +0 -49
- package/esm2015/ionic-auth-ui/animations/index.js +0 -30
- package/esm2015/ionic-auth-ui/components/email-confirmation/email-confirmation.component.js +0 -99
- package/esm2015/ionic-auth-ui/components/email-field/email-field.component.js +0 -25
- package/esm2015/ionic-auth-ui/components/form-field/form-field.component.js +0 -82
- package/esm2015/ionic-auth-ui/components/index.js +0 -12
- package/esm2015/ionic-auth-ui/components/name-field/name-field.component.js +0 -30
- package/esm2015/ionic-auth-ui/components/or-divider/or-divider.component.js +0 -11
- package/esm2015/ionic-auth-ui/components/password-field/password-field.component.js +0 -138
- package/esm2015/ionic-auth-ui/components/password-field/passwordValidatorFunctions.js +0 -62
- package/esm2015/ionic-auth-ui/components/providers/providers.component.js +0 -70
- package/esm2015/ionic-auth-ui/components/reauthenticate/reauthenticate.component.js +0 -99
- package/esm2015/ionic-auth-ui/components/register/register.component.js +0 -142
- package/esm2015/ionic-auth-ui/components/register-with-email/register-with-email.component.js +0 -60
- package/esm2015/ionic-auth-ui/components/register-with-email-popover/register-with-email-popover.component.js +0 -26
- package/esm2015/ionic-auth-ui/components/signin/signin.component.js +0 -92
- package/esm2015/ionic-auth-ui/components/terms-field/terms-field.component.js +0 -99
- package/esm2015/ionic-auth-ui/components/user/user.component.js +0 -195
- package/esm2015/ionic-auth-ui/ionic-auth-ui.module.js +0 -92
- package/esm2015/ionic-auth-ui/ngx-firebase-ionic-auth-ui.js +0 -23
- package/esm2015/ionic-auth-ui/pages/index.js +0 -5
- package/esm2015/ionic-auth-ui/pages/register/index.js +0 -2
- package/esm2015/ionic-auth-ui/pages/register/register.page.js +0 -56
- package/esm2015/ionic-auth-ui/pages/signin/index.js +0 -2
- package/esm2015/ionic-auth-ui/pages/signin/signin.page.js +0 -78
- package/esm2015/ionic-auth-ui/pages/user/index.js +0 -2
- package/esm2015/ionic-auth-ui/pages/user/user.page.js +0 -11
- package/esm2015/ionic-auth-ui/pages/verifyemail/index.js +0 -2
- package/esm2015/ionic-auth-ui/pages/verifyemail/verifyemail.page.js +0 -85
- package/esm2015/ionic-auth-ui/public-api.js +0 -5
- package/esm2015/ngx-firebase.js +0 -6
- package/esm2015/public-api.js +0 -6
- package/esm2015/shared/guards/index.js +0 -3
- package/esm2015/shared/guards/logged-in.guard.js +0 -60
- package/esm2015/shared/guards/verify-email.guard.js +0 -41
- package/esm2015/shared/interfaces/accounts.enum.js +0 -9
- package/esm2015/shared/interfaces/authprovider.enum.js +0 -15
- package/esm2015/shared/interfaces/config.interface.js +0 -61
- package/esm2015/shared/interfaces/index.js +0 -8
- package/esm2015/shared/interfaces/main.interface.js +0 -7
- package/esm2015/shared/interfaces/providers.interface.js +0 -2
- package/esm2015/shared/interfaces/tokens.js +0 -19
- package/esm2015/shared/interfaces/ui-providers.interface.js +0 -2
- package/esm2015/shared/services/analytics.service.js +0 -24
- package/esm2015/shared/services/auth-process.service.js +0 -779
- package/esm2015/shared/services/crashlytics.service.js +0 -42
- package/esm2015/shared/services/device-info.service.js +0 -14
- package/esm2015/shared/services/firebase.service.js +0 -37
- package/esm2015/shared/services/firestore-sync.service.js +0 -60
- package/esm2015/shared/services/index.js +0 -10
- package/esm2015/shared/services/performance.service.js +0 -28
- package/esm2015/shared/services/remoteconfig.service.js +0 -49
- package/esm2015/shared/services/ui.service.js +0 -45
- package/esm2015/shared/shared.module.js +0 -175
- package/esm2015/shared/types/DisplayWidth.js +0 -9
- package/esm2015/shared/types/Location.js +0 -2
- package/esm2015/shared/types/ValueAccessorControlComponent.js +0 -85
- package/esm2015/shared/types/ValueAccessorValueComponent.js +0 -40
- package/esm2015/shared/types/index.js +0 -5
- package/esm2015/testing/fakeavatar.module.js +0 -22
- package/esm2015/testing/fakes/FakeAuthProcessService.js +0 -31
- package/esm2015/testing/fakes/FakeAvatarComponent.js +0 -13
- package/esm2015/testing/fakes/FakeFireService.js +0 -21
- package/esm2015/testing/fakes/FakeFirestoreSyncService.js +0 -11
- package/esm2015/testing/fakes/FakeIAPurchaseService.js +0 -11
- package/esm2015/testing/fakes/FakePickerService.js +0 -9
- package/esm2015/testing/fakes/FakeRemoteConfigService.js +0 -44
- package/esm2015/testing/fakes/FakeTranslateService.js +0 -21
- package/esm2015/testing/fakes/FakeUiService.js +0 -26
- package/esm2015/testing/fakes/angular-fire/FakeAngularFireAuth.js +0 -30
- package/esm2015/testing/fakes/angular-fire/FakeAngularFireFunctions.js +0 -17
- package/esm2015/testing/fakes/angular-fire/FakeAngularFirePerformance.js +0 -17
- package/esm2015/testing/fakes/angular-fire/FakeAngularFireStorage.js +0 -8
- package/esm2015/testing/fakes/angular-fire/FakeAngularFirestore.js +0 -8
- package/esm2015/testing/fakes/angular-fire/FakeUserCredential.js +0 -18
- package/esm2015/testing/fakes/index.js +0 -19
- package/esm2015/testing/ngx-firebase-testing.js +0 -6
- package/esm2015/testing/public-api.js +0 -5
- package/esm2015/testing/test.module.js +0 -66
- package/esm2015/testing/utils/index.js +0 -17
- package/esm2015/testing/utils/patchConsole.js +0 -14
- package/fesm2015/ngx-firebase-capacitor.js +0 -328
- package/fesm2015/ngx-firebase-capacitor.js.map +0 -1
- package/fesm2015/ngx-firebase-iap.js +0 -354
- package/fesm2015/ngx-firebase-iap.js.map +0 -1
- package/fesm2015/ngx-firebase-ionic-auth-ui.js +0 -1482
- package/fesm2015/ngx-firebase-ionic-auth-ui.js.map +0 -1
- package/fesm2015/ngx-firebase-ionic.js +0 -495
- package/fesm2015/ngx-firebase-ionic.js.map +0 -1
- package/fesm2015/ngx-firebase-testing.js +0 -388
- package/fesm2015/ngx-firebase-testing.js.map +0 -1
- package/fesm2015/ngx-firebase.js +0 -1509
- package/fesm2015/ngx-firebase.js.map +0 -1
- package/iap/iap.module.d.ts +0 -5
- package/iap/interfaces/index.d.ts +0 -11
- package/iap/ngx-firebase-iap.d.ts +0 -4
- package/iap/ngx-firebase-iap.metadata.json +0 -1
- package/iap/package.json +0 -23
- package/iap/public-api.d.ts +0 -4
- package/iap/services/iap.service.d.ts +0 -47
- package/iap/tokens/index.d.ts +0 -3
- package/ionic/animations/index.d.ts +0 -1
- package/ionic/components/avatar/avatar.component.d.ts +0 -27
- package/ionic/components/avatar/index.d.ts +0 -1
- package/ionic/components/index.d.ts +0 -2
- package/ionic/components/popover-menu/index.d.ts +0 -2
- package/ionic/components/popover-menu/interface.d.ts +0 -6
- package/ionic/components/popover-menu/popover-menu.component.d.ts +0 -10
- package/ionic/ionic.module.d.ts +0 -2
- package/ionic/ngx-firebase-ionic.d.ts +0 -4
- package/ionic/ngx-firebase-ionic.metadata.json +0 -1
- package/ionic/package.json +0 -30
- package/ionic/public-api.d.ts +0 -4
- package/ionic/services/alerts-ionic.service.d.ts +0 -13
- package/ionic/services/index.d.ts +0 -5
- package/ionic/services/legality-dialog-ionic.service.d.ts +0 -10
- package/ionic/services/loading-ionic.service.d.ts +0 -17
- package/ionic/services/picker-ionic.service.d.ts +0 -9
- package/ionic/services/toast-ionic.service.d.ts +0 -11
- package/ionic-auth-ui/animations/index.d.ts +0 -1
- package/ionic-auth-ui/components/email-confirmation/email-confirmation.component.d.ts +0 -31
- package/ionic-auth-ui/components/email-field/email-field.component.d.ts +0 -7
- package/ionic-auth-ui/components/form-field/form-field.component.d.ts +0 -28
- package/ionic-auth-ui/components/index.d.ts +0 -11
- package/ionic-auth-ui/components/name-field/name-field.component.d.ts +0 -8
- package/ionic-auth-ui/components/or-divider/or-divider.component.d.ts +0 -2
- package/ionic-auth-ui/components/password-field/password-field.component.d.ts +0 -34
- package/ionic-auth-ui/components/password-field/passwordValidatorFunctions.d.ts +0 -4
- package/ionic-auth-ui/components/providers/providers.component.d.ts +0 -26
- package/ionic-auth-ui/components/reauthenticate/reauthenticate.component.d.ts +0 -30
- package/ionic-auth-ui/components/register/register.component.d.ts +0 -26
- package/ionic-auth-ui/components/register-with-email/register-with-email.component.d.ts +0 -24
- package/ionic-auth-ui/components/register-with-email-popover/register-with-email-popover.component.d.ts +0 -7
- package/ionic-auth-ui/components/signin/signin.component.d.ts +0 -28
- package/ionic-auth-ui/components/terms-field/terms-field.component.d.ts +0 -27
- package/ionic-auth-ui/components/user/user.component.d.ts +0 -45
- package/ionic-auth-ui/ionic-auth-ui.module.d.ts +0 -32
- package/ionic-auth-ui/ngx-firebase-ionic-auth-ui.d.ts +0 -22
- package/ionic-auth-ui/ngx-firebase-ionic-auth-ui.metadata.json +0 -1
- package/ionic-auth-ui/package.json +0 -30
- package/ionic-auth-ui/pages/index.d.ts +0 -4
- package/ionic-auth-ui/pages/register/index.d.ts +0 -1
- package/ionic-auth-ui/pages/register/register.page.d.ts +0 -16
- package/ionic-auth-ui/pages/signin/index.d.ts +0 -1
- package/ionic-auth-ui/pages/signin/signin.page.d.ts +0 -22
- package/ionic-auth-ui/pages/user/index.d.ts +0 -1
- package/ionic-auth-ui/pages/user/user.page.d.ts +0 -3
- package/ionic-auth-ui/pages/verifyemail/index.d.ts +0 -1
- package/ionic-auth-ui/pages/verifyemail/verifyemail.page.d.ts +0 -19
- package/ionic-auth-ui/public-api.d.ts +0 -4
- package/ngx-firebase.d.ts +0 -5
- package/ngx-firebase.metadata.json +0 -1
- package/public-api.d.ts +0 -5
- package/shared/guards/index.d.ts +0 -2
- package/shared/guards/logged-in.guard.d.ts +0 -13
- package/shared/guards/verify-email.guard.d.ts +0 -11
- package/shared/interfaces/accounts.enum.d.ts +0 -7
- package/shared/interfaces/authprovider.enum.d.ts +0 -13
- package/shared/interfaces/config.interface.d.ts +0 -63
- package/shared/interfaces/index.d.ts +0 -7
- package/shared/interfaces/main.interface.d.ts +0 -13
- package/shared/interfaces/providers.interface.d.ts +0 -70
- package/shared/interfaces/tokens.d.ts +0 -16
- package/shared/interfaces/ui-providers.interface.d.ts +0 -66
- package/shared/services/analytics.service.d.ts +0 -10
- package/shared/services/auth-process.service.d.ts +0 -197
- package/shared/services/crashlytics.service.d.ts +0 -11
- package/shared/services/device-info.service.d.ts +0 -3
- package/shared/services/firebase.service.d.ts +0 -16
- package/shared/services/firestore-sync.service.d.ts +0 -16
- package/shared/services/index.d.ts +0 -9
- package/shared/services/performance.service.d.ts +0 -12
- package/shared/services/remoteconfig.service.d.ts +0 -18
- package/shared/services/ui.service.d.ts +0 -22
- package/shared/shared.module.d.ts +0 -14
- package/shared/types/DisplayWidth.d.ts +0 -7
- package/shared/types/Location.d.ts +0 -8
- package/shared/types/ValueAccessorControlComponent.d.ts +0 -27
- package/shared/types/ValueAccessorValueComponent.d.ts +0 -19
- package/shared/types/index.d.ts +0 -4
- package/testing/fakeavatar.module.d.ts +0 -2
- package/testing/fakes/FakeAuthProcessService.d.ts +0 -28
- package/testing/fakes/FakeAvatarComponent.d.ts +0 -3
- package/testing/fakes/FakeFireService.d.ts +0 -20
- package/testing/fakes/FakeFirestoreSyncService.d.ts +0 -9
- package/testing/fakes/FakeIAPurchaseService.d.ts +0 -9
- package/testing/fakes/FakePickerService.d.ts +0 -6
- package/testing/fakes/FakeRemoteConfigService.d.ts +0 -19
- package/testing/fakes/FakeTranslateService.d.ts +0 -15
- package/testing/fakes/FakeUiService.d.ts +0 -25
- package/testing/fakes/angular-fire/FakeAngularFireAuth.d.ts +0 -52
- package/testing/fakes/angular-fire/FakeAngularFireFunctions.d.ts +0 -11
- package/testing/fakes/angular-fire/FakeAngularFirePerformance.d.ts +0 -10
- package/testing/fakes/angular-fire/FakeAngularFireStorage.d.ts +0 -5
- package/testing/fakes/angular-fire/FakeAngularFirestore.d.ts +0 -5
- package/testing/fakes/angular-fire/FakeUserCredential.d.ts +0 -9
- package/testing/fakes/index.d.ts +0 -16
- package/testing/ngx-firebase-testing.d.ts +0 -5
- package/testing/ngx-firebase-testing.metadata.json +0 -1
- package/testing/package.json +0 -29
- package/testing/public-api.d.ts +0 -4
- package/testing/test.module.d.ts +0 -4
- package/testing/utils/index.d.ts +0 -5
- package/testing/utils/patchConsole.d.ts +0 -4
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-firebase.js","sources":["../../../projects/ngx-firebase/src/shared/services/device-info.service.ts","../../../projects/ngx-firebase/src/shared/services/remoteconfig.service.ts","../../../projects/ngx-firebase/src/shared/interfaces/authprovider.enum.ts","../../../projects/ngx-firebase/src/shared/interfaces/accounts.enum.ts","../../../projects/ngx-firebase/src/shared/interfaces/config.interface.ts","../../../projects/ngx-firebase/src/shared/interfaces/main.interface.ts","../../../projects/ngx-firebase/src/shared/interfaces/tokens.ts","../../../projects/ngx-firebase/src/shared/services/analytics.service.ts","../../../projects/ngx-firebase/src/shared/services/crashlytics.service.ts","../../../projects/ngx-firebase/src/shared/services/performance.service.ts","../../../projects/ngx-firebase/src/shared/services/firebase.service.ts","../../../projects/ngx-firebase/src/shared/services/firestore-sync.service.ts","../../../projects/ngx-firebase/src/shared/services/ui.service.ts","../../../projects/ngx-firebase/src/shared/services/auth-process.service.ts","../../../projects/ngx-firebase/src/shared/types/DisplayWidth.ts","../../../projects/ngx-firebase/src/shared/types/ValueAccessorValueComponent.ts","../../../projects/ngx-firebase/src/shared/types/ValueAccessorControlComponent.ts","../../../projects/ngx-firebase/src/shared/guards/logged-in.guard.ts","../../../projects/ngx-firebase/src/shared/guards/verify-email.guard.ts","../../../projects/ngx-firebase/src/shared/shared.module.ts","../../../projects/ngx-firebase/src/ngx-firebase.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MalDeviceInfoService {\n\n get dateFormat(): string {\n return 'dd/MM/yyyy';\n }\n\n}\n","import { Injectable, Injector, Optional } from '@angular/core';\nimport { AngularFireRemoteConfig, mapToObject, DEFAULTS as REMOTE_CONFIG_DEFAULTS } from '@angular/fire/remote-config';\nimport { of } from 'rxjs';\nimport { Value, ValueSource } from '@firebase/remote-config-types';\n\nclass StaticValue implements Value {\n constructor(private value: any) { }\n asBoolean() { return this.value as boolean; }\n asString() { return this.value as string; }\n asNumber() { return this.value as number; }\n getSource() { return 'static' as ValueSource; }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class RemoteConfigService {\n\n defaults: { [key: string]: any } = this.injector.get(REMOTE_CONFIG_DEFAULTS) || {};\n\n remoteConfig$ = of(this.defaults);\n parameters = of([]);\n async getBoolean(key: string): Promise<boolean> { return (await this.getValue(key)).asBoolean(); }\n async getNumber(key: string): Promise<number> { return (await this.getValue(key)).asNumber(); }\n async getString(key: string): Promise<string> { return (await this.getValue(key)).asString(); }\n getValue(key: string): Promise<Value> { return Promise.resolve(new StaticValue(this.defaults[key])); }\n\n constructor(\n @Optional() remoteConfigProvider: AngularFireRemoteConfig,\n private injector: Injector\n ) {\n if (remoteConfigProvider) {\n this.getBoolean = remoteConfigProvider.getBoolean;\n this.getNumber = remoteConfigProvider.getNumber;\n this.getString = remoteConfigProvider.getString;\n this.getValue = remoteConfigProvider.getValue;\n this.remoteConfig$ = remoteConfigProvider.parameters.pipe(\n mapToObject(this.defaults)\n );\n }\n }\n\n}\n","export enum AuthProvider {\n ALL = 'all',\n ANONYMOUS = 'anonymous',\n EmailAndPassword = 'firebase',\n Google = 'google',\n Apple = 'apple',\n Facebook = 'facebook',\n Twitter = 'twitter',\n Github = 'github',\n Microsoft = 'microsoft',\n Yahoo = 'yahoo',\n PhoneNumber = 'phoneNumber'\n}\n","export enum Accounts {\n NONE = 'account',\n CHECK = 'account-check',\n EDIT = 'account-edit',\n OFF = 'account-off',\n REMOVE = 'account-remove',\n}\n","// import * as firebase from 'firebase';\n\nimport { FirebaseAppConfig } from '@angular/fire';\nimport { ConfigTemplate } from '@angular/fire/remote-config';\nimport { AuthProvider } from './authprovider.enum';\n\nexport interface MalAuthUIConfig {\n authGuardFallbackURL: string;\n authGuardLoggedInURL: string;\n authGuardVerifyEmailURL?: string;\n enableFirestoreSync: boolean;\n reSignInUrl: string;\n\n // Toasts\n toastMessageOnAuthSuccess: boolean | string;\n toastMessageOnAuthError: boolean | string;\n toastDefaultDurationMil: number;\n\n logoUrl?: string;\n\n // Terms and Conditions\n tosUrl?: string;\n privacyPolicyUrl?: string;\n\n // Password length min/max in forms independently of each componenet min/max.\n // `min/max` input parameters in components should be within this range.\n passwordMaxLength: number;\n passwordMinLength: number;\n passwordRequireLowercase: boolean;\n passwordRequireUppercase: boolean;\n passwordRequireSpecial: boolean;\n passwordRequireNumbers: boolean;\n\n // Same as password but for the name\n nameMaxLength: number;\n nameMinLength: number;\n\n // Custom Backgrounds\n verifyEmailBackground?: string;\n\n supportedProviders: AuthProvider.ALL | AuthProvider[];\n\n guestEnabled: boolean;\n\n allowAccountEdit: boolean;\n allowAccountDelete: boolean;\n allowAccountLogout: boolean;\n\n // If set, sign-in/up form is not available until email has been verified.\n // Plus protected routes are still protected even though user is connected.\n guardProtectedRoutesUntilEmailIsVerified: boolean;\n\n // Control whether or not email verification is used\n enableEmailVerification: boolean;\n}\n\nexport enum MalServiceEnabled {\n emulate = 2,\n enabled = 1,\n disabled = 0\n}\n\nexport type UseEmulatorArguments = [string, number];\n\nexport interface MalServicesConifg {\n firebaseAnalytics: boolean;\n firebaseCrashlytics: boolean;\n firebasePerformance: boolean;\n firebaseRemoteConfig: boolean;\n inAppPurchase: boolean;\n firebaseAuth: true | UseEmulatorArguments;\n firebaseFirestore: true | UseEmulatorArguments;\n firebaseFunctions: true | UseEmulatorArguments;\n firebaseRegion?: string;\n}\n\n\nexport interface MalUserProvidedConfig<T extends ConfigTemplate = ConfigTemplate> {\n firebase: FirebaseAppConfig;\n services?: Partial<MalServicesConifg>;\n authUi?: Partial<MalAuthUIConfig>;\n configDefaults?: T;\n}\n\nexport interface MalSharedConfig<T extends ConfigTemplate = ConfigTemplate> {\n firebase: FirebaseAppConfig;\n services: MalServicesConifg;\n authUi: MalAuthUIConfig;\n configDefaults: T;\n}\n\nexport const defaultAuthFirebaseUIConfig: Omit<MalSharedConfig, 'firebase' | 'configDefaults'> = {\n services: {\n firebaseAnalytics: true,\n firebaseCrashlytics: true,\n firebasePerformance: true,\n firebaseRemoteConfig: true,\n inAppPurchase: true,\n firebaseAuth: true,\n firebaseFirestore: true,\n firebaseFunctions: true\n },\n authUi: {\n enableFirestoreSync: true,\n toastMessageOnAuthSuccess: true,\n toastMessageOnAuthError: true,\n toastDefaultDurationMil: 3000,\n authGuardFallbackURL: '/',\n authGuardLoggedInURL: '/',\n authGuardVerifyEmailURL: undefined,\n reSignInUrl: '/auth/signin',\n\n // Password length min/max in forms independently of each componenet min/max.\n // `min/max` input parameters in components should be within this range.\n passwordMaxLength: 60,\n passwordMinLength: 8,\n passwordRequireLowercase: true,\n passwordRequireUppercase: true,\n passwordRequireSpecial: true,\n passwordRequireNumbers: true,\n\n // Same as password but for the name\n nameMaxLength: 50,\n nameMinLength: 2,\n\n supportedProviders: AuthProvider.ALL,\n\n guestEnabled: false,\n\n allowAccountEdit: true,\n allowAccountDelete: true,\n allowAccountLogout: true,\n\n // If set, sign-in/up form is not available until email has been verified.\n // Plus protected routes are still protected even though user is connected.\n guardProtectedRoutesUntilEmailIsVerified: true,\n\n // Default to email verification on\n enableEmailVerification: true\n }\n};\n\n// Merge default config with user provided config.\nexport function malSharedConfigFactory<T extends ConfigTemplate>(userProvidedConfig: MalUserProvidedConfig<T>): MalSharedConfig<T> {\n return {\n firebase: userProvidedConfig.firebase,\n services: Object.assign({}, defaultAuthFirebaseUIConfig.services, userProvidedConfig.services || {}),\n authUi: Object.assign({}, defaultAuthFirebaseUIConfig.authUi, userProvidedConfig.authUi || {}),\n configDefaults: userProvidedConfig.configDefaults || {} as T\n };\n}\n","export interface ICredentials {\n email: string;\n password: string;\n}\n\nexport interface ISignInOptions {\n displayName?: string;\n credentials?: ICredentials;\n skipTosCheck?: boolean;\n}\n\n// tslint:disable-next-line max-len\nexport const PHONE_NUMBER_REGEX = new RegExp(['^[+]{0,1}[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\\\s\\\\.]{0,1}[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\\\s\\\\./0-9]{4,12}$'].join(''));\n\nexport enum FirebaseErrorCodes {\n requiresRecentLogin = 'auth/requires-recent-login'\n}\n","// This token is the official token containing the final configuration; ie. the merge between default and user provided configurations\nimport { InjectionToken } from '@angular/core';\n\nimport { MalSharedConfig, MalUserProvidedConfig } from './config.interface';\nimport { IAnalyticsProvider, IAuthHooksService, IAuthProcessService, ICrashlyticsProvider, ICredentialFactoryProvider } from './providers.interface';\nimport { ILoadingUIProvider, IAlertsUIProvider, IPickerUIProvider, IToastUIProvider, ILegalityDialogUIProvider} from './ui-providers.interface'\n\n// Firebase Functional Areas\nexport const MalAnalyticsProviderToken = new InjectionToken<IAnalyticsProvider>('MalAnalyticsProviderToken');\nexport const MalCrashlyticsProviderToken = new InjectionToken<ICrashlyticsProvider>('MalCrashlyticsProviderToken');\nexport const MalAuthServiceProviderToken = new InjectionToken<IAuthProcessService>('MalAuthServiceProviderToken');\n\n// Auth Process Service\nexport const AuthHooksProviderToken = new InjectionToken<IAuthHooksService>('AuthHooksProviderToken');\nexport const MalCredentialFactoryProviderToken = new InjectionToken<ICredentialFactoryProvider>('MalCredentialFactoryProviderToken');\n\n// Configuration\nexport const MalUserProvidedConfigToken = new InjectionToken<MalUserProvidedConfig>('MalUserProvidedConfigToken');\nexport const MalSharedConfigToken = new InjectionToken<MalSharedConfig>('MalSharedConfigToken');\n\n// UI Providers\nexport const MalLoadingUIProviderToken = new InjectionToken<ILoadingUIProvider>('MalLoadingUIProviderToken');\nexport const MalAlertsUIProviderToken = new InjectionToken<IAlertsUIProvider>('MalAlertsUIProviderToken');\nexport const MalPickerUIProviderToken = new InjectionToken<IPickerUIProvider>('MalPickerMalPickerUIProviderTokenUIProvider');\nexport const MalToastUIProviderToken = new InjectionToken<IToastUIProvider>('MalToastUIProviderToken');\nexport const MalLegaliyDialogUIProiderToken = new InjectionToken<ILegalityDialogUIProvider>(\"MalLegaliyDialogUIProiderToken\");","import { forwardRef, Inject, Injectable, Optional } from '@angular/core';\nimport { IAnalyticsProvider, MalAnalyticsProviderToken } from '../interfaces';\n\n@Injectable()\nexport class AnalyticsService implements IAnalyticsProvider {\n\n // Analytics NoOp\n logEvent = async (name: string, params?: { [key: string]: any }) => { console.log('NotLogged:LogEvent ' + name, params); };\n setScreenName = (screenName: string, screenClass?: string) => Promise.resolve();\n setUserId = (userId: string | null) => { };\n\n constructor(\n @Optional() @Inject(forwardRef(() => MalAnalyticsProviderToken)) private analytics: IAnalyticsProvider\n ) {\n if (this.analytics) {\n this.logEvent = this.analytics.logEvent;\n this.setScreenName = this.analytics.setScreenName;\n this.setUserId = this.analytics.setUserId;\n }\n }\n\n}\n","import { Injectable, Optional, forwardRef, Inject } from '@angular/core';\nimport { AndroidException, ICrashlyticsProvider, iOSException, MalCrashlyticsProviderToken } from '../interfaces';\n\n@Injectable()\nexport class CrashlyticsService implements ICrashlyticsProvider {\n\n // Crashlyitcs\n private _recordException = (_options: iOSException | AndroidException) => Promise.resolve();\n private _addLogMessage = (message: string) => Promise.resolve();\n private _setUserId = (uid: string | null) => { };\n\n constructor(\n @Optional() @Inject(forwardRef(() => MalCrashlyticsProviderToken)) private crashlyticsProvider: ICrashlyticsProvider,\n ) {\n if (this.crashlyticsProvider) {\n this._recordException = this.crashlyticsProvider.recordException;\n this._addLogMessage = this.crashlyticsProvider.addLogMessage;\n }\n }\n\n setUserId(uid: string | null) {\n this._setUserId(uid);\n }\n\n recordException(options: string | iOSException | AndroidException | Error): Promise<void> {\n let e: iOSException | AndroidException = { message: 'An unknown error occured' };\n if ('string' === typeof options) {\n e.message = options;\n } else if (options instanceof Error) {\n e.message = options.message;\n } else if (e.message) {\n e = options;\n }\n return this._recordException(e);\n }\n\n addLogMessage(message: string): Promise<void> {\n console.log('addLogMessage ' + message);\n return this._addLogMessage(message);\n }\n\n}\n","import { Injectable, Optional } from '@angular/core';\nimport { AngularFirePerformance } from '@angular/fire/performance';\nimport { IPerformanceTrace, IPerformanceProvider } from '../interfaces';\n\nexport class PerformanceTraceNoop implements IPerformanceTrace {\n start() { }\n stop() { }\n putAttribute(key: string, value: any) { }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class PerformanceService implements IPerformanceProvider {\n\n dataCollectionEnabled = Promise.resolve(false);\n\n createTrace(label: string): Promise<IPerformanceTrace> {\n return Promise.resolve(new PerformanceTraceNoop());\n }\n\n constructor(\n @Optional() performanceProvider: AngularFirePerformance\n ) {\n if (performanceProvider) {\n this.createTrace = performanceProvider.trace;\n }\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { IFirebaseProvider } from '../interfaces';\nimport { AnalyticsService } from './analytics.service';\nimport { CrashlyticsService } from './crashlytics.service';\nimport { PerformanceService } from './performance.service';\n\n@Injectable({ providedIn: 'root' })\nexport class FirebaseService implements IFirebaseProvider {\n\n recordException = this.crashlyticsService.recordException.bind(this.crashlyticsService);\n addLogMessage = this.crashlyticsService.addLogMessage.bind(this.crashlyticsService);\n\n setScreenName = this.analyticsService.setScreenName.bind(this.analyticsService);\n logEvent = this.analyticsService.logEvent.bind(this.analyticsService);\n\n createTrace = this.performanceService.createTrace;\n\n constructor(\n private crashlyticsService: CrashlyticsService,\n private analyticsService: AnalyticsService,\n private performanceService: PerformanceService\n ) {\n }\n\n async setUserId(userId: string | null) {\n this.analyticsService.setUserId(userId);\n this.crashlyticsService.setUserId(userId);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { AngularFirestore, AngularFirestoreDocument } from '@angular/fire/firestore';\nimport { UserInfo } from '@firebase/auth-types';\nimport { SetOptions } from '@firebase/firestore-types'\nimport { FirebaseService } from './firebase.service';\n\nconst USER_COLLECTION = '/users';\n\nexport interface UserProfile extends UserInfo {\n acceptedTos: string | null;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FirestoreSyncService {\n\n constructor(\n public afs: AngularFirestore,\n public fire: FirebaseService\n ) {\n }\n\n public async getUserData(uid: string): Promise<UserProfile | null> {\n try {\n const doc = await this.getUserDocRefByUID(uid).get().toPromise();\n return doc.data() || null;\n } catch (error) {\n this.fire.recordException(error);\n return null;\n }\n }\n\n private getUserDocRefByUID(uid: string): AngularFirestoreDocument<UserProfile> {\n return this.afs.doc(`${USER_COLLECTION}/${uid}`);\n }\n\n public async setUserData(uid: string, user: Partial<UserProfile>, options?: SetOptions): Promise<void> {\n try {\n return this.afs.doc(`${USER_COLLECTION}/${uid}`).set(user, options);\n } catch (error) {\n this.fire.recordException(error);\n }\n }\n\n public async updateUserData(uid: string, user: Partial<UserProfile>): Promise<void> {\n try {\n return this.getUserDocRefByUID(uid).update({ ...user, uid });\n } catch (error) {\n this.fire.recordException(error);\n }\n }\n\n}\n","import { forwardRef, Inject, Injectable } from '@angular/core';\nimport {\n ILegalityDialogUIProvider, MalLegaliyDialogUIProiderToken,\n IAlertsUIProvider, ILoadingUIProvider, IToastUIProvider, MalAlertsUIProviderToken,\n MalLoadingUIProviderToken, MalToastUIProviderToken, IUIProvider\n} from '../interfaces';\nimport { FirebaseService } from './firebase.service';\n\n@Injectable({ providedIn: 'root' })\nexport class UiService implements IUIProvider {\n\n toast = this.toastService.toast.bind(this.toastService);\n createToast = this.toastService.createToast.bind(this.toastService);\n errorToast = this.toastService.errorToast.bind(this.toastService);\n\n okAlert = this.alertService.okAlert.bind(this.alertService);\n infoAlert = this.alertService.infoAlert.bind(this.alertService);\n errorAlert = this.alertService.errorAlert.bind(this.alertService);\n textboxInputAlert = this.alertService.textboxInputAlert.bind(this.alertService);\n yesNoAlert = this.alertService.yesNoAlert.bind(this.alertService);\n\n createLoading = this.loadingService.createLoading.bind(this.loadingService);\n watchLoading = this.loadingService.watchLoading.bind(this.loadingService);\n\n confirmTos = this.legalityDialog.confirmTos.bind(this.legalityDialog);\n\n constructor(\n @Inject(forwardRef(() => MalToastUIProviderToken)) private toastService: IToastUIProvider,\n @Inject(forwardRef(() => MalAlertsUIProviderToken)) private alertService: IAlertsUIProvider,\n @Inject(forwardRef(() => MalLoadingUIProviderToken)) private loadingService: ILoadingUIProvider,\n @Inject(forwardRef(() => MalLegaliyDialogUIProiderToken)) private legalityDialog: ILegalityDialogUIProvider,\n private fire: FirebaseService\n ) {\n }\n\n logError(error: Error, messagePrefix?: string | null) {\n console.log(error);\n this.fire.recordException(error);\n if (messagePrefix !== null) {\n this.toastService.errorToast(error, messagePrefix);\n }\n }\n\n}\n","// Angular\nimport { EventEmitter, forwardRef, Inject, Injectable, Optional } from '@angular/core';\n\n// RXJS\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, map, take } from 'rxjs/operators';\n\n// Firebase & AngularFire\nimport { firebase } from '@firebase/app';\nimport 'firebase/auth';\nimport { User, UserInfo, UserCredential, AuthProvider as FirebaseAuthProvider } from '@firebase/auth-types';\nimport { AngularFireAuth } from '@angular/fire/auth';\n\n// Mal\nimport { FirestoreSyncService } from './firestore-sync.service';\nimport {\n MalCredentialFactoryProviderToken,\n AuthHooksProviderToken, MalSharedConfigToken,\n MalSharedConfig, AuthProvider, ISignInOptions, Accounts, IAuthHooksService,\n ICredentialFactoryProvider, FirebaseErrorCodes\n} from '../interfaces';\nimport { UiService } from './ui.service';\nimport { FirebaseService } from './firebase.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AuthProcessService {\n\n public readonly onErrorEmitter: EventEmitter<any> = new EventEmitter<any>();\n public readonly onSignInEmitter: EventEmitter<User> = new EventEmitter<User>();\n public readonly onRegisterEmitter: EventEmitter<User> = new EventEmitter<User>();\n public readonly onSignOutEmitter: EventEmitter<void> = new EventEmitter<void>();\n public readonly onUserUpdatedEmitter: EventEmitter<UserInfo> = new EventEmitter<UserInfo>();\n public readonly onUserDeletedEmitter: EventEmitter<void> = new EventEmitter<void>();\n public readonly showProfileDialog: EventEmitter<any> = new EventEmitter<any>();\n\n /**\n * Useful to know about auth state even between reloads.\n *\n **/\n private _user$ = new BehaviorSubject<User | null>(null);\n get user(): User | null {\n return this._user$.value;\n }\n\n public readonly user$ = this.afa.user;\n\n /**\n * Useful to know about auth state even between reloads.\n **/\n private _authState$ = new BehaviorSubject<User | null>(null);\n public readonly authState$ = this.afa.authState;\n\n /**\n * Obersable for current user - that only emits when the uid changes\n * Useful to reset session info when user changes.\n */\n public uid$: Observable<string | null> =\n this.user$.pipe(\n map(user => user?.uid || null),\n distinctUntilChanged()\n );\n\n /**\n * UserInterface helper observables - indicating what user actions are currently permitted and\n * the current status of authentication.\n */\n public readonly isLoggedIn$: Observable<boolean> = this.user$.pipe(map(user => null !== user));\n public readonly isAnonymous$: Observable<boolean> = this.user$.pipe(map(user => null !== user && user.isAnonymous));\n public readonly isNamedUser$: Observable<boolean> = this.user$.pipe(map(user => null !== user && !user.isAnonymous));\n public readonly isNotNamedUser$: Observable<boolean> = this.user$.pipe(map(user => null === user || user.isAnonymous));\n public readonly canEdit$ = this.isLoggedIn$;\n public readonly canRegister$: Observable<boolean> = this.isNotNamedUser$;\n public readonly canSignIn$: Observable<boolean> = this.isLoggedIn$.pipe(map(isLoggedIn => !isLoggedIn));\n public readonly canSignInAsGuest$: Observable<boolean> =\n this.isLoggedIn$.pipe(map(isLoggedIn => !isLoggedIn && this.config.authUi.guestEnabled));\n public readonly canSignOut$: Observable<boolean> = this.isNamedUser$;\n\n /**\n * Observable. Emits whenever currentUser signsOut\n */\n public readonly onSignOut$: Observable<void> = this.authState$.pipe(\n filter(user => user === null),\n map(() => { return; })\n );\n\n /**\n * Observable emits whenever a new user signsIn\n */\n public readonly onSignIn$: Observable<User> = this.authState$.pipe(\n filter(user => null !== user),\n map(user => user as User)\n );\n\n /**\n * Provides an array of authentication providers that are valid for the currently signed-in user\n */\n public get reauthenticateProviders$(): Observable<AuthProvider[]> {\n return this.user$.pipe(\n map(user => (user?.providerData || [])\n .map(item => {\n switch (item?.providerId) {\n case 'google.com': return AuthProvider.Google;\n default: console.log('NO MATCH', item); return;\n }\n })\n .filter(item => !!item) as AuthProvider[]\n )\n );\n }\n\n /**\n * Triggers subscriber actions when the current user token is refreshed\n */\n private readonly tokenRefreshed$: Subject<void> = new Subject<void>();\n\n constructor(\n @Inject(forwardRef(() => MalSharedConfigToken)) public config: MalSharedConfig,\n @Optional() @Inject(forwardRef(() => AuthHooksProviderToken)) public hooksService: IAuthHooksService,\n @Optional() @Inject(forwardRef(() => MalCredentialFactoryProviderToken)) public credFactory: ICredentialFactoryProvider,\n private fireStoreService: FirestoreSyncService,\n private afa: AngularFireAuth, // TODO should be private\n private fire: FirebaseService,\n private ui: UiService\n ) {\n this.afa.user.subscribe(user => this._user$.next(user));\n this.afa.authState.subscribe(authState => this._authState$.next(authState));\n this.authState$.subscribe(user => {\n this.fire.setUserId(user?.uid || null);\n });\n this.onSignOut$.subscribe(() => this.onSignOutEmitter.emit());\n }\n\n /**\n * Returns true if current platform is webplatform supported by @angular/fire\n */\n get isWebPlatform(): boolean {\n return ['https:', 'http:', 'chrome-extension'].includes(location.protocol);\n }\n\n /**\n * Indicates if the specified provider is supported on the current platform\n * \n * A provider is supported if it is configured to be so in authUi.supportProviders and either the platform is a webplatform\n * (in which case @anguluar/fire will be used). Or the provider is supported by the injected credFactory (such as that provided by /capacitor).\n */\n async isProviderSupported(provider: AuthProvider): Promise<boolean> {\n return (this.config.authUi.supportedProviders === AuthProvider.ALL || this.config.authUi.supportedProviders.includes(provider))\n && (this.isWebPlatform || (this.credFactory && await this.credFactory.isProviderSupported(provider)));\n }\n\n /**\n * Refreshes the current user IdToken, and triggers the tokenRefreshed$ subject\n */\n public async refreshToken(): Promise<void> {\n const user = await this.afa.currentUser;\n if (user) {\n await user.getIdToken(true);\n await this.tokenRefreshed$.next();\n }\n }\n\n /**\n * Provides an observable that subscribes to the current user token and returns the value of the specified claim.\n * \n * @param claim Claim to be returned\n * @returns Observable for: Value of claim within current user token || null (if not signed in) || undefined (if no such claim exists)\n */\n public selectCurrentUserClaim<T>(claim: string): Observable<T | null | undefined> {\n return new Observable<T | null | undefined>(subscriber => {\n // Handler function to process the ID token\n // Emits the claim || undefined || null\n const handleTokenRefresh = async (user: User | null) => {\n if (user) {\n const token = await user.getIdTokenResult();\n subscriber.next(token.claims[claim]);\n } else {\n subscriber.next(null);\n }\n };\n // Subscribe to token refresh events\n this.tokenRefreshed$.subscribe(async () => {\n const user = await this.afa.currentUser;\n await handleTokenRefresh(user);\n });\n // Subscribe to user update events\n this.afa.user.subscribe(async user => {\n await handleTokenRefresh(user);\n });\n });\n }\n\n /**\n * Get the value for a custom claim for the current user (extracted from their ID token)\n * \n * @param claim Claim to be returned\n * @returns Value of claim within current user token || null (if not signed in) || undefined (if no such claim exists)\n */\n public getCurrentUserClaim<T>(claim: string): Promise<T | null | undefined> {\n return this.selectCurrentUserClaim<T>(claim).pipe(take(1)).toPromise();\n }\n\n /**\n * Reset the password of currently authenticated user via email,\n * Firebase sends an email to the user - and managed the reset process directly via google's hosted pages.\n *\n * @param email - the email to reset\n */\n public async resetPassword(email: string): Promise<void> {\n try {\n this.fire.addLogMessage('Password reset email sent');\n this.afa.sendPasswordResetEmail(email);\n this.ui.toast(\n 'auth.resetPassword.onResetRequestedTo',\n { duration: this.config.authUi.toastDefaultDurationMil, interpolateParams: { email }, position: 'bottom' }\n );\n } catch (error) {\n await this.handleError(error);\n }\n }\n\n /**\n * General sign in mechanism to authenticate the users with a firebase project\n * using a traditional way, via username and password or by using an authentication provider\n * like google, facebook, twitter and github\n *\n * [Current State -> Target State]\n * Null -> Anon/named: OK\n * Anon -> Anon: Throws Error\n * Anon -> Named: Triggers MergeService\n * Named -> Any: Throws Error\n *\n * @param provider - the provider to authenticate with (google, facebook, twitter, github)\n * @param credentials optional email and password\n */\n public async signInWith(provider: AuthProvider, options?: ISignInOptions): Promise<UserCredential | null> {\n\n this.fire.addLogMessage(`SignInWithProvider; provider=${provider}`);\n const loading = await this.ui.createLoading();\n try {\n let userCred: UserCredential | null = null;\n\n const currentUser = await this.afa.currentUser;\n\n // Trigger hook for user merge where an anonymoust user >>> non-anonymous user.\n // Two merge hooks are provided, one run as source user (prepareMergeSource) and once the new non-anonymous user is created\n // a second hook applyMergeToTarget is subsequenrly run. The output from prepareMergeSource is passed into applyMergeToTarget.\n // Don't catch any errors, so they are caught by function and trigger a login abort.\n let mergeContext: any = null;\n if (currentUser && currentUser.isAnonymous && this.hooksService?.prepareMergeSource && provider !== AuthProvider.ANONYMOUS) {\n mergeContext = await this.hooksService.prepareMergeSource(currentUser);\n }\n\n switch (provider) {\n case AuthProvider.ANONYMOUS:\n if (currentUser) {\n throw new Error('Cannot signIn anonymously whilst already signedIn, SignOut first');\n }\n if (await this.confirmTos(null, options)) {\n loading.present();\n userCred = await this.afa.signInAnonymously();\n await this.confirmTos(userCred, { skipTosCheck: true }); // Save tosAcceptance in firestore if sync enabled\n await loading.dismiss();\n }\n break;\n\n case AuthProvider.EmailAndPassword:\n if (currentUser && !currentUser.isAnonymous) {\n throw new Error('Cannot signIn whilst already signedIn, SignOut first');\n }\n if (!options?.credentials) {\n throw new Error('Credentials are required when signing in with AuthProvider.EmailAndPassword');\n }\n loading.present();\n userCred = await this.afa.signInWithEmailAndPassword(options.credentials.email, options.credentials.password);\n if (!await this.confirmTos(userCred, options)) {\n await this.signOut();\n userCred = null;\n };\n await loading.dismiss();\n break;\n\n case AuthProvider.PhoneNumber:\n // coming soon - see feature/sms branch\n break;\n\n default:\n userCred = await this.socialSignIn(provider, options);\n break;\n }\n\n // Will be null if user cancels operation\n if (userCred) {\n if (this.config.authUi.toastMessageOnAuthSuccess) {\n const successMessage = ('string' === typeof this.config.authUi.toastMessageOnAuthSuccess)\n ? this.config.authUi.toastMessageOnAuthSuccess\n : `Hello ${userCred.user.displayName ? userCred.user.displayName : ''}!`;\n this.ui.toast(successMessage, { duration: this.config.authUi.toastDefaultDurationMil });\n }\n\n // Run the merge hook if present and mergeContext has been generated by the prepare hook above.\n if (userCred.user && mergeContext && this.hooksService?.applyMergeToTarget) {\n try {\n await this.hooksService.applyMergeToTarget(userCred.user, mergeContext);\n } catch (error) {\n // If a failure occurs in merge applyToTarget we can't do much about it (we are already logged in as new user)\n // but we should at least log it. The onus is really on the applyToTarget function to handle it's own errors.\n this.fire.recordException(error);\n }\n }\n this.onSignInEmitter.emit(userCred.user);\n }\n\n await loading.dismiss();\n return userCred || null;\n\n } catch (error) {\n // code auth/user-not-found\n await this.handleError(error);\n await loading.dismiss();\n return null;\n }\n }\n\n /**\n * Reauthenicate the current user - a recent authentication is required for some sensitive operations\n * such as changing account details\n */\n public async reauthenicateWithProvider(provider: AuthProvider, options?: ISignInOptions): Promise<UserCredential | null> {\n\n this.fire.addLogMessage(`reauthenicateWithProvider; provider=${provider}`);\n const loading = await this.ui.createLoading();\n try {\n let userCred: UserCredential | null = null;\n\n // Throw error if reauthentication attempted whilst signed in as guest, nor not signed in.\n const currentUser = await this.afa.currentUser;\n if (!currentUser || currentUser.isAnonymous) {\n throw new Error('Caanot reauthticate if no currentUser or currentUser is anonymous');\n }\n\n loading.present();\n\n switch (provider) {\n case AuthProvider.ANONYMOUS:\n throw new Error('Cannot reauthenticate with anonymous Credentials');\n\n case AuthProvider.EmailAndPassword:\n if (!options?.credentials) {\n throw new Error('Credentials are required when reauthenticating with AuthProvider.EmailAndPassword');\n }\n if (!currentUser.email) {\n throw new Error('Cannot reauthenticate with email for an account without email');\n }\n if (!firebase.auth) {\n throw new Error('firebase.auth is undefined');\n }\n this.fire.addLogMessage(`creating email credential with firebase; email=${options.credentials.email}`);\n const authCred = firebase.auth.EmailAuthProvider.credential(currentUser.email, options.credentials.password);\n userCred = await currentUser.reauthenticateWithCredential(authCred);\n break;\n\n case AuthProvider.PhoneNumber:\n // coming soon - see feature/sms branch\n break;\n\n default:\n if (this.credFactory && await this.credFactory.isProviderSupported(provider)) {\n const factoryCred = await this.credFactory.getCredential(provider);\n if (factoryCred) {\n userCred = await currentUser.reauthenticateWithCredential(factoryCred);\n }\n } else if (this.isWebPlatform) {\n userCred = await currentUser.reauthenticateWithPopup(this.getAuthProvider(provider));\n } else {\n throw new Error('A CredentialFactory is required to use AuthProcessService on a non-web platform');\n }\n break;\n }\n\n await loading.dismiss();\n return userCred || null;\n\n } catch (error) {\n // code auth/user-not-found\n await this.handleError(error);\n await loading.dismiss();\n return null;\n }\n }\n\n /**\n * Link the current user to credentials from another auth provider.\n *\n * @param provider Provider to link.\n */\n public async linkCurrentUserToProvider(provider: AuthProvider, options?: ISignInOptions): Promise<UserCredential | null> {\n\n this.fire.addLogMessage(`Linking current anon user to provider; provider=${provider}`);\n const loading = await this.ui.createLoading();\n try {\n const currentUser = await this.afa.currentUser;\n if (null === currentUser) {\n throw new Error('CurrentUser is null');\n }\n\n await loading.present();\n let userCred: UserCredential | null = null;\n switch (provider) {\n case AuthProvider.ANONYMOUS:\n throw new Error('Linking anonymous user makes no sense');\n\n case AuthProvider.EmailAndPassword:\n if (!options?.credentials) {\n throw new Error('Credentials required to link to email credentential');\n }\n if (!firebase.auth) {\n throw new Error('firebase.auth is undefined');\n }\n this.fire.addLogMessage(`creating email credential with firebase; email=${options.credentials.email}`);\n const authCred = firebase.auth.EmailAuthProvider.credential(options.credentials.email, options.credentials.password);\n this.fire.addLogMessage(`linking userCredential to email authCredential`);\n userCred = await currentUser.linkWithCredential(authCred);\n break;\n\n case AuthProvider.PhoneNumber:\n throw new Error('Linking phone number not suported');\n\n default:\n if (this.credFactory && await this.credFactory.isProviderSupported(provider)) {\n const factoryCred = await this.credFactory.getCredential(provider);\n if (factoryCred) {\n userCred = await currentUser.linkWithCredential(factoryCred);\n }\n } else if (this.isWebPlatform) {\n userCred = await currentUser.linkWithPopup(this.getAuthProvider(provider));\n } else {\n throw new Error('A CredentialFactory is required to use AuthProcessService on a non-web platform');\n }\n }\n\n if (userCred && userCred.user) { // Null if user cancels (or perhaps fails) sign-in\n const userData = this.parseUserInfo(userCred.user);\n if (\n userData.displayName\n && (userCred.user.displayName !== userData.displayName || userCred.user.photoURL !== userData.displayName)\n ) {\n this.fire.addLogMessage(`Updating user profile; displayName=${userData.displayName}, photoUrl=${userData.photoURL}`); // tslint:disable-line max-line-length\n await this.updateUserInfo({ displayName: userData.displayName, photoURL: userData.photoURL });\n }\n }\n\n await loading.dismiss();\n return userCred || null;\n\n } catch (error) {\n // Merge\n await this.handleError(error);\n await loading.dismiss();\n return null;\n\n }\n }\n\n /**\n * Creates a firebase user account authenticated with the specified provider.\n * If AuthProvider.EmailAndPassword is specified credentials and displayname must also be provided.\n */\n public async registerWith(provider: AuthProvider, options?: ISignInOptions): Promise<UserCredential | null> {\n\n this.fire.addLogMessage(`SigningUp with provider; provider=${provider}`);\n const loading = await this.ui.createLoading();\n try {\n\n // If the current user is anonymous - link the credentials to the existing user.\n // Otherwise if the user is logged in un-Anonymously, throw error\n const currentUser = await this.afa.currentUser;\n if (currentUser?.isAnonymous) { // Anonymous User\n return this.linkCurrentUserToProvider(provider, options);\n } else if (null !== currentUser) { // Non-Anonymous User\n throw new Error('Cannot Register whilst signed in as a non-Anonymous user. SignOut first');\n } else if (!await this.confirmTos(null, options)) { // No current user\n this.fire.addLogMessage('User declined TOS during register');\n return null;\n }\n\n let userCred: UserCredential | null = null;\n switch (provider) {\n\n case AuthProvider.EmailAndPassword:\n if (!options?.credentials || !options?.displayName) {\n throw new Error('Credentials & displayName required to SignUp by email');\n }\n await loading.present();\n this.fire.addLogMessage(`creaating user with email and password; email=${options.credentials.email}`);\n userCred = await this.afa.createUserWithEmailAndPassword(options.credentials.email, options.credentials.password);\n if (null === userCred.user) {\n throw new Error('User is null following successful signUp');\n }\n await this.updateUserInfo({ displayName: options.displayName });\n await this.confirmTos(userCred, { skipTosCheck: true }); // To save the tosAcceptance\n if (this.config.authUi.enableEmailVerification) {\n await userCred.user.sendEmailVerification();\n }\n await loading.dismiss();\n break;\n\n default:\n userCred = await this.socialSignIn(provider, { ...options, skipTosCheck: true });\n\n }\n\n if (userCred.user) {\n this.onRegisterEmitter.emit(userCred.user);\n }\n return userCred || null;\n } catch (error) {\n // This is where I would handle merge\n await this.handleError(error);\n await loading.dismiss();\n return null;\n }\n\n }\n\n /**\n * Authenticates the user using social provider.\n * \n * @param provider social auth provider\n * @param options \n * @returns user credentials || null if not signed in.\n */\n private async socialSignIn(provider: AuthProvider, options: ISignInOptions): Promise<UserCredential | null> {\n const currentUser = await this.afa.currentUser;\n const loading = await this.ui.createLoading();\n let userCred: UserCredential | null\n if (currentUser && !currentUser.isAnonymous) {\n throw new Error('Cannot signIn whilst already signedIn, SignOut first');\n }\n if (this.credFactory && await this.credFactory.isProviderSupported(provider)) {\n loading.present();\n const factoryCred = await this.credFactory.getCredential(provider);\n if (factoryCred) {\n userCred = await this.afa.signInWithCredential(factoryCred);\n }\n await loading.dismiss();\n } else if (this.isWebPlatform) {\n loading.present();\n userCred = await this.afa.signInWithPopup(this.getAuthProvider(provider));\n await loading.dismiss();\n /*\n a: null\n code: \"auth/popup-closed-by-user\"\n message: \"The popup has been closed by the user before finalizing the operation.\"\n __proto__: Error\n */\n } else {\n throw new Error('A CredentialFactory is required to use AuthProcessService on a non-web platform');\n }\n await loading.dismiss();\n if (!await this.confirmTos(userCred, options)) {\n await this.signOut();\n userCred = null;\n };\n return userCred;\n }\n\n /**\n * Present dialog and confirm the user agress to the privacy policy and terms of service (if either configured).\n * If nether configured returns true;\n *\n * @returns True if either user agrees to TOS/PrivacyUrl || no TOS/PrivacyUrl configured.\n */\n private async confirmTos(userCred: UserCredential | null = null, options: { skipTosCheck?: boolean } = {}): Promise<boolean> {\n if (this.config.authUi.tosUrl || this.config.authUi.privacyPolicyUrl) {\n let acceptedTos: string | null = (options.skipTosCheck) ? new Date().toISOString() : null;\n\n if (!acceptedTos && userCred?.user && !userCred?.additionalUserInfo?.isNewUser && this.config.authUi.enableFirestoreSync) {\n const userData = await this.fireStoreService.getUserData(userCred.user.uid);\n acceptedTos = userData?.acceptedTos || null;\n }\n\n if (!acceptedTos && await this.ui.confirmTos()) {\n acceptedTos = new Date().toISOString();\n }\n\n if (userCred?.user && this.config.authUi.enableFirestoreSync) {\n await this.fireStoreService.setUserData(userCred.user.uid, { acceptedTos }, { merge: true });\n }\n\n return !!acceptedTos;\n\n } else { // No tosUrl || privacyPolicyUrl\n return true;\n }\n }\n\n /**\n * Send the currently authenticated user another verficiation email.\n */\n async sendNewVerificationEmail(): Promise<void> {\n try {\n const currentUser = await this.afa.currentUser;\n if (!currentUser) {\n throw new Error('No signed in user');\n }\n await currentUser.sendEmailVerification();\n } catch (error) {\n this.fire.recordException(error);\n throw error;\n }\n }\n\n /**\n * SignOut the currently authenticated user.\n */\n async signOut() {\n try {\n await this.afa.signOut();\n if (this.credFactory) {\n this.credFactory.signOut();\n }\n } catch (error) {\n await this.handleError(error);\n }\n }\n\n /**\n * Update the details for the authenticated user of in the firebase authentication and sync with firestore.\n *\n * @param userInfo - UserInfo object containing those properties for which change is requried. Only provider\n * the properties actually to be changed. Others should be ommitted.\n */\n public async updateUserInfo(userInfo: Partial<UserInfo>): Promise<void> {\n try {\n const user: User | null = await this.afa.currentUser;\n if (!user) {\n throw new Error('No currentUser');\n }\n\n if (userInfo.email) {\n await user.updateEmail(userInfo.email);\n }\n\n if (userInfo.phoneNumber) {\n await user.updatePhoneNumber(userInfo.phoneNumber as any); // TODO - bet this doesn't actually work\n }\n\n if (userInfo.displayName || userInfo.photoURL) {\n await user.updateProfile({\n displayName: userInfo.displayName,\n photoURL: userInfo.photoURL\n });\n }\n await this.afa.updateCurrentUser(user);\n\n if (this.config.authUi.enableFirestoreSync) {\n // await this.fireStoreService.updateUserData(user.uid, this.parseUserInfo(user));\n await this.fireStoreService.updateUserData(user.uid, {\n displayName: user.displayName,\n email: user.email,\n photoURL: user.photoURL\n });\n }\n\n this.onUserUpdatedEmitter.emit();\n\n } catch (error) {\n this.fire.recordException(error);\n }\n }\n\n /**\n * Extract UserInfo object from the User object\n * If multiple providers are supplied these are amalgamated to create the most complete\n * UserInfo object possible\n */\n public parseUserInfo(user: User): UserInfo {\n const userInfo: UserInfo = {\n uid: user.uid,\n displayName: user.displayName,\n email: user.email,\n phoneNumber: user.phoneNumber,\n photoURL: user.photoURL,\n providerId: user.providerId\n };\n if (user.providerData) {\n user.providerData.forEach(item => {\n if (!userInfo.displayName && item?.displayName) { userInfo.displayName = item.displayName; }\n if (!userInfo.email && item?.email) { userInfo.email = item.email; }\n if (!userInfo.phoneNumber && item?.phoneNumber) { userInfo.phoneNumber = item.phoneNumber; }\n if (!userInfo.photoURL && item?.photoURL) { userInfo.photoURL = item.photoURL; }\n if (!userInfo.providerId && item?.providerId) { userInfo.providerId = item.providerId; }\n });\n }\n return userInfo;\n }\n\n /**\n * Returns the UserPhotoUrl, or an appropraite placeholder if not provided\n * ToDo - this would probably bet better inside a user-photo component\n */\n public getUserPhotoUrl(): Observable<string | null> {\n return this.user$.pipe(\n map((user: User | null) => {\n if (!user) {\n return null;\n } else if (user.photoURL) {\n return user.photoURL;\n } else if (user.emailVerified) {\n return `assets/user/${Accounts.CHECK}.svg`;\n } else if (user.isAnonymous) {\n return `assets/user/${Accounts.OFF}.svg`;\n } else {\n return `assets/user/${Accounts.NONE}.svg`;\n }\n })\n );\n }\n\n /**\n * Refresh user info. Can be useful for instance to get latest status regarding email verification.\n */\n async reloadUserInfo() {\n const user = await this.user$.pipe(take(1)).toPromise();\n if (user) {\n await user.reload();\n }\n }\n\n /**\n * Deletes the current user\n */\n async deleteUser() {\n const currentUser = await this.afa.currentUser;\n const currentUid = currentUser?.uid;\n if (!currentUser || !currentUid) {\n throw new Error('Unable to delete currentUser if null');\n }\n const canDelete = (this.hooksService?.beforeDelete) ? await this.hooksService.beforeDelete(currentUser) : true;\n // Allow exception from beforeDelete to propgate\n if (canDelete) {\n try {\n // Userdata deleted by DB trigger\n await currentUser.delete();\n this.onUserDeletedEmitter.emit();\n } catch (error) {\n if (error.code !== FirebaseErrorCodes.requiresRecentLogin) {\n this.fire.recordException(error);\n }\n throw (error);\n }\n }\n }\n\n /**\n * Logs the error and provides user error notifcation if appropriate\n */\n async handleError(error: any) {\n await this.fire.recordException(error);\n this.onErrorEmitter.emit(error);\n if (this.config.authUi.toastMessageOnAuthError) {\n let message: string = 'auth.common.pleaseRetry';\n if (error && typeof error === 'string') {\n message = error;\n } else if (error && error.message) {\n message = error.message;\n } else if (error && typeof error === 'object') {\n message = JSON.stringify(error);\n } else if (error) {\n message = error.toString();\n }\n await this.ui.toast(message, { duration: this.config.authUi.toastDefaultDurationMil });\n }\n }\n\n /**\n * Returns a firebase auth provider object for the specified provider\n */\n private getAuthProvider(provider: AuthProvider): FirebaseAuthProvider {\n if (!firebase.auth) {\n throw new Error('firebase.auth is undefined');\n }\n switch (provider) {\n case AuthProvider.Google: return new firebase.auth.GoogleAuthProvider();\n case AuthProvider.Apple: return new firebase.auth.OAuthProvider('apple.com');\n case AuthProvider.Facebook: return new firebase.auth.FacebookAuthProvider();\n case AuthProvider.Twitter: return new firebase.auth.TwitterAuthProvider();\n case AuthProvider.Github: return new firebase.auth.GithubAuthProvider();\n case AuthProvider.Microsoft: return new firebase.auth.OAuthProvider('microsoft.com');\n case AuthProvider.Yahoo: return new firebase.auth.OAuthProvider('yahoo.com');\n default: throw new Error(`${provider} is not available as auth provider`);\n }\n }\n\n}\n","export enum DisplayWidth {\n xs = 1,\n sm = 576,\n md = 768,\n lg = 992,\n xl = 1200\n}\n","import { Input, Output, EventEmitter } from '@angular/core';\nimport { ControlValueAccessor, Validator, ValidationErrors, AbstractControl } from '@angular/forms';\n\ndeclare type ValueAccessorHandler<T> = (_: T) => void;\ndeclare type ValidatorChangeHandler = () => void;\n\n/* @Component({\n template: ''\n}) */\nexport class ValueAccessorValueComponent<T> implements ControlValueAccessor, Validator {\n\n @Input()\n get value(): T | undefined { return this._value; }\n set value(val: T | undefined) {\n if (val) {\n this._value = val;\n this.valueChange.emit(val);\n this.propagateChange(val);\n }\n }\n protected _value: T | undefined;\n\n @Output()\n valueChange: EventEmitter<T> = new EventEmitter<T>();\n\n validate(control: AbstractControl): ValidationErrors | null {\n return null;\n }\n\n propagateChange: ValueAccessorHandler<T> = (_: T) => { };\n propagateTouch: ValueAccessorHandler<T> = (_: T) => { }; // TODO - Not implemented.\n propagateValidatorChange: ValidatorChangeHandler = () => { }; // TODO - Not implemented.\n\n writeValue(value: T) {\n this.value = value;\n }\n\n registerOnChange(fn: ValueAccessorHandler<T>) {\n this.propagateChange = fn;\n }\n\n registerOnTouched(fn: ValueAccessorHandler<T>) {\n this.propagateTouch = fn;\n }\n\n registerOnValidatorChange(fn: ValidatorChangeHandler) {\n this.propagateValidatorChange = fn;\n }\n\n}\n","import { Input, Output, EventEmitter, OnDestroy, AfterViewInit, Injector, ChangeDetectorRef, OnInit } from '@angular/core';\nimport { ControlValueAccessor, Validator, ValidationErrors, AbstractControl, FormControl, NgControl } from '@angular/forms';\nimport { ReplaySubject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\n/* @Component({\n template: ''\n}) */\nexport class ValueAccessorControlComponent<T> implements ControlValueAccessor, Validator, OnInit, OnDestroy, AfterViewInit {\n\n public parentControl?: NgControl | null;\n public control?: FormControl;\n private get _control(): FormControl {\n if (!this.control) {\n throw new Error('ValueAccessorControlComponent: this.control must be eclipsed in the subclass');\n }\n return this.control;\n }\n\n protected destroy$: ReplaySubject<void> = new ReplaySubject<void>();\n\n @Input()\n set value(val: T | undefined) {\n if (val) {\n this._control.setValue(val);\n } else {\n this._control.reset();\n }\n }\n get value(): T | undefined {\n return this._control.value;\n }\n\n @Output()\n valueChange: EventEmitter<T | undefined> = new EventEmitter<T | undefined>();\n\n constructor(\n private injector: Injector,\n private cdRef: ChangeDetectorRef\n ) { }\n\n ngOnInit() {\n this._control.valueChanges\n .pipe(takeUntil(this.destroy$))\n .subscribe(val => {\n if (this._control.dirty) {\n this.propagateChange(val);\n this.propagateTouch();\n this.valueChange.emit(val);\n }\n });\n this._control.statusChanges\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => this.propagateValidatorChange());\n }\n\n ngAfterViewInit() {\n this.parentControl = this.injector.get(NgControl, null);\n this.cdRef.detectChanges();\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n propagateChange = (val: T | undefined) => { };\n propagateTouch = () => { };\n propagateValidatorChange = () => { };\n\n writeValue(value: T | undefined) {\n this.value = value;\n }\n\n registerOnChange(fn: any) {\n this.propagateChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.propagateTouch = fn;\n }\n\n registerOnValidatorChange(fn: () => void) {\n this.propagateValidatorChange = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n if (isDisabled) {\n this._control.disable();\n } else {\n this._control.enable();\n }\n }\n\n validate(control: AbstractControl): ValidationErrors | null {\n return this._control.errors;\n }\n\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, CanLoad, Route, Router, RouterStateSnapshot, UrlSegment, UrlTree } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\nimport { MalSharedConfig, MalSharedConfigToken } from '../interfaces';\nimport { AuthProcessService } from '../services/auth-process.service';\nimport { User } from '@firebase/auth-types';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LoggedInGuard implements CanActivate, CanLoad {\n constructor(\n @Inject(MalSharedConfigToken)\n private config: MalSharedConfig,\n private router: Router,\n private aps: AuthProcessService\n ) {\n }\n\n private guardOutcome(redirectUrl?: string): Observable<boolean | UrlTree> {\n return this.aps.user$.pipe(\n take(1),\n map((user: User | null) => {\n if (user) {\n if (this.config.authUi.guardProtectedRoutesUntilEmailIsVerified && !user.emailVerified) {\n if (this.config.authUi.authGuardVerifyEmailURL) {\n return this.router.createUrlTree(\n [`${this.config.authUi.authGuardVerifyEmailURL}`], { queryParams: { redirectUrl } }\n );\n } else if (this.config.authUi.authGuardFallbackURL) {\n return this.router.createUrlTree(\n [`${this.config.authUi.authGuardFallbackURL}`], { queryParams: { redirectUrl } }\n );\n } else {\n return false;\n }\n } else {\n return true;\n }\n } else {\n if (this.config.authUi.authGuardFallbackURL) {\n return this.router.createUrlTree(\n [`${this.config.authUi.authGuardFallbackURL}`], { queryParams: { redirectUrl } }\n );\n }\n return false;\n }\n })\n );\n }\n\n canLoad(route: Route, segments: UrlSegment[]): Observable<boolean | UrlTree> {\n return this.guardOutcome(segments[0].parameters.url);\n }\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> {\n return this.guardOutcome(state.url);\n }\n\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { MalSharedConfig, MalSharedConfigToken } from '../interfaces';\nimport { AuthProcessService } from '../services/auth-process.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class VerifyEmailGuard implements CanActivate {\n constructor(\n @Inject(MalSharedConfigToken)\n private config: MalSharedConfig,\n private router: Router,\n private aps: AuthProcessService\n ) {\n }\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean | UrlTree> {\n return this.aps.user$.pipe(\n map(user => {\n if (user\n && !user.emailVerified\n && !user.isAnonymous\n && this.config.authUi.authGuardVerifyEmailURL\n ) {\n return this.router.createUrlTree([`${this.config.authUi.authGuardVerifyEmailURL}`], { queryParams: { redirectUrl: state.url } });\n } else {\n return true;\n }\n })\n );\n }\n\n}\n","// @angular/*\nimport { NgModule, ModuleWithProviders, Optional, NgZone, PLATFORM_ID, isDevMode } from '@angular/core';\nimport { HttpClientModule } from '@angular/common/http';\n\n// Ionic\nimport { IonicModule } from '@ionic/angular';\n\n// Imported\nimport { TranslateModule } from '@ngx-translate/core';\n\n// Configuration\nimport {\n malSharedConfigFactory, MalSharedConfig, MalUserProvidedConfig, UseEmulatorArguments,\n MalSharedConfigToken, MalUserProvidedConfigToken\n} from './interfaces';\n\n// @angular/fire\nimport { FIREBASE_APP_NAME, FIREBASE_OPTIONS, FirebaseAppConfig, FirebaseApp, FirebaseOptions, AngularFireModule } from '@angular/fire';\nimport { AngularFireAuth, AngularFireAuthModule, USE_EMULATOR as AUTH_EMULATOR } from '@angular/fire/auth';\nimport { AngularFirestoreModule, USE_EMULATOR as FIRESTORE_EMULATOR } from '@angular/fire/firestore';\nimport { AngularFireRemoteConfig, ConfigTemplate, DEFAULTS as REMOTE_CONFIG_DEFAULTS, SETTINGS as REMOTE_CONFIG_SETTINGS } from '@angular/fire/remote-config';\nimport { DATA_COLLECTION_ENABLED, INSTRUMENTATION_ENABLED } from '@angular/fire/performance';\nimport { Settings as RemoteConfigSettings } from '@firebase/remote-config-types';\nimport { AngularFirePerformance } from '@angular/fire/performance';\nimport { USE_EMULATOR as FUNCTIONS_EMULATOR, AngularFireFunctionsModule, REGION } from '@angular/fire/functions';\n\n// Guards\nimport { LoggedInGuard, VerifyEmailGuard } from './guards';\n\n// Components\n// import { ValueAccessorControlComponent } from './types/ValueAccessorControlComponent';\n// import { ValueAccessorValueComponent } from './types/ValueAccessorValueComponent';\n\n// services\nimport { FirestoreSyncService } from './services/firestore-sync.service';\nimport { AuthProcessService } from './services/auth-process.service';\nimport { CrashlyticsService } from './services/crashlytics.service';\nimport { AnalyticsService } from './services/analytics.service';\nimport { RemoteConfigService } from './services/remoteconfig.service';\nimport { PerformanceService } from './services/performance.service';\nimport { FirebaseService } from './services/firebase.service';\nimport { UiService } from './services/ui.service';\n\nconst MODULES = [\n HttpClientModule,\n AngularFireAuthModule,\n AngularFirestoreModule,\n AngularFireFunctionsModule\n];\n\n@NgModule({\n imports: [\n ...MODULES,\n TranslateModule.forChild(),\n AngularFireModule,\n ],\n exports: [\n ...MODULES,\n TranslateModule\n ]\n})\nexport class MalSharedModule {\n\n static forRoot(\n config: MalUserProvidedConfig,\n appNameFactory: () => string | undefined = () => undefined,\n ): ModuleWithProviders<MalSharedModule> {\n return {\n ngModule: MalSharedModule,\n providers:\n [\n {\n provide: MalUserProvidedConfigToken,\n useValue: config\n },\n {\n provide: MalSharedConfigToken,\n useFactory: malSharedConfigFactory,\n deps: [MalUserProvidedConfigToken]\n },\n {\n provide: REMOTE_CONFIG_DEFAULTS,\n useValue: config.configDefaults\n },\n {\n provide: REMOTE_CONFIG_SETTINGS,\n useFactory: () => isDevMode() ? { minimumFetchIntervalMillis: 3600000 } : {} // 1 hour§\n },\n {\n provide: FIREBASE_OPTIONS,\n useValue: config.firebase\n },\n {\n provide: FIREBASE_APP_NAME,\n useFactory: appNameFactory\n },\n {\n provide: AUTH_EMULATOR,\n useFactory: authEmulatorFactory,\n deps: [MalSharedConfigToken]\n },\n {\n provide: FIRESTORE_EMULATOR,\n useFactory: firestoreEmulatorFactory,\n deps: [MalSharedConfigToken]\n },\n {\n provide: FUNCTIONS_EMULATOR,\n useFactory: functionsEmulatorFactory,\n deps: [MalSharedConfigToken]\n },\n {\n provide: REGION,\n useValue: config.services?.firebaseRegion || null\n },\n {\n provide: AngularFirePerformance,\n useFactory: performanceProviderFactory,\n deps: [\n MalSharedConfigToken,\n FirebaseApp,\n [new Optional(), DATA_COLLECTION_ENABLED],\n [new Optional(), INSTRUMENTATION_ENABLED],\n NgZone,\n PLATFORM_ID\n ]\n },\n {\n provide: AngularFireRemoteConfig,\n useFactory: remoteConfigFirebaseService,\n deps: [\n MalSharedConfigToken,\n FIREBASE_OPTIONS,\n FIREBASE_APP_NAME,\n REMOTE_CONFIG_SETTINGS,\n REMOTE_CONFIG_DEFAULTS,\n NgZone,\n PLATFORM_ID\n ]\n },\n AnalyticsService,\n CrashlyticsService,\n FirebaseService,\n UiService,\n RemoteConfigService,\n AuthProcessService,\n FirestoreSyncService,\n PerformanceService,\n AngularFireAuth,\n LoggedInGuard,\n VerifyEmailGuard\n ],\n };\n }\n\n}\n\nexport function performanceProviderFactory(\n config: MalSharedConfig,\n app: FirebaseApp,\n dataCollectionEnabled: boolean,\n instrumentationEnabled: boolean,\n zone: NgZone,\n platformId: any\n): AngularFirePerformance | null {\n if (config.services.firebasePerformance) {\n return new AngularFirePerformance(app, dataCollectionEnabled, instrumentationEnabled, zone, platformId);\n }\n return null;\n}\n\nexport function remoteConfigFirebaseService(\n config: MalSharedConfig,\n options: FirebaseOptions,\n nameOrConfig: string | FirebaseAppConfig,\n settings: RemoteConfigSettings,\n defaultConfig: ConfigTemplate,\n zone: NgZone,\n platformId: any\n): AngularFireRemoteConfig | null {\n if (config.services.firebaseRemoteConfig) {\n return new AngularFireRemoteConfig(options, nameOrConfig, settings, defaultConfig, zone, platformId);\n }\n return null;\n}\n\nexport function authEmulatorFactory(config: MalSharedConfig): UseEmulatorArguments | undefined {\n if (true === config.services.firebaseAuth) {\n return undefined;\n } else {\n return config.services.firebaseAuth;\n }\n}\n\nexport function firestoreEmulatorFactory(config: MalSharedConfig): UseEmulatorArguments | undefined {\n if (true === config.services.firebaseFirestore) {\n return undefined;\n } else {\n return config.services.firebaseFirestore;\n }\n}\n\nexport function functionsEmulatorFactory(config: MalSharedConfig): UseEmulatorArguments | undefined {\n if (true === config.services.firebaseFunctions) {\n return undefined;\n } else {\n return config.services.firebaseFunctions;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {AuthHooksProviderToken as ɵf,IAlertsUIProvider as ɵp,IAnalyticsProvider as ɵb,IAuthHooksService as ɵi,ICrashlyticsProvider as ɵd,ICredentialFactoryProvider as ɵj,ILegalityDialogUIProvider as ɵr,ILoadingUIProvider as ɵq,IToastUIProvider as ɵo,MalAlertsUIProviderToken as ɵl,MalAnalyticsProviderToken as ɵa,MalCrashlyticsProviderToken as ɵc,MalCredentialFactoryProviderToken as ɵg,MalLegaliyDialogUIProiderToken as ɵn,MalLoadingUIProviderToken as ɵm,MalSharedConfig as ɵh,MalSharedConfigToken as ɵe,MalToastUIProviderToken as ɵk} from './shared/interfaces';"],"names":["REMOTE_CONFIG_DEFAULTS","REMOTE_CONFIG_SETTINGS","AUTH_EMULATOR","FIRESTORE_EMULATOR","FUNCTIONS_EMULATOR"],"mappings":";;;;;;;;;;;;;;;;;MAKa,oBAAoB;IAE7B,IAAI,UAAU;QACV,OAAO,YAAY,CAAC;KACvB;;;;YAPJ,UAAU,SAAC;gBACR,UAAU,EAAE,MAAM;aACrB;;;ACCD,MAAM,WAAW;IACb,YAAoB,KAAU;QAAV,UAAK,GAAL,KAAK,CAAK;KAAK;IACnC,SAAS,KAAK,OAAO,IAAI,CAAC,KAAgB,CAAC,EAAE;IAC7C,QAAQ,KAAK,OAAO,IAAI,CAAC,KAAe,CAAC,EAAE;IAC3C,QAAQ,KAAK,OAAO,IAAI,CAAC,KAAe,CAAC,EAAE;IAC3C,SAAS,KAAK,OAAO,QAAuB,CAAC,EAAE;CAClD;MAGY,mBAAmB;IAW5B,YACgB,oBAA6C,EACjD,QAAkB;QAAlB,aAAQ,GAAR,QAAQ,CAAU;QAX9B,aAAQ,GAA2B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACA,QAAsB,CAAC,IAAI,EAAE,CAAC;QAEnF,kBAAa,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,eAAU,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAUhB,IAAI,oBAAoB,EAAE;YACtB,IAAI,CAAC,UAAU,GAAG,oBAAoB,CAAC,UAAU,CAAC;YAClD,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC,SAAS,CAAC;YAChD,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC,SAAS,CAAC;YAChD,IAAI,CAAC,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,CAAC;YAC9C,IAAI,CAAC,aAAa,GAAG,oBAAoB,CAAC,UAAU,CAAC,IAAI,CACrD,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAC7B,CAAC;SACL;KACJ;IAlBK,UAAU,CAAC,GAAW;8DAAsB,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;KAAA;IAC5F,SAAS,CAAC,GAAW;8DAAqB,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE;KAAA;IACzF,SAAS,CAAC,GAAW;8DAAqB,OAAO,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE;KAAA;IAC/F,QAAQ,CAAC,GAAW,IAAoB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;;;;YAVzG,UAAU,SAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;YAZzB,uBAAuB,uBAyBvB,QAAQ;YA1BI,QAAQ;;;ICAjB;AAAZ,WAAY,YAAY;IACpB,2BAAW,CAAA;IACX,uCAAuB,CAAA;IACvB,6CAA6B,CAAA;IAC7B,iCAAiB,CAAA;IACjB,+BAAe,CAAA;IACf,qCAAqB,CAAA;IACrB,mCAAmB,CAAA;IACnB,iCAAiB,CAAA;IACjB,uCAAuB,CAAA;IACvB,+BAAe,CAAA;IACf,2CAA2B,CAAA;AAC/B,CAAC,EAZW,YAAY,KAAZ,YAAY;;ICAZ;AAAZ,WAAY,QAAQ;IAClB,4BAAgB,CAAA;IAChB,mCAAuB,CAAA;IACvB,iCAAqB,CAAA;IACrB,+BAAmB,CAAA;IACnB,qCAAyB,CAAA;AAC3B,CAAC,EANW,QAAQ,KAAR,QAAQ;;ACApB;IAwDY;AAAZ,WAAY,iBAAiB;IAC3B,+DAAW,CAAA;IACX,+DAAW,CAAA;IACX,iEAAY,CAAA;AACd,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B;MA+BY,2BAA2B,GAAyD;IAC/F,QAAQ,EAAE;QACR,iBAAiB,EAAE,IAAI;QACvB,mBAAmB,EAAE,IAAI;QACzB,mBAAmB,EAAE,IAAI;QACzB,oBAAoB,EAAE,IAAI;QAC1B,aAAa,EAAE,IAAI;QACnB,YAAY,EAAE,IAAI;QAClB,iBAAiB,EAAE,IAAI;QACvB,iBAAiB,EAAE,IAAI;KACxB;IACD,MAAM,EAAE;QACN,mBAAmB,EAAE,IAAI;QACzB,yBAAyB,EAAE,IAAI;QAC/B,uBAAuB,EAAE,IAAI;QAC7B,uBAAuB,EAAE,IAAI;QAC7B,oBAAoB,EAAE,GAAG;QACzB,oBAAoB,EAAE,GAAG;QACzB,uBAAuB,EAAE,SAAS;QAClC,WAAW,EAAE,cAAc;;;QAI3B,iBAAiB,EAAE,EAAE;QACrB,iBAAiB,EAAE,CAAC;QACpB,wBAAwB,EAAE,IAAI;QAC9B,wBAAwB,EAAE,IAAI;QAC9B,sBAAsB,EAAE,IAAI;QAC5B,sBAAsB,EAAE,IAAI;;QAG5B,aAAa,EAAE,EAAE;QACjB,aAAa,EAAE,CAAC;QAEhB,kBAAkB,EAAE,YAAY,CAAC,GAAG;QAEpC,YAAY,EAAE,KAAK;QAEnB,gBAAgB,EAAE,IAAI;QACtB,kBAAkB,EAAE,IAAI;QACxB,kBAAkB,EAAE,IAAI;;;QAIxB,wCAAwC,EAAE,IAAI;;QAG9C,uBAAuB,EAAE,IAAI;KAC9B;EACD;AAEF;SACgB,sBAAsB,CAA2B,kBAA4C;IAC3G,OAAO;QACL,QAAQ,EAAE,kBAAkB,CAAC,QAAQ;QACrC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,2BAA2B,CAAC,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,IAAI,EAAE,CAAC;QACpG,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,2BAA2B,CAAC,MAAM,EAAE,kBAAkB,CAAC,MAAM,IAAI,EAAE,CAAC;QAC9F,cAAc,EAAE,kBAAkB,CAAC,cAAc,IAAI,EAAO;KAC7D,CAAC;AACJ;;AC3IA;MACa,kBAAkB,GAAG,IAAI,MAAM,CAAC,CAAC,iGAAiG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;IAE/I;AAAZ,WAAY,kBAAkB;IAC5B,wEAAkD,CAAA;AACpD,CAAC,EAFW,kBAAkB,KAAlB,kBAAkB;;ACd9B;AAOA;MACa,yBAAyB,GAAG,IAAI,cAAc,CAAqB,2BAA2B,EAAE;MAChG,2BAA2B,GAAG,IAAI,cAAc,CAAuB,6BAA6B,EAAE;MACtG,2BAA2B,GAAG,IAAI,cAAc,CAAsB,6BAA6B,EAAE;AAElH;MACa,sBAAsB,GAAG,IAAI,cAAc,CAAoB,wBAAwB,EAAE;MACzF,iCAAiC,GAAG,IAAI,cAAc,CAA6B,mCAAmC,EAAE;AAErI;MACa,0BAA0B,GAAG,IAAI,cAAc,CAAwB,4BAA4B,EAAE;MACrG,oBAAoB,GAAG,IAAI,cAAc,CAAkB,sBAAsB,EAAE;AAEhG;MACa,yBAAyB,GAAG,IAAI,cAAc,CAAqB,2BAA2B,EAAE;MAChG,wBAAwB,GAAG,IAAI,cAAc,CAAoB,0BAA0B,EAAE;MAC7F,wBAAwB,GAAG,IAAI,cAAc,CAAoB,6CAA6C,EAAE;MAChH,uBAAuB,GAAG,IAAI,cAAc,CAAmB,yBAAyB,EAAE;MAC1F,8BAA8B,GAAG,IAAI,cAAc,CAA4B,gCAAgC;;MCrB/G,gBAAgB;IAOzB,YAC6E,SAA6B;QAA7B,cAAS,GAAT,SAAS,CAAoB;;QAL1G,aAAQ,GAAG,CAAO,IAAY,EAAE,MAA+B,oDAAO,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,CAAA,CAAC;QAC3H,kBAAa,GAAG,CAAC,UAAkB,EAAE,WAAoB,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;QAChF,cAAS,GAAG,CAAC,MAAqB,QAAQ,CAAC;QAKvC,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;YACxC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;YAClD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;SAC7C;KACJ;;;YAhBJ,UAAU;;;4CASF,QAAQ,YAAI,MAAM,SAAC,UAAU,CAAC,MAAM,yBAAyB,CAAC;;;MCR1D,kBAAkB;IAO3B,YAC+E,mBAAyC;QAAzC,wBAAmB,GAAnB,mBAAmB,CAAsB;;QALhH,qBAAgB,GAAG,CAAC,QAAyC,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;QACpF,mBAAc,GAAG,CAAC,OAAe,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;QACxD,eAAU,GAAG,CAAC,GAAkB,QAAQ,CAAC;QAK7C,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC1B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC;YACjE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC;SAChE;KACJ;IAED,SAAS,CAAC,GAAkB;QACxB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;KACxB;IAED,eAAe,CAAC,OAAyD;QACrE,IAAI,CAAC,GAAoC,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;QACjF,IAAI,QAAQ,KAAK,OAAO,OAAO,EAAE;YAC7B,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC;SACvB;aAAM,IAAI,OAAO,YAAY,KAAK,EAAE;YACjC,CAAC,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;SAC/B;aAAM,IAAI,CAAC,CAAC,OAAO,EAAE;YAClB,CAAC,GAAG,OAAO,CAAC;SACf;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;KACnC;IAED,aAAa,CAAC,OAAe;QACzB,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,OAAO,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;KACvC;;;YApCJ,UAAU;;;4CASF,QAAQ,YAAI,MAAM,SAAC,UAAU,CAAC,MAAM,2BAA2B,CAAC;;;MCR5D,oBAAoB;IAC7B,KAAK,MAAM;IACX,IAAI,MAAM;IACV,YAAY,CAAC,GAAW,EAAE,KAAU,KAAK;CAC5C;MAGY,kBAAkB;IAQ3B,YACgB,mBAA2C;QAP3D,0BAAqB,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAS3C,IAAI,mBAAmB,EAAE;YACrB,IAAI,CAAC,WAAW,GAAG,mBAAmB,CAAC,KAAK,CAAC;SAChD;KACJ;IAVD,WAAW,CAAC,KAAa;QACrB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;KACtD;;;;YAPJ,UAAU,SAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;YATzB,sBAAsB,uBAmBtB,QAAQ;;;MCbJ,eAAe;IAUxB,YACY,kBAAsC,EACtC,gBAAkC,EAClC,kBAAsC;QAFtC,uBAAkB,GAAlB,kBAAkB,CAAoB;QACtC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,uBAAkB,GAAlB,kBAAkB,CAAoB;QAXlD,oBAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACxF,kBAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAEpF,kBAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAChF,aAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEtE,gBAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;KAOjD;IAEK,SAAS,CAAC,MAAqB;;YACjC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACxC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;SAC7C;KAAA;;;;YArBJ,UAAU,SAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;YAHzB,kBAAkB;YADlB,gBAAgB;YAEhB,kBAAkB;;;ACE3B,MAAM,eAAe,GAAG,QAAQ,CAAC;MASpB,oBAAoB;IAE/B,YACS,GAAqB,EACrB,IAAqB;QADrB,QAAG,GAAH,GAAG,CAAkB;QACrB,SAAI,GAAJ,IAAI,CAAiB;KAE7B;IAEY,WAAW,CAAC,GAAW;;YAClC,IAAI;gBACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC;gBACjE,OAAO,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;aAC3B;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBACjC,OAAO,IAAI,CAAC;aACb;SACF;KAAA;IAEO,kBAAkB,CAAC,GAAW;QACpC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,eAAe,IAAI,GAAG,EAAE,CAAC,CAAC;KAClD;IAEY,WAAW,CAAC,GAAW,EAAE,IAA0B,EAAE,OAAoB;;YACpF,IAAI;gBACF,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,eAAe,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;aACrE;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;aAClC;SACF;KAAA;IAEY,cAAc,CAAC,GAAW,EAAE,IAA0B;;YACjE,IAAI;gBACF,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,MAAM,iCAAM,IAAI,KAAE,GAAG,IAAG,CAAC;aAC9D;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;aAClC;SACF;KAAA;;;;YAvCF,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;YAbQ,gBAAgB;YAGhB,eAAe;;;MCKX,SAAS;IAiBlB,YAC+D,YAA8B,EAC7B,YAA+B,EAC9B,cAAkC,EAC7B,cAAyC,EACnG,IAAqB;QAJ8B,iBAAY,GAAZ,YAAY,CAAkB;QAC7B,iBAAY,GAAZ,YAAY,CAAmB;QAC9B,mBAAc,GAAd,cAAc,CAAoB;QAC7B,mBAAc,GAAd,cAAc,CAA2B;QACnG,SAAI,GAAJ,IAAI,CAAiB;QApBjC,UAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxD,gBAAW,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACpE,eAAU,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAElE,YAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5D,cAAS,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAChE,eAAU,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAClE,sBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAChF,eAAU,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAElE,kBAAa,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5E,iBAAY,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAE1E,eAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KASrE;IAED,QAAQ,CAAC,KAAY,EAAE,aAA6B;QAChD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,aAAa,KAAK,IAAI,EAAE;YACxB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;SACtD;KACJ;;;;YAjCJ,UAAU,SAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;4CAmBzB,MAAM,SAAC,UAAU,CAAC,MAAM,uBAAuB,CAAC;4CAChD,MAAM,SAAC,UAAU,CAAC,MAAM,wBAAwB,CAAC;4CACjD,MAAM,SAAC,UAAU,CAAC,MAAM,yBAAyB,CAAC;4CAClD,MAAM,SAAC,UAAU,CAAC,MAAM,8BAA8B,CAAC;YAxBvD,eAAe;;;MCqBX,kBAAkB;IA0F7B,YACyD,MAAuB,EACT,YAA+B,EACpB,WAAuC,EAC/G,gBAAsC,EACtC,GAAoB;IACpB,IAAqB,EACrB,EAAa;QANkC,WAAM,GAAN,MAAM,CAAiB;QACT,iBAAY,GAAZ,YAAY,CAAmB;QACpB,gBAAW,GAAX,WAAW,CAA4B;QAC/G,qBAAgB,GAAhB,gBAAgB,CAAsB;QACtC,QAAG,GAAH,GAAG,CAAiB;QACpB,SAAI,GAAJ,IAAI,CAAiB;QACrB,OAAE,GAAF,EAAE,CAAW;QA/FP,mBAAc,GAAsB,IAAI,YAAY,EAAO,CAAC;QAC5D,oBAAe,GAAuB,IAAI,YAAY,EAAQ,CAAC;QAC/D,sBAAiB,GAAuB,IAAI,YAAY,EAAQ,CAAC;QACjE,qBAAgB,GAAuB,IAAI,YAAY,EAAQ,CAAC;QAChE,yBAAoB,GAA2B,IAAI,YAAY,EAAY,CAAC;QAC5E,yBAAoB,GAAuB,IAAI,YAAY,EAAQ,CAAC;QACpE,sBAAiB,GAAsB,IAAI,YAAY,EAAO,CAAC;;;;;QAMvE,WAAM,GAAG,IAAI,eAAe,CAAc,IAAI,CAAC,CAAC;QAKxC,UAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;;;;QAK9B,gBAAW,GAAG,IAAI,eAAe,CAAc,IAAI,CAAC,CAAC;QAC7C,eAAU,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;;;;;QAMzC,SAAI,GACT,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,GAAG,CAAC,IAAI,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,GAAG,KAAI,IAAI,CAAC,EAC9B,oBAAoB,EAAE,CACvB,CAAC;;;;;QAMY,gBAAW,GAAwB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;QAC/E,iBAAY,GAAwB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QACpG,iBAAY,GAAwB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QACrG,oBAAe,GAAwB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;QACvG,aAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;QAC5B,iBAAY,GAAwB,IAAI,CAAC,eAAe,CAAC;QACzD,eAAU,GAAwB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACxF,sBAAiB,GAC/B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;QAC3E,gBAAW,GAAwB,IAAI,CAAC,YAAY,CAAC;;;;QAKrD,eAAU,GAAqB,IAAI,CAAC,UAAU,CAAC,IAAI,CACjE,MAAM,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,EAC7B,GAAG,CAAC,QAAQ,OAAO,EAAE,CAAC,CACvB,CAAC;;;;QAKc,cAAS,GAAqB,IAAI,CAAC,UAAU,CAAC,IAAI,CAChE,MAAM,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,EAC7B,GAAG,CAAC,IAAI,IAAI,IAAY,CAAC,CAC1B,CAAC;;;;QAsBe,oBAAe,GAAkB,IAAI,OAAO,EAAQ,CAAC;QAWpE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACxD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAC5E,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI;YAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,GAAG,KAAI,IAAI,CAAC,CAAC;SACxC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;KAC/D;IA1FD,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;KAC1B;;;;IAsDD,IAAW,wBAAwB;QACjC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CACpB,GAAG,CAAC,IAAI,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,KAAI,EAAE;aAClC,GAAG,CAAC,IAAI;YACP,QAAQ,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU;gBACtB,KAAK,YAAY,EAAE,OAAO,YAAY,CAAC,MAAM,CAAC;gBAC9C;oBAAS,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;oBAAC,OAAO;aAChD;SACF,CAAC;aACD,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAmB,CAC1C,CACF,CAAC;KACH;;;;IA2BD,IAAI,aAAa;QACf,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;KAC5E;;;;;;;IAQK,mBAAmB,CAAC,QAAsB;;YAC9C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,KAAK,YAAY,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBACxH,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,WAAW,KAAI,MAAM,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAA,CAAC,CAAC,CAAC;SACzG;KAAA;;;;IAKY,YAAY;;YACvB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;YACxC,IAAI,IAAI,EAAE;gBACR,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC5B,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;aACnC;SACF;KAAA;;;;;;;IAQM,sBAAsB,CAAI,KAAa;QAC5C,OAAO,IAAI,UAAU,CAAuB,UAAU;;;YAGpD,MAAM,kBAAkB,GAAG,CAAO,IAAiB;gBACjD,IAAI,IAAI,EAAE;oBACR,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBAC5C,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;iBACtC;qBAAM;oBACL,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACvB;aACF,CAAA,CAAC;;YAEF,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;gBAC7B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;gBACxC,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;aAChC,CAAA,CAAC,CAAC;;YAEH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAM,IAAI;gBAChC,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;aAChC,CAAA,CAAC,CAAC;SACJ,CAAC,CAAC;KACJ;;;;;;;IAQM,mBAAmB,CAAI,KAAa;QACzC,OAAO,IAAI,CAAC,sBAAsB,CAAI,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;KACxE;;;;;;;IAQY,aAAa,CAAC,KAAa;;YACtC,IAAI;gBACF,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAAC,CAAC;gBACrD,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;gBACvC,IAAI,CAAC,EAAE,CAAC,KAAK,CACX,uCAAuC,EACvC,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAAE,iBAAiB,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAC3G,CAAC;aACH;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aAC/B;SACF;KAAA;;;;;;;;;;;;;;;IAgBY,UAAU,CAAC,QAAsB,EAAE,OAAwB;;;YAEtE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gCAAgC,QAAQ,EAAE,CAAC,CAAC;YACpE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;YAC9C,IAAI;gBACF,IAAI,QAAQ,GAA0B,IAAI,CAAC;gBAE3C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;;;;;gBAM/C,IAAI,YAAY,GAAQ,IAAI,CAAC;gBAC7B,IAAI,WAAW,IAAI,WAAW,CAAC,WAAW,WAAI,IAAI,CAAC,YAAY,0CAAE,kBAAkB,CAAA,IAAI,QAAQ,KAAK,YAAY,CAAC,SAAS,EAAE;oBAC1H,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;iBACxE;gBAED,QAAQ,QAAQ;oBACd,KAAK,YAAY,CAAC,SAAS;wBACzB,IAAI,WAAW,EAAE;4BACf,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;yBACrF;wBACD,IAAI,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;4BACxC,OAAO,CAAC,OAAO,EAAE,CAAC;4BAClB,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC;4BAC9C,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;4BACxD,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;yBACzB;wBACD,MAAM;oBAER,KAAK,YAAY,CAAC,gBAAgB;wBAChC,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;4BAC3C,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;yBACzE;wBACD,IAAI,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,CAAA,EAAE;4BACzB,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;yBAChG;wBACD,OAAO,CAAC,OAAO,EAAE,CAAC;wBAClB,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;wBAC9G,IAAI,EAAC,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA,EAAE;4BAC7C,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;4BACrB,QAAQ,GAAG,IAAI,CAAC;yBACjB;wBAAA,CAAC;wBACF,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;wBACxB,MAAM;oBAER,KAAK,YAAY,CAAC,WAAW;;wBAE3B,MAAM;oBAER;wBACE,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;wBACtD,MAAM;iBACT;;gBAGD,IAAI,QAAQ,EAAE;oBACZ,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,yBAAyB,EAAE;wBAChD,MAAM,cAAc,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,yBAAyB;8BACpF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,yBAAyB;8BAC5C,SAAS,QAAQ,CAAC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE,GAAG,CAAC;wBAC3E,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC,CAAC;qBACzF;;oBAGD,IAAI,QAAQ,CAAC,IAAI,IAAI,YAAY,WAAI,IAAI,CAAC,YAAY,0CAAE,kBAAkB,CAAA,EAAE;wBAC1E,IAAI;4BACF,MAAM,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;yBACzE;wBAAC,OAAO,KAAK,EAAE;;;4BAGd,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;yBAClC;qBACF;oBACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;iBAC1C;gBAED,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;gBACxB,OAAO,QAAQ,IAAI,IAAI,CAAC;aAEzB;YAAC,OAAO,KAAK,EAAE;;gBAEd,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC9B,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;gBACxB,OAAO,IAAI,CAAC;aACb;;KACF;;;;;IAMY,yBAAyB,CAAC,QAAsB,EAAE,OAAwB;;YAErF,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,uCAAuC,QAAQ,EAAE,CAAC,CAAC;YAC3E,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;YAC9C,IAAI;gBACF,IAAI,QAAQ,GAA0B,IAAI,CAAC;;gBAG3C,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;gBAC/C,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,WAAW,EAAE;oBAC3C,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;iBACtF;gBAED,OAAO,CAAC,OAAO,EAAE,CAAC;gBAElB,QAAQ,QAAQ;oBACd,KAAK,YAAY,CAAC,SAAS;wBACzB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;oBAEtE,KAAK,YAAY,CAAC,gBAAgB;wBAChC,IAAI,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,CAAA,EAAE;4BACzB,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;yBACtG;wBACD,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;4BACtB,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;yBAClF;wBACD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;4BAClB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;yBAC/C;wBACD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,kDAAkD,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;wBACvG,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;wBAC7G,QAAQ,GAAG,MAAM,WAAW,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;wBACpE,MAAM;oBAER,KAAK,YAAY,CAAC,WAAW;;wBAE3B,MAAM;oBAER;wBACE,IAAI,IAAI,CAAC,WAAW,KAAI,MAAM,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAA,EAAE;4BAC5E,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;4BACnE,IAAI,WAAW,EAAE;gCACf,QAAQ,GAAG,MAAM,WAAW,CAAC,4BAA4B,CAAC,WAAW,CAAC,CAAC;6BACxE;yBACF;6BAAM,IAAI,IAAI,CAAC,aAAa,EAAE;4BAC7B,QAAQ,GAAG,MAAM,WAAW,CAAC,uBAAuB,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;yBACtF;6BAAM;4BACL,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;yBACpG;wBACD,MAAM;iBACT;gBAED,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;gBACxB,OAAO,QAAQ,IAAI,IAAI,CAAC;aAEzB;YAAC,OAAO,KAAK,EAAE;;gBAEd,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC9B,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;gBACxB,OAAO,IAAI,CAAC;aACb;SACF;KAAA;;;;;;IAOY,yBAAyB,CAAC,QAAsB,EAAE,OAAwB;;YAErF,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,mDAAmD,QAAQ,EAAE,CAAC,CAAC;YACvF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;YAC9C,IAAI;gBACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;gBAC/C,IAAI,IAAI,KAAK,WAAW,EAAE;oBACxB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;iBACxC;gBAED,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;gBACxB,IAAI,QAAQ,GAA0B,IAAI,CAAC;gBAC3C,QAAQ,QAAQ;oBACd,KAAK,YAAY,CAAC,SAAS;wBACzB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;oBAE3D,KAAK,YAAY,CAAC,gBAAgB;wBAChC,IAAI,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,CAAA,EAAE;4BACzB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;yBACxE;wBACD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;4BAClB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;yBAC/C;wBACD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,kDAAkD,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;wBACvG,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;wBACrH,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,gDAAgD,CAAC,CAAC;wBAC1E,QAAQ,GAAG,MAAM,WAAW,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;wBAC1D,MAAM;oBAER,KAAK,YAAY,CAAC,WAAW;wBAC3B,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;oBAEvD;wBACE,IAAI,IAAI,CAAC,WAAW,KAAI,MAAM,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAA,EAAE;4BAC5E,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;4BACnE,IAAI,WAAW,EAAE;gCACf,QAAQ,GAAG,MAAM,WAAW,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;6BAC9D;yBACF;6BAAM,IAAI,IAAI,CAAC,aAAa,EAAE;4BAC7B,QAAQ,GAAG,MAAM,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;yBAC5E;6BAAM;4BACL,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;yBACpG;iBACJ;gBAED,IAAI,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE;oBAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACnD,IACE,QAAQ,CAAC,WAAW;4BAChB,QAAQ,CAAC,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,WAAW,CAAC,EAC1G;wBACA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,sCAAsC,QAAQ,CAAC,WAAW,cAAc,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;wBACrH,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;qBAC/F;iBACF;gBAED,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;gBACxB,OAAO,QAAQ,IAAI,IAAI,CAAC;aAEzB;YAAC,OAAO,KAAK,EAAE;;gBAEd,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC9B,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;gBACxB,OAAO,IAAI,CAAC;aAEb;SACF;KAAA;;;;;IAMY,YAAY,CAAC,QAAsB,EAAE,OAAwB;;YAExE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,qCAAqC,QAAQ,EAAE,CAAC,CAAC;YACzE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;YAC9C,IAAI;;;gBAIF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;gBAC/C,IAAI,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,EAAE;oBAC5B,OAAO,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;iBAC1D;qBAAM,IAAI,IAAI,KAAK,WAAW,EAAE;oBAC/B,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;iBAC5F;qBAAM,IAAI,EAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA,EAAE;oBAChD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,mCAAmC,CAAC,CAAC;oBAC7D,OAAO,IAAI,CAAC;iBACb;gBAED,IAAI,QAAQ,GAA0B,IAAI,CAAC;gBAC3C,QAAQ,QAAQ;oBAEd,KAAK,YAAY,CAAC,gBAAgB;wBAChC,IAAI,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,CAAA,IAAI,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,WAAW,CAAA,EAAE;4BAClD,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;yBAC1E;wBACD,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;wBACxB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,iDAAiD,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;wBACtG,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,8BAA8B,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;wBAClH,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE;4BAC1B,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;yBAC7D;wBACD,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;wBAChE,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;wBACxD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAAE;4BAC9C,MAAM,QAAQ,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;yBAC7C;wBACD,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;wBACxB,MAAM;oBAER;wBACE,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,kCAAO,OAAO,KAAE,YAAY,EAAE,IAAI,IAAG,CAAC;iBAEpF;gBAED,IAAI,QAAQ,CAAC,IAAI,EAAE;oBACjB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;iBAC5C;gBACD,OAAO,QAAQ,IAAI,IAAI,CAAC;aACzB;YAAC,OAAO,KAAK,EAAE;;gBAEd,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC9B,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;gBACxB,OAAO,IAAI,CAAC;aACb;SAEF;KAAA;;;;;;;;IASa,YAAY,CAAC,QAAsB,EAAE,OAAuB;;YACxE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;YAC/C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;YAC9C,IAAI,QAA+B,CAAA;YACnC,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;gBAC3C,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;aACzE;YACD,IAAI,IAAI,CAAC,WAAW,KAAI,MAAM,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAA,EAAE;gBAC5E,OAAO,CAAC,OAAO,EAAE,CAAC;gBAClB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACnE,IAAI,WAAW,EAAE;oBACf,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;iBAC7D;gBACD,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;aACzB;iBAAM,IAAI,IAAI,CAAC,aAAa,EAAE;gBAC7B,OAAO,CAAC,OAAO,EAAE,CAAC;gBAClB,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC1E,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;;;;;;;aAOzB;iBAAM;gBACL,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;aACpG;YACD,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;YACxB,IAAI,EAAC,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA,EAAE;gBAC7C,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;gBACrB,QAAQ,GAAG,IAAI,CAAC;aACjB;YAAA,CAAC;YACF,OAAO,QAAQ,CAAC;SACjB;KAAA;;;;;;;IAQa,UAAU,CAAC,WAAkC,IAAI,EAAE,UAAsC,EAAE;;;YACvG,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE;gBACpE,IAAI,WAAW,GAAkB,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;gBAE1F,IAAI,CAAC,WAAW,KAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,CAAA,IAAI,QAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,kBAAkB,0CAAE,SAAS,CAAA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE;oBACxH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5E,WAAW,GAAG,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW,KAAI,IAAI,CAAC;iBAC7C;gBAED,IAAI,CAAC,WAAW,KAAI,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,CAAA,EAAE;oBAC9C,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;iBACxC;gBAED,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,KAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE;oBAC5D,MAAM,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC9F;gBAED,OAAO,CAAC,CAAC,WAAW,CAAC;aAEtB;iBAAM;gBACL,OAAO,IAAI,CAAC;aACb;;KACF;;;;IAKK,wBAAwB;;YAC5B,IAAI;gBACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;gBAC/C,IAAI,CAAC,WAAW,EAAE;oBAChB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;iBACtC;gBACD,MAAM,WAAW,CAAC,qBAAqB,EAAE,CAAC;aAC3C;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBACjC,MAAM,KAAK,CAAC;aACb;SACF;KAAA;;;;IAKK,OAAO;;YACX,IAAI;gBACF,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,WAAW,EAAE;oBACpB,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;iBAC5B;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aAC/B;SACF;KAAA;;;;;;;IAQY,cAAc,CAAC,QAA2B;;YACrD,IAAI;gBACF,MAAM,IAAI,GAAgB,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;gBACrD,IAAI,CAAC,IAAI,EAAE;oBACT,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;iBACnC;gBAED,IAAI,QAAQ,CAAC,KAAK,EAAE;oBAClB,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;iBACxC;gBAED,IAAI,QAAQ,CAAC,WAAW,EAAE;oBACxB,MAAM,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,WAAkB,CAAC,CAAC;iBAC3D;gBAED,IAAI,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,QAAQ,EAAE;oBAC7C,MAAM,IAAI,CAAC,aAAa,CAAC;wBACvB,WAAW,EAAE,QAAQ,CAAC,WAAW;wBACjC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;qBAC5B,CAAC,CAAC;iBACJ;gBACD,MAAM,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBAEvC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE;;oBAE1C,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE;wBACnD,WAAW,EAAE,IAAI,CAAC,WAAW;wBAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;qBACxB,CAAC,CAAC;iBACJ;gBAED,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;aAElC;YAAC,OAAO,KAAK,EAAE;gBACd,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;aAClC;SACF;KAAA;;;;;;IAOM,aAAa,CAAC,IAAU;QAC7B,MAAM,QAAQ,GAAa;YACzB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;QACF,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI;gBAC5B,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,CAAA,EAAE;oBAAE,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;iBAAE;gBAC5F,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,KAAK,CAAA,EAAE;oBAAE,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;iBAAE;gBACpE,IAAI,CAAC,QAAQ,CAAC,WAAW,KAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,WAAW,CAAA,EAAE;oBAAE,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;iBAAE;gBAC5F,IAAI,CAAC,QAAQ,CAAC,QAAQ,KAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,QAAQ,CAAA,EAAE;oBAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;iBAAE;gBAChF,IAAI,CAAC,QAAQ,CAAC,UAAU,KAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,CAAA,EAAE;oBAAE,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;iBAAE;aACzF,CAAC,CAAC;SACJ;QACD,OAAO,QAAQ,CAAC;KACjB;;;;;IAMM,eAAe;QACpB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CACpB,GAAG,CAAC,CAAC,IAAiB;YACpB,IAAI,CAAC,IAAI,EAAE;gBACT,OAAO,IAAI,CAAC;aACb;iBAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACxB,OAAO,IAAI,CAAC,QAAQ,CAAC;aACtB;iBAAM,IAAI,IAAI,CAAC,aAAa,EAAE;gBAC7B,OAAO,eAAe,QAAQ,CAAC,KAAK,MAAM,CAAC;aAC5C;iBAAM,IAAI,IAAI,CAAC,WAAW,EAAE;gBAC3B,OAAO,eAAe,QAAQ,CAAC,GAAG,MAAM,CAAC;aAC1C;iBAAM;gBACL,OAAO,eAAe,QAAQ,CAAC,IAAI,MAAM,CAAC;aAC3C;SACF,CAAC,CACH,CAAC;KACH;;;;IAKK,cAAc;;YAClB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;YACxD,IAAI,IAAI,EAAE;gBACR,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;aACrB;SACF;KAAA;;;;IAKK,UAAU;;;YACd,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;YAC/C,MAAM,UAAU,GAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,GAAG,CAAC;YACpC,IAAI,CAAC,WAAW,IAAI,CAAC,UAAU,EAAE;gBAC/B,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;aACzD;YACD,MAAM,SAAS,GAAG,OAAC,IAAI,CAAC,YAAY,0CAAE,YAAY,IAAI,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;;YAE/G,IAAI,SAAS,EAAE;gBACb,IAAI;;oBAEF,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;oBAC3B,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;iBAClC;gBAAC,OAAO,KAAK,EAAE;oBACd,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,CAAC,mBAAmB,EAAE;wBACzD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;qBAClC;oBACD,OAAO,KAAK,EAAE;iBACf;aACF;;KACF;;;;IAKK,WAAW,CAAC,KAAU;;YAC1B,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YACvC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAAE;gBAC9C,IAAI,OAAO,GAAW,yBAAyB,CAAC;gBAChD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;oBACtC,OAAO,GAAG,KAAK,CAAC;iBACjB;qBAAM,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE;oBACjC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;iBACzB;qBAAM,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;oBAC7C,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;iBACjC;qBAAM,IAAI,KAAK,EAAE;oBAChB,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;iBAC5B;gBACD,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC,CAAC;aACxF;SACF;KAAA;;;;IAKO,eAAe,CAAC,QAAsB;QAC5C,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;YAClB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;SAC/C;QACD,QAAQ,QAAQ;YACd,KAAK,YAAY,CAAC,MAAM,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxE,KAAK,YAAY,CAAC,KAAK,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YAC7E,KAAK,YAAY,CAAC,QAAQ,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5E,KAAK,YAAY,CAAC,OAAO,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC1E,KAAK,YAAY,CAAC,MAAM,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACxE,KAAK,YAAY,CAAC,SAAS,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;YACrF,KAAK,YAAY,CAAC,KAAK,EAAE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;YAC7E,SAAS,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,oCAAoC,CAAC,CAAC;SAC3E;KACF;;;;YAlwBF,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;4CA4FI,MAAM,SAAC,UAAU,CAAC,MAAM,oBAAoB,CAAC;4CAC7C,QAAQ,YAAI,MAAM,SAAC,UAAU,CAAC,MAAM,sBAAsB,CAAC;4CAC3D,QAAQ,YAAI,MAAM,SAAC,UAAU,CAAC,MAAM,iCAAiC,CAAC;YA1GlE,oBAAoB;YAHpB,eAAe;YAWf,eAAe;YADf,SAAS;;;ICrBN;AAAZ,WAAY,YAAY;IACpB,2CAAM,CAAA;IACN,6CAAQ,CAAA;IACR,6CAAQ,CAAA;IACR,6CAAQ,CAAA;IACR,8CAAS,CAAA;AACb,CAAC,EANW,YAAY,KAAZ,YAAY;;ACMxB;;;MAGa,2BAA2B;IAAxC;QAcE,gBAAW,GAAoB,IAAI,YAAY,EAAK,CAAC;QAMrD,oBAAe,GAA4B,CAAC,CAAI,QAAQ,CAAC;QACzD,mBAAc,GAA4B,CAAC,CAAI,QAAQ,CAAC;QACxD,6BAAwB,GAA2B,SAAS,CAAC;KAkB9D;IAtCC,IACI,KAAK,KAAoB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE;IAClD,IAAI,KAAK,CAAC,GAAkB;QAC1B,IAAI,GAAG,EAAE;YACP,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;YAClB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;SAC3B;KACF;IAMD,QAAQ,CAAC,OAAwB;QAC/B,OAAO,IAAI,CAAC;KACb;IAMD,UAAU,CAAC,KAAQ;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;IAED,gBAAgB,CAAC,EAA2B;QAC1C,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;KAC3B;IAED,iBAAiB,CAAC,EAA2B;QAC3C,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;KAC1B;IAED,yBAAyB,CAAC,EAA0B;QAClD,IAAI,CAAC,wBAAwB,GAAG,EAAE,CAAC;KACpC;;;oBApCA,KAAK;0BAWL,MAAM;;;ACjBT;;;MAGa,6BAA6B;IA4BxC,YACU,QAAkB,EAClB,KAAwB;QADxB,aAAQ,GAAR,QAAQ,CAAU;QAClB,UAAK,GAAL,KAAK,CAAmB;QAnBxB,aAAQ,GAAwB,IAAI,aAAa,EAAQ,CAAC;QAepE,gBAAW,GAAgC,IAAI,YAAY,EAAiB,CAAC;QAgC7E,oBAAe,GAAG,CAAC,GAAkB,QAAQ,CAAC;QAC9C,mBAAc,GAAG,SAAS,CAAC;QAC3B,6BAAwB,GAAG,SAAS,CAAC;KA7BhC;IA3BL,IAAY,QAAQ;QAClB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;SACjG;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;IAID,IACI,KAAK,CAAC,GAAkB;QAC1B,IAAI,GAAG,EAAE;YACP,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SAC7B;aAAM;YACL,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;SACvB;KACF;IACD,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;KAC5B;IAUD,QAAQ;QACN,IAAI,CAAC,QAAQ,CAAC,YAAY;aACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC9B,SAAS,CAAC,GAAG;YACZ,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;gBACvB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;gBAC1B,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAC5B;SACF,CAAC,CAAC;QACL,IAAI,CAAC,QAAQ,CAAC,aAAa;aACxB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC9B,SAAS,CAAC,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC;KACrD;IAED,eAAe;QACb,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;KAC5B;IAED,WAAW;QACT,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KAC1B;IAMD,UAAU,CAAC,KAAoB;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;IAED,gBAAgB,CAAC,EAAO;QACtB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;KAC3B;IAED,iBAAiB,CAAC,EAAO;QACvB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;KAC1B;IAED,yBAAyB,CAAC,EAAc;QACtC,IAAI,CAAC,wBAAwB,GAAG,EAAE,CAAC;KACpC;IAED,gBAAgB,CAAC,UAAmB;QAClC,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;SACzB;aAAM;YACL,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;SACxB;KACF;IAED,QAAQ,CAAC,OAAwB;QAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;KAC7B;;;oBA3EA,KAAK;0BAYL,MAAM;;;MCtBI,aAAa;IACxB,YAEU,MAAuB,EACvB,MAAc,EACd,GAAuB;QAFvB,WAAM,GAAN,MAAM,CAAiB;QACvB,WAAM,GAAN,MAAM,CAAQ;QACd,QAAG,GAAH,GAAG,CAAoB;KAEhC;IAEO,YAAY,CAAC,WAAoB;QACvC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CACxB,IAAI,CAAC,CAAC,CAAC,EACP,GAAG,CAAC,CAAC,IAAiB;YACpB,IAAI,IAAI,EAAE;gBACR,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,wCAAwC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;oBACtF,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAAE;wBAC9C,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAC9B,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,WAAW,EAAE,EAAE,CACpF,CAAC;qBACH;yBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE;wBAClD,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAC9B,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,WAAW,EAAE,EAAE,CACjF,CAAC;qBACH;yBAAM;wBACL,OAAO,KAAK,CAAC;qBACd;iBACF;qBAAM;oBACL,OAAO,IAAI,CAAC;iBACb;aACF;iBAAM;gBACL,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE;oBAC3C,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAC9B,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,WAAW,EAAE,EAAE,CACjF,CAAC;iBACH;gBACD,OAAO,KAAK,CAAC;aACd;SACF,CAAC,CACH,CAAC;KACH;IAED,OAAO,CAAC,KAAY,EAAE,QAAsB;QAC1C,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;KACtD;IAED,WAAW,CAAC,KAA6B,EAAE,KAA0B;QACnE,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KACrC;;;;YAlDF,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;4CAGI,MAAM,SAAC,oBAAoB;YAZ8B,MAAM;YAI3D,kBAAkB;;;MCKd,gBAAgB;IAC3B,YAEU,MAAuB,EACvB,MAAc,EACd,GAAuB;QAFvB,WAAM,GAAN,MAAM,CAAiB;QACvB,WAAM,GAAN,MAAM,CAAQ;QACd,QAAG,GAAH,GAAG,CAAoB;KAEhC;IAED,WAAW,CAAC,KAA6B,EAAE,KAA0B;QACnE,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CACxB,GAAG,CAAC,IAAI;YACN,IAAI,IAAI;mBACH,CAAC,IAAI,CAAC,aAAa;mBACnB,CAAC,IAAI,CAAC,WAAW;mBACjB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAC7C;gBACA,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;aAClI;iBAAM;gBACL,OAAO,IAAI,CAAC;aACb;SACF,CAAC,CACH,CAAC;KACH;;;;YA1BF,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;4CAGI,MAAM,SAAC,oBAAoB;YAXc,MAAM;YAI3C,kBAAkB;;;ACL3B;AA2CA,MAAM,OAAO,GAAG;IACd,gBAAgB;IAChB,qBAAqB;IACrB,sBAAsB;IACtB,0BAA0B;CAC3B,CAAC;MAaW,eAAe;IAE1B,OAAO,OAAO,CACZ,MAA6B,EAC7B,iBAA2C,MAAM,SAAS;;QAE1D,OAAO;YACL,QAAQ,EAAE,eAAe;YACzB,SAAS,EACP;gBACE;oBACE,OAAO,EAAE,0BAA0B;oBACnC,QAAQ,EAAE,MAAM;iBACjB;gBACD;oBACE,OAAO,EAAE,oBAAoB;oBAC7B,UAAU,EAAE,sBAAsB;oBAClC,IAAI,EAAE,CAAC,0BAA0B,CAAC;iBACnC;gBACD;oBACE,OAAO,EAAEA,QAAsB;oBAC/B,QAAQ,EAAE,MAAM,CAAC,cAAc;iBAChC;gBACD;oBACE,OAAO,EAAEC,QAAsB;oBAC/B,UAAU,EAAE,MAAM,SAAS,EAAE,GAAG,EAAE,0BAA0B,EAAE,OAAO,EAAE,GAAG,EAAE;iBAC7E;gBACD;oBACE,OAAO,EAAE,gBAAgB;oBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;iBAC1B;gBACD;oBACE,OAAO,EAAE,iBAAiB;oBAC1B,UAAU,EAAE,cAAc;iBAC3B;gBACD;oBACE,OAAO,EAAEC,YAAa;oBACtB,UAAU,EAAE,mBAAmB;oBAC/B,IAAI,EAAE,CAAC,oBAAoB,CAAC;iBAC7B;gBACD;oBACE,OAAO,EAAEC,cAAkB;oBAC3B,UAAU,EAAE,wBAAwB;oBACpC,IAAI,EAAE,CAAC,oBAAoB,CAAC;iBAC7B;gBACD;oBACE,OAAO,EAAEC,cAAkB;oBAC3B,UAAU,EAAE,wBAAwB;oBACpC,IAAI,EAAE,CAAC,oBAAoB,CAAC;iBAC7B;gBACD;oBACE,OAAO,EAAE,MAAM;oBACf,QAAQ,EAAE,OAAA,MAAM,CAAC,QAAQ,0CAAE,cAAc,KAAI,IAAI;iBAClD;gBACD;oBACE,OAAO,EAAE,sBAAsB;oBAC/B,UAAU,EAAE,0BAA0B;oBACtC,IAAI,EAAE;wBACJ,oBAAoB;wBACpB,WAAW;wBACX,CAAC,IAAI,QAAQ,EAAE,EAAE,uBAAuB,CAAC;wBACzC,CAAC,IAAI,QAAQ,EAAE,EAAE,uBAAuB,CAAC;wBACzC,MAAM;wBACN,WAAW;qBACZ;iBACF;gBACD;oBACE,OAAO,EAAE,uBAAuB;oBAChC,UAAU,EAAE,2BAA2B;oBACvC,IAAI,EAAE;wBACJ,oBAAoB;wBACpB,gBAAgB;wBAChB,iBAAiB;wBACjBH,QAAsB;wBACtBD,QAAsB;wBACtB,MAAM;wBACN,WAAW;qBACZ;iBACF;gBACD,gBAAgB;gBAChB,kBAAkB;gBAClB,eAAe;gBACf,SAAS;gBACT,mBAAmB;gBACnB,kBAAkB;gBAClB,oBAAoB;gBACpB,kBAAkB;gBAClB,eAAe;gBACf,aAAa;gBACb,gBAAgB;aACjB;SACJ,CAAC;KACH;;;YAvGF,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,GAAG,OAAO;oBACV,eAAe,CAAC,QAAQ,EAAE;oBAC1B,iBAAiB;iBAClB;gBACD,OAAO,EAAE;oBACP,GAAG,OAAO;oBACV,eAAe;iBAChB;aACF;;SAiGe,0BAA0B,CACxC,MAAuB,EACvB,GAAgB,EAChB,qBAA8B,EAC9B,sBAA+B,EAC/B,IAAY,EACZ,UAAe;IAEf,IAAI,MAAM,CAAC,QAAQ,CAAC,mBAAmB,EAAE;QACvC,OAAO,IAAI,sBAAsB,CAAC,GAAG,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;KACzG;IACD,OAAO,IAAI,CAAC;AACd,CAAC;SAEe,2BAA2B,CACzC,MAAuB,EACvB,OAAwB,EACxB,YAAwC,EACxC,QAA8B,EAC9B,aAA6B,EAC7B,IAAY,EACZ,UAAe;IAEf,IAAI,MAAM,CAAC,QAAQ,CAAC,oBAAoB,EAAE;QACxC,OAAO,IAAI,uBAAuB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;KACtG;IACD,OAAO,IAAI,CAAC;AACd,CAAC;SAEe,mBAAmB,CAAC,MAAuB;IACzD,IAAI,IAAI,KAAK,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE;QACzC,OAAO,SAAS,CAAC;KAClB;SAAM;QACL,OAAO,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC;KACrC;AACH,CAAC;SAEe,wBAAwB,CAAC,MAAuB;IAC9D,IAAI,IAAI,KAAK,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE;QAC9C,OAAO,SAAS,CAAC;KAClB;SAAM;QACL,OAAO,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC;KAC1C;AACH,CAAC;SAEe,wBAAwB,CAAC,MAAuB;IAC9D,IAAI,IAAI,KAAK,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE;QAC9C,OAAO,SAAS,CAAC;KAClB;SAAM;QACL,OAAO,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC;KAC1C;AACH;;AChNA;;;;;;"}
|
package/iap/iap.module.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { IAPProductOptions } from '@ionic-native/in-app-purchase-2/ngx';
|
|
2
|
-
export declare enum IAPProductTypes {
|
|
3
|
-
PAID_SUBSCRIPTION = "PAID_SUBSCRIPTION"
|
|
4
|
-
}
|
|
5
|
-
export interface MalIAPProductOptions extends IAPProductOptions {
|
|
6
|
-
type: IAPProductTypes;
|
|
7
|
-
}
|
|
8
|
-
export interface MalIAPOptions {
|
|
9
|
-
validatorUrl: string;
|
|
10
|
-
products: MalIAPProductOptions[];
|
|
11
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"MalIAPModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":7,"character":1},"arguments":[{}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["options"],"value":{"__symbolic":"error","message":"Reference to a non-exported function","line":27,"character":9,"context":{"name":"functionsInAppPurchase2Factory"},"module":"./iap.module"}}}},"IAPProductTypes":{"PAID_SUBSCRIPTION":"PAID_SUBSCRIPTION"},"MalIAPProductOptions":{"__symbolic":"interface"},"MalIAPOptions":{"__symbolic":"interface"},"MalIAPOptionsToken":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":4,"character":38},"arguments":["IAPOptionsToken"]},"slimDown":{"__symbolic":"function"},"ProductStates":{"owned":"owned","approved":"approved","initiated":"initiated","requested":"requested","valid":"valid","registered":"registered","downloading":"downloading","downloaded":"downloaded","finsihed":"finished"},"IAPurchaseService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":33,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"selectAllProducts":[{"__symbolic":"method"}],"selectProduct":[{"__symbolic":"method"}],"selectIsOwned":[{"__symbolic":"method"}],"selectVerified":[{"__symbolic":"method"}],"selectOwned":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":147,"character":5}}],null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":151,"character":5},"arguments":[{"__symbolic":"reference","name":"MalIAPOptionsToken"}]}],[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":152,"character":5},"arguments":[{"__symbolic":"reference","module":"ngx-firebase","name":"MalSharedConfigToken","line":152,"character":29}]}]],"parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"Platform","line":146,"character":17},{"__symbolic":"reference","module":"@ionic-native/in-app-purchase-2/ngx","name":"InAppPurchase2","line":147,"character":31},{"__symbolic":"reference","module":"ngx-firebase","name":"AuthProcessService","line":148,"character":17},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":149,"character":20},{"__symbolic":"reference","module":"ngx-firebase","name":"FirebaseService","line":150,"character":18},{"__symbolic":"reference","name":"MalIAPOptions"},{"__symbolic":"reference","module":"ngx-firebase","name":"MalSharedConfig","line":152,"character":74}]}],"load":[{"__symbolic":"method"}],"purchase":[{"__symbolic":"method"}],"finish":[{"__symbolic":"method"}],"refresh":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}}},"origins":{"MalIAPModule":"./iap.module","IAPProductTypes":"./interfaces","MalIAPProductOptions":"./interfaces","MalIAPOptions":"./interfaces","MalIAPOptionsToken":"./tokens","slimDown":"./services/iap.service","ProductStates":"./services/iap.service","IAPurchaseService":"./services/iap.service"},"importAs":"ngx-firebase/iap"}
|
package/iap/package.json
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"peerDependencies": {
|
|
3
|
-
"@angular/common": "^11.2.5",
|
|
4
|
-
"@angular/core": "^11.2.5",
|
|
5
|
-
"@ngx-translate/core": "^13.0.0",
|
|
6
|
-
"@ionic-native/core": "^5.30.0",
|
|
7
|
-
"@ionic-native/in-app-purchase-2": "^5.30.0",
|
|
8
|
-
"@capacitor/core": "2.4.2",
|
|
9
|
-
"@capacitor/ios": "^2.4.3",
|
|
10
|
-
"capacitor-firebase-auth": "file:../../../capacitor-firebase-auth-2.3.2-firebase8.tgz",
|
|
11
|
-
"zone.js": "^0.11.3",
|
|
12
|
-
"rxjs": "~6.5.4"
|
|
13
|
-
},
|
|
14
|
-
"main": "../bundles/ngx-firebase-iap.umd.js",
|
|
15
|
-
"module": "../fesm2015/ngx-firebase-iap.js",
|
|
16
|
-
"es2015": "../fesm2015/ngx-firebase-iap.js",
|
|
17
|
-
"esm2015": "../esm2015/iap/ngx-firebase-iap.js",
|
|
18
|
-
"fesm2015": "../fesm2015/ngx-firebase-iap.js",
|
|
19
|
-
"typings": "ngx-firebase-iap.d.ts",
|
|
20
|
-
"metadata": "ngx-firebase-iap.metadata.json",
|
|
21
|
-
"sideEffects": false,
|
|
22
|
-
"name": "ngx-firebase/iap"
|
|
23
|
-
}
|
package/iap/public-api.d.ts
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { NgZone } from '@angular/core';
|
|
2
|
-
import { AuthProcessService, FirebaseService, MalSharedConfig } from 'ngx-firebase';
|
|
3
|
-
import { Platform } from '@ionic/angular';
|
|
4
|
-
import { InAppPurchase2, IAPProduct } from '@ionic-native/in-app-purchase-2/ngx';
|
|
5
|
-
import { Observable } from 'rxjs';
|
|
6
|
-
import { MalIAPOptions } from '../interfaces';
|
|
7
|
-
export declare function slimDown(p: IAPProduct[]): Partial<IAPProduct>[];
|
|
8
|
-
export declare function slimDown(p: IAPProduct): Partial<IAPProduct>;
|
|
9
|
-
export declare enum ProductStates {
|
|
10
|
-
owned = "owned",
|
|
11
|
-
approved = "approved",
|
|
12
|
-
initiated = "initiated",
|
|
13
|
-
requested = "requested",
|
|
14
|
-
valid = "valid",
|
|
15
|
-
registered = "registered",
|
|
16
|
-
downloading = "downloading",
|
|
17
|
-
downloaded = "downloaded",
|
|
18
|
-
finsihed = "finished"
|
|
19
|
-
}
|
|
20
|
-
export declare class IAPurchaseService {
|
|
21
|
-
private plt;
|
|
22
|
-
private store;
|
|
23
|
-
private aps;
|
|
24
|
-
private ngZone;
|
|
25
|
-
private fire;
|
|
26
|
-
private options;
|
|
27
|
-
private sharedConfig;
|
|
28
|
-
readonly activeStates: string[];
|
|
29
|
-
private _isLoading$;
|
|
30
|
-
isLoading$: Observable<boolean>;
|
|
31
|
-
get isLoading(): boolean;
|
|
32
|
-
set isLoading(val: boolean);
|
|
33
|
-
private readonly isModuleEnabled;
|
|
34
|
-
readonly products$: Observable<IAPProduct[]>;
|
|
35
|
-
readonly activeProducts$: Observable<IAPProduct[]>;
|
|
36
|
-
readonly productsHeld$: Observable<IAPProduct[]>;
|
|
37
|
-
selectAllProducts(): Observable<IAPProduct[]>;
|
|
38
|
-
selectProduct(product: string | IAPProduct): Observable<IAPProduct>;
|
|
39
|
-
selectIsOwned(product: string | IAPProduct): Observable<boolean>;
|
|
40
|
-
selectVerified(product?: string | IAPProduct): Observable<IAPProduct>;
|
|
41
|
-
selectOwned(product?: string | IAPProduct): Observable<IAPProduct>;
|
|
42
|
-
constructor(plt: Platform, store: InAppPurchase2, aps: AuthProcessService, ngZone: NgZone, fire: FirebaseService, options: MalIAPOptions, sharedConfig: MalSharedConfig);
|
|
43
|
-
private load;
|
|
44
|
-
purchase(product: IAPProduct | string, waitForOwned?: boolean): Observable<IAPProduct>;
|
|
45
|
-
finish(product: IAPProduct): Promise<IAPProduct>;
|
|
46
|
-
refresh(): Promise<void>;
|
|
47
|
-
}
|
package/iap/tokens/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const NgxAuthFirebaseuiAnimations: import("@angular/animations").AnimationTriggerMetadata[];
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from '@angular/core';
|
|
2
|
-
import { User } from '@firebase/auth-types';
|
|
3
|
-
import { Observable } from 'rxjs';
|
|
4
|
-
import { PopoverController } from '@ionic/angular';
|
|
5
|
-
import { LinkMenuItem } from '../popover-menu';
|
|
6
|
-
import { AuthProcessService, UiService, FirebaseService } from 'ngx-firebase';
|
|
7
|
-
export declare class AuthAvatarComponent {
|
|
8
|
-
aps: AuthProcessService;
|
|
9
|
-
private popoverController;
|
|
10
|
-
private ui;
|
|
11
|
-
private fire;
|
|
12
|
-
layout: 'default' | 'simple';
|
|
13
|
-
canLogout: boolean;
|
|
14
|
-
links: LinkMenuItem[];
|
|
15
|
-
canViewAccount: boolean;
|
|
16
|
-
canDeleteAccount: boolean;
|
|
17
|
-
canEditAccount: boolean;
|
|
18
|
-
showIfAnon: boolean;
|
|
19
|
-
showProfileDialog: EventEmitter<any>;
|
|
20
|
-
onSignOut: EventEmitter<void>;
|
|
21
|
-
user$: Observable<User | null>;
|
|
22
|
-
displayNameInitials$: Observable<string>;
|
|
23
|
-
constructor(aps: AuthProcessService, popoverController: PopoverController, ui: UiService, fire: FirebaseService);
|
|
24
|
-
openAvatarMenu(ev: any): Promise<void>;
|
|
25
|
-
doShowProfile(ev: any): Promise<void>;
|
|
26
|
-
signOut(): Promise<void>;
|
|
27
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './avatar.component';
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { PopoverController } from '@ionic/angular';
|
|
2
|
-
import { UiService } from 'ngx-firebase';
|
|
3
|
-
import { LinkMenuItem } from './interface';
|
|
4
|
-
export declare class AuthPopoverMenuComponent {
|
|
5
|
-
private popoverController;
|
|
6
|
-
private ui;
|
|
7
|
-
links: LinkMenuItem[];
|
|
8
|
-
constructor(popoverController: PopoverController, ui: UiService);
|
|
9
|
-
doLinkClick(link: LinkMenuItem): void;
|
|
10
|
-
}
|
package/ionic/ionic.module.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"AuthAvatarComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"mal-auth-avatar","template":"<ng-container *ngIf=\"(user$ | async) as user\">\n <ion-avatar name='auth-avatar' class=\"avatar\" *ngIf=\"user?.photoURL || !(displayNameInitials$ | async)\" (click)=\"openAvatarMenu($event)\">\n <img [alt]=\"user.name\" [src]=\"user.photoURL\" onerror=\"this.onerror=null;this.src='/assets/images/person.png';\">\n </ion-avatar>\n <ion-button class=\"avatar\" *ngIf=\"!user?.photoURL && (displayNameInitials$ | async)\" (click)=\"openAvatarMenu($event)\">\n {{ displayNameInitials$ | async }}\n </ion-button>\n</ng-container>","styles":["ion-button.avatar{background-color:var(--ion-color-primary-tint);border-radius:50%;font-weight:700}.avatar{border:.75px solid var(--ion-color-primary);box-shadow:2px 2px var(--ion-color-primary-tint);max-width:var(--mal-avatar-size,35px)!important;max-height:var(--mal-avatar-size,35px)!important}"]}]}],"members":{"layout":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"canLogout":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":3}}]}],"links":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":3}}]}],"canViewAccount":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"canDeleteAccount":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"canEditAccount":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":30,"character":3}}]}],"showIfAnon":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":3}}]}],"showProfileDialog":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":36,"character":3}}]}],"onSignOut":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":40,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"ngx-firebase","name":"AuthProcessService","line":61,"character":16},{"__symbolic":"reference","module":"@ionic/angular","name":"PopoverController","line":62,"character":31},{"__symbolic":"reference","module":"ngx-firebase","name":"UiService","line":63,"character":16},{"__symbolic":"reference","module":"ngx-firebase","name":"FirebaseService","line":64,"character":18}]}],"openAvatarMenu":[{"__symbolic":"method"}],"doShowProfile":[{"__symbolic":"method"}],"signOut":[{"__symbolic":"method"}]}},"AuthPopoverMenuComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"template":"<ion-button *ngFor=\"let link of links\"\n expand=\"block\"\n [disabled]=\"link.disabled\"\n (click)=\"doLinkClick(link)\">\n {{ link.text | translate }}\n</ion-button>"}]}],"members":{"links":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"PopoverController","line":14,"character":31},{"__symbolic":"reference","module":"ngx-firebase","name":"UiService","line":15,"character":16}]}],"doLinkClick":[{"__symbolic":"method"}]}},"LinkMenuItem":{"__symbolic":"interface"},"NgxAuthFirebaseuiAnimations":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":24,"character":2},"arguments":["animate",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":24,"character":22},"arguments":["void => *",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"useAnimation","line":24,"character":47},"arguments":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animation","line":2,"character":24},"arguments":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":4,"character":4},"arguments":[{"opacity":"{{opacity}}","transform":"scale({{scale}}) translate3d({{x}}, {{y}}, {{z}})"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animate","line":8,"character":4},"arguments":["{{duration}} {{delay}} cubic-bezier(0.0, 0.0, 0.2, 1)",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":8,"character":69},"arguments":["*"]}]}],{"params":{"duration":"200ms","delay":"0ms","opacity":"0","scale":"1","x":"0","y":"0","z":"0"}}]}]}]]}]]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"trigger","line":26,"character":2},"arguments":["animateStagger",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":27,"character":4},"arguments":["50",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":27,"character":16},"arguments":["*"]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":28,"character":4},"arguments":["100",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":28,"character":17},"arguments":["*"]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"state","line":29,"character":4},"arguments":["200",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"style","line":29,"character":17},"arguments":["*"]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":31,"character":4},"arguments":["void => 50",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"query","line":31,"character":29},"arguments":["@*",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"stagger","line":31,"character":42},"arguments":["50ms",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animateChild","line":31,"character":59}}]]}],{"optional":true}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":32,"character":4},"arguments":["void => 100",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"query","line":32,"character":30},"arguments":["@*",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"stagger","line":32,"character":43},"arguments":["100ms",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animateChild","line":32,"character":61}}]]}],{"optional":true}]}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"transition","line":33,"character":4},"arguments":["void => 200",{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"query","line":33,"character":30},"arguments":["@*",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"stagger","line":33,"character":43},"arguments":["200ms",[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/animations","name":"animateChild","line":33,"character":61}}]]}],{"optional":true}]}]}]]}],"MalIonicAlertsService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"AlertController","line":9,"character":29},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":10,"character":30}]}],"yesNoAlert":[{"__symbolic":"method"}],"okAlert":[{"__symbolic":"method"}],"errorAlert":[{"__symbolic":"method"}],"infoAlert":[{"__symbolic":"method"}],"textboxInputAlert":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"MalIonicLoadingService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"LoadingController","line":11,"character":35},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":12,"character":34},{"__symbolic":"reference","module":"ngx-firebase","name":"RemoteConfigService","line":13,"character":30}]}],"createLoading":[{"__symbolic":"method"}],"watchLoading":[{"__symbolic":"method"}]}},"MalIonicPickerService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"PickerController","line":9,"character":34},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":10,"character":34}]}],"picker":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"MalIonicToastService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@ionic/angular","name":"ToastController","line":9,"character":30},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":10,"character":34}]}],"createToast":[{"__symbolic":"method"}],"toast":[{"__symbolic":"method"}],"errorToast":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"MalIonicLegalityDialogService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":10,"character":5},"arguments":[{"__symbolic":"reference","module":"ngx-firebase","name":"MalSharedConfigToken","line":10,"character":29}]}],null,null],"parameters":[{"__symbolic":"reference","module":"ngx-firebase","name":"MalSharedConfig","line":10,"character":67},{"__symbolic":"reference","module":"@ionic/angular","name":"AlertController","line":11,"character":29},{"__symbolic":"reference","module":"@ngx-translate/core","name":"TranslateService","line":12,"character":23}]}],"confirmTos":[{"__symbolic":"method"}]}},"MalIonicModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":33,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"ngx-firebase","name":"MalSharedModule","line":35,"character":4},{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":36,"character":4},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":37,"character":4},{"__symbolic":"reference","module":"@ionic/angular","name":"IonicModule","line":38,"character":4}],"exports":[{"__symbolic":"reference","name":"AuthAvatarComponent"},{"__symbolic":"reference","name":"AuthPopoverMenuComponent"}],"declarations":[{"__symbolic":"reference","name":"AuthAvatarComponent"},{"__symbolic":"reference","name":"AuthPopoverMenuComponent"}],"providers":[{"provide":{"__symbolic":"reference","module":"ngx-firebase","name":"MalAlertsUIProviderToken","line":44,"character":17},"useClass":{"__symbolic":"reference","name":"MalIonicAlertsService"}},{"provide":{"__symbolic":"reference","module":"ngx-firebase","name":"MalLoadingUIProviderToken","line":45,"character":17},"useClass":{"__symbolic":"reference","name":"MalIonicLoadingService"}},{"provide":{"__symbolic":"reference","module":"ngx-firebase","name":"MalPickerUIProviderToken","line":46,"character":17},"useClass":{"__symbolic":"reference","name":"MalIonicPickerService"}},{"provide":{"__symbolic":"reference","module":"ngx-firebase","name":"MalToastUIProviderToken","line":47,"character":17},"useClass":{"__symbolic":"reference","name":"MalIonicToastService"}},{"provide":{"__symbolic":"reference","module":"ngx-firebase","name":"MalLegaliyDialogUIProiderToken","line":48,"character":17},"useClass":{"__symbolic":"reference","name":"MalIonicLegalityDialogService"}}]}]}],"members":{}}},"origins":{"AuthAvatarComponent":"./components/avatar/avatar.component","AuthPopoverMenuComponent":"./components/popover-menu/popover-menu.component","LinkMenuItem":"./components/popover-menu/interface","NgxAuthFirebaseuiAnimations":"./animations/index","MalIonicAlertsService":"./services/alerts-ionic.service","MalIonicLoadingService":"./services/loading-ionic.service","MalIonicPickerService":"./services/picker-ionic.service","MalIonicToastService":"./services/toast-ionic.service","MalIonicLegalityDialogService":"./services/legality-dialog-ionic.service","MalIonicModule":"./ionic.module"},"importAs":"ngx-firebase/ionic"}
|
package/ionic/package.json
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"peerDependencies": {
|
|
3
|
-
"@angular/animations": "^11.2.5",
|
|
4
|
-
"@angular/cdk": "^11.2.4",
|
|
5
|
-
"@angular/common": "^11.2.5",
|
|
6
|
-
"@angular/core": "^11.2.5",
|
|
7
|
-
"@angular/flex-layout": "^11.0.0-beta.33",
|
|
8
|
-
"@angular/forms": "^11.2.5",
|
|
9
|
-
"@angular/platform-browser": "^11.2.5",
|
|
10
|
-
"@angular/platform-browser-dynamic": "^11.2.5",
|
|
11
|
-
"@angular/router": "^11.2.5",
|
|
12
|
-
"@ionic-native/core": "^5.30.0",
|
|
13
|
-
"@ionic/angular": "^5.5.0",
|
|
14
|
-
"@ngx-translate/core": "^13.0.0",
|
|
15
|
-
"@capacitor/core": "^2.4.7",
|
|
16
|
-
"@capacitor/ios": "^2.4.7",
|
|
17
|
-
"ionic4-tooltips": "^2.0.2",
|
|
18
|
-
"zone.js": "^0.11.3",
|
|
19
|
-
"rxjs": "~6.5.4"
|
|
20
|
-
},
|
|
21
|
-
"main": "../bundles/ngx-firebase-ionic.umd.js",
|
|
22
|
-
"module": "../fesm2015/ngx-firebase-ionic.js",
|
|
23
|
-
"es2015": "../fesm2015/ngx-firebase-ionic.js",
|
|
24
|
-
"esm2015": "../esm2015/ionic/ngx-firebase-ionic.js",
|
|
25
|
-
"fesm2015": "../fesm2015/ngx-firebase-ionic.js",
|
|
26
|
-
"typings": "ngx-firebase-ionic.d.ts",
|
|
27
|
-
"metadata": "ngx-firebase-ionic.metadata.json",
|
|
28
|
-
"sideEffects": false,
|
|
29
|
-
"name": "ngx-firebase/ionic"
|
|
30
|
-
}
|
package/ionic/public-api.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { AlertController } from '@ionic/angular';
|
|
2
|
-
import { TranslateService } from '@ngx-translate/core';
|
|
3
|
-
import { IYesNoAlertOptions, IOkAlertOptions, ITextAlertOptions, IAlertsUIProvider } from 'ngx-firebase';
|
|
4
|
-
export declare class MalIonicAlertsService implements IAlertsUIProvider {
|
|
5
|
-
private alertController;
|
|
6
|
-
private translateService;
|
|
7
|
-
constructor(alertController: AlertController, translateService: TranslateService);
|
|
8
|
-
yesNoAlert(message: string, options?: IYesNoAlertOptions): Promise<boolean>;
|
|
9
|
-
okAlert(message: string, options?: IOkAlertOptions): Promise<void>;
|
|
10
|
-
errorAlert(message: string, options?: IOkAlertOptions): Promise<void>;
|
|
11
|
-
infoAlert(message: string, options?: IOkAlertOptions): Promise<void>;
|
|
12
|
-
textboxInputAlert(options: ITextAlertOptions): Promise<string | null>;
|
|
13
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { AlertController } from '@ionic/angular';
|
|
2
|
-
import { TranslateService } from '@ngx-translate/core';
|
|
3
|
-
import { ILegalityDialogUIProvider, MalSharedConfig } from 'ngx-firebase';
|
|
4
|
-
export declare class MalIonicLegalityDialogService implements ILegalityDialogUIProvider {
|
|
5
|
-
config: MalSharedConfig;
|
|
6
|
-
private alertController;
|
|
7
|
-
private translate;
|
|
8
|
-
constructor(config: MalSharedConfig, alertController: AlertController, translate: TranslateService);
|
|
9
|
-
confirmTos(): Promise<boolean | null>;
|
|
10
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { LoadingController } from '@ionic/angular';
|
|
2
|
-
import { Observable, Subscription } from 'rxjs';
|
|
3
|
-
import { TranslateService } from '@ngx-translate/core';
|
|
4
|
-
import { ILoadingUIProvider, RemoteConfigService } from 'ngx-firebase';
|
|
5
|
-
export declare class MalIonicLoadingService implements ILoadingUIProvider {
|
|
6
|
-
private loadingController;
|
|
7
|
-
private translateService;
|
|
8
|
-
private remoteConfig;
|
|
9
|
-
constructor(loadingController: LoadingController, translateService: TranslateService, remoteConfig: RemoteConfigService);
|
|
10
|
-
createLoading(message?: string): Promise<HTMLIonLoadingElement>;
|
|
11
|
-
watchLoading(source: Observable<boolean>, options?: {
|
|
12
|
-
debounce?: number;
|
|
13
|
-
message?: string;
|
|
14
|
-
timeoutMs?: number | null;
|
|
15
|
-
debug?: string;
|
|
16
|
-
}): Promise<Subscription>;
|
|
17
|
-
}
|