{"version":3,"file":"abuelwiss-angularx-social-login.mjs","sources":["../../../projects/lib/src/entities/base-login-provider.ts","../../../projects/lib/src/entities/social-user.ts","../../../projects/lib/src/providers/google-login-provider.ts","../../../projects/lib/src/socialauth.service.ts","../../../projects/lib/src/sociallogin.module.ts","../../../projects/lib/src/providers/dummy-login-provider.ts","../../../projects/lib/src/providers/facebook-login-provider.ts","../../../projects/lib/src/providers/amazon-login-provider.ts","../../../projects/lib/src/providers/vk-login-provider.ts","../../../projects/lib/src/providers/microsoft-login-provider.ts","../../../projects/lib/src/directives/google-signin-button.directive.ts","../../../projects/lib/src/abuelwiss-angularx-social-login.ts"],"sourcesContent":["import { EventEmitter } from '@angular/core';\r\nimport { LoginProvider } from './login-provider';\r\nimport { SocialUser } from './social-user';\r\n\r\nexport abstract class BaseLoginProvider implements LoginProvider {\r\n  constructor() {}\r\n  readonly changeUser?: EventEmitter<SocialUser>;\r\n  abstract initialize(autoLogin?: boolean, lang?: string): Promise<void>;\r\n  abstract getLoginStatus(): Promise<SocialUser>;\r\n  abstract signIn(signInOptions?: object): Promise<SocialUser>;\r\n  abstract signOut(revoke?: boolean): Promise<void>;\r\n  refreshToken?(): Promise<SocialUser | null>;\r\n\r\n  protected loadScript(\r\n    id: string,\r\n    src: string,\r\n    onload: any,\r\n    parentElement = null\r\n  ): void {\r\n    // get document if platform is only browser\r\n    if (typeof document !== 'undefined' && !document.getElementById(id)) {\r\n      let signInJS = document.createElement('script');\r\n\r\n      signInJS.async = true;\r\n      signInJS.src = src;\r\n      signInJS.onload = onload;\r\n\r\n      if (!parentElement) {\r\n        parentElement = document.head;\r\n      }\r\n\r\n      parentElement.appendChild(signInJS);\r\n    }\r\n  }\r\n}\r\n","export class SocialUser {\r\n  provider: string;\r\n  id: string;\r\n  email: string;\r\n  name: string;\r\n  photoUrl: string;\r\n  firstName: string;\r\n  lastName: string;\r\n  authToken: string;\r\n\r\n  idToken: string; // Reference https://developers.google.com/identity/sign-in/web/backend-auth\r\n  authorizationCode: string; // Reference https://developers.google.com/identity/sign-in/web/reference#googleauthgrantofflineaccessoptions\r\n\r\n  response: any;\r\n}\r\n","import { BaseLoginProvider } from '../entities/base-login-provider';\r\nimport { SocialUser } from '../entities/social-user';\r\nimport { EventEmitter } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { filter, skip, take } from 'rxjs/operators';\r\n\r\nexport interface GoogleInitOptions {\r\n  /**\r\n   * enables the One Tap mechanism, and makes auto-login possible\r\n   */\r\n  oneTapEnabled?: boolean;\r\n  /**\r\n   * list of permission scopes to grant in case we request an access token\r\n   */\r\n  scopes?: string | string[];\r\n /**\r\n   * This attribute sets the DOM ID of the container element. If it's not set, the One Tap prompt is displayed in the top-right corner of the window.\r\n   */\r\n  prompt_parent_id?: string;\r\n\r\n  /**\r\n   * Optional, defaults to 'select_account'.\r\n   * A space-delimited, case-sensitive list of prompts to present the\r\n   * user.\r\n   * Possible values are:\r\n   * empty string The user will be prompted only the first time your\r\n   *     app requests access. Cannot be specified with other values.\r\n   * 'none' Do not display any authentication or consent screens. Must\r\n   *     not be specified with other values.\r\n   * 'consent' Prompt the user for consent.\r\n   * 'select_account' Prompt the user to select an account.\r\n   */\r\n  prompt? : '' | 'none' | 'consent' | 'select_account';\r\n}\r\n\r\nconst defaultInitOptions: GoogleInitOptions = {\r\n  oneTapEnabled: true,\r\n};\r\n\r\nexport class GoogleLoginProvider extends BaseLoginProvider {\r\n  public static readonly PROVIDER_ID: string = 'GOOGLE';\r\n\r\n  public readonly changeUser = new EventEmitter<SocialUser | null>();\r\n\r\n  private readonly _socialUser = new BehaviorSubject<SocialUser | null>(null);\r\n  private readonly _accessToken = new BehaviorSubject<string | null>(null);\r\n  private readonly _receivedAccessToken = new EventEmitter<string>();\r\n  private _tokenClient: google.accounts.oauth2.TokenClient | undefined;\r\n\r\n  constructor(\r\n    private clientId: string,\r\n    private readonly initOptions?: GoogleInitOptions,\r\n  ) {\r\n    super();\r\n\r\n    this.initOptions = { ...defaultInitOptions, ...this.initOptions };\r\n\r\n    // emit changeUser events but skip initial value from behaviorSubject\r\n    this._socialUser.pipe(skip(1)).subscribe(this.changeUser);\r\n\r\n    // emit receivedAccessToken but skip initial value from behaviorSubject\r\n    this._accessToken.pipe(skip(1)).subscribe(this._receivedAccessToken);\r\n  }\r\n\r\n  initialize(autoLogin?: boolean, lang?: string): Promise<void> {\r\n    return new Promise((resolve, reject) => {\r\n      try {\r\n        this.loadScript(\r\n          GoogleLoginProvider.PROVIDER_ID,\r\n          this.getGoogleLoginScriptSrc(lang),\r\n          () => {\r\n            google.accounts.id.initialize({\r\n              client_id: this.clientId,\r\n              auto_select: autoLogin,\r\n              callback: ({ credential }) => {\r\n                const socialUser = this.createSocialUser(credential);\r\n                this._socialUser.next(socialUser);\r\n              },\r\n              prompt_parent_id: this.initOptions?.prompt_parent_id,\r\n              itp_support: this.initOptions.oneTapEnabled,\r\n              use_fedcm_for_prompt: this.initOptions.oneTapEnabled\r\n            });\r\n\r\n            if (this.initOptions.oneTapEnabled) {\r\n              this._socialUser\r\n                .pipe(filter((user) => user === null))\r\n                .subscribe(() => google.accounts.id.prompt(console.debug));\r\n            }\r\n\r\n            if (this.initOptions.scopes) {\r\n              const scope =\r\n                this.initOptions.scopes instanceof Array\r\n                  ? this.initOptions.scopes.filter((s) => s).join(' ')\r\n                  : this.initOptions.scopes;\r\n\r\n              this._tokenClient = google.accounts.oauth2.initTokenClient({\r\n                client_id: this.clientId,\r\n                scope,\r\n                prompt : this.initOptions.prompt,\r\n                callback: (tokenResponse) => {\r\n                  if (tokenResponse.error) {\r\n                    this._accessToken.error({\r\n                      code: tokenResponse.error,\r\n                      description: tokenResponse.error_description,\r\n                      uri: tokenResponse.error_uri,\r\n                    });\r\n                  } else {\r\n                    this._accessToken.next(tokenResponse.access_token);\r\n                  }\r\n                },\r\n              });\r\n            }\r\n\r\n            resolve();\r\n          }\r\n        );\r\n      } catch (err) {\r\n        reject(err);\r\n      }\r\n    });\r\n  }\r\n\r\n  getLoginStatus(): Promise<SocialUser> {\r\n    return new Promise((resolve, reject) => {\r\n      if (this._socialUser.value) {\r\n        resolve(this._socialUser.value);\r\n      } else {\r\n        reject(\r\n          `No user is currently logged in with ${GoogleLoginProvider.PROVIDER_ID}`\r\n        );\r\n      }\r\n    });\r\n  }\r\n\r\n  refreshToken(): Promise<SocialUser | null> {\r\n    return new Promise((resolve, reject) => {\r\n      google.accounts.id.revoke(this._socialUser.value.id, (response) => {\r\n        if (response.error) reject(response.error);\r\n        else resolve(this._socialUser.value);\r\n      });\r\n    });\r\n  }\r\n\r\n  getAccessToken(): Promise<string> {\r\n    return new Promise((resolve, reject) => {\r\n      if (!this._tokenClient) {\r\n        if (this._socialUser.value) {\r\n          reject(\r\n            'No token client was instantiated, you should specify some scopes.'\r\n          );\r\n        } else {\r\n          reject('You should be logged-in first.');\r\n        }\r\n      } else {\r\n        this._tokenClient.requestAccessToken({\r\n          hint: this._socialUser.value?.email,\r\n        });\r\n        this._receivedAccessToken.pipe(take(1)).subscribe(resolve);\r\n      }\r\n    });\r\n  }\r\n\r\n  revokeAccessToken(): Promise<void> {\r\n    return new Promise((resolve, reject) => {\r\n      if (!this._tokenClient) {\r\n        reject(\r\n          'No token client was instantiated, you should specify some scopes.'\r\n        );\r\n      } else if (!this._accessToken.value) {\r\n        reject('No access token to revoke');\r\n      } else {\r\n        google.accounts.oauth2.revoke(this._accessToken.value, () => {\r\n          this._accessToken.next(null);\r\n          resolve();\r\n        });\r\n      }\r\n    });\r\n  }\r\n\r\n  signIn(): Promise<SocialUser> {\r\n    return Promise.reject(\r\n      'You should not call this method directly for Google, use \"<asl-google-signin-button>\" wrapper ' +\r\n        'or generate the button yourself with \"google.accounts.id.renderButton()\" ' +\r\n        '(https://developers.google.com/identity/gsi/web/guides/display-button#javascript)'\r\n    );\r\n  }\r\n\r\n  async signOut(): Promise<void> {\r\n    google.accounts.id.disableAutoSelect();\r\n    this._socialUser.next(null);\r\n  }\r\n\r\n  private createSocialUser(idToken: string) {\r\n    const user = new SocialUser();\r\n    user.idToken = idToken;\r\n    const payload = this.decodeJwt(idToken);\r\n    user.id = payload.sub;\r\n    user.name = payload.name;\r\n    user.email = payload.email;\r\n    user.photoUrl = payload.picture;\r\n    user.firstName = payload['given_name'];\r\n    user.lastName = payload['family_name'];\r\n    return user;\r\n  }\r\n\r\n  private decodeJwt(idToken: string): Record<string, string | undefined> {\r\n    const base64Url = idToken.split(\".\")[1];\r\n    const base64 = base64Url.replace(/-/g, \"+\").replace(/_/g, \"/\");\r\n    const jsonPayload = decodeURIComponent(\r\n      window.atob(base64)\r\n        .split(\"\")\r\n        .map(function (c) {\r\n          return \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2);\r\n        })\r\n        .join(\"\")\r\n    );\r\n    return JSON.parse(jsonPayload);\r\n  }\r\n\r\n  private getGoogleLoginScriptSrc(lang: string): string {\r\n    return lang ?\r\n           `https://accounts.google.com/gsi/client?hl=${lang}` :\r\n           'https://accounts.google.com/gsi/client';\r\n  }\r\n}\r\n","import { Inject, Injectable, Injector, NgZone, Type } from '@angular/core';\r\nimport { AsyncSubject, isObservable, Observable, ReplaySubject } from 'rxjs';\r\nimport { LoginProvider } from './entities/login-provider';\r\nimport { SocialUser } from './entities/social-user';\r\nimport { GoogleLoginProvider } from './providers/google-login-provider';\r\n\r\n/**\r\n * An interface to define the shape of the service configuration options.\r\n */\r\nexport interface SocialAuthServiceConfig {\r\n  autoLogin?: boolean;\r\n  lang?: string;\r\n  providers: { id: string; provider: LoginProvider | Type<LoginProvider> }[];\r\n  onError?: (error: any) => any;\r\n}\r\n\r\n/**\r\n * The service encapsulating the social login functionality. Exposes methods like\r\n * `signIn`, `signOut`. Also, exposes an `authState` `Observable` that one can\r\n * subscribe to get the current logged in user information.\r\n *\r\n * @dynamic\r\n */\r\n@Injectable({ providedIn: 'root' })\r\nexport class SocialAuthService {\r\n  private static readonly ERR_LOGIN_PROVIDER_NOT_FOUND =\r\n    'Login provider not found';\r\n  private static readonly ERR_NOT_LOGGED_IN = 'Not logged in';\r\n  private static readonly ERR_NOT_INITIALIZED =\r\n    'Login providers not ready yet. Are there errors on your console?';\r\n  private static readonly ERR_NOT_SUPPORTED_FOR_REFRESH_TOKEN =\r\n    'Chosen login provider is not supported for refreshing a token';\r\n  private static readonly ERR_NOT_SUPPORTED_FOR_ACCESS_TOKEN =\r\n    'Chosen login provider is not supported for getting an access token';\r\n\r\n  private providers: Map<string, LoginProvider> = new Map();\r\n  private autoLogin = false;\r\n  private lang: string = '';\r\n\r\n  private _user: SocialUser | null = null;\r\n  private _authState: ReplaySubject<SocialUser | null> = new ReplaySubject(1);\r\n\r\n  /* Consider making this an enum comprising LOADING, LOADED, FAILED etc. */\r\n  private initialized = false;\r\n  private _initState: AsyncSubject<boolean> = new AsyncSubject();\r\n\r\n  /** An `Observable` that one can subscribe to get the current logged in user information */\r\n  get authState(): Observable<SocialUser> {\r\n    return this._authState.asObservable();\r\n  }\r\n\r\n  /** An `Observable` to communicate the readiness of the service and associated login providers */\r\n  get initState(): Observable<boolean> {\r\n    return this._initState.asObservable();\r\n  }\r\n\r\n  /**\r\n   * @param config A `SocialAuthServiceConfig` object or a `Promise` that resolves to a `SocialAuthServiceConfig` object\r\n   */\r\n  constructor(\r\n    @Inject('SocialAuthServiceConfig')\r\n    config: SocialAuthServiceConfig | Promise<SocialAuthServiceConfig>,\r\n    private readonly _ngZone: NgZone,\r\n    private readonly _injector: Injector\r\n  ) {\r\n    if (config instanceof Promise) {\r\n      config.then((config: SocialAuthServiceConfig) => {\r\n        this.initialize(config);\r\n      });\r\n    } else {\r\n      this.initialize(config);\r\n    }\r\n  }\r\n\r\n  private initialize(config: SocialAuthServiceConfig) {\r\n    this.autoLogin = config.autoLogin !== undefined ? config.autoLogin : false;\r\n    this.lang = config.lang !== undefined ? config.lang : '';\r\n    const { onError = console.error } = config;\r\n\r\n    config.providers.forEach((item) => {\r\n      this.providers.set(\r\n        item.id,\r\n        'prototype' in item.provider\r\n          ? this._injector.get(item.provider)\r\n          : item.provider\r\n      );\r\n    });\r\n\r\n    Promise.all(\r\n      Array.from(this.providers.values()).map((provider) =>\r\n        provider.initialize(this.autoLogin, this.lang),\r\n      )\r\n    )\r\n      .then(() => {\r\n        if (this.autoLogin) {\r\n          const loginStatusPromises = [];\r\n          let loggedIn = false;\r\n\r\n          this.providers.forEach((provider: LoginProvider, key: string) => {\r\n            const promise = provider.getLoginStatus();\r\n            loginStatusPromises.push(promise);\r\n            promise\r\n              .then((user: SocialUser) => {\r\n                this.setUser(user, key);\r\n                loggedIn = true;\r\n              })\r\n              .catch(console.debug);\r\n          });\r\n          Promise.all(loginStatusPromises).catch(() => {\r\n            if (!loggedIn) {\r\n              this._user = null;\r\n              this._authState.next(null);\r\n            }\r\n          });\r\n        }\r\n\r\n        this.providers.forEach((provider, key) => {\r\n          if (isObservable(provider.changeUser)) {\r\n            provider.changeUser.subscribe((user) => {\r\n              this._ngZone.run(() => {\r\n                this.setUser(user, key);\r\n              });\r\n            });\r\n          }\r\n        });\r\n      })\r\n      .catch((error) => {\r\n        onError(error);\r\n      })\r\n      .finally(() => {\r\n        this.initialized = true;\r\n        this._initState.next(this.initialized);\r\n        this._initState.complete();\r\n      });\r\n  }\r\n\r\n  async getAccessToken(providerId: string): Promise<string> {\r\n    const providerObject = this.providers.get(providerId);\r\n    if (!this.initialized) {\r\n      throw SocialAuthService.ERR_NOT_INITIALIZED;\r\n    } else if (!providerObject) {\r\n      throw SocialAuthService.ERR_LOGIN_PROVIDER_NOT_FOUND;\r\n    } else if (!(providerObject instanceof GoogleLoginProvider)) {\r\n      throw SocialAuthService.ERR_NOT_SUPPORTED_FOR_ACCESS_TOKEN;\r\n    }\r\n\r\n    return await providerObject.getAccessToken();\r\n  }\r\n\r\n  refreshAuthToken(providerId: string): Promise<void> {\r\n    return new Promise((resolve, reject) => {\r\n      if (!this.initialized) {\r\n        reject(SocialAuthService.ERR_NOT_INITIALIZED);\r\n      } else {\r\n        const providerObject = this.providers.get(providerId);\r\n        if (providerObject) {\r\n          if (typeof providerObject.refreshToken !== 'function') {\r\n            reject(SocialAuthService.ERR_NOT_SUPPORTED_FOR_REFRESH_TOKEN);\r\n          } else {\r\n            providerObject\r\n              .refreshToken()\r\n              .then((user) => {\r\n                this.setUser(user, providerId);\r\n                resolve();\r\n              })\r\n              .catch((err) => {\r\n                reject(err);\r\n              });\r\n          }\r\n        } else {\r\n          reject(SocialAuthService.ERR_LOGIN_PROVIDER_NOT_FOUND);\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  refreshAccessToken(providerId: string): Promise<void> {\r\n    return new Promise((resolve, reject) => {\r\n      if (!this.initialized) {\r\n        reject(SocialAuthService.ERR_NOT_INITIALIZED);\r\n      } else if (providerId !== GoogleLoginProvider.PROVIDER_ID) {\r\n        reject(SocialAuthService.ERR_NOT_SUPPORTED_FOR_REFRESH_TOKEN);\r\n      } else {\r\n        const providerObject = this.providers.get(providerId);\r\n        if (providerObject instanceof GoogleLoginProvider) {\r\n          providerObject.revokeAccessToken().then(resolve).catch(reject);\r\n        } else {\r\n          reject(SocialAuthService.ERR_LOGIN_PROVIDER_NOT_FOUND);\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  /**\r\n   * A method used to sign in a user with a specific `LoginProvider`.\r\n   *\r\n   * @param providerId Id with which the `LoginProvider` has been registered with the service\r\n   * @param signInOptions Optional `LoginProvider` specific arguments\r\n   * @returns A `Promise` that resolves to the authenticated user information\r\n   */\r\n  signIn(providerId: string, signInOptions?: any): Promise<SocialUser> {\r\n    return new Promise((resolve, reject) => {\r\n      if (!this.initialized) {\r\n        reject(SocialAuthService.ERR_NOT_INITIALIZED);\r\n      } else {\r\n        let providerObject = this.providers.get(providerId);\r\n        if (providerObject) {\r\n          providerObject\r\n            .signIn(signInOptions)\r\n            .then((user: SocialUser) => {\r\n              this.setUser(user, providerId);\r\n              resolve(user);\r\n            })\r\n            .catch((err) => {\r\n              reject(err);\r\n            });\r\n        } else {\r\n          reject(SocialAuthService.ERR_LOGIN_PROVIDER_NOT_FOUND);\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  /**\r\n   * A method used to sign out the currently loggen in user.\r\n   *\r\n   * @param revoke Optional parameter to specify whether a hard sign out is to be performed\r\n   * @returns A `Promise` that resolves if the operation is successful, rejects otherwise\r\n   */\r\n  signOut(revoke: boolean = false): Promise<void> {\r\n    return new Promise((resolve, reject) => {\r\n      if (!this.initialized) {\r\n        reject(SocialAuthService.ERR_NOT_INITIALIZED);\r\n      } else if (!this._user) {\r\n        reject(SocialAuthService.ERR_NOT_LOGGED_IN);\r\n      } else {\r\n        let providerId = this._user.provider;\r\n        let providerObject = this.providers.get(providerId);\r\n        if (providerObject) {\r\n          providerObject\r\n            .signOut(revoke)\r\n            .then(() => {\r\n              resolve();\r\n              this.setUser(null);\r\n            })\r\n            .catch((err) => {\r\n              reject(err);\r\n            });\r\n        } else {\r\n          reject(SocialAuthService.ERR_LOGIN_PROVIDER_NOT_FOUND);\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  private setUser(user: SocialUser | null, id?: string) {\r\n    if (user && id) user.provider = id;\r\n    this._user = user;\r\n    this._authState.next(user);\r\n  }\r\n}\r\n","import {\r\n  NgModule,\r\n  Optional,\r\n  SkipSelf,\r\n  ModuleWithProviders,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\nimport {\r\n  SocialAuthService,\r\n  SocialAuthServiceConfig,\r\n} from './socialauth.service';\r\n\r\n/**\r\n * The main module of angularx-social-login library.\r\n */\r\n@NgModule({\r\n  imports: [CommonModule],\r\n  providers: [SocialAuthService],\r\n})\r\nexport class SocialLoginModule {\r\n  public static initialize(config: SocialAuthServiceConfig): ModuleWithProviders<SocialLoginModule> {\r\n    return {\r\n      ngModule: SocialLoginModule,\r\n      providers: [\r\n        SocialAuthService,\r\n        {\r\n          provide: 'SocialAuthServiceConfig',\r\n          useValue: config\r\n        }\r\n      ]\r\n    };\r\n  }\r\n\r\n  constructor(@Optional() @SkipSelf() parentModule: SocialLoginModule) {\r\n    if (parentModule) {\r\n      throw new Error(\r\n        'SocialLoginModule is already loaded. Import it in the AppConfig only');\r\n    }\r\n  }\r\n}\r\n","import { BaseLoginProvider } from '../entities/base-login-provider';\r\nimport { SocialUser } from '../entities/social-user';\r\n\r\n// Simulates login / logout without actually requiring an Internet connection.\r\n//\r\n// Useful for certain development situations.\r\n//\r\n// For example, if you want to simulate the greatest football referee England has ever produced:\r\n//\r\n//  const dummyUser: SocialUser = {\r\n//     id: '0123456789',\r\n//     name: 'Howard Webb',\r\n//     email: 'howard@webb.com',\r\n//     firstName: 'Howard',\r\n//     lastName: 'Webb',\r\n//     authToken: 'dummyAuthToken',\r\n//     photoUrl: 'https://en.wikipedia.org/wiki/Howard_Webb#/media/File:Howard_Webb_march11.jpg',\r\n//     provider: 'DUMMY',\r\n//     idToken: 'dummyIdToken',\r\n//     authorizationCode: 'dummyAuthCode'\r\n// };\r\n//\r\n//  let config = new AuthServiceConfig([\r\n//  { ... },\r\n//  {\r\n//       id: DummyLoginProvider.PROVIDER_ID,\r\n//       provider: new DummyLoginProvider(dummyUser)  // Pass your user into the constructor\r\n//   },\r\n//  { ... }\r\n//  ]);\r\n\r\nexport class DummyLoginProvider extends BaseLoginProvider {\r\n  public static readonly PROVIDER_ID: string = 'DUMMY';\r\n\r\n  static readonly DEFAULT_USER = {\r\n    id: '1234567890',\r\n    name: 'Mickey Mouse',\r\n    email: 'mickey@mouse.com',\r\n    firstName: 'Mickey',\r\n    lastName: 'Mouse',\r\n    authToken: 'dummyAuthToken',\r\n    photoUrl: 'https://en.wikipedia.org/wiki/File:Mickey_Mouse.png',\r\n    provider: 'DUMMY',\r\n    idToken: 'dummyIdToken',\r\n    authorizationCode: 'dummyAuthCode',\r\n    response: {},\r\n  };\r\n\r\n  private dummy: SocialUser;\r\n\r\n  private loggedIn: boolean;\r\n\r\n  constructor(dummy?: SocialUser) {\r\n    super();\r\n    if (dummy) {\r\n      this.dummy = dummy;\r\n    } else {\r\n      this.dummy = DummyLoginProvider.DEFAULT_USER;\r\n    }\r\n\r\n    // Start not logged in\r\n    this.loggedIn = false;\r\n  }\r\n\r\n  getLoginStatus(): Promise<SocialUser> {\r\n    return new Promise((resolve, reject) => {\r\n      if (this.loggedIn) {\r\n        resolve(this.dummy);\r\n      } else {\r\n        reject('No user is currently logged in.');\r\n      }\r\n    });\r\n  }\r\n\r\n  initialize(): Promise<void> {\r\n    return new Promise((resolve, reject) => {\r\n      resolve();\r\n    });\r\n  }\r\n\r\n  signIn(): Promise<SocialUser> {\r\n    return new Promise((resolve, reject) => {\r\n      this.loggedIn = true;\r\n      resolve(this.dummy);\r\n    });\r\n  }\r\n\r\n  signOut(revoke?: boolean): Promise<void> {\r\n    return new Promise((resolve, reject) => {\r\n      this.loggedIn = false;\r\n      resolve();\r\n    });\r\n  }\r\n}\r\n","import { BaseLoginProvider } from '../entities/base-login-provider';\r\nimport { SocialUser } from '../entities/social-user';\r\n\r\ndeclare let FB: any;\r\n\r\nexport class FacebookLoginProvider extends BaseLoginProvider {\r\n  public static readonly PROVIDER_ID: string = 'FACEBOOK';\r\n\r\n  private requestOptions = {\r\n    scope: 'email,public_profile',\r\n    locale: 'en_US',\r\n    fields: 'name,email,picture,first_name,last_name',\r\n    version: 'v10.0',\r\n  };\r\n\r\n  constructor(private clientId: string, initOptions: Object = {}) {\r\n    super();\r\n\r\n    this.requestOptions = {\r\n      ...this.requestOptions,\r\n      ...initOptions,\r\n    };\r\n  }\r\n\r\n  initialize(): Promise<void> {\r\n    return new Promise((resolve, reject) => {\r\n      try {\r\n        this.loadScript(\r\n          FacebookLoginProvider.PROVIDER_ID,\r\n          `//connect.facebook.net/${this.requestOptions.locale}/sdk.js`,\r\n          () => {\r\n            FB.init({\r\n              appId: this.clientId,\r\n              autoLogAppEvents: true,\r\n              cookie: true,\r\n              xfbml: true,\r\n              version: this.requestOptions.version,\r\n            });\r\n\r\n            resolve();\r\n          }\r\n        );\r\n      } catch (err) {\r\n        reject(err);\r\n      }\r\n    });\r\n  }\r\n\r\n  getLoginStatus(): Promise<SocialUser> {\r\n    return new Promise((resolve, reject) => {\r\n      FB.getLoginStatus((response: any) => {\r\n        if (response.status === 'connected') {\r\n          let authResponse = response.authResponse;\r\n          FB.api(`/me?fields=${this.requestOptions.fields}`, (fbUser: any) => {\r\n            let user: SocialUser = new SocialUser();\r\n\r\n            user.id = fbUser.id;\r\n            user.name = fbUser.name;\r\n            user.email = fbUser.email;\r\n            user.photoUrl =\r\n              'https://graph.facebook.com/' +\r\n              fbUser.id +\r\n              '/picture?type=normal&access_token=' +\r\n              authResponse.accessToken;\r\n            user.firstName = fbUser.first_name;\r\n            user.lastName = fbUser.last_name;\r\n            user.authToken = authResponse.accessToken;\r\n\r\n            user.response = fbUser;\r\n\r\n            resolve(user);\r\n          });\r\n        } else {\r\n          reject(\r\n            `No user is currently logged in with ${FacebookLoginProvider.PROVIDER_ID}`\r\n          );\r\n        }\r\n      });\r\n    });\r\n  }\r\n\r\n  signIn(signInOptions?: any): Promise<SocialUser> {\r\n    const options = { ...this.requestOptions, ...signInOptions };\r\n    return new Promise((resolve, reject) => {\r\n      FB.login((response: any) => {\r\n        if (response.authResponse) {\r\n          let authResponse = response.authResponse;\r\n          FB.api(`/me?fields=${options.fields}`, (fbUser: any) => {\r\n            let user: SocialUser = new SocialUser();\r\n\r\n            user.id = fbUser.id;\r\n            user.name = fbUser.name;\r\n            user.email = fbUser.email;\r\n            user.photoUrl =\r\n              'https://graph.facebook.com/' +\r\n              fbUser.id +\r\n              '/picture?type=normal';\r\n            user.firstName = fbUser.first_name;\r\n            user.lastName = fbUser.last_name;\r\n            user.authToken = authResponse.accessToken;\r\n\r\n            user.response = fbUser;\r\n\r\n            resolve(user);\r\n          });\r\n        } else {\r\n          reject('User cancelled login or did not fully authorize.');\r\n        }\r\n      }, options);\r\n    });\r\n  }\r\n\r\n  signOut(): Promise<void> {\r\n    return new Promise((resolve, reject) => {\r\n      FB.logout((response: any) => {\r\n        resolve();\r\n      });\r\n    });\r\n  }\r\n}\r\n","import { BaseLoginProvider } from '../entities/base-login-provider';\r\nimport { SocialUser } from '../entities/social-user';\r\n\r\ndeclare let amazon: any, window: any;\r\n\r\nexport class AmazonLoginProvider extends BaseLoginProvider {\r\n  public static readonly PROVIDER_ID: string = 'AMAZON';\r\n\r\n  constructor(\r\n    private clientId: string,\r\n    private initOptions: any = {\r\n      scope: 'profile',\r\n      scope_data: {\r\n        profile: { essential: false },\r\n      },\r\n      redirect_uri: location.origin,\r\n    }\r\n  ) {\r\n    super();\r\n  }\r\n\r\n  initialize(): Promise<void> {\r\n    let amazonRoot = null;\r\n    if (document) {\r\n      amazonRoot = document.createElement('div');\r\n      amazonRoot.id = 'amazon-root';\r\n      document.body.appendChild(amazonRoot);\r\n    }\r\n\r\n    window.onAmazonLoginReady = () => {\r\n      amazon.Login.setClientId(this.clientId);\r\n    };\r\n\r\n    return new Promise((resolve, reject) => {\r\n      try {\r\n        this.loadScript(\r\n          'amazon-login-sdk',\r\n          'https://assets.loginwithamazon.com/sdk/na/login1.js',\r\n          () => {\r\n            resolve();\r\n          },\r\n          amazonRoot\r\n        );\r\n      } catch (err) {\r\n        reject(err);\r\n      }\r\n    });\r\n  }\r\n\r\n  getLoginStatus(): Promise<SocialUser> {\r\n    return new Promise((resolve, reject) => {\r\n      let token = this.retrieveToken();\r\n\r\n      if (token) {\r\n        amazon.Login.retrieveProfile(token, (response) => {\r\n          if (response.success) {\r\n            let user: SocialUser = new SocialUser();\r\n\r\n            user.id = response.profile.CustomerId;\r\n            user.name = response.profile.Name;\r\n            user.email = response.profile.PrimaryEmail;\r\n            user.response = response.profile;\r\n\r\n            resolve(user);\r\n          } else {\r\n            reject(response.error);\r\n          }\r\n        });\r\n      } else {\r\n        reject(`No user is currently logged in with ${AmazonLoginProvider.PROVIDER_ID}`);\r\n      }\r\n    });\r\n  }\r\n\r\n  signIn(signInOptions?: any): Promise<SocialUser> {\r\n    const options = { ...this.initOptions, ...signInOptions };\r\n    return new Promise((resolve, reject) => {\r\n      amazon.Login.authorize(options, (authResponse) => {\r\n        if (authResponse.error) {\r\n          reject(authResponse.error);\r\n        } else {\r\n          amazon.Login.retrieveProfile(\r\n            authResponse.access_token,\r\n            (response) => {\r\n              let user: SocialUser = new SocialUser();\r\n\r\n              user.id = response.profile.CustomerId;\r\n              user.name = response.profile.Name;\r\n              user.email = response.profile.PrimaryEmail;\r\n              user.authToken = authResponse.access_token;\r\n              user.response = response.profile;\r\n\r\n              this.persistToken(authResponse.access_token);\r\n\r\n              resolve(user);\r\n            }\r\n          );\r\n        }\r\n      });\r\n    });\r\n  }\r\n\r\n  signOut(): Promise<void> {\r\n    return new Promise((resolve, reject) => {\r\n      try {\r\n        amazon.Login.logout();\r\n\r\n        this.clearToken();\r\n        resolve();\r\n      } catch (err) {\r\n        reject(err.message);\r\n      }\r\n    });\r\n  }\r\n\r\n  private persistToken(token: string): void {\r\n    localStorage.setItem(`${AmazonLoginProvider.PROVIDER_ID}_token`, token);\r\n  }\r\n\r\n  private retrieveToken(): string {\r\n    return localStorage.getItem(`${AmazonLoginProvider.PROVIDER_ID}_token`);\r\n  }\r\n\r\n  private clearToken(): void {\r\n    localStorage.removeItem(`${AmazonLoginProvider.PROVIDER_ID}_token`);\r\n  }\r\n}\r\n","import { BaseLoginProvider } from '../entities/base-login-provider';\r\nimport { SocialUser } from '../entities/social-user';\r\n\r\ndeclare let VK: any;\r\n\r\nconst permissionTypes = {\r\n  notify: 1,\r\n  friends: 2,\r\n  photos: 4,\r\n  audio: 8,\r\n  video: 16,\r\n  offers: 32,\r\n  questions: 64,\r\n  pages: 128,\r\n  links: 256,\r\n  status: 1024,\r\n  notes: 2048,\r\n  messages: 4096,\r\n  wall: 8192,\r\n  ads: 32768,\r\n  offline: 65536, \r\n  docs: 131072,\r\n  groups: 262144,\r\n  notifications: 524288,\r\n  stats: 1048576,\r\n  email: 4194304,\r\n  market: 134217728\r\n};\r\n\r\nexport class VKLoginProvider extends BaseLoginProvider {\r\n  constructor(\r\n    private clientId: string,\r\n    private initOptions = {\r\n      fields: 'photo_max,contacts',\r\n      version: '5.131',\r\n    }\r\n  ) {\r\n    super();\r\n  }\r\n\r\n  public static readonly PROVIDER_ID: string = 'VK';\r\n\r\n  private readonly VK_API_URL = '//vk.com/js/api/openapi.js';\r\n  private readonly VK_API_GET_USER = 'users.get';\r\n\r\n  initialize(): Promise<void> {\r\n    return new Promise((resolve, reject) => {\r\n      try {\r\n        this.loadScript(\r\n          VKLoginProvider.PROVIDER_ID,\r\n          this.VK_API_URL,\r\n          () => {\r\n            VK.init({\r\n              apiId: this.clientId,\r\n            });\r\n\r\n            resolve();\r\n          }\r\n        );\r\n      } catch (err) {\r\n        reject(err);\r\n      }\r\n    });\r\n  }\r\n\r\n  getLoginStatus(): Promise<SocialUser> {\r\n    return new Promise<SocialUser>((resolve: (value: SocialUser) => void) =>\r\n      this.getLoginStatusInternal(resolve)\r\n    );\r\n  }\r\n\r\n  signIn(permissions: string[]): Promise<SocialUser> {\r\n    if (permissions?.includes('offers')) {\r\n      console.warn('The \"offers\" permission is outdated.');\r\n    }\r\n\r\n    if (permissions?.includes('questions')) {\r\n      console.warn('The \"questions\" permission is outdated.');\r\n    }\r\n\r\n    if (permissions?.includes('messages')) {\r\n      console.warn('The \"messages\" permission is unavailable for non-standalone applications.');\r\n    }\r\n\r\n    const scope = permissions?.reduce((accumulator, current) => {\r\n        const index = Object.keys(permissionTypes).findIndex(pt => pt === current);\r\n        return index > -1 ? accumulator + permissionTypes[current] : 0;\r\n      }, 0);\r\n\r\n    return new Promise<SocialUser>((resolve: (value: SocialUser) => void) =>\r\n      this.signInInternal(resolve, scope)\r\n    );\r\n  }\r\n\r\n  signOut(): Promise<void> {\r\n    return new Promise((resolve: (value: void | PromiseLike<void>) => void) => {\r\n      VK.Auth.logout(() => {\r\n        resolve();\r\n      });\r\n    });\r\n  }\r\n\r\n  private signInInternal(\r\n    resolve: (value: SocialUser) => void, \r\n    scope:any\r\n  ) {\r\n    VK.Auth.login((loginResponse: any) => {\r\n      if (loginResponse.status === 'connected') {\r\n        this.getUser(\r\n          loginResponse.session.mid,\r\n          loginResponse.session.sid,\r\n          resolve\r\n        );\r\n      }\r\n    }, scope);\r\n  }\r\n\r\n  private getUser(\r\n    userId: number, \r\n    token: string, \r\n    resolve: (value: SocialUser) => void\r\n  ) {\r\n    VK.Api.call(\r\n      this.VK_API_GET_USER,\r\n      {\r\n        user_id: userId,\r\n        fields: this.initOptions.fields,\r\n        v: this.initOptions.version,\r\n      },\r\n      (userResponse: any) => {\r\n        resolve(\r\n          this.createUser(\r\n            Object.assign({}, { token }, userResponse.response[0])\r\n          )\r\n        );\r\n      }\r\n    );\r\n  }\r\n\r\n  private getLoginStatusInternal(resolve: (value: SocialUser) => void) {\r\n    VK.Auth.getLoginStatus((loginResponse: any) => {\r\n      if (loginResponse.status === 'connected') {\r\n        this.getUser(\r\n          loginResponse.session.mid,\r\n          loginResponse.session.sid,\r\n          resolve\r\n        );\r\n      }\r\n    });\r\n  }\r\n\r\n  private createUser(response: any): SocialUser {\r\n    const user: SocialUser = new SocialUser();\r\n    user.id = response.id;\r\n    user.name = `${response.first_name} ${response.last_name}`;\r\n    user.photoUrl = response.photo_max;\r\n    user.authToken = response.token;\r\n    return user;\r\n  }\r\n}\r\n","import { BaseLoginProvider } from '../entities/base-login-provider';\r\nimport { SocialUser } from '../entities/social-user';\r\n\r\n/**\r\n * Protocol modes supported by MSAL.\r\n */\r\nexport enum ProtocolMode {\r\n  AAD = 'AAD',\r\n  OIDC = 'OIDC'\r\n}\r\n\r\n/**\r\n * Initialization Options for Microsoft Provider: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/initialization.md\r\n * Details (not all options are supported): https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md\r\n */\r\nexport type MicrosoftOptions = {\r\n  redirect_uri?: string,\r\n  logout_redirect_uri?: string,\r\n  authority?: string,\r\n  knownAuthorities?: string[],\r\n  protocolMode?: ProtocolMode,\r\n  clientCapabilities?: string[],\r\n  cacheLocation?: string,\r\n  scopes?: string[],\r\n  prompt?: string,\r\n};\r\n\r\n// Collection of internal MSAL interfaces from: https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-browser/src\r\n\r\ninterface MSALAccount {\r\n  environment: string;\r\n  homeAccountId: string;\r\n  tenantId: string;\r\n  username: string;\r\n}\r\n\r\ninterface MSGraphUserInfo {\r\n  businessPhones: string[];\r\n  displayName: string;\r\n  givenName: string;\r\n  id: string;\r\n  jobTitle: string;\r\n  mail: string;\r\n  mobilePhone: string;\r\n  officeLocation: string;\r\n  preferredLanguage: string;\r\n  surname: string;\r\n  userPrincipalName: string;\r\n}\r\n\r\ninterface MSALLoginRequest {\r\n  scopes?: string[];\r\n  sid?: string;\r\n  loginHint?: string;\r\n  domainHint?: string;\r\n  prompt?: string;\r\n}\r\n\r\ninterface MSALLoginResponse {\r\n  accessToken: string;\r\n  account: MSALAccount;\r\n  expiresOn: Date;\r\n  extExpiresOn: Date;\r\n  familyId: string;\r\n  fromCache: boolean;\r\n  idToken: string;\r\n  idTokenClaims: any;\r\n  scopes: string[];\r\n  state: string;\r\n  tenantId: string;\r\n  uniqueId: string;\r\n}\r\n\r\ninterface MSALLogoutRequest {\r\n  account?: MSALAccount;\r\n  postLogoutRedirectUri?: string;\r\n  authority?: string;\r\n  correlationId?: string;\r\n}\r\n\r\ninterface MSALClientApplication {\r\n  getAllAccounts(): MSALAccount[];\r\n  logoutPopup(logoutRequest?: MSALLogoutRequest): Promise<void>;\r\n  loginPopup(loginRequest: MSALLoginRequest): Promise<MSALLoginResponse>;\r\n  ssoSilent(loginRequest: MSALLoginRequest): Promise<MSALLoginResponse>;\r\n  acquireTokenSilent(loginRequest: MSALLoginRequest): Promise<MSALLoginResponse>;\r\n  getAccountByHomeId(homeAccountId: string): MSALAccount;\r\n}\r\n\r\ndeclare let msal: any;\r\n\r\nconst COMMON_AUTHORITY: string = 'https://login.microsoftonline.com/common/';\r\n\r\n/**\r\n * Microsoft Authentication using MSAL v2: https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-browser\r\n */\r\nexport class MicrosoftLoginProvider extends BaseLoginProvider {\r\n  private _instance: MSALClientApplication;\r\n  public static readonly PROVIDER_ID: string = 'MICROSOFT';\r\n\r\n  private initOptions: MicrosoftOptions = {\r\n    authority: COMMON_AUTHORITY,\r\n    scopes: ['openid', 'email', 'profile', 'User.Read'],\r\n    knownAuthorities: [],\r\n    protocolMode: ProtocolMode.AAD,\r\n    clientCapabilities: [],\r\n    cacheLocation: 'sessionStorage'\r\n  };\r\n\r\n  constructor(\r\n    private clientId: string,\r\n    initOptions?: MicrosoftOptions\r\n  ) {\r\n    super();\r\n\r\n    this.initOptions = {\r\n      ...this.initOptions,\r\n      ...initOptions\r\n    };\r\n  }\r\n\r\n  initialize(): Promise<void> {\r\n    return new Promise((resolve, reject) => {\r\n      this.loadScript(\r\n        MicrosoftLoginProvider.PROVIDER_ID,\r\n        'https://alcdn.msauth.net/browser/2.13.1/js/msal-browser.min.js',\r\n        () => {\r\n          try {\r\n            const config = {\r\n              auth: {\r\n                clientId: this.clientId,\r\n                redirectUri: this.initOptions.redirect_uri ?? location.origin,\r\n                authority: this.initOptions.authority,\r\n                knownAuthorities: this.initOptions.knownAuthorities,\r\n                protocolMode: this.initOptions.protocolMode,\r\n                clientCapabilities: this.initOptions.clientCapabilities\r\n              },\r\n              cache: !this.initOptions.cacheLocation ? null : {\r\n                cacheLocation: this.initOptions.cacheLocation\r\n              }\r\n            };\r\n\r\n            this._instance = new msal.PublicClientApplication(config);\r\n            resolve();\r\n          } catch (e) {\r\n            reject(e);\r\n          }\r\n        }\r\n      );\r\n    });\r\n  }\r\n\r\n  private getSocialUser(loginResponse): Promise<SocialUser> {\r\n    return new Promise<SocialUser>((resolve, reject) => {\r\n      //After login, use Microsoft Graph API to get user info\r\n      let meRequest = new XMLHttpRequest();\r\n      meRequest.onreadystatechange = () => {\r\n        if (meRequest.readyState == 4) {\r\n          try {\r\n            if (meRequest.status == 200) {\r\n              let userInfo = <MSGraphUserInfo>JSON.parse(meRequest.responseText);\r\n\r\n              let user: SocialUser = new SocialUser();\r\n              user.provider = MicrosoftLoginProvider.PROVIDER_ID;\r\n              user.id = loginResponse.idToken;\r\n              user.authToken = loginResponse.accessToken;\r\n              user.name = loginResponse.idTokenClaims.name;\r\n              user.email = loginResponse.account.username;\r\n              user.idToken = loginResponse.idToken;\r\n              user.response = loginResponse;\r\n              user.firstName = userInfo.givenName;\r\n              user.lastName = userInfo.surname;\r\n\r\n              resolve(user);\r\n            } else {\r\n              reject(`Error retrieving user info: ${meRequest.status}`);\r\n            }\r\n          } catch (err) {\r\n            reject(err);\r\n          }\r\n        }\r\n      };\r\n\r\n      //Microsoft Graph ME Endpoint: https://docs.microsoft.com/en-us/graph/api/user-get?view=graph-rest-1.0&tabs=http\r\n      meRequest.open('GET', 'https://graph.microsoft.com/v1.0/me');\r\n      meRequest.setRequestHeader('Authorization', `Bearer ${loginResponse.accessToken}`);\r\n      try {\r\n        meRequest.send();\r\n      } catch (err) {\r\n        reject(err);\r\n      }\r\n    });\r\n  }\r\n\r\n  async getLoginStatus(): Promise<SocialUser> {\r\n    const accounts = this._instance.getAllAccounts();\r\n    if (accounts?.length > 0) {\r\n      const loginResponse = await this._instance.ssoSilent({\r\n        scopes: this.initOptions.scopes,\r\n        loginHint: accounts[0].username\r\n      });\r\n      return await this.getSocialUser(loginResponse);\r\n    } else {\r\n      throw `No user is currently logged in with ${MicrosoftLoginProvider.PROVIDER_ID}`;\r\n    }\r\n  }\r\n\r\n  async signIn(): Promise<SocialUser> {\r\n    const loginResponse = await this._instance.loginPopup({\r\n      scopes: this.initOptions.scopes,\r\n      prompt: this.initOptions.prompt,\r\n    });\r\n    return await this.getSocialUser(loginResponse);\r\n  }\r\n\r\n  async signOut(revoke?: boolean): Promise<void> {\r\n    const accounts = this._instance.getAllAccounts();\r\n    if (accounts?.length > 0) {\r\n      await this._instance.logoutPopup({\r\n        account: accounts[0],\r\n        postLogoutRedirectUri: this.initOptions.logout_redirect_uri ?? this.initOptions.redirect_uri ?? location.href\r\n      })\r\n    }\r\n  }\r\n}\r\n","import { Directive, ElementRef, Input } from '@angular/core';\r\nimport { take } from 'rxjs/operators';\r\nimport { SocialAuthService } from '../socialauth.service';\r\n\r\n@Directive({\r\n    // eslint-disable-next-line @angular-eslint/directive-selector\r\n    selector: 'asl-google-signin-button',\r\n    standalone: true\r\n})\r\nexport class GoogleSigninButtonDirective {\r\n  @Input()\r\n  type: 'icon' | 'standard' = 'icon';\r\n\r\n  @Input()\r\n  size: 'small' | 'medium' | 'large' = 'medium';\r\n\r\n  @Input()\r\n  text: 'signin_with' | 'signup_with' | 'continue_with' = 'signin_with';\r\n\r\n  @Input()\r\n  shape: 'square' | 'circle' | 'pill' | 'rectangular' = 'rectangular';\r\n\r\n  @Input()\r\n  theme: 'outline' | 'filled_blue' | 'filled_black' = 'outline';\r\n\r\n  @Input()\r\n  logo_alignment: 'left' | 'center' = 'left';\r\n\r\n  @Input()\r\n  width: number = 0;\r\n\r\n  @Input()\r\n  locale: string = '';\r\n\r\n  constructor(el: ElementRef, socialAuthService: SocialAuthService) {\r\n    socialAuthService.initState.pipe(take(1)).subscribe(() => {\r\n      Promise.resolve(this.width).then((value) => {\r\n        if (value > 400 || (value < 200 && value != 0)) {\r\n          Promise.reject(\r\n            'Please note .. max-width 400 , min-width 200 ' +\r\n              '(https://developers.google.com/identity/gsi/web/tools/configurator)'\r\n          );\r\n        } else {\r\n          google.accounts.id.renderButton(el.nativeElement, {\r\n            type: this.type,\r\n            size: this.size,\r\n            text: this.text,\r\n            width: this.width,\r\n            shape: this.shape,\r\n            theme: this.theme,\r\n            logo_alignment: this.logo_alignment,\r\n            locale: this.locale,\r\n          });\r\n        }\r\n      });\r\n    });\r\n  }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SocialAuthService"],"mappings":";;;;;;MAIsB,iBAAiB,CAAA;AACrC,IAAA,WAAA,GAAA;IAQU,UAAU,CAClB,EAAU,EACV,GAAW,EACX,MAAW,EACX,aAAa,GAAG,IAAI,EAAA;;AAGpB,QAAA,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;YACnE,IAAI,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAE/C,YAAA,QAAQ,CAAC,KAAK,GAAG,IAAI;AACrB,YAAA,QAAQ,CAAC,GAAG,GAAG,GAAG;AAClB,YAAA,QAAQ,CAAC,MAAM,GAAG,MAAM;YAExB,IAAI,CAAC,aAAa,EAAE;AAClB,gBAAA,aAAa,GAAG,QAAQ,CAAC,IAAI;;AAG/B,YAAA,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC;;;AAGxC;;MClCY,UAAU,CAAA;AActB;;ACqBD,MAAM,kBAAkB,GAAsB;AAC5C,IAAA,aAAa,EAAE,IAAI;CACpB;AAEK,MAAO,mBAAoB,SAAQ,iBAAiB,CAAA;aACjC,IAAW,CAAA,WAAA,GAAW,QAAX,CAAoB;IAStD,WACU,CAAA,QAAgB,EACP,WAA+B,EAAA;AAEhD,QAAA,KAAK,EAAE;QAHC,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACC,IAAW,CAAA,WAAA,GAAX,WAAW;AATd,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAqB;AAEjD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAoB,IAAI,CAAC;AAC1D,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAAgB,IAAI,CAAC;AACvD,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAU;AAShE,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE,GAAG,kBAAkB,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE;;AAGjE,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;;AAGzD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC;;IAGtE,UAAU,CAAC,SAAmB,EAAE,IAAa,EAAA;QAC3C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,IAAI;AACF,gBAAA,IAAI,CAAC,UAAU,CACb,mBAAmB,CAAC,WAAW,EAC/B,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAClC,MAAK;AACH,oBAAA,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC;wBAC5B,SAAS,EAAE,IAAI,CAAC,QAAQ;AACxB,wBAAA,WAAW,EAAE,SAAS;AACtB,wBAAA,QAAQ,EAAE,CAAC,EAAE,UAAU,EAAE,KAAI;4BAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;AACpD,4BAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;yBAClC;AACD,wBAAA,gBAAgB,EAAE,IAAI,CAAC,WAAW,EAAE,gBAAgB;AACpD,wBAAA,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa;AAC3C,wBAAA,oBAAoB,EAAE,IAAI,CAAC,WAAW,CAAC;AACxC,qBAAA,CAAC;AAEF,oBAAA,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE;AAClC,wBAAA,IAAI,CAAC;AACF,6BAAA,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC;AACpC,6BAAA,SAAS,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;;AAG9D,oBAAA,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;wBAC3B,MAAM,KAAK,GACT,IAAI,CAAC,WAAW,CAAC,MAAM,YAAY;8BAC/B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG;AACnD,8BAAE,IAAI,CAAC,WAAW,CAAC,MAAM;wBAE7B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC;4BACzD,SAAS,EAAE,IAAI,CAAC,QAAQ;4BACxB,KAAK;AACL,4BAAA,MAAM,EAAG,IAAI,CAAC,WAAW,CAAC,MAAM;AAChC,4BAAA,QAAQ,EAAE,CAAC,aAAa,KAAI;AAC1B,gCAAA,IAAI,aAAa,CAAC,KAAK,EAAE;AACvB,oCAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;wCACtB,IAAI,EAAE,aAAa,CAAC,KAAK;wCACzB,WAAW,EAAE,aAAa,CAAC,iBAAiB;wCAC5C,GAAG,EAAE,aAAa,CAAC,SAAS;AAC7B,qCAAA,CAAC;;qCACG;oCACL,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;;6BAErD;AACF,yBAAA,CAAC;;AAGJ,oBAAA,OAAO,EAAE;AACX,iBAAC,CACF;;YACD,OAAO,GAAG,EAAE;gBACZ,MAAM,CAAC,GAAG,CAAC;;AAEf,SAAC,CAAC;;IAGJ,cAAc,GAAA;QACZ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AAC1B,gBAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;;iBAC1B;AACL,gBAAA,MAAM,CACJ,CAAuC,oCAAA,EAAA,mBAAmB,CAAC,WAAW,CAAA,CAAE,CACzE;;AAEL,SAAC,CAAC;;IAGJ,YAAY,GAAA;QACV,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,QAAQ,KAAI;gBAChE,IAAI,QAAQ,CAAC,KAAK;AAAE,oBAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;;AACrC,oBAAA,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACtC,aAAC,CAAC;AACJ,SAAC,CAAC;;IAGJ,cAAc,GAAA;QACZ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,gBAAA,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;oBAC1B,MAAM,CACJ,mEAAmE,CACpE;;qBACI;oBACL,MAAM,CAAC,gCAAgC,CAAC;;;iBAErC;AACL,gBAAA,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC;AACnC,oBAAA,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK;AACpC,iBAAA,CAAC;AACF,gBAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC;;AAE9D,SAAC,CAAC;;IAGJ,iBAAiB,GAAA;QACf,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gBACtB,MAAM,CACJ,mEAAmE,CACpE;;AACI,iBAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE;gBACnC,MAAM,CAAC,2BAA2B,CAAC;;iBAC9B;AACL,gBAAA,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAK;AAC1D,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5B,oBAAA,OAAO,EAAE;AACX,iBAAC,CAAC;;AAEN,SAAC,CAAC;;IAGJ,MAAM,GAAA;AACJ,QAAA,OAAO,OAAO,CAAC,MAAM,CACnB,gGAAgG;YAC9F,2EAA2E;AAC3E,YAAA,mFAAmF,CACtF;;AAGH,IAAA,MAAM,OAAO,GAAA;AACX,QAAA,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,iBAAiB,EAAE;AACtC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;;AAGrB,IAAA,gBAAgB,CAAC,OAAe,EAAA;AACtC,QAAA,MAAM,IAAI,GAAG,IAAI,UAAU,EAAE;AAC7B,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;AACvC,QAAA,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG;AACrB,QAAA,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI;AACxB,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;AAC1B,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO;AAC/B,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC;AACtC,QAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC;AACtC,QAAA,OAAO,IAAI;;AAGL,IAAA,SAAS,CAAC,OAAe,EAAA;QAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACvC,QAAA,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;QAC9D,MAAM,WAAW,GAAG,kBAAkB,CACpC,MAAM,CAAC,IAAI,CAAC,MAAM;aACf,KAAK,CAAC,EAAE;aACR,GAAG,CAAC,UAAU,CAAC,EAAA;YACd,OAAO,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAC9D,SAAC;AACA,aAAA,IAAI,CAAC,EAAE,CAAC,CACZ;AACD,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;;AAGxB,IAAA,uBAAuB,CAAC,IAAY,EAAA;QAC1C,OAAO,IAAI;YACJ,CAA6C,0CAAA,EAAA,IAAI,CAAE,CAAA;AACnD,YAAA,wCAAwC;;;;AC9MnD;;;;;;AAMG;MAEU,iBAAiB,CAAA;aACJ,IAA4B,CAAA,4BAAA,GAClD,0BADkD,CACvB;aACL,IAAiB,CAAA,iBAAA,GAAG,eAAH,CAAmB;aACpC,IAAmB,CAAA,mBAAA,GACzC,kEADyC,CAC0B;aAC7C,IAAmC,CAAA,mCAAA,GACzD,+DADyD,CACO;aAC1C,IAAkC,CAAA,kCAAA,GACxD,oEADwD,CACa;;AAcvE,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;;;AAIvC,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;;AAGvC;;AAEG;AACH,IAAA,WAAA,CAEE,MAAkE,EACjD,OAAe,EACf,SAAmB,EAAA;QADnB,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAS,CAAA,SAAA,GAAT,SAAS;AA5BpB,QAAA,IAAA,CAAA,SAAS,GAA+B,IAAI,GAAG,EAAE;QACjD,IAAS,CAAA,SAAA,GAAG,KAAK;QACjB,IAAI,CAAA,IAAA,GAAW,EAAE;QAEjB,IAAK,CAAA,KAAA,GAAsB,IAAI;AAC/B,QAAA,IAAA,CAAA,UAAU,GAAqC,IAAI,aAAa,CAAC,CAAC,CAAC;;QAGnE,IAAW,CAAA,WAAA,GAAG,KAAK;AACnB,QAAA,IAAA,CAAA,UAAU,GAA0B,IAAI,YAAY,EAAE;AAqB5D,QAAA,IAAI,MAAM,YAAY,OAAO,EAAE;AAC7B,YAAA,MAAM,CAAC,IAAI,CAAC,CAAC,MAA+B,KAAI;AAC9C,gBAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AACzB,aAAC,CAAC;;aACG;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;;;AAInB,IAAA,UAAU,CAAC,MAA+B,EAAA;AAChD,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,KAAK,SAAS,GAAG,MAAM,CAAC,SAAS,GAAG,KAAK;AAC1E,QAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,KAAK,SAAS,GAAG,MAAM,CAAC,IAAI,GAAG,EAAE;QACxD,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,MAAM;QAE1C,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AAChC,YAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAChB,IAAI,CAAC,EAAE,EACP,WAAW,IAAI,IAAI,CAAC;kBAChB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ;AAClC,kBAAE,IAAI,CAAC,QAAQ,CAClB;AACH,SAAC,CAAC;AAEF,QAAA,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,KAC/C,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAC/C;aAEA,IAAI,CAAC,MAAK;AACT,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,MAAM,mBAAmB,GAAG,EAAE;gBAC9B,IAAI,QAAQ,GAAG,KAAK;gBAEpB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAuB,EAAE,GAAW,KAAI;AAC9D,oBAAA,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,EAAE;AACzC,oBAAA,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;oBACjC;AACG,yBAAA,IAAI,CAAC,CAAC,IAAgB,KAAI;AACzB,wBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;wBACvB,QAAQ,GAAG,IAAI;AACjB,qBAAC;AACA,yBAAA,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;AACzB,iBAAC,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,MAAK;oBAC1C,IAAI,CAAC,QAAQ,EAAE;AACb,wBAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,wBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;AAE9B,iBAAC,CAAC;;YAGJ,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,GAAG,KAAI;AACvC,gBAAA,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;oBACrC,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AACrC,wBAAA,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAK;AACpB,4BAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;AACzB,yBAAC,CAAC;AACJ,qBAAC,CAAC;;AAEN,aAAC,CAAC;AACJ,SAAC;AACA,aAAA,KAAK,CAAC,CAAC,KAAK,KAAI;YACf,OAAO,CAAC,KAAK,CAAC;AAChB,SAAC;aACA,OAAO,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;YACvB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;AACtC,YAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;AAC5B,SAAC,CAAC;;IAGN,MAAM,cAAc,CAAC,UAAkB,EAAA;QACrC,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;AACrD,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,MAAM,iBAAiB,CAAC,mBAAmB;;aACtC,IAAI,CAAC,cAAc,EAAE;YAC1B,MAAM,iBAAiB,CAAC,4BAA4B;;AAC/C,aAAA,IAAI,EAAE,cAAc,YAAY,mBAAmB,CAAC,EAAE;YAC3D,MAAM,iBAAiB,CAAC,kCAAkC;;AAG5D,QAAA,OAAO,MAAM,cAAc,CAAC,cAAc,EAAE;;AAG9C,IAAA,gBAAgB,CAAC,UAAkB,EAAA;QACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,gBAAA,MAAM,CAAC,iBAAiB,CAAC,mBAAmB,CAAC;;iBACxC;gBACL,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;gBACrD,IAAI,cAAc,EAAE;AAClB,oBAAA,IAAI,OAAO,cAAc,CAAC,YAAY,KAAK,UAAU,EAAE;AACrD,wBAAA,MAAM,CAAC,iBAAiB,CAAC,mCAAmC,CAAC;;yBACxD;wBACL;AACG,6BAAA,YAAY;AACZ,6BAAA,IAAI,CAAC,CAAC,IAAI,KAAI;AACb,4BAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC;AAC9B,4BAAA,OAAO,EAAE;AACX,yBAAC;AACA,6BAAA,KAAK,CAAC,CAAC,GAAG,KAAI;4BACb,MAAM,CAAC,GAAG,CAAC;AACb,yBAAC,CAAC;;;qBAED;AACL,oBAAA,MAAM,CAAC,iBAAiB,CAAC,4BAA4B,CAAC;;;AAG5D,SAAC,CAAC;;AAGJ,IAAA,kBAAkB,CAAC,UAAkB,EAAA;QACnC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,gBAAA,MAAM,CAAC,iBAAiB,CAAC,mBAAmB,CAAC;;AACxC,iBAAA,IAAI,UAAU,KAAK,mBAAmB,CAAC,WAAW,EAAE;AACzD,gBAAA,MAAM,CAAC,iBAAiB,CAAC,mCAAmC,CAAC;;iBACxD;gBACL,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;AACrD,gBAAA,IAAI,cAAc,YAAY,mBAAmB,EAAE;AACjD,oBAAA,cAAc,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;;qBACzD;AACL,oBAAA,MAAM,CAAC,iBAAiB,CAAC,4BAA4B,CAAC;;;AAG5D,SAAC,CAAC;;AAGJ;;;;;;AAMG;IACH,MAAM,CAAC,UAAkB,EAAE,aAAmB,EAAA;QAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,gBAAA,MAAM,CAAC,iBAAiB,CAAC,mBAAmB,CAAC;;iBACxC;gBACL,IAAI,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;gBACnD,IAAI,cAAc,EAAE;oBAClB;yBACG,MAAM,CAAC,aAAa;AACpB,yBAAA,IAAI,CAAC,CAAC,IAAgB,KAAI;AACzB,wBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC;wBAC9B,OAAO,CAAC,IAAI,CAAC;AACf,qBAAC;AACA,yBAAA,KAAK,CAAC,CAAC,GAAG,KAAI;wBACb,MAAM,CAAC,GAAG,CAAC;AACb,qBAAC,CAAC;;qBACC;AACL,oBAAA,MAAM,CAAC,iBAAiB,CAAC,4BAA4B,CAAC;;;AAG5D,SAAC,CAAC;;AAGJ;;;;;AAKG;IACH,OAAO,CAAC,SAAkB,KAAK,EAAA;QAC7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,gBAAA,MAAM,CAAC,iBAAiB,CAAC,mBAAmB,CAAC;;AACxC,iBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACtB,gBAAA,MAAM,CAAC,iBAAiB,CAAC,iBAAiB,CAAC;;iBACtC;AACL,gBAAA,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ;gBACpC,IAAI,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;gBACnD,IAAI,cAAc,EAAE;oBAClB;yBACG,OAAO,CAAC,MAAM;yBACd,IAAI,CAAC,MAAK;AACT,wBAAA,OAAO,EAAE;AACT,wBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;AACpB,qBAAC;AACA,yBAAA,KAAK,CAAC,CAAC,GAAG,KAAI;wBACb,MAAM,CAAC,GAAG,CAAC;AACb,qBAAC,CAAC;;qBACC;AACL,oBAAA,MAAM,CAAC,iBAAiB,CAAC,4BAA4B,CAAC;;;AAG5D,SAAC,CAAC;;IAGI,OAAO,CAAC,IAAuB,EAAE,EAAW,EAAA;QAClD,IAAI,IAAI,IAAI,EAAE;AAAE,YAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;AAClC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;;AA1OjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,kBAoClB,yBAAyB,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AApCxB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cADJ,MAAM,EAAA,CAAA,CAAA;;2FACnB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;0BAqC7B,MAAM;2BAAC,yBAAyB;;;AC/CrC;;AAEG;MAKU,iBAAiB,CAAA;IACrB,OAAO,UAAU,CAAC,MAA+B,EAAA;QACtD,OAAO;AACL,YAAA,QAAQ,EAAE,iBAAiB;AAC3B,YAAA,SAAS,EAAE;gBACT,iBAAiB;AACjB,gBAAA;AACE,oBAAA,OAAO,EAAE,yBAAyB;AAClC,oBAAA,QAAQ,EAAE;AACX;AACF;SACF;;AAGH,IAAA,WAAA,CAAoC,YAA+B,EAAA;QACjE,IAAI,YAAY,EAAE;AAChB,YAAA,MAAM,IAAI,KAAK,CACb,sEAAsE,CAAC;;;8GAjBlE,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAHlB,YAAY,CAAA,EAAA,CAAA,CAAA;AAGX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAFjB,SAAA,EAAA,CAAC,iBAAiB,CAAC,YADpB,YAAY,CAAA,EAAA,CAAA,CAAA;;2FAGX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,SAAS,EAAE,CAAC,iBAAiB,CAAC;AAC/B,iBAAA;;0BAec;;0BAAY;;;AC/B3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEM,MAAO,kBAAmB,SAAQ,iBAAiB,CAAA;aAChC,IAAW,CAAA,WAAA,GAAW,OAAO,CAAC;AAErC,IAAA,SAAA,IAAA,CAAA,YAAY,GAAG;AAC7B,QAAA,EAAE,EAAE,YAAY;AAChB,QAAA,IAAI,EAAE,cAAc;AACpB,QAAA,KAAK,EAAE,kBAAkB;AACzB,QAAA,SAAS,EAAE,QAAQ;AACnB,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,SAAS,EAAE,gBAAgB;AAC3B,QAAA,QAAQ,EAAE,qDAAqD;AAC/D,QAAA,QAAQ,EAAE,OAAO;AACjB,QAAA,OAAO,EAAE,cAAc;AACvB,QAAA,iBAAiB,EAAE,eAAe;AAClC,QAAA,QAAQ,EAAE,EAAE;KACb,CAAC;AAMF,IAAA,WAAA,CAAY,KAAkB,EAAA;AAC5B,QAAA,KAAK,EAAE;QACP,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;;aACb;AACL,YAAA,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC,YAAY;;;AAI9C,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;;IAGvB,cAAc,GAAA;QACZ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,gBAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;iBACd;gBACL,MAAM,CAAC,iCAAiC,CAAC;;AAE7C,SAAC,CAAC;;IAGJ,UAAU,GAAA;QACR,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,OAAO,EAAE;AACX,SAAC,CAAC;;IAGJ,MAAM,GAAA;QACJ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,YAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AACrB,SAAC,CAAC;;AAGJ,IAAA,OAAO,CAAC,MAAgB,EAAA;QACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,YAAA,OAAO,EAAE;AACX,SAAC,CAAC;;;;ACtFA,MAAO,qBAAsB,SAAQ,iBAAiB,CAAA;aACnC,IAAW,CAAA,WAAA,GAAW,UAAX,CAAsB;IASxD,WAAoB,CAAA,QAAgB,EAAE,WAAA,GAAsB,EAAE,EAAA;AAC5D,QAAA,KAAK,EAAE;QADW,IAAQ,CAAA,QAAA,GAAR,QAAQ;AAPpB,QAAA,IAAA,CAAA,cAAc,GAAG;AACvB,YAAA,KAAK,EAAE,sBAAsB;AAC7B,YAAA,MAAM,EAAE,OAAO;AACf,YAAA,MAAM,EAAE,yCAAyC;AACjD,YAAA,OAAO,EAAE,OAAO;SACjB;QAKC,IAAI,CAAC,cAAc,GAAG;YACpB,GAAG,IAAI,CAAC,cAAc;AACtB,YAAA,GAAG,WAAW;SACf;;IAGH,UAAU,GAAA;QACR,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,IAAI;AACF,gBAAA,IAAI,CAAC,UAAU,CACb,qBAAqB,CAAC,WAAW,EACjC,CAAA,uBAAA,EAA0B,IAAI,CAAC,cAAc,CAAC,MAAM,CAAS,OAAA,CAAA,EAC7D,MAAK;oBACH,EAAE,CAAC,IAAI,CAAC;wBACN,KAAK,EAAE,IAAI,CAAC,QAAQ;AACpB,wBAAA,gBAAgB,EAAE,IAAI;AACtB,wBAAA,MAAM,EAAE,IAAI;AACZ,wBAAA,KAAK,EAAE,IAAI;AACX,wBAAA,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO;AACrC,qBAAA,CAAC;AAEF,oBAAA,OAAO,EAAE;AACX,iBAAC,CACF;;YACD,OAAO,GAAG,EAAE;gBACZ,MAAM,CAAC,GAAG,CAAC;;AAEf,SAAC,CAAC;;IAGJ,cAAc,GAAA;QACZ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,EAAE,CAAC,cAAc,CAAC,CAAC,QAAa,KAAI;AAClC,gBAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,EAAE;AACnC,oBAAA,IAAI,YAAY,GAAG,QAAQ,CAAC,YAAY;AACxC,oBAAA,EAAE,CAAC,GAAG,CAAC,CAAA,WAAA,EAAc,IAAI,CAAC,cAAc,CAAC,MAAM,CAAE,CAAA,EAAE,CAAC,MAAW,KAAI;AACjE,wBAAA,IAAI,IAAI,GAAe,IAAI,UAAU,EAAE;AAEvC,wBAAA,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE;AACnB,wBAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;AACvB,wBAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;AACzB,wBAAA,IAAI,CAAC,QAAQ;4BACX,6BAA6B;AAC7B,gCAAA,MAAM,CAAC,EAAE;gCACT,oCAAoC;gCACpC,YAAY,CAAC,WAAW;AAC1B,wBAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU;AAClC,wBAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS;AAChC,wBAAA,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,WAAW;AAEzC,wBAAA,IAAI,CAAC,QAAQ,GAAG,MAAM;wBAEtB,OAAO,CAAC,IAAI,CAAC;AACf,qBAAC,CAAC;;qBACG;AACL,oBAAA,MAAM,CACJ,CAAuC,oCAAA,EAAA,qBAAqB,CAAC,WAAW,CAAA,CAAE,CAC3E;;AAEL,aAAC,CAAC;AACJ,SAAC,CAAC;;AAGJ,IAAA,MAAM,CAAC,aAAmB,EAAA;QACxB,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,aAAa,EAAE;QAC5D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,EAAE,CAAC,KAAK,CAAC,CAAC,QAAa,KAAI;AACzB,gBAAA,IAAI,QAAQ,CAAC,YAAY,EAAE;AACzB,oBAAA,IAAI,YAAY,GAAG,QAAQ,CAAC,YAAY;AACxC,oBAAA,EAAE,CAAC,GAAG,CAAC,CAAA,WAAA,EAAc,OAAO,CAAC,MAAM,CAAA,CAAE,EAAE,CAAC,MAAW,KAAI;AACrD,wBAAA,IAAI,IAAI,GAAe,IAAI,UAAU,EAAE;AAEvC,wBAAA,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE;AACnB,wBAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;AACvB,wBAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;AACzB,wBAAA,IAAI,CAAC,QAAQ;4BACX,6BAA6B;AAC7B,gCAAA,MAAM,CAAC,EAAE;AACT,gCAAA,sBAAsB;AACxB,wBAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,UAAU;AAClC,wBAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS;AAChC,wBAAA,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,WAAW;AAEzC,wBAAA,IAAI,CAAC,QAAQ,GAAG,MAAM;wBAEtB,OAAO,CAAC,IAAI,CAAC;AACf,qBAAC,CAAC;;qBACG;oBACL,MAAM,CAAC,kDAAkD,CAAC;;aAE7D,EAAE,OAAO,CAAC;AACb,SAAC,CAAC;;IAGJ,OAAO,GAAA;QACL,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,EAAE,CAAC,MAAM,CAAC,CAAC,QAAa,KAAI;AAC1B,gBAAA,OAAO,EAAE;AACX,aAAC,CAAC;AACJ,SAAC,CAAC;;;;AChHA,MAAO,mBAAoB,SAAQ,iBAAiB,CAAA;aACjC,IAAW,CAAA,WAAA,GAAW,QAAQ,CAAC;IAEtD,WACU,CAAA,QAAgB,EAChB,WAAmB,GAAA;AACzB,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,UAAU,EAAE;AACV,YAAA,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;AAC9B,SAAA;QACD,YAAY,EAAE,QAAQ,CAAC,MAAM;AAC9B,KAAA,EAAA;AAED,QAAA,KAAK,EAAE;QATC,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAW,CAAA,WAAA,GAAX,WAAW;;IAWrB,UAAU,GAAA;QACR,IAAI,UAAU,GAAG,IAAI;QACrB,IAAI,QAAQ,EAAE;AACZ,YAAA,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC;AAC1C,YAAA,UAAU,CAAC,EAAE,GAAG,aAAa;AAC7B,YAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;;AAGvC,QAAA,MAAM,CAAC,kBAAkB,GAAG,MAAK;YAC/B,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;AACzC,SAAC;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,IAAI;gBACF,IAAI,CAAC,UAAU,CACb,kBAAkB,EAClB,qDAAqD,EACrD,MAAK;AACH,oBAAA,OAAO,EAAE;iBACV,EACD,UAAU,CACX;;YACD,OAAO,GAAG,EAAE;gBACZ,MAAM,CAAC,GAAG,CAAC;;AAEf,SAAC,CAAC;;IAGJ,cAAc,GAAA;QACZ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE;YAEhC,IAAI,KAAK,EAAE;gBACT,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,QAAQ,KAAI;AAC/C,oBAAA,IAAI,QAAQ,CAAC,OAAO,EAAE;AACpB,wBAAA,IAAI,IAAI,GAAe,IAAI,UAAU,EAAE;wBAEvC,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU;wBACrC,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI;wBACjC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,YAAY;AAC1C,wBAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,OAAO;wBAEhC,OAAO,CAAC,IAAI,CAAC;;yBACR;AACL,wBAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;;AAE1B,iBAAC,CAAC;;iBACG;AACL,gBAAA,MAAM,CAAC,CAAuC,oCAAA,EAAA,mBAAmB,CAAC,WAAW,CAAA,CAAE,CAAC;;AAEpF,SAAC,CAAC;;AAGJ,IAAA,MAAM,CAAC,aAAmB,EAAA;QACxB,MAAM,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,aAAa,EAAE;QACzD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;YACrC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,YAAY,KAAI;AAC/C,gBAAA,IAAI,YAAY,CAAC,KAAK,EAAE;AACtB,oBAAA,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;;qBACrB;AACL,oBAAA,MAAM,CAAC,KAAK,CAAC,eAAe,CAC1B,YAAY,CAAC,YAAY,EACzB,CAAC,QAAQ,KAAI;AACX,wBAAA,IAAI,IAAI,GAAe,IAAI,UAAU,EAAE;wBAEvC,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,UAAU;wBACrC,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI;wBACjC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,YAAY;AAC1C,wBAAA,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,YAAY;AAC1C,wBAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,OAAO;AAEhC,wBAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,YAAY,CAAC;wBAE5C,OAAO,CAAC,IAAI,CAAC;AACf,qBAAC,CACF;;AAEL,aAAC,CAAC;AACJ,SAAC,CAAC;;IAGJ,OAAO,GAAA;QACL,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,IAAI;AACF,gBAAA,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;gBAErB,IAAI,CAAC,UAAU,EAAE;AACjB,gBAAA,OAAO,EAAE;;YACT,OAAO,GAAG,EAAE;AACZ,gBAAA,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;;AAEvB,SAAC,CAAC;;AAGI,IAAA,YAAY,CAAC,KAAa,EAAA;QAChC,YAAY,CAAC,OAAO,CAAC,CAAG,EAAA,mBAAmB,CAAC,WAAW,CAAQ,MAAA,CAAA,EAAE,KAAK,CAAC;;IAGjE,aAAa,GAAA;QACnB,OAAO,YAAY,CAAC,OAAO,CAAC,CAAA,EAAG,mBAAmB,CAAC,WAAW,CAAQ,MAAA,CAAA,CAAC;;IAGjE,UAAU,GAAA;QAChB,YAAY,CAAC,UAAU,CAAC,CAAA,EAAG,mBAAmB,CAAC,WAAW,CAAQ,MAAA,CAAA,CAAC;;;;ACvHvE,MAAM,eAAe,GAAG;AACtB,IAAA,MAAM,EAAE,CAAC;AACT,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,MAAM,EAAE,CAAC;AACT,IAAA,KAAK,EAAE,CAAC;AACR,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,MAAM,EAAE,EAAE;AACV,IAAA,SAAS,EAAE,EAAE;AACb,IAAA,KAAK,EAAE,GAAG;AACV,IAAA,KAAK,EAAE,GAAG;AACV,IAAA,MAAM,EAAE,IAAI;AACZ,IAAA,KAAK,EAAE,IAAI;AACX,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,IAAI,EAAE,IAAI;AACV,IAAA,GAAG,EAAE,KAAK;AACV,IAAA,OAAO,EAAE,KAAK;AACd,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,MAAM,EAAE,MAAM;AACd,IAAA,aAAa,EAAE,MAAM;AACrB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,MAAM,EAAE;CACT;AAEK,MAAO,eAAgB,SAAQ,iBAAiB,CAAA;IACpD,WACU,CAAA,QAAgB,EAChB,WAAc,GAAA;AACpB,QAAA,MAAM,EAAE,oBAAoB;AAC5B,QAAA,OAAO,EAAE,OAAO;AACjB,KAAA,EAAA;AAED,QAAA,KAAK,EAAE;QANC,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAW,CAAA,WAAA,GAAX,WAAW;QAUJ,IAAU,CAAA,UAAA,GAAG,4BAA4B;QACzC,IAAe,CAAA,eAAA,GAAG,WAAW;;aAHvB,IAAW,CAAA,WAAA,GAAW,IAAX,CAAgB;IAKlD,UAAU,GAAA;QACR,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,IAAI;AACF,gBAAA,IAAI,CAAC,UAAU,CACb,eAAe,CAAC,WAAW,EAC3B,IAAI,CAAC,UAAU,EACf,MAAK;oBACH,EAAE,CAAC,IAAI,CAAC;wBACN,KAAK,EAAE,IAAI,CAAC,QAAQ;AACrB,qBAAA,CAAC;AAEF,oBAAA,OAAO,EAAE;AACX,iBAAC,CACF;;YACD,OAAO,GAAG,EAAE;gBACZ,MAAM,CAAC,GAAG,CAAC;;AAEf,SAAC,CAAC;;IAGJ,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,OAAO,CAAa,CAAC,OAAoC,KAClE,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CACrC;;AAGH,IAAA,MAAM,CAAC,WAAqB,EAAA;AAC1B,QAAA,IAAI,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE;AACnC,YAAA,OAAO,CAAC,IAAI,CAAC,sCAAsC,CAAC;;AAGtD,QAAA,IAAI,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,EAAE;AACtC,YAAA,OAAO,CAAC,IAAI,CAAC,yCAAyC,CAAC;;AAGzD,QAAA,IAAI,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;AACrC,YAAA,OAAO,CAAC,IAAI,CAAC,2EAA2E,CAAC;;QAG3F,MAAM,KAAK,GAAG,WAAW,EAAE,MAAM,CAAC,CAAC,WAAW,EAAE,OAAO,KAAI;AACvD,YAAA,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,OAAO,CAAC;AAC1E,YAAA,OAAO,KAAK,GAAG,CAAC,CAAC,GAAG,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC;SAC/D,EAAE,CAAC,CAAC;AAEP,QAAA,OAAO,IAAI,OAAO,CAAa,CAAC,OAAoC,KAClE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CACpC;;IAGH,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,OAAO,CAAC,CAAC,OAAkD,KAAI;AACxE,YAAA,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAK;AAClB,gBAAA,OAAO,EAAE;AACX,aAAC,CAAC;AACJ,SAAC,CAAC;;IAGI,cAAc,CACpB,OAAoC,EACpC,KAAS,EAAA;QAET,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,aAAkB,KAAI;AACnC,YAAA,IAAI,aAAa,CAAC,MAAM,KAAK,WAAW,EAAE;AACxC,gBAAA,IAAI,CAAC,OAAO,CACV,aAAa,CAAC,OAAO,CAAC,GAAG,EACzB,aAAa,CAAC,OAAO,CAAC,GAAG,EACzB,OAAO,CACR;;SAEJ,EAAE,KAAK,CAAC;;AAGH,IAAA,OAAO,CACb,MAAc,EACd,KAAa,EACb,OAAoC,EAAA;QAEpC,EAAE,CAAC,GAAG,CAAC,IAAI,CACT,IAAI,CAAC,eAAe,EACpB;AACE,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM;AAC/B,YAAA,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO;SAC5B,EACD,CAAC,YAAiB,KAAI;YACpB,OAAO,CACL,IAAI,CAAC,UAAU,CACb,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CACvD,CACF;AACH,SAAC,CACF;;AAGK,IAAA,sBAAsB,CAAC,OAAoC,EAAA;QACjE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,aAAkB,KAAI;AAC5C,YAAA,IAAI,aAAa,CAAC,MAAM,KAAK,WAAW,EAAE;AACxC,gBAAA,IAAI,CAAC,OAAO,CACV,aAAa,CAAC,OAAO,CAAC,GAAG,EACzB,aAAa,CAAC,OAAO,CAAC,GAAG,EACzB,OAAO,CACR;;AAEL,SAAC,CAAC;;AAGI,IAAA,UAAU,CAAC,QAAa,EAAA;AAC9B,QAAA,MAAM,IAAI,GAAe,IAAI,UAAU,EAAE;AACzC,QAAA,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,EAAE;AACrB,QAAA,IAAI,CAAC,IAAI,GAAG,CAAA,EAAG,QAAQ,CAAC,UAAU,CAAA,CAAA,EAAI,QAAQ,CAAC,SAAS,CAAA,CAAE;AAC1D,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,SAAS;AAClC,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK;AAC/B,QAAA,OAAO,IAAI;;;;AC1Jf;;AAEG;AACH,IAAY,YAGX;AAHD,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,KAAA,CAAA,GAAA,KAAW;AACX,IAAA,YAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACf,CAAC,EAHW,YAAY,KAAZ,YAAY,GAGvB,EAAA,CAAA,CAAA;AAkFD,MAAM,gBAAgB,GAAW,2CAA2C;AAE5E;;AAEG;AACG,MAAO,sBAAuB,SAAQ,iBAAiB,CAAA;aAEpC,IAAW,CAAA,WAAA,GAAW,WAAX,CAAuB;IAWzD,WACU,CAAA,QAAgB,EACxB,WAA8B,EAAA;AAE9B,QAAA,KAAK,EAAE;QAHC,IAAQ,CAAA,QAAA,GAAR,QAAQ;AAVV,QAAA,IAAA,CAAA,WAAW,GAAqB;AACtC,YAAA,SAAS,EAAE,gBAAgB;YAC3B,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC;AACnD,YAAA,gBAAgB,EAAE,EAAE;YACpB,YAAY,EAAE,YAAY,CAAC,GAAG;AAC9B,YAAA,kBAAkB,EAAE,EAAE;AACtB,YAAA,aAAa,EAAE;SAChB;QAQC,IAAI,CAAC,WAAW,GAAG;YACjB,GAAG,IAAI,CAAC,WAAW;AACnB,YAAA,GAAG;SACJ;;IAGH,UAAU,GAAA;QACR,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;YACrC,IAAI,CAAC,UAAU,CACb,sBAAsB,CAAC,WAAW,EAClC,gEAAgE,EAChE,MAAK;AACH,gBAAA,IAAI;AACF,oBAAA,MAAM,MAAM,GAAG;AACb,wBAAA,IAAI,EAAE;4BACJ,QAAQ,EAAE,IAAI,CAAC,QAAQ;4BACvB,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,IAAI,QAAQ,CAAC,MAAM;AAC7D,4BAAA,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS;AACrC,4BAAA,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,gBAAgB;AACnD,4BAAA,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY;AAC3C,4BAAA,kBAAkB,EAAE,IAAI,CAAC,WAAW,CAAC;AACtC,yBAAA;AACD,wBAAA,KAAK,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,IAAI,GAAG;AAC9C,4BAAA,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC;AACjC;qBACF;oBAED,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC;AACzD,oBAAA,OAAO,EAAE;;gBACT,OAAO,CAAC,EAAE;oBACV,MAAM,CAAC,CAAC,CAAC;;AAEb,aAAC,CACF;AACH,SAAC,CAAC;;AAGI,IAAA,aAAa,CAAC,aAAa,EAAA;QACjC,OAAO,IAAI,OAAO,CAAa,CAAC,OAAO,EAAE,MAAM,KAAI;;AAEjD,YAAA,IAAI,SAAS,GAAG,IAAI,cAAc,EAAE;AACpC,YAAA,SAAS,CAAC,kBAAkB,GAAG,MAAK;AAClC,gBAAA,IAAI,SAAS,CAAC,UAAU,IAAI,CAAC,EAAE;AAC7B,oBAAA,IAAI;AACF,wBAAA,IAAI,SAAS,CAAC,MAAM,IAAI,GAAG,EAAE;4BAC3B,IAAI,QAAQ,GAAoB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC;AAElE,4BAAA,IAAI,IAAI,GAAe,IAAI,UAAU,EAAE;AACvC,4BAAA,IAAI,CAAC,QAAQ,GAAG,sBAAsB,CAAC,WAAW;AAClD,4BAAA,IAAI,CAAC,EAAE,GAAG,aAAa,CAAC,OAAO;AAC/B,4BAAA,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,WAAW;4BAC1C,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,aAAa,CAAC,IAAI;4BAC5C,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ;AAC3C,4BAAA,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO;AACpC,4BAAA,IAAI,CAAC,QAAQ,GAAG,aAAa;AAC7B,4BAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,SAAS;AACnC,4BAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,OAAO;4BAEhC,OAAO,CAAC,IAAI,CAAC;;6BACR;AACL,4BAAA,MAAM,CAAC,CAA+B,4BAAA,EAAA,SAAS,CAAC,MAAM,CAAA,CAAE,CAAC;;;oBAE3D,OAAO,GAAG,EAAE;wBACZ,MAAM,CAAC,GAAG,CAAC;;;AAGjB,aAAC;;AAGD,YAAA,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,qCAAqC,CAAC;YAC5D,SAAS,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAU,OAAA,EAAA,aAAa,CAAC,WAAW,CAAE,CAAA,CAAC;AAClF,YAAA,IAAI;gBACF,SAAS,CAAC,IAAI,EAAE;;YAChB,OAAO,GAAG,EAAE;gBACZ,MAAM,CAAC,GAAG,CAAC;;AAEf,SAAC,CAAC;;AAGJ,IAAA,MAAM,cAAc,GAAA;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE;AAChD,QAAA,IAAI,QAAQ,EAAE,MAAM,GAAG,CAAC,EAAE;YACxB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;AACnD,gBAAA,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM;AAC/B,gBAAA,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AACxB,aAAA,CAAC;AACF,YAAA,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;;aACzC;AACL,YAAA,MAAM,CAAuC,oCAAA,EAAA,sBAAsB,CAAC,WAAW,EAAE;;;AAIrF,IAAA,MAAM,MAAM,GAAA;QACV,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;AACpD,YAAA,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM;AAC/B,YAAA,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM;AAChC,SAAA,CAAC;AACF,QAAA,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;;IAGhD,MAAM,OAAO,CAAC,MAAgB,EAAA;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE;AAChD,QAAA,IAAI,QAAQ,EAAE,MAAM,GAAG,CAAC,EAAE;AACxB,YAAA,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;AAC/B,gBAAA,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AACpB,gBAAA,qBAAqB,EAAE,IAAI,CAAC,WAAW,CAAC,mBAAmB,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,IAAI,QAAQ,CAAC;AAC1G,aAAA,CAAC;;;;;MCpNK,2BAA2B,CAAA;IAyBtC,WAAY,CAAA,EAAc,EAAE,iBAAoC,EAAA;QAvBhE,IAAI,CAAA,IAAA,GAAwB,MAAM;QAGlC,IAAI,CAAA,IAAA,GAAiC,QAAQ;QAG7C,IAAI,CAAA,IAAA,GAAoD,aAAa;QAGrE,IAAK,CAAA,KAAA,GAAiD,aAAa;QAGnE,IAAK,CAAA,KAAA,GAA+C,SAAS;QAG7D,IAAc,CAAA,cAAA,GAAsB,MAAM;QAG1C,IAAK,CAAA,KAAA,GAAW,CAAC;QAGjB,IAAM,CAAA,MAAA,GAAW,EAAE;AAGjB,QAAA,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACvD,YAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAI;AACzC,gBAAA,IAAI,KAAK,GAAG,GAAG,KAAK,KAAK,GAAG,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE;oBAC9C,OAAO,CAAC,MAAM,CACZ,+CAA+C;AAC7C,wBAAA,qEAAqE,CACxE;;qBACI;oBACL,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,aAAa,EAAE;wBAChD,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,cAAc,EAAE,IAAI,CAAC,cAAc;wBACnC,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,qBAAA,CAAC;;AAEN,aAAC,CAAC;AACJ,SAAC,CAAC;;8GA9CO,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAA3B,2BAA2B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,KAAA,EAAA,OAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,OAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBALvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAEP,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,UAAU,EAAE;AACf,iBAAA;4GAGC,IAAI,EAAA,CAAA;sBADH;gBAID,IAAI,EAAA,CAAA;sBADH;gBAID,IAAI,EAAA,CAAA;sBADH;gBAID,KAAK,EAAA,CAAA;sBADJ;gBAID,KAAK,EAAA,CAAA;sBADJ;gBAID,cAAc,EAAA,CAAA;sBADb;gBAID,KAAK,EAAA,CAAA;sBADJ;gBAID,MAAM,EAAA,CAAA;sBADL;;;AC/BH;;AAEG;;;;"}