{"version":3,"file":"ngrx-signals-entities.mjs","sources":["../../../../modules/signals/entities/src/models.ts","../../../../modules/signals/entities/src/helpers.ts","../../../../modules/signals/entities/src/updaters/add-entity.ts","../../../../modules/signals/entities/src/updaters/add-entities.ts","../../../../modules/signals/entities/src/updaters/prepend-entity.ts","../../../../modules/signals/entities/src/updaters/prepend-entities.ts","../../../../modules/signals/entities/src/updaters/remove-entity.ts","../../../../modules/signals/entities/src/updaters/remove-entities.ts","../../../../modules/signals/entities/src/updaters/remove-all-entities.ts","../../../../modules/signals/entities/src/updaters/set-entity.ts","../../../../modules/signals/entities/src/updaters/set-entities.ts","../../../../modules/signals/entities/src/updaters/set-all-entities.ts","../../../../modules/signals/entities/src/updaters/update-entity.ts","../../../../modules/signals/entities/src/updaters/update-entities.ts","../../../../modules/signals/entities/src/updaters/update-all-entities.ts","../../../../modules/signals/entities/src/updaters/upsert-entity.ts","../../../../modules/signals/entities/src/updaters/upsert-entities.ts","../../../../modules/signals/entities/src/entity-config.ts","../../../../modules/signals/entities/src/with-entities.ts","../../../../modules/signals/entities/ngrx-signals-entities.ts"],"sourcesContent":["import { Signal } from '@angular/core';\n\nexport type EntityId = string | number;\n\nexport type EntityMap<Entity> = Record<EntityId, Entity>;\n\nexport type EntityState<Entity> = {\n  entityMap: EntityMap<Entity>;\n  ids: EntityId[];\n};\n\nexport type NamedEntityState<Entity, Collection extends string> = {\n  [K in keyof EntityState<Entity> as `${Collection}${Capitalize<K>}`]: EntityState<Entity>[K];\n};\n\nexport type EntityProps<Entity> = {\n  entities: Signal<Entity[]>;\n};\n\nexport type NamedEntityProps<Entity, Collection extends string> = {\n  [K in keyof EntityProps<Entity> as `${Collection}${Capitalize<K>}`]: EntityProps<Entity>[K];\n};\n\nexport type SelectEntityId<Entity> = (entity: Entity) => EntityId;\n\nexport type EntityPredicate<Entity> = (entity: Entity) => boolean;\n\nexport type EntityChanges<Entity> =\n  | Partial<Entity>\n  | ((entity: Entity) => Partial<Entity>);\n\nexport enum DidMutate {\n  None,\n  Entities,\n  Both,\n}\n","import {\n  DidMutate,\n  EntityChanges,\n  EntityId,\n  EntityPredicate,\n  EntityState,\n  SelectEntityId,\n} from './models';\n\nconst defaultSelectId: SelectEntityId<{ id: EntityId }> = (entity) => entity.id;\n\nexport function getEntityIdSelector(config?: {\n  selectId?: SelectEntityId<any>;\n}): SelectEntityId<any> {\n  return config?.selectId ?? defaultSelectId;\n}\n\nexport function getEntityStateKeys(config?: { collection?: string }): {\n  entityMapKey: string;\n  idsKey: string;\n  entitiesKey: string;\n} {\n  const collection = config?.collection;\n  const entityMapKey =\n    collection === undefined ? 'entityMap' : `${collection}EntityMap`;\n  const idsKey = collection === undefined ? 'ids' : `${collection}Ids`;\n  const entitiesKey =\n    collection === undefined ? 'entities' : `${collection}Entities`;\n\n  return { entityMapKey, idsKey, entitiesKey };\n}\n\nexport function cloneEntityState(\n  state: Record<string, any>,\n  stateKeys: {\n    entityMapKey: string;\n    idsKey: string;\n  }\n): EntityState<any> {\n  return {\n    entityMap: { ...state[stateKeys.entityMapKey] },\n    ids: [...state[stateKeys.idsKey]],\n  };\n}\n\nexport function getEntityUpdaterResult(\n  state: EntityState<any>,\n  stateKeys: {\n    entityMapKey: string;\n    idsKey: string;\n  },\n  didMutate: DidMutate\n): Record<string, any> {\n  switch (didMutate) {\n    case DidMutate.Both: {\n      return {\n        [stateKeys.entityMapKey]: state.entityMap,\n        [stateKeys.idsKey]: state.ids,\n      };\n    }\n    case DidMutate.Entities: {\n      return { [stateKeys.entityMapKey]: state.entityMap };\n    }\n    default: {\n      return {};\n    }\n  }\n}\n\nexport function addEntityMutably(\n  state: EntityState<any>,\n  entity: any,\n  selectId: SelectEntityId<any>,\n  prepend = false\n): DidMutate {\n  const id = selectId(entity);\n\n  if (state.entityMap[id]) {\n    return DidMutate.None;\n  }\n\n  state.entityMap[id] = entity;\n\n  if (prepend) {\n    state.ids.unshift(id);\n  } else {\n    state.ids.push(id);\n  }\n\n  return DidMutate.Both;\n}\n\nexport function addEntitiesMutably(\n  state: EntityState<any>,\n  entities: any[],\n  selectId: SelectEntityId<any>,\n  prepend = false\n): DidMutate {\n  let didMutate = DidMutate.None;\n\n  for (const entity of entities) {\n    const result = addEntityMutably(state, entity, selectId, prepend);\n\n    if (result === DidMutate.Both) {\n      didMutate = result;\n    }\n  }\n\n  return didMutate;\n}\n\nexport function setEntityMutably(\n  state: EntityState<any>,\n  entity: any,\n  selectId: SelectEntityId<any>,\n  replace = true\n): DidMutate {\n  const id = selectId(entity);\n\n  if (state.entityMap[id]) {\n    state.entityMap[id] = replace\n      ? entity\n      : { ...state.entityMap[id], ...entity };\n\n    return DidMutate.Entities;\n  }\n\n  state.entityMap[id] = entity;\n  state.ids.push(id);\n\n  return DidMutate.Both;\n}\n\nexport function setEntitiesMutably(\n  state: EntityState<any>,\n  entities: any[],\n  selectId: SelectEntityId<any>,\n  replace = true\n): DidMutate {\n  let didMutate = DidMutate.None;\n\n  for (const entity of entities) {\n    const result = setEntityMutably(state, entity, selectId, replace);\n\n    if (didMutate === DidMutate.Both) {\n      continue;\n    }\n\n    didMutate = result;\n  }\n\n  return didMutate;\n}\n\nexport function removeEntitiesMutably(\n  state: EntityState<any>,\n  idsOrPredicate: EntityId[] | EntityPredicate<any>\n): DidMutate {\n  const ids = Array.isArray(idsOrPredicate)\n    ? idsOrPredicate\n    : state.ids.filter((id) => idsOrPredicate(state.entityMap[id]));\n  let didMutate = DidMutate.None;\n\n  for (const id of ids) {\n    if (state.entityMap[id]) {\n      delete state.entityMap[id];\n      didMutate = DidMutate.Both;\n    }\n  }\n\n  if (didMutate === DidMutate.Both) {\n    state.ids = state.ids.filter((id) => id in state.entityMap);\n  }\n\n  return didMutate;\n}\n\nexport function updateEntitiesMutably(\n  state: EntityState<any>,\n  idsOrPredicate: EntityId[] | EntityPredicate<any>,\n  changes: EntityChanges<any>,\n  selectId: SelectEntityId<any>\n): DidMutate {\n  const ids = Array.isArray(idsOrPredicate)\n    ? idsOrPredicate\n    : state.ids.filter((id) => idsOrPredicate(state.entityMap[id]));\n  let newIds: Record<EntityId, EntityId> | undefined = undefined;\n  let didMutate = DidMutate.None;\n\n  for (const id of ids) {\n    const entity = state.entityMap[id];\n\n    if (entity) {\n      const changesRecord =\n        typeof changes === 'function' ? changes(entity) : changes;\n      state.entityMap[id] = { ...entity, ...changesRecord };\n      didMutate = DidMutate.Entities;\n\n      const newId = selectId(state.entityMap[id]);\n      if (newId !== id) {\n        state.entityMap[newId] = state.entityMap[id];\n        delete state.entityMap[id];\n\n        newIds = newIds || {};\n        newIds[id] = newId;\n      }\n    }\n  }\n\n  if (newIds) {\n    state.ids = state.ids.map((id) => newIds[id] ?? id);\n    didMutate = DidMutate.Both;\n  }\n\n  if (\n    typeof ngDevMode !== 'undefined' &&\n    ngDevMode &&\n    state.ids.length !== Object.keys(state.entityMap).length\n  ) {\n    console.warn(\n      '@ngrx/signals/entities: Entities with IDs:',\n      ids,\n      'are not updated correctly.',\n      'Make sure to apply valid changes when using `updateEntity`,',\n      '`updateEntities`, and `updateAllEntities` updaters.'\n    );\n  }\n\n  return didMutate;\n}\n","import { PartialStateUpdater } from '@ngrx/signals';\nimport {\n  EntityId,\n  EntityState,\n  NamedEntityState,\n  SelectEntityId,\n} from '../models';\nimport {\n  addEntityMutably,\n  cloneEntityState,\n  getEntityIdSelector,\n  getEntityStateKeys,\n  getEntityUpdaterResult,\n} from '../helpers';\n\nexport function addEntity<Entity extends { id: EntityId }>(\n  entity: Entity\n): PartialStateUpdater<EntityState<Entity>>;\nexport function addEntity<Entity, Collection extends string>(\n  entity: Entity,\n  config: { collection: Collection; selectId: SelectEntityId<NoInfer<Entity>> }\n): PartialStateUpdater<NamedEntityState<Entity, Collection>>;\nexport function addEntity<\n  Entity extends { id: EntityId },\n  Collection extends string,\n>(\n  entity: Entity,\n  config: { collection: Collection }\n): PartialStateUpdater<NamedEntityState<Entity, Collection>>;\nexport function addEntity<Entity>(\n  entity: Entity,\n  config: { selectId: SelectEntityId<NoInfer<Entity>> }\n): PartialStateUpdater<EntityState<Entity>>;\n/**\n * @description\n *\n * Adds an entity to the collection.\n * Does not override if entity with same ID exists.\n *\n * @usageNotes\n *\n * ```ts\n * import { patchState } from '@ngrx/signals';\n * import { addEntity } from '@ngrx/signals/entities';\n *\n * patchState(store, addEntity(todo));\n * ```\n */\nexport function addEntity(\n  entity: any,\n  config?: { collection?: string; selectId?: SelectEntityId<any> }\n): PartialStateUpdater<EntityState<any> | NamedEntityState<any, string>> {\n  const selectId = getEntityIdSelector(config);\n  const stateKeys = getEntityStateKeys(config);\n\n  return (state) => {\n    const clonedState = cloneEntityState(state, stateKeys);\n    const didMutate = addEntityMutably(clonedState, entity, selectId);\n\n    return getEntityUpdaterResult(clonedState, stateKeys, didMutate);\n  };\n}\n","import { PartialStateUpdater } from '@ngrx/signals';\nimport {\n  EntityId,\n  EntityState,\n  NamedEntityState,\n  SelectEntityId,\n} from '../models';\nimport {\n  addEntitiesMutably,\n  cloneEntityState,\n  getEntityIdSelector,\n  getEntityStateKeys,\n  getEntityUpdaterResult,\n} from '../helpers';\n\nexport function addEntities<Entity extends { id: EntityId }>(\n  entities: Entity[]\n): PartialStateUpdater<EntityState<Entity>>;\nexport function addEntities<Entity, Collection extends string>(\n  entities: Entity[],\n  config: { collection: Collection; selectId: SelectEntityId<NoInfer<Entity>> }\n): PartialStateUpdater<NamedEntityState<Entity, Collection>>;\nexport function addEntities<\n  Entity extends { id: EntityId },\n  Collection extends string,\n>(\n  entities: Entity[],\n  config: { collection: Collection }\n): PartialStateUpdater<NamedEntityState<Entity, Collection>>;\nexport function addEntities<Entity>(\n  entities: Entity[],\n  config: { selectId: SelectEntityId<NoInfer<Entity>> }\n): PartialStateUpdater<EntityState<Entity>>;\n/**\n * @description\n *\n * Adds multiple entities to the collection.\n * Does not override existing entities with same IDs.\n *\n * @usageNotes\n *\n * ```ts\n * import { patchState } from '@ngrx/signals';\n * import { addEntities } from '@ngrx/signals/entities';\n *\n * patchState(store, addEntities([todo1, todo2]));\n * ```\n */\nexport function addEntities(\n  entities: any[],\n  config?: { collection?: string; selectId?: SelectEntityId<any> }\n): PartialStateUpdater<EntityState<any> | NamedEntityState<any, string>> {\n  const selectId = getEntityIdSelector(config);\n  const stateKeys = getEntityStateKeys(config);\n\n  return (state) => {\n    const clonedState = cloneEntityState(state, stateKeys);\n    const didMutate = addEntitiesMutably(clonedState, entities, selectId);\n\n    return getEntityUpdaterResult(clonedState, stateKeys, didMutate);\n  };\n}\n","import { PartialStateUpdater } from '@ngrx/signals';\nimport {\n  EntityId,\n  EntityState,\n  NamedEntityState,\n  SelectEntityId,\n} from '../models';\nimport {\n  addEntityMutably,\n  cloneEntityState,\n  getEntityIdSelector,\n  getEntityStateKeys,\n  getEntityUpdaterResult,\n} from '../helpers';\n\nexport function prependEntity<Entity extends { id: EntityId }>(\n  entity: Entity\n): PartialStateUpdater<EntityState<Entity>>;\nexport function prependEntity<Entity, Collection extends string>(\n  entity: Entity,\n  config: { collection: Collection; selectId: SelectEntityId<NoInfer<Entity>> }\n): PartialStateUpdater<NamedEntityState<Entity, Collection>>;\nexport function prependEntity<\n  Entity extends { id: EntityId },\n  Collection extends string,\n>(\n  entity: Entity,\n  config: { collection: Collection }\n): PartialStateUpdater<NamedEntityState<Entity, Collection>>;\nexport function prependEntity<Entity>(\n  entity: Entity,\n  config: { selectId: SelectEntityId<NoInfer<Entity>> }\n): PartialStateUpdater<EntityState<Entity>>;\n/**\n * @description\n *\n * Adds an entity to the beginning of the collection.\n * Does not add if entity with same ID exists.\n *\n * @usageNotes\n *\n * ```ts\n * import { patchState } from '@ngrx/signals';\n * import { prependEntity } from '@ngrx/signals/entities';\n *\n * patchState(store, prependEntity(todo));\n * ```\n */\nexport function prependEntity(\n  entity: any,\n  config?: { collection?: string; selectId?: SelectEntityId<any> }\n): PartialStateUpdater<EntityState<any> | NamedEntityState<any, string>> {\n  const selectId = getEntityIdSelector(config);\n  const stateKeys = getEntityStateKeys(config);\n\n  return (state) => {\n    const clonedState = cloneEntityState(state, stateKeys);\n    const didMutate = addEntityMutably(clonedState, entity, selectId, true);\n\n    return getEntityUpdaterResult(clonedState, stateKeys, didMutate);\n  };\n}\n","import { PartialStateUpdater } from '@ngrx/signals';\nimport {\n  EntityId,\n  EntityState,\n  NamedEntityState,\n  SelectEntityId,\n} from '../models';\nimport {\n  addEntitiesMutably,\n  cloneEntityState,\n  getEntityIdSelector,\n  getEntityStateKeys,\n  getEntityUpdaterResult,\n} from '../helpers';\n\nexport function prependEntities<Entity extends { id: EntityId }>(\n  entities: Entity[]\n): PartialStateUpdater<EntityState<Entity>>;\nexport function prependEntities<Entity, Collection extends string>(\n  entities: Entity[],\n  config: { collection: Collection; selectId: SelectEntityId<NoInfer<Entity>> }\n): PartialStateUpdater<NamedEntityState<Entity, Collection>>;\nexport function prependEntities<\n  Entity extends { id: EntityId },\n  Collection extends string,\n>(\n  entities: Entity[],\n  config: { collection: Collection }\n): PartialStateUpdater<NamedEntityState<Entity, Collection>>;\nexport function prependEntities<Entity>(\n  entities: Entity[],\n  config: { selectId: SelectEntityId<NoInfer<Entity>> }\n): PartialStateUpdater<EntityState<Entity>>;\n/**\n * @description\n *\n * Adds multiple entities to the beginning of the collection.\n * Does not add existing entities with same IDs.\n *\n * @usageNotes\n *\n * ```ts\n * import { patchState } from '@ngrx/signals';\n * import { prependEntities } from '@ngrx/signals/entities';\n *\n * patchState(store, prependEntities([todo1, todo2]));\n * ```\n */\nexport function prependEntities(\n  entities: any[],\n  config?: { collection?: string; selectId?: SelectEntityId<any> }\n): PartialStateUpdater<EntityState<any> | NamedEntityState<any, string>> {\n  const selectId = getEntityIdSelector(config);\n  const stateKeys = getEntityStateKeys(config);\n\n  return (state) => {\n    const clonedState = cloneEntityState(state, stateKeys);\n\n    const uniqueEntities: any[] = [];\n    const seenIds = new Set<EntityId>();\n\n    for (const entity of entities) {\n      const id = selectId(entity);\n\n      if (!seenIds.has(id)) {\n        uniqueEntities.unshift(entity);\n        seenIds.add(id);\n      }\n    }\n\n    const didMutate = addEntitiesMutably(\n      clonedState,\n      uniqueEntities,\n      selectId,\n      true\n    );\n\n    return getEntityUpdaterResult(clonedState, stateKeys, didMutate);\n  };\n}\n","import { PartialStateUpdater } from '@ngrx/signals';\nimport { EntityId, EntityState, NamedEntityState } from '../models';\nimport {\n  cloneEntityState,\n  getEntityStateKeys,\n  getEntityUpdaterResult,\n  removeEntitiesMutably,\n} from '../helpers';\n\nexport function removeEntity(\n  id: EntityId\n): PartialStateUpdater<EntityState<any>>;\nexport function removeEntity<Collection extends string>(\n  id: EntityId,\n  config: { collection: Collection }\n): PartialStateUpdater<NamedEntityState<any, Collection>>;\n/**\n * @description\n *\n * Removes an entity from the collection by ID.\n *\n * @usageNotes\n *\n * ```ts\n * import { patchState } from '@ngrx/signals';\n * import { removeEntity } from '@ngrx/signals/entities';\n *\n * patchState(store, removeEntity(1));\n * ```\n */\nexport function removeEntity(\n  id: EntityId,\n  config?: { collection?: string }\n): PartialStateUpdater<EntityState<any> | NamedEntityState<any, string>> {\n  const stateKeys = getEntityStateKeys(config);\n\n  return (state) => {\n    const clonedState = cloneEntityState(state, stateKeys);\n    const didMutate = removeEntitiesMutably(clonedState, [id]);\n\n    return getEntityUpdaterResult(clonedState, stateKeys, didMutate);\n  };\n}\n","import { PartialStateUpdater } from '@ngrx/signals';\nimport {\n  EntityId,\n  EntityPredicate,\n  EntityState,\n  NamedEntityState,\n} from '../models';\nimport {\n  cloneEntityState,\n  getEntityStateKeys,\n  getEntityUpdaterResult,\n  removeEntitiesMutably,\n} from '../helpers';\n\nexport function removeEntities(\n  ids: EntityId[]\n): PartialStateUpdater<EntityState<any>>;\nexport function removeEntities<Entity>(\n  predicate: EntityPredicate<Entity>\n): PartialStateUpdater<EntityState<Entity>>;\nexport function removeEntities<Collection extends string>(\n  ids: EntityId[],\n  config: { collection: Collection }\n): PartialStateUpdater<NamedEntityState<any, Collection>>;\nexport function removeEntities<\n  Collection extends string,\n  State extends NamedEntityState<any, Collection>,\n  Entity = State extends NamedEntityState<infer E, Collection> ? E : never,\n>(\n  predicate: EntityPredicate<Entity>,\n  config: { collection: Collection }\n): PartialStateUpdater<State>;\n/**\n * @description\n *\n * Removes multiple entities from the collection by IDs or predicate.\n *\n * @usageNotes\n *\n * ```ts\n * import { patchState } from '@ngrx/signals';\n * import { removeEntities } from '@ngrx/signals/entities';\n *\n * // Remove by IDs\n * patchState(store, removeEntities([1, 2, 3]));\n *\n * // Remove by predicate\n * patchState(store, removeEntities((todo) => todo.completed));\n * ```\n */\nexport function removeEntities(\n  idsOrPredicate: EntityId[] | EntityPredicate<any>,\n  config?: { collection?: string }\n): PartialStateUpdater<EntityState<any> | NamedEntityState<any, string>> {\n  const stateKeys = getEntityStateKeys(config);\n\n  return (state) => {\n    const clonedState = cloneEntityState(state, stateKeys);\n    const didMutate = removeEntitiesMutably(clonedState, idsOrPredicate);\n\n    return getEntityUpdaterResult(clonedState, stateKeys, didMutate);\n  };\n}\n","import { PartialStateUpdater } from '@ngrx/signals';\nimport { EntityState, NamedEntityState } from '../models';\nimport { getEntityStateKeys } from '../helpers';\n\nexport function removeAllEntities(): PartialStateUpdater<EntityState<any>>;\nexport function removeAllEntities<Collection extends string>(config: {\n  collection: Collection;\n}): PartialStateUpdater<NamedEntityState<any, Collection>>;\n/**\n * @description\n *\n * Removes all entities from the collection.\n *\n * @usageNotes\n *\n * ```ts\n * import { patchState } from '@ngrx/signals';\n * import { removeAllEntities } from '@ngrx/signals/entities';\n *\n * patchState(store, removeAllEntities());\n * ```\n */\nexport function removeAllEntities(config?: {\n  collection?: string;\n}): PartialStateUpdater<EntityState<any> | NamedEntityState<any, string>> {\n  const stateKeys = getEntityStateKeys(config);\n\n  return () => ({\n    [stateKeys.entityMapKey]: {},\n    [stateKeys.idsKey]: [],\n  });\n}\n","import { PartialStateUpdater } from '@ngrx/signals';\nimport {\n  EntityId,\n  EntityState,\n  NamedEntityState,\n  SelectEntityId,\n} from '../models';\nimport {\n  cloneEntityState,\n  getEntityIdSelector,\n  getEntityStateKeys,\n  getEntityUpdaterResult,\n  setEntityMutably,\n} from '../helpers';\n\nexport function setEntity<Entity extends { id: EntityId }>(\n  entity: Entity\n): PartialStateUpdater<EntityState<Entity>>;\nexport function setEntity<Entity, Collection extends string>(\n  entity: Entity,\n  config: { collection: Collection; selectId: SelectEntityId<NoInfer<Entity>> }\n): PartialStateUpdater<NamedEntityState<Entity, Collection>>;\nexport function setEntity<\n  Entity extends { id: EntityId },\n  Collection extends string,\n>(\n  entity: Entity,\n  config: { collection: Collection }\n): PartialStateUpdater<NamedEntityState<Entity, Collection>>;\nexport function setEntity<Entity>(\n  entity: Entity,\n  config: { selectId: SelectEntityId<NoInfer<Entity>> }\n): PartialStateUpdater<EntityState<Entity>>;\n/**\n * @description\n *\n * Adds or replaces an entity in the collection.\n *\n * @usageNotes\n *\n * ```ts\n * import { patchState } from '@ngrx/signals';\n * import { setEntity } from '@ngrx/signals/entities';\n *\n * patchState(store, setEntity(todo));\n * ```\n */\nexport function setEntity(\n  entity: any,\n  config?: { collection?: string; selectId?: SelectEntityId<any> }\n): PartialStateUpdater<EntityState<any> | NamedEntityState<any, string>> {\n  const selectId = getEntityIdSelector(config);\n  const stateKeys = getEntityStateKeys(config);\n\n  return (state) => {\n    const clonedState = cloneEntityState(state, stateKeys);\n    const didMutate = setEntityMutably(clonedState, entity, selectId);\n\n    return getEntityUpdaterResult(clonedState, stateKeys, didMutate);\n  };\n}\n","import { PartialStateUpdater } from '@ngrx/signals';\nimport {\n  EntityId,\n  EntityState,\n  NamedEntityState,\n  SelectEntityId,\n} from '../models';\nimport {\n  cloneEntityState,\n  getEntityIdSelector,\n  getEntityStateKeys,\n  getEntityUpdaterResult,\n  setEntitiesMutably,\n} from '../helpers';\n\nexport function setEntities<Entity extends { id: EntityId }>(\n  entities: Entity[]\n): PartialStateUpdater<EntityState<Entity>>;\nexport function setEntities<Entity, Collection extends string>(\n  entities: Entity[],\n  config: { collection: Collection; selectId: SelectEntityId<NoInfer<Entity>> }\n): PartialStateUpdater<NamedEntityState<Entity, Collection>>;\nexport function setEntities<\n  Entity extends { id: EntityId },\n  Collection extends string,\n>(\n  entities: Entity[],\n  config: { collection: Collection }\n): PartialStateUpdater<NamedEntityState<Entity, Collection>>;\nexport function setEntities<Entity>(\n  entities: Entity[],\n  config: { selectId: SelectEntityId<NoInfer<Entity>> }\n): PartialStateUpdater<EntityState<Entity>>;\n/**\n * @description\n *\n * Adds or replaces multiple entities in the collection.\n *\n * @usageNotes\n *\n * ```ts\n * import { patchState } from '@ngrx/signals';\n * import { setEntities } from '@ngrx/signals/entities';\n *\n * patchState(store, setEntities([todo1, todo2]));\n * ```\n */\nexport function setEntities(\n  entities: any[],\n  config?: { collection?: string; selectId?: SelectEntityId<any> }\n): PartialStateUpdater<EntityState<any> | NamedEntityState<any, string>> {\n  const selectId = getEntityIdSelector(config);\n  const stateKeys = getEntityStateKeys(config);\n\n  return (state) => {\n    const clonedState = cloneEntityState(state, stateKeys);\n    const didMutate = setEntitiesMutably(clonedState, entities, selectId);\n\n    return getEntityUpdaterResult(clonedState, stateKeys, didMutate);\n  };\n}\n","import { PartialStateUpdater } from '@ngrx/signals';\nimport {\n  EntityId,\n  EntityState,\n  NamedEntityState,\n  SelectEntityId,\n} from '../models';\nimport {\n  getEntityIdSelector,\n  getEntityStateKeys,\n  setEntitiesMutably,\n} from '../helpers';\n\nexport function setAllEntities<Entity extends { id: EntityId }>(\n  entities: Entity[]\n): PartialStateUpdater<EntityState<Entity>>;\nexport function setAllEntities<Entity, Collection extends string>(\n  entities: Entity[],\n  config: { collection: Collection; selectId: SelectEntityId<NoInfer<Entity>> }\n): PartialStateUpdater<NamedEntityState<Entity, Collection>>;\nexport function setAllEntities<\n  Entity extends { id: EntityId },\n  Collection extends string,\n>(\n  entities: Entity[],\n  config: { collection: Collection }\n): PartialStateUpdater<NamedEntityState<Entity, Collection>>;\nexport function setAllEntities<Entity>(\n  entities: Entity[],\n  config: { selectId: SelectEntityId<NoInfer<Entity>> }\n): PartialStateUpdater<EntityState<Entity>>;\n/**\n * @description\n *\n * Replaces the entire entity collection with the provided entities.\n *\n * @usageNotes\n *\n * ```ts\n * import { patchState } from '@ngrx/signals';\n * import { setAllEntities } from '@ngrx/signals/entities';\n *\n * patchState(store, setAllEntities([todo1, todo2, todo3]));\n * ```\n */\nexport function setAllEntities(\n  entities: any[],\n  config?: { collection?: string; selectId?: SelectEntityId<any> }\n): PartialStateUpdater<EntityState<any> | NamedEntityState<any, string>> {\n  const selectId = getEntityIdSelector(config);\n  const stateKeys = getEntityStateKeys(config);\n\n  return () => {\n    const state: EntityState<any> = { entityMap: {}, ids: [] };\n    setEntitiesMutably(state, entities, selectId);\n\n    return {\n      [stateKeys.entityMapKey]: state.entityMap,\n      [stateKeys.idsKey]: state.ids,\n    };\n  };\n}\n","import { PartialStateUpdater } from '@ngrx/signals';\nimport {\n  EntityChanges,\n  EntityId,\n  EntityState,\n  NamedEntityState,\n  SelectEntityId,\n} from '../models';\nimport {\n  cloneEntityState,\n  getEntityIdSelector,\n  getEntityStateKeys,\n  getEntityUpdaterResult,\n  updateEntitiesMutably,\n} from '../helpers';\n\nexport function updateEntity<\n  Collection extends string,\n  State extends NamedEntityState<any, Collection>,\n  Entity = State extends NamedEntityState<infer E, Collection> ? E : never,\n>(\n  update: {\n    id: EntityId;\n    changes: EntityChanges<NoInfer<Entity>>;\n  },\n  config: {\n    collection: Collection;\n    selectId: SelectEntityId<NoInfer<Entity>>;\n  }\n): PartialStateUpdater<State>;\nexport function updateEntity<\n  Collection extends string,\n  State extends NamedEntityState<any, Collection>,\n  Entity = State extends NamedEntityState<\n    infer E extends { id: EntityId },\n    Collection\n  >\n    ? E\n    : never,\n>(\n  update: {\n    id: EntityId;\n    changes: EntityChanges<NoInfer<Entity>>;\n  },\n  config: { collection: Collection }\n): PartialStateUpdater<State>;\nexport function updateEntity<Entity>(\n  update: {\n    id: EntityId;\n    changes: EntityChanges<NoInfer<Entity>>;\n  },\n  config: { selectId: SelectEntityId<NoInfer<Entity>> }\n): PartialStateUpdater<EntityState<Entity>>;\nexport function updateEntity<Entity extends { id: EntityId }>(update: {\n  id: EntityId;\n  changes: EntityChanges<NoInfer<Entity>>;\n}): PartialStateUpdater<EntityState<Entity>>;\n/**\n * @description\n *\n * Updates an entity in the collection by ID. Supports partial updates.\n *\n * @usageNotes\n *\n * ```ts\n * import { patchState } from '@ngrx/signals';\n * import { updateEntity } from '@ngrx/signals/entities';\n *\n * patchState(store, updateEntity({ id: 1, changes: { completed: true } }));\n * ```\n */\nexport function updateEntity(\n  update: {\n    id: EntityId;\n    changes: EntityChanges<any>;\n  },\n  config?: { collection?: string; selectId?: SelectEntityId<any> }\n): PartialStateUpdater<EntityState<any> | NamedEntityState<any, string>> {\n  const selectId = getEntityIdSelector(config);\n  const stateKeys = getEntityStateKeys(config);\n\n  return (state) => {\n    const clonedState = cloneEntityState(state, stateKeys);\n    const didMutate = updateEntitiesMutably(\n      clonedState,\n      [update.id],\n      update.changes,\n      selectId\n    );\n\n    return getEntityUpdaterResult(clonedState, stateKeys, didMutate);\n  };\n}\n","import { PartialStateUpdater } from '@ngrx/signals';\nimport {\n  EntityChanges,\n  EntityId,\n  EntityPredicate,\n  EntityState,\n  NamedEntityState,\n  SelectEntityId,\n} from '../models';\nimport {\n  cloneEntityState,\n  getEntityIdSelector,\n  getEntityStateKeys,\n  getEntityUpdaterResult,\n  updateEntitiesMutably,\n} from '../helpers';\n\nexport function updateEntities<\n  Collection extends string,\n  State extends NamedEntityState<any, Collection>,\n  Entity = State extends NamedEntityState<infer E, Collection> ? E : never,\n>(\n  update: {\n    ids: EntityId[];\n    changes: EntityChanges<NoInfer<Entity>>;\n  },\n  config: {\n    collection: Collection;\n    selectId: SelectEntityId<NoInfer<Entity>>;\n  }\n): PartialStateUpdater<State>;\nexport function updateEntities<\n  Collection extends string,\n  State extends NamedEntityState<any, Collection>,\n  Entity = State extends NamedEntityState<infer E, Collection> ? E : never,\n>(\n  update: {\n    predicate: EntityPredicate<Entity>;\n    changes: EntityChanges<NoInfer<Entity>>;\n  },\n  config: {\n    collection: Collection;\n    selectId: SelectEntityId<NoInfer<Entity>>;\n  }\n): PartialStateUpdater<State>;\nexport function updateEntities<\n  Collection extends string,\n  State extends NamedEntityState<any, Collection>,\n  Entity = State extends NamedEntityState<\n    infer E extends { id: EntityId },\n    Collection\n  >\n    ? E\n    : never,\n>(\n  update: {\n    ids: EntityId[];\n    changes: EntityChanges<NoInfer<Entity>>;\n  },\n  config: { collection: Collection }\n): PartialStateUpdater<State>;\nexport function updateEntities<\n  Collection extends string,\n  State extends NamedEntityState<any, Collection>,\n  Entity = State extends NamedEntityState<\n    infer E extends { id: EntityId },\n    Collection\n  >\n    ? E\n    : never,\n>(\n  update: {\n    predicate: EntityPredicate<Entity>;\n    changes: EntityChanges<NoInfer<Entity>>;\n  },\n  config: { collection: Collection }\n): PartialStateUpdater<State>;\nexport function updateEntities<Entity>(\n  update: {\n    ids: EntityId[];\n    changes: EntityChanges<NoInfer<Entity>>;\n  },\n  config: { selectId: SelectEntityId<NoInfer<Entity>> }\n): PartialStateUpdater<EntityState<Entity>>;\nexport function updateEntities<Entity>(\n  update: {\n    predicate: EntityPredicate<Entity>;\n    changes: EntityChanges<NoInfer<Entity>>;\n  },\n  config: { selectId: SelectEntityId<NoInfer<Entity>> }\n): PartialStateUpdater<EntityState<Entity>>;\nexport function updateEntities<Entity extends { id: EntityId }>(update: {\n  ids: EntityId[];\n  changes: EntityChanges<NoInfer<Entity>>;\n}): PartialStateUpdater<EntityState<Entity>>;\nexport function updateEntities<Entity extends { id: EntityId }>(update: {\n  predicate: EntityPredicate<Entity>;\n  changes: EntityChanges<NoInfer<Entity>>;\n}): PartialStateUpdater<EntityState<Entity>>;\n/**\n * @description\n *\n * Updates multiple entities in the collection by IDs or predicate.\n * Supports partial updates.\n *\n * @usageNotes\n *\n * ```ts\n * import { patchState } from '@ngrx/signals';\n * import { updateEntities } from '@ngrx/signals/entities';\n *\n * // Update by IDs\n * patchState(\n *   store,\n *   updateEntities({ ids: [1, 2], changes: { completed: true } })\n * );\n *\n * // Update by predicate\n * patchState(\n *   store,\n *   updateEntities({\n *     predicate: (todo) => !todo.completed,\n *     changes: { text: '' },\n *   })\n * );\n * ```\n */\nexport function updateEntities(\n  update: ({ ids: EntityId[] } | { predicate: EntityPredicate<any> }) & {\n    changes: EntityChanges<any>;\n  },\n  config?: { collection?: string; selectId?: SelectEntityId<any> }\n): PartialStateUpdater<EntityState<any> | NamedEntityState<any, string>> {\n  const selectId = getEntityIdSelector(config);\n  const stateKeys = getEntityStateKeys(config);\n  const idsOrPredicate = 'ids' in update ? update.ids : update.predicate;\n\n  return (state) => {\n    const clonedState = cloneEntityState(state, stateKeys);\n    const didMutate = updateEntitiesMutably(\n      clonedState,\n      idsOrPredicate,\n      update.changes,\n      selectId\n    );\n\n    return getEntityUpdaterResult(clonedState, stateKeys, didMutate);\n  };\n}\n","import { PartialStateUpdater } from '@ngrx/signals';\nimport {\n  EntityChanges,\n  EntityId,\n  EntityState,\n  NamedEntityState,\n  SelectEntityId,\n} from '../models';\nimport {\n  cloneEntityState,\n  getEntityIdSelector,\n  getEntityStateKeys,\n  getEntityUpdaterResult,\n  updateEntitiesMutably,\n} from '../helpers';\n\nexport function updateAllEntities<\n  Collection extends string,\n  State extends NamedEntityState<any, Collection>,\n  Entity = State extends NamedEntityState<infer E, Collection> ? E : never,\n>(\n  changes: EntityChanges<NoInfer<Entity>>,\n  config: {\n    collection: Collection;\n    selectId: SelectEntityId<NoInfer<Entity>>;\n  }\n): PartialStateUpdater<State>;\nexport function updateAllEntities<\n  Collection extends string,\n  State extends NamedEntityState<any, Collection>,\n  Entity = State extends NamedEntityState<\n    infer E extends { id: EntityId },\n    Collection\n  >\n    ? E\n    : never,\n>(\n  changes: EntityChanges<NoInfer<Entity>>,\n  config: { collection: Collection }\n): PartialStateUpdater<State>;\nexport function updateAllEntities<Entity>(\n  changes: EntityChanges<NoInfer<Entity>>,\n  config: { selectId: SelectEntityId<NoInfer<Entity>> }\n): PartialStateUpdater<EntityState<Entity>>;\nexport function updateAllEntities<Entity extends { id: EntityId }>(\n  changes: EntityChanges<NoInfer<Entity>>\n): PartialStateUpdater<EntityState<Entity>>;\n/**\n * @description\n *\n * Updates all entities in the collection. Supports partial updates.\n *\n * @usageNotes\n *\n * ```ts\n * import { patchState } from '@ngrx/signals';\n * import { updateAllEntities } from '@ngrx/signals/entities';\n *\n * patchState(store, updateAllEntities({ completed: false }));\n * ```\n */\nexport function updateAllEntities(\n  changes: EntityChanges<any>,\n  config?: { collection?: string; selectId?: SelectEntityId<any> }\n): PartialStateUpdater<EntityState<any> | NamedEntityState<any, string>> {\n  const selectId = getEntityIdSelector(config);\n  const stateKeys = getEntityStateKeys(config);\n\n  return (state) => {\n    const clonedState = cloneEntityState(state, stateKeys);\n    const didMutate = updateEntitiesMutably(\n      clonedState,\n      (state as Record<string, any>)[stateKeys.idsKey],\n      changes,\n      selectId\n    );\n\n    return getEntityUpdaterResult(clonedState, stateKeys, didMutate);\n  };\n}\n","import { PartialStateUpdater } from '@ngrx/signals';\nimport {\n  EntityId,\n  EntityState,\n  NamedEntityState,\n  SelectEntityId,\n} from '../models';\nimport {\n  cloneEntityState,\n  getEntityIdSelector,\n  getEntityStateKeys,\n  getEntityUpdaterResult,\n  setEntityMutably,\n} from '../helpers';\n\nexport function upsertEntity<Entity extends { id: EntityId }>(\n  entity: Entity\n): PartialStateUpdater<EntityState<Entity>>;\nexport function upsertEntity<Entity, Collection extends string>(\n  entity: Entity,\n  config: { collection: Collection; selectId: SelectEntityId<NoInfer<Entity>> }\n): PartialStateUpdater<NamedEntityState<Entity, Collection>>;\nexport function upsertEntity<\n  Entity extends { id: EntityId },\n  Collection extends string,\n>(\n  entity: Entity,\n  config: { collection: Collection }\n): PartialStateUpdater<NamedEntityState<Entity, Collection>>;\nexport function upsertEntity<Entity>(\n  entity: Entity,\n  config: { selectId: SelectEntityId<NoInfer<Entity>> }\n): PartialStateUpdater<EntityState<Entity>>;\n/**\n * @description\n *\n * Adds or updates an entity in the collection.\n * When updating, merges with existing entity.\n *\n * @usageNotes\n *\n * ```ts\n * import { patchState } from '@ngrx/signals';\n * import { upsertEntity } from '@ngrx/signals/entities';\n *\n * patchState(store, upsertEntity(todo));\n * ```\n */\nexport function upsertEntity(\n  entity: any,\n  config?: { collection?: string; selectId?: SelectEntityId<any> }\n): PartialStateUpdater<EntityState<any> | NamedEntityState<any, string>> {\n  const selectId = getEntityIdSelector(config);\n  const stateKeys = getEntityStateKeys(config);\n\n  return (state) => {\n    const clonedState = cloneEntityState(state, stateKeys);\n    const didMutate = setEntityMutably(clonedState, entity, selectId, false);\n\n    return getEntityUpdaterResult(clonedState, stateKeys, didMutate);\n  };\n}\n","import { PartialStateUpdater } from '@ngrx/signals';\nimport {\n  EntityId,\n  EntityState,\n  NamedEntityState,\n  SelectEntityId,\n} from '../models';\nimport {\n  cloneEntityState,\n  getEntityIdSelector,\n  getEntityStateKeys,\n  getEntityUpdaterResult,\n  setEntitiesMutably,\n} from '../helpers';\n\nexport function upsertEntities<Entity extends { id: EntityId }>(\n  entities: Entity[]\n): PartialStateUpdater<EntityState<Entity>>;\nexport function upsertEntities<Entity, Collection extends string>(\n  entities: Entity[],\n  config: { collection: Collection; selectId: SelectEntityId<NoInfer<Entity>> }\n): PartialStateUpdater<NamedEntityState<Entity, Collection>>;\nexport function upsertEntities<\n  Entity extends { id: EntityId },\n  Collection extends string,\n>(\n  entities: Entity[],\n  config: { collection: Collection }\n): PartialStateUpdater<NamedEntityState<Entity, Collection>>;\nexport function upsertEntities<Entity>(\n  entities: Entity[],\n  config: { selectId: SelectEntityId<NoInfer<Entity>> }\n): PartialStateUpdater<EntityState<Entity>>;\n/**\n * @description\n *\n * Adds or updates multiple entities in the collection.\n * When updating, merges with existing entities.\n *\n * @usageNotes\n *\n * ```ts\n * import { patchState } from '@ngrx/signals';\n * import { upsertEntities } from '@ngrx/signals/entities';\n *\n * patchState(store, upsertEntities([todo1, todo2]));\n * ```\n */\nexport function upsertEntities(\n  entities: any[],\n  config?: { collection?: string; selectId?: SelectEntityId<any> }\n): PartialStateUpdater<EntityState<any> | NamedEntityState<any, string>> {\n  const selectId = getEntityIdSelector(config);\n  const stateKeys = getEntityStateKeys(config);\n\n  return (state) => {\n    const clonedState = cloneEntityState(state, stateKeys);\n    const didMutate = setEntitiesMutably(\n      clonedState,\n      entities,\n      selectId,\n      false\n    );\n\n    return getEntityUpdaterResult(clonedState, stateKeys, didMutate);\n  };\n}\n","import { SelectEntityId } from './models';\n\nexport function entityConfig<Entity, Collection extends string>(config: {\n  entity: Entity;\n  collection: Collection;\n  selectId: SelectEntityId<NoInfer<Entity>>;\n}): typeof config;\nexport function entityConfig<Entity>(config: {\n  entity: Entity;\n  selectId: SelectEntityId<NoInfer<Entity>>;\n}): typeof config;\nexport function entityConfig<Entity, Collection extends string>(config: {\n  entity: Entity;\n  collection: Collection;\n}): typeof config;\nexport function entityConfig<Entity>(config: { entity: Entity }): typeof config;\n/**\n * @description\n *\n * Creates a custom entity configuration and ensures strong typing.\n * Allows defining named entity collections and a custom id selector.\n *\n * @usageNotes\n *\n * ```ts\n * import { signalStore, type, withMethods } from '@ngrx/signals';\n * import { addEntity, entityConfig, withEntities } from '@ngrx/signals/entities';\n *\n * type Todo = { key: number; text: string };\n *\n * const todoConfig = entityConfig({\n *   entity: type<Todo>(),\n *   collection: 'todo',\n *   selectId: (todo) => todo.key,\n * });\n *\n * export const TodosStore = signalStore(\n *   // 👇 Adds `todoEntityMap`, `todoIds`, and `todoEntities` signals to the store.\n *   withEntities(todoConfig),\n *   withMethods((store) => ({\n *     addTodo(todo: Todo): void {\n *       patchState(store, addEntity(todo, todoConfig));\n *     },\n *   }))\n * );\n * ```\n */\nexport function entityConfig<Entity>(config: {\n  entity: Entity;\n  collection?: string;\n  selectId?: SelectEntityId<Entity>;\n}): typeof config {\n  return config;\n}\n","import { computed, Signal } from '@angular/core';\nimport {\n  EmptyFeatureResult,\n  SignalStoreFeature,\n  signalStoreFeature,\n  withComputed,\n  withState,\n} from '@ngrx/signals';\nimport {\n  EntityProps,\n  EntityId,\n  EntityMap,\n  EntityState,\n  NamedEntityProps,\n  NamedEntityState,\n} from './models';\nimport { getEntityStateKeys } from './helpers';\n\nexport function withEntities<Entity>(): SignalStoreFeature<\n  EmptyFeatureResult,\n  {\n    state: EntityState<Entity>;\n    props: EntityProps<Entity>;\n    methods: {};\n  }\n>;\nexport function withEntities<Entity, Collection extends string>(config: {\n  entity: Entity;\n  collection: Collection;\n}): SignalStoreFeature<\n  EmptyFeatureResult,\n  {\n    state: NamedEntityState<Entity, Collection>;\n    props: NamedEntityProps<Entity, Collection>;\n    methods: {};\n  }\n>;\nexport function withEntities<Entity>(config: {\n  entity: Entity;\n}): SignalStoreFeature<\n  EmptyFeatureResult,\n  {\n    state: EntityState<Entity>;\n    props: EntityProps<Entity>;\n    methods: {};\n  }\n>;\n/**\n * @description\n *\n * Provides entity management capabilities to the SignalStore.\n * Adds `entityMap`, `ids`, and `entities` signals to the store.\n *\n * @usageNotes\n *\n * ```ts\n * import { signalStore } from '@ngrx/signals';\n * import { withEntities } from '@ngrx/signals/entities';\n *\n * type Todo = { id: number; text: string; completed: boolean };\n *\n * export const TodosStore = signalStore(withEntities<Todo>());\n * ```\n */\nexport function withEntities<Entity>(config?: {\n  entity: Entity;\n  collection?: string;\n}): SignalStoreFeature {\n  const { entityMapKey, idsKey, entitiesKey } = getEntityStateKeys(config);\n\n  return signalStoreFeature(\n    withState({\n      [entityMapKey]: {},\n      [idsKey]: [],\n    }),\n    withComputed((store: Record<string, Signal<unknown>>) => ({\n      [entitiesKey]: computed(() => {\n        const entityMap = store[entityMapKey]() as EntityMap<Entity>;\n        const ids = store[idsKey]() as EntityId[];\n\n        return ids.map((id) => entityMap[id]);\n      }),\n    }))\n  );\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;AA+BA,IAAY,SAIX;AAJD,CAAA,UAAY,SAAS,EAAA;AACnB,IAAA,SAAA,CAAA,SAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACJ,IAAA,SAAA,CAAA,SAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ;AACR,IAAA,SAAA,CAAA,SAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI;AACN,CAAC,EAJW,SAAS,KAAT,SAAS,GAAA,EAAA,CAAA,CAAA;;ACtBrB,MAAM,eAAe,GAAqC,CAAC,MAAM,KAAK,MAAM,CAAC,EAAE;AAEzE,SAAU,mBAAmB,CAAC,MAEnC,EAAA;AACC,IAAA,OAAO,MAAM,EAAE,QAAQ,IAAI,eAAe;AAC5C;AAEM,SAAU,kBAAkB,CAAC,MAAgC,EAAA;AAKjE,IAAA,MAAM,UAAU,GAAG,MAAM,EAAE,UAAU;AACrC,IAAA,MAAM,YAAY,GAChB,UAAU,KAAK,SAAS,GAAG,WAAW,GAAG,CAAA,EAAG,UAAU,WAAW;AACnE,IAAA,MAAM,MAAM,GAAG,UAAU,KAAK,SAAS,GAAG,KAAK,GAAG,CAAA,EAAG,UAAU,KAAK;AACpE,IAAA,MAAM,WAAW,GACf,UAAU,KAAK,SAAS,GAAG,UAAU,GAAG,CAAA,EAAG,UAAU,UAAU;AAEjE,IAAA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE;AAC9C;AAEM,SAAU,gBAAgB,CAC9B,KAA0B,EAC1B,SAGC,EAAA;IAED,OAAO;QACL,SAAS,EAAE,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE;QAC/C,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;KAClC;AACH;SAEgB,sBAAsB,CACpC,KAAuB,EACvB,SAGC,EACD,SAAoB,EAAA;IAEpB,QAAQ,SAAS;AACf,QAAA,KAAK,SAAS,CAAC,IAAI,EAAE;YACnB,OAAO;AACL,gBAAA,CAAC,SAAS,CAAC,YAAY,GAAG,KAAK,CAAC,SAAS;AACzC,gBAAA,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG;aAC9B;QACH;AACA,QAAA,KAAK,SAAS,CAAC,QAAQ,EAAE;YACvB,OAAO,EAAE,CAAC,SAAS,CAAC,YAAY,GAAG,KAAK,CAAC,SAAS,EAAE;QACtD;QACA,SAAS;AACP,YAAA,OAAO,EAAE;QACX;;AAEJ;AAEM,SAAU,gBAAgB,CAC9B,KAAuB,EACvB,MAAW,EACX,QAA6B,EAC7B,OAAO,GAAG,KAAK,EAAA;AAEf,IAAA,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC;AAE3B,IAAA,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;QACvB,OAAO,SAAS,CAAC,IAAI;IACvB;AAEA,IAAA,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,MAAM;IAE5B,IAAI,OAAO,EAAE;AACX,QAAA,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;IACvB;SAAO;AACL,QAAA,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IACpB;IAEA,OAAO,SAAS,CAAC,IAAI;AACvB;AAEM,SAAU,kBAAkB,CAChC,KAAuB,EACvB,QAAe,EACf,QAA6B,EAC7B,OAAO,GAAG,KAAK,EAAA;AAEf,IAAA,IAAI,SAAS,GAAG,SAAS,CAAC,IAAI;AAE9B,IAAA,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE;AAC7B,QAAA,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC;AAEjE,QAAA,IAAI,MAAM,KAAK,SAAS,CAAC,IAAI,EAAE;YAC7B,SAAS,GAAG,MAAM;QACpB;IACF;AAEA,IAAA,OAAO,SAAS;AAClB;AAEM,SAAU,gBAAgB,CAC9B,KAAuB,EACvB,MAAW,EACX,QAA6B,EAC7B,OAAO,GAAG,IAAI,EAAA;AAEd,IAAA,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC;AAE3B,IAAA,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;AACvB,QAAA,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG;AACpB,cAAE;AACF,cAAE,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,EAAE;QAEzC,OAAO,SAAS,CAAC,QAAQ;IAC3B;AAEA,IAAA,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,MAAM;AAC5B,IAAA,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IAElB,OAAO,SAAS,CAAC,IAAI;AACvB;AAEM,SAAU,kBAAkB,CAChC,KAAuB,EACvB,QAAe,EACf,QAA6B,EAC7B,OAAO,GAAG,IAAI,EAAA;AAEd,IAAA,IAAI,SAAS,GAAG,SAAS,CAAC,IAAI;AAE9B,IAAA,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE;AAC7B,QAAA,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC;AAEjE,QAAA,IAAI,SAAS,KAAK,SAAS,CAAC,IAAI,EAAE;YAChC;QACF;QAEA,SAAS,GAAG,MAAM;IACpB;AAEA,IAAA,OAAO,SAAS;AAClB;AAEM,SAAU,qBAAqB,CACnC,KAAuB,EACvB,cAAiD,EAAA;AAEjD,IAAA,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc;AACtC,UAAE;UACA,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;AACjE,IAAA,IAAI,SAAS,GAAG,SAAS,CAAC,IAAI;AAE9B,IAAA,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;AACpB,QAAA,IAAI,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE;AACvB,YAAA,OAAO,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;AAC1B,YAAA,SAAS,GAAG,SAAS,CAAC,IAAI;QAC5B;IACF;AAEA,IAAA,IAAI,SAAS,KAAK,SAAS,CAAC,IAAI,EAAE;QAChC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC;IAC7D;AAEA,IAAA,OAAO,SAAS;AAClB;AAEM,SAAU,qBAAqB,CACnC,KAAuB,EACvB,cAAiD,EACjD,OAA2B,EAC3B,QAA6B,EAAA;AAE7B,IAAA,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc;AACtC,UAAE;UACA,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IACjE,IAAI,MAAM,GAA2C,SAAS;AAC9D,IAAA,IAAI,SAAS,GAAG,SAAS,CAAC,IAAI;AAE9B,IAAA,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE;QACpB,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QAElC,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,aAAa,GACjB,OAAO,OAAO,KAAK,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO;AAC3D,YAAA,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,GAAG,aAAa,EAAE;AACrD,YAAA,SAAS,GAAG,SAAS,CAAC,QAAQ;YAE9B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAC3C,YAAA,IAAI,KAAK,KAAK,EAAE,EAAE;AAChB,gBAAA,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;AAC5C,gBAAA,OAAO,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;AAE1B,gBAAA,MAAM,GAAG,MAAM,IAAI,EAAE;AACrB,gBAAA,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK;YACpB;QACF;IACF;IAEA,IAAI,MAAM,EAAE;QACV,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;AACnD,QAAA,SAAS,GAAG,SAAS,CAAC,IAAI;IAC5B;IAEA,IACE,OAAO,SAAS,KAAK,WAAW;QAChC,SAAS;AACT,QAAA,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,EACxD;AACA,QAAA,OAAO,CAAC,IAAI,CACV,4CAA4C,EAC5C,GAAG,EACH,4BAA4B,EAC5B,6DAA6D,EAC7D,qDAAqD,CACtD;IACH;AAEA,IAAA,OAAO,SAAS;AAClB;;ACpMA;;;;;;;;;;;;;;AAcG;AACG,SAAU,SAAS,CACvB,MAAW,EACX,MAAgE,EAAA;AAEhE,IAAA,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC;AAC5C,IAAA,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC;IAE5C,OAAO,CAAC,KAAK,KAAI;QACf,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC;QACtD,MAAM,SAAS,GAAG,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC;QAEjE,OAAO,sBAAsB,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC;AAClE,IAAA,CAAC;AACH;;AC5BA;;;;;;;;;;;;;;AAcG;AACG,SAAU,WAAW,CACzB,QAAe,EACf,MAAgE,EAAA;AAEhE,IAAA,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC;AAC5C,IAAA,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC;IAE5C,OAAO,CAAC,KAAK,KAAI;QACf,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC;QACtD,MAAM,SAAS,GAAG,kBAAkB,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC;QAErE,OAAO,sBAAsB,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC;AAClE,IAAA,CAAC;AACH;;AC5BA;;;;;;;;;;;;;;AAcG;AACG,SAAU,aAAa,CAC3B,MAAW,EACX,MAAgE,EAAA;AAEhE,IAAA,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC;AAC5C,IAAA,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC;IAE5C,OAAO,CAAC,KAAK,KAAI;QACf,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC;AACtD,QAAA,MAAM,SAAS,GAAG,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC;QAEvE,OAAO,sBAAsB,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC;AAClE,IAAA,CAAC;AACH;;AC5BA;;;;;;;;;;;;;;AAcG;AACG,SAAU,eAAe,CAC7B,QAAe,EACf,MAAgE,EAAA;AAEhE,IAAA,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC;AAC5C,IAAA,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC;IAE5C,OAAO,CAAC,KAAK,KAAI;QACf,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC;QAEtD,MAAM,cAAc,GAAU,EAAE;AAChC,QAAA,MAAM,OAAO,GAAG,IAAI,GAAG,EAAY;AAEnC,QAAA,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE;AAC7B,YAAA,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC;YAE3B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;AACpB,gBAAA,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC;AAC9B,gBAAA,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACjB;QACF;AAEA,QAAA,MAAM,SAAS,GAAG,kBAAkB,CAClC,WAAW,EACX,cAAc,EACd,QAAQ,EACR,IAAI,CACL;QAED,OAAO,sBAAsB,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC;AAClE,IAAA,CAAC;AACH;;AC/DA;;;;;;;;;;;;;AAaG;AACG,SAAU,YAAY,CAC1B,EAAY,EACZ,MAAgC,EAAA;AAEhC,IAAA,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC;IAE5C,OAAO,CAAC,KAAK,KAAI;QACf,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC;QACtD,MAAM,SAAS,GAAG,qBAAqB,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;QAE1D,OAAO,sBAAsB,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC;AAClE,IAAA,CAAC;AACH;;ACVA;;;;;;;;;;;;;;;;;AAiBG;AACG,SAAU,cAAc,CAC5B,cAAiD,EACjD,MAAgC,EAAA;AAEhC,IAAA,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC;IAE5C,OAAO,CAAC,KAAK,KAAI;QACf,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC;QACtD,MAAM,SAAS,GAAG,qBAAqB,CAAC,WAAW,EAAE,cAAc,CAAC;QAEpE,OAAO,sBAAsB,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC;AAClE,IAAA,CAAC;AACH;;ACtDA;;;;;;;;;;;;;AAaG;AACG,SAAU,iBAAiB,CAAC,MAEjC,EAAA;AACC,IAAA,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC;IAE5C,OAAO,OAAO;AACZ,QAAA,CAAC,SAAS,CAAC,YAAY,GAAG,EAAE;AAC5B,QAAA,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE;AACvB,KAAA,CAAC;AACJ;;ACEA;;;;;;;;;;;;;AAaG;AACG,SAAU,SAAS,CACvB,MAAW,EACX,MAAgE,EAAA;AAEhE,IAAA,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC;AAC5C,IAAA,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC;IAE5C,OAAO,CAAC,KAAK,KAAI;QACf,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC;QACtD,MAAM,SAAS,GAAG,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC;QAEjE,OAAO,sBAAsB,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC;AAClE,IAAA,CAAC;AACH;;AC3BA;;;;;;;;;;;;;AAaG;AACG,SAAU,WAAW,CACzB,QAAe,EACf,MAAgE,EAAA;AAEhE,IAAA,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC;AAC5C,IAAA,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC;IAE5C,OAAO,CAAC,KAAK,KAAI;QACf,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC;QACtD,MAAM,SAAS,GAAG,kBAAkB,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC;QAErE,OAAO,sBAAsB,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC;AAClE,IAAA,CAAC;AACH;;AC7BA;;;;;;;;;;;;;AAaG;AACG,SAAU,cAAc,CAC5B,QAAe,EACf,MAAgE,EAAA;AAEhE,IAAA,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC;AAC5C,IAAA,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC;AAE5C,IAAA,OAAO,MAAK;QACV,MAAM,KAAK,GAAqB,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;AAC1D,QAAA,kBAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC;QAE7C,OAAO;AACL,YAAA,CAAC,SAAS,CAAC,YAAY,GAAG,KAAK,CAAC,SAAS;AACzC,YAAA,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG;SAC9B;AACH,IAAA,CAAC;AACH;;ACJA;;;;;;;;;;;;;AAaG;AACG,SAAU,YAAY,CAC1B,MAGC,EACD,MAAgE,EAAA;AAEhE,IAAA,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC;AAC5C,IAAA,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC;IAE5C,OAAO,CAAC,KAAK,KAAI;QACf,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC;AACtD,QAAA,MAAM,SAAS,GAAG,qBAAqB,CACrC,WAAW,EACX,CAAC,MAAM,CAAC,EAAE,CAAC,EACX,MAAM,CAAC,OAAO,EACd,QAAQ,CACT;QAED,OAAO,sBAAsB,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC;AAClE,IAAA,CAAC;AACH;;ACOA;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BG;AACG,SAAU,cAAc,CAC5B,MAEC,EACD,MAAgE,EAAA;AAEhE,IAAA,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC;AAC5C,IAAA,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC;AAC5C,IAAA,MAAM,cAAc,GAAG,KAAK,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,SAAS;IAEtE,OAAO,CAAC,KAAK,KAAI;QACf,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC;AACtD,QAAA,MAAM,SAAS,GAAG,qBAAqB,CACrC,WAAW,EACX,cAAc,EACd,MAAM,CAAC,OAAO,EACd,QAAQ,CACT;QAED,OAAO,sBAAsB,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC;AAClE,IAAA,CAAC;AACH;;ACrGA;;;;;;;;;;;;;AAaG;AACG,SAAU,iBAAiB,CAC/B,OAA2B,EAC3B,MAAgE,EAAA;AAEhE,IAAA,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC;AAC5C,IAAA,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC;IAE5C,OAAO,CAAC,KAAK,KAAI;QACf,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC;AACtD,QAAA,MAAM,SAAS,GAAG,qBAAqB,CACrC,WAAW,EACV,KAA6B,CAAC,SAAS,CAAC,MAAM,CAAC,EAChD,OAAO,EACP,QAAQ,CACT;QAED,OAAO,sBAAsB,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC;AAClE,IAAA,CAAC;AACH;;AC9CA;;;;;;;;;;;;;;AAcG;AACG,SAAU,YAAY,CAC1B,MAAW,EACX,MAAgE,EAAA;AAEhE,IAAA,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC;AAC5C,IAAA,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC;IAE5C,OAAO,CAAC,KAAK,KAAI;QACf,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC;AACtD,QAAA,MAAM,SAAS,GAAG,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC;QAExE,OAAO,sBAAsB,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC;AAClE,IAAA,CAAC;AACH;;AC5BA;;;;;;;;;;;;;;AAcG;AACG,SAAU,cAAc,CAC5B,QAAe,EACf,MAAgE,EAAA;AAEhE,IAAA,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC;AAC5C,IAAA,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC;IAE5C,OAAO,CAAC,KAAK,KAAI;QACf,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC;AACtD,QAAA,MAAM,SAAS,GAAG,kBAAkB,CAClC,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,KAAK,CACN;QAED,OAAO,sBAAsB,CAAC,WAAW,EAAE,SAAS,EAAE,SAAS,CAAC;AAClE,IAAA,CAAC;AACH;;AClDA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BG;AACG,SAAU,YAAY,CAAS,MAIpC,EAAA;AACC,IAAA,OAAO,MAAM;AACf;;ACNA;;;;;;;;;;;;;;;;AAgBG;AACG,SAAU,YAAY,CAAS,MAGpC,EAAA;AACC,IAAA,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAAC;IAExE,OAAO,kBAAkB,CACvB,SAAS,CAAC;QACR,CAAC,YAAY,GAAG,EAAE;QAClB,CAAC,MAAM,GAAG,EAAE;KACb,CAAC,EACF,YAAY,CAAC,CAAC,KAAsC,MAAM;AACxD,QAAA,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC3B,YAAA,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,CAAC,EAAuB;AAC5D,YAAA,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,EAAgB;AAEzC,YAAA,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC,CAAC;AACvC,QAAA,CAAC,CAAC;KACH,CAAC,CAAC,CACJ;AACH;;ACpFA;;AAEG;;;;"}