{"version":3,"file":"cecon-auth-service.mjs","sources":["../../src/interfaces/errors.enum.ts","../../src/payload/payload.service.ts","../../src/auth.service.ts","../../src/auth.module.ts","../../src/dto/create-credential.dto.ts","../../src/payload/interfaces/rules.enum.ts","../../src/index.ts","../../src/cecon-auth-service.ts"],"sourcesContent":["export enum ErrorCodesEnum {\n    userNotFound = 'user-not-found',\n    notFound = 'NOT-FOUND',\n    manyAttempts = 'MANY-ATTEMPTS',\n    wrongPassword = 'WRONG-PASSWORD',\n    authWrongPassword = 'wrong-password',\n    missingEmail = 'missing-email',\n    needLogin = 'Faça o login',\n    userMismatch = 'user-mismatch',\n    missingVerificationCode = 'missing-verification-code',\n    codeExpired = 'code-expired',\n    invalidVerificationId = 'invalid-verification-id',\n    requiresRecentLogin = 'requires-recent-login',\n    notAllowed = 'operation-not-allowed',\n    alreadUse = 'email-already-in-use',\n    toManyAttempts = 'too-many-requests',\n    popUpClosed = 'popup-closed-by-user',\n    invalidCode = 'invalid-verification-code',\n    existDifferent = 'account-exists-with-different-credential',\n}\n","import { Injectable } from '@angular/core';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { ICredentialToken } from './interfaces/i-credential-token';\r\nimport { IPayload } from './interfaces/i-payload';\r\n\r\n@Injectable({\r\n    providedIn: 'root',\r\n})\r\nexport class PayloadService {\r\n    // #region Properties (1)\r\n\r\n    public payload$: BehaviorSubject<IPayload | null> = new BehaviorSubject<IPayload | null>(null);\r\n\r\n\r\n    // #endregion Properties (1)\r\n\r\n    // #region Constructors (1)\r\n\r\n    constructor(private helper: JwtHelperService) { }\r\n\r\n    // #endregion Constructors (1)\r\n\r\n    // #region Public Methods (1)\r\n\r\n    public processToken(obj: ICredentialToken | null): void {\r\n        if (!obj?.token) {\r\n            this.nextPayload(null);\r\n        } else {\r\n            const payload = this.helper.decodeToken(obj.token);\r\n            payload.token = obj.token;\r\n            this.nextPayload(payload);\r\n        }\r\n    }\r\n\r\n    // #endregion Public Methods (1)\r\n\r\n    // #region Private Methods (2)\r\n\r\n    private nextPayload(payload: IPayload | null) {\r\n        if (!this.payload$) {\r\n            this.payload$ = new BehaviorSubject<IPayload | null>(null);\r\n            this.payload$.next(null);\r\n        } else {\r\n            if (payload === undefined) {\r\n                payload = null;\r\n            }\r\n            this.payload$.next(payload);\r\n        }\r\n    }\r\n\r\n    // #endregion Private Methods (2)\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { BehaviorSubject, from, Observable, of } from 'rxjs';\r\n\r\nimport { FirebaseApp } from '@angular/fire/app';\r\nimport {\r\n    ApplicationVerifier,\r\n    Auth,\r\n    AuthCredential,\r\n    ConfirmationResult,\r\n    createUserWithEmailAndPassword,\r\n    EmailAuthProvider,\r\n    getAuth,\r\n    GoogleAuthProvider,\r\n    IdTokenResult,\r\n    linkWithCredential,\r\n    PhoneAuthProvider,\r\n    reauthenticateWithCredential,\r\n    sendEmailVerification,\r\n    sendPasswordResetEmail,\r\n    signInWithCredential,\r\n    signInWithEmailAndPassword,\r\n    signInWithPhoneNumber,\r\n    signInWithPopup,\r\n    signOut,\r\n    unlink,\r\n    updateEmail,\r\n    updateProfile,\r\n    User,\r\n    UserCredential,\r\n    UserInfo\r\n} from '@angular/fire/auth';\r\nimport { ErrorCodesEnum } from './interfaces/errors.enum';\r\nimport { ICredentialLogin } from './interfaces/i-credential';\r\nimport { IFirebaseError } from './interfaces/i-firebase-error';\r\nimport { PayloadService } from './payload/payload.service';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n    // #region Properties (2)\r\n\r\n    public auth: Auth | null = null;\r\n    public user$: BehaviorSubject<User | null> = new BehaviorSubject<User | null>(null);\r\n    private isInitialized = false;\r\n\r\n    // #endregion Properties (2)\r\n\r\n    // #region Constructors (1)\r\n\r\n    constructor(\r\n        private readonly payloadService: PayloadService,\r\n        private app: FirebaseApp,\r\n    ) {\r\n        this.auth = getAuth(this.app);\r\n    }\r\n\r\n    // #endregion Constructors (1)\r\n\r\n    // #region Public Accessors (1)\r\n\r\n    public get idTokenResult$(): Observable<IdTokenResult | null> {\r\n        if (!this.auth?.currentUser) {\r\n            return of(null);\r\n        }\r\n        return from(this.auth?.currentUser?.getIdTokenResult(true));\r\n    }\r\n\r\n    // #endregion Public Accessors (1)\r\n\r\n    // #region Public Methods (18)\r\n\r\n\r\n    public initialize(): void {\r\n        if (this.isInitialized) {\r\n            return;\r\n        }\r\n        if (!this.auth) {\r\n            return;\r\n        }\r\n        this.auth.onIdTokenChanged((user: User | null) => {\r\n            this.user$.next(user);\r\n            if (user) {\r\n                user.getIdToken().then((token) => {\r\n                    const res = { token };\r\n                    this.payloadService.processToken(res);\r\n                });\r\n            } else {\r\n                this.payloadService.processToken(null);\r\n            }\r\n        });\r\n        this.isInitialized = true;\r\n    }\r\n\r\n    public async onAddEmailAndPassword(email: string, password: string, name: string): Promise<User> {\r\n        const currentUser = this.auth?.currentUser;\r\n        if (!currentUser) {\r\n            throw new Error('Usuário não está logado');\r\n        }\r\n        if (!currentUser.email && !email) {\r\n            throw new Error('Usuário não possui email para vincular. Faça o login e tente novamente.');\r\n        }\r\n        email = currentUser.email || email;\r\n        const credential = EmailAuthProvider.credential(currentUser.email || email, password);\r\n        await this.onLinkCredential(credential, email, password);\r\n        await this.onReloadUser(false);\r\n        if (name) {\r\n            await this.onUpdateProfile(currentUser, name);\r\n        }\r\n        await sendEmailVerification(currentUser);\r\n        this.user$.next(currentUser);\r\n        return currentUser;\r\n    }\r\n\r\n    public onGetCurrentUser(): User | null {\r\n        return this.auth?.currentUser ?? null;\r\n    }\r\n\r\n    public onHasProvider(provider: 'password' | 'phone' | 'google.com' | 'all'): boolean {\r\n        if (!this.auth?.currentUser) {\r\n            return false;\r\n        }\r\n        const providerData = this.auth?.currentUser?.providerData ?? [];\r\n        if (!providerData.length) {\r\n            return false;\r\n        }\r\n        if (provider !== 'all') {\r\n            return providerData.map((res: UserInfo | null) => res?.providerId).includes(provider);\r\n        }\r\n        const hasPassword = providerData.map((res: UserInfo | null) => res?.providerId).includes('password');\r\n        const hasPhone = providerData.map((res: UserInfo | null) => res?.providerId).includes('phone');\r\n        return hasPassword && hasPhone;\r\n    }\r\n\r\n    public async onLinkPhoneCredential(verificationCode: string, localVerificationCode: string): Promise<void> {\r\n        try {\r\n            const phoneCredential = PhoneAuthProvider.credential(localVerificationCode, verificationCode);\r\n            const authCredential: AuthCredential = phoneCredential as unknown as AuthCredential;\r\n            return await this.onLinkCredential(authCredential, '', '');\r\n        } catch (error) {\r\n            if (this.isFirebaseError(error)) {\r\n                switch (true) {\r\n\r\n                    default:\r\n                        throw error;\r\n                }\r\n            } else {\r\n                throw error;\r\n            }\r\n        }\r\n    }\r\n\r\n    public onRecoveryPassword(email: string): Observable<void> {\r\n        if (!this.auth) {\r\n            throw new Error('Erro ao recuperar senha: credencial não está definida [EE905]');\r\n        }\r\n        return from(sendPasswordResetEmail(this.auth, email));\r\n    }\r\n\r\n    // eslint-disable-next-line max-len\r\n    public async onRegisterUser(obj: ICredentialLogin, link: boolean): Promise<void> {\r\n        try {\r\n            if (!this.auth) {\r\n                throw new Error('Erro ao recuperar senha: credencial não está definida [EE906]');\r\n            }\r\n            const userCredential = await createUserWithEmailAndPassword(this.auth, obj.email, obj.password);\r\n            const user = userCredential.user;\r\n            if (obj.name) {\r\n                await this.onUpdateProfile(user, obj.name);\r\n            }\r\n            const authCredential = EmailAuthProvider.credential(obj.email, obj.password);\r\n            await sendEmailVerification(user);\r\n            if (link) {\r\n                await this.onLinkCredential(authCredential, obj.email, obj.password);\r\n            }\r\n        } catch (error) {\r\n            return this.handlerFirebaseError(error);\r\n        }\r\n    }\r\n\r\n    public async onReloadUser(nextUser: boolean): Promise<void> {\r\n        const currentUser = this.auth?.currentUser;\r\n        if (!currentUser) {\r\n            return;\r\n        }\r\n        await currentUser.reload();\r\n        if (nextUser) {\r\n            this.user$.next(currentUser);\r\n        }\r\n    }\r\n\r\n    public async onSendEmailVerification(): Promise<void> {\r\n        const currentUser = this.auth?.currentUser;\r\n        if (!currentUser) {\r\n            throw new Error('Usuário não está logado [DD98]');\r\n        }\r\n        if (!this.auth) {\r\n            throw new Error('Erro ao recuperar senha: credencial não está definida [EE907]');\r\n        }\r\n        return await sendEmailVerification(currentUser);\r\n    }\r\n\r\n    public async onSignInWithEmailAndPassword(email: string, password: string): Promise<UserCredential> {\r\n        try {\r\n            if (!this.auth) {\r\n                throw new Error('Erro ao recuperar senha: credencial não está definida [EE908]');\r\n            }\r\n            const userCredential = await signInWithEmailAndPassword(this.auth, email, password);\r\n            this.user$.next(userCredential.user); // Emitir o usuário logado no BehaviorSubject\r\n            return userCredential;\r\n        } catch (error) {\r\n            return this.handlerFirebaseError(error);\r\n        }\r\n    }\r\n\r\n    public async onSignInWithPhoneNumber(phoneNumber: string, recaptchaVerifier: ApplicationVerifier): Promise<ConfirmationResult> {\r\n        if (!this.auth) {\r\n            throw new Error('Erro ao recuperar senha: credencial não está definida [EE909]');\r\n        }\r\n        return await signInWithPhoneNumber(this.auth, phoneNumber, recaptchaVerifier);\r\n    }\r\n\r\n    public async onSignInWithPopup(providerType: 'GOOGLE' | 'OUTROS'): Promise<UserCredential> {\r\n        if (providerType === 'GOOGLE') {\r\n            try {\r\n                const provider = new GoogleAuthProvider();\r\n                if (!this.auth) {\r\n                    throw new Error('Erro ao recuperar senha: credencial não está definida [EE910]');\r\n                }\r\n                return signInWithPopup(this.auth, provider);\r\n            } catch (error) {\r\n                return this.handlerFirebaseError(error);\r\n            }\r\n        } else {\r\n            throw new Error('Provedor não suportado [9824]');\r\n        }\r\n    }\r\n\r\n    public async onSignOut(): Promise<void> {\r\n        await signOut(this.auth!);\r\n        this.user$.next(null);\r\n        this.payloadService.payload$.next(null);\r\n    }\r\n\r\n    public async onUnlinkAuthProvider(): Promise<User> {\r\n        try {\r\n            const user = this.auth?.currentUser;\r\n            if (!user) {\r\n                throw new Error('Usuário não está logado');\r\n            }\r\n            const providerId = this.onGetPhoneProviderId();\r\n            if (!providerId) {\r\n                throw new Error('Provedor de autenticação não encontrado');\r\n            }\r\n            return await unlink(user, providerId);\r\n        } catch (error) {\r\n            console.log('Erro ao remover provedor de autenticação:', error);\r\n            throw error;\r\n        }\r\n    }\r\n\r\n    public async onUpdateCredentialEmail(newEmail: string, currentPassword: string): Promise<void> {\r\n        const currentUser = this.auth?.currentUser;\r\n        const currentEmail = currentUser?.email ?? '';\r\n        if (currentUser) {\r\n            try {\r\n                const credential = EmailAuthProvider.credential(currentEmail, currentPassword);\r\n                await reauthenticateWithCredential(currentUser, credential);\r\n                return updateEmail(currentUser, newEmail);\r\n            } catch (err) {\r\n                console.error(err);\r\n                throw err;\r\n            }\r\n        }\r\n        throw new Error('Usuário não está logado - 9847D');\r\n    }\r\n\r\n    public async onUpdateProfile(currentUser: User | null | undefined, name: string): Promise<void> {\r\n        // Primeiro, garanta que temos um nome válido\r\n        if (!name) {\r\n            throw new Error('Nome não informado');\r\n        }\r\n\r\n        // Se currentUser não for fornecido, tente obter a partir de this.auth\r\n        if (!currentUser) {\r\n            currentUser = this.auth?.currentUser;\r\n        }\r\n\r\n        // Se ainda for null ou undefined, lance um erro\r\n        if (!currentUser) {\r\n            throw new Error('Usuário não está logado');\r\n        }\r\n        return await updateProfile(currentUser, { displayName: name });\r\n    }\r\n\r\n    public async onVerifyPhoneCode(verificationCode: string, localVerificationCode: string): Promise<UserCredential> {\r\n        if (!localVerificationCode) {\r\n            throw new Error('ID de verificação não encontrado');\r\n        }\r\n        const currentUser = this.auth!.currentUser;\r\n        const phoneCredential = PhoneAuthProvider.credential(localVerificationCode, verificationCode);\r\n        if (currentUser) {\r\n            try {\r\n                return await linkWithCredential(currentUser, phoneCredential);\r\n            } catch (error) {\r\n                this.handlerFirebaseError(error);\r\n            }\r\n        } else {\r\n            try {\r\n                return await signInWithCredential(this.auth!, phoneCredential);\r\n            } catch (error) {\r\n                this.handlerFirebaseError(error);\r\n            }\r\n        }\r\n    }\r\n\r\n    public async reauthenticateUser(currentUser: User, email: string, password: string): Promise<void> {\r\n        try {\r\n            const reauthCredential = EmailAuthProvider.credential(email, password);\r\n            await reauthenticateWithCredential(currentUser, reauthCredential);\r\n        } catch (error) {\r\n            if (this.isFirebaseError(error)) {\r\n                if (error.code === ErrorCodesEnum.authWrongPassword) {\r\n                    let txt = 'Senha incorreta. Verifique e tente novamente. ';\r\n                    txt += 'Ou clique em \"Esqueci minha senha\" para redefinir sua senha.';\r\n                    throw new Error(txt);\r\n                }\r\n                throw error;\r\n            } else {\r\n                throw error;\r\n            }\r\n        }\r\n    }\r\n\r\n    // #endregion Public Methods (18)\r\n\r\n    // #region Private Methods (3)\r\n\r\n    private isFirebaseError(error: any): error is IFirebaseError {\r\n        return error && typeof error.code === 'string' && typeof error.message === 'string';\r\n    }\r\n\r\n    private onGetPhoneProviderId(): string | null {\r\n        const user: User | null = this.onGetCurrentUser();\r\n        if (user) {\r\n            const providerId = 'phone';\r\n            const provider = user.providerData.find(res => res.providerId === providerId);\r\n            if (provider) {\r\n                return provider.providerId;\r\n            } else {\r\n                return null;\r\n            }\r\n        } else {\r\n            return null;\r\n        }\r\n    }\r\n\r\n    private async onLinkCredential(credential: AuthCredential, email: string, password: string): Promise<void> {\r\n        const currentUser = this.auth?.currentUser;\r\n        if (!currentUser) {\r\n            throw new Error('Usuário não está logado 9684');\r\n        }\r\n        try {\r\n            await linkWithCredential(currentUser, credential);\r\n        } catch (error) {\r\n            if (this.isFirebaseError(error)) {\r\n                if (error.code === ErrorCodesEnum.requiresRecentLogin) {\r\n                    this.onSignOut();\r\n                    throw new Error('Por motivos de segurança, precisamos que você faça login novamente para continuar. Por favor, entre com sua conta.');\r\n                }\r\n                throw error;\r\n            } else {\r\n                throw error;\r\n            }\r\n        }\r\n    }\r\n    private handlerFirebaseError(error: any): never {\r\n        const errorCode = error.code || error.message;  // Usando o code, se estiver presente, senão usa a message.\r\n    \r\n        const errorsMap = {\r\n            [ErrorCodesEnum.userNotFound]: 'Conta não encontrada! 9847',\r\n            [ErrorCodesEnum.manyAttempts]: 'Muitas tentativas de login. Tente novamente mais tarde.',\r\n            [ErrorCodesEnum.wrongPassword]: 'Senha incorreta. Verifique e tente novamente.',\r\n            [ErrorCodesEnum.notAllowed]: 'Conta desabilitada. Entre em contato com o suporte.',\r\n            [ErrorCodesEnum.popUpClosed]: 'Janela de login fechada. Tente novamente.',\r\n            [ErrorCodesEnum.invalidCode]: 'Código de verificação inválido.',\r\n            [ErrorCodesEnum.missingVerificationCode]: 'Código de verificação ausente.',\r\n            [ErrorCodesEnum.codeExpired]: 'Código de verificação expirado.',\r\n            [ErrorCodesEnum.alreadUse]: 'Este E-mail já está em uso. Faça o login ou tente registrar com outro E-mail.',\r\n            [ErrorCodesEnum.existDifferent]: 'Este E-mail já está em uso. Faça o login ou tente registrar com outro E-mail.',\r\n            [ErrorCodesEnum.userMismatch]: 'A credencial que você está tentando vincular não corresponde ao usuário atualmente conectado. Faça o login com o usuário correto e tente novamente.',\r\n            [ErrorCodesEnum.invalidVerificationId]: 'Código de verificação inválido.',\r\n            // Adicione outros erros conforme necessário.\r\n        };\r\n    \r\n        // Verifica se é um erro conhecido e lança a mensagem correspondente.\r\n        for (const key in errorsMap) {\r\n            if (errorCode.includes(key)) {\r\n                throw new Error(errorsMap[key]);\r\n            }\r\n        }\r\n    \r\n        // Se chegou até aqui, lança o erro original, pois não é um erro tratado.\r\n        throw error;\r\n    }\r\n    // #endregion Private Methods (3)\r\n}\r\n","import { NgModule } from '@angular/core';\nimport { AuthService } from './auth.service';\nimport { PayloadService } from './payload/payload.service';\n\n@NgModule({\n    providers: [AuthService, PayloadService]\n})\nexport class AuthServiceModule { }\n","export class CreateCredentialDto {\r\n    // #region Properties (4)\r\n\r\n    public email: string;\r\n    public name: string;\r\n    public password: string;\r\n    public phone: string;\r\n\r\n    // #endregion Properties (4)\r\n\r\n    // #region Constructors (1)\r\n\r\n    constructor() {\r\n        this.name = '';\r\n        this.email = '';\r\n        this.phone = '';\r\n        this.password = '';\r\n    }\r\n\r\n    // #endregion Constructors (1)\r\n}\r\n","export enum MemberRulesEnum {\r\n    admin = 'ADMIN',\r\n    owner = 'OWNER',\r\n    user = 'USER',\r\n    support = 'SUPPORT',\r\n}\r\n","// index.ts\n\nexport * from './auth.module';\nexport * from './auth.service';\nexport * from './dto/create-credential.dto';\nexport * from './interfaces/errors.enum';\nexport * from './interfaces/i-credential';\nexport * from './interfaces/i-firebase-error';\nexport * from './payload/interfaces/i-credential-token';\nexport * from './payload/interfaces/i-payload';\nexport * from './payload/interfaces/rules.enum';\nexport * from './payload/payload.service';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.PayloadService"],"mappings":";;;;;;;IAAY,eAmBX;AAnBD,CAAA,UAAY,cAAc,EAAA;AACtB,IAAA,cAAA,CAAA,cAAA,CAAA,GAAA,gBAA+B,CAAA;AAC/B,IAAA,cAAA,CAAA,UAAA,CAAA,GAAA,WAAsB,CAAA;AACtB,IAAA,cAAA,CAAA,cAAA,CAAA,GAAA,eAA8B,CAAA;AAC9B,IAAA,cAAA,CAAA,eAAA,CAAA,GAAA,gBAAgC,CAAA;AAChC,IAAA,cAAA,CAAA,mBAAA,CAAA,GAAA,gBAAoC,CAAA;AACpC,IAAA,cAAA,CAAA,cAAA,CAAA,GAAA,eAA8B,CAAA;AAC9B,IAAA,cAAA,CAAA,WAAA,CAAA,GAAA,mBAA0B,CAAA;AAC1B,IAAA,cAAA,CAAA,cAAA,CAAA,GAAA,eAA8B,CAAA;AAC9B,IAAA,cAAA,CAAA,yBAAA,CAAA,GAAA,2BAAqD,CAAA;AACrD,IAAA,cAAA,CAAA,aAAA,CAAA,GAAA,cAA4B,CAAA;AAC5B,IAAA,cAAA,CAAA,uBAAA,CAAA,GAAA,yBAAiD,CAAA;AACjD,IAAA,cAAA,CAAA,qBAAA,CAAA,GAAA,uBAA6C,CAAA;AAC7C,IAAA,cAAA,CAAA,YAAA,CAAA,GAAA,uBAAoC,CAAA;AACpC,IAAA,cAAA,CAAA,WAAA,CAAA,GAAA,sBAAkC,CAAA;AAClC,IAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,mBAAoC,CAAA;AACpC,IAAA,cAAA,CAAA,aAAA,CAAA,GAAA,sBAAoC,CAAA;AACpC,IAAA,cAAA,CAAA,aAAA,CAAA,GAAA,2BAAyC,CAAA;AACzC,IAAA,cAAA,CAAA,gBAAA,CAAA,GAAA,0CAA2D,CAAA;AAC/D,CAAC,EAnBW,cAAc,KAAd,cAAc,GAmBzB,EAAA,CAAA,CAAA;;MCVY,cAAc,CAAA;AAUH,IAAA,MAAA,CAAA;;AAPb,IAAA,QAAQ,GAAqC,IAAI,eAAe,CAAkB,IAAI,CAAC,CAAC;;;AAO/F,IAAA,WAAA,CAAoB,MAAwB,EAAA;QAAxB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAkB;KAAK;;;AAM1C,IAAA,YAAY,CAAC,GAA4B,EAAA;AAC5C,QAAA,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE;AACb,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAC1B,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACnD,YAAA,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC7B,SAAA;KACJ;;;AAMO,IAAA,WAAW,CAAC,OAAwB,EAAA;AACxC,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,eAAe,CAAkB,IAAI,CAAC,CAAC;AAC3D,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,SAAA;AAAM,aAAA;YACH,IAAI,OAAO,KAAK,SAAS,EAAE;gBACvB,OAAO,GAAG,IAAI,CAAC;AAClB,aAAA;AACD,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC/B,SAAA;KACJ;uGAxCQ,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFX,MAAM,EAAA,CAAA,CAAA;;2FAET,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;MCgCY,WAAW,CAAA;AAYC,IAAA,cAAA,CAAA;AACT,IAAA,GAAA,CAAA;;IAVL,IAAI,GAAgB,IAAI,CAAC;AACzB,IAAA,KAAK,GAAiC,IAAI,eAAe,CAAc,IAAI,CAAC,CAAC;IAC5E,aAAa,GAAG,KAAK,CAAC;;;IAM9B,WACqB,CAAA,cAA8B,EACvC,GAAgB,EAAA;QADP,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QACvC,IAAG,CAAA,GAAA,GAAH,GAAG,CAAa;QAExB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACjC;;;AAMD,IAAA,IAAW,cAAc,GAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE;AACzB,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;AACnB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;KAC/D;;;IAOM,UAAU,GAAA;QACb,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACZ,OAAO;AACV,SAAA;QACD,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAiB,KAAI;AAC7C,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtB,YAAA,IAAI,IAAI,EAAE;gBACN,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,KAAI;AAC7B,oBAAA,MAAM,GAAG,GAAG,EAAE,KAAK,EAAE,CAAC;AACtB,oBAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AAC1C,iBAAC,CAAC,CAAC;AACN,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC1C,aAAA;AACL,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;KAC7B;AAEM,IAAA,MAAM,qBAAqB,CAAC,KAAa,EAAE,QAAgB,EAAE,IAAY,EAAA;AAC5E,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;QAC3C,IAAI,CAAC,WAAW,EAAE;AACd,YAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AAC9C,SAAA;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE;AAC9B,YAAA,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;AAC9F,SAAA;AACD,QAAA,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,KAAK,CAAC;AACnC,QAAA,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,KAAK,EAAE,QAAQ,CAAC,CAAC;QACtF,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AACzD,QAAA,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC/B,QAAA,IAAI,IAAI,EAAE;YACN,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AACjD,SAAA;AACD,QAAA,MAAM,qBAAqB,CAAC,WAAW,CAAC,CAAC;AACzC,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7B,QAAA,OAAO,WAAW,CAAC;KACtB;IAEM,gBAAgB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,WAAW,IAAI,IAAI,CAAC;KACzC;AAEM,IAAA,aAAa,CAAC,QAAqD,EAAA;AACtE,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE;AACzB,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,IAAI,EAAE,CAAC;AAChE,QAAA,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AACtB,YAAA,OAAO,KAAK,CAAC;AAChB,SAAA;QACD,IAAI,QAAQ,KAAK,KAAK,EAAE;AACpB,YAAA,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,GAAoB,KAAK,GAAG,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACzF,SAAA;QACD,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,GAAoB,KAAK,GAAG,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACrG,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,GAAoB,KAAK,GAAG,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/F,OAAO,WAAW,IAAI,QAAQ,CAAC;KAClC;AAEM,IAAA,MAAM,qBAAqB,CAAC,gBAAwB,EAAE,qBAA6B,EAAA;QACtF,IAAI;YACA,MAAM,eAAe,GAAG,iBAAiB,CAAC,UAAU,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAC;YAC9F,MAAM,cAAc,GAAmB,eAA4C,CAAC;YACpF,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC9D,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACZ,YAAA,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;AAC7B,gBAAA,QAAQ,IAAI;AAER,oBAAA;AACI,wBAAA,MAAM,KAAK,CAAC;AACnB,iBAAA;AACJ,aAAA;AAAM,iBAAA;AACH,gBAAA,MAAM,KAAK,CAAC;AACf,aAAA;AACJ,SAAA;KACJ;AAEM,IAAA,kBAAkB,CAAC,KAAa,EAAA;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;AACpF,SAAA;QACD,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;KACzD;;AAGM,IAAA,MAAM,cAAc,CAAC,GAAqB,EAAE,IAAa,EAAA;QAC5D,IAAI;AACA,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACZ,gBAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;AACpF,aAAA;AACD,YAAA,MAAM,cAAc,GAAG,MAAM,8BAA8B,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;AAChG,YAAA,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC;YACjC,IAAI,GAAG,CAAC,IAAI,EAAE;gBACV,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;AAC9C,aAAA;AACD,YAAA,MAAM,cAAc,GAAG,iBAAiB,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC7E,YAAA,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC;AAClC,YAAA,IAAI,IAAI,EAAE;AACN,gBAAA,MAAM,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;AACxE,aAAA;AACJ,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAC3C,SAAA;KACJ;IAEM,MAAM,YAAY,CAAC,QAAiB,EAAA;AACvC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;QAC3C,IAAI,CAAC,WAAW,EAAE;YACd,OAAO;AACV,SAAA;AACD,QAAA,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;AAC3B,QAAA,IAAI,QAAQ,EAAE;AACV,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAChC,SAAA;KACJ;AAEM,IAAA,MAAM,uBAAuB,GAAA;AAChC,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;QAC3C,IAAI,CAAC,WAAW,EAAE;AACd,YAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;AACrD,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;AACpF,SAAA;AACD,QAAA,OAAO,MAAM,qBAAqB,CAAC,WAAW,CAAC,CAAC;KACnD;AAEM,IAAA,MAAM,4BAA4B,CAAC,KAAa,EAAE,QAAgB,EAAA;QACrE,IAAI;AACA,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACZ,gBAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;AACpF,aAAA;AACD,YAAA,MAAM,cAAc,GAAG,MAAM,0BAA0B,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACpF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACrC,YAAA,OAAO,cAAc,CAAC;AACzB,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAC3C,SAAA;KACJ;AAEM,IAAA,MAAM,uBAAuB,CAAC,WAAmB,EAAE,iBAAsC,EAAA;AAC5F,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACZ,YAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;AACpF,SAAA;QACD,OAAO,MAAM,qBAAqB,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,iBAAiB,CAAC,CAAC;KACjF;IAEM,MAAM,iBAAiB,CAAC,YAAiC,EAAA;QAC5D,IAAI,YAAY,KAAK,QAAQ,EAAE;YAC3B,IAAI;AACA,gBAAA,MAAM,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAC1C,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACZ,oBAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;AACpF,iBAAA;gBACD,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC/C,aAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACZ,gBAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAC3C,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;AACpD,SAAA;KACJ;AAEM,IAAA,MAAM,SAAS,GAAA;AAClB,QAAA,MAAM,OAAO,CAAC,IAAI,CAAC,IAAK,CAAC,CAAC;AAC1B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC3C;AAEM,IAAA,MAAM,oBAAoB,GAAA;QAC7B,IAAI;AACA,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;YACpC,IAAI,CAAC,IAAI,EAAE;AACP,gBAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AAC9C,aAAA;AACD,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC/C,IAAI,CAAC,UAAU,EAAE;AACb,gBAAA,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;AAC9D,aAAA;AACD,YAAA,OAAO,MAAM,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AACzC,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACZ,YAAA,OAAO,CAAC,GAAG,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;AAChE,YAAA,MAAM,KAAK,CAAC;AACf,SAAA;KACJ;AAEM,IAAA,MAAM,uBAAuB,CAAC,QAAgB,EAAE,eAAuB,EAAA;AAC1E,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;AAC3C,QAAA,MAAM,YAAY,GAAG,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC;AAC9C,QAAA,IAAI,WAAW,EAAE;YACb,IAAI;gBACA,MAAM,UAAU,GAAG,iBAAiB,CAAC,UAAU,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;AAC/E,gBAAA,MAAM,4BAA4B,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AAC5D,gBAAA,OAAO,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAC7C,aAAA;AAAC,YAAA,OAAO,GAAG,EAAE;AACV,gBAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACnB,gBAAA,MAAM,GAAG,CAAC;AACb,aAAA;AACJ,SAAA;AACD,QAAA,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;KACtD;AAEM,IAAA,MAAM,eAAe,CAAC,WAAoC,EAAE,IAAY,EAAA;;QAE3E,IAAI,CAAC,IAAI,EAAE;AACP,YAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;AACzC,SAAA;;QAGD,IAAI,CAAC,WAAW,EAAE;AACd,YAAA,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;AACxC,SAAA;;QAGD,IAAI,CAAC,WAAW,EAAE;AACd,YAAA,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;AAC9C,SAAA;QACD,OAAO,MAAM,aAAa,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;KAClE;AAEM,IAAA,MAAM,iBAAiB,CAAC,gBAAwB,EAAE,qBAA6B,EAAA;QAClF,IAAI,CAAC,qBAAqB,EAAE;AACxB,YAAA,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;AACvD,SAAA;AACD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAK,CAAC,WAAW,CAAC;QAC3C,MAAM,eAAe,GAAG,iBAAiB,CAAC,UAAU,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAC;AAC9F,QAAA,IAAI,WAAW,EAAE;YACb,IAAI;AACA,gBAAA,OAAO,MAAM,kBAAkB,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;AACjE,aAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACZ,gBAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACpC,aAAA;AACJ,SAAA;AAAM,aAAA;YACH,IAAI;gBACA,OAAO,MAAM,oBAAoB,CAAC,IAAI,CAAC,IAAK,EAAE,eAAe,CAAC,CAAC;AAClE,aAAA;AAAC,YAAA,OAAO,KAAK,EAAE;AACZ,gBAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AACpC,aAAA;AACJ,SAAA;KACJ;AAEM,IAAA,MAAM,kBAAkB,CAAC,WAAiB,EAAE,KAAa,EAAE,QAAgB,EAAA;QAC9E,IAAI;YACA,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACvE,YAAA,MAAM,4BAA4B,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;AACrE,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACZ,YAAA,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;AAC7B,gBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,iBAAiB,EAAE;oBACjD,IAAI,GAAG,GAAG,gDAAgD,CAAC;oBAC3D,GAAG,IAAI,8DAA8D,CAAC;AACtE,oBAAA,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACxB,iBAAA;AACD,gBAAA,MAAM,KAAK,CAAC;AACf,aAAA;AAAM,iBAAA;AACH,gBAAA,MAAM,KAAK,CAAC;AACf,aAAA;AACJ,SAAA;KACJ;;;AAMO,IAAA,eAAe,CAAC,KAAU,EAAA;AAC9B,QAAA,OAAO,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC;KACvF;IAEO,oBAAoB,GAAA;AACxB,QAAA,MAAM,IAAI,GAAgB,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAClD,QAAA,IAAI,IAAI,EAAE;YACN,MAAM,UAAU,GAAG,OAAO,CAAC;AAC3B,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC;AAC9E,YAAA,IAAI,QAAQ,EAAE;gBACV,OAAO,QAAQ,CAAC,UAAU,CAAC;AAC9B,aAAA;AAAM,iBAAA;AACH,gBAAA,OAAO,IAAI,CAAC;AACf,aAAA;AACJ,SAAA;AAAM,aAAA;AACH,YAAA,OAAO,IAAI,CAAC;AACf,SAAA;KACJ;AAEO,IAAA,MAAM,gBAAgB,CAAC,UAA0B,EAAE,KAAa,EAAE,QAAgB,EAAA;AACtF,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;QAC3C,IAAI,CAAC,WAAW,EAAE;AACd,YAAA,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;AACnD,SAAA;QACD,IAAI;AACA,YAAA,MAAM,kBAAkB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AACrD,SAAA;AAAC,QAAA,OAAO,KAAK,EAAE;AACZ,YAAA,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;AAC7B,gBAAA,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,CAAC,mBAAmB,EAAE;oBACnD,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,oBAAA,MAAM,IAAI,KAAK,CAAC,oHAAoH,CAAC,CAAC;AACzI,iBAAA;AACD,gBAAA,MAAM,KAAK,CAAC;AACf,aAAA;AAAM,iBAAA;AACH,gBAAA,MAAM,KAAK,CAAC;AACf,aAAA;AACJ,SAAA;KACJ;AACO,IAAA,oBAAoB,CAAC,KAAU,EAAA;QACnC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC;AAE9C,QAAA,MAAM,SAAS,GAAG;AACd,YAAA,CAAC,cAAc,CAAC,YAAY,GAAG,4BAA4B;AAC3D,YAAA,CAAC,cAAc,CAAC,YAAY,GAAG,yDAAyD;AACxF,YAAA,CAAC,cAAc,CAAC,aAAa,GAAG,+CAA+C;AAC/E,YAAA,CAAC,cAAc,CAAC,UAAU,GAAG,qDAAqD;AAClF,YAAA,CAAC,cAAc,CAAC,WAAW,GAAG,2CAA2C;AACzE,YAAA,CAAC,cAAc,CAAC,WAAW,GAAG,iCAAiC;AAC/D,YAAA,CAAC,cAAc,CAAC,uBAAuB,GAAG,gCAAgC;AAC1E,YAAA,CAAC,cAAc,CAAC,WAAW,GAAG,iCAAiC;AAC/D,YAAA,CAAC,cAAc,CAAC,SAAS,GAAG,+EAA+E;AAC3G,YAAA,CAAC,cAAc,CAAC,cAAc,GAAG,+EAA+E;AAChH,YAAA,CAAC,cAAc,CAAC,YAAY,GAAG,qJAAqJ;AACpL,YAAA,CAAC,cAAc,CAAC,qBAAqB,GAAG,iCAAiC;;SAE5E,CAAC;;AAGF,QAAA,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE;AACzB,YAAA,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACzB,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AACnC,aAAA;AACJ,SAAA;;AAGD,QAAA,MAAM,KAAK,CAAC;KACf;uGA7WQ,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAX,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFR,MAAM,EAAA,CAAA,CAAA;;2FAET,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;;MChCY,iBAAiB,CAAA;uGAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;wGAAjB,iBAAiB,EAAA,CAAA,CAAA;AAAjB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAFf,SAAA,EAAA,CAAC,WAAW,EAAE,cAAc,CAAC,EAAA,CAAA,CAAA;;2FAE/B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,SAAS,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC;AAC3C,iBAAA,CAAA;;;MCNY,mBAAmB,CAAA;;AAGrB,IAAA,KAAK,CAAS;AACd,IAAA,IAAI,CAAS;AACb,IAAA,QAAQ,CAAS;AACjB,IAAA,KAAK,CAAS;;;AAMrB,IAAA,WAAA,GAAA;AACI,QAAA,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACf,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AAChB,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;AAChB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACtB;AAGJ;;ICpBW,gBAKX;AALD,CAAA,UAAY,eAAe,EAAA;AACvB,IAAA,eAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,eAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,eAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,eAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACvB,CAAC,EALW,eAAe,KAAf,eAAe,GAK1B,EAAA,CAAA,CAAA;;ACLD;;ACAA;;AAEG;;;;"}