diff --git a/messages/en.json b/messages/en.json index c58022f..2ff1190 100644 --- a/messages/en.json +++ b/messages/en.json @@ -22,6 +22,8 @@ "common_time_ago_week": "{value} tuần trước", "common_time_ago_month": "{value} tháng trước", "common_time_ago_year": "{value} năm trước", + "common_search_placeholder": "Search...", + "common_search_placeholder_for_box": "Search with name and tags...", "role_tags": [ { "match": { @@ -81,7 +83,8 @@ "nav_houses": "Houses", "nav_account": "Account", "nav_profile": "Profile", - "nav_boxes": "Hộp chứa", + "nav_boxes": "Boxes", + "nav_items": "Items", "login_page_form_email": "Email", "login_page_form_password": "Password", "login_page_ui_welcome_back": "Welcome back", @@ -223,7 +226,22 @@ ], "notification_page_message_invitation_success": "You have been invited to join house!", "notification_page_message_invitation_rejected": "You have been rejected to join house!", - "boxes_pages_ui_title": "Boxes", + "boxes_page_ui_title": "Boxes", + "boxes_page_form_name": "Box name", + "boxes_page_form_description": "Box description", + "boxes_page_form_color": "Màu sắc", + "boxes_page_form_house": "House", + "boxes_page_form_tag": "Tags", + "boxes_page_form_house_select_placeholder": "Please select house for box", + "boxes_page_message_box_not_found": "Box not found!", + "boxes_page_form_tag_placeholder": "Add a tag", + "boxes_page_ui_table_header_name": "Box name", + "boxes_page_ui_table_header_item_count": "Item count", + "boxes_page_ui_table_header_create_at": "Create date", + "boxes_page_ui_table_header_private": "Private?", + "boxes_page_ui_table_header_tags": "Tags", + "boxes_page_ui_table_header_user": "Creater", + "boxes_page_ui_table_header_house": "House", "backend_message": [ { "match": { diff --git a/messages/vi.json b/messages/vi.json index d10ab07..655b718 100644 --- a/messages/vi.json +++ b/messages/vi.json @@ -22,6 +22,8 @@ "common_time_ago_week": "{value} tuần trước", "common_time_ago_month": "{value} tháng trước", "common_time_ago_year": "{value} năm trước", + "common_search_placeholder": "Tìm kiếm...", + "common_search_placeholder_for_box": "Tìm kiếm với tên and nhãn dán...", "role_tags": [ { "match": { @@ -85,6 +87,7 @@ "nav_account": "Tài khoản", "nav_profile": "Hồ sơ", "nav_boxes": "Hộp chứa", + "nav_items": "Vật phẩm", "login_page_form_email": "Email", "login_page_form_password": "Mật khẩu", "login_page_ui_welcome_back": "Chào mừng trở lại", @@ -227,7 +230,22 @@ ], "notification_page_message_invitation_success": "Bạn đã đồng ý tham gia nhà!", "notification_page_message_invitation_rejected": "Bạn đã từ chối tham gia nhà!", - "boxes_pages_ui_title": "Hộp chứa", + "boxes_page_ui_title": "Hộp chứa", + "boxes_page_form_name": "Tên hộp chứa", + "boxes_page_form_description": "Mô tả hộp chứa", + "boxes_page_form_color": "Màu sắc", + "boxes_page_form_house": "Nhà", + "boxes_page_form_tag": "Nhãn", + "boxes_page_form_house_select_placeholder": "Chọn nhà tạo hộp chứa", + "boxes_page_message_box_not_found": "Không tìm thấy hộp chứa!", + "boxes_page_form_tag_placeholder": "Thêm nhãn cho hộp", + "boxes_page_ui_table_header_name": "Tên hộp chứa", + "boxes_page_ui_table_header_item_count": "Số lượng vật phẩm", + "boxes_page_ui_table_header_create_at": "Ngày tạo", + "boxes_page_ui_table_header_private": "Hộp cá nhân", + "boxes_page_ui_table_header_tags": "Nhãn dán", + "boxes_page_ui_table_header_user": "Người tạo", + "boxes_page_ui_table_header_house": "Thuộc nhà", "backend_message": [ { "match": { diff --git a/prisma/migrations/20260225031506_box_and_item/migration.sql b/prisma/migrations/20260226095955_box_and_item/migration.sql similarity index 94% rename from prisma/migrations/20260225031506_box_and_item/migration.sql rename to prisma/migrations/20260226095955_box_and_item/migration.sql index 9dbcaa7..d57180d 100644 --- a/prisma/migrations/20260225031506_box_and_item/migration.sql +++ b/prisma/migrations/20260226095955_box_and_item/migration.sql @@ -1,16 +1,15 @@ -- CreateTable CREATE TABLE "box" ( "id" TEXT NOT NULL, - "houseId" TEXT, - "icon" TEXT NOT NULL, - "color" TEXT NOT NULL, "name" TEXT NOT NULL, "description" TEXT, "tags" TEXT[] DEFAULT ARRAY[]::TEXT[], + "color" TEXT DEFAULT '#000000', + "houseId" TEXT, "createrId" TEXT NOT NULL, "createdAt" TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" TIMESTAMPTZ NOT NULL, - "deletedAt" TIMESTAMP(3), + "deletedAt" TIMESTAMPTZ, "isPrivate" BOOLEAN NOT NULL DEFAULT false, CONSTRAINT "box_pkey" PRIMARY KEY ("id") @@ -30,7 +29,7 @@ CREATE TABLE "item" ( "expiresAt" TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, "createdAt" TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, "updatedAt" TIMESTAMPTZ NOT NULL, - "deletedAt" TIMESTAMP(3), + "deletedAt" TIMESTAMPTZ, CONSTRAINT "item_pkey" PRIMARY KEY ("id") ); diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 86a1aa1..e27c414 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -184,17 +184,16 @@ model Notification { model Box { id String @id @default(uuid()) - houseId String? - icon String - color String name String description String? tags String[] @default([]) + color String? @default("#000000") + houseId String? createrId String createdAt DateTime @default(now()) @db.Timestamptz updatedAt DateTime @updatedAt @db.Timestamptz - deletedAt DateTime? + deletedAt DateTime? @db.Timestamptz isPrivate Boolean @default(false) items Item[] @@ -221,7 +220,7 @@ model Item { expiresAt DateTime @default(now()) @db.Timestamptz createdAt DateTime @default(now()) @db.Timestamptz updatedAt DateTime @updatedAt @db.Timestamptz - deletedAt DateTime? + deletedAt DateTime? @db.Timestamptz user User @relation(fields: [createrId], references: [id], onDelete: Cascade) box Box? @relation(fields: [boxId], references: [id], onDelete: SetNull) diff --git a/src/components/DataTable.tsx b/src/components/DataTable.tsx index 9b994e7..62dd9be 100644 --- a/src/components/DataTable.tsx +++ b/src/components/DataTable.tsx @@ -114,7 +114,7 @@ const DataTable = ({ -
+
{table.getRowModel().rows?.length ? ( table.getRowModel().rows.map((row) => ( diff --git a/src/components/avatar/avatar-user.tsx b/src/components/avatar/avatar-user.tsx index f3c03fc..bd418ef 100644 --- a/src/components/avatar/avatar-user.tsx +++ b/src/components/avatar/avatar-user.tsx @@ -1,28 +1,33 @@ import { cn } from '@lib/utils'; import { Avatar, AvatarFallback, AvatarImage } from '@ui/avatar'; -import { useAuth } from '../auth/auth-provider'; import RoleRing from './role-ring'; +export type AvatarUserType = { + name: string; + image?: string; + role: string; +}; + interface AvatarUserProps { + user: AvatarUserType; className?: string; textSize?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl'; } -const AvatarUser = ({ className, textSize = 'md' }: AvatarUserProps) => { - const { session } = useAuth(); - const imagePath = session?.user?.image - ? new URL(`../../../data/avatar/${session?.user?.image}`, import.meta.url) - .href +const AvatarUser = ({ user, className, textSize = 'md' }: AvatarUserProps) => { + const { image, name, role } = user; + const imagePath = image + ? new URL(`../../../data/avatar/${image}`, import.meta.url).href : undefined; - const shortName = session?.user?.name + const shortName = name ?.split(' ') .slice(0, 2) .map((name) => name[0]) .join(''); return ( - + [] = [ + { + accessorKey: 'name', + header: m.boxes_page_ui_table_header_name(), + meta: { + thClass: 'w-1/6', + mLabel: m.boxes_page_ui_table_header_name(), + }, + }, + { + accessorFn: (row) => row._count.items, + header: m.boxes_page_ui_table_header_item_count(), + meta: { + thClass: 'w-1/6', + mLabel: m.boxes_page_ui_table_header_item_count(), + }, + }, + { + accessorKey: 'createdAt', + header: m.boxes_page_ui_table_header_create_at(), + meta: { + thClass: 'w-2/6', + mLabel: m.boxes_page_ui_table_header_create_at(), + }, + cell: ({ row }) => { + return formatters.dateTime(new Date(row.original.createdAt)); + }, + }, + { + id: 'actions', + meta: { + thClass: 'w-1/6', + }, + cell: ({ row }) => ( +
+ +
+ ), + }, +]; diff --git a/src/components/boxes/create-box-dialog.tsx b/src/components/boxes/create-box-dialog.tsx new file mode 100644 index 0000000..15b7031 --- /dev/null +++ b/src/components/boxes/create-box-dialog.tsx @@ -0,0 +1,62 @@ +import { m } from '@/paraglide/messages'; +import useHasPermission from '@hooks/use-has-permission'; +import usePreventAutoFocus from '@hooks/use-prevent-auto-focus'; +import { cn } from '@lib/utils'; +import { PlusIcon } from '@phosphor-icons/react'; +import { Button } from '@ui/button'; +import { + Dialog, + DialogContent, + DialogDescription, + DialogHeader, + DialogTitle, + DialogTrigger, +} from '@ui/dialog'; +import { Skeleton } from '@ui/skeleton'; +import { useState } from 'react'; +import CreateNewBoxForm from '../form/box/create-new-box-form'; + +type CreateNewBoxProps = { + className?: string; +}; + +const CreateBoxAction = ({ className }: CreateNewBoxProps) => { + const { hasPermission, isLoading } = useHasPermission('box', 'create'); + const [_open, _setOpen] = useState(false); + const prevent = usePreventAutoFocus(); + + if (isLoading) { + return ; + } + + if (!hasPermission) return null; + + return ( + + + + + e.preventDefault()} + > + + + + {m.nav_add_new()} + + + {m.nav_add_new()} + + + + + + ); +}; + +export default CreateBoxAction; diff --git a/src/components/boxes/view-detail-dialog.tsx b/src/components/boxes/view-detail-dialog.tsx new file mode 100644 index 0000000..8a16c96 --- /dev/null +++ b/src/components/boxes/view-detail-dialog.tsx @@ -0,0 +1,177 @@ +import usePreventAutoFocus from '@/hooks/use-prevent-auto-focus'; +import { m } from '@/paraglide/messages'; +import { formatters } from '@/utils/formatters'; +import { EyeIcon } from '@phosphor-icons/react'; +import { Badge } from '@ui/badge'; +import { Button } from '@ui/button'; +import { + Dialog, + DialogContent, + DialogDescription, + DialogHeader, + DialogTitle, + DialogTrigger, +} from '@ui/dialog'; +import { Label } from '@ui/label'; +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from '@ui/table'; +import { Tooltip, TooltipContent, TooltipTrigger } from '@ui/tooltip'; +import TrueFalse from '@ui/true-false'; +import AvatarUser, { AvatarUserType } from '../avatar/avatar-user'; +import { + Item, + ItemContent, + ItemDescription, + ItemMedia, + ItemTitle, +} from '../ui/item'; + +type ActionProps = { + data: BoxWithCount; +}; + +const ViewDetailBoxAction = ({ data }: ActionProps) => { + const prevent = usePreventAutoFocus(); + + return ( + + + + + + + + + + + + e.preventDefault()} + > + + + + {m.ui_dialog_view_title({ type: m.nav_boxes() })} + + + {m.ui_dialog_view_title({ type: m.nav_boxes() })} + + +
+ + + + + {m.boxes_page_form_name()} + + + {data.name} + + + + + + {m.boxes_page_form_description()} + {data.description} + + + {m.boxes_page_form_color()} + +
+
+
+ {data.tags.length && ( + + {m.boxes_page_ui_table_header_tags()} + + {data.tags.map((tag) => ( + + {tag} + + ))} + + + )} + + {m.boxes_page_ui_table_header_private()} + + + + + + {m.boxes_page_ui_table_header_user()} + + + + + + + {data.user.name} + {data.user.email} + + + + + + {m.boxes_page_ui_table_header_house()} + +
+ {data.house?.name} +
+
+
+ + {m.boxes_page_form_description()} + + {formatters.dateTime(new Date(data.createdAt))} + + +
+
+
+
+
+ ); +}; + +export default ViewDetailBoxAction; diff --git a/src/components/form/account/profile-form.tsx b/src/components/form/account/profile-form.tsx index dd95e18..69dd878 100644 --- a/src/components/form/account/profile-form.tsx +++ b/src/components/form/account/profile-form.tsx @@ -1,7 +1,7 @@ import { Skeleton } from '@/components/ui/skeleton'; import { updateProfile } from '@/service/profile.api'; import { useAuth } from '@components/auth/auth-provider'; -import AvatarUser from '@components/avatar/avatar-user'; +import AvatarUser, { AvatarUserType } from '@components/avatar/avatar-user'; import RoleBadge from '@components/avatar/role-badge'; import { useAppForm } from '@hooks/use-app-form'; import { m } from '@paraglide/messages'; @@ -92,7 +92,11 @@ const ProfileForm = () => { >
- + {(field) => ( void; +}; + +const defaultValues: { + name: string; + description: string; + color: string; + houseId: string; + tags: string[]; +} = { + name: '', + description: '', + color: '#000000', + houseId: '', + tags: [], +}; + +const CreateNewBoxForm = ({ onSubmit }: CreateBoxProp) => { + const [houseKeyword, setHouseKeyword] = useState(''); + const debouncedHouseKeyword = useDebounced(houseKeyword, 300); + const { data: house } = useQuery( + housesQueries.select({ keyword: debouncedHouseKeyword }), + ); + + const queryClient = useQueryClient(); + + const { mutate: createBoxMutation } = useMutation({ + mutationFn: createBox, + onSuccess: () => { + queryClient.invalidateQueries({ + queryKey: [...boxQueries.all, 'list'], + }); + onSubmit(false); + toast.success(m.houses_page_message_invite_member_success(), { + richColors: true, + }); + }, + onError: (error: ReturnError) => { + console.error(error); + const code = error.code as Parameters< + typeof m.backend_message + >[0]['code']; + toast.error(m.backend_message({ code }), { + richColors: true, + }); + }, + }); + + const form = useAppForm({ + defaultValues, + validators: { + onSubmit: createBoxSchema, + onChange: createBoxSchema, + }, + onSubmit: ({ value }) => { + createBoxMutation({ data: value }); + }, + }); + + return ( +
{ + e.preventDefault(); + e.stopPropagation(); + form.handleSubmit(); + }} + > + + + {(field) => } + + + {(field) => ( + + )} + + + {(field) => ( + + )} + + + {(field) => ( + + )} + + + {(field) => ( + + )} + + + + + + + + + + + + +
+ ); +}; + +export default CreateNewBoxForm; diff --git a/src/components/form/form-components.tsx b/src/components/form/form-components.tsx index 6280f36..c6cf279 100644 --- a/src/components/form/form-components.tsx +++ b/src/components/form/form-components.tsx @@ -4,10 +4,14 @@ import { Button, buttonVariants } from '@ui/button'; import { Field, FieldError, FieldLabel } from '@ui/field'; import { Input } from '@ui/input'; import * as ShadcnSelect from '@ui/select'; -import { SelectUser as SelectUserUI } from '@ui/select-user'; +import { + SelectHouse as SelectHouseUI, + SelectUser as SelectUserUI, +} from '@ui/select-user'; import { Textarea } from '@ui/textarea'; import { type VariantProps } from 'class-variance-authority'; import { Spinner } from '../ui/spinner'; +import { TagInput as TagInputUI } from '../ui/tag-input'; export function SubscribeButton({ label, @@ -232,7 +236,13 @@ export function SelectUser({ selectKey = 'id', }: { label: string; - values: Array<{ id: string; name: string; email: string }>; + values: Array<{ + id: string; + name: string; + email: string; + image: string | null; + role: string | null; + }>; placeholder?: string; /** Khi truyền cùng onKeywordChange: tìm kiếm theo API (keyword gửi lên server) */ keyword?: string; @@ -264,3 +274,75 @@ export function SelectUser({ ); } + +export function SelectHouse({ + label, + values, + placeholder, + keyword, + onKeywordChange, + searchPlaceholder = 'Tìm theo tên...', +}: { + label: string; + values: Array<{ + id: string; + name: string; + }>; + placeholder?: string; + keyword?: string; + onKeywordChange?: (value: string) => void; + searchPlaceholder?: string; +}) { + const field = useFieldContext(); + const errors = useStore(field.store, (state) => state.meta.errors); + const isInvalid = field.state.meta.isTouched && !field.state.meta.isValid; + + return ( + + {label}: + field.handleChange(id)} + values={values} + placeholder={placeholder} + keyword={keyword} + onKeywordChange={onKeywordChange} + searchPlaceholder={searchPlaceholder} + aria-invalid={isInvalid} + /> + {isInvalid && } + + ); +} + +export function TagInput({ + label, + placeholder, + max = 10, +}: { + label: string; + placeholder?: string; + max?: number; +}) { + const field = useFieldContext(); + const errors = useStore(field.store, (state) => state.meta.errors); + const isInvalid = field.state.meta.isTouched && !field.state.meta.isValid; + + return ( + + {label}: + field.handleChange(value)} + maxTags={max} + placeholder={placeholder} + aria-invalid={isInvalid} + /> + {isInvalid && } + + ); +} diff --git a/src/components/house/house-column.tsx b/src/components/house/house-column.tsx index 120bf88..23d25e0 100644 --- a/src/components/house/house-column.tsx +++ b/src/components/house/house-column.tsx @@ -15,15 +15,12 @@ export const houseColumns: ColumnDef[] = [ }, }, { - accessorKey: 'members', + accessorFn: (row) => row.members.length ?? '', header: m.houses_page_ui_table_header_members(), meta: { thClass: 'w-1/6', mLabel: m.houses_page_ui_table_header_members(), }, - cell: ({ row }) => { - return row.original.members.length; - }, }, { accessorKey: 'createdAt', diff --git a/src/components/sidebar/nav-main.tsx b/src/components/sidebar/nav-main.tsx index 0484d3a..ba98eed 100644 --- a/src/components/sidebar/nav-main.tsx +++ b/src/components/sidebar/nav-main.tsx @@ -1,5 +1,6 @@ import { m } from '@paraglide/messages'; import { + CarrotIcon, CircuitryIcon, GaugeIcon, GearIcon, @@ -76,6 +77,11 @@ const NAV_MAIN = [ path: '/kanri/boxes', icon: PackageIcon, }, + { + title: m.nav_items(), + path: '/kanri/items', + icon: CarrotIcon, + }, { title: m.nav_logs(), path: '/kanri/logs', @@ -118,7 +124,7 @@ const NavMain = () => { { className="data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground cursor-pointer" tooltip={session.user.name} > - +
{session.user.name} @@ -102,7 +105,10 @@ const NavUser = () => { {/* Dropdown menu content */}
- +
diff --git a/src/components/ui/search-input.tsx b/src/components/ui/search-input.tsx index c580b31..0201c91 100644 --- a/src/components/ui/search-input.tsx +++ b/src/components/ui/search-input.tsx @@ -1,3 +1,4 @@ +import { m } from '@/paraglide/messages'; import { MagnifyingGlassIcon, XIcon } from '@phosphor-icons/react'; import { Button } from './button'; import { InputGroup, InputGroupAddon, InputGroupInput } from './input-group'; @@ -6,9 +7,15 @@ type SearchInputProps = { keywords: string; setKeyword: (value: string) => void; onChange: (e: React.ChangeEvent) => void; + placeholder?: string; }; -const SearchInput = ({ keywords, setKeyword, onChange }: SearchInputProps) => { +const SearchInput = ({ + keywords, + setKeyword, + onChange, + placeholder, +}: SearchInputProps) => { const onClearSearch = () => { setKeyword(''); }; @@ -17,7 +24,7 @@ const SearchInput = ({ keywords, setKeyword, onChange }: SearchInputProps) => { diff --git a/src/components/ui/select-user.tsx b/src/components/ui/select-user.tsx index bea7ef9..38e878f 100644 --- a/src/components/ui/select-user.tsx +++ b/src/components/ui/select-user.tsx @@ -2,23 +2,27 @@ import { cn } from '@lib/utils'; import { CaretDownIcon, MagnifyingGlassIcon } from '@phosphor-icons/react'; +import type { ReactNode } from 'react'; import { useCallback, useEffect, useRef, useState } from 'react'; +import AvatarUser, { AvatarUserType } from '../avatar/avatar-user'; +import { Button } from './button'; +import { + Item, + ItemContent, + ItemDescription, + ItemMedia, + ItemTitle, +} from './item'; -type SelectUserItem = { - id: string; - name: string; - email: string; -}; - -const userLabel = (u: { name: string; email: string }) => - `${u.name} - ${u.email}`; - -type SelectUserProps = { +export type SelectGenericProps = { value: string; - onValueChange: (userId: string) => void; - values: SelectUserItem[]; + onValueChange: (value: string) => void; + values: T[]; + getValue: (item: T) => string; + getItemLabel: (item: T) => string; + renderOption?: (item: T) => ReactNode; + filterOption?: (item: T, query: string) => boolean; placeholder?: string; - /** Khi truyền cùng onKeywordChange: tìm kiếm theo API (keyword gửi lên server) */ keyword?: string; onKeywordChange?: (value: string) => void; searchPlaceholder?: string; @@ -27,24 +31,33 @@ type SelectUserProps = { 'aria-invalid'?: boolean; disabled?: boolean; className?: string; - selectKey?: 'id' | 'email'; }; -export function SelectUser({ +const defaultFilter = + (getItemLabel: (item: T) => string) => + (item: T, query: string) => { + const q = query.trim().toLowerCase(); + return q === '' || getItemLabel(item).toLowerCase().includes(q); + }; + +export function SelectGeneric({ value, onValueChange, values, + getValue, + getItemLabel, + renderOption, + filterOption, placeholder, keyword, onKeywordChange, - searchPlaceholder = 'Tìm theo tên hoặc email...', + searchPlaceholder = 'Tìm kiếm...', name, id, 'aria-invalid': ariaInvalid, disabled = false, className, - selectKey = 'id', -}: SelectUserProps) { +}: SelectGenericProps) { const [open, setOpen] = useState(false); const [localQuery, setLocalQuery] = useState(''); const wrapperRef = useRef(null); @@ -54,24 +67,16 @@ export function SelectUser({ const searchValue = useServerSearch ? keyword : localQuery; const setSearchValue = useServerSearch ? onKeywordChange! : setLocalQuery; - const selectedUser = + const selectedItem = value != null && value !== '' - ? values.find((u) => u[selectKey] === value) + ? values.find((item) => getValue(item) === value) : null; - const displayValue = selectedUser ? userLabel(selectedUser) : ''; + const displayValue = selectedItem ? getItemLabel(selectedItem) : ''; + const filterFn = filterOption ?? defaultFilter(getItemLabel); const filtered = useServerSearch ? values - : (() => { - const q = localQuery.trim().toLowerCase(); - return q === '' - ? values - : values.filter( - (u) => - u.name.toLowerCase().includes(q) || - u.email.toLowerCase().includes(q), - ); - })(); + : values.filter((item) => filterFn(item, localQuery)); const close = useCallback(() => { setOpen(false); @@ -97,8 +102,8 @@ export function SelectUser({ return () => document.removeEventListener('mousedown', onMouseDown); }, [open, close]); - const handleSelect = (userId: string) => { - onValueChange(userId); + const handleSelect = (itemValue: string) => { + onValueChange(itemValue); close(); }; @@ -160,26 +165,31 @@ export function SelectUser({ Không có kết quả
) : ( - filtered.map((u) => ( - - )) + filtered.map((item) => { + const itemValue = getValue(item); + return ( + + ); + }) )}
@@ -187,3 +197,74 @@ export function SelectUser({
); } + +export type SelectUserItem = { + id: string; + name: string; + email: string; + image: string | null; + role: string | null; +}; + +const userLabel = (u: SelectUserItem) => `${u.name} - ${u.email}`; + +type SelectUserProps = Omit< + SelectGenericProps, + 'getValue' | 'getItemLabel' +> & { + values: SelectUserItem[]; + selectKey?: 'id' | 'email'; +}; + +/** Select dành cho User, tương thích code cũ. Dùng SelectGeneric cho đối tượng khác. */ +export function SelectUser({ + selectKey = 'id', + searchPlaceholder = 'Tìm theo tên hoặc email...', + ...rest +}: SelectUserProps) { + return ( + + {...rest} + getValue={(u) => u[selectKey]} + getItemLabel={userLabel} + renderOption={(item) => ( + + + + + + {item.name} + {item.email} + + + )} + searchPlaceholder={searchPlaceholder} + /> + ); +} + +export type SelectHouseItem = { + id: string; + name: string; +}; + +type SelectHouseProps = Omit< + SelectGenericProps, + 'getValue' | 'getItemLabel' +> & { + values: SelectHouseItem[]; +}; + +export function SelectHouse({ + searchPlaceholder = 'Tìm theo tên hoặc email...', + ...rest +}: SelectHouseProps) { + return ( + + {...rest} + getValue={(h) => h.id} + getItemLabel={(h: SelectHouseItem) => h.name} + searchPlaceholder={searchPlaceholder} + /> + ); +} diff --git a/src/components/ui/tag-input.tsx b/src/components/ui/tag-input.tsx new file mode 100644 index 0000000..32fd30a --- /dev/null +++ b/src/components/ui/tag-input.tsx @@ -0,0 +1,123 @@ +'use client'; + +import { XIcon } from '@phosphor-icons/react'; +import * as React from 'react'; + +import { Badge } from '@/components/ui/badge'; +import { Button } from '@/components/ui/button'; +import { Input } from '@/components/ui/input'; +import { cn } from '@lib/utils'; + +interface TagInputProps extends Omit< + React.InputHTMLAttributes, + 'onChange' | 'value' +> { + value?: string[]; + onChange?: (tags: string[]) => void; + maxTags?: number; + placeholder?: string; + 'aria-invalid'?: boolean; + disabled?: boolean; +} + +const TagInput = React.forwardRef( + ( + { + value: tags = [], + onChange, + maxTags, + placeholder = 'Add a tag', + disabled, + className, + 'aria-invalid': ariaInvalid, + ...props + }, + ref, + ) => { + const [inputValue, setInputValue] = React.useState(''); + const inputRef = React.useRef(null); + + const handleAddTag = () => { + if (inputValue.trim() !== '' && !tags.includes(inputValue.trim())) { + if (maxTags && tags.length >= maxTags) { + // Optionally show a toast or message that max tags limit is reached + return; + } + onChange?.([...tags, inputValue.trim()]); + setInputValue(''); + } + }; + + const handleRemoveTag = (tagToRemove: string) => { + onChange?.(tags.filter((tag) => tag !== tagToRemove)); + }; + + const handleInputChange = (e: React.ChangeEvent) => { + setInputValue(e.target.value); + }; + + const handleKeyDown = (e: React.KeyboardEvent) => { + if (e.key === 'Enter') { + e.preventDefault(); + handleAddTag(); + } else if ( + e.key === 'Backspace' && + inputValue === '' && + tags.length > 0 + ) { + e.preventDefault(); + handleRemoveTag(tags[tags.length - 1]); + } + }; + + return ( +
+ {tags.map((tag) => ( + + {tag} + {!disabled && ( + + )} + + ))} + = maxTags ? 'Max tags reached' : placeholder + } + className="flex-1 border-none bg-transparent shadow-none focus-visible:ring-0 px-1 h-6 min-w-20" + disabled={disabled || !!(maxTags && tags.length >= maxTags)} + {...props} + /> +
+ ); + }, +); +TagInput.displayName = 'TagInput'; + +export { TagInput }; diff --git a/src/components/ui/true-false.tsx b/src/components/ui/true-false.tsx new file mode 100644 index 0000000..86b4ec5 --- /dev/null +++ b/src/components/ui/true-false.tsx @@ -0,0 +1,37 @@ +import { cn } from '@/lib/utils'; +import { ChecksIcon, XIcon } from '@phosphor-icons/react'; + +type ComProps = { + value: boolean; + size?: 'xs' | 'sm' | 'md' | 'lg'; +}; + +const SIZE = { + xs: 10, + sm: 15, + md: 20, + lg: 30, +}; + +const TrueFalse = ({ value, size = 'sm' }: ComProps) => { + return ( +
+
+ +
+
+ +
+
+ ); +}; + +export default TrueFalse; diff --git a/src/generated/prisma/internal/class.ts b/src/generated/prisma/internal/class.ts index 5dc1e93..04b467e 100644 --- a/src/generated/prisma/internal/class.ts +++ b/src/generated/prisma/internal/class.ts @@ -20,7 +20,7 @@ const config: runtime.GetPrismaClientConfig = { "clientVersion": "7.4.1", "engineVersion": "55ae170b1ced7fc6ed07a15f110549408c501bb3", "activeProvider": "postgresql", - "inlineSchema": "generator client {\n provider = \"prisma-client\"\n output = \"../src/generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\nmodel User {\n id String @id @default(uuid())\n name String\n email String\n emailVerified Boolean @default(false)\n image String?\n createdAt DateTime @default(now()) @db.Timestamptz\n updatedAt DateTime @updatedAt @db.Timestamptz\n sessions Session[]\n accounts Account[]\n audit Audit[]\n notification Notification[]\n\n role String?\n banned Boolean? @default(false)\n banReason String?\n banExpires DateTime?\n\n members Member[]\n invitations Invitation[]\n boxes Box[]\n items Item[]\n\n @@unique([email])\n @@map(\"user\")\n}\n\nmodel Session {\n id String @id @default(uuid())\n expiresAt DateTime @db.Timestamptz\n token String\n createdAt DateTime @default(now()) @db.Timestamptz\n updatedAt DateTime @updatedAt @db.Timestamptz\n ipAddress String?\n userAgent String?\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n impersonatedBy String?\n\n activeOrganizationId String?\n\n @@unique([token])\n @@index([userId])\n @@map(\"session\")\n}\n\nmodel Account {\n id String @id @default(uuid())\n accountId String\n providerId String\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n accessToken String?\n refreshToken String?\n idToken String?\n accessTokenExpiresAt DateTime?\n refreshTokenExpiresAt DateTime?\n scope String?\n password String?\n createdAt DateTime @default(now()) @db.Timestamptz\n updatedAt DateTime @updatedAt @db.Timestamptz\n\n @@index([userId])\n @@map(\"account\")\n}\n\nmodel Verification {\n id String @id @default(uuid())\n identifier String\n value String\n expiresAt DateTime\n createdAt DateTime @default(now()) @db.Timestamptz\n updatedAt DateTime @updatedAt @db.Timestamptz\n\n @@index([identifier])\n @@map(\"verification\")\n}\n\nmodel House {\n id String @id @default(uuid())\n name String\n slug String\n logo String?\n createdAt DateTime @db.Timestamptz\n metadata String?\n color String? @default(\"#000000\")\n members Member[]\n invitations Invitation[]\n boxes Box[]\n\n @@unique([slug])\n @@map(\"house\")\n}\n\nmodel Member {\n id String @id @default(uuid())\n organizationId String\n house House @relation(fields: [organizationId], references: [id], onDelete: Cascade)\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n role String @default(\"member\")\n createdAt DateTime @db.Timestamptz\n\n @@index([organizationId])\n @@index([userId])\n @@map(\"member\")\n}\n\nmodel Invitation {\n id String @id @default(uuid())\n organizationId String\n house House @relation(fields: [organizationId], references: [id], onDelete: Cascade)\n email String\n role String?\n status String @default(\"pending\")\n expiresAt DateTime @db.Timestamptz\n createdAt DateTime @default(now()) @db.Timestamptz\n inviterId String\n user User @relation(fields: [inviterId], references: [id], onDelete: Cascade)\n\n @@index([organizationId])\n @@index([email])\n @@map(\"invitation\")\n}\n\nmodel Setting {\n id String @id @default(uuid())\n key String @unique\n value String\n description String\n relation String @default(\"admin\")\n\n createdAt DateTime @default(now()) @db.Timestamptz\n updatedAt DateTime @updatedAt @db.Timestamptz\n\n @@map(\"setting\")\n}\n\nmodel Audit {\n id String @id @default(uuid())\n userId String\n action String\n tableName String\n recordId String\n oldValue String?\n newValue String?\n createdAt DateTime @default(now()) @db.Timestamptz\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@map(\"audit\")\n}\n\nmodel Notification {\n id String @id @default(uuid())\n userId String\n\n title String\n message String\n type String @default(\"system\")\n\n link String?\n metadata String?\n\n createdAt DateTime @default(now()) @db.Timestamptz\n readAt DateTime? @db.Timestamptz\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([userId, readAt])\n @@index([readAt])\n @@map(\"notification\")\n}\n\nmodel Box {\n id String @id @default(uuid())\n houseId String?\n icon String\n color String\n name String @unique\n description String?\n tags String[] @default([])\n createrId String\n\n createdAt DateTime @default(now()) @db.Timestamptz\n updatedAt DateTime @updatedAt @db.Timestamptz\n deletedAt DateTime?\n isPrivate Boolean @default(false)\n\n items Item[]\n house House? @relation(fields: [houseId], references: [id], onDelete: SetNull)\n user User @relation(fields: [createrId], references: [id], onDelete: Cascade)\n}\n\nmodel Item {\n id String @id @default(uuid())\n createrId String\n boxId String?\n image String\n name String\n description String?\n price String?\n tags String[] @default([])\n quantity Int\n expiresAt DateTime @default(now()) @db.Timestamptz\n createdAt DateTime @default(now()) @db.Timestamptz\n updatedAt DateTime @updatedAt @db.Timestamptz\n deletedAt DateTime?\n\n user User @relation(fields: [createrId], references: [id], onDelete: Cascade)\n box Box? @relation(fields: [boxId], references: [id], onDelete: SetNull)\n}\n", + "inlineSchema": "generator client {\n provider = \"prisma-client\"\n output = \"../src/generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\nmodel User {\n id String @id @default(uuid())\n name String\n email String\n emailVerified Boolean @default(false)\n image String?\n createdAt DateTime @default(now()) @db.Timestamptz\n updatedAt DateTime @updatedAt @db.Timestamptz\n sessions Session[]\n accounts Account[]\n audit Audit[]\n notification Notification[]\n\n role String?\n banned Boolean? @default(false)\n banReason String?\n banExpires DateTime?\n\n members Member[]\n invitations Invitation[]\n boxes Box[]\n items Item[]\n\n @@unique([email])\n @@map(\"user\")\n}\n\nmodel Session {\n id String @id @default(uuid())\n expiresAt DateTime @db.Timestamptz\n token String\n createdAt DateTime @default(now()) @db.Timestamptz\n updatedAt DateTime @updatedAt @db.Timestamptz\n ipAddress String?\n userAgent String?\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n impersonatedBy String?\n\n activeOrganizationId String?\n\n @@unique([token])\n @@index([userId])\n @@map(\"session\")\n}\n\nmodel Account {\n id String @id @default(uuid())\n accountId String\n providerId String\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n accessToken String?\n refreshToken String?\n idToken String?\n accessTokenExpiresAt DateTime?\n refreshTokenExpiresAt DateTime?\n scope String?\n password String?\n createdAt DateTime @default(now()) @db.Timestamptz\n updatedAt DateTime @updatedAt @db.Timestamptz\n\n @@index([userId])\n @@map(\"account\")\n}\n\nmodel Verification {\n id String @id @default(uuid())\n identifier String\n value String\n expiresAt DateTime\n createdAt DateTime @default(now()) @db.Timestamptz\n updatedAt DateTime @updatedAt @db.Timestamptz\n\n @@index([identifier])\n @@map(\"verification\")\n}\n\nmodel House {\n id String @id @default(uuid())\n name String\n slug String\n logo String?\n createdAt DateTime @db.Timestamptz\n metadata String?\n color String? @default(\"#000000\")\n members Member[]\n invitations Invitation[]\n boxes Box[]\n\n @@unique([slug])\n @@map(\"house\")\n}\n\nmodel Member {\n id String @id @default(uuid())\n organizationId String\n house House @relation(fields: [organizationId], references: [id], onDelete: Cascade)\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n role String @default(\"member\")\n createdAt DateTime @db.Timestamptz\n\n @@index([organizationId])\n @@index([userId])\n @@map(\"member\")\n}\n\nmodel Invitation {\n id String @id @default(uuid())\n organizationId String\n house House @relation(fields: [organizationId], references: [id], onDelete: Cascade)\n email String\n role String?\n status String @default(\"pending\")\n expiresAt DateTime @db.Timestamptz\n createdAt DateTime @default(now()) @db.Timestamptz\n inviterId String\n user User @relation(fields: [inviterId], references: [id], onDelete: Cascade)\n\n @@index([organizationId])\n @@index([email])\n @@map(\"invitation\")\n}\n\nmodel Setting {\n id String @id @default(uuid())\n key String @unique\n value String\n description String\n relation String @default(\"admin\")\n\n createdAt DateTime @default(now()) @db.Timestamptz\n updatedAt DateTime @updatedAt @db.Timestamptz\n\n @@map(\"setting\")\n}\n\nmodel Audit {\n id String @id @default(uuid())\n userId String\n action String\n tableName String\n recordId String\n oldValue String?\n newValue String?\n createdAt DateTime @default(now()) @db.Timestamptz\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@map(\"audit\")\n}\n\nmodel Notification {\n id String @id @default(uuid())\n userId String\n\n title String\n message String\n type String @default(\"system\")\n\n link String?\n metadata String?\n\n createdAt DateTime @default(now()) @db.Timestamptz\n readAt DateTime? @db.Timestamptz\n\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@index([userId, readAt])\n @@index([readAt])\n @@map(\"notification\")\n}\n\nmodel Box {\n id String @id @default(uuid())\n name String\n description String?\n tags String[] @default([])\n color String? @default(\"#000000\")\n houseId String?\n createrId String\n\n createdAt DateTime @default(now()) @db.Timestamptz\n updatedAt DateTime @updatedAt @db.Timestamptz\n deletedAt DateTime? @db.Timestamptz\n isPrivate Boolean @default(false)\n\n items Item[]\n house House? @relation(fields: [houseId], references: [id], onDelete: SetNull)\n user User @relation(fields: [createrId], references: [id], onDelete: Cascade)\n\n @@index([houseId])\n @@index([createrId])\n @@index([isPrivate])\n @@index([tags])\n @@map(\"box\")\n}\n\nmodel Item {\n id String @id @default(uuid())\n createrId String\n boxId String?\n image String\n name String\n description String?\n price String?\n tags String[] @default([])\n quantity Int\n expiresAt DateTime @default(now()) @db.Timestamptz\n createdAt DateTime @default(now()) @db.Timestamptz\n updatedAt DateTime @updatedAt @db.Timestamptz\n deletedAt DateTime? @db.Timestamptz\n\n user User @relation(fields: [createrId], references: [id], onDelete: Cascade)\n box Box? @relation(fields: [boxId], references: [id], onDelete: SetNull)\n\n @@index([createrId])\n @@index([boxId])\n @@index([tags])\n @@map(\"item\")\n}\n", "runtimeDataModel": { "models": {}, "enums": {}, @@ -32,10 +32,10 @@ const config: runtime.GetPrismaClientConfig = { } } -config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"emailVerified\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"image\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"sessions\",\"kind\":\"object\",\"type\":\"Session\",\"relationName\":\"SessionToUser\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToUser\"},{\"name\":\"audit\",\"kind\":\"object\",\"type\":\"Audit\",\"relationName\":\"AuditToUser\"},{\"name\":\"notification\",\"kind\":\"object\",\"type\":\"Notification\",\"relationName\":\"NotificationToUser\"},{\"name\":\"role\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"banned\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"banReason\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"banExpires\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"members\",\"kind\":\"object\",\"type\":\"Member\",\"relationName\":\"MemberToUser\"},{\"name\":\"invitations\",\"kind\":\"object\",\"type\":\"Invitation\",\"relationName\":\"InvitationToUser\"},{\"name\":\"boxes\",\"kind\":\"object\",\"type\":\"Box\",\"relationName\":\"BoxToUser\"},{\"name\":\"items\",\"kind\":\"object\",\"type\":\"Item\",\"relationName\":\"ItemToUser\"}],\"dbName\":\"user\"},\"Session\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"SessionToUser\"},{\"name\":\"impersonatedBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"activeOrganizationId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":\"session\"},\"Account\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accountId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"providerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"AccountToUser\"},{\"name\":\"accessToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"refreshToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"idToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accessTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"refreshTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"account\"},\"Verification\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"identifier\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"verification\"},\"House\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"logo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"metadata\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"color\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"members\",\"kind\":\"object\",\"type\":\"Member\",\"relationName\":\"HouseToMember\"},{\"name\":\"invitations\",\"kind\":\"object\",\"type\":\"Invitation\",\"relationName\":\"HouseToInvitation\"},{\"name\":\"boxes\",\"kind\":\"object\",\"type\":\"Box\",\"relationName\":\"BoxToHouse\"}],\"dbName\":\"house\"},\"Member\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"organizationId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"house\",\"kind\":\"object\",\"type\":\"House\",\"relationName\":\"HouseToMember\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"MemberToUser\"},{\"name\":\"role\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"member\"},\"Invitation\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"organizationId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"house\",\"kind\":\"object\",\"type\":\"House\",\"relationName\":\"HouseToInvitation\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"inviterId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"InvitationToUser\"}],\"dbName\":\"invitation\"},\"Setting\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"relation\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"setting\"},\"Audit\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"action\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tableName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"recordId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"oldValue\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"newValue\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"AuditToUser\"}],\"dbName\":\"audit\"},\"Notification\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"message\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"link\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"metadata\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"readAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"NotificationToUser\"}],\"dbName\":\"notification\"},\"Box\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"houseId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"icon\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"color\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tags\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createrId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"isPrivate\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"items\",\"kind\":\"object\",\"type\":\"Item\",\"relationName\":\"BoxToItem\"},{\"name\":\"house\",\"kind\":\"object\",\"type\":\"House\",\"relationName\":\"BoxToHouse\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"BoxToUser\"}],\"dbName\":null},\"Item\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createrId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"boxId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"image\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"price\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tags\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"quantity\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ItemToUser\"},{\"name\":\"box\",\"kind\":\"object\",\"type\":\"Box\",\"relationName\":\"BoxToItem\"}],\"dbName\":null}},\"enums\":{},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"emailVerified\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"image\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"sessions\",\"kind\":\"object\",\"type\":\"Session\",\"relationName\":\"SessionToUser\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToUser\"},{\"name\":\"audit\",\"kind\":\"object\",\"type\":\"Audit\",\"relationName\":\"AuditToUser\"},{\"name\":\"notification\",\"kind\":\"object\",\"type\":\"Notification\",\"relationName\":\"NotificationToUser\"},{\"name\":\"role\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"banned\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"banReason\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"banExpires\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"members\",\"kind\":\"object\",\"type\":\"Member\",\"relationName\":\"MemberToUser\"},{\"name\":\"invitations\",\"kind\":\"object\",\"type\":\"Invitation\",\"relationName\":\"InvitationToUser\"},{\"name\":\"boxes\",\"kind\":\"object\",\"type\":\"Box\",\"relationName\":\"BoxToUser\"},{\"name\":\"items\",\"kind\":\"object\",\"type\":\"Item\",\"relationName\":\"ItemToUser\"}],\"dbName\":\"user\"},\"Session\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"SessionToUser\"},{\"name\":\"impersonatedBy\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"activeOrganizationId\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":\"session\"},\"Account\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accountId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"providerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"AccountToUser\"},{\"name\":\"accessToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"refreshToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"idToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accessTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"refreshTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"account\"},\"Verification\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"identifier\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"verification\"},\"House\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"logo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"metadata\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"color\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"members\",\"kind\":\"object\",\"type\":\"Member\",\"relationName\":\"HouseToMember\"},{\"name\":\"invitations\",\"kind\":\"object\",\"type\":\"Invitation\",\"relationName\":\"HouseToInvitation\"},{\"name\":\"boxes\",\"kind\":\"object\",\"type\":\"Box\",\"relationName\":\"BoxToHouse\"}],\"dbName\":\"house\"},\"Member\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"organizationId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"house\",\"kind\":\"object\",\"type\":\"House\",\"relationName\":\"HouseToMember\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"MemberToUser\"},{\"name\":\"role\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"member\"},\"Invitation\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"organizationId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"house\",\"kind\":\"object\",\"type\":\"House\",\"relationName\":\"HouseToInvitation\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"inviterId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"InvitationToUser\"}],\"dbName\":\"invitation\"},\"Setting\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"relation\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"setting\"},\"Audit\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"action\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tableName\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"recordId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"oldValue\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"newValue\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"AuditToUser\"}],\"dbName\":\"audit\"},\"Notification\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"message\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"link\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"metadata\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"readAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"NotificationToUser\"}],\"dbName\":\"notification\"},\"Box\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tags\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"color\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"houseId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createrId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"isPrivate\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"items\",\"kind\":\"object\",\"type\":\"Item\",\"relationName\":\"BoxToItem\"},{\"name\":\"house\",\"kind\":\"object\",\"type\":\"House\",\"relationName\":\"BoxToHouse\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"BoxToUser\"}],\"dbName\":\"box\"},\"Item\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createrId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"boxId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"image\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"price\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tags\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"quantity\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ItemToUser\"},{\"name\":\"box\",\"kind\":\"object\",\"type\":\"Box\",\"relationName\":\"BoxToItem\"}],\"dbName\":\"item\"}},\"enums\":{},\"types\":{}}") config.parameterizationSchema = { - strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"user\",\"sessions\",\"accounts\",\"audit\",\"notification\",\"members\",\"house\",\"invitations\",\"box\",\"items\",\"_count\",\"boxes\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"data\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"create\",\"update\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"having\",\"_min\",\"_max\",\"User.groupBy\",\"User.aggregate\",\"Session.findUnique\",\"Session.findUniqueOrThrow\",\"Session.findFirst\",\"Session.findFirstOrThrow\",\"Session.findMany\",\"Session.createOne\",\"Session.createMany\",\"Session.createManyAndReturn\",\"Session.updateOne\",\"Session.updateMany\",\"Session.updateManyAndReturn\",\"Session.upsertOne\",\"Session.deleteOne\",\"Session.deleteMany\",\"Session.groupBy\",\"Session.aggregate\",\"Account.findUnique\",\"Account.findUniqueOrThrow\",\"Account.findFirst\",\"Account.findFirstOrThrow\",\"Account.findMany\",\"Account.createOne\",\"Account.createMany\",\"Account.createManyAndReturn\",\"Account.updateOne\",\"Account.updateMany\",\"Account.updateManyAndReturn\",\"Account.upsertOne\",\"Account.deleteOne\",\"Account.deleteMany\",\"Account.groupBy\",\"Account.aggregate\",\"Verification.findUnique\",\"Verification.findUniqueOrThrow\",\"Verification.findFirst\",\"Verification.findFirstOrThrow\",\"Verification.findMany\",\"Verification.createOne\",\"Verification.createMany\",\"Verification.createManyAndReturn\",\"Verification.updateOne\",\"Verification.updateMany\",\"Verification.updateManyAndReturn\",\"Verification.upsertOne\",\"Verification.deleteOne\",\"Verification.deleteMany\",\"Verification.groupBy\",\"Verification.aggregate\",\"House.findUnique\",\"House.findUniqueOrThrow\",\"House.findFirst\",\"House.findFirstOrThrow\",\"House.findMany\",\"House.createOne\",\"House.createMany\",\"House.createManyAndReturn\",\"House.updateOne\",\"House.updateMany\",\"House.updateManyAndReturn\",\"House.upsertOne\",\"House.deleteOne\",\"House.deleteMany\",\"House.groupBy\",\"House.aggregate\",\"Member.findUnique\",\"Member.findUniqueOrThrow\",\"Member.findFirst\",\"Member.findFirstOrThrow\",\"Member.findMany\",\"Member.createOne\",\"Member.createMany\",\"Member.createManyAndReturn\",\"Member.updateOne\",\"Member.updateMany\",\"Member.updateManyAndReturn\",\"Member.upsertOne\",\"Member.deleteOne\",\"Member.deleteMany\",\"Member.groupBy\",\"Member.aggregate\",\"Invitation.findUnique\",\"Invitation.findUniqueOrThrow\",\"Invitation.findFirst\",\"Invitation.findFirstOrThrow\",\"Invitation.findMany\",\"Invitation.createOne\",\"Invitation.createMany\",\"Invitation.createManyAndReturn\",\"Invitation.updateOne\",\"Invitation.updateMany\",\"Invitation.updateManyAndReturn\",\"Invitation.upsertOne\",\"Invitation.deleteOne\",\"Invitation.deleteMany\",\"Invitation.groupBy\",\"Invitation.aggregate\",\"Setting.findUnique\",\"Setting.findUniqueOrThrow\",\"Setting.findFirst\",\"Setting.findFirstOrThrow\",\"Setting.findMany\",\"Setting.createOne\",\"Setting.createMany\",\"Setting.createManyAndReturn\",\"Setting.updateOne\",\"Setting.updateMany\",\"Setting.updateManyAndReturn\",\"Setting.upsertOne\",\"Setting.deleteOne\",\"Setting.deleteMany\",\"Setting.groupBy\",\"Setting.aggregate\",\"Audit.findUnique\",\"Audit.findUniqueOrThrow\",\"Audit.findFirst\",\"Audit.findFirstOrThrow\",\"Audit.findMany\",\"Audit.createOne\",\"Audit.createMany\",\"Audit.createManyAndReturn\",\"Audit.updateOne\",\"Audit.updateMany\",\"Audit.updateManyAndReturn\",\"Audit.upsertOne\",\"Audit.deleteOne\",\"Audit.deleteMany\",\"Audit.groupBy\",\"Audit.aggregate\",\"Notification.findUnique\",\"Notification.findUniqueOrThrow\",\"Notification.findFirst\",\"Notification.findFirstOrThrow\",\"Notification.findMany\",\"Notification.createOne\",\"Notification.createMany\",\"Notification.createManyAndReturn\",\"Notification.updateOne\",\"Notification.updateMany\",\"Notification.updateManyAndReturn\",\"Notification.upsertOne\",\"Notification.deleteOne\",\"Notification.deleteMany\",\"Notification.groupBy\",\"Notification.aggregate\",\"Box.findUnique\",\"Box.findUniqueOrThrow\",\"Box.findFirst\",\"Box.findFirstOrThrow\",\"Box.findMany\",\"Box.createOne\",\"Box.createMany\",\"Box.createManyAndReturn\",\"Box.updateOne\",\"Box.updateMany\",\"Box.updateManyAndReturn\",\"Box.upsertOne\",\"Box.deleteOne\",\"Box.deleteMany\",\"Box.groupBy\",\"Box.aggregate\",\"Item.findUnique\",\"Item.findUniqueOrThrow\",\"Item.findFirst\",\"Item.findFirstOrThrow\",\"Item.findMany\",\"Item.createOne\",\"Item.createMany\",\"Item.createManyAndReturn\",\"Item.updateOne\",\"Item.updateMany\",\"Item.updateManyAndReturn\",\"Item.upsertOne\",\"Item.deleteOne\",\"Item.deleteMany\",\"_avg\",\"_sum\",\"Item.groupBy\",\"Item.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"createrId\",\"boxId\",\"image\",\"name\",\"description\",\"price\",\"tags\",\"quantity\",\"expiresAt\",\"createdAt\",\"updatedAt\",\"deletedAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"has\",\"hasEvery\",\"hasSome\",\"contains\",\"startsWith\",\"endsWith\",\"houseId\",\"icon\",\"color\",\"isPrivate\",\"userId\",\"title\",\"message\",\"type\",\"link\",\"metadata\",\"readAt\",\"action\",\"tableName\",\"recordId\",\"oldValue\",\"newValue\",\"key\",\"value\",\"relation\",\"organizationId\",\"email\",\"role\",\"status\",\"inviterId\",\"slug\",\"logo\",\"every\",\"some\",\"none\",\"identifier\",\"accountId\",\"providerId\",\"accessToken\",\"refreshToken\",\"idToken\",\"accessTokenExpiresAt\",\"refreshTokenExpiresAt\",\"scope\",\"password\",\"token\",\"ipAddress\",\"userAgent\",\"impersonatedBy\",\"activeOrganizationId\",\"emailVerified\",\"banned\",\"banReason\",\"banExpires\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"push\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), - graph: "xgVmwAEWBAAA_AIAIAUAAP0CACAGAAD-AgAgBwAA_wIAIAgAAO0CACAKAADuAgAgDAAAgAMAIA4AAO8CACDXAQAA-AIAMNgBAAA3ABDZAQAA-AIAMNoBAQAAAAHdAQEA7AIAId4BAQDmAgAh5AFAAOcCACHlAUAA5wIAIYkCAQAAAAGKAgEA7AIAIaECIAD5AgAhogIgAPoCACGjAgEA7AIAIaQCQAD7AgAhAQAAAAEAIA4DAACDAwAg1wEAAI0DADDYAQAAAwAQ2QEAAI0DADDaAQEA5gIAIeMBQADnAgAh5AFAAOcCACHlAUAA5wIAIfkBAQDmAgAhnAIBAOYCACGdAgEA7AIAIZ4CAQDsAgAhnwIBAOwCACGgAgEA7AIAIQUDAAD8BAAgnQIAAI4DACCeAgAAjgMAIJ8CAACOAwAgoAIAAI4DACAOAwAAgwMAINcBAACNAwAw2AEAAAMAENkBAACNAwAw2gEBAAAAAeMBQADnAgAh5AFAAOcCACHlAUAA5wIAIfkBAQDmAgAhnAIBAAAAAZ0CAQDsAgAhngIBAOwCACGfAgEA7AIAIaACAQDsAgAhAwAAAAMAIAEAAAQAMAIAAAUAIBEDAACDAwAg1wEAAIwDADDYAQAABwAQ2QEAAIwDADDaAQEA5gIAIeQBQADnAgAh5QFAAOcCACH5AQEA5gIAIZMCAQDmAgAhlAIBAOYCACGVAgEA7AIAIZYCAQDsAgAhlwIBAOwCACGYAkAA-wIAIZkCQAD7AgAhmgIBAOwCACGbAgEA7AIAIQgDAAD8BAAglQIAAI4DACCWAgAAjgMAIJcCAACOAwAgmAIAAI4DACCZAgAAjgMAIJoCAACOAwAgmwIAAI4DACARAwAAgwMAINcBAACMAwAw2AEAAAcAENkBAACMAwAw2gEBAAAAAeQBQADnAgAh5QFAAOcCACH5AQEA5gIAIZMCAQDmAgAhlAIBAOYCACGVAgEA7AIAIZYCAQDsAgAhlwIBAOwCACGYAkAA-wIAIZkCQAD7AgAhmgIBAOwCACGbAgEA7AIAIQMAAAAHACABAAAIADACAAAJACAMAwAAgwMAINcBAACLAwAw2AEAAAsAENkBAACLAwAw2gEBAOYCACHkAUAA5wIAIfkBAQDmAgAhgAIBAOYCACGBAgEA5gIAIYICAQDmAgAhgwIBAOwCACGEAgEA7AIAIQMDAAD8BAAggwIAAI4DACCEAgAAjgMAIAwDAACDAwAg1wEAAIsDADDYAQAACwAQ2QEAAIsDADDaAQEAAAAB5AFAAOcCACH5AQEA5gIAIYACAQDmAgAhgQIBAOYCACGCAgEA5gIAIYMCAQDsAgAhhAIBAOwCACEDAAAACwAgAQAADAAwAgAADQAgDQMAAIMDACDXAQAAigMAMNgBAAAPABDZAQAAigMAMNoBAQDmAgAh5AFAAOcCACH5AQEA5gIAIfoBAQDmAgAh-wEBAOYCACH8AQEA5gIAIf0BAQDsAgAh_gEBAOwCACH_AUAA-wIAIQQDAAD8BAAg_QEAAI4DACD-AQAAjgMAIP8BAACOAwAgDQMAAIMDACDXAQAAigMAMNgBAAAPABDZAQAAigMAMNoBAQAAAAHkAUAA5wIAIfkBAQDmAgAh-gEBAOYCACH7AQEA5gIAIfwBAQDmAgAh_QEBAOwCACH-AQEA7AIAIf8BQAD7AgAhAwAAAA8AIAEAABAAMAIAABEAIAoDAACDAwAgCQAAiAMAINcBAACJAwAw2AEAABMAENkBAACJAwAw2gEBAOYCACHkAUAA5wIAIfkBAQDmAgAhiAIBAOYCACGKAgEA5gIAIQIDAAD8BAAgCQAA_gQAIAoDAACDAwAgCQAAiAMAINcBAACJAwAw2AEAABMAENkBAACJAwAw2gEBAAAAAeQBQADnAgAh-QEBAOYCACGIAgEA5gIAIYoCAQDmAgAhAwAAABMAIAEAABQAMAIAABUAIAMAAAATACABAAAUADACAAAVACANAwAAgwMAIAkAAIgDACDXAQAAhwMAMNgBAAAYABDZAQAAhwMAMNoBAQDmAgAh4wFAAOcCACHkAUAA5wIAIYgCAQDmAgAhiQIBAOYCACGKAgEA7AIAIYsCAQDmAgAhjAIBAOYCACEDAwAA_AQAIAkAAP4EACCKAgAAjgMAIA0DAACDAwAgCQAAiAMAINcBAACHAwAw2AEAABgAENkBAACHAwAw2gEBAAAAAeMBQADnAgAh5AFAAOcCACGIAgEA5gIAIYkCAQDmAgAhigIBAOwCACGLAgEA5gIAIYwCAQDmAgAhAwAAABgAIAEAABkAMAIAABoAIBIDAACDAwAgCQAAhgMAIAwAAIADACDXAQAAhQMAMNgBAAAcABDZAQAAhQMAMNoBAQDmAgAh2wEBAOYCACHeAQEA5gIAId8BAQDsAgAh4QEAAM4CACDkAUAA5wIAIeUBQADnAgAh5gFAAPsCACH1AQEA7AIAIfYBAQDmAgAh9wEBAOYCACH4ASAA-QIAIQYDAAD8BAAgCQAA_gQAIAwAAPsEACDfAQAAjgMAIOYBAACOAwAg9QEAAI4DACASAwAAgwMAIAkAAIYDACAMAACAAwAg1wEAAIUDADDYAQAAHAAQ2QEAAIUDADDaAQEAAAAB2wEBAOYCACHeAQEAAAAB3wEBAOwCACHhAQAAzgIAIOQBQADnAgAh5QFAAOcCACHmAUAA-wIAIfUBAQDsAgAh9gEBAOYCACH3AQEA5gIAIfgBIAD5AgAhAwAAABwAIAEAAB0AMAIAAB4AIBIDAACDAwAgCwAAhAMAINcBAACBAwAw2AEAACAAENkBAACBAwAw2gEBAOYCACHbAQEA5gIAIdwBAQDsAgAh3QEBAOYCACHeAQEA5gIAId8BAQDsAgAh4AEBAOwCACHhAQAAzgIAIOIBAgCCAwAh4wFAAOcCACHkAUAA5wIAIeUBQADnAgAh5gFAAPsCACEGAwAA_AQAIAsAAP0EACDcAQAAjgMAIN8BAACOAwAg4AEAAI4DACDmAQAAjgMAIBIDAACDAwAgCwAAhAMAINcBAACBAwAw2AEAACAAENkBAACBAwAw2gEBAAAAAdsBAQDmAgAh3AEBAOwCACHdAQEA5gIAId4BAQDmAgAh3wEBAOwCACHgAQEA7AIAIeEBAADOAgAg4gECAIIDACHjAUAA5wIAIeQBQADnAgAh5QFAAOcCACHmAUAA-wIAIQMAAAAgACABAAAhADACAAAiACABAAAAHAAgDQgAAO0CACAKAADuAgAgDgAA7wIAINcBAADrAgAw2AEAACUAENkBAADrAgAw2gEBAOYCACHeAQEA5gIAIeQBQADnAgAh9wEBAOwCACH-AQEA7AIAIY0CAQDmAgAhjgIBAOwCACEBAAAAJQAgAQAAACAAIAEAAAATACABAAAAGAAgAQAAABwAIAMAAAAYACABAAAZADACAAAaACADAAAAHAAgAQAAHQAwAgAAHgAgAwAAACAAIAEAACEAMAIAACIAIAEAAAADACABAAAABwAgAQAAAAsAIAEAAAAPACABAAAAEwAgAQAAABgAIAEAAAAcACABAAAAIAAgAQAAAAEAIBYEAAD8AgAgBQAA_QIAIAYAAP4CACAHAAD_AgAgCAAA7QIAIAoAAO4CACAMAACAAwAgDgAA7wIAINcBAAD4AgAw2AEAADcAENkBAAD4AgAw2gEBAOYCACHdAQEA7AIAId4BAQDmAgAh5AFAAOcCACHlAUAA5wIAIYkCAQDmAgAhigIBAOwCACGhAiAA-QIAIaICIAD6AgAhowIBAOwCACGkAkAA-wIAIQ0EAAD3BAAgBQAA-AQAIAYAAPkEACAHAAD6BAAgCAAA_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_gEBAOwCACGNAgEAAAABjgIBAOwCACEBAAAAkgEAIAEAAACSAQAgBggAAP8DACAKAACABAAgDgAAgQQAIPcBAACOAwAg_gEAAI4DACCOAgAAjgMAIAMAAAAlACABAACVAQAwAgAAkgEAIAMAAAAlACABAACVAQAwAgAAkgEAIAMAAAAlACABAACVAQAwAgAAkgEAIAoIAAD8AwAgCgAA_QMAIA4AAP4DACDaAQEAAAAB3gEBAAAAAeQBQAAAAAH3AQEAAAAB_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-QEBAAAAAfoBAQAAAAH7AQEAAAAB_AEBAAAAAf0BAQAAAAH-AQEAAAAB_wFAAAAAAQEUAACKAgAgCdoBAQAAAAHkAUAAAAAB-QEBAAAAAfoBAQAAAAH7AQEAAAAB_AEBAAAAAf0BAQAAAAH-AQEAAAAB_wFAAAAAAQEUAACMAgAwARQAAIwCADAKAwAAugMAINoBAQCUAwAh5AFAAJgDACH5AQEAlAMAIfoBAQCUAwAh-wEBAJQDACH8AQEAlAMAIf0BAQCVAwAh_gEBAJUDACH_AUAAmQMAIQIAAAARACAUAACPAgAgCdoBAQCUAwAh5AFAAJgDACH5AQEAlAMAIfoBAQCUAwAh-wEBAJQDACH8AQEAlAMAIf0BAQCVAwAh_gEBAJUDACH_AUAAmQMAIQIAAAAPACAUAACRAgAgAgAAAA8AIBQAAJECACADAAAAEQAgGwAAigIAIBwAAI8CACABAAAAEQAgAQAAAA8AIAYNAAC3AwAgIQAAuQMAICIAALgDACD9AQAAjgMAIP4BAACOAwAg_wEAAI4DACAM1wEAAOICADDYAQAAmAIAENkBAADiAgAw2gEBAMwCACHkAUAA0AIAIfkBAQDMAgAh-gEBAMwCACH7AQEAzAIAIfwBAQDMAgAh_QEBAM0CACH-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_XAQAA3gIAMNgBAACwAgAQ2QEAAN4CADDaAQEAzAIAIdsBAQDMAgAh3gEBAMwCACHfAQEAzQIAIeEBAADOAgAg5AFAANACACHlAUAA0AIAIeYBQADRAgAh9QEBAM0CACH2AQEAzAIAIfcBAQDMAgAh-AEgAN8CACEFDQAA1gIAICEAAOECACAiAADhAgAg5wEgAAAAAe4BIADgAgAhBQ0AANYCACAhAADhAgAgIgAA4QIAIOcBIAAAAAHuASAA4AIAIQLnASAAAAAB7gEgAOECACEM1wEAAOICADDYAQAAmAIAENkBAADiAgAw2gEBAMwCACHkAUAA0AIAIfkBAQDMAgAh-gEBAMwCACH7AQEAzAIAIfwBAQDMAgAh_QEBAM0CACH-AQEAzQIAIf8BQADRAgAhC9cBAADjAgAw2AEAAIICABDZAQAA4wIAMNoBAQDMAgAh5AFAANACACH5AQEAzAIAIYACAQDMAgAhgQIBAMwCACGCAgEAzAIAIYMCAQDNAgAhhAIBAM0CACEK1wEAAOQCADDYAQAA7AEAENkBAADkAgAw2gEBAMwCACHfAQEAzAIAIeQBQADQAgAh5QFAANACACGFAgEAzAIAIYYCAQDMAgAhhwIBAMwCACEK1wEAAOUCADDYAQAA2QEAENkBAADlAgAw2gEBAOYCACHfAQEA5gIAIeQBQADnAgAh5QFAAOcCACGFAgEA5gIAIYYCAQDmAgAhhwIBAOYCACEL5wEBAAAAAegBAQAAAATpAQEAAAAE6gEBAAAAAesBAQAAAAHsAQEAAAAB7QEBAAAAAe4BAQDdAgAh8gEBAAAAAfMBAQAAAAH0AQEAAAABCOcBQAAAAAHoAUAAAAAE6QFAAAAABOoBQAAAAAHrAUAAAAAB7AFAAAAAAe0BQAAAAAHuAUAA1wIAIQvXAQAA6AIAMNgBAADTAQAQ2QEAAOgCADDaAQEAzAIAIeMBQADQAgAh5AFAANACACGIAgEAzAIAIYkCAQDMAgAhigIBAM0CACGLAgEAzAIAIYwCAQDMAgAhCNcBAADpAgAw2AEAAL0BABDZAQAA6QIAMNoBAQDMAgAh5AFAANACACH5AQEAzAIAIYgCAQDMAgAhigIBAMwCACEK1wEAAOoCADDYAQAApwEAENkBAADqAgAw2gEBAMwCACHeAQEAzAIAIeQBQADQAgAh9wEBAM0CACH-AQEAzQIAIY0CAQDMAgAhjgIBAM0CACENCAAA7QIAIAoAAO4CACAOAADvAgAg1wEAAOsCADDYAQAAJQAQ2QEAAOsCADDaAQEA5gIAId4BAQDmAgAh5AFAAOcCACH3AQEA7AIAIf4BAQDsAgAhjQIBAOYCACGOAgEA7AIAIQvnAQEAAAAB6AEBAAAABekBAQAAAAXqAQEAAAAB6wEBAAAAAewBAQAAAAHtAQEAAAAB7gEBANsCACHyAQEAAAAB8wEBAAAAAfQBAQAAAAEDjwIAABMAIJACAAATACCRAgAAEwAgA48CAAAYACCQAgAAGAAgkQIAABgAIAOPAgAAHAAgkAIAABwAIJECAAAcACAJ1wEAAPACADDYAQAAjwEAENkBAADwAgAw2gEBAMwCACHjAUAA0AIAIeQBQADQAgAh5QFAANACACGGAgEAzAIAIZICAQDMAgAhCdcBAADxAgAw2AEAAHwAENkBAADxAgAw2gEBAOYCACHjAUAA5wIAIeQBQADnAgAh5QFAAOcCACGGAgEA5gIAIZICAQDmAgAhENcBAADyAgAw2AEAAHYAENkBAADyAgAw2gEBAMwCACHkAUAA0AIAIeUBQADQAgAh-QEBAMwCACGTAgEAzAIAIZQCAQDMAgAhlQIBAM0CACGWAgEAzQIAIZcCAQDNAgAhmAJAANECACGZAkAA0QIAIZoCAQDNAgAhmwIBAM0CACEN1wEAAPMCADDYAQAAYAAQ2QEAAPMCADDaAQEAzAIAIeMBQADQAgAh5AFAANACACHlAUAA0AIAIfkBAQDMAgAhnAIBAMwCACGdAgEAzQIAIZ4CAQDNAgAhnwIBAM0CACGgAgEAzQIAIQ7XAQAA9AIAMNgBAABKABDZAQAA9AIAMNoBAQDMAgAh3QEBAM0CACHeAQEAzAIAIeQBQADQAgAh5QFAANACACGJAgEAzAIAIYoCAQDNAgAhoQIgAN8CACGiAiAA9QIAIaMCAQDNAgAhpAJAANECACEFDQAA0wIAICEAAPcCACAiAAD3AgAg5wEgAAAAAe4BIAD2AgAhBQ0AANMCACAhAAD3AgAgIgAA9wIAIOcBIAAAAAHuASAA9gIAIQLnASAAAAAB7gEgAPcCACEWBAAA_AIAIAUAAP0CACAGAAD-AgAgBwAA_wIAIAgAAO0CACAKAADuAgAgDAAAgAMAIA4AAO8CACDXAQAA-AIAMNgBAAA3ABDZAQAA-AIAMNoBAQDmAgAh3QEBAOwCACHeAQEA5gIAIeQBQADnAgAh5QFAAOcCACGJAgEA5gIAIYoCAQDsAgAhoQIgAPkCACGiAiAA-gIAIaMCAQDsAgAhpAJAAPsCACEC5wEgAAAAAe4BIADhAgAhAucBIAAAAAHuASAA9wIAIQjnAUAAAAAB6AFAAAAABekBQAAAAAXqAUAAAAAB6wFAAAAAAewBQAAAAAHtAUAAAAAB7gFAANQCACEDjwIAAAMAIJACAAADACCRAgAAAwAgA48CAAAHACCQAgAABwAgkQIAAAcAIAOPAgAACwAgkAIAAAsAIJECAAALACADjwIAAA8AIJACAAAPACCRAgAADwAgA48CAAAgACCQAgAAIAAgkQIAACAAIBIDAACDAwAgCwAAhAMAINcBAACBAwAw2AEAACAAENkBAACBAwAw2gEBAOYCACHbAQEA5gIAIdwBAQDsAgAh3QEBAOYCACHeAQEA5gIAId8BAQDsAgAh4AEBAOwCACHhAQAAzgIAIOIBAgCCAwAh4wFAAOcCACHkAUAA5wIAIeUBQADnAgAh5gFAAPsCACEI5wECAAAAAegBAgAAAATpAQIAAAAE6gECAAAAAesBAgAAAAHsAQIAAAAB7QECAAAAAe4BAgDWAgAhGAQAAPwCACAFAAD9AgAgBgAA_gIAIAcAAP8CACAIAADtAgAgCgAA7gIAIAwAAIADACAOAADvAgAg1wEAAPgCADDYAQAANwAQ2QEAAPgCADDaAQEA5gIAId0BAQDsAgAh3gEBAOYCACHkAUAA5wIAIeUBQADnAgAhiQIBAOYCACGKAgEA7AIAIaECIAD5AgAhogIgAPoCACGjAgEA7AIAIaQCQAD7AgAhpQIAADcAIKYCAAA3ACAUAwAAgwMAIAkAAIYDACAMAACAAwAg1wEAAIUDADDYAQAAHAAQ2QEAAIUDADDaAQEA5gIAIdsBAQDmAgAh3gEBAOYCACHfAQEA7AIAIeEBAADOAgAg5AFAAOcCACHlAUAA5wIAIeYBQAD7AgAh9QEBAOwCACH2AQEA5gIAIfcBAQDmAgAh-AEgAPkCACGlAgAAHAAgpgIAABwAIBIDAACDAwAgCQAAhgMAIAwAAIADACDXAQAAhQMAMNgBAAAcABDZAQAAhQMAMNoBAQDmAgAh2wEBAOYCACHeAQEA5gIAId8BAQDsAgAh4QEAAM4CACDkAUAA5wIAIeUBQADnAgAh5gFAAPsCACH1AQEA7AIAIfYBAQDmAgAh9wEBAOYCACH4ASAA-QIAIQ8IAADtAgAgCgAA7gIAIA4AAO8CACDXAQAA6wIAMNgBAAAlABDZAQAA6wIAMNoBAQDmAgAh3gEBAOYCACHkAUAA5wIAIfcBAQDsAgAh_gEBAOwCACGNAgEA5gIAIY4CAQDsAgAhpQIAACUAIKYCAAAlACANAwAAgwMAIAkAAIgDACDXAQAAhwMAMNgBAAAYABDZAQAAhwMAMNoBAQDmAgAh4wFAAOcCACHkAUAA5wIAIYgCAQDmAgAhiQIBAOYCACGKAgEA7AIAIYsCAQDmAgAhjAIBAOYCACEPCAAA7QIAIAoAAO4CACAOAADvAgAg1wEAAOsCADDYAQAAJQAQ2QEAAOsCADDaAQEA5gIAId4BAQDmAgAh5AFAAOcCACH3AQEA7AIAIf4BAQDsAgAhjQIBAOYCACGOAgEA7AIAIaUCAAAlACCmAgAAJQAgCgMAAIMDACAJAACIAwAg1wEAAIkDADDYAQAAEwAQ2QEAAIkDADDaAQEA5gIAIeQBQADnAgAh-QEBAOYCACGIAgEA5gIAIYoCAQDmAgAhDQMAAIMDACDXAQAAigMAMNgBAAAPABDZAQAAigMAMNoBAQDmAgAh5AFAAOcCACH5AQEA5gIAIfoBAQDmAgAh-wEBAOYCACH8AQEA5gIAIf0BAQDsAgAh_gEBAOwCACH_AUAA-wIAIQwDAACDAwAg1wEAAIsDADDYAQAACwAQ2QEAAIsDADDaAQEA5gIAIeQBQADnAgAh-QEBAOYCACGAAgEA5gIAIYECAQDmAgAhggIBAOYCACGDAgEA7AIAIYQCAQDsAgAhEQMAAIMDACDXAQAAjAMAMNgBAAAHABDZAQAAjAMAMNoBAQDmAgAh5AFAAOcCACHlAUAA5wIAIfkBAQDmAgAhkwIBAOYCACGUAgEA5gIAIZUCAQDsAgAhlgIBAOwCACGXAgEA7AIAIZgCQAD7AgAhmQJAAPsCACGaAgEA7AIAIZsCAQDsAgAhDgMAAIMDACDXAQAAjQMAMNgBAAADABDZAQAAjQMAMNoBAQDmAgAh4wFAAOcCACHkAUAA5wIAIeUBQADnAgAh-QEBAOYCACGcAgEA5gIAIZ0CAQDsAgAhngIBAOwCACGfAgEA7AIAIaACAQDsAgAhAAAAAAAAAaoCAQAAAAEBqgIBAAAAAQKqAgEAAAAEsAIBAAAABQWqAgIAAAABsQICAAAAAbICAgAAAAGzAgIAAAABtAICAAAAAQGqAkAAAAABAaoCQAAAAAEFGwAAvwUAIBwAAMUFACCnAgAAwAUAIKgCAADEBQAgrQIAAAEAIAcbAAC9BQAgHAAAwgUAIKcCAAC-BQAgqAIAAMEFACCrAgAAHAAgrAIAABwAIK0CAAAeACABqgIBAAAABAMbAAC_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_XAQAA3wMAMNgBAADgAwAQ2QEAAN8DADDaAQEA5gIAIdsBAQDmAgAh3gEBAOYCACHfAQEA7AIAIeEBAADOAgAg5AFAAOcCACHlAUAA5wIAIeYBQAD7AgAh9QEBAOwCACH2AQEA5gIAIfcBAQDmAgAh-AEgAPkCACEP1wEAAN8DADDYAQAA4AMAENkBAADfAwAw2gEBAOYCACHbAQEA5gIAId4BAQDmAgAh3wEBAOwCACHhAQAAzgIAIOQBQADnAgAh5QFAAOcCACHmAUAA-wIAIfUBAQDsAgAh9gEBAOYCACH3AQEA5gIAIfgBIAD5AgAhC9oBAQCUAwAh2wEBAJQDACHeAQEAlAMAId8BAQCVAwAh4QEAAKIDACDkAUAAmAMAIeUBQACYAwAh5gFAAJkDACH2AQEAlAMAIfcBAQCUAwAh-AEgAKMDACENAwAApgMAIAwAAKQDACDaAQEAlAMAIdsBAQCUAwAh3gEBAJQDACHfAQEAlQMAIeEBAACiAwAg5AFAAJgDACHlAUAAmAMAIeYBQACZAwAh9gEBAJQDACH3AQEAlAMAIfgBIACjAwAhDQMAALYDACAMAAC0AwAg2gEBAAAAAdsBAQAAAAHeAQEAAAAB3wEBAAAAAeEBAACzAwAg5AFAAAAAAeUBQAAAAAHmAUAAAAAB9gEBAAAAAfcBAQAAAAH4ASAAAAABCAMAAMoDACDaAQEAAAAB4wFAAAAAAeQBQAAAAAGJAgEAAAABigIBAAAAAYsCAQAAAAGMAgEAAAABAgAAABoAIBsAAO8DACADAAAAGgAgGwAA7wMAIBwAAO4DACABFAAAkgUAMA0DAACDAwAgCQAAiAMAINcBAACHAwAw2AEAABgAENkBAACHAwAw2gEBAAAAAeMBQADnAgAh5AFAAOcCACGIAgEA5gIAIYkCAQDmAgAhigIBAOwCACGLAgEA5gIAIYwCAQDmAgAhAgAAABoAIBQAAO4DACACAAAA7AMAIBQAAO0DACAL1wEAAOsDADDYAQAA7AMAENkBAADrAwAw2gEBAOYCACHjAUAA5wIAIeQBQADnAgAhiAIBAOYCACGJAgEA5gIAIYoCAQDsAgAhiwIBAOYCACGMAgEA5gIAIQvXAQAA6wMAMNgBAADsAwAQ2QEAAOsDADDaAQEA5gIAIeMBQADnAgAh5AFAAOcCACGIAgEA5gIAIYkCAQDmAgAhigIBAOwCACGLAgEA5gIAIYwCAQDmAgAhB9oBAQCUAwAh4wFAAJgDACHkAUAAmAMAIYkCAQCUAwAhigIBAJUDACGLAgEAlAMAIYwCAQCUAwAhCAMAAMgDACDaAQEAlAMAIeMBQACYAwAh5AFAAJgDACGJAgEAlAMAIYoCAQCVAwAhiwIBAJQDACGMAgEAlAMAIQgDAADKAwAg2gEBAAAAAeMBQAAAAAHkAUAAAAABiQIBAAAAAYoCAQAAAAGLAgEAAAABjAIBAAAAAQUDAADRAwAg2gEBAAAAAeQBQAAAAAH5AQEAAAABigIBAAAAAQIAAAAVACAbAAD7AwAgAwAAABUAIBsAAPsDACAcAAD6AwAgARQAAJEFADAKAwAAgwMAIAkAAIgDACDXAQAAiQMAMNgBAAATABDZA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-wEBAAAAAfwBAQAAAAH9AQEAAAAB_gEBAAAAAf8BQAAAAAECAAAAEQAgGwAAygQAIAMAAAARACAbAADKBAAgHAAAyQQAIAEUAACCBQAwDQMAAIMDACDXAQAAigMAMNgBAAAPABDZAQAAigMAMNoBAQAAAAHkAUAA5wIAIfkBAQDmAgAh-gEBAOYCACH7AQEA5gIAIfwBAQDmAgAh_QEBAOwCACH-AQEA7AIAIf8BQAD7AgAhAgAAABEAIBQAAMkEACACAAAAxwQAIBQAAMgEACAM1wEAAMYEADDYAQAAxwQAENkBAADGBAAw2gEBAOYCACHkAUAA5wIAIfkBAQDmAgAh-gEBAOYCACH7AQEA5gIAIfwBAQDmAgAh_QEBAOwCACH-AQEA7AIAIf8BQAD7AgAhDNcBAADGBAAw2AEAAMcEABDZAQAAxgQAMNoBAQDmAgAh5AFAAOcCACH5AQEA5gIAIfoBAQDmAgAh-wEBAOYCACH8AQEA5gIAIf0BAQDsAgAh_gEBAOwCACH_AUAA-wIAIQjaAQEAlAMAIeQBQACYAwAh-gEBAJQDACH7AQEAlAMAIfwBAQCUAwAh_QEBAJUDACH-AQEAlQMAIf8BQACZAwAhCNoBAQCUAwAh5AFAAJgDACH6AQEAlAMAIfsBAQCUAwAh_AEBAJQDACH9AQEAlQMAIf4BAQCVAwAh_wFAAJkDACEI2gEBAAAAAeQBQAAAAAH6AQEAAAAB-wEBAAAAAfwBAQAAAAH9AQEAAAAB_gEBAAAAAf8BQAAAAAEH2gEBAAAAAeQBQAAAAAGAAgEAAAABgQIBAAAAAYICAQAAAAGDAgEAAAABhAIBAAAAAQIAAAANACAbAADWBAAgAwAAAA0AIBsAANYEACAcAADVBAAgARQAAIEFADAMAwAAgwMAINcBAACLAwAw2AEAAAsAENkBAACLAwAw2gEBAAAAAeQBQADnAgAh-QEBAOYCACGAAgEA5gIAIYECAQDmAgAhggIBAOYCACGDAgEA7AIAIYQCAQDsAgAhAgAAAA0AIBQAANUEACACAAAA0wQAIBQAANQEACAL1wEAANIEADDYAQAA0wQAENkBAADSBAAw2gEBAOYCACHkAUAA5wIAIfkBAQDmAgAhgAIBAOYCACGBAgEA5gIAIYICAQDmAgAhgwIBAOwCACGEAgEA7AIAIQvXAQAA0gQAMNgBAADTBAAQ2QEAANIEADDaAQEA5gIAIeQBQADnAgAh-QEBAOYCACGAAgEA5gIAIYECAQDmAgAhggIBAOYCACGDAgEA7AIAIYQCAQDsAgAhB9oBAQCUAwAh5AFAAJgDACGAAgEAlAMAIYECAQCUAwAhggIBAJQDACGDAgEAlQMAIYQCAQCVAwAhB9oBAQCUAwAh5AFAAJgDACGAAgEAlAMAIYECAQCUAwAhggIBAJQDACGDAgEAlQMAIYQCAQCVAwAhB9oBAQAAAAHkAUAAAAABgAIBAAAAAYECAQAAAAGCAgEAAAABgwIBAAAAAYQCAQAAAAEM2gEBAAAAAeQBQAAAAAHlAUAAAAABkwIBAAAAAZQCAQAAAAGVAgEAAAABlgIBAAAAAZcCAQAAAAGYAkAAAAABmQJAAAAAAZoCAQAAAAGbAgEAAAABAgAAAAkAIBsAAOIEACADAAAACQAgGwAA4gQAIBwAAOEEACABFAAAgAUAMBEDAACDAwAg1wEAAIwDADDYAQAABwAQ2QEAAIwDADDaAQEAAAAB5AFAAOcCACHlAUAA5wIAIfkBAQDmAgAhkwIBAOYCACGUAgEA5gIAIZUCAQDsAgAhlgIBAOwCACGXAgEA7AIAIZgCQAD7AgAhmQJAAPsCACGaAgEA7AIAIZsCAQDsAgAhAgAAAAkAIBQAAOEEACACAAAA3wQAIBQAAOAEACAQ1wEAAN4EADDYAQAA3wQAENkBAADeBAAw2gEBAOYCACHkAUAA5wIAIeUBQADnAgAh-QEBAOYCACGTAgEA5gIAIZQCAQDmAgAhlQIBAOwCACGWAgEA7AIAIZcCAQDsAgAhmAJAAPsCACGZAkAA-wIAIZoCAQDsAgAhmwIBAOwCACEQ1wEAAN4EADDYAQAA3wQAENkBAADeBAAw2gEBAOYCACHkAUAA5wIAIeUBQADnAgAh-QEBAOYCACGTAgEA5gIAIZQCAQDmAgAhlQIBAOwCACGWAgEA7AIAIZcCAQDsAgAhmAJAAPsCACGZAkAA-wIAIZoCAQDsAgAhmwIBAOwCACEM2gEBAJQDACHkAUAAmAMAIeUBQACYAwAhkwIBAJQDACGUAgEAlAMAIZUCAQCVAwAhlgIBAJUDACGXAgEAlQMAIZgCQACZAwAhmQJAAJkDACGaAgEAlQMAIZsCAQCVAwAhDNoBAQCUAwAh5AFAAJgDACHlAUAAmAMAIZMCAQCUAwAhlAIBAJQDACGVAgEAlQMAIZYCAQCVAwAhlwIBAJUDACGYAkAAmQMAIZkCQACZAwAhmgIBAJUDACGbAgEAlQMAIQzaAQEAAAAB5AFAAAAAAeUBQAAAAAGTAgEAAAABlAIBAAAAAZUCAQAAAAGWAgEAAAABlwIBAAAAAZgCQAAAAAGZAkAAAAABmgIBAAAAAZsCAQAAAAEJ2gEBAAAAAeMBQAAAAAHkAUAAAAAB5QFAAAAAAZwCAQAAAAGdAgEAAAABngIBAAAAAZ8CAQAAAAGgAgEAAAABAgAAAAUAIBsAAO4EACADAAAABQAgGwAA7gQAIBwAAO0EACABFAAA_wQAMA4DAACDAwAg1wEAAI0DADDYAQAAAwAQ2QEAAI0DADDaAQEAAAAB4wFAAOcCACHkAUAA5wIAIeUBQADnAgAh-QEBAOYCACGcAgEAAAABnQIBAOwCACGeAgEA7AIAIZ8CAQDsAgAhoAIBAOwCACECAAAABQAgFAAA7QQAIAIAAADrBAAgFAAA7AQAIA3XAQAA6gQAMNgBAADrBAAQ2QEAAOoEADDaAQEA5gIAIeMBQADnAgAh5AFAAOcCACHlAUAA5wIAIfkBAQDmAgAhnAIBAOYCACGdAgEA7AIAIZ4CAQDsAgAhnwIBAOwCACGgAgEA7AIAIQ3XAQAA6gQAMNgBAADrBAAQ2QEAAOoEADDaAQEA5gIAIeMBQADnAgAh5AFAAOcCACHlAUAA5wIAIfkBAQDmAgAhnAIBAOYCACGdAgEA7AIAIZ4CAQDsAgAhnwIBAOwCACGgAgEA7AIAIQnaAQEAlAMAIeMBQACYAwAh5AFAAJgDACHlAUAAmAMAIZwCAQCUAwAhnQIBAJUDACGeAgEAlQMAIZ8CAQCVAwAhoAIBAJUDACEJ2gEBAJQDACHjAUAAmAMAIeQBQACYAwAh5QFAAJgDACGcAgEAlAMAIZ0CAQCVAwAhngIBAJUDACGfAgEAlQMAIaACAQCVAwAhCdoBAQAAAAHjAUAAAAAB5AFAAAAAAeUBQAAAAAGcAgEAAAABnQIBAAAAAZ4CAQAAAAGfAgEAAAABoAIBAAAAAQQbAADjBAAwpwIAAOQEADCpAgAA5gQAIK0CAADnBAAwBBsAANcEADCnAgAA2AQAMKkCAADaBAAgrQIAANsEADAEGwAAywQAMKcCAADMBAAwqQIAAM4EACCtAgAAzwQAMAQbAAC_BAAwpwIAAMAEADCpAgAAwgQAIK0CAADDBAAwBBsAALYEADCnAgAAtwQAMKkCAAC5BAAgrQIAAPQDADAEGwAArQQAMKcCAACuBAAwqQIAALAEACCtAgAA6AMAMAQbAACkBAAwpwIAAKUEADCpAgAApwQAIK0CAADcAwAwBBsAAJsEADCnAgAAnAQAMKkCAACeBAAgrQIAAKsDADAAAAAAAA0EAAD3BAAgBQAA-AQAIAYAAPkEACAHAAD6BAAgCAAA_wMAIAoAAIAEACAMAAD7BAAgDgAAgQQAIN0BAACOAwAgigIAAI4DACCiAgAAjgMAIKMCAACOAwAgpAIAAI4DACAGAwAA_AQAIAkAAP4EACAMAAD7BAAg3wEAAI4DACDmAQAAjgMAIPUBAACOAwAgBggAAP8DACAKAACABAAgDgAAgQQAIPcBAACOAwAg_gEAAI4DACCOAgAAjgMAIAnaAQEAAAAB4wFAAAAAAeQBQAAAAAHlAUAAAAABnAIBAAAAAZ0CAQAAAAGeAgEAAAABnwIBAAAAAaACAQAAAAEM2gEBAAAAAeQBQAAAAAHlAUAAAAABkwIBAAAAAZQCAQAAAAGVAgEAAAABlgIBAAAAAZcCAQAAAAGYAkAAAAABmQJAAAAAAZoCAQAAAAGbAgEAAAABB9oBAQAAAAHkAUAAAAABgAIBAAAAAYECAQAAAAGCAgEAAAABgwIBAAAAAYQCAQAAAAEI2gEBAAAAAeQBQAAAAAH6AQEAAAAB-wEBAAAAAfwBAQAAAAH9AQEAAAAB_gEBAAAAAf8BQAAAAAEE2gEBAAAAAeQBQAAAAAGIAgEAAAABigIBAAAAAQfaAQEAAAAB4wFAAAAAAeQBQAAAAAGIAgEAAAABiQIBAAAAAYoCAQAAAAGLAgEAAAABC9oBAQAAAAHeAQEAAAAB3wEBAAAAAeEBAACzAwAg5AFAAAAAAeUBQAAAAAHmAUAAAAAB9QEBAAAAAfYBAQAAAAH3AQEAAAAB-AEgAAAAAQzaAQEAAAAB3AEBAAAAAd0BAQAAAAHeAQEAAAAB3wEBAAAAAeABAQAAAAHhAQAAnAMAIOIBAgAAAAHjAUAAAAAB5AFAAAAAAeUBQAAAAAHmAUAAAAABEgUAAPAEACAGAADxBAAgBwAA8gQAIAgAAPMEACAKAAD0BAAgDAAA9gQAIA4AAPUEACDaAQEAAAAB3QEBAAAAAd4BAQAAAAHkAUAAAAAB5QFAAAAAAYkCAQAAAAGKAgEAAAABoQIgAAAAAaICIAAAAAGjAgEAAAABpAJAAAAAAQIAAAABACAbAACHBQAgAwAAADcAIBsAAIcFACAcAACLBQAgFAAAADcAIAUAAJQEACAGAACVBAAgBwAAlgQAIAgAAJcEACAKAACYBAAgDAAAmgQAIA4AAJkEACAUAACLBQAg2gEBAJQDACHdAQEAlQMAId4BAQCUAwAh5AFAAJgDACHlAUAAmAMAIYkCAQCUAwAhigIBAJUDACGhAiAAowMAIaICIACSBAAhowIBAJUDACGkAkAAmQMAIRIFAACUBAAgBgAAlQQAIAcAAJYEACAIAACXBAAgCgAAmAQAIAwAAJoEACAOAACZBAAg2gEBAJQDACHdAQEAlQMAId4BAQCUAwAh5AFAAJgDACHlAUAAmAMAIYkCAQCUAwAhigIBAJUDACGhAiAAowMAIaICIACSBAAhowIBAJUDACGkAkAAmQMAIRIEAADvBAAgBgAA8QQAIAcAAPIEACAIAADzBAAgCgAA9AQAIAwAAPYEACAOAAD1BAAg2gEBAAAAAd0BAQAAAAHeAQEAAAAB5AFAAAAAAeUBQAAAAAGJAgEAAAABigIBAAAAAaECIAAAAAGiAiAAAAABowIBAAAAAaQCQAAAAAECAAAAAQAgGwAAjAUAIAMAAAA3ACAbAACMBQAgHAAAkAUAIBQAAAA3ACAEAACTBAAgBgAAlQQAIAcAAJYEACAIAACXBAAgCgAAmAQAIAwAAJoEACAOAACZBAAgFAAAkAUAINoBAQCUAwAh3QEBAJUDACHeAQEAlAMAIeQBQACYAwAh5QFAAJgDACGJAgEAlAMAIYoCAQCVAwAhoQIgAKMDACGiAiAAkgQAIaMCAQCVAwAhpAJAAJkDACESBAAAkwQAIAYAAJUEACAHAACWBAAgCAAAlwQAIAoAAJgEACAMAACaBAAgDgAAmQQAINoBAQCUAwAh3QEBAJUDACHeAQEAlAMAIeQBQACYAwAh5QFAAJgDACGJAgEAlAMAIYoCAQCVAwAhoQIgAKMDACGiAiAAkgQAIaMCAQCVAwAhpAJAAJkDACEE2gEBAAAAAeQBQAAAAAH5AQEAAAABigIBAAAAAQfaAQEAAAAB4wFAAAAAAeQBQAAAAAGJAgEAAAABigIBAAAAAYsCAQAAAAGMAgEAAAABC9oBAQAAAAHbAQEAAAAB3gEBAAAAAd8BAQAAAAHhAQAAswMAIOQBQAAAAAHlAUAAAAAB5gFAAAAAAfYBAQAAAAH3AQEAAAAB-AEgAAAAARIEAADvBAAgBQAA8AQAIAYAAPEEACAHAADyBAAgCgAA9AQAIAwAAPYEACAOAAD1BAAg2gEBAAAAAd0BAQAAAAHeAQEAAAAB5AFAAAAAAeUBQAAAAAGJAgEAAAABigIBAAAAAaECIAAAAAGiAiAAAAABowIBAAAAAaQCQAAAAAECAAAAAQAgGwAAlAUAIAkKAAD9AwAgDgAA_gMAINoBAQAAAAHeAQEAAAAB5AFAAAAAAfcBAQAAAAH-AQEAAAABjQIBAAAAAY4CAQAAAAECAAAAkgEAIBsAAJYFACADAAAANwAgGwAAlAUAIBwAAJoFACAUAAAANwAgBAAAkwQAIAUAAJQEACAGAACVBAAgBwAAlgQAIAoAAJgEACAMAACaBAAgDgAAmQQAIBQAAJoFACDaAQEAlAMAId0BAQCVAwAh3gEBAJQDACHkAUAAmAMAIeUBQACYAwAhiQIBAJQDACGKAgEAlQMAIaECIACjAwAhogIgAJIEACGjAgEAlQMAIaQCQACZAwAhEgQAAJMEACAFAACUBAAgBgAAlQQAIAcAAJYEACAKAACYBAAgDAAAmgQAIA4AAJkEACDaAQEAlAMAId0BAQCVAwAh3gEBAJQDACHkAUAAmAMAIeUBQACYAwAhiQIBAJQDACGKAgEAlQMAIaECIACjAwAhogIgAJIEACGjAgEAlQMAIaQCQACZAwAhAwAAACUAIBsAAJYFACAcAACdBQAgCwAAACUAIAoAANYDACAOAADXAwAgFAAAnQUAINoBAQCUAwAh3gEBAJQDACHkAUAAmAMAIfcBAQCVAwAh_gEBAJUDACGNAgEAlAMAIY4CAQCVAwAhCQoAANYDACAOAADXAwAg2gEBAJQDACHeAQEAlAMAIeQBQACYAwAh9wEBAJUDACH-AQEAlQMAIY0CAQCUAwAhjgIBAJUDACESBAAA7wQAIAUAAPAEACAGAADxBAAgBwAA8gQAIAgAAPMEACAMAAD2BAAgDgAA9QQAINoBAQAAAAHdAQEAAAAB3gEBAAAAAeQBQAAAAAHlAUAAAAABiQIBAAAAAYoCAQAAAAGhAiAAAAABogIgAAAAAaMCAQAAAAGkAkAAAAABAgAAAAEAIBsAAJ4FACAJCAAA_AMAIA4AAP4DACDaAQEAAAAB3gEBAAAAAeQBQAAAAAH3AQEAAAAB_gEBAAAAAY0CAQAAAAGOAgEAAAABAgAAAJIBACAbAACgBQAgAwAAADcAIBsAAJ4FACAcAACkBQAgFAAAADcAIAQAAJMEACAFAACUBAAgBgAAlQQAIAcAAJYEACAIAACXBAAgDAAAmgQAIA4AAJkEACAUAACkBQAg2gEBAJQDACHdAQEAlQMAId4BAQCUAwAh5AFAAJgDACHlAUAAmAMAIYkCAQCUAwAhigIBAJUDACGhAiAAowMAIaICIACSBAAhowIBAJUDACGkAkAAmQMAIRIEAACTBAAgBQAAlAQAIAYAAJUEACAHAACWBAAgCAAAlwQAIAwAAJoEACAOAACZBAAg2gEBAJQDACHdAQEAlQMAId4BAQCUAwAh5AFAAJgDACHlAUAAmAMAIYkCAQCUAwAhigIBAJUDACGhAiAAowMAIaICIACSBAAhowIBAJUDACGkAkAAmQMAIQMAAAAlACAbAACgBQAgHAAApwUAIAsAAAAlACAIAADVAwAgDgAA1wMAIBQAAKcFACDaAQEAlAMAId4BAQCUAwAh5AFAAJgDACH3AQEAlQMAIf4BAQCVAwAhjQIBAJQDACGOAgEAlQMAIQkIAADVAwAgDgAA1wMAINoBAQCUAwAh3gEBAJQDACHkAUAAmAMAIfcBAQCVAwAh_gEBAJUDACGNAgEAlAMAIY4CAQCVAwAhEgQAAO8EACAFAADwBAAgBwAA8gQAIAgAAPMEACAKAAD0BAAgDAAA9gQAIA4AAPUEACDaAQEAAAAB3QEBAAAAAd4BAQAAAAHkAUAAAAAB5QFAAAAAAYkCAQAAAAGKAgEAAAABoQIgAAAAAaICIAAAAAGjAgEAAAABpAJAAAAAAQIAAAABACAbAACoBQAgAwAAADcAIBsAAKgFACAcAACsBQAgFAAAADcAIAQAAJMEACAFAACUBAAgBwAAlgQAIAgAAJcEACAKAACYBAAgDAAAmgQAIA4AAJkEACAUAACsBQAg2gEBAJQDACHdAQEAlQMAId4BAQCUAwAh5AFAAJgDACHlAUAAmAMAIYkCAQCUAwAhigIBAJUDACGhAiAAowMAIaICIACSBAAhowIBAJUDACGkAkAAmQMAIRIEAACTBAAgBQAAlAQAIAcAAJYEACAIAACXBAAgCgAAmAQAIAwAAJoEACAOAACZBAAg2gEBAJQDACHdAQEAlQMAId4BAQCUAwAh5AFAAJgDACHlAUAAmAMAIYkCAQCUAwAhigIBAJUDACGhAiAAowMAIaICIACSBAAhowIBAJUDACGkAkAAmQMAIRIEAADvBAAgBQAA8AQAIAYAAPEEACAIAADzBAAgCgAA9AQAIAwAAPYEACAOAAD1BAAg2gEBAAAAAd0BAQAAAAHeAQEAAAAB5AFAAAAAAeUBQAAAAAGJAgEAAAABigIBAAAAAaECIAAAAAGiAiAAAAABowIBAAAAAaQCQAAAAAECAAAAAQAgGwAArQUAIAMAAAA3ACAbAACtBQAgHAAAsQUAIBQAAAA3ACAEAACTBAAgBQAAlAQAIAYAAJUEACAIAACXBAAgCgAAmAQAIAwAAJoEACAOAACZBAAgFAAAsQUAINoBAQCUAwAh3QEBAJUDACHeAQEAlAMAIeQBQACYAwAh5QFAAJgDACGJAgEAlAMAIYoCAQCVAwAhoQIgAKMDACGiAiAAkgQAIaMCAQCVAwAhpAJAAJkDACESBAAAkwQAIAUAAJQEACAGAACVBAAgCAAAlwQAIAoAAJgEACAMAACaBAAgDgAAmQQAINoBAQCUAwAh3QEBAJUDACHeAQEAlAMAIeQBQACYAwAh5QFAAJgDACGJAgEAlAMAIYoCAQCVAwAhoQIgAKMDACGiAiAAkgQAIaMCAQCVAwAhpAJAAJkDACESBAAA7wQAIAUAAPAEACAGAADxBAAgBwAA8gQAIAgAAPMEACAKAAD0BAAgDAAA9gQAINoBAQAAAAHdAQEAAAAB3gEBAAAAAeQBQAAAAAHlAUAAAAABiQIBAAAAAYoCAQAAAAGhAiAAAAABogIgAAAAAaMCAQAAAAGkAkAAAAABAgAAAAEAIBsAALIFACAJCAAA_AMAIAoAAP0DACDaAQEAAAAB3gEBAAAAAeQBQAAAAAH3AQEAAAAB_gEBAAAAAY0CAQAAAAGOAgEAAAABAgAAAJIBACAbAAC0BQAgDNoBAQAAAAHbAQEAAAAB3QEBAAAAAd4BAQAAAAHfAQEAAAAB4AEBAAAAAeEBAACcAwAg4gECAAAAAeMBQAAAAAHkAUAAAAAB5QFAAAAAAeYBQAAAAAEDAAAANwAgGwAAsgUAIBwAALkFACAUAAAANwAgBAAAkwQAIAUAAJQEACAGAACVBAAgBwAAlgQAIAgAAJcEACAKAACYBAAgDAAAmgQAIBQAALkFACDaAQEAlAMAId0BAQCVAwAh3gEBAJQDACHkAUAAmAMAIeUBQACYAwAhiQIBAJQDACGKAgEAlQMAIaECIACjAwAhogIgAJIEACGjAgEAlQMAIaQCQACZAwAhEgQAAJMEACAFAACUBAAgBgAAlQQAIAcAAJYEACAIAACXBAAgCgAAmAQAIAwAAJoEACDaAQEAlAMAId0BAQCVAwAh3gEBAJQDACHkAUAAmAMAIeUBQACYAwAhiQIBAJQDACGKAgEAlQMAIaECIACjAwAhogIgAJIEACGjAgEAlQMAIaQCQACZAwAhAwAAACUAIBsAALQFACAcAAC8BQAgCwAAACUAIAgAANUDACAKAADWAwAgFAAAvAUAINoBAQCUAwAh3gEBAJQDACHkAUAAmAMAIfcBAQCVAwAh_gEBAJUDACGNAgEAlAMAIY4CAQCVAwAhCQgAANUDACAKAADWAwAg2gEBAJQDACHeAQEAlAMAIeQBQACYAwAh9wEBAJUDACH-AQEAlQMAIY0CAQCUAwAhjgIBAJUDACEOAwAAtgMAIAkAALUDACDaAQEAAAAB2wEBAAAAAd4BAQAAAAHfAQEAAAAB4QEAALMDACDkAUAAAAAB5QFAAAAAAeYBQAAAAAH1AQEAAAAB9gEBAAAAAfcBAQAAAAH4ASAAAAABAgAAAB4AIBsAAL0FACASBAAA7wQAIAUAAPAEACAGAADxBAAgBwAA8gQAIAgAAPMEACAKAAD0BAAgDgAA9QQAINoBAQAAAAHdAQEAAAAB3gEBAAAAAeQBQAAAAAHlAUAAAAABiQIBAAAAAYoCAQAAAAGhAiAAAAABogIgAAAAAaMCAQAAAAGkAkAAAAABAgAAAAEAIBsAAL8FACADAAAAHAAgGwAAvQUAIBwAAMMFACAQAAAAHAAgAwAApgMAIAkAAKUDACAUAADDBQAg2gEBAJQDACHbAQEAlAMAId4BAQCUAwAh3wEBAJUDACHhAQAAogMAIOQBQACYAwAh5QFAAJgDACHmAUAAmQMAIfUBAQCVAwAh9gEBAJQDACH3AQEAlAMAIfgBIACjAwAhDgMAAKYDACAJAAClAwAg2gEBAJQDACHbAQEAlAMAId4BAQCUAwAh3wEBAJUDACHhAQAAogMAIOQBQACYAwAh5QFAAJgDACHmAUAAmQMAIfUBAQCVAwAh9gEBAJQDACH3AQEAlAMAIfgBIACjAwAhAwAAADcAIBsAAL8FACAcAADGBQAgFAAAADcAIAQAAJMEACAFAACUBAAgBgAAlQQAIAcAAJYEACAIAACXBAAgCgAAmAQAIA4AAJkEACAUAADGBQAg2gEBAJQDACHdAQEAlQMAId4BAQCUAwAh5AFAAJgDACHlAUAAmAMAIYkCAQCUAwAhigIBAJUDACGhAiAAowMAIaICIACSBAAhowIBAJUDACGkAkAAmQMAIRIEAACTBAAgBQAAlAQAIAYAAJUEACAHAACWBAAgCAAAlwQAIAoAAJgEACAOAACZBAAg2gEBAJQDACHdAQEAlQMAId4BAQCUAwAh5AFAAJgDACHlAUAAmAMAIYkCAQCUAwAhigIBAJUDACGhAiAAowMAIaICIACSBAAhowIBAJUDACGkAkAAmQMAIQkEBgIFCgMGDgQHEgUIFgYKKwgMLQoNAA0OLAkBAwABAQMAAQEDAAEBAwABAgMAAQkABwQIFwYKGwgNAAwOHwkCAwABCQAHBAMAAQkmBwwjCg0ACwIDAAELJAkBDCcAAwgoAAopAA4qAAgELgAFLwAGMAAHMQAIMgAKMwAMNQAONAAAAAADDQASIQATIgAUAAAAAw0AEiEAEyIAFAEDAAEBAwABAw0AGSEAGiIAGwAAAAMNABkhABoiABsBAwABAQMAAQMNACAhACEiACIAAAADDQAgIQAhIgAiAAAAAw0AKCEAKSIAKgAAAAMNACghACkiACoAAAMNAC8hADAiADEAAAADDQAvIQAwIgAxAgMAAQkABwIDAAEJAAcDDQA2IQA3IgA4AAAAAw0ANiEANyIAOAIDAAEJAAcCAwABCQAHAw0APSEAPiIAPwAAAAMNAD0hAD4iAD8AAAADDQBFIQBGIgBHAAAAAw0ARSEARiIARwEDAAEBAwABAw0ATCEATSIATgAAAAMNAEwhAE0iAE4BAwABAQMAAQMNAFMhAFQiAFUAAAADDQBTIQBUIgBVAgMAAQmlAgcCAwABCasCBwMNAFohAFsiAFwAAAADDQBaIQBbIgBcAgMAAQu9AgkCAwABC8MCCQUNAGEhAGQiAGXTAQBi1AEAYwAAAAAABQ0AYSEAZCIAZdMBAGLUAQBjDwIBEDYBETkBEjoBEzsBFT0BFj8OF0APGEIBGUQOGkUQHUYBHkcBH0gOI0sRJEwVJU0CJk4CJ08CKFACKVECKlMCK1UOLFYWLVgCLloOL1sXMFwCMV0CMl4OM2EYNGIcNWMDNmQDN2UDOGYDOWcDOmkDO2sOPGwdPW4DPnAOP3EeQHIDQXMDQnQOQ3cfRHgjRXokRnskR34kSH8kSYABJEqCASRLhAEOTIUBJU2HASROiQEOT4oBJlCLASRRjAEkUo0BDlOQASdUkQErVZMBB1aUAQdXlgEHWJcBB1mYAQdamgEHW5wBDlydASxdnwEHXqEBDl-iAS1gowEHYaQBB2KlAQ5jqAEuZKkBMmWqAQZmqwEGZ6wBBmitAQZprgEGarABBmuyAQ5sswEzbbUBBm63AQ5vuAE0cLkBBnG6AQZyuwEOc74BNXS_ATl1wAEIdsEBCHfCAQh4wwEIecQBCHrGAQh7yAEOfMkBOn3LAQh-zQEOf84BO4ABzwEIgQHQAQiCAdEBDoMB1AE8hAHVAUCFAdcBQYYB2AFBhwHbAUGIAdwBQYkB3QFBigHfAUGLAeEBDowB4gFCjQHkAUGOAeYBDo8B5wFDkAHoAUGRAekBQZIB6gEOkwHtAUSUAe4BSJUB7wEElgHwAQSXAfEBBJgB8gEEmQHzAQSaAfUBBJsB9wEOnAH4AUmdAfoBBJ4B_AEOnwH9AUqgAf4BBKEB_wEEogGAAg6jAYMCS6QBhAJPpQGFAgWmAYYCBacBhwIFqAGIAgWpAYkCBaoBiwIFqwGNAg6sAY4CUK0BkAIFrgGSAg6vAZMCUbABlAIFsQGVAgWyAZYCDrMBmQJStAGaAla1AZsCCbYBnAIJtwGdAgm4AZ4CCbkBnwIJugGhAgm7AaMCDrwBpAJXvQGnAgm-AakCDr8BqgJYwAGsAgnBAa0CCcIBrgIOwwGxAlnEAbICXcUBswIKxgG0AgrHAbUCCsgBtgIKyQG3AgrKAbkCCssBuwIOzAG8Al7NAb8CCs4BwQIOzwHCAl_QAcQCCtEBxQIK0gHGAg7VAckCYNYBygJm" + strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"user\",\"sessions\",\"accounts\",\"audit\",\"notification\",\"members\",\"house\",\"invitations\",\"box\",\"items\",\"_count\",\"boxes\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"data\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"create\",\"update\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"having\",\"_min\",\"_max\",\"User.groupBy\",\"User.aggregate\",\"Session.findUnique\",\"Session.findUniqueOrThrow\",\"Session.findFirst\",\"Session.findFirstOrThrow\",\"Session.findMany\",\"Session.createOne\",\"Session.createMany\",\"Session.createManyAndReturn\",\"Session.updateOne\",\"Session.updateMany\",\"Session.updateManyAndReturn\",\"Session.upsertOne\",\"Session.deleteOne\",\"Session.deleteMany\",\"Session.groupBy\",\"Session.aggregate\",\"Account.findUnique\",\"Account.findUniqueOrThrow\",\"Account.findFirst\",\"Account.findFirstOrThrow\",\"Account.findMany\",\"Account.createOne\",\"Account.createMany\",\"Account.createManyAndReturn\",\"Account.updateOne\",\"Account.updateMany\",\"Account.updateManyAndReturn\",\"Account.upsertOne\",\"Account.deleteOne\",\"Account.deleteMany\",\"Account.groupBy\",\"Account.aggregate\",\"Verification.findUnique\",\"Verification.findUniqueOrThrow\",\"Verification.findFirst\",\"Verification.findFirstOrThrow\",\"Verification.findMany\",\"Verification.createOne\",\"Verification.createMany\",\"Verification.createManyAndReturn\",\"Verification.updateOne\",\"Verification.updateMany\",\"Verification.updateManyAndReturn\",\"Verification.upsertOne\",\"Verification.deleteOne\",\"Verification.deleteMany\",\"Verification.groupBy\",\"Verification.aggregate\",\"House.findUnique\",\"House.findUniqueOrThrow\",\"House.findFirst\",\"House.findFirstOrThrow\",\"House.findMany\",\"House.createOne\",\"House.createMany\",\"House.createManyAndReturn\",\"House.updateOne\",\"House.updateMany\",\"House.updateManyAndReturn\",\"House.upsertOne\",\"House.deleteOne\",\"House.deleteMany\",\"House.groupBy\",\"House.aggregate\",\"Member.findUnique\",\"Member.findUniqueOrThrow\",\"Member.findFirst\",\"Member.findFirstOrThrow\",\"Member.findMany\",\"Member.createOne\",\"Member.createMany\",\"Member.createManyAndReturn\",\"Member.updateOne\",\"Member.updateMany\",\"Member.updateManyAndReturn\",\"Member.upsertOne\",\"Member.deleteOne\",\"Member.deleteMany\",\"Member.groupBy\",\"Member.aggregate\",\"Invitation.findUnique\",\"Invitation.findUniqueOrThrow\",\"Invitation.findFirst\",\"Invitation.findFirstOrThrow\",\"Invitation.findMany\",\"Invitation.createOne\",\"Invitation.createMany\",\"Invitation.createManyAndReturn\",\"Invitation.updateOne\",\"Invitation.updateMany\",\"Invitation.updateManyAndReturn\",\"Invitation.upsertOne\",\"Invitation.deleteOne\",\"Invitation.deleteMany\",\"Invitation.groupBy\",\"Invitation.aggregate\",\"Setting.findUnique\",\"Setting.findUniqueOrThrow\",\"Setting.findFirst\",\"Setting.findFirstOrThrow\",\"Setting.findMany\",\"Setting.createOne\",\"Setting.createMany\",\"Setting.createManyAndReturn\",\"Setting.updateOne\",\"Setting.updateMany\",\"Setting.updateManyAndReturn\",\"Setting.upsertOne\",\"Setting.deleteOne\",\"Setting.deleteMany\",\"Setting.groupBy\",\"Setting.aggregate\",\"Audit.findUnique\",\"Audit.findUniqueOrThrow\",\"Audit.findFirst\",\"Audit.findFirstOrThrow\",\"Audit.findMany\",\"Audit.createOne\",\"Audit.createMany\",\"Audit.createManyAndReturn\",\"Audit.updateOne\",\"Audit.updateMany\",\"Audit.updateManyAndReturn\",\"Audit.upsertOne\",\"Audit.deleteOne\",\"Audit.deleteMany\",\"Audit.groupBy\",\"Audit.aggregate\",\"Notification.findUnique\",\"Notification.findUniqueOrThrow\",\"Notification.findFirst\",\"Notification.findFirstOrThrow\",\"Notification.findMany\",\"Notification.createOne\",\"Notification.createMany\",\"Notification.createManyAndReturn\",\"Notification.updateOne\",\"Notification.updateMany\",\"Notification.updateManyAndReturn\",\"Notification.upsertOne\",\"Notification.deleteOne\",\"Notification.deleteMany\",\"Notification.groupBy\",\"Notification.aggregate\",\"Box.findUnique\",\"Box.findUniqueOrThrow\",\"Box.findFirst\",\"Box.findFirstOrThrow\",\"Box.findMany\",\"Box.createOne\",\"Box.createMany\",\"Box.createManyAndReturn\",\"Box.updateOne\",\"Box.updateMany\",\"Box.updateManyAndReturn\",\"Box.upsertOne\",\"Box.deleteOne\",\"Box.deleteMany\",\"Box.groupBy\",\"Box.aggregate\",\"Item.findUnique\",\"Item.findUniqueOrThrow\",\"Item.findFirst\",\"Item.findFirstOrThrow\",\"Item.findMany\",\"Item.createOne\",\"Item.createMany\",\"Item.createManyAndReturn\",\"Item.updateOne\",\"Item.updateMany\",\"Item.updateManyAndReturn\",\"Item.upsertOne\",\"Item.deleteOne\",\"Item.deleteMany\",\"_avg\",\"_sum\",\"Item.groupBy\",\"Item.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"createrId\",\"boxId\",\"image\",\"name\",\"description\",\"price\",\"tags\",\"quantity\",\"expiresAt\",\"createdAt\",\"updatedAt\",\"deletedAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"has\",\"hasEvery\",\"hasSome\",\"contains\",\"startsWith\",\"endsWith\",\"color\",\"houseId\",\"isPrivate\",\"userId\",\"title\",\"message\",\"type\",\"link\",\"metadata\",\"readAt\",\"action\",\"tableName\",\"recordId\",\"oldValue\",\"newValue\",\"key\",\"value\",\"relation\",\"organizationId\",\"email\",\"role\",\"status\",\"inviterId\",\"slug\",\"logo\",\"every\",\"some\",\"none\",\"identifier\",\"accountId\",\"providerId\",\"accessToken\",\"refreshToken\",\"idToken\",\"accessTokenExpiresAt\",\"refreshTokenExpiresAt\",\"scope\",\"password\",\"token\",\"ipAddress\",\"userAgent\",\"impersonatedBy\",\"activeOrganizationId\",\"emailVerified\",\"banned\",\"banReason\",\"banExpires\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"push\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), + graph: "xgVmwAEWBAAA_AIAIAUAAP0CACAGAAD-AgAgBwAA_wIAIAgAAO0CACAKAADuAgAgDAAAgAMAIA4AAO8CACDXAQAA-AIAMNgBAAA3ABDZAQAA-AIAMNoBAQAAAAHdAQEA7AIAId4BAQDmAgAh5AFAAOcCACHlAUAA5wIAIYgCAQAAAAGJAgEA7AIAIaACIAD5AgAhoQIgAPoCACGiAgEA7AIAIaMCQAD7AgAhAQAAAAEAIA4DAACDAwAg1wEAAI0DADDYAQAAAwAQ2QEAAI0DADDaAQEA5gIAIeMBQADnAgAh5AFAAOcCACHlAUAA5wIAIfgBAQDmAgAhmwIBAOYCACGcAgEA7AIAIZ0CAQDsAgAhngIBAOwCACGfAgEA7AIAIQUDAAD8BAAgnAIAAI4DACCdAgAAjgMAIJ4CAACOAwAgnwIAAI4DACAOAwAAgwMAINcBAACNAwAw2AEAAAMAENkBAACNAwAw2gEBAAAAAeMBQADnAgAh5AFAAOcCACHlAUAA5wIAIfgBAQDmAgAhmwIBAAAAAZwCAQDsAgAhnQIBAOwCACGeAgEA7AIAIZ8CAQDsAgAhAwAAAAMAIAEAAAQAMAIAAAUAIBEDAACDAwAg1wEAAIwDADDYAQAABwAQ2QEAAIwDADDaAQEA5gIAIeQBQADnAgAh5QFAAOcCACH4AQEA5gIAIZICAQDmAgAhkwIBAOYCACGUAgEA7AIAIZUCAQDsAgAhlgIBAOwCACGXAkAA-wIAIZgCQAD7AgAhmQIBAOwCACGaAgEA7AIAIQgDAAD8BAAglAIAAI4DACCVAgAAjgMAIJYCAACOAwAglwIAAI4DACCYAgAAjgMAIJkCAACOAwAgmgIAAI4DACARAwAAgwMAINcBAACMAwAw2AEAAAcAENkBAACMAwAw2gEBAAAAAeQBQADnAgAh5QFAAOcCACH4AQEA5gIAIZICAQDmAgAhkwIBAOYCACGUAgEA7AIAIZUCAQDsAgAhlgIBAOwCACGXAkAA-wIAIZgCQAD7AgAhmQIBAOwCACGaAgEA7AIAIQMAAAAHACABAAAIADACAAAJACAMAwAAgwMAINcBAACLAwAw2AEAAAsAENkBAACLAwAw2gEBAOYCACHkAUAA5wIAIfgBAQDmAgAh_wEBAOYCACGAAgEA5gIAIYECAQDmAgAhggIBAOwCACGDAgEA7AIAIQMDAAD8BAAgggIAAI4DACCDAgAAjgMAIAwDAACDAwAg1wEAAIsDADDYAQAACwAQ2QEAAIsDADDaAQEAAAAB5AFAAOcCACH4AQEA5gIAIf8BAQDmAgAhgAIBAOYCACGBAgEA5gIAIYICAQDsAgAhgwIBAOwCACEDAAAACwAgAQAADAAwAgAADQAgDQMAAIMDACDXAQAAigMAMNgBAAAPABDZAQAAigMAMNoBAQDmAgAh5AFAAOcCACH4AQEA5gIAIfkBAQDmAgAh-gEBAOYCACH7AQEA5gIAIfwBAQDsAgAh_QEBAOwCACH-AUAA-wIAIQQDAAD8BAAg_AEAAI4DACD9AQAAjgMAIP4BAACOAwAgDQMAAIMDACDXAQAAigMAMNgBAAAPABDZAQAAigMAMNoBAQAAAAHkAUAA5wIAIfgBAQDmAgAh-QEBAOYCACH6AQEA5gIAIfsBAQDmAgAh_AEBAOwCACH9AQEA7AIAIf4BQAD7AgAhAwAAAA8AIAEAABAAMAIAABEAIAoDAACDAwAgCQAAiAMAINcBAACJAwAw2AEAABMAENkBAACJAwAw2gEBAOYCACHkAUAA5wIAIfgBAQDmAgAhhwIBAOYCACGJAgEA5gIAIQIDAAD8BAAgCQAA_gQAIAoDAACDAwAgCQAAiAMAINcBAACJAwAw2AEAABMAENkBAACJAwAw2gEBAAAAAeQBQADnAgAh-AEBAOYCACGHAgEA5gIAIYkCAQDmAgAhAwAAABMAIAEAABQAMAIAABUAIAMAAAATACABAAAUADACAAAVACANAwAAgwMAIAkAAIgDACDXAQAAhwMAMNgBAAAYABDZAQAAhwMAMNoBAQDmAgAh4wFAAOcCACHkAUAA5wIAIYcCAQDmAgAhiAIBAOYCACGJAgEA7AIAIYoCAQDmAgAhiwIBAOYCACEDAwAA_AQAIAkAAP4EACCJAgAAjgMAIA0DAACDAwAgCQAAiAMAINcBAACHAwAw2AEAABgAENkBAACHAwAw2gEBAAAAAeMBQADnAgAh5AFAAOcCACGHAgEA5gIAIYgCAQDmAgAhiQIBAOwCACGKAgEA5gIAIYsCAQDmAgAhAwAAABgAIAEAABkAMAIAABoAIBEDAACDAwAgCQAAhgMAIAwAAIADACDXAQAAhQMAMNgBAAAcABDZAQAAhQMAMNoBAQDmAgAh2wEBAOYCACHeAQEA5gIAId8BAQDsAgAh4QEAAM4CACDkAUAA5wIAIeUBQADnAgAh5gFAAPsCACH1AQEA7AIAIfYBAQDsAgAh9wEgAPkCACEHAwAA_AQAIAkAAP4EACAMAAD7BAAg3wEAAI4DACDmAQAAjgMAIPUBAACOAwAg9gEAAI4DACARAwAAgwMAIAkAAIYDACAMAACAAwAg1wEAAIUDADDYAQAAHAAQ2QEAAIUDADDaAQEAAAAB2wEBAOYCACHeAQEA5gIAId8BAQDsAgAh4QEAAM4CACDkAUAA5wIAIeUBQADnAgAh5gFAAPsCACH1AQEA7AIAIfYBAQDsAgAh9wEgAPkCACEDAAAAHAAgAQAAHQAwAgAAHgAgEgMAAIMDACALAACEAwAg1wEAAIEDADDYAQAAIAAQ2QEAAIEDADDaAQEA5gIAIdsBAQDmAgAh3AEBAOwCACHdAQEA5gIAId4BAQDmAgAh3wEBAOwCACHgAQEA7AIAIeEBAADOAgAg4gECAIIDACHjAUAA5wIAIeQBQADnAgAh5QFAAOcCACHmAUAA-wIAIQYDAAD8BAAgCwAA_QQAINwBAACOAwAg3wEAAI4DACDgAQAAjgMAIOYBAACOAwAgEgMAAIMDACALAACEAwAg1wEAAIEDADDYAQAAIAAQ2QEAAIEDADDaAQEAAAAB2wEBAOYCACHcAQEA7AIAId0BAQDmAgAh3gEBAOYCACHfAQEA7AIAIeABAQDsAgAh4QEAAM4CACDiAQIAggMAIeMBQADnAgAh5AFAAOcCACHlAUAA5wIAIeYBQAD7AgAhAwAAACAAIAEAACEAMAIAACIAIAEAAAAcACANCAAA7QIAIAoAAO4CACAOAADvAgAg1wEAAOsCADDYAQAAJQAQ2QEAAOsCADDaAQEA5gIAId4BAQDmAgAh5AFAAOcCACH1AQEA7AIAIf0BAQDsAgAhjAIBAOYCACGNAgEA7AIAIQEAAAAlACABAAAAIAAgAQAAABMAIAEAAAAYACABAAAAHAAgAwAAABgAIAEAABkAMAIAABoAIAMAAAAcACABAAAdADACAAAeACADAAAAIAAgAQAAIQAwAgAAIgAgAQAAAAMAIAEAAAAHACABAAAACwAgAQAAAA8AIAEAAAATACABAAAAGAAgAQAAABwAIAEAAAAgACABAAAAAQAgFgQAAPwCACAFAAD9AgAgBgAA_gIAIAcAAP8CACAIAADtAgAgCgAA7gIAIAwAAIADACAOAADvAgAg1wEAAPgCADDYAQAANwAQ2QEAAPgCADDaAQEA5gIAId0BAQDsAgAh3gEBAOYCACHkAUAA5wIAIeUBQADnAgAhiAIBAOYCACGJAgEA7AIAIaACIAD5AgAhoQIgAPoCACGiAgEA7AIAIaMCQAD7AgAhDQQAAPcEACAFAAD4BAAgBgAA-QQAIAcAAPoEACAIAAD_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_wMAIAoAAIAEACAOAACBBAAg9QEAAI4DACD9AQAAjgMAII0CAACOAwAgAwAAACUAIAEAAJUBADACAACSAQAgAwAAACUAIAEAAJUBADACAACSAQAgAwAAACUAIAEAAJUBADACAACSAQAgCggAAPwDACAKAAD9AwAgDgAA_gMAINoBAQAAAAHeAQEAAAAB5AFAAAAAAfUBAQAAAAH9AQEAAAABjAIBAAAAAY0CAQAAAAEBFAAAmQEAIAfaAQEAAAAB3gEBAAAAAeQBQAAAAAH1AQEAAAAB_QEBAAAAAYwCAQAAAAGNAgEAAAABARQAAJsBADABFAAAmwEAMAoIAADVAwAgCgAA1gMAIA4AANcDACDaAQEAlAMAId4BAQCUAwAh5AFAAJgDACH1AQEAlQMAIf0BAQCVAwAhjAIBAJQDACGNAgEAlQMAIQIAAACSAQAgFAAAngEAIAfaAQEAlAMAId4BAQCUAwAh5AFAAJgDACH1AQEAlQMAIf0BAQCVAwAhjAIBAJQDACGNAgEAlQMAIQIAAAAlACAUAACgAQAgAgAAACUAIBQAAKABACADAAAAkgEAIBsAAJkBACAcAACeAQAgAQAAAJIBACABAAAAJQAgBg0AANIDACAhAADUAwAgIgAA0wMAIPUBAACOAwAg_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_wEBAAAAAYACAQAAAAGBAgEAAAABggIBAAAAAYMCAQAAAAEBFAAA9AEAIAjaAQEAAAAB5AFAAAAAAfgBAQAAAAH_AQEAAAABgAIBAAAAAYECAQAAAAGCAgEAAAABgwIBAAAAAQEUAAD2AQAwARQAAPYBADAJAwAAvwMAINoBAQCUAwAh5AFAAJgDACH4AQEAlAMAIf8BAQCUAwAhgAIBAJQDACGBAgEAlAMAIYICAQCVAwAhgwIBAJUDACECAAAADQAgFAAA-QEAIAjaAQEAlAMAIeQBQACYAwAh-AEBAJQDACH_AQEAlAMAIYACAQCUAwAhgQIBAJQDACGCAgEAlQMAIYMCAQCVAwAhAgAAAAsAIBQAAPsBACACAAAACwAgFAAA-wEAIAMAAAANACAbAAD0AQAgHAAA-QEAIAEAAAANACABAAAACwAgBQ0AALwDACAhAAC-AwAgIgAAvQMAIIICAACOAwAggwIAAI4DACAL1wEAAOMCADDYAQAAggIAENkBAADjAgAw2gEBAMwCACHkAUAA0AIAIfgBAQDMAgAh_wEBAMwCACGAAgEAzAIAIYECAQDMAgAhggIBAM0CACGDAgEAzQIAIQMAAAALACABAACBAgAwIAAAggIAIAMAAAALACABAAAMADACAAANACABAAAAEQAgAQAAABEAIAMAAAAPACABAAAQADACAAARACADAAAADwAgAQAAEAAwAgAAEQAgAwAAAA8AIAEAABAAMAIAABEAIAoDAAC7AwAg2gEBAAAAAeQBQAAAAAH4AQEAAAAB-QEBAAAAAfoBAQAAAAH7AQEAAAAB_AEBAAAAAf0BAQAAAAH-AUAAAAABARQAAIoCACAJ2gEBAAAAAeQBQAAAAAH4AQEAAAAB-QEBAAAAAfoBAQAAAAH7AQEAAAAB_AEBAAAAAf0BAQAAAAH-AUAAAAABARQAAIwCADABFAAAjAIAMAoDAAC6AwAg2gEBAJQDACHkAUAAmAMAIfgBAQCUAwAh-QEBAJQDACH6AQEAlAMAIfsBAQCUAwAh_AEBAJUDACH9AQEAlQMAIf4BQACZAwAhAgAAABEAIBQAAI8CACAJ2gEBAJQDACHkAUAAmAMAIfgBAQCUAwAh-QEBAJQDACH6AQEAlAMAIfsBAQCUAwAh_AEBAJUDACH9AQEAlQMAIf4BQACZAwAhAgAAAA8AIBQAAJECACACAAAADwAgFAAAkQIAIAMAAAARACAbAACKAgAgHAAAjwIAIAEAAAARACABAAAADwAgBg0AALcDACAhAAC5AwAgIgAAuAMAIPwBAACOAwAg_QEAAI4DACD-AQAAjgMAIAzXAQAA4gIAMNgBAACYAgAQ2QEAAOICADDaAQEAzAIAIeQBQADQAgAh-AEBAMwCACH5AQEAzAIAIfoBAQDMAgAh-wEBAMwCACH8AQEAzQIAIf0BAQDNAgAh_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-QEBAMwCACH6AQEAzAIAIfsBAQDMAgAh_AEBAM0CACH9AQEAzQIAIf4BQADRAgAhC9cBAADjAgAw2AEAAIICABDZAQAA4wIAMNoBAQDMAgAh5AFAANACACH4AQEAzAIAIf8BAQDMAgAhgAIBAMwCACGBAgEAzAIAIYICAQDNAgAhgwIBAM0CACEK1wEAAOQCADDYAQAA7AEAENkBAADkAgAw2gEBAMwCACHfAQEAzAIAIeQBQADQAgAh5QFAANACACGEAgEAzAIAIYUCAQDMAgAhhgIBAMwCACEK1wEAAOUCADDYAQAA2QEAENkBAADlAgAw2gEBAOYCACHfAQEA5gIAIeQBQADnAgAh5QFAAOcCACGEAgEA5gIAIYUCAQDmAgAhhgIBAOYCACEL5wEBAAAAAegBAQAAAATpAQEAAAAE6gEBAAAAAesBAQAAAAHsAQEAAAAB7QEBAAAAAe4BAQDdAgAh8gEBAAAAAfMBAQAAAAH0AQEAAAABCOcBQAAAAAHoAUAAAAAE6QFAAAAABOoBQAAAAAHrAUAAAAAB7AFAAAAAAe0BQAAAAAHuAUAA1wIAIQvXAQAA6AIAMNgBAADTAQAQ2QEAAOgCADDaAQEAzAIAIeMBQADQAgAh5AFAANACACGHAgEAzAIAIYgCAQDMAgAhiQIBAM0CACGKAgEAzAIAIYsCAQDMAgAhCNcBAADpAgAw2AEAAL0BABDZAQAA6QIAMNoBAQDMAgAh5AFAANACACH4AQEAzAIAIYcCAQDMAgAhiQIBAMwCACEK1wEAAOoCADDYAQAApwEAENkBAADqAgAw2gEBAMwCACHeAQEAzAIAIeQBQADQAgAh9QEBAM0CACH9AQEAzQIAIYwCAQDMAgAhjQIBAM0CACENCAAA7QIAIAoAAO4CACAOAADvAgAg1wEAAOsCADDYAQAAJQAQ2QEAAOsCADDaAQEA5gIAId4BAQDmAgAh5AFAAOcCACH1AQEA7AIAIf0BAQDsAgAhjAIBAOYCACGNAgEA7AIAIQvnAQEAAAAB6AEBAAAABekBAQAAAAXqAQEAAAAB6wEBAAAAAewBAQAAAAHtAQEAAAAB7gEBANsCACHyAQEAAAAB8wEBAAAAAfQBAQAAAAEDjgIAABMAII8CAAATACCQAgAAEwAgA44CAAAYACCPAgAAGAAgkAIAABgAIAOOAgAAHAAgjwIAABwAIJACAAAcACAJ1wEAAPACADDYAQAAjwEAENkBAADwAgAw2gEBAMwCACHjAUAA0AIAIeQBQADQAgAh5QFAANACACGFAgEAzAIAIZECAQDMAgAhCdcBAADxAgAw2AEAAHwAENkBAADxAgAw2gEBAOYCACHjAUAA5wIAIeQBQADnAgAh5QFAAOcCACGFAgEA5gIAIZECAQDmAgAhENcBAADyAgAw2AEAAHYAENkBAADyAgAw2gEBAMwCACHkAUAA0AIAIeUBQADQAgAh-AEBAMwCACGSAgEAzAIAIZMCAQDMAgAhlAIBAM0CACGVAgEAzQIAIZYCAQDNAgAhlwJAANECACGYAkAA0QIAIZkCAQDNAgAhmgIBAM0CACEN1wEAAPMCADDYAQAAYAAQ2QEAAPMCADDaAQEAzAIAIeMBQADQAgAh5AFAANACACHlAUAA0AIAIfgBAQDMAgAhmwIBAMwCACGcAgEAzQIAIZ0CAQDNAgAhngIBAM0CACGfAgEAzQIAIQ7XAQAA9AIAMNgBAABKABDZAQAA9AIAMNoBAQDMAgAh3QEBAM0CACHeAQEAzAIAIeQBQADQAgAh5QFAANACACGIAgEAzAIAIYkCAQDNAgAhoAIgAN8CACGhAiAA9QIAIaICAQDNAgAhowJAANECACEFDQAA0wIAICEAAPcCACAiAAD3AgAg5wEgAAAAAe4BIAD2AgAhBQ0AANMCACAhAAD3AgAgIgAA9wIAIOcBIAAAAAHuASAA9gIAIQLnASAAAAAB7gEgAPcCACEWBAAA_AIAIAUAAP0CACAGAAD-AgAgBwAA_wIAIAgAAO0CACAKAADuAgAgDAAAgAMAIA4AAO8CACDXAQAA-AIAMNgBAAA3ABDZAQAA-AIAMNoBAQDmAgAh3QEBAOwCACHeAQEA5gIAIeQBQADnAgAh5QFAAOcCACGIAgEA5gIAIYkCAQDsAgAhoAIgAPkCACGhAiAA-gIAIaICAQDsAgAhowJAAPsCACEC5wEgAAAAAe4BIADhAgAhAucBIAAAAAHuASAA9wIAIQjnAUAAAAAB6AFAAAAABekBQAAAAAXqAUAAAAAB6wFAAAAAAewBQAAAAAHtAUAAAAAB7gFAANQCACEDjgIAAAMAII8CAAADACCQAgAAAwAgA44CAAAHACCPAgAABwAgkAIAAAcAIAOOAgAACwAgjwIAAAsAIJACAAALACADjgIAAA8AII8CAAAPACCQAgAADwAgA44CAAAgACCPAgAAIAAgkAIAACAAIBIDAACDAwAgCwAAhAMAINcBAACBAwAw2AEAACAAENkBAACBAwAw2gEBAOYCACHbAQEA5gIAIdwBAQDsAgAh3QEBAOYCACHeAQEA5gIAId8BAQDsAgAh4AEBAOwCACHhAQAAzgIAIOIBAgCCAwAh4wFAAOcCACHkAUAA5wIAIeUBQADnAgAh5gFAAPsCACEI5wECAAAAAegBAgAAAATpAQIAAAAE6gECAAAAAesBAgAAAAHsAQIAAAAB7QECAAAAAe4BAgDWAgAhGAQAAPwCACAFAAD9AgAgBgAA_gIAIAcAAP8CACAIAADtAgAgCgAA7gIAIAwAAIADACAOAADvAgAg1wEAAPgCADDYAQAANwAQ2QEAAPgCADDaAQEA5gIAId0BAQDsAgAh3gEBAOYCACHkAUAA5wIAIeUBQADnAgAhiAIBAOYCACGJAgEA7AIAIaACIAD5AgAhoQIgAPoCACGiAgEA7AIAIaMCQAD7AgAhpAIAADcAIKUCAAA3ACATAwAAgwMAIAkAAIYDACAMAACAAwAg1wEAAIUDADDYAQAAHAAQ2QEAAIUDADDaAQEA5gIAIdsBAQDmAgAh3gEBAOYCACHfAQEA7AIAIeEBAADOAgAg5AFAAOcCACHlAUAA5wIAIeYBQAD7AgAh9QEBAOwCACH2AQEA7AIAIfcBIAD5AgAhpAIAABwAIKUCAAAcACARAwAAgwMAIAkAAIYDACAMAACAAwAg1wEAAIUDADDYAQAAHAAQ2QEAAIUDADDaAQEA5gIAIdsBAQDmAgAh3gEBAOYCACHfAQEA7AIAIeEBAADOAgAg5AFAAOcCACHlAUAA5wIAIeYBQAD7AgAh9QEBAOwCACH2AQEA7AIAIfcBIAD5AgAhDwgAAO0CACAKAADuAgAgDgAA7wIAINcBAADrAgAw2AEAACUAENkBAADrAgAw2gEBAOYCACHeAQEA5gIAIeQBQADnAgAh9QEBAOwCACH9AQEA7AIAIYwCAQDmAgAhjQIBAOwCACGkAgAAJQAgpQIAACUAIA0DAACDAwAgCQAAiAMAINcBAACHAwAw2AEAABgAENkBAACHAwAw2gEBAOYCACHjAUAA5wIAIeQBQADnAgAhhwIBAOYCACGIAgEA5gIAIYkCAQDsAgAhigIBAOYCACGLAgEA5gIAIQ8IAADtAgAgCgAA7gIAIA4AAO8CACDXAQAA6wIAMNgBAAAlABDZAQAA6wIAMNoBAQDmAgAh3gEBAOYCACHkAUAA5wIAIfUBAQDsAgAh_QEBAOwCACGMAgEA5gIAIY0CAQDsAgAhpAIAACUAIKUCAAAlACAKAwAAgwMAIAkAAIgDACDXAQAAiQMAMNgBAAATABDZAQAAiQMAMNoBAQDmAgAh5AFAAOcCACH4AQEA5gIAIYcCAQDmAgAhiQIBAOYCACENAwAAgwMAINcBAACKAwAw2AEAAA8AENkBAACKAwAw2gEBAOYCACHkAUAA5wIAIfgBAQDmAgAh-QEBAOYCACH6AQEA5gIAIfsBAQDmAgAh_AEBAOwCACH9AQEA7AIAIf4BQAD7AgAhDAMAAIMDACDXAQAAiwMAMNgBAAALABDZAQAAiwMAMNoBAQDmAgAh5AFAAOcCACH4AQEA5gIAIf8BAQDmAgAhgAIBAOYCACGBAgEA5gIAIYICAQDsAgAhgwIBAOwCACERAwAAgwMAINcBAACMAwAw2AEAAAcAENkBAACMAwAw2gEBAOYCACHkAUAA5wIAIeUBQADnAgAh-AEBAOYCACGSAgEA5gIAIZMCAQDmAgAhlAIBAOwCACGVAgEA7AIAIZYCAQDsAgAhlwJAAPsCACGYAkAA-wIAIZkCAQDsAgAhmgIBAOwCACEOAwAAgwMAINcBAACNAwAw2AEAAAMAENkBAACNAwAw2gEBAOYCACHjAUAA5wIAIeQBQADnAgAh5QFAAOcCACH4AQEA5gIAIZsCAQDmAgAhnAIBAOwCACGdAgEA7AIAIZ4CAQDsAgAhnwIBAOwCACEAAAAAAAABqQIBAAAAAQGpAgEAAAABAqkCAQAAAASvAgEAAAAFBakCAgAAAAGwAgIAAAABsQICAAAAAbICAgAAAAGzAgIAAAABAakCQAAAAAEBqQJAAAAAAQUbAAC_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-gEBAAAAAfsBAQAAAAH8AQEAAAAB_QEBAAAAAf4BQAAAAAECAAAAEQAgGwAAygQAIAMAAAARACAbAADKBAAgHAAAyQQAIAEUAACCBQAwDQMAAIMDACDXAQAAigMAMNgBAAAPABDZAQAAigMAMNoBAQAAAAHkAUAA5wIAIfgBAQDmAgAh-QEBAOYCACH6AQEA5gIAIfsBAQDmAgAh_AEBAOwCACH9AQEA7AIAIf4BQAD7AgAhAgAAABEAIBQAAMkEACACAAAAxwQAIBQAAMgEACAM1wEAAMYEADDYAQAAxwQAENkBAADGBAAw2gEBAOYCACHkAUAA5wIAIfgBAQDmAgAh-QEBAOYCACH6AQEA5gIAIfsBAQDmAgAh_AEBAOwCACH9AQEA7AIAIf4BQAD7AgAhDNcBAADGBAAw2AEAAMcEABDZAQAAxgQAMNoBAQDmAgAh5AFAAOcCACH4AQEA5gIAIfkBAQDmAgAh-gEBAOYCACH7AQEA5gIAIfwBAQDsAgAh_QEBAOwCACH-AUAA-wIAIQjaAQEAlAMAIeQBQACYAwAh-QEBAJQDACH6AQEAlAMAIfsBAQCUAwAh_AEBAJUDACH9AQEAlQMAIf4BQACZAwAhCNoBAQCUAwAh5AFAAJgDACH5AQEAlAMAIfoBAQCUAwAh-wEBAJQDACH8AQEAlQMAIf0BAQCVAwAh_gFAAJkDACEI2gEBAAAAAeQBQAAAAAH5AQEAAAAB-gEBAAAAAfsBAQAAAAH8AQEAAAAB_QEBAAAAAf4BQAAAAAEH2gEBAAAAAeQBQAAAAAH_AQEAAAABgAIBAAAAAYECAQAAAAGCAgEAAAABgwIBAAAAAQIAAAANACAbAADWBAAgAwAAAA0AIBsAANYEACAcAADVBAAgARQAAIEFADAMAwAAgwMAINcBAACLAwAw2AEAAAsAENkBAACLAwAw2gEBAAAAAeQBQADnAgAh-AEBAOYCACH_AQEA5gIAIYACAQDmAgAhgQIBAOYCACGCAgEA7AIAIYMCAQDsAgAhAgAAAA0AIBQAANUEACACAAAA0wQAIBQAANQEACAL1wEAANIEADDYAQAA0wQAENkBAADSBAAw2gEBAOYCACHkAUAA5wIAIfgBAQDmAgAh_wEBAOYCACGAAgEA5gIAIYECAQDmAgAhggIBAOwCACGDAgEA7AIAIQvXAQAA0gQAMNgBAADTBAAQ2QEAANIEADDaAQEA5gIAIeQBQADnAgAh-AEBAOYCACH_AQEA5gIAIYACAQDmAgAhgQIBAOYCACGCAgEA7AIAIYMCAQDsAgAhB9oBAQCUAwAh5AFAAJgDACH_AQEAlAMAIYACAQCUAwAhgQIBAJQDACGCAgEAlQMAIYMCAQCVAwAhB9oBAQCUAwAh5AFAAJgDACH_AQEAlAMAIYACAQCUAwAhgQIBAJQDACGCAgEAlQMAIYMCAQCVAwAhB9oBAQAAAAHkAUAAAAAB_wEBAAAAAYACAQAAAAGBAgEAAAABggIBAAAAAYMCAQAAAAEM2gEBAAAAAeQBQAAAAAHlAUAAAAABkgIBAAAAAZMCAQAAAAGUAgEAAAABlQIBAAAAAZYCAQAAAAGXAkAAAAABmAJAAAAAAZkCAQAAAAGaAgEAAAABAgAAAAkAIBsAAOIEACADAAAACQAgGwAA4gQAIBwAAOEEACABFAAAgAUAMBEDAACDAwAg1wEAAIwDADDYAQAABwAQ2QEAAIwDADDaAQEAAAAB5AFAAOcCACHlAUAA5wIAIfgBAQDmAgAhkgIBAOYCACGTAgEA5gIAIZQCAQDsAgAhlQIBAOwCACGWAgEA7AIAIZcCQAD7AgAhmAJAAPsCACGZAgEA7AIAIZoCAQDsAgAhAgAAAAkAIBQAAOEEACACAAAA3wQAIBQAAOAEACAQ1wEAAN4EADDYAQAA3wQAENkBAADeBAAw2gEBAOYCACHkAUAA5wIAIeUBQADnAgAh-AEBAOYCACGSAgEA5gIAIZMCAQDmAgAhlAIBAOwCACGVAgEA7AIAIZYCAQDsAgAhlwJAAPsCACGYAkAA-wIAIZkCAQDsAgAhmgIBAOwCACEQ1wEAAN4EADDYAQAA3wQAENkBAADeBAAw2gEBAOYCACHkAUAA5wIAIeUBQADnAgAh-AEBAOYCACGSAgEA5gIAIZMCAQDmAgAhlAIBAOwCACGVAgEA7AIAIZYCAQDsAgAhlwJAAPsCACGYAkAA-wIAIZkCAQDsAgAhmgIBAOwCACEM2gEBAJQDACHkAUAAmAMAIeUBQACYAwAhkgIBAJQDACGTAgEAlAMAIZQCAQCVAwAhlQIBAJUDACGWAgEAlQMAIZcCQACZAwAhmAJAAJkDACGZAgEAlQMAIZoCAQCVAwAhDNoBAQCUAwAh5AFAAJgDACHlAUAAmAMAIZICAQCUAwAhkwIBAJQDACGUAgEAlQMAIZUCAQCVAwAhlgIBAJUDACGXAkAAmQMAIZgCQACZAwAhmQIBAJUDACGaAgEAlQMAIQzaAQEAAAAB5AFAAAAAAeUBQAAAAAGSAgEAAAABkwIBAAAAAZQCAQAAAAGVAgEAAAABlgIBAAAAAZcCQAAAAAGYAkAAAAABmQIBAAAAAZoCAQAAAAEJ2gEBAAAAAeMBQAAAAAHkAUAAAAAB5QFAAAAAAZsCAQAAAAGcAgEAAAABnQIBAAAAAZ4CAQAAAAGfAgEAAAABAgAAAAUAIBsAAO4EACADAAAABQAgGwAA7gQAIBwAAO0EACABFAAA_wQAMA4DAACDAwAg1wEAAI0DADDYAQAAAwAQ2QEAAI0DADDaAQEAAAAB4wFAAOcCACHkAUAA5wIAIeUBQADnAgAh-AEBAOYCACGbAgEAAAABnAIBAOwCACGdAgEA7AIAIZ4CAQDsAgAhnwIBAOwCACECAAAABQAgFAAA7QQAIAIAAADrBAAgFAAA7AQAIA3XAQAA6gQAMNgBAADrBAAQ2QEAAOoEADDaAQEA5gIAIeMBQADnAgAh5AFAAOcCACHlAUAA5wIAIfgBAQDmAgAhmwIBAOYCACGcAgEA7AIAIZ0CAQDsAgAhngIBAOwCACGfAgEA7AIAIQ3XAQAA6gQAMNgBAADrBAAQ2QEAAOoEADDaAQEA5gIAIeMBQADnAgAh5AFAAOcCACHlAUAA5wIAIfgBAQDmAgAhmwIBAOYCACGcAgEA7AIAIZ0CAQDsAgAhngIBAOwCACGfAgEA7AIAIQnaAQEAlAMAIeMBQACYAwAh5AFAAJgDACHlAUAAmAMAIZsCAQCUAwAhnAIBAJUDACGdAgEAlQMAIZ4CAQCVAwAhnwIBAJUDACEJ2gEBAJQDACHjAUAAmAMAIeQBQACYAwAh5QFAAJgDACGbAgEAlAMAIZwCAQCVAwAhnQIBAJUDACGeAgEAlQMAIZ8CAQCVAwAhCdoBAQAAAAHjAUAAAAAB5AFAAAAAAeUBQAAAAAGbAgEAAAABnAIBAAAAAZ0CAQAAAAGeAgEAAAABnwIBAAAAAQQbAADjBAAwpgIAAOQEADCoAgAA5gQAIKwCAADnBAAwBBsAANcEADCmAgAA2AQAMKgCAADaBAAgrAIAANsEADAEGwAAywQAMKYCAADMBAAwqAIAAM4EACCsAgAAzwQAMAQbAAC_BAAwpgIAAMAEADCoAgAAwgQAIKwCAADDBAAwBBsAALYEADCmAgAAtwQAMKgCAAC5BAAgrAIAAPQDADAEGwAArQQAMKYCAACuBAAwqAIAALAEACCsAgAA6AMAMAQbAACkBAAwpgIAAKUEADCoAgAApwQAIKwCAADcAwAwBBsAAJsEADCmAgAAnAQAMKgCAACeBAAgrAIAAKsDADAAAAAAAA0EAAD3BAAgBQAA-AQAIAYAAPkEACAHAAD6BAAgCAAA_wMAIAoAAIAEACAMAAD7BAAgDgAAgQQAIN0BAACOAwAgiQIAAI4DACChAgAAjgMAIKICAACOAwAgowIAAI4DACAHAwAA_AQAIAkAAP4EACAMAAD7BAAg3wEAAI4DACDmAQAAjgMAIPUBAACOAwAg9gEAAI4DACAGCAAA_wMAIAoAAIAEACAOAACBBAAg9QEAAI4DACD9AQAAjgMAII0CAACOAwAgCdoBAQAAAAHjAUAAAAAB5AFAAAAAAeUBQAAAAAGbAgEAAAABnAIBAAAAAZ0CAQAAAAGeAgEAAAABnwIBAAAAAQzaAQEAAAAB5AFAAAAAAeUBQAAAAAGSAgEAAAABkwIBAAAAAZQCAQAAAAGVAgEAAAABlgIBAAAAAZcCQAAAAAGYAkAAAAABmQIBAAAAAZoCAQAAAAEH2gEBAAAAAeQBQAAAAAH_AQEAAAABgAIBAAAAAYECAQAAAAGCAgEAAAABgwIBAAAAAQjaAQEAAAAB5AFAAAAAAfkBAQAAAAH6AQEAAAAB-wEBAAAAAfwBAQAAAAH9AQEAAAAB_gFAAAAAAQTaAQEAAAAB5AFAAAAAAYcCAQAAAAGJAgEAAAABB9oBAQAAAAHjAUAAAAAB5AFAAAAAAYcCAQAAAAGIAgEAAAABiQIBAAAAAYoCAQAAAAEK2gEBAAAAAd4BAQAAAAHfAQEAAAAB4QEAALMDACDkAUAAAAAB5QFAAAAAAeYBQAAAAAH1AQEAAAAB9gEBAAAAAfcBIAAAAAEM2gEBAAAAAdwBAQAAAAHdAQEAAAAB3gEBAAAAAd8BAQAAAAHgAQEAAAAB4QEAAJwDACDiAQIAAAAB4wFAAAAAAeQBQAAAAAHlAUAAAAAB5gFAAAAAARIFAADwBAAgBgAA8QQAIAcAAPIEACAIAADzBAAgCgAA9AQAIAwAAPYEACAOAAD1BAAg2gEBAAAAAd0BAQAAAAHeAQEAAAAB5AFAAAAAAeUBQAAAAAGIAgEAAAABiQIBAAAAAaACIAAAAAGhAiAAAAABogIBAAAAAaMCQAAAAAECAAAAAQAgGwAAhwUAIAMAAAA3ACAbAACHBQAgHAAAiwUAIBQAAAA3ACAFAACUBAAgBgAAlQQAIAcAAJYEACAIAACXBAAgCgAAmAQAIAwAAJoEACAOAACZBAAgFAAAiwUAINoBAQCUAwAh3QEBAJUDACHeAQEAlAMAIeQBQACYAwAh5QFAAJgDACGIAgEAlAMAIYkCAQCVAwAhoAIgAKMDACGhAiAAkgQAIaICAQCVAwAhowJAAJkDACESBQAAlAQAIAYAAJUEACAHAACWBAAgCAAAlwQAIAoAAJgEACAMAACaBAAgDgAAmQQAINoBAQCUAwAh3QEBAJUDACHeAQEAlAMAIeQBQACYAwAh5QFAAJgDACGIAgEAlAMAIYkCAQCVAwAhoAIgAKMDACGhAiAAkgQAIaICAQCVAwAhowJAAJkDACESBAAA7wQAIAYAAPEEACAHAADyBAAgCAAA8wQAIAoAAPQEACAMAAD2BAAgDgAA9QQAINoBAQAAAAHdAQEAAAAB3gEBAAAAAeQBQAAAAAHlAUAAAAABiAIBAAAAAYkCAQAAAAGgAiAAAAABoQIgAAAAAaICAQAAAAGjAkAAAAABAgAAAAEAIBsAAIwFACADAAAANwAgGwAAjAUAIBwAAJAFACAUAAAANwAgBAAAkwQAIAYAAJUEACAHAACWBAAgCAAAlwQAIAoAAJgEACAMAACaBAAgDgAAmQQAIBQAAJAFACDaAQEAlAMAId0BAQCVAwAh3gEBAJQDACHkAUAAmAMAIeUBQACYAwAhiAIBAJQDACGJAgEAlQMAIaACIACjAwAhoQIgAJIEACGiAgEAlQMAIaMCQACZAwAhEgQAAJMEACAGAACVBAAgBwAAlgQAIAgAAJcEACAKAACYBAAgDAAAmgQAIA4AAJkEACDaAQEAlAMAId0BAQCVAwAh3gEBAJQDACHkAUAAmAMAIeUBQACYAwAhiAIBAJQDACGJAgEAlQMAIaACIACjAwAhoQIgAJIEACGiAgEAlQMAIaMCQACZAwAhBNoBAQAAAAHkAUAAAAAB-AEBAAAAAYkCAQAAAAEH2gEBAAAAAeMBQAAAAAHkAUAAAAABiAIBAAAAAYkCAQAAAAGKAgEAAAABiwIBAAAAAQraAQEAAAAB2wEBAAAAAd4BAQAAAAHfAQEAAAAB4QEAALMDACDkAUAAAAAB5QFAAAAAAeYBQAAAAAH1AQEAAAAB9wEgAAAAARIEAADvBAAgBQAA8AQAIAYAAPEEACAHAADyBAAgCgAA9AQAIAwAAPYEACAOAAD1BAAg2gEBAAAAAd0BAQAAAAHeAQEAAAAB5AFAAAAAAeUBQAAAAAGIAgEAAAABiQIBAAAAAaACIAAAAAGhAiAAAAABogIBAAAAAaMCQAAAAAECAAAAAQAgGwAAlAUAIAkKAAD9AwAgDgAA_gMAINoBAQAAAAHeAQEAAAAB5AFAAAAAAfUBAQAAAAH9AQEAAAABjAIBAAAAAY0CAQAAAAECAAAAkgEAIBsAAJYFACADAAAANwAgGwAAlAUAIBwAAJoFACAUAAAANwAgBAAAkwQAIAUAAJQEACAGAACVBAAgBwAAlgQAIAoAAJgEACAMAACaBAAgDgAAmQQAIBQAAJoFACDaAQEAlAMAId0BAQCVAwAh3gEBAJQDACHkAUAAmAMAIeUBQACYAwAhiAIBAJQDACGJAgEAlQMAIaACIACjAwAhoQIgAJIEACGiAgEAlQMAIaMCQACZAwAhEgQAAJMEACAFAACUBAAgBgAAlQQAIAcAAJYEACAKAACYBAAgDAAAmgQAIA4AAJkEACDaAQEAlAMAId0BAQCVAwAh3gEBAJQDACHkAUAAmAMAIeUBQACYAwAhiAIBAJQDACGJAgEAlQMAIaACIACjAwAhoQIgAJIEACGiAgEAlQMAIaMCQACZAwAhAwAAACUAIBsAAJYFACAcAACdBQAgCwAAACUAIAoAANYDACAOAADXAwAgFAAAnQUAINoBAQCUAwAh3gEBAJQDACHkAUAAmAMAIfUBAQCVAwAh_QEBAJUDACGMAgEAlAMAIY0CAQCVAwAhCQoAANYDACAOAADXAwAg2gEBAJQDACHeAQEAlAMAIeQBQACYAwAh9QEBAJUDACH9AQEAlQMAIYwCAQCUAwAhjQIBAJUDACESBAAA7wQAIAUAAPAEACAGAADxBAAgBwAA8gQAIAgAAPMEACAMAAD2BAAgDgAA9QQAINoBAQAAAAHdAQEAAAAB3gEBAAAAAeQBQAAAAAHlAUAAAAABiAIBAAAAAYkCAQAAAAGgAiAAAAABoQIgAAAAAaICAQAAAAGjAkAAAAABAgAAAAEAIBsAAJ4FACAJCAAA_AMAIA4AAP4DACDaAQEAAAAB3gEBAAAAAeQBQAAAAAH1AQEAAAAB_QEBAAAAAYwCAQAAAAGNAgEAAAABAgAAAJIBACAbAACgBQAgAwAAADcAIBsAAJ4FACAcAACkBQAgFAAAADcAIAQAAJMEACAFAACUBAAgBgAAlQQAIAcAAJYEACAIAACXBAAgDAAAmgQAIA4AAJkEACAUAACkBQAg2gEBAJQDACHdAQEAlQMAId4BAQCUAwAh5AFAAJgDACHlAUAAmAMAIYgCAQCUAwAhiQIBAJUDACGgAiAAowMAIaECIACSBAAhogIBAJUDACGjAkAAmQMAIRIEAACTBAAgBQAAlAQAIAYAAJUEACAHAACWBAAgCAAAlwQAIAwAAJoEACAOAACZBAAg2gEBAJQDACHdAQEAlQMAId4BAQCUAwAh5AFAAJgDACHlAUAAmAMAIYgCAQCUAwAhiQIBAJUDACGgAiAAowMAIaECIACSBAAhogIBAJUDACGjAkAAmQMAIQMAAAAlACAbAACgBQAgHAAApwUAIAsAAAAlACAIAADVAwAgDgAA1wMAIBQAAKcFACDaAQEAlAMAId4BAQCUAwAh5AFAAJgDACH1AQEAlQMAIf0BAQCVAwAhjAIBAJQDACGNAgEAlQMAIQkIAADVAwAgDgAA1wMAINoBAQCUAwAh3gEBAJQDACHkAUAAmAMAIfUBAQCVAwAh_QEBAJUDACGMAgEAlAMAIY0CAQCVAwAhEgQAAO8EACAFAADwBAAgBwAA8gQAIAgAAPMEACAKAAD0BAAgDAAA9gQAIA4AAPUEACDaAQEAAAAB3QEBAAAAAd4BAQAAAAHkAUAAAAAB5QFAAAAAAYgCAQAAAAGJAgEAAAABoAIgAAAAAaECIAAAAAGiAgEAAAABowJAAAAAAQIAAAABACAbAACoBQAgAwAAADcAIBsAAKgFACAcAACsBQAgFAAAADcAIAQAAJMEACAFAACUBAAgBwAAlgQAIAgAAJcEACAKAACYBAAgDAAAmgQAIA4AAJkEACAUAACsBQAg2gEBAJQDACHdAQEAlQMAId4BAQCUAwAh5AFAAJgDACHlAUAAmAMAIYgCAQCUAwAhiQIBAJUDACGgAiAAowMAIaECIACSBAAhogIBAJUDACGjAkAAmQMAIRIEAACTBAAgBQAAlAQAIAcAAJYEACAIAACXBAAgCgAAmAQAIAwAAJoEACAOAACZBAAg2gEBAJQDACHdAQEAlQMAId4BAQCUAwAh5AFAAJgDACHlAUAAmAMAIYgCAQCUAwAhiQIBAJUDACGgAiAAowMAIaECIACSBAAhogIBAJUDACGjAkAAmQMAIRIEAADvBAAgBQAA8AQAIAYAAPEEACAIAADzBAAgCgAA9AQAIAwAAPYEACAOAAD1BAAg2gEBAAAAAd0BAQAAAAHeAQEAAAAB5AFAAAAAAeUBQAAAAAGIAgEAAAABiQIBAAAAAaACIAAAAAGhAiAAAAABogIBAAAAAaMCQAAAAAECAAAAAQAgGwAArQUAIAMAAAA3ACAbAACtBQAgHAAAsQUAIBQAAAA3ACAEAACTBAAgBQAAlAQAIAYAAJUEACAIAACXBAAgCgAAmAQAIAwAAJoEACAOAACZBAAgFAAAsQUAINoBAQCUAwAh3QEBAJUDACHeAQEAlAMAIeQBQACYAwAh5QFAAJgDACGIAgEAlAMAIYkCAQCVAwAhoAIgAKMDACGhAiAAkgQAIaICAQCVAwAhowJAAJkDACESBAAAkwQAIAUAAJQEACAGAACVBAAgCAAAlwQAIAoAAJgEACAMAACaBAAgDgAAmQQAINoBAQCUAwAh3QEBAJUDACHeAQEAlAMAIeQBQACYAwAh5QFAAJgDACGIAgEAlAMAIYkCAQCVAwAhoAIgAKMDACGhAiAAkgQAIaICAQCVAwAhowJAAJkDACESBAAA7wQAIAUAAPAEACAGAADxBAAgBwAA8gQAIAgAAPMEACAKAAD0BAAgDAAA9gQAINoBAQAAAAHdAQEAAAAB3gEBAAAAAeQBQAAAAAHlAUAAAAABiAIBAAAAAYkCAQAAAAGgAiAAAAABoQIgAAAAAaICAQAAAAGjAkAAAAABAgAAAAEAIBsAALIFACAJCAAA_AMAIAoAAP0DACDaAQEAAAAB3gEBAAAAAeQBQAAAAAH1AQEAAAAB_QEBAAAAAYwCAQAAAAGNAgEAAAABAgAAAJIBACAbAAC0BQAgDNoBAQAAAAHbAQEAAAAB3QEBAAAAAd4BAQAAAAHfAQEAAAAB4AEBAAAAAeEBAACcAwAg4gECAAAAAeMBQAAAAAHkAUAAAAAB5QFAAAAAAeYBQAAAAAEDAAAANwAgGwAAsgUAIBwAALkFACAUAAAANwAgBAAAkwQAIAUAAJQEACAGAACVBAAgBwAAlgQAIAgAAJcEACAKAACYBAAgDAAAmgQAIBQAALkFACDaAQEAlAMAId0BAQCVAwAh3gEBAJQDACHkAUAAmAMAIeUBQACYAwAhiAIBAJQDACGJAgEAlQMAIaACIACjAwAhoQIgAJIEACGiAgEAlQMAIaMCQACZAwAhEgQAAJMEACAFAACUBAAgBgAAlQQAIAcAAJYEACAIAACXBAAgCgAAmAQAIAwAAJoEACDaAQEAlAMAId0BAQCVAwAh3gEBAJQDACHkAUAAmAMAIeUBQACYAwAhiAIBAJQDACGJAgEAlQMAIaACIACjAwAhoQIgAJIEACGiAgEAlQMAIaMCQACZAwAhAwAAACUAIBsAALQFACAcAAC8BQAgCwAAACUAIAgAANUDACAKAADWAwAgFAAAvAUAINoBAQCUAwAh3gEBAJQDACHkAUAAmAMAIfUBAQCVAwAh_QEBAJUDACGMAgEAlAMAIY0CAQCVAwAhCQgAANUDACAKAADWAwAg2gEBAJQDACHeAQEAlAMAIeQBQACYAwAh9QEBAJUDACH9AQEAlQMAIYwCAQCUAwAhjQIBAJUDACENAwAAtgMAIAkAALUDACDaAQEAAAAB2wEBAAAAAd4BAQAAAAHfAQEAAAAB4QEAALMDACDkAUAAAAAB5QFAAAAAAeYBQAAAAAH1AQEAAAAB9gEBAAAAAfcBIAAAAAECAAAAHgAgGwAAvQUAIBIEAADvBAAgBQAA8AQAIAYAAPEEACAHAADyBAAgCAAA8wQAIAoAAPQEACAOAAD1BAAg2gEBAAAAAd0BAQAAAAHeAQEAAAAB5AFAAAAAAeUBQAAAAAGIAgEAAAABiQIBAAAAAaACIAAAAAGhAiAAAAABogIBAAAAAaMCQAAAAAECAAAAAQAgGwAAvwUAIAMAAAAcACAbAAC9BQAgHAAAwwUAIA8AAAAcACADAACmAwAgCQAApQMAIBQAAMMFACDaAQEAlAMAIdsBAQCUAwAh3gEBAJQDACHfAQEAlQMAIeEBAACiAwAg5AFAAJgDACHlAUAAmAMAIeYBQACZAwAh9QEBAJUDACH2AQEAlQMAIfcBIACjAwAhDQMAAKYDACAJAAClAwAg2gEBAJQDACHbAQEAlAMAId4BAQCUAwAh3wEBAJUDACHhAQAAogMAIOQBQACYAwAh5QFAAJgDACHmAUAAmQMAIfUBAQCVAwAh9gEBAJUDACH3ASAAowMAIQMAAAA3ACAbAAC_BQAgHAAAxgUAIBQAAAA3ACAEAACTBAAgBQAAlAQAIAYAAJUEACAHAACWBAAgCAAAlwQAIAoAAJgEACAOAACZBAAgFAAAxgUAINoBAQCUAwAh3QEBAJUDACHeAQEAlAMAIeQBQACYAwAh5QFAAJgDACGIAgEAlAMAIYkCAQCVAwAhoAIgAKMDACGhAiAAkgQAIaICAQCVAwAhowJAAJkDACESBAAAkwQAIAUAAJQEACAGAACVBAAgBwAAlgQAIAgAAJcEACAKAACYBAAgDgAAmQQAINoBAQCUAwAh3QEBAJUDACHeAQEAlAMAIeQBQACYAwAh5QFAAJgDACGIAgEAlAMAIYkCAQCVAwAhoAIgAKMDACGhAiAAkgQAIaICAQCVAwAhowJAAJkDACEJBAYCBQoDBg4EBxIFCBYGCisIDC0KDQANDiwJAQMAAQEDAAEBAwABAQMAAQIDAAEJAAcECBcGChsIDQAMDh8JAgMAAQkABwQDAAEJJgcMIwoNAAsCAwABCyQJAQwnAAMIKAAKKQAOKgAIBC4ABS8ABjAABzEACDIACjMADDUADjQAAAAAAw0AEiEAEyIAFAAAAAMNABIhABMiABQBAwABAQMAAQMNABkhABoiABsAAAADDQAZIQAaIgAbAQMAAQEDAAEDDQAgIQAhIgAiAAAAAw0AICEAISIAIgAAAAMNACghACkiACoAAAADDQAoIQApIgAqAAADDQAvIQAwIgAxAAAAAw0ALyEAMCIAMQIDAAEJAAcCAwABCQAHAw0ANiEANyIAOAAAAAMNADYhADciADgCAwABCQAHAgMAAQkABwMNAD0hAD4iAD8AAAADDQA9IQA-IgA_AAAAAw0ARSEARiIARwAAAAMNAEUhAEYiAEcBAwABAQMAAQMNAEwhAE0iAE4AAAADDQBMIQBNIgBOAQMAAQEDAAEDDQBTIQBUIgBVAAAAAw0AUyEAVCIAVQIDAAEJpQIHAgMAAQmrAgcDDQBaIQBbIgBcAAAAAw0AWiEAWyIAXAIDAAELvQIJAgMAAQvDAgkFDQBhIQBkIgBl0wEAYtQBAGMAAAAAAAUNAGEhAGQiAGXTAQBi1AEAYw8CARA2ARE5ARI6ARM7ARU9ARY_DhdADxhCARlEDhpFEB1GAR5HAR9IDiNLESRMFSVNAiZOAidPAihQAilRAipTAitVDixWFi1YAi5aDi9bFzBcAjFdAjJeDjNhGDRiHDVjAzZkAzdlAzhmAzlnAzppAztrDjxsHT1uAz5wDj9xHkByA0FzA0J0DkN3H0R4I0V6JEZ7JEd-JEh_JEmAASRKggEkS4QBDkyFASVNhwEkTokBDk-KASZQiwEkUYwBJFKNAQ5TkAEnVJEBK1WTAQdWlAEHV5YBB1iXAQdZmAEHWpoBB1ucAQ5cnQEsXZ8BB16hAQ5fogEtYKMBB2GkAQdipQEOY6gBLmSpATJlqgEGZqsBBmesAQZorQEGaa4BBmqwAQZrsgEObLMBM221AQZutwEOb7gBNHC5AQZxugEGcrsBDnO-ATV0vwE5dcABCHbBAQh3wgEIeMMBCHnEAQh6xgEIe8gBDnzJATp9ywEIfs0BDn_OATuAAc8BCIEB0AEIggHRAQ6DAdQBPIQB1QFAhQHXAUGGAdgBQYcB2wFBiAHcAUGJAd0BQYoB3wFBiwHhAQ6MAeIBQo0B5AFBjgHmAQ6PAecBQ5AB6AFBkQHpAUGSAeoBDpMB7QFElAHuAUiVAe8BBJYB8AEElwHxAQSYAfIBBJkB8wEEmgH1AQSbAfcBDpwB-AFJnQH6AQSeAfwBDp8B_QFKoAH-AQShAf8BBKIBgAIOowGDAkukAYQCT6UBhQIFpgGGAgWnAYcCBagBiAIFqQGJAgWqAYsCBasBjQIOrAGOAlCtAZACBa4BkgIOrwGTAlGwAZQCBbEBlQIFsgGWAg6zAZkCUrQBmgJWtQGbAgm2AZwCCbcBnQIJuAGeAgm5AZ8CCboBoQIJuwGjAg68AaQCV70BpwIJvgGpAg6_AaoCWMABrAIJwQGtAgnCAa4CDsMBsQJZxAGyAl3FAbMCCsYBtAIKxwG1AgrIAbYCCskBtwIKygG5AgrLAbsCDswBvAJezQG_AgrOAcECDs8BwgJf0AHEAgrRAcUCCtIBxgIO1QHJAmDWAcoCZg" } async function decodeBase64AsWasm(wasmBase64: string): Promise { diff --git a/src/generated/prisma/internal/prismaNamespace.ts b/src/generated/prisma/internal/prismaNamespace.ts index 7468cfd..79dae95 100644 --- a/src/generated/prisma/internal/prismaNamespace.ts +++ b/src/generated/prisma/internal/prismaNamespace.ts @@ -1488,12 +1488,11 @@ export type NotificationScalarFieldEnum = (typeof NotificationScalarFieldEnum)[k export const BoxScalarFieldEnum = { id: 'id', - houseId: 'houseId', - icon: 'icon', - color: 'color', name: 'name', description: 'description', tags: 'tags', + color: 'color', + houseId: 'houseId', createrId: 'createrId', createdAt: 'createdAt', updatedAt: 'updatedAt', diff --git a/src/generated/prisma/internal/prismaNamespaceBrowser.ts b/src/generated/prisma/internal/prismaNamespaceBrowser.ts index 812d92a..cd6dbf7 100644 --- a/src/generated/prisma/internal/prismaNamespaceBrowser.ts +++ b/src/generated/prisma/internal/prismaNamespaceBrowser.ts @@ -227,12 +227,11 @@ export type NotificationScalarFieldEnum = (typeof NotificationScalarFieldEnum)[k export const BoxScalarFieldEnum = { id: 'id', - houseId: 'houseId', - icon: 'icon', - color: 'color', name: 'name', description: 'description', tags: 'tags', + color: 'color', + houseId: 'houseId', createrId: 'createrId', createdAt: 'createdAt', updatedAt: 'updatedAt', diff --git a/src/generated/prisma/models/Box.ts b/src/generated/prisma/models/Box.ts index ee4f468..99c0a58 100644 --- a/src/generated/prisma/models/Box.ts +++ b/src/generated/prisma/models/Box.ts @@ -26,11 +26,10 @@ export type AggregateBox = { export type BoxMinAggregateOutputType = { id: string | null - houseId: string | null - icon: string | null - color: string | null name: string | null description: string | null + color: string | null + houseId: string | null createrId: string | null createdAt: Date | null updatedAt: Date | null @@ -40,11 +39,10 @@ export type BoxMinAggregateOutputType = { export type BoxMaxAggregateOutputType = { id: string | null - houseId: string | null - icon: string | null - color: string | null name: string | null description: string | null + color: string | null + houseId: string | null createrId: string | null createdAt: Date | null updatedAt: Date | null @@ -54,12 +52,11 @@ export type BoxMaxAggregateOutputType = { export type BoxCountAggregateOutputType = { id: number - houseId: number - icon: number - color: number name: number description: number tags: number + color: number + houseId: number createrId: number createdAt: number updatedAt: number @@ -71,11 +68,10 @@ export type BoxCountAggregateOutputType = { export type BoxMinAggregateInputType = { id?: true - houseId?: true - icon?: true - color?: true name?: true description?: true + color?: true + houseId?: true createrId?: true createdAt?: true updatedAt?: true @@ -85,11 +81,10 @@ export type BoxMinAggregateInputType = { export type BoxMaxAggregateInputType = { id?: true - houseId?: true - icon?: true - color?: true name?: true description?: true + color?: true + houseId?: true createrId?: true createdAt?: true updatedAt?: true @@ -99,12 +94,11 @@ export type BoxMaxAggregateInputType = { export type BoxCountAggregateInputType = { id?: true - houseId?: true - icon?: true - color?: true name?: true description?: true tags?: true + color?: true + houseId?: true createrId?: true createdAt?: true updatedAt?: true @@ -187,12 +181,11 @@ export type BoxGroupByArgs | string - houseId?: Prisma.StringNullableFilter<"Box"> | string | null - icon?: Prisma.StringFilter<"Box"> | string - color?: Prisma.StringFilter<"Box"> | string name?: Prisma.StringFilter<"Box"> | string description?: Prisma.StringNullableFilter<"Box"> | string | null tags?: Prisma.StringNullableListFilter<"Box"> + color?: Prisma.StringNullableFilter<"Box"> | string | null + houseId?: Prisma.StringNullableFilter<"Box"> | string | null createrId?: Prisma.StringFilter<"Box"> | string createdAt?: Prisma.DateTimeFilter<"Box"> | Date | string updatedAt?: Prisma.DateTimeFilter<"Box"> | Date | string @@ -241,12 +233,11 @@ export type BoxWhereInput = { export type BoxOrderByWithRelationInput = { id?: Prisma.SortOrder - houseId?: Prisma.SortOrderInput | Prisma.SortOrder - icon?: Prisma.SortOrder - color?: Prisma.SortOrder name?: Prisma.SortOrder description?: Prisma.SortOrderInput | Prisma.SortOrder tags?: Prisma.SortOrder + color?: Prisma.SortOrderInput | Prisma.SortOrder + houseId?: Prisma.SortOrderInput | Prisma.SortOrder createrId?: Prisma.SortOrder createdAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder @@ -259,15 +250,14 @@ export type BoxOrderByWithRelationInput = { export type BoxWhereUniqueInput = Prisma.AtLeast<{ id?: string - name?: string AND?: Prisma.BoxWhereInput | Prisma.BoxWhereInput[] OR?: Prisma.BoxWhereInput[] NOT?: Prisma.BoxWhereInput | Prisma.BoxWhereInput[] - houseId?: Prisma.StringNullableFilter<"Box"> | string | null - icon?: Prisma.StringFilter<"Box"> | string - color?: Prisma.StringFilter<"Box"> | string + name?: Prisma.StringFilter<"Box"> | string description?: Prisma.StringNullableFilter<"Box"> | string | null tags?: Prisma.StringNullableListFilter<"Box"> + color?: Prisma.StringNullableFilter<"Box"> | string | null + houseId?: Prisma.StringNullableFilter<"Box"> | string | null createrId?: Prisma.StringFilter<"Box"> | string createdAt?: Prisma.DateTimeFilter<"Box"> | Date | string updatedAt?: Prisma.DateTimeFilter<"Box"> | Date | string @@ -276,16 +266,15 @@ export type BoxWhereUniqueInput = Prisma.AtLeast<{ items?: Prisma.ItemListRelationFilter house?: Prisma.XOR | null user?: Prisma.XOR -}, "id" | "name"> +}, "id"> export type BoxOrderByWithAggregationInput = { id?: Prisma.SortOrder - houseId?: Prisma.SortOrderInput | Prisma.SortOrder - icon?: Prisma.SortOrder - color?: Prisma.SortOrder name?: Prisma.SortOrder description?: Prisma.SortOrderInput | Prisma.SortOrder tags?: Prisma.SortOrder + color?: Prisma.SortOrderInput | Prisma.SortOrder + houseId?: Prisma.SortOrderInput | Prisma.SortOrder createrId?: Prisma.SortOrder createdAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder @@ -301,12 +290,11 @@ export type BoxScalarWhereWithAggregatesInput = { OR?: Prisma.BoxScalarWhereWithAggregatesInput[] NOT?: Prisma.BoxScalarWhereWithAggregatesInput | Prisma.BoxScalarWhereWithAggregatesInput[] id?: Prisma.StringWithAggregatesFilter<"Box"> | string - houseId?: Prisma.StringNullableWithAggregatesFilter<"Box"> | string | null - icon?: Prisma.StringWithAggregatesFilter<"Box"> | string - color?: Prisma.StringWithAggregatesFilter<"Box"> | string name?: Prisma.StringWithAggregatesFilter<"Box"> | string description?: Prisma.StringNullableWithAggregatesFilter<"Box"> | string | null tags?: Prisma.StringNullableListFilter<"Box"> + color?: Prisma.StringNullableWithAggregatesFilter<"Box"> | string | null + houseId?: Prisma.StringNullableWithAggregatesFilter<"Box"> | string | null createrId?: Prisma.StringWithAggregatesFilter<"Box"> | string createdAt?: Prisma.DateTimeWithAggregatesFilter<"Box"> | Date | string updatedAt?: Prisma.DateTimeWithAggregatesFilter<"Box"> | Date | string @@ -316,11 +304,10 @@ export type BoxScalarWhereWithAggregatesInput = { export type BoxCreateInput = { id?: string - icon: string - color: string name: string description?: string | null tags?: Prisma.BoxCreatetagsInput | string[] + color?: string | null createdAt?: Date | string updatedAt?: Date | string deletedAt?: Date | string | null @@ -332,12 +319,11 @@ export type BoxCreateInput = { export type BoxUncheckedCreateInput = { id?: string - houseId?: string | null - icon: string - color: string name: string description?: string | null tags?: Prisma.BoxCreatetagsInput | string[] + color?: string | null + houseId?: string | null createrId: string createdAt?: Date | string updatedAt?: Date | string @@ -348,11 +334,10 @@ export type BoxUncheckedCreateInput = { export type BoxUpdateInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - icon?: Prisma.StringFieldUpdateOperationsInput | string - color?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null tags?: Prisma.BoxUpdatetagsInput | string[] + color?: Prisma.NullableStringFieldUpdateOperationsInput | string | null createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string deletedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null @@ -364,12 +349,11 @@ export type BoxUpdateInput = { export type BoxUncheckedUpdateInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - houseId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - icon?: Prisma.StringFieldUpdateOperationsInput | string - color?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null tags?: Prisma.BoxUpdatetagsInput | string[] + color?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + houseId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null createrId?: Prisma.StringFieldUpdateOperationsInput | string createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string @@ -380,12 +364,11 @@ export type BoxUncheckedUpdateInput = { export type BoxCreateManyInput = { id?: string - houseId?: string | null - icon: string - color: string name: string description?: string | null tags?: Prisma.BoxCreatetagsInput | string[] + color?: string | null + houseId?: string | null createrId: string createdAt?: Date | string updatedAt?: Date | string @@ -395,11 +378,10 @@ export type BoxCreateManyInput = { export type BoxUpdateManyMutationInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - icon?: Prisma.StringFieldUpdateOperationsInput | string - color?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null tags?: Prisma.BoxUpdatetagsInput | string[] + color?: Prisma.NullableStringFieldUpdateOperationsInput | string | null createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string deletedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null @@ -408,12 +390,11 @@ export type BoxUpdateManyMutationInput = { export type BoxUncheckedUpdateManyInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - houseId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - icon?: Prisma.StringFieldUpdateOperationsInput | string - color?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null tags?: Prisma.BoxUpdatetagsInput | string[] + color?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + houseId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null createrId?: Prisma.StringFieldUpdateOperationsInput | string createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string @@ -441,12 +422,11 @@ export type StringNullableListFilter<$PrismaModel = never> = { export type BoxCountOrderByAggregateInput = { id?: Prisma.SortOrder - houseId?: Prisma.SortOrder - icon?: Prisma.SortOrder - color?: Prisma.SortOrder name?: Prisma.SortOrder description?: Prisma.SortOrder tags?: Prisma.SortOrder + color?: Prisma.SortOrder + houseId?: Prisma.SortOrder createrId?: Prisma.SortOrder createdAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder @@ -456,11 +436,10 @@ export type BoxCountOrderByAggregateInput = { export type BoxMaxOrderByAggregateInput = { id?: Prisma.SortOrder - houseId?: Prisma.SortOrder - icon?: Prisma.SortOrder - color?: Prisma.SortOrder name?: Prisma.SortOrder description?: Prisma.SortOrder + color?: Prisma.SortOrder + houseId?: Prisma.SortOrder createrId?: Prisma.SortOrder createdAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder @@ -470,11 +449,10 @@ export type BoxMaxOrderByAggregateInput = { export type BoxMinOrderByAggregateInput = { id?: Prisma.SortOrder - houseId?: Prisma.SortOrder - icon?: Prisma.SortOrder - color?: Prisma.SortOrder name?: Prisma.SortOrder description?: Prisma.SortOrder + color?: Prisma.SortOrder + houseId?: Prisma.SortOrder createrId?: Prisma.SortOrder createdAt?: Prisma.SortOrder updatedAt?: Prisma.SortOrder @@ -598,11 +576,10 @@ export type BoxUpdateOneWithoutItemsNestedInput = { export type BoxCreateWithoutUserInput = { id?: string - icon: string - color: string name: string description?: string | null tags?: Prisma.BoxCreatetagsInput | string[] + color?: string | null createdAt?: Date | string updatedAt?: Date | string deletedAt?: Date | string | null @@ -613,12 +590,11 @@ export type BoxCreateWithoutUserInput = { export type BoxUncheckedCreateWithoutUserInput = { id?: string - houseId?: string | null - icon: string - color: string name: string description?: string | null tags?: Prisma.BoxCreatetagsInput | string[] + color?: string | null + houseId?: string | null createdAt?: Date | string updatedAt?: Date | string deletedAt?: Date | string | null @@ -657,12 +633,11 @@ export type BoxScalarWhereInput = { OR?: Prisma.BoxScalarWhereInput[] NOT?: Prisma.BoxScalarWhereInput | Prisma.BoxScalarWhereInput[] id?: Prisma.StringFilter<"Box"> | string - houseId?: Prisma.StringNullableFilter<"Box"> | string | null - icon?: Prisma.StringFilter<"Box"> | string - color?: Prisma.StringFilter<"Box"> | string name?: Prisma.StringFilter<"Box"> | string description?: Prisma.StringNullableFilter<"Box"> | string | null tags?: Prisma.StringNullableListFilter<"Box"> + color?: Prisma.StringNullableFilter<"Box"> | string | null + houseId?: Prisma.StringNullableFilter<"Box"> | string | null createrId?: Prisma.StringFilter<"Box"> | string createdAt?: Prisma.DateTimeFilter<"Box"> | Date | string updatedAt?: Prisma.DateTimeFilter<"Box"> | Date | string @@ -672,11 +647,10 @@ export type BoxScalarWhereInput = { export type BoxCreateWithoutHouseInput = { id?: string - icon: string - color: string name: string description?: string | null tags?: Prisma.BoxCreatetagsInput | string[] + color?: string | null createdAt?: Date | string updatedAt?: Date | string deletedAt?: Date | string | null @@ -687,11 +661,10 @@ export type BoxCreateWithoutHouseInput = { export type BoxUncheckedCreateWithoutHouseInput = { id?: string - icon: string - color: string name: string description?: string | null tags?: Prisma.BoxCreatetagsInput | string[] + color?: string | null createrId: string createdAt?: Date | string updatedAt?: Date | string @@ -728,11 +701,10 @@ export type BoxUpdateManyWithWhereWithoutHouseInput = { export type BoxCreateWithoutItemsInput = { id?: string - icon: string - color: string name: string description?: string | null tags?: Prisma.BoxCreatetagsInput | string[] + color?: string | null createdAt?: Date | string updatedAt?: Date | string deletedAt?: Date | string | null @@ -743,12 +715,11 @@ export type BoxCreateWithoutItemsInput = { export type BoxUncheckedCreateWithoutItemsInput = { id?: string - houseId?: string | null - icon: string - color: string name: string description?: string | null tags?: Prisma.BoxCreatetagsInput | string[] + color?: string | null + houseId?: string | null createrId: string createdAt?: Date | string updatedAt?: Date | string @@ -774,11 +745,10 @@ export type BoxUpdateToOneWithWhereWithoutItemsInput = { export type BoxUpdateWithoutItemsInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - icon?: Prisma.StringFieldUpdateOperationsInput | string - color?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null tags?: Prisma.BoxUpdatetagsInput | string[] + color?: Prisma.NullableStringFieldUpdateOperationsInput | string | null createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string deletedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null @@ -789,12 +759,11 @@ export type BoxUpdateWithoutItemsInput = { export type BoxUncheckedUpdateWithoutItemsInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - houseId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - icon?: Prisma.StringFieldUpdateOperationsInput | string - color?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null tags?: Prisma.BoxUpdatetagsInput | string[] + color?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + houseId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null createrId?: Prisma.StringFieldUpdateOperationsInput | string createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string @@ -804,12 +773,11 @@ export type BoxUncheckedUpdateWithoutItemsInput = { export type BoxCreateManyUserInput = { id?: string - houseId?: string | null - icon: string - color: string name: string description?: string | null tags?: Prisma.BoxCreatetagsInput | string[] + color?: string | null + houseId?: string | null createdAt?: Date | string updatedAt?: Date | string deletedAt?: Date | string | null @@ -818,11 +786,10 @@ export type BoxCreateManyUserInput = { export type BoxUpdateWithoutUserInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - icon?: Prisma.StringFieldUpdateOperationsInput | string - color?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null tags?: Prisma.BoxUpdatetagsInput | string[] + color?: Prisma.NullableStringFieldUpdateOperationsInput | string | null createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string deletedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null @@ -833,12 +800,11 @@ export type BoxUpdateWithoutUserInput = { export type BoxUncheckedUpdateWithoutUserInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - houseId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - icon?: Prisma.StringFieldUpdateOperationsInput | string - color?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null tags?: Prisma.BoxUpdatetagsInput | string[] + color?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + houseId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string deletedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null @@ -848,12 +814,11 @@ export type BoxUncheckedUpdateWithoutUserInput = { export type BoxUncheckedUpdateManyWithoutUserInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - houseId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - icon?: Prisma.StringFieldUpdateOperationsInput | string - color?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null tags?: Prisma.BoxUpdatetagsInput | string[] + color?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + houseId?: Prisma.NullableStringFieldUpdateOperationsInput | string | null createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string deletedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null @@ -862,11 +827,10 @@ export type BoxUncheckedUpdateManyWithoutUserInput = { export type BoxCreateManyHouseInput = { id?: string - icon: string - color: string name: string description?: string | null tags?: Prisma.BoxCreatetagsInput | string[] + color?: string | null createrId: string createdAt?: Date | string updatedAt?: Date | string @@ -876,11 +840,10 @@ export type BoxCreateManyHouseInput = { export type BoxUpdateWithoutHouseInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - icon?: Prisma.StringFieldUpdateOperationsInput | string - color?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null tags?: Prisma.BoxUpdatetagsInput | string[] + color?: Prisma.NullableStringFieldUpdateOperationsInput | string | null createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string deletedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null @@ -891,11 +854,10 @@ export type BoxUpdateWithoutHouseInput = { export type BoxUncheckedUpdateWithoutHouseInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - icon?: Prisma.StringFieldUpdateOperationsInput | string - color?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null tags?: Prisma.BoxUpdatetagsInput | string[] + color?: Prisma.NullableStringFieldUpdateOperationsInput | string | null createrId?: Prisma.StringFieldUpdateOperationsInput | string createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string @@ -906,11 +868,10 @@ export type BoxUncheckedUpdateWithoutHouseInput = { export type BoxUncheckedUpdateManyWithoutHouseInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - icon?: Prisma.StringFieldUpdateOperationsInput | string - color?: Prisma.StringFieldUpdateOperationsInput | string name?: Prisma.StringFieldUpdateOperationsInput | string description?: Prisma.NullableStringFieldUpdateOperationsInput | string | null tags?: Prisma.BoxUpdatetagsInput | string[] + color?: Prisma.NullableStringFieldUpdateOperationsInput | string | null createrId?: Prisma.StringFieldUpdateOperationsInput | string createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string @@ -951,12 +912,11 @@ export type BoxCountOutputTypeCountItemsArgs = runtime.Types.Extensions.GetSelect<{ id?: boolean - houseId?: boolean - icon?: boolean - color?: boolean name?: boolean description?: boolean tags?: boolean + color?: boolean + houseId?: boolean createrId?: boolean createdAt?: boolean updatedAt?: boolean @@ -970,12 +930,11 @@ export type BoxSelect = runtime.Types.Extensions.GetSelect<{ id?: boolean - houseId?: boolean - icon?: boolean - color?: boolean name?: boolean description?: boolean tags?: boolean + color?: boolean + houseId?: boolean createrId?: boolean createdAt?: boolean updatedAt?: boolean @@ -987,12 +946,11 @@ export type BoxSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{ id?: boolean - houseId?: boolean - icon?: boolean - color?: boolean name?: boolean description?: boolean tags?: boolean + color?: boolean + houseId?: boolean createrId?: boolean createdAt?: boolean updatedAt?: boolean @@ -1004,12 +962,11 @@ export type BoxSelectUpdateManyAndReturn = runtime.Types.Extensions.GetOmit<"id" | "houseId" | "icon" | "color" | "name" | "description" | "tags" | "createrId" | "createdAt" | "updatedAt" | "deletedAt" | "isPrivate", ExtArgs["result"]["box"]> +export type BoxOmit = runtime.Types.Extensions.GetOmit<"id" | "name" | "description" | "tags" | "color" | "houseId" | "createrId" | "createdAt" | "updatedAt" | "deletedAt" | "isPrivate", ExtArgs["result"]["box"]> export type BoxInclude = { items?: boolean | Prisma.Box$itemsArgs house?: boolean | Prisma.Box$houseArgs @@ -1042,12 +999,11 @@ export type $BoxPayload - readonly houseId: Prisma.FieldRef<"Box", 'String'> - readonly icon: Prisma.FieldRef<"Box", 'String'> - readonly color: Prisma.FieldRef<"Box", 'String'> readonly name: Prisma.FieldRef<"Box", 'String'> readonly description: Prisma.FieldRef<"Box", 'String'> readonly tags: Prisma.FieldRef<"Box", 'String[]'> + readonly color: Prisma.FieldRef<"Box", 'String'> + readonly houseId: Prisma.FieldRef<"Box", 'String'> readonly createrId: Prisma.FieldRef<"Box", 'String'> readonly createdAt: Prisma.FieldRef<"Box", 'DateTime'> readonly updatedAt: Prisma.FieldRef<"Box", 'DateTime'> diff --git a/src/hooks/use-app-form.ts b/src/hooks/use-app-form.ts index 8965666..93d47fa 100644 --- a/src/hooks/use-app-form.ts +++ b/src/hooks/use-app-form.ts @@ -2,9 +2,11 @@ import { FileField, HiddenField, Select, + SelectHouse, SelectNumber, SelectUser, SubscribeButton, + TagInput, TextArea, TextField, } from '@/components/form/form-components'; @@ -22,6 +24,8 @@ export const { useAppForm } = createFormHook({ SelectNumber, FileField, SelectUser, + SelectHouse, + TagInput, }, formComponents: { SubscribeButton, diff --git a/src/routeTree.gen.ts b/src/routeTree.gen.ts index 634a6bc..c16c703 100644 --- a/src/routeTree.gen.ts +++ b/src/routeTree.gen.ts @@ -27,6 +27,7 @@ import { Route as appauthManagementDashboardRouteImport } from './routes/(app)/( import { Route as appauthKanriUsersRouteImport } from './routes/(app)/(auth)/kanri/users' import { Route as appauthKanriSettingsRouteImport } from './routes/(app)/(auth)/kanri/settings' import { Route as appauthKanriLogsRouteImport } from './routes/(app)/(auth)/kanri/logs' +import { Route as appauthKanriItemsRouteImport } from './routes/(app)/(auth)/kanri/items' import { Route as appauthKanriHousesRouteImport } from './routes/(app)/(auth)/kanri/houses' import { Route as appauthKanriBoxesRouteImport } from './routes/(app)/(auth)/kanri/boxes' import { Route as appauthAccountSettingsRouteImport } from './routes/(app)/(auth)/account/settings' @@ -123,6 +124,11 @@ const appauthKanriLogsRoute = appauthKanriLogsRouteImport.update({ path: '/logs', getParentRoute: () => appauthKanriRouteRoute, } as any) +const appauthKanriItemsRoute = appauthKanriItemsRouteImport.update({ + id: '/items', + path: '/items', + getParentRoute: () => appauthKanriRouteRoute, +} as any) const appauthKanriHousesRoute = appauthKanriHousesRouteImport.update({ id: '/houses', path: '/houses', @@ -163,6 +169,7 @@ export interface FileRoutesByFullPath { '/account/settings': typeof appauthAccountSettingsRoute '/kanri/boxes': typeof appauthKanriBoxesRoute '/kanri/houses': typeof appauthKanriHousesRoute + '/kanri/items': typeof appauthKanriItemsRoute '/kanri/logs': typeof appauthKanriLogsRoute '/kanri/settings': typeof appauthKanriSettingsRoute '/kanri/users': typeof appauthKanriUsersRoute @@ -183,6 +190,7 @@ export interface FileRoutesByTo { '/account/settings': typeof appauthAccountSettingsRoute '/kanri/boxes': typeof appauthKanriBoxesRoute '/kanri/houses': typeof appauthKanriHousesRoute + '/kanri/items': typeof appauthKanriItemsRoute '/kanri/logs': typeof appauthKanriLogsRoute '/kanri/settings': typeof appauthKanriSettingsRoute '/kanri/users': typeof appauthKanriUsersRoute @@ -209,6 +217,7 @@ export interface FileRoutesById { '/(app)/(auth)/account/settings': typeof appauthAccountSettingsRoute '/(app)/(auth)/kanri/boxes': typeof appauthKanriBoxesRoute '/(app)/(auth)/kanri/houses': typeof appauthKanriHousesRoute + '/(app)/(auth)/kanri/items': typeof appauthKanriItemsRoute '/(app)/(auth)/kanri/logs': typeof appauthKanriLogsRoute '/(app)/(auth)/kanri/settings': typeof appauthKanriSettingsRoute '/(app)/(auth)/kanri/users': typeof appauthKanriUsersRoute @@ -234,6 +243,7 @@ export interface FileRouteTypes { | '/account/settings' | '/kanri/boxes' | '/kanri/houses' + | '/kanri/items' | '/kanri/logs' | '/kanri/settings' | '/kanri/users' @@ -254,6 +264,7 @@ export interface FileRouteTypes { | '/account/settings' | '/kanri/boxes' | '/kanri/houses' + | '/kanri/items' | '/kanri/logs' | '/kanri/settings' | '/kanri/users' @@ -279,6 +290,7 @@ export interface FileRouteTypes { | '/(app)/(auth)/account/settings' | '/(app)/(auth)/kanri/boxes' | '/(app)/(auth)/kanri/houses' + | '/(app)/(auth)/kanri/items' | '/(app)/(auth)/kanri/logs' | '/(app)/(auth)/kanri/settings' | '/(app)/(auth)/kanri/users' @@ -425,6 +437,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof appauthKanriLogsRouteImport parentRoute: typeof appauthKanriRouteRoute } + '/(app)/(auth)/kanri/items': { + id: '/(app)/(auth)/kanri/items' + path: '/items' + fullPath: '/kanri/items' + preLoaderRoute: typeof appauthKanriItemsRouteImport + parentRoute: typeof appauthKanriRouteRoute + } '/(app)/(auth)/kanri/houses': { id: '/(app)/(auth)/kanri/houses' path: '/houses' @@ -483,6 +502,7 @@ const appauthAccountRouteRouteWithChildren = interface appauthKanriRouteRouteChildren { appauthKanriBoxesRoute: typeof appauthKanriBoxesRoute appauthKanriHousesRoute: typeof appauthKanriHousesRoute + appauthKanriItemsRoute: typeof appauthKanriItemsRoute appauthKanriLogsRoute: typeof appauthKanriLogsRoute appauthKanriSettingsRoute: typeof appauthKanriSettingsRoute appauthKanriUsersRoute: typeof appauthKanriUsersRoute @@ -492,6 +512,7 @@ interface appauthKanriRouteRouteChildren { const appauthKanriRouteRouteChildren: appauthKanriRouteRouteChildren = { appauthKanriBoxesRoute: appauthKanriBoxesRoute, appauthKanriHousesRoute: appauthKanriHousesRoute, + appauthKanriItemsRoute: appauthKanriItemsRoute, appauthKanriLogsRoute: appauthKanriLogsRoute, appauthKanriSettingsRoute: appauthKanriSettingsRoute, appauthKanriUsersRoute: appauthKanriUsersRoute, diff --git a/src/routes/(app)/(auth)/kanri/boxes.tsx b/src/routes/(app)/(auth)/kanri/boxes.tsx index d4351bf..bccd987 100644 --- a/src/routes/(app)/(auth)/kanri/boxes.tsx +++ b/src/routes/(app)/(auth)/kanri/boxes.tsx @@ -1,7 +1,13 @@ +import { boxColumns } from '@/components/boxes/box-columns'; +import CreateBoxAction from '@/components/boxes/create-box-dialog'; +import DataTable from '@/components/DataTable'; import SearchInput from '@/components/ui/search-input'; +import { Skeleton } from '@/components/ui/skeleton'; import useDebounced from '@/hooks/use-debounced'; import { m } from '@/paraglide/messages'; +import { boxQueries } from '@/service/queries'; import { PackageIcon } from '@phosphor-icons/react'; +import { useQuery } from '@tanstack/react-query'; import { createFileRoute } from '@tanstack/react-router'; import { Card, CardContent, CardHeader, CardTitle } from '@ui/card'; import { useState } from 'react'; @@ -17,11 +23,27 @@ function RouteComponent() { const [searchKeyword, setSearchKeyword] = useState(''); const debouncedSearch = useDebounced(searchKeyword, 500); + const { data, isLoading } = useQuery( + boxQueries.list({ + page, + limit: pageLimit, + keyword: debouncedSearch, + }), + ); + const onSearchChange = (e: React.ChangeEvent) => { setSearchKeyword(e.target.value); setPage(1); }; + if (isLoading) { + return ( +
+ +
+ ); + } + return (
@@ -29,7 +51,7 @@ function RouteComponent() { - {m.boxes_pages_ui_title()} + {m.boxes_page_ui_title()} @@ -38,8 +60,21 @@ function RouteComponent() { keywords={searchKeyword} setKeyword={setSearchKeyword} onChange={onSearchChange} + placeholder={m.common_search_placeholder_for_box()} /> +
+ {data && ( + + )}
diff --git a/src/routes/(app)/(auth)/kanri/items.tsx b/src/routes/(app)/(auth)/kanri/items.tsx new file mode 100644 index 0000000..eb276ca --- /dev/null +++ b/src/routes/(app)/(auth)/kanri/items.tsx @@ -0,0 +1,9 @@ +import { createFileRoute } from '@tanstack/react-router' + +export const Route = createFileRoute('/(app)/(auth)/kanri/items')({ + component: RouteComponent, +}) + +function RouteComponent() { + return
Hello "/(app)/(auth)/kanri/items"!
+} diff --git a/src/routes/(app)/index.tsx b/src/routes/(app)/index.tsx index cd0b10c..86fa88e 100644 --- a/src/routes/(app)/index.tsx +++ b/src/routes/(app)/index.tsx @@ -1,27 +1,12 @@ import { m } from '@paraglide/messages'; import { createFileRoute } from '@tanstack/react-router'; -import { useState } from 'react'; export const Route = createFileRoute('/(app)/')({ component: App, staticData: { breadcrumb: () => m.nav_home() }, }); -const testselect = [ - { - value: '1', - label: 'Sam', - email: 'luu.dat.tham@gmail.com', - }, - { - value: '2', - label: 'Raysam', - email: 'raysam024@gmail.com', - }, -]; - function App() { - const [value, setValue] = useState(); return (
diff --git a/src/service/box.api.ts b/src/service/box.api.ts new file mode 100644 index 0000000..8252dcc --- /dev/null +++ b/src/service/box.api.ts @@ -0,0 +1,118 @@ +import { prisma } from '@/db'; +import { BoxWhereInput } from '@/generated/prisma/models'; +import { parseError } from '@/lib/errors'; +import { DB_TABLE, LOG_ACTION } from '@/types/enum'; +import { authMiddleware } from '@lib/middleware'; +import { createServerFn } from '@tanstack/react-start'; +import { boxListSchema, createBoxSchema } from './box.schema'; +import { createAuditLog } from './repository'; + +export const getAllBox = createServerFn({ method: 'GET' }) + .middleware([authMiddleware]) + .inputValidator(boxListSchema) + .handler(async ({ data }) => { + try { + const { page, limit, keyword } = data; + const skip = (page - 1) * limit; + + const where: BoxWhereInput = { + OR: [ + { + name: { + contains: keyword, + mode: 'insensitive', + }, + }, + ], + }; + + const [list, total]: [any[], number] = await prisma.$transaction([ + prisma.box.findMany({ + where, + orderBy: { createdAt: 'desc' }, + include: { + _count: { + select: { + items: true, + }, + }, + house: { + select: { + id: true, + name: true, + color: true, + }, + }, + user: { + select: { + id: true, + name: true, + email: true, + image: true, + role: true, + }, + }, + }, + omit: { + createrId: true, + houseId: true, + }, + take: limit, + skip, + }), + prisma.box.count({ where }), + ]); + + const totalPage = Math.ceil(+total / limit); + + return { + result: list, + pagination: { + currentPage: page, + totalPage, + totalItem: total, + }, + }; + } catch (error) { + console.error(error); + const { message, code } = parseError(error); + throw { message, code }; + } + }); + +export const createBox = createServerFn({ method: 'POST' }) + .middleware([authMiddleware]) + .inputValidator(createBoxSchema) + .handler(async ({ data, context: { user } }) => { + try { + const { name, description, color, tags, houseId } = data; + + const result = await prisma.box.create({ + data: { + name, + description, + color, + houseId, + tags, + createrId: user.id, + }, + }); + + if (!result) throw Error('Failed to create box'); + + await createAuditLog({ + action: LOG_ACTION.CREATE, + tableName: DB_TABLE.BOX, + recordId: result.id, + oldValue: '', + newValue: JSON.stringify(result), + userId: user.id, + }); + + return result; + } catch (error) { + console.error(error); + const { message, code } = parseError(error); + throw { message, code }; + } + }); diff --git a/src/service/box.schema.ts b/src/service/box.schema.ts new file mode 100644 index 0000000..df8bd9c --- /dev/null +++ b/src/service/box.schema.ts @@ -0,0 +1,26 @@ +import { m } from '@/paraglide/messages'; +import z from 'zod'; + +export const baseBox = z.object({ + id: z.string().nonempty(m.boxes_page_message_box_not_found()), +}); + +export const boxListSchema = z.object({ + page: z.coerce.number().min(1).default(1), + limit: z.coerce.number().min(10).max(100).default(10), + keyword: z.string().optional(), +}); + +export const createBoxSchema = z.object({ + name: z + .string() + .nonempty(m.common_is_required({ field: m.boxes_page_form_name() })), + description: z + .string() + .nonempty(m.common_is_required({ field: m.boxes_page_form_description() })), + color: z + .string() + .nonempty(m.common_is_required({ field: m.boxes_page_form_color() })), + houseId: z.string().nonempty(m.houses_page_message_house_not_found()), + tags: z.array(z.string()), +}); diff --git a/src/service/house.api.ts b/src/service/house.api.ts index dd03384..03c6a4e 100644 --- a/src/service/house.api.ts +++ b/src/service/house.api.ts @@ -11,6 +11,7 @@ import { baseHouse, houseCreateBESchema, houseEditBESchema, + houseForSelectSchema, houseListSchema, invitationCreateBESchema, removeMemberSchema, @@ -115,6 +116,39 @@ export const getCurrentUserHouses = createServerFn({ method: 'GET' }) } }); +export const getHouseForSelect = createServerFn({ method: 'GET' }) + .middleware([authMiddleware]) + .inputValidator(houseForSelectSchema) + .handler(async ({ data }) => { + try { + const result = await prisma.house.findMany({ + where: { + OR: [ + { + name: { + contains: data.keyword, + mode: 'insensitive', + }, + }, + ], + }, + select: { + id: true, + name: true, + color: true, + }, + orderBy: { createdAt: 'desc' }, + take: 5, + }); + + return result; + } catch (error) { + console.error(error); + const { message, code } = parseError(error); + throw { message, code }; + } + }); + export const createHouse = createServerFn({ method: 'POST' }) .middleware([authMiddleware]) .inputValidator(houseCreateBESchema) diff --git a/src/service/house.schema.ts b/src/service/house.schema.ts index d2a8ed7..1899d77 100644 --- a/src/service/house.schema.ts +++ b/src/service/house.schema.ts @@ -11,6 +11,10 @@ export const houseListSchema = z.object({ keyword: z.string().optional(), }); +export const houseForSelectSchema = z.object({ + keyword: z.string().optional(), +}); + export const houseCreateSchema = z.object({ name: z .string() diff --git a/src/service/queries.ts b/src/service/queries.ts index e977bb2..5edc2c8 100644 --- a/src/service/queries.ts +++ b/src/service/queries.ts @@ -1,7 +1,12 @@ import { getSession } from '@lib/auth/session'; import { queryOptions } from '@tanstack/react-query'; import { getAllAudit } from './audit.api'; -import { getAllHouse, getCurrentUserHouses } from './house.api'; +import { getAllBox } from './box.api'; +import { + getAllHouse, + getCurrentUserHouses, + getHouseForSelect, +} from './house.api'; import { getAllNotifications, getTopFiveNotification } from './notify.api'; import { getAdminSettings, @@ -75,6 +80,11 @@ export const housesQueries = { queryKey: [...housesQueries.all, 'currentUser'], queryFn: () => getCurrentUserHouses(), }), + select: (params: { keyword?: string }) => + queryOptions({ + queryKey: [...housesQueries.all, 'select', params], + queryFn: () => getHouseForSelect({ data: params }), + }), }; export const notificationQueries = { @@ -90,3 +100,12 @@ export const notificationQueries = { queryFn: () => getTopFiveNotification(), }), }; + +export const boxQueries = { + all: ['boxes'], + list: (params: { page: number; limit: number; keyword?: string }) => + queryOptions({ + queryKey: [...boxQueries.all, 'list', params], + queryFn: () => getAllBox({ data: params }), + }), +}; diff --git a/src/service/user.api.ts b/src/service/user.api.ts index acae38d..6839ebf 100644 --- a/src/service/user.api.ts +++ b/src/service/user.api.ts @@ -89,6 +89,8 @@ export const getUserForSelect = createServerFn({ method: 'GET' }) id: true, name: true, email: true, + image: true, + role: true, }, orderBy: { createdAt: 'desc' }, take: 5, diff --git a/src/types/db.d.ts b/src/types/db.d.ts index 54e434f..613d8fd 100644 --- a/src/types/db.d.ts +++ b/src/types/db.d.ts @@ -30,6 +30,36 @@ declare global { }; }>; + type BoxWithCount = Prisma.BoxGetPayload<{ + include: { + _count: { + select: { + items: true; + }; + }; + house: { + select: { + id: true; + name: true; + color: true; + }; + }; + user: { + select: { + id: true; + name: true; + email: true; + image: true; + role: true; + }; + }; + }; + omit: { + createrId: true; + houseId: true; + }; + }>; + type HouseWithMembersCount = HouseWithMembers & { _count: { members: number;