├── .env.example ├── .eslintrc.json ├── .gitignore ├── LICENSE ├── README.md ├── app ├── api │ └── chat │ │ └── route.ts ├── components │ ├── chat-section.tsx │ ├── footer.tsx │ └── ui │ │ ├── button.tsx │ │ ├── chat │ │ ├── chat-actions.tsx │ │ ├── chat-avatar.tsx │ │ ├── chat-input.tsx │ │ ├── chat-message.tsx │ │ ├── chat-messages.tsx │ │ ├── chat.interface.ts │ │ ├── codeblock.tsx │ │ ├── index.ts │ │ ├── markdown.tsx │ │ └── use-copy-to-clipboard.tsx │ │ ├── file-uploader.tsx │ │ ├── input.tsx │ │ ├── lib │ │ └── utils.ts │ │ └── upload-image-preview.tsx ├── favicon.ico ├── globals.css ├── layout.tsx └── page.tsx ├── next.config.js ├── package.json ├── pnpm-lock.yaml ├── postcss.config.js ├── public ├── apple-touch-icon.png ├── favicon-16x16.png ├── favicon.ico ├── next.svg ├── opengraph-image.png ├── screenshot.png └── vercel.svg ├── tailwind.config.ts └── tsconfig.json /.env.example: -------------------------------------------------------------------------------- 1 | # You must first activate a Billing Account here: https://platform.openai.com/account/billing/overview 2 | # Then get your OpenAI API Key here: https://platform.openai.com/account/api-keys 3 | OPENAI_API_KEY=XXXXXXXX 4 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "next/core-web-vitals" 3 | } 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | 27 | # local env files 28 | .env*.local 29 | 30 | # vercel 31 | .vercel 32 | 33 | # typescript 34 | *.tsbuildinfo 35 | next-env.d.ts 36 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Marcus Schiesser 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Next.js 14 and App Router-ready GPT4 Vision chatbot. 2 |

GPT4 Vision Chatbot

3 | 4 |

5 | An open-source AI chatbot app template for GPT4 Vision built with Next.js, the Vercel AI SDK, OpenAI, and marcusschiesser/ui. 6 |

7 | 8 |

9 | Features · 10 | Model Providers · 11 | Deploy Your Own · 12 | Running locally · 13 |

14 | 15 |
16 | Screenshot 17 | 18 | ## Features 19 | 20 | - [Next.js](https://nextjs.org) App Router 21 | - React Server Components (RSCs), Suspense, and Server Actions 22 | - [Vercel AI SDK](https://sdk.vercel.ai/docs) for streaming chat UI 23 | - Support for OpenAI (default), Anthropic, Cohere, Hugging Face, or custom AI chat models and/or LangChain 24 | - [marcusschiesser/ui](https://github.com/marcusschiesser/ui) for chat UI 25 | - based on [shadcn/ui](https://ui.shadcn.com) 26 | - Styling with [Tailwind CSS](https://tailwindcss.com) 27 | - [Radix UI](https://radix-ui.com) for headless component primitives 28 | - Icons from [Phosphor Icons](https://phosphoricons.com) 29 | 30 | ## Model Providers 31 | 32 | This template ships with OpenAI `gpt-4-vision-preview` as the default. Once [Vercel AI SDK](https://sdk.vercel.ai/docs) supports other vision models, it's easy to update this template. 33 | 34 | ## Deploy Your Own 35 | 36 | You can find a test deployment at [https://chat.marcusschiesser.de](https://chat.marcusschiesser.de). Note that the chat is not working as the OpenAI key has been disabled to save costs. 37 | 38 | Using your own [OpenAI key](https://platform.openai.com/api-keys), you can deploy your own version of the Next.js AI Chatbot to Vercel with one click: 39 | 40 | [![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https%3A%2F%2Fgithub.com%2Fmarcusschiesser%2Fai-chatbot&env=OPENAI_API_KEY) 41 | 42 | ## Running locally 43 | 44 | You will need to use the environment variables [defined in `.env.example`](.env.example) to run this AI Chatbot. It's recommended you use [Vercel Environment Variables](https://vercel.com/docs/projects/environment-variables) for this, but a `.env` file is all that is necessary. 45 | 46 | > Note: You should not commit your `.env` file or it will expose secrets that will allow others to control access to your various OpenAI and authentication provider accounts. 47 | 48 | ```bash 49 | pnpm install 50 | pnpm dev 51 | ``` 52 | 53 | Your app template should now be running on [localhost:3000](http://localhost:3000/). 54 | -------------------------------------------------------------------------------- /app/api/chat/route.ts: -------------------------------------------------------------------------------- 1 | import OpenAI from "openai"; 2 | import { OpenAIStream, StreamingTextResponse } from "ai"; 3 | 4 | const openai = new OpenAI({ 5 | apiKey: process.env.OPENAI_API_KEY, 6 | }); 7 | 8 | export const runtime = "edge"; 9 | 10 | const createRequestMessages = async (req: Request) => { 11 | const { messages, data } = await req.json(); 12 | if (!data?.imageUrl) return messages; 13 | 14 | const initialMessages = messages.slice(0, -1); 15 | const currentMessage = messages[messages.length - 1]; 16 | return [ 17 | ...initialMessages, 18 | { 19 | ...currentMessage, 20 | content: [ 21 | { type: "text", text: currentMessage.content }, 22 | { 23 | type: "image_url", 24 | image_url: data.imageUrl, 25 | }, 26 | ], 27 | }, 28 | ]; 29 | }; 30 | 31 | export async function POST(req: Request) { 32 | const inputMessages = await createRequestMessages(req); 33 | const response = await openai.chat.completions.create({ 34 | model: "gpt-4-vision-preview", 35 | stream: true, 36 | messages: inputMessages, 37 | max_tokens: 2000, 38 | }); 39 | const stream = OpenAIStream(response); 40 | return new StreamingTextResponse(stream); 41 | } 42 | -------------------------------------------------------------------------------- /app/components/chat-section.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { useChat } from "ai/react"; 4 | import { ChatInput, ChatMessages } from "./ui/chat"; 5 | 6 | export default function ChatSection() { 7 | const { messages, input, isLoading, handleSubmit, handleInputChange, reload, stop } = useChat(); 8 | 9 | return ( 10 |
11 | 12 | 19 |
20 | ); 21 | } 22 | -------------------------------------------------------------------------------- /app/components/footer.tsx: -------------------------------------------------------------------------------- 1 | export default function Footer() { 2 | return ( 3 | 28 | ); 29 | } 30 | -------------------------------------------------------------------------------- /app/components/ui/button.tsx: -------------------------------------------------------------------------------- 1 | import { Slot } from "@radix-ui/react-slot"; 2 | import { cva, type VariantProps } from "class-variance-authority"; 3 | import * as React from "react"; 4 | 5 | import { cn } from "./lib/utils"; 6 | 7 | const buttonVariants = cva( 8 | "inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", 9 | { 10 | variants: { 11 | variant: { 12 | default: "bg-primary text-primary-foreground hover:bg-primary/90", 13 | destructive: 14 | "bg-destructive text-destructive-foreground hover:bg-destructive/90", 15 | outline: 16 | "border border-input bg-background hover:bg-accent hover:text-accent-foreground", 17 | secondary: 18 | "bg-secondary text-secondary-foreground hover:bg-secondary/80", 19 | ghost: "hover:bg-accent hover:text-accent-foreground", 20 | link: "text-primary underline-offset-4 hover:underline", 21 | }, 22 | size: { 23 | default: "h-10 px-4 py-2", 24 | sm: "h-9 rounded-md px-3", 25 | lg: "h-11 rounded-md px-8", 26 | icon: "h-10 w-10", 27 | }, 28 | }, 29 | defaultVariants: { 30 | variant: "default", 31 | size: "default", 32 | }, 33 | }, 34 | ); 35 | 36 | export interface ButtonProps 37 | extends React.ButtonHTMLAttributes, 38 | VariantProps { 39 | asChild?: boolean; 40 | } 41 | 42 | const Button = React.forwardRef( 43 | ({ className, variant, size, asChild = false, ...props }, ref) => { 44 | const Comp = asChild ? Slot : "button"; 45 | return ( 46 | 51 | ); 52 | }, 53 | ); 54 | Button.displayName = "Button"; 55 | 56 | export { Button, buttonVariants }; 57 | -------------------------------------------------------------------------------- /app/components/ui/chat/chat-actions.tsx: -------------------------------------------------------------------------------- 1 | import { PauseCircle, RefreshCw } from "lucide-react"; 2 | 3 | import { Button } from "../button"; 4 | import { ChatHandler } from "./chat.interface"; 5 | 6 | export default function ChatActions( 7 | props: Pick & { 8 | showReload?: boolean; 9 | showStop?: boolean; 10 | }, 11 | ) { 12 | return ( 13 |
14 | {props.showStop && ( 15 | 19 | )} 20 | {props.showReload && ( 21 | 25 | )} 26 |
27 | ); 28 | } 29 | -------------------------------------------------------------------------------- /app/components/ui/chat/chat-avatar.tsx: -------------------------------------------------------------------------------- 1 | import { User2, Bot } from "lucide-react"; 2 | 3 | export default function ChatAvatar({ role }: { role: string }) { 4 | if (role === "user") { 5 | return ( 6 |
7 | 8 |
9 | ); 10 | } 11 | 12 | return ( 13 |
14 | 15 |
16 | ); 17 | } 18 | -------------------------------------------------------------------------------- /app/components/ui/chat/chat-input.tsx: -------------------------------------------------------------------------------- 1 | import { useState } from "react"; 2 | import { Button } from "../button"; 3 | import FileUploader from "../file-uploader"; 4 | import { Input } from "../input"; 5 | import UploadImagePreview from "../upload-image-preview"; 6 | import { ChatHandler } from "./chat.interface"; 7 | 8 | export default function ChatInput( 9 | props: Pick< 10 | ChatHandler, 11 | | "isLoading" 12 | | "input" 13 | | "onFileUpload" 14 | | "onFileError" 15 | | "handleSubmit" 16 | | "handleInputChange" 17 | > & { 18 | multiModal?: boolean; 19 | }, 20 | ) { 21 | const [imageUrl, setImageUrl] = useState(null); 22 | 23 | const onSubmit = (e: React.FormEvent) => { 24 | if (imageUrl) { 25 | props.handleSubmit(e, { 26 | data: { imageUrl: imageUrl }, 27 | }); 28 | setImageUrl(null); 29 | return; 30 | } 31 | props.handleSubmit(e); 32 | }; 33 | 34 | const onRemovePreviewImage = () => setImageUrl(null); 35 | 36 | const handleUploadImageFile = async (file: File) => { 37 | const base64 = await new Promise((resolve, reject) => { 38 | const reader = new FileReader(); 39 | reader.readAsDataURL(file); 40 | reader.onload = () => resolve(reader.result as string); 41 | reader.onerror = (error) => reject(error); 42 | }); 43 | setImageUrl(base64); 44 | }; 45 | 46 | const handleUploadFile = async (file: File) => { 47 | try { 48 | if (props.multiModal && file.type.startsWith("image/")) { 49 | return await handleUploadImageFile(file); 50 | } 51 | props.onFileUpload?.(file); 52 | } catch (error: any) { 53 | props.onFileError?.(error.message); 54 | } 55 | }; 56 | 57 | return ( 58 |
62 | {imageUrl && ( 63 | 64 | )} 65 |
66 | 74 | 78 | 81 |
82 | 83 | ); 84 | } 85 | -------------------------------------------------------------------------------- /app/components/ui/chat/chat-message.tsx: -------------------------------------------------------------------------------- 1 | import { Check, Copy } from "lucide-react"; 2 | 3 | import { Button } from "../button"; 4 | import ChatAvatar from "./chat-avatar"; 5 | import { Message } from "./chat.interface"; 6 | import Markdown from "./markdown"; 7 | import { useCopyToClipboard } from "./use-copy-to-clipboard"; 8 | 9 | export default function ChatMessage(chatMessage: Message) { 10 | const { isCopied, copyToClipboard } = useCopyToClipboard({ timeout: 2000 }); 11 | return ( 12 |
13 | 14 |
15 |
16 | 17 |
18 | 30 |
31 |
32 | ); 33 | } 34 | -------------------------------------------------------------------------------- /app/components/ui/chat/chat-messages.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useRef } from "react"; 2 | import { Loader2 } from "lucide-react"; 3 | 4 | import ChatActions from "./chat-actions"; 5 | import ChatMessage from "./chat-message"; 6 | import { ChatHandler } from "./chat.interface"; 7 | 8 | export default function ChatMessages( 9 | props: Pick, 10 | ) { 11 | const scrollableChatContainerRef = useRef(null); 12 | const messageLength = props.messages.length; 13 | const lastMessage = props.messages[messageLength - 1]; 14 | 15 | const scrollToBottom = () => { 16 | if (scrollableChatContainerRef.current) { 17 | scrollableChatContainerRef.current.scrollTop = 18 | scrollableChatContainerRef.current.scrollHeight; 19 | } 20 | }; 21 | 22 | const isLastMessageFromAssistant = 23 | messageLength > 0 && lastMessage?.role !== "user"; 24 | const showReload = 25 | props.reload && !props.isLoading && isLastMessageFromAssistant; 26 | const showStop = props.stop && props.isLoading; 27 | 28 | // `isPending` indicate 29 | // that stream response is not yet received from the server, 30 | // so we show a loading indicator to give a better UX. 31 | const isPending = props.isLoading && !isLastMessageFromAssistant; 32 | 33 | useEffect(() => { 34 | scrollToBottom(); 35 | }, [messageLength, lastMessage]); 36 | 37 | return ( 38 |
39 |
43 | {props.messages.map((m) => ( 44 | 45 | ))} 46 | {isPending && ( 47 |
50 | 51 |
52 | )} 53 |
54 |
55 | 61 |
62 |
63 | ); 64 | } 65 | -------------------------------------------------------------------------------- /app/components/ui/chat/chat.interface.ts: -------------------------------------------------------------------------------- 1 | export interface Message { 2 | id: string; 3 | content: string; 4 | role: string; 5 | } 6 | 7 | export interface ChatHandler { 8 | messages: Message[]; 9 | input: string; 10 | isLoading: boolean; 11 | handleSubmit: ( 12 | e: React.FormEvent, 13 | ops?: { 14 | data?: any; 15 | }, 16 | ) => void; 17 | handleInputChange: (e: React.ChangeEvent) => void; 18 | reload?: () => void; 19 | stop?: () => void; 20 | onFileUpload?: (file: File) => Promise; 21 | onFileError?: (errMsg: string) => void; 22 | } 23 | -------------------------------------------------------------------------------- /app/components/ui/chat/codeblock.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { Check, Copy, Download } from "lucide-react"; 4 | import { FC, memo } from "react"; 5 | import { Prism, SyntaxHighlighterProps } from "react-syntax-highlighter"; 6 | import { coldarkDark } from "react-syntax-highlighter/dist/cjs/styles/prism"; 7 | 8 | import { Button } from "../button"; 9 | import { useCopyToClipboard } from "./use-copy-to-clipboard"; 10 | 11 | // TODO: Remove this when @type/react-syntax-highlighter is updated 12 | const SyntaxHighlighter = Prism as unknown as FC; 13 | 14 | interface Props { 15 | language: string; 16 | value: string; 17 | } 18 | 19 | interface languageMap { 20 | [key: string]: string | undefined; 21 | } 22 | 23 | export const programmingLanguages: languageMap = { 24 | javascript: ".js", 25 | python: ".py", 26 | java: ".java", 27 | c: ".c", 28 | cpp: ".cpp", 29 | "c++": ".cpp", 30 | "c#": ".cs", 31 | ruby: ".rb", 32 | php: ".php", 33 | swift: ".swift", 34 | "objective-c": ".m", 35 | kotlin: ".kt", 36 | typescript: ".ts", 37 | go: ".go", 38 | perl: ".pl", 39 | rust: ".rs", 40 | scala: ".scala", 41 | haskell: ".hs", 42 | lua: ".lua", 43 | shell: ".sh", 44 | sql: ".sql", 45 | html: ".html", 46 | css: ".css", 47 | // add more file extensions here, make sure the key is same as language prop in CodeBlock.tsx component 48 | }; 49 | 50 | export const generateRandomString = (length: number, lowercase = false) => { 51 | const chars = "ABCDEFGHJKLMNPQRSTUVWXY3456789"; // excluding similar looking characters like Z, 2, I, 1, O, 0 52 | let result = ""; 53 | for (let i = 0; i < length; i++) { 54 | result += chars.charAt(Math.floor(Math.random() * chars.length)); 55 | } 56 | return lowercase ? result.toLowerCase() : result; 57 | }; 58 | 59 | const CodeBlock: FC = memo(({ language, value }) => { 60 | const { isCopied, copyToClipboard } = useCopyToClipboard({ timeout: 2000 }); 61 | 62 | const downloadAsFile = () => { 63 | if (typeof window === "undefined") { 64 | return; 65 | } 66 | const fileExtension = programmingLanguages[language] || ".file"; 67 | const suggestedFileName = `file-${generateRandomString( 68 | 3, 69 | true, 70 | )}${fileExtension}`; 71 | const fileName = window.prompt("Enter file name" || "", suggestedFileName); 72 | 73 | if (!fileName) { 74 | // User pressed cancel on prompt. 75 | return; 76 | } 77 | 78 | const blob = new Blob([value], { type: "text/plain" }); 79 | const url = URL.createObjectURL(blob); 80 | const link = document.createElement("a"); 81 | link.download = fileName; 82 | link.href = url; 83 | link.style.display = "none"; 84 | document.body.appendChild(link); 85 | link.click(); 86 | document.body.removeChild(link); 87 | URL.revokeObjectURL(url); 88 | }; 89 | 90 | const onCopy = () => { 91 | if (isCopied) return; 92 | copyToClipboard(value); 93 | }; 94 | 95 | return ( 96 |
97 |
98 | {language} 99 |
100 | 104 | 112 |
113 |
114 | 132 | {value} 133 | 134 |
135 | ); 136 | }); 137 | CodeBlock.displayName = "CodeBlock"; 138 | 139 | export { CodeBlock }; 140 | -------------------------------------------------------------------------------- /app/components/ui/chat/index.ts: -------------------------------------------------------------------------------- 1 | import ChatInput from "./chat-input"; 2 | import ChatMessages from "./chat-messages"; 3 | 4 | export { type ChatHandler, type Message } from "./chat.interface"; 5 | export { ChatInput, ChatMessages }; 6 | -------------------------------------------------------------------------------- /app/components/ui/chat/markdown.tsx: -------------------------------------------------------------------------------- 1 | import { FC, memo } from "react"; 2 | import ReactMarkdown, { Options } from "react-markdown"; 3 | import remarkGfm from "remark-gfm"; 4 | import remarkMath from "remark-math"; 5 | 6 | import { CodeBlock } from "./codeblock"; 7 | 8 | const MemoizedReactMarkdown: FC = memo( 9 | ReactMarkdown, 10 | (prevProps, nextProps) => 11 | prevProps.children === nextProps.children && 12 | prevProps.className === nextProps.className, 13 | ); 14 | 15 | export default function Markdown({ content }: { content: string }) { 16 | return ( 17 | {children}

; 23 | }, 24 | code({ node, inline, className, children, ...props }) { 25 | if (children.length) { 26 | if (children[0] == "▍") { 27 | return ( 28 | 29 | ); 30 | } 31 | 32 | children[0] = (children[0] as string).replace("`▍`", "▍"); 33 | } 34 | 35 | const match = /language-(\w+)/.exec(className || ""); 36 | 37 | if (inline) { 38 | return ( 39 | 40 | {children} 41 | 42 | ); 43 | } 44 | 45 | return ( 46 | 52 | ); 53 | }, 54 | }} 55 | > 56 | {content} 57 |
58 | ); 59 | } 60 | -------------------------------------------------------------------------------- /app/components/ui/chat/use-copy-to-clipboard.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import * as React from "react"; 4 | 5 | export interface useCopyToClipboardProps { 6 | timeout?: number; 7 | } 8 | 9 | export function useCopyToClipboard({ 10 | timeout = 2000, 11 | }: useCopyToClipboardProps) { 12 | const [isCopied, setIsCopied] = React.useState(false); 13 | 14 | const copyToClipboard = (value: string) => { 15 | if (typeof window === "undefined" || !navigator.clipboard?.writeText) { 16 | return; 17 | } 18 | 19 | if (!value) { 20 | return; 21 | } 22 | 23 | navigator.clipboard.writeText(value).then(() => { 24 | setIsCopied(true); 25 | 26 | setTimeout(() => { 27 | setIsCopied(false); 28 | }, timeout); 29 | }); 30 | }; 31 | 32 | return { isCopied, copyToClipboard }; 33 | } 34 | -------------------------------------------------------------------------------- /app/components/ui/file-uploader.tsx: -------------------------------------------------------------------------------- 1 | "use client"; 2 | 3 | import { Loader2, Paperclip } from "lucide-react"; 4 | import { ChangeEvent, useState } from "react"; 5 | import { buttonVariants } from "./button"; 6 | import { cn } from "./lib/utils"; 7 | 8 | export interface FileUploaderProps { 9 | config?: { 10 | inputId?: string; 11 | fileSizeLimit?: number; 12 | allowedExtensions?: string[]; 13 | checkExtension?: (extension: string) => string | null; 14 | disabled: boolean; 15 | }; 16 | onFileUpload: (file: File) => Promise; 17 | onFileError?: (errMsg: string) => void; 18 | } 19 | 20 | const DEFAULT_INPUT_ID = "fileInput"; 21 | const DEFAULT_FILE_SIZE_LIMIT = 1024 * 1024 * 50; // 50 MB 22 | 23 | export default function FileUploader({ 24 | config, 25 | onFileUpload, 26 | onFileError, 27 | }: FileUploaderProps) { 28 | const [uploading, setUploading] = useState(false); 29 | 30 | const inputId = config?.inputId || DEFAULT_INPUT_ID; 31 | const fileSizeLimit = config?.fileSizeLimit || DEFAULT_FILE_SIZE_LIMIT; 32 | const allowedExtensions = config?.allowedExtensions; 33 | const defaultCheckExtension = (extension: string) => { 34 | if (allowedExtensions && !allowedExtensions.includes(extension)) { 35 | return `Invalid file type. Please select a file with one of these formats: ${allowedExtensions!.join( 36 | ",", 37 | )}`; 38 | } 39 | return null; 40 | }; 41 | const checkExtension = config?.checkExtension ?? defaultCheckExtension; 42 | 43 | const isFileSizeExceeded = (file: File) => { 44 | return file.size > fileSizeLimit; 45 | }; 46 | 47 | const resetInput = () => { 48 | const fileInput = document.getElementById(inputId) as HTMLInputElement; 49 | fileInput.value = ""; 50 | }; 51 | 52 | const onFileChange = async (e: ChangeEvent) => { 53 | const file = e.target.files?.[0]; 54 | if (!file) return; 55 | 56 | setUploading(true); 57 | await handleUpload(file); 58 | resetInput(); 59 | setUploading(false); 60 | }; 61 | 62 | const handleUpload = async (file: File) => { 63 | const onFileUploadError = onFileError || window.alert; 64 | const fileExtension = file.name.split(".").pop() || ""; 65 | const extensionFileError = checkExtension(fileExtension); 66 | if (extensionFileError) { 67 | return onFileUploadError(extensionFileError); 68 | } 69 | 70 | if (isFileSizeExceeded(file)) { 71 | return onFileUploadError( 72 | `File size exceeded. Limit is ${fileSizeLimit / 1024 / 1024} MB`, 73 | ); 74 | } 75 | 76 | await onFileUpload(file); 77 | }; 78 | 79 | return ( 80 |
81 | 89 | 103 |
104 | ); 105 | } 106 | -------------------------------------------------------------------------------- /app/components/ui/input.tsx: -------------------------------------------------------------------------------- 1 | import * as React from "react"; 2 | 3 | import { cn } from "./lib/utils"; 4 | 5 | export interface InputProps 6 | extends React.InputHTMLAttributes {} 7 | 8 | const Input = React.forwardRef( 9 | ({ className, type, ...props }, ref) => { 10 | return ( 11 | 20 | ); 21 | }, 22 | ); 23 | Input.displayName = "Input"; 24 | 25 | export { Input }; 26 | -------------------------------------------------------------------------------- /app/components/ui/lib/utils.ts: -------------------------------------------------------------------------------- 1 | import { clsx, type ClassValue } from "clsx"; 2 | import { twMerge } from "tailwind-merge"; 3 | 4 | export function cn(...inputs: ClassValue[]) { 5 | return twMerge(clsx(inputs)); 6 | } 7 | -------------------------------------------------------------------------------- /app/components/ui/upload-image-preview.tsx: -------------------------------------------------------------------------------- 1 | import { XCircleIcon } from "lucide-react"; 2 | import Image from "next/image"; 3 | import { cn } from "./lib/utils"; 4 | 5 | export default function UploadImagePreview({ 6 | url, 7 | onRemove, 8 | }: { 9 | url: string; 10 | onRemove: () => void; 11 | }) { 12 | return ( 13 |
14 | Uploaded image 20 | 30 |
31 | ); 32 | } 33 | -------------------------------------------------------------------------------- /app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusschiesser/ai-chatbot/491fdd0dca772580ff8263538aaf01d8f363b29c/app/favicon.ico -------------------------------------------------------------------------------- /app/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | @layer base { 6 | :root { 7 | --background: 0 0% 100%; 8 | --foreground: 222.2 47.4% 11.2%; 9 | 10 | --muted: 210 40% 96.1%; 11 | --muted-foreground: 215.4 16.3% 46.9%; 12 | 13 | --popover: 0 0% 100%; 14 | --popover-foreground: 222.2 47.4% 11.2%; 15 | 16 | --border: 214.3 31.8% 91.4%; 17 | --input: 214.3 31.8% 91.4%; 18 | 19 | --card: 0 0% 100%; 20 | --card-foreground: 222.2 47.4% 11.2%; 21 | 22 | --primary: 222.2 47.4% 11.2%; 23 | --primary-foreground: 210 40% 98%; 24 | 25 | --secondary: 210 40% 96.1%; 26 | --secondary-foreground: 222.2 47.4% 11.2%; 27 | 28 | --accent: 210 40% 96.1%; 29 | --accent-foreground: 222.2 47.4% 11.2%; 30 | 31 | --destructive: 0 100% 50%; 32 | --destructive-foreground: 210 40% 98%; 33 | 34 | --ring: 215 20.2% 65.1%; 35 | 36 | --radius: 0.5rem; 37 | } 38 | 39 | .dark { 40 | --background: 224 71% 4%; 41 | --foreground: 213 31% 91%; 42 | 43 | --muted: 223 47% 11%; 44 | --muted-foreground: 215.4 16.3% 56.9%; 45 | 46 | --accent: 216 34% 17%; 47 | --accent-foreground: 210 40% 98%; 48 | 49 | --popover: 224 71% 4%; 50 | --popover-foreground: 215 20.2% 65.1%; 51 | 52 | --border: 216 34% 17%; 53 | --input: 216 34% 17%; 54 | 55 | --card: 224 71% 4%; 56 | --card-foreground: 213 31% 91%; 57 | 58 | --primary: 210 40% 98%; 59 | --primary-foreground: 222.2 47.4% 1.2%; 60 | 61 | --secondary: 222.2 47.4% 11.2%; 62 | --secondary-foreground: 210 40% 98%; 63 | 64 | --destructive: 0 63% 31%; 65 | --destructive-foreground: 210 40% 98%; 66 | 67 | --ring: 216 34% 17%; 68 | 69 | --radius: 0.5rem; 70 | } 71 | } 72 | 73 | @layer base { 74 | * { 75 | @apply border-border; 76 | } 77 | body { 78 | @apply bg-background text-foreground; 79 | font-feature-settings: 80 | "rlig" 1, 81 | "calt" 1; 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /app/layout.tsx: -------------------------------------------------------------------------------- 1 | import type { Metadata } from "next"; 2 | import { Inter } from "next/font/google"; 3 | import "./globals.css"; 4 | 5 | const inter = Inter({ subsets: ["latin"] }); 6 | 7 | export const metadata: Metadata = { 8 | title: "GPT4 Vision Chatbot Demo", 9 | description: "A chatbot template for GPT4 Vision built with ui.marcusschiesser.de and Next.js.", 10 | }; 11 | 12 | export default function RootLayout({ 13 | children, 14 | }: { 15 | children: React.ReactNode; 16 | }) { 17 | return ( 18 | 19 | {children} 20 | 21 | ); 22 | } 23 | -------------------------------------------------------------------------------- /app/page.tsx: -------------------------------------------------------------------------------- 1 | import ChatSection from "./components/chat-section"; 2 | import Footer from "./components/footer"; 3 | 4 | export default function Home() { 5 | return ( 6 |
7 |

GPT4 Vision Chatbot Demo

8 | 9 |
10 |
11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /next.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('next').NextConfig} */ 2 | const nextConfig = { 3 | webpack: (config) => { 4 | // See https://webpack.js.org/configuration/resolve/#resolvealias 5 | config.resolve.alias = { 6 | ...config.resolve.alias, 7 | sharp$: false, 8 | "onnxruntime-node$": false, 9 | mongodb$: false, 10 | }; 11 | return config; 12 | }, 13 | experimental: { 14 | serverComponentsExternalPackages: ["llamaindex"], 15 | outputFileTracingIncludes: { 16 | "/*": ["./cache/**/*"], 17 | }, 18 | }, 19 | }; 20 | 21 | module.exports = nextConfig; 22 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "scripts": { 4 | "dev": "next dev --turbo", 5 | "build": "next build", 6 | "start": "next start", 7 | "lint": "next lint" 8 | }, 9 | "dependencies": { 10 | "@radix-ui/react-slot": "^1", 11 | "ai": "^2.2.25", 12 | "class-variance-authority": "^0.7", 13 | "clsx": "^1.2.1", 14 | "dotenv": "^16.3.1", 15 | "lucide-react": "^0.291", 16 | "next": "^14.0.3", 17 | "openai": "^4.20.0", 18 | "react": "^18", 19 | "react-dom": "^18", 20 | "react-markdown": "^8.0.7", 21 | "react-syntax-highlighter": "^15.5.0", 22 | "remark": "^14.0.3", 23 | "remark-code-import": "^1.2.0", 24 | "remark-gfm": "^3.0.1", 25 | "remark-math": "^5.1.1", 26 | "tailwind-merge": "^2" 27 | }, 28 | "devDependencies": { 29 | "@types/node": "^20", 30 | "@types/react": "^18", 31 | "@types/react-dom": "^18", 32 | "@types/react-syntax-highlighter": "^15.5.6", 33 | "autoprefixer": "^10.1", 34 | "eslint": "^8", 35 | "eslint-config-next": "^13", 36 | "postcss": "^8", 37 | "tailwindcss": "^3.3", 38 | "typescript": "^5" 39 | } 40 | } -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | '@radix-ui/react-slot': 9 | specifier: ^1 10 | version: 1.0.2(@types/react@18.2.38)(react@18.2.0) 11 | ai: 12 | specifier: ^2.2.25 13 | version: 2.2.25(react@18.2.0)(solid-js@1.8.6)(svelte@4.2.7)(vue@3.3.9) 14 | class-variance-authority: 15 | specifier: ^0.7 16 | version: 0.7.0 17 | clsx: 18 | specifier: ^1.2.1 19 | version: 1.2.1 20 | dotenv: 21 | specifier: ^16.3.1 22 | version: 16.3.1 23 | lucide-react: 24 | specifier: ^0.291 25 | version: 0.291.0(react@18.2.0) 26 | next: 27 | specifier: ^14.0.3 28 | version: 14.0.3(react-dom@18.2.0)(react@18.2.0) 29 | openai: 30 | specifier: ^4.20.0 31 | version: 4.20.0 32 | react: 33 | specifier: ^18 34 | version: 18.2.0 35 | react-dom: 36 | specifier: ^18 37 | version: 18.2.0(react@18.2.0) 38 | react-markdown: 39 | specifier: ^8.0.7 40 | version: 8.0.7(@types/react@18.2.38)(react@18.2.0) 41 | react-syntax-highlighter: 42 | specifier: ^15.5.0 43 | version: 15.5.0(react@18.2.0) 44 | remark: 45 | specifier: ^14.0.3 46 | version: 14.0.3 47 | remark-code-import: 48 | specifier: ^1.2.0 49 | version: 1.2.0 50 | remark-gfm: 51 | specifier: ^3.0.1 52 | version: 3.0.1 53 | remark-math: 54 | specifier: ^5.1.1 55 | version: 5.1.1 56 | tailwind-merge: 57 | specifier: ^2 58 | version: 2.0.0 59 | 60 | devDependencies: 61 | '@types/node': 62 | specifier: ^20 63 | version: 20.10.0 64 | '@types/react': 65 | specifier: ^18 66 | version: 18.2.38 67 | '@types/react-dom': 68 | specifier: ^18 69 | version: 18.2.17 70 | '@types/react-syntax-highlighter': 71 | specifier: ^15.5.6 72 | version: 15.5.10 73 | autoprefixer: 74 | specifier: ^10.1 75 | version: 10.4.16(postcss@8.4.31) 76 | eslint: 77 | specifier: ^8 78 | version: 8.54.0 79 | eslint-config-next: 80 | specifier: ^13 81 | version: 13.5.6(eslint@8.54.0)(typescript@5.3.2) 82 | postcss: 83 | specifier: ^8 84 | version: 8.4.31 85 | tailwindcss: 86 | specifier: ^3.3 87 | version: 3.3.5 88 | typescript: 89 | specifier: ^5 90 | version: 5.3.2 91 | 92 | packages: 93 | 94 | /@aashutoshrathi/word-wrap@1.2.6: 95 | resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} 96 | engines: {node: '>=0.10.0'} 97 | dev: true 98 | 99 | /@alloc/quick-lru@5.2.0: 100 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} 101 | engines: {node: '>=10'} 102 | dev: true 103 | 104 | /@ampproject/remapping@2.2.1: 105 | resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} 106 | engines: {node: '>=6.0.0'} 107 | dependencies: 108 | '@jridgewell/gen-mapping': 0.3.3 109 | '@jridgewell/trace-mapping': 0.3.20 110 | dev: false 111 | 112 | /@babel/helper-string-parser@7.23.4: 113 | resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} 114 | engines: {node: '>=6.9.0'} 115 | dev: false 116 | 117 | /@babel/helper-validator-identifier@7.22.20: 118 | resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} 119 | engines: {node: '>=6.9.0'} 120 | dev: false 121 | 122 | /@babel/parser@7.23.4: 123 | resolution: {integrity: sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==} 124 | engines: {node: '>=6.0.0'} 125 | hasBin: true 126 | dependencies: 127 | '@babel/types': 7.23.4 128 | dev: false 129 | 130 | /@babel/runtime@7.23.4: 131 | resolution: {integrity: sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==} 132 | engines: {node: '>=6.9.0'} 133 | dependencies: 134 | regenerator-runtime: 0.14.0 135 | 136 | /@babel/types@7.23.4: 137 | resolution: {integrity: sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==} 138 | engines: {node: '>=6.9.0'} 139 | dependencies: 140 | '@babel/helper-string-parser': 7.23.4 141 | '@babel/helper-validator-identifier': 7.22.20 142 | to-fast-properties: 2.0.0 143 | dev: false 144 | 145 | /@eslint-community/eslint-utils@4.4.0(eslint@8.54.0): 146 | resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} 147 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 148 | peerDependencies: 149 | eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 150 | dependencies: 151 | eslint: 8.54.0 152 | eslint-visitor-keys: 3.4.3 153 | dev: true 154 | 155 | /@eslint-community/regexpp@4.10.0: 156 | resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} 157 | engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} 158 | dev: true 159 | 160 | /@eslint/eslintrc@2.1.3: 161 | resolution: {integrity: sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==} 162 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 163 | dependencies: 164 | ajv: 6.12.6 165 | debug: 4.3.4 166 | espree: 9.6.1 167 | globals: 13.23.0 168 | ignore: 5.3.0 169 | import-fresh: 3.3.0 170 | js-yaml: 4.1.0 171 | minimatch: 3.1.2 172 | strip-json-comments: 3.1.1 173 | transitivePeerDependencies: 174 | - supports-color 175 | dev: true 176 | 177 | /@eslint/js@8.54.0: 178 | resolution: {integrity: sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==} 179 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 180 | dev: true 181 | 182 | /@humanwhocodes/config-array@0.11.13: 183 | resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} 184 | engines: {node: '>=10.10.0'} 185 | dependencies: 186 | '@humanwhocodes/object-schema': 2.0.1 187 | debug: 4.3.4 188 | minimatch: 3.1.2 189 | transitivePeerDependencies: 190 | - supports-color 191 | dev: true 192 | 193 | /@humanwhocodes/module-importer@1.0.1: 194 | resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} 195 | engines: {node: '>=12.22'} 196 | dev: true 197 | 198 | /@humanwhocodes/object-schema@2.0.1: 199 | resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} 200 | dev: true 201 | 202 | /@jridgewell/gen-mapping@0.3.3: 203 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 204 | engines: {node: '>=6.0.0'} 205 | dependencies: 206 | '@jridgewell/set-array': 1.1.2 207 | '@jridgewell/sourcemap-codec': 1.4.15 208 | '@jridgewell/trace-mapping': 0.3.20 209 | 210 | /@jridgewell/resolve-uri@3.1.1: 211 | resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} 212 | engines: {node: '>=6.0.0'} 213 | 214 | /@jridgewell/set-array@1.1.2: 215 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 216 | engines: {node: '>=6.0.0'} 217 | 218 | /@jridgewell/sourcemap-codec@1.4.15: 219 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 220 | 221 | /@jridgewell/trace-mapping@0.3.20: 222 | resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} 223 | dependencies: 224 | '@jridgewell/resolve-uri': 3.1.1 225 | '@jridgewell/sourcemap-codec': 1.4.15 226 | 227 | /@next/env@14.0.3: 228 | resolution: {integrity: sha512-7xRqh9nMvP5xrW4/+L0jgRRX+HoNRGnfJpD+5Wq6/13j3dsdzxO3BCXn7D3hMqsDb+vjZnJq+vI7+EtgrYZTeA==} 229 | dev: false 230 | 231 | /@next/eslint-plugin-next@13.5.6: 232 | resolution: {integrity: sha512-ng7pU/DDsxPgT6ZPvuprxrkeew3XaRf4LAT4FabaEO/hAbvVx4P7wqnqdbTdDn1kgTvsI4tpIgT4Awn/m0bGbg==} 233 | dependencies: 234 | glob: 7.1.7 235 | dev: true 236 | 237 | /@next/swc-darwin-arm64@14.0.3: 238 | resolution: {integrity: sha512-64JbSvi3nbbcEtyitNn2LEDS/hcleAFpHdykpcnrstITFlzFgB/bW0ER5/SJJwUPj+ZPY+z3e+1jAfcczRLVGw==} 239 | engines: {node: '>= 10'} 240 | cpu: [arm64] 241 | os: [darwin] 242 | requiresBuild: true 243 | dev: false 244 | optional: true 245 | 246 | /@next/swc-darwin-x64@14.0.3: 247 | resolution: {integrity: sha512-RkTf+KbAD0SgYdVn1XzqE/+sIxYGB7NLMZRn9I4Z24afrhUpVJx6L8hsRnIwxz3ERE2NFURNliPjJ2QNfnWicQ==} 248 | engines: {node: '>= 10'} 249 | cpu: [x64] 250 | os: [darwin] 251 | requiresBuild: true 252 | dev: false 253 | optional: true 254 | 255 | /@next/swc-linux-arm64-gnu@14.0.3: 256 | resolution: {integrity: sha512-3tBWGgz7M9RKLO6sPWC6c4pAw4geujSwQ7q7Si4d6bo0l6cLs4tmO+lnSwFp1Tm3lxwfMk0SgkJT7EdwYSJvcg==} 257 | engines: {node: '>= 10'} 258 | cpu: [arm64] 259 | os: [linux] 260 | requiresBuild: true 261 | dev: false 262 | optional: true 263 | 264 | /@next/swc-linux-arm64-musl@14.0.3: 265 | resolution: {integrity: sha512-v0v8Kb8j8T23jvVUWZeA2D8+izWspeyeDGNaT2/mTHWp7+37fiNfL8bmBWiOmeumXkacM/AB0XOUQvEbncSnHA==} 266 | engines: {node: '>= 10'} 267 | cpu: [arm64] 268 | os: [linux] 269 | requiresBuild: true 270 | dev: false 271 | optional: true 272 | 273 | /@next/swc-linux-x64-gnu@14.0.3: 274 | resolution: {integrity: sha512-VM1aE1tJKLBwMGtyBR21yy+STfl0MapMQnNrXkxeyLs0GFv/kZqXS5Jw/TQ3TSUnbv0QPDf/X8sDXuMtSgG6eg==} 275 | engines: {node: '>= 10'} 276 | cpu: [x64] 277 | os: [linux] 278 | requiresBuild: true 279 | dev: false 280 | optional: true 281 | 282 | /@next/swc-linux-x64-musl@14.0.3: 283 | resolution: {integrity: sha512-64EnmKy18MYFL5CzLaSuUn561hbO1Gk16jM/KHznYP3iCIfF9e3yULtHaMy0D8zbHfxset9LTOv6cuYKJgcOxg==} 284 | engines: {node: '>= 10'} 285 | cpu: [x64] 286 | os: [linux] 287 | requiresBuild: true 288 | dev: false 289 | optional: true 290 | 291 | /@next/swc-win32-arm64-msvc@14.0.3: 292 | resolution: {integrity: sha512-WRDp8QrmsL1bbGtsh5GqQ/KWulmrnMBgbnb+59qNTW1kVi1nG/2ndZLkcbs2GX7NpFLlToLRMWSQXmPzQm4tog==} 293 | engines: {node: '>= 10'} 294 | cpu: [arm64] 295 | os: [win32] 296 | requiresBuild: true 297 | dev: false 298 | optional: true 299 | 300 | /@next/swc-win32-ia32-msvc@14.0.3: 301 | resolution: {integrity: sha512-EKffQeqCrj+t6qFFhIFTRoqb2QwX1mU7iTOvMyLbYw3QtqTw9sMwjykyiMlZlrfm2a4fA84+/aeW+PMg1MjuTg==} 302 | engines: {node: '>= 10'} 303 | cpu: [ia32] 304 | os: [win32] 305 | requiresBuild: true 306 | dev: false 307 | optional: true 308 | 309 | /@next/swc-win32-x64-msvc@14.0.3: 310 | resolution: {integrity: sha512-ERhKPSJ1vQrPiwrs15Pjz/rvDHZmkmvbf/BjPN/UCOI++ODftT0GtasDPi0j+y6PPJi5HsXw+dpRaXUaw4vjuQ==} 311 | engines: {node: '>= 10'} 312 | cpu: [x64] 313 | os: [win32] 314 | requiresBuild: true 315 | dev: false 316 | optional: true 317 | 318 | /@nodelib/fs.scandir@2.1.5: 319 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 320 | engines: {node: '>= 8'} 321 | dependencies: 322 | '@nodelib/fs.stat': 2.0.5 323 | run-parallel: 1.2.0 324 | dev: true 325 | 326 | /@nodelib/fs.stat@2.0.5: 327 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 328 | engines: {node: '>= 8'} 329 | dev: true 330 | 331 | /@nodelib/fs.walk@1.2.8: 332 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 333 | engines: {node: '>= 8'} 334 | dependencies: 335 | '@nodelib/fs.scandir': 2.1.5 336 | fastq: 1.15.0 337 | dev: true 338 | 339 | /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.38)(react@18.2.0): 340 | resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==} 341 | peerDependencies: 342 | '@types/react': '*' 343 | react: ^16.8 || ^17.0 || ^18.0 344 | peerDependenciesMeta: 345 | '@types/react': 346 | optional: true 347 | dependencies: 348 | '@babel/runtime': 7.23.4 349 | '@types/react': 18.2.38 350 | react: 18.2.0 351 | dev: false 352 | 353 | /@radix-ui/react-slot@1.0.2(@types/react@18.2.38)(react@18.2.0): 354 | resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==} 355 | peerDependencies: 356 | '@types/react': '*' 357 | react: ^16.8 || ^17.0 || ^18.0 358 | peerDependenciesMeta: 359 | '@types/react': 360 | optional: true 361 | dependencies: 362 | '@babel/runtime': 7.23.4 363 | '@radix-ui/react-compose-refs': 1.0.1(@types/react@18.2.38)(react@18.2.0) 364 | '@types/react': 18.2.38 365 | react: 18.2.0 366 | dev: false 367 | 368 | /@rushstack/eslint-patch@1.6.0: 369 | resolution: {integrity: sha512-2/U3GXA6YiPYQDLGwtGlnNgKYBSwCFIHf8Y9LUY5VATHdtbLlU0Y1R3QoBnT0aB4qv/BEiVVsj7LJXoQCgJ2vA==} 370 | dev: true 371 | 372 | /@swc/helpers@0.5.2: 373 | resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==} 374 | dependencies: 375 | tslib: 2.6.2 376 | dev: false 377 | 378 | /@types/debug@4.1.12: 379 | resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} 380 | dependencies: 381 | '@types/ms': 0.7.34 382 | dev: false 383 | 384 | /@types/estree@1.0.5: 385 | resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} 386 | dev: false 387 | 388 | /@types/hast@2.3.8: 389 | resolution: {integrity: sha512-aMIqAlFd2wTIDZuvLbhUT+TGvMxrNC8ECUIVtH6xxy0sQLs3iu6NO8Kp/VT5je7i5ufnebXzdV1dNDMnvaH6IQ==} 390 | dependencies: 391 | '@types/unist': 2.0.10 392 | dev: false 393 | 394 | /@types/json5@0.0.29: 395 | resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} 396 | dev: true 397 | 398 | /@types/katex@0.16.7: 399 | resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==} 400 | dev: false 401 | 402 | /@types/mdast@3.0.15: 403 | resolution: {integrity: sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==} 404 | dependencies: 405 | '@types/unist': 2.0.10 406 | dev: false 407 | 408 | /@types/ms@0.7.34: 409 | resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} 410 | dev: false 411 | 412 | /@types/node-fetch@2.6.9: 413 | resolution: {integrity: sha512-bQVlnMLFJ2d35DkPNjEPmd9ueO/rh5EiaZt2bhqiSarPjZIuIV6bPQVqcrEyvNo+AfTrRGVazle1tl597w3gfA==} 414 | dependencies: 415 | '@types/node': 20.10.0 416 | form-data: 4.0.0 417 | dev: false 418 | 419 | /@types/node@18.18.13: 420 | resolution: {integrity: sha512-vXYZGRrSCreZmq1rEjMRLXJhiy8MrIeVasx+PCVlP414N7CJLHnMf+juVvjdprHyH+XRy3zKZLHeNueOpJCn0g==} 421 | dependencies: 422 | undici-types: 5.26.5 423 | dev: false 424 | 425 | /@types/node@20.10.0: 426 | resolution: {integrity: sha512-D0WfRmU9TQ8I9PFx9Yc+EBHw+vSpIub4IDvQivcp26PtPrdMGAq5SDcpXEo/epqa/DXotVpekHiLNTg3iaKXBQ==} 427 | dependencies: 428 | undici-types: 5.26.5 429 | 430 | /@types/prop-types@15.7.11: 431 | resolution: {integrity: sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==} 432 | 433 | /@types/react-dom@18.2.17: 434 | resolution: {integrity: sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==} 435 | dependencies: 436 | '@types/react': 18.2.38 437 | dev: true 438 | 439 | /@types/react-syntax-highlighter@15.5.10: 440 | resolution: {integrity: sha512-Vf8nNkGHnjwK37b2wDs92zJSAWS2Mb57NcYHgajCNssHeTNEixvjINnXJkKdY0V0/eLrYkPP1xDKvNmYIr4HIg==} 441 | dependencies: 442 | '@types/react': 18.2.38 443 | dev: true 444 | 445 | /@types/react@18.2.38: 446 | resolution: {integrity: sha512-cBBXHzuPtQK6wNthuVMV6IjHAFkdl/FOPFIlkd81/Cd1+IqkHu/A+w4g43kaQQoYHik/ruaQBDL72HyCy1vuMw==} 447 | dependencies: 448 | '@types/prop-types': 15.7.11 449 | '@types/scheduler': 0.16.8 450 | csstype: 3.1.2 451 | 452 | /@types/scheduler@0.16.8: 453 | resolution: {integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==} 454 | 455 | /@types/unist@2.0.10: 456 | resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} 457 | dev: false 458 | 459 | /@typescript-eslint/parser@6.12.0(eslint@8.54.0)(typescript@5.3.2): 460 | resolution: {integrity: sha512-s8/jNFPKPNRmXEnNXfuo1gemBdVmpQsK1pcu+QIvuNJuhFzGrpD7WjOcvDc/+uEdfzSYpNu7U/+MmbScjoQ6vg==} 461 | engines: {node: ^16.0.0 || >=18.0.0} 462 | peerDependencies: 463 | eslint: ^7.0.0 || ^8.0.0 464 | typescript: '*' 465 | peerDependenciesMeta: 466 | typescript: 467 | optional: true 468 | dependencies: 469 | '@typescript-eslint/scope-manager': 6.12.0 470 | '@typescript-eslint/types': 6.12.0 471 | '@typescript-eslint/typescript-estree': 6.12.0(typescript@5.3.2) 472 | '@typescript-eslint/visitor-keys': 6.12.0 473 | debug: 4.3.4 474 | eslint: 8.54.0 475 | typescript: 5.3.2 476 | transitivePeerDependencies: 477 | - supports-color 478 | dev: true 479 | 480 | /@typescript-eslint/scope-manager@6.12.0: 481 | resolution: {integrity: sha512-5gUvjg+XdSj8pcetdL9eXJzQNTl3RD7LgUiYTl8Aabdi8hFkaGSYnaS6BLc0BGNaDH+tVzVwmKtWvu0jLgWVbw==} 482 | engines: {node: ^16.0.0 || >=18.0.0} 483 | dependencies: 484 | '@typescript-eslint/types': 6.12.0 485 | '@typescript-eslint/visitor-keys': 6.12.0 486 | dev: true 487 | 488 | /@typescript-eslint/types@6.12.0: 489 | resolution: {integrity: sha512-MA16p/+WxM5JG/F3RTpRIcuOghWO30//VEOvzubM8zuOOBYXsP+IfjoCXXiIfy2Ta8FRh9+IO9QLlaFQUU+10Q==} 490 | engines: {node: ^16.0.0 || >=18.0.0} 491 | dev: true 492 | 493 | /@typescript-eslint/typescript-estree@6.12.0(typescript@5.3.2): 494 | resolution: {integrity: sha512-vw9E2P9+3UUWzhgjyyVczLWxZ3GuQNT7QpnIY3o5OMeLO/c8oHljGc8ZpryBMIyympiAAaKgw9e5Hl9dCWFOYw==} 495 | engines: {node: ^16.0.0 || >=18.0.0} 496 | peerDependencies: 497 | typescript: '*' 498 | peerDependenciesMeta: 499 | typescript: 500 | optional: true 501 | dependencies: 502 | '@typescript-eslint/types': 6.12.0 503 | '@typescript-eslint/visitor-keys': 6.12.0 504 | debug: 4.3.4 505 | globby: 11.1.0 506 | is-glob: 4.0.3 507 | semver: 7.5.4 508 | ts-api-utils: 1.0.3(typescript@5.3.2) 509 | typescript: 5.3.2 510 | transitivePeerDependencies: 511 | - supports-color 512 | dev: true 513 | 514 | /@typescript-eslint/visitor-keys@6.12.0: 515 | resolution: {integrity: sha512-rg3BizTZHF1k3ipn8gfrzDXXSFKyOEB5zxYXInQ6z0hUvmQlhaZQzK+YmHmNViMA9HzW5Q9+bPPt90bU6GQwyw==} 516 | engines: {node: ^16.0.0 || >=18.0.0} 517 | dependencies: 518 | '@typescript-eslint/types': 6.12.0 519 | eslint-visitor-keys: 3.4.3 520 | dev: true 521 | 522 | /@ungap/structured-clone@1.2.0: 523 | resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} 524 | dev: true 525 | 526 | /@vue/compiler-core@3.3.9: 527 | resolution: {integrity: sha512-+/Lf68Vr/nFBA6ol4xOtJrW+BQWv3QWKfRwGSm70jtXwfhZNF4R/eRgyVJYoxFRhdCTk/F6g99BP0ffPgZihfQ==} 528 | dependencies: 529 | '@babel/parser': 7.23.4 530 | '@vue/shared': 3.3.9 531 | estree-walker: 2.0.2 532 | source-map-js: 1.0.2 533 | dev: false 534 | 535 | /@vue/compiler-dom@3.3.9: 536 | resolution: {integrity: sha512-nfWubTtLXuT4iBeDSZ5J3m218MjOy42Vp2pmKVuBKo2/BLcrFUX8nCSr/bKRFiJ32R8qbdnnnBgRn9AdU5v0Sg==} 537 | dependencies: 538 | '@vue/compiler-core': 3.3.9 539 | '@vue/shared': 3.3.9 540 | dev: false 541 | 542 | /@vue/compiler-sfc@3.3.9: 543 | resolution: {integrity: sha512-wy0CNc8z4ihoDzjASCOCsQuzW0A/HP27+0MDSSICMjVIFzk/rFViezkR3dzH+miS2NDEz8ywMdbjO5ylhOLI2A==} 544 | dependencies: 545 | '@babel/parser': 7.23.4 546 | '@vue/compiler-core': 3.3.9 547 | '@vue/compiler-dom': 3.3.9 548 | '@vue/compiler-ssr': 3.3.9 549 | '@vue/reactivity-transform': 3.3.9 550 | '@vue/shared': 3.3.9 551 | estree-walker: 2.0.2 552 | magic-string: 0.30.5 553 | postcss: 8.4.31 554 | source-map-js: 1.0.2 555 | dev: false 556 | 557 | /@vue/compiler-ssr@3.3.9: 558 | resolution: {integrity: sha512-NO5oobAw78R0G4SODY5A502MGnDNiDjf6qvhn7zD7TJGc8XDeIEw4fg6JU705jZ/YhuokBKz0A5a/FL/XZU73g==} 559 | dependencies: 560 | '@vue/compiler-dom': 3.3.9 561 | '@vue/shared': 3.3.9 562 | dev: false 563 | 564 | /@vue/reactivity-transform@3.3.9: 565 | resolution: {integrity: sha512-HnUFm7Ry6dFa4Lp63DAxTixUp8opMtQr6RxQCpDI1vlh12rkGIeYqMvJtK+IKyEfEOa2I9oCkD1mmsPdaGpdVg==} 566 | dependencies: 567 | '@babel/parser': 7.23.4 568 | '@vue/compiler-core': 3.3.9 569 | '@vue/shared': 3.3.9 570 | estree-walker: 2.0.2 571 | magic-string: 0.30.5 572 | dev: false 573 | 574 | /@vue/reactivity@3.3.9: 575 | resolution: {integrity: sha512-VmpIqlNp+aYDg2X0xQhJqHx9YguOmz2UxuUJDckBdQCNkipJvfk9yA75woLWElCa0Jtyec3lAAt49GO0izsphw==} 576 | dependencies: 577 | '@vue/shared': 3.3.9 578 | dev: false 579 | 580 | /@vue/runtime-core@3.3.9: 581 | resolution: {integrity: sha512-xxaG9KvPm3GTRuM4ZyU8Tc+pMVzcu6eeoSRQJ9IE7NmCcClW6z4B3Ij6L4EDl80sxe/arTtQ6YmgiO4UZqRc+w==} 582 | dependencies: 583 | '@vue/reactivity': 3.3.9 584 | '@vue/shared': 3.3.9 585 | dev: false 586 | 587 | /@vue/runtime-dom@3.3.9: 588 | resolution: {integrity: sha512-e7LIfcxYSWbV6BK1wQv9qJyxprC75EvSqF/kQKe6bdZEDNValzeRXEVgiX7AHI6hZ59HA4h7WT5CGvm69vzJTQ==} 589 | dependencies: 590 | '@vue/runtime-core': 3.3.9 591 | '@vue/shared': 3.3.9 592 | csstype: 3.1.2 593 | dev: false 594 | 595 | /@vue/server-renderer@3.3.9(vue@3.3.9): 596 | resolution: {integrity: sha512-w0zT/s5l3Oa3ZjtLW88eO4uV6AQFqU8X5GOgzq7SkQQu6vVr+8tfm+OI2kDBplS/W/XgCBuFXiPw6T5EdwXP0A==} 597 | peerDependencies: 598 | vue: 3.3.9 599 | dependencies: 600 | '@vue/compiler-ssr': 3.3.9 601 | '@vue/shared': 3.3.9 602 | vue: 3.3.9(typescript@5.3.2) 603 | dev: false 604 | 605 | /@vue/shared@3.3.9: 606 | resolution: {integrity: sha512-ZE0VTIR0LmYgeyhurPTpy4KzKsuDyQbMSdM49eKkMnT5X4VfFBLysMzjIZhLEFQYjjOVVfbvUDHckwjDFiO2eA==} 607 | dev: false 608 | 609 | /abort-controller@3.0.0: 610 | resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} 611 | engines: {node: '>=6.5'} 612 | dependencies: 613 | event-target-shim: 5.0.1 614 | dev: false 615 | 616 | /acorn-jsx@5.3.2(acorn@8.11.2): 617 | resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} 618 | peerDependencies: 619 | acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 620 | dependencies: 621 | acorn: 8.11.2 622 | dev: true 623 | 624 | /acorn@8.11.2: 625 | resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} 626 | engines: {node: '>=0.4.0'} 627 | hasBin: true 628 | 629 | /agentkeepalive@4.5.0: 630 | resolution: {integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==} 631 | engines: {node: '>= 8.0.0'} 632 | dependencies: 633 | humanize-ms: 1.2.1 634 | dev: false 635 | 636 | /ai@2.2.25(react@18.2.0)(solid-js@1.8.6)(svelte@4.2.7)(vue@3.3.9): 637 | resolution: {integrity: sha512-iXu3pzPpDPBGDir8hz86FAJmJTynMfBH4V/DXyR3GGeaHOfjdrErlcMm862CSalR6PDMwDOSCQVwJqtdnvIncQ==} 638 | engines: {node: '>=14.6'} 639 | peerDependencies: 640 | react: ^18.2.0 641 | solid-js: ^1.7.7 642 | svelte: ^3.0.0 || ^4.0.0 643 | vue: ^3.3.4 644 | peerDependenciesMeta: 645 | react: 646 | optional: true 647 | solid-js: 648 | optional: true 649 | svelte: 650 | optional: true 651 | vue: 652 | optional: true 653 | dependencies: 654 | eventsource-parser: 1.0.0 655 | nanoid: 3.3.6 656 | react: 18.2.0 657 | solid-js: 1.8.6 658 | solid-swr-store: 0.10.7(solid-js@1.8.6)(swr-store@0.10.6) 659 | sswr: 2.0.0(svelte@4.2.7) 660 | svelte: 4.2.7 661 | swr: 2.2.0(react@18.2.0) 662 | swr-store: 0.10.6 663 | swrv: 1.0.4(vue@3.3.9) 664 | vue: 3.3.9(typescript@5.3.2) 665 | dev: false 666 | 667 | /ajv@6.12.6: 668 | resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} 669 | dependencies: 670 | fast-deep-equal: 3.1.3 671 | fast-json-stable-stringify: 2.1.0 672 | json-schema-traverse: 0.4.1 673 | uri-js: 4.4.1 674 | dev: true 675 | 676 | /ansi-regex@5.0.1: 677 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 678 | engines: {node: '>=8'} 679 | dev: true 680 | 681 | /ansi-styles@4.3.0: 682 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 683 | engines: {node: '>=8'} 684 | dependencies: 685 | color-convert: 2.0.1 686 | dev: true 687 | 688 | /any-promise@1.3.0: 689 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} 690 | dev: true 691 | 692 | /anymatch@3.1.3: 693 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 694 | engines: {node: '>= 8'} 695 | dependencies: 696 | normalize-path: 3.0.0 697 | picomatch: 2.3.1 698 | dev: true 699 | 700 | /arg@5.0.2: 701 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} 702 | dev: true 703 | 704 | /argparse@2.0.1: 705 | resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} 706 | dev: true 707 | 708 | /aria-query@5.3.0: 709 | resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} 710 | dependencies: 711 | dequal: 2.0.3 712 | 713 | /array-buffer-byte-length@1.0.0: 714 | resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} 715 | dependencies: 716 | call-bind: 1.0.5 717 | is-array-buffer: 3.0.2 718 | dev: true 719 | 720 | /array-includes@3.1.7: 721 | resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} 722 | engines: {node: '>= 0.4'} 723 | dependencies: 724 | call-bind: 1.0.5 725 | define-properties: 1.2.1 726 | es-abstract: 1.22.3 727 | get-intrinsic: 1.2.2 728 | is-string: 1.0.7 729 | dev: true 730 | 731 | /array-union@2.1.0: 732 | resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} 733 | engines: {node: '>=8'} 734 | dev: true 735 | 736 | /array.prototype.findlastindex@1.2.3: 737 | resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} 738 | engines: {node: '>= 0.4'} 739 | dependencies: 740 | call-bind: 1.0.5 741 | define-properties: 1.2.1 742 | es-abstract: 1.22.3 743 | es-shim-unscopables: 1.0.2 744 | get-intrinsic: 1.2.2 745 | dev: true 746 | 747 | /array.prototype.flat@1.3.2: 748 | resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} 749 | engines: {node: '>= 0.4'} 750 | dependencies: 751 | call-bind: 1.0.5 752 | define-properties: 1.2.1 753 | es-abstract: 1.22.3 754 | es-shim-unscopables: 1.0.2 755 | dev: true 756 | 757 | /array.prototype.flatmap@1.3.2: 758 | resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} 759 | engines: {node: '>= 0.4'} 760 | dependencies: 761 | call-bind: 1.0.5 762 | define-properties: 1.2.1 763 | es-abstract: 1.22.3 764 | es-shim-unscopables: 1.0.2 765 | dev: true 766 | 767 | /array.prototype.tosorted@1.1.2: 768 | resolution: {integrity: sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==} 769 | dependencies: 770 | call-bind: 1.0.5 771 | define-properties: 1.2.1 772 | es-abstract: 1.22.3 773 | es-shim-unscopables: 1.0.2 774 | get-intrinsic: 1.2.2 775 | dev: true 776 | 777 | /arraybuffer.prototype.slice@1.0.2: 778 | resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} 779 | engines: {node: '>= 0.4'} 780 | dependencies: 781 | array-buffer-byte-length: 1.0.0 782 | call-bind: 1.0.5 783 | define-properties: 1.2.1 784 | es-abstract: 1.22.3 785 | get-intrinsic: 1.2.2 786 | is-array-buffer: 3.0.2 787 | is-shared-array-buffer: 1.0.2 788 | dev: true 789 | 790 | /ast-types-flow@0.0.8: 791 | resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} 792 | dev: true 793 | 794 | /asynciterator.prototype@1.0.0: 795 | resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} 796 | dependencies: 797 | has-symbols: 1.0.3 798 | dev: true 799 | 800 | /asynckit@0.4.0: 801 | resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} 802 | dev: false 803 | 804 | /autoprefixer@10.4.16(postcss@8.4.31): 805 | resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} 806 | engines: {node: ^10 || ^12 || >=14} 807 | hasBin: true 808 | peerDependencies: 809 | postcss: ^8.1.0 810 | dependencies: 811 | browserslist: 4.22.1 812 | caniuse-lite: 1.0.30001565 813 | fraction.js: 4.3.7 814 | normalize-range: 0.1.2 815 | picocolors: 1.0.0 816 | postcss: 8.4.31 817 | postcss-value-parser: 4.2.0 818 | dev: true 819 | 820 | /available-typed-arrays@1.0.5: 821 | resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} 822 | engines: {node: '>= 0.4'} 823 | dev: true 824 | 825 | /axe-core@4.7.0: 826 | resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} 827 | engines: {node: '>=4'} 828 | dev: true 829 | 830 | /axobject-query@3.2.1: 831 | resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} 832 | dependencies: 833 | dequal: 2.0.3 834 | 835 | /bail@2.0.2: 836 | resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} 837 | dev: false 838 | 839 | /balanced-match@1.0.2: 840 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 841 | dev: true 842 | 843 | /base-64@0.1.0: 844 | resolution: {integrity: sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==} 845 | dev: false 846 | 847 | /binary-extensions@2.2.0: 848 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 849 | engines: {node: '>=8'} 850 | dev: true 851 | 852 | /brace-expansion@1.1.11: 853 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 854 | dependencies: 855 | balanced-match: 1.0.2 856 | concat-map: 0.0.1 857 | dev: true 858 | 859 | /braces@3.0.2: 860 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 861 | engines: {node: '>=8'} 862 | dependencies: 863 | fill-range: 7.0.1 864 | dev: true 865 | 866 | /browserslist@4.22.1: 867 | resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==} 868 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 869 | hasBin: true 870 | dependencies: 871 | caniuse-lite: 1.0.30001565 872 | electron-to-chromium: 1.4.594 873 | node-releases: 2.0.13 874 | update-browserslist-db: 1.0.13(browserslist@4.22.1) 875 | dev: true 876 | 877 | /busboy@1.6.0: 878 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} 879 | engines: {node: '>=10.16.0'} 880 | dependencies: 881 | streamsearch: 1.1.0 882 | dev: false 883 | 884 | /call-bind@1.0.5: 885 | resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} 886 | dependencies: 887 | function-bind: 1.1.2 888 | get-intrinsic: 1.2.2 889 | set-function-length: 1.1.1 890 | dev: true 891 | 892 | /callsites@3.1.0: 893 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 894 | engines: {node: '>=6'} 895 | dev: true 896 | 897 | /camelcase-css@2.0.1: 898 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} 899 | engines: {node: '>= 6'} 900 | dev: true 901 | 902 | /caniuse-lite@1.0.30001565: 903 | resolution: {integrity: sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w==} 904 | 905 | /ccount@2.0.1: 906 | resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} 907 | dev: false 908 | 909 | /chalk@4.1.2: 910 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 911 | engines: {node: '>=10'} 912 | dependencies: 913 | ansi-styles: 4.3.0 914 | supports-color: 7.2.0 915 | dev: true 916 | 917 | /character-entities-legacy@1.1.4: 918 | resolution: {integrity: sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==} 919 | dev: false 920 | 921 | /character-entities@1.2.4: 922 | resolution: {integrity: sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==} 923 | dev: false 924 | 925 | /character-entities@2.0.2: 926 | resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} 927 | dev: false 928 | 929 | /character-reference-invalid@1.1.4: 930 | resolution: {integrity: sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==} 931 | dev: false 932 | 933 | /charenc@0.0.2: 934 | resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} 935 | dev: false 936 | 937 | /chokidar@3.5.3: 938 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 939 | engines: {node: '>= 8.10.0'} 940 | dependencies: 941 | anymatch: 3.1.3 942 | braces: 3.0.2 943 | glob-parent: 5.1.2 944 | is-binary-path: 2.1.0 945 | is-glob: 4.0.3 946 | normalize-path: 3.0.0 947 | readdirp: 3.6.0 948 | optionalDependencies: 949 | fsevents: 2.3.3 950 | dev: true 951 | 952 | /class-variance-authority@0.7.0: 953 | resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} 954 | dependencies: 955 | clsx: 2.0.0 956 | dev: false 957 | 958 | /client-only@0.0.1: 959 | resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} 960 | dev: false 961 | 962 | /clsx@1.2.1: 963 | resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} 964 | engines: {node: '>=6'} 965 | dev: false 966 | 967 | /clsx@2.0.0: 968 | resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} 969 | engines: {node: '>=6'} 970 | dev: false 971 | 972 | /code-red@1.0.4: 973 | resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} 974 | dependencies: 975 | '@jridgewell/sourcemap-codec': 1.4.15 976 | '@types/estree': 1.0.5 977 | acorn: 8.11.2 978 | estree-walker: 3.0.3 979 | periscopic: 3.1.0 980 | dev: false 981 | 982 | /color-convert@2.0.1: 983 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 984 | engines: {node: '>=7.0.0'} 985 | dependencies: 986 | color-name: 1.1.4 987 | dev: true 988 | 989 | /color-name@1.1.4: 990 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 991 | dev: true 992 | 993 | /combined-stream@1.0.8: 994 | resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} 995 | engines: {node: '>= 0.8'} 996 | dependencies: 997 | delayed-stream: 1.0.0 998 | dev: false 999 | 1000 | /comma-separated-tokens@1.0.8: 1001 | resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==} 1002 | dev: false 1003 | 1004 | /comma-separated-tokens@2.0.3: 1005 | resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} 1006 | dev: false 1007 | 1008 | /commander@4.1.1: 1009 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} 1010 | engines: {node: '>= 6'} 1011 | dev: true 1012 | 1013 | /commander@8.3.0: 1014 | resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} 1015 | engines: {node: '>= 12'} 1016 | dev: false 1017 | 1018 | /concat-map@0.0.1: 1019 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 1020 | dev: true 1021 | 1022 | /cross-spawn@7.0.3: 1023 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 1024 | engines: {node: '>= 8'} 1025 | dependencies: 1026 | path-key: 3.1.1 1027 | shebang-command: 2.0.0 1028 | which: 2.0.2 1029 | dev: true 1030 | 1031 | /crypt@0.0.2: 1032 | resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} 1033 | dev: false 1034 | 1035 | /css-tree@2.3.1: 1036 | resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} 1037 | engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} 1038 | dependencies: 1039 | mdn-data: 2.0.30 1040 | source-map-js: 1.0.2 1041 | dev: false 1042 | 1043 | /cssesc@3.0.0: 1044 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} 1045 | engines: {node: '>=4'} 1046 | hasBin: true 1047 | dev: true 1048 | 1049 | /csstype@3.1.2: 1050 | resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} 1051 | 1052 | /damerau-levenshtein@1.0.8: 1053 | resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} 1054 | dev: true 1055 | 1056 | /debug@3.2.7: 1057 | resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} 1058 | peerDependencies: 1059 | supports-color: '*' 1060 | peerDependenciesMeta: 1061 | supports-color: 1062 | optional: true 1063 | dependencies: 1064 | ms: 2.1.3 1065 | dev: true 1066 | 1067 | /debug@4.3.4: 1068 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 1069 | engines: {node: '>=6.0'} 1070 | peerDependencies: 1071 | supports-color: '*' 1072 | peerDependenciesMeta: 1073 | supports-color: 1074 | optional: true 1075 | dependencies: 1076 | ms: 2.1.2 1077 | 1078 | /decode-named-character-reference@1.0.2: 1079 | resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} 1080 | dependencies: 1081 | character-entities: 2.0.2 1082 | dev: false 1083 | 1084 | /deep-is@0.1.4: 1085 | resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} 1086 | dev: true 1087 | 1088 | /define-data-property@1.1.1: 1089 | resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} 1090 | engines: {node: '>= 0.4'} 1091 | dependencies: 1092 | get-intrinsic: 1.2.2 1093 | gopd: 1.0.1 1094 | has-property-descriptors: 1.0.1 1095 | dev: true 1096 | 1097 | /define-properties@1.2.1: 1098 | resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} 1099 | engines: {node: '>= 0.4'} 1100 | dependencies: 1101 | define-data-property: 1.1.1 1102 | has-property-descriptors: 1.0.1 1103 | object-keys: 1.1.1 1104 | dev: true 1105 | 1106 | /delayed-stream@1.0.0: 1107 | resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} 1108 | engines: {node: '>=0.4.0'} 1109 | dev: false 1110 | 1111 | /dequal@2.0.3: 1112 | resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} 1113 | engines: {node: '>=6'} 1114 | 1115 | /didyoumean@1.2.2: 1116 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} 1117 | dev: true 1118 | 1119 | /diff@5.1.0: 1120 | resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} 1121 | engines: {node: '>=0.3.1'} 1122 | dev: false 1123 | 1124 | /digest-fetch@1.3.0: 1125 | resolution: {integrity: sha512-CGJuv6iKNM7QyZlM2T3sPAdZWd/p9zQiRNS9G+9COUCwzWFTs0Xp8NF5iePx7wtvhDykReiRRrSeNb4oMmB8lA==} 1126 | dependencies: 1127 | base-64: 0.1.0 1128 | md5: 2.3.0 1129 | dev: false 1130 | 1131 | /dir-glob@3.0.1: 1132 | resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} 1133 | engines: {node: '>=8'} 1134 | dependencies: 1135 | path-type: 4.0.0 1136 | dev: true 1137 | 1138 | /dlv@1.1.3: 1139 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} 1140 | dev: true 1141 | 1142 | /doctrine@2.1.0: 1143 | resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} 1144 | engines: {node: '>=0.10.0'} 1145 | dependencies: 1146 | esutils: 2.0.3 1147 | dev: true 1148 | 1149 | /doctrine@3.0.0: 1150 | resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} 1151 | engines: {node: '>=6.0.0'} 1152 | dependencies: 1153 | esutils: 2.0.3 1154 | dev: true 1155 | 1156 | /dotenv@16.3.1: 1157 | resolution: {integrity: sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==} 1158 | engines: {node: '>=12'} 1159 | dev: false 1160 | 1161 | /electron-to-chromium@1.4.594: 1162 | resolution: {integrity: sha512-xT1HVAu5xFn7bDfkjGQi9dNpMqGchUkebwf1GL7cZN32NSwwlHRPMSDJ1KN6HkS0bWUtndbSQZqvpQftKG2uFQ==} 1163 | dev: true 1164 | 1165 | /emoji-regex@9.2.2: 1166 | resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} 1167 | dev: true 1168 | 1169 | /enhanced-resolve@5.15.0: 1170 | resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} 1171 | engines: {node: '>=10.13.0'} 1172 | dependencies: 1173 | graceful-fs: 4.2.11 1174 | tapable: 2.2.1 1175 | dev: true 1176 | 1177 | /es-abstract@1.22.3: 1178 | resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} 1179 | engines: {node: '>= 0.4'} 1180 | dependencies: 1181 | array-buffer-byte-length: 1.0.0 1182 | arraybuffer.prototype.slice: 1.0.2 1183 | available-typed-arrays: 1.0.5 1184 | call-bind: 1.0.5 1185 | es-set-tostringtag: 2.0.2 1186 | es-to-primitive: 1.2.1 1187 | function.prototype.name: 1.1.6 1188 | get-intrinsic: 1.2.2 1189 | get-symbol-description: 1.0.0 1190 | globalthis: 1.0.3 1191 | gopd: 1.0.1 1192 | has-property-descriptors: 1.0.1 1193 | has-proto: 1.0.1 1194 | has-symbols: 1.0.3 1195 | hasown: 2.0.0 1196 | internal-slot: 1.0.6 1197 | is-array-buffer: 3.0.2 1198 | is-callable: 1.2.7 1199 | is-negative-zero: 2.0.2 1200 | is-regex: 1.1.4 1201 | is-shared-array-buffer: 1.0.2 1202 | is-string: 1.0.7 1203 | is-typed-array: 1.1.12 1204 | is-weakref: 1.0.2 1205 | object-inspect: 1.13.1 1206 | object-keys: 1.1.1 1207 | object.assign: 4.1.4 1208 | regexp.prototype.flags: 1.5.1 1209 | safe-array-concat: 1.0.1 1210 | safe-regex-test: 1.0.0 1211 | string.prototype.trim: 1.2.8 1212 | string.prototype.trimend: 1.0.7 1213 | string.prototype.trimstart: 1.0.7 1214 | typed-array-buffer: 1.0.0 1215 | typed-array-byte-length: 1.0.0 1216 | typed-array-byte-offset: 1.0.0 1217 | typed-array-length: 1.0.4 1218 | unbox-primitive: 1.0.2 1219 | which-typed-array: 1.1.13 1220 | dev: true 1221 | 1222 | /es-iterator-helpers@1.0.15: 1223 | resolution: {integrity: sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==} 1224 | dependencies: 1225 | asynciterator.prototype: 1.0.0 1226 | call-bind: 1.0.5 1227 | define-properties: 1.2.1 1228 | es-abstract: 1.22.3 1229 | es-set-tostringtag: 2.0.2 1230 | function-bind: 1.1.2 1231 | get-intrinsic: 1.2.2 1232 | globalthis: 1.0.3 1233 | has-property-descriptors: 1.0.1 1234 | has-proto: 1.0.1 1235 | has-symbols: 1.0.3 1236 | internal-slot: 1.0.6 1237 | iterator.prototype: 1.1.2 1238 | safe-array-concat: 1.0.1 1239 | dev: true 1240 | 1241 | /es-set-tostringtag@2.0.2: 1242 | resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} 1243 | engines: {node: '>= 0.4'} 1244 | dependencies: 1245 | get-intrinsic: 1.2.2 1246 | has-tostringtag: 1.0.0 1247 | hasown: 2.0.0 1248 | dev: true 1249 | 1250 | /es-shim-unscopables@1.0.2: 1251 | resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} 1252 | dependencies: 1253 | hasown: 2.0.0 1254 | dev: true 1255 | 1256 | /es-to-primitive@1.2.1: 1257 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} 1258 | engines: {node: '>= 0.4'} 1259 | dependencies: 1260 | is-callable: 1.2.7 1261 | is-date-object: 1.0.5 1262 | is-symbol: 1.0.4 1263 | dev: true 1264 | 1265 | /escalade@3.1.1: 1266 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1267 | engines: {node: '>=6'} 1268 | dev: true 1269 | 1270 | /escape-string-regexp@4.0.0: 1271 | resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} 1272 | engines: {node: '>=10'} 1273 | dev: true 1274 | 1275 | /escape-string-regexp@5.0.0: 1276 | resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} 1277 | engines: {node: '>=12'} 1278 | dev: false 1279 | 1280 | /eslint-config-next@13.5.6(eslint@8.54.0)(typescript@5.3.2): 1281 | resolution: {integrity: sha512-o8pQsUHTo9aHqJ2YiZDym5gQAMRf7O2HndHo/JZeY7TDD+W4hk6Ma8Vw54RHiBeb7OWWO5dPirQB+Is/aVQ7Kg==} 1282 | peerDependencies: 1283 | eslint: ^7.23.0 || ^8.0.0 1284 | typescript: '>=3.3.1' 1285 | peerDependenciesMeta: 1286 | typescript: 1287 | optional: true 1288 | dependencies: 1289 | '@next/eslint-plugin-next': 13.5.6 1290 | '@rushstack/eslint-patch': 1.6.0 1291 | '@typescript-eslint/parser': 6.12.0(eslint@8.54.0)(typescript@5.3.2) 1292 | eslint: 8.54.0 1293 | eslint-import-resolver-node: 0.3.9 1294 | eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.12.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0)(eslint@8.54.0) 1295 | eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.12.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.54.0) 1296 | eslint-plugin-jsx-a11y: 6.8.0(eslint@8.54.0) 1297 | eslint-plugin-react: 7.33.2(eslint@8.54.0) 1298 | eslint-plugin-react-hooks: 4.6.0(eslint@8.54.0) 1299 | typescript: 5.3.2 1300 | transitivePeerDependencies: 1301 | - eslint-import-resolver-webpack 1302 | - supports-color 1303 | dev: true 1304 | 1305 | /eslint-import-resolver-node@0.3.9: 1306 | resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} 1307 | dependencies: 1308 | debug: 3.2.7 1309 | is-core-module: 2.13.1 1310 | resolve: 1.22.8 1311 | transitivePeerDependencies: 1312 | - supports-color 1313 | dev: true 1314 | 1315 | /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.12.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0)(eslint@8.54.0): 1316 | resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} 1317 | engines: {node: ^14.18.0 || >=16.0.0} 1318 | peerDependencies: 1319 | eslint: '*' 1320 | eslint-plugin-import: '*' 1321 | dependencies: 1322 | debug: 4.3.4 1323 | enhanced-resolve: 5.15.0 1324 | eslint: 8.54.0 1325 | eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.12.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.54.0) 1326 | eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.12.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.54.0) 1327 | fast-glob: 3.3.2 1328 | get-tsconfig: 4.7.2 1329 | is-core-module: 2.13.1 1330 | is-glob: 4.0.3 1331 | transitivePeerDependencies: 1332 | - '@typescript-eslint/parser' 1333 | - eslint-import-resolver-node 1334 | - eslint-import-resolver-webpack 1335 | - supports-color 1336 | dev: true 1337 | 1338 | /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.12.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.54.0): 1339 | resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} 1340 | engines: {node: '>=4'} 1341 | peerDependencies: 1342 | '@typescript-eslint/parser': '*' 1343 | eslint: '*' 1344 | eslint-import-resolver-node: '*' 1345 | eslint-import-resolver-typescript: '*' 1346 | eslint-import-resolver-webpack: '*' 1347 | peerDependenciesMeta: 1348 | '@typescript-eslint/parser': 1349 | optional: true 1350 | eslint: 1351 | optional: true 1352 | eslint-import-resolver-node: 1353 | optional: true 1354 | eslint-import-resolver-typescript: 1355 | optional: true 1356 | eslint-import-resolver-webpack: 1357 | optional: true 1358 | dependencies: 1359 | '@typescript-eslint/parser': 6.12.0(eslint@8.54.0)(typescript@5.3.2) 1360 | debug: 3.2.7 1361 | eslint: 8.54.0 1362 | eslint-import-resolver-node: 0.3.9 1363 | eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.12.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.0)(eslint@8.54.0) 1364 | transitivePeerDependencies: 1365 | - supports-color 1366 | dev: true 1367 | 1368 | /eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.12.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.54.0): 1369 | resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} 1370 | engines: {node: '>=4'} 1371 | peerDependencies: 1372 | '@typescript-eslint/parser': '*' 1373 | eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 1374 | peerDependenciesMeta: 1375 | '@typescript-eslint/parser': 1376 | optional: true 1377 | dependencies: 1378 | '@typescript-eslint/parser': 6.12.0(eslint@8.54.0)(typescript@5.3.2) 1379 | array-includes: 3.1.7 1380 | array.prototype.findlastindex: 1.2.3 1381 | array.prototype.flat: 1.3.2 1382 | array.prototype.flatmap: 1.3.2 1383 | debug: 3.2.7 1384 | doctrine: 2.1.0 1385 | eslint: 8.54.0 1386 | eslint-import-resolver-node: 0.3.9 1387 | eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.12.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.54.0) 1388 | hasown: 2.0.0 1389 | is-core-module: 2.13.1 1390 | is-glob: 4.0.3 1391 | minimatch: 3.1.2 1392 | object.fromentries: 2.0.7 1393 | object.groupby: 1.0.1 1394 | object.values: 1.1.7 1395 | semver: 6.3.1 1396 | tsconfig-paths: 3.14.2 1397 | transitivePeerDependencies: 1398 | - eslint-import-resolver-typescript 1399 | - eslint-import-resolver-webpack 1400 | - supports-color 1401 | dev: true 1402 | 1403 | /eslint-plugin-jsx-a11y@6.8.0(eslint@8.54.0): 1404 | resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} 1405 | engines: {node: '>=4.0'} 1406 | peerDependencies: 1407 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 1408 | dependencies: 1409 | '@babel/runtime': 7.23.4 1410 | aria-query: 5.3.0 1411 | array-includes: 3.1.7 1412 | array.prototype.flatmap: 1.3.2 1413 | ast-types-flow: 0.0.8 1414 | axe-core: 4.7.0 1415 | axobject-query: 3.2.1 1416 | damerau-levenshtein: 1.0.8 1417 | emoji-regex: 9.2.2 1418 | es-iterator-helpers: 1.0.15 1419 | eslint: 8.54.0 1420 | hasown: 2.0.0 1421 | jsx-ast-utils: 3.3.5 1422 | language-tags: 1.0.9 1423 | minimatch: 3.1.2 1424 | object.entries: 1.1.7 1425 | object.fromentries: 2.0.7 1426 | dev: true 1427 | 1428 | /eslint-plugin-react-hooks@4.6.0(eslint@8.54.0): 1429 | resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} 1430 | engines: {node: '>=10'} 1431 | peerDependencies: 1432 | eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 1433 | dependencies: 1434 | eslint: 8.54.0 1435 | dev: true 1436 | 1437 | /eslint-plugin-react@7.33.2(eslint@8.54.0): 1438 | resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} 1439 | engines: {node: '>=4'} 1440 | peerDependencies: 1441 | eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 1442 | dependencies: 1443 | array-includes: 3.1.7 1444 | array.prototype.flatmap: 1.3.2 1445 | array.prototype.tosorted: 1.1.2 1446 | doctrine: 2.1.0 1447 | es-iterator-helpers: 1.0.15 1448 | eslint: 8.54.0 1449 | estraverse: 5.3.0 1450 | jsx-ast-utils: 3.3.5 1451 | minimatch: 3.1.2 1452 | object.entries: 1.1.7 1453 | object.fromentries: 2.0.7 1454 | object.hasown: 1.1.3 1455 | object.values: 1.1.7 1456 | prop-types: 15.8.1 1457 | resolve: 2.0.0-next.5 1458 | semver: 6.3.1 1459 | string.prototype.matchall: 4.0.10 1460 | dev: true 1461 | 1462 | /eslint-scope@7.2.2: 1463 | resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} 1464 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1465 | dependencies: 1466 | esrecurse: 4.3.0 1467 | estraverse: 5.3.0 1468 | dev: true 1469 | 1470 | /eslint-visitor-keys@3.4.3: 1471 | resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} 1472 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1473 | dev: true 1474 | 1475 | /eslint@8.54.0: 1476 | resolution: {integrity: sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==} 1477 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1478 | hasBin: true 1479 | dependencies: 1480 | '@eslint-community/eslint-utils': 4.4.0(eslint@8.54.0) 1481 | '@eslint-community/regexpp': 4.10.0 1482 | '@eslint/eslintrc': 2.1.3 1483 | '@eslint/js': 8.54.0 1484 | '@humanwhocodes/config-array': 0.11.13 1485 | '@humanwhocodes/module-importer': 1.0.1 1486 | '@nodelib/fs.walk': 1.2.8 1487 | '@ungap/structured-clone': 1.2.0 1488 | ajv: 6.12.6 1489 | chalk: 4.1.2 1490 | cross-spawn: 7.0.3 1491 | debug: 4.3.4 1492 | doctrine: 3.0.0 1493 | escape-string-regexp: 4.0.0 1494 | eslint-scope: 7.2.2 1495 | eslint-visitor-keys: 3.4.3 1496 | espree: 9.6.1 1497 | esquery: 1.5.0 1498 | esutils: 2.0.3 1499 | fast-deep-equal: 3.1.3 1500 | file-entry-cache: 6.0.1 1501 | find-up: 5.0.0 1502 | glob-parent: 6.0.2 1503 | globals: 13.23.0 1504 | graphemer: 1.4.0 1505 | ignore: 5.3.0 1506 | imurmurhash: 0.1.4 1507 | is-glob: 4.0.3 1508 | is-path-inside: 3.0.3 1509 | js-yaml: 4.1.0 1510 | json-stable-stringify-without-jsonify: 1.0.1 1511 | levn: 0.4.1 1512 | lodash.merge: 4.6.2 1513 | minimatch: 3.1.2 1514 | natural-compare: 1.4.0 1515 | optionator: 0.9.3 1516 | strip-ansi: 6.0.1 1517 | text-table: 0.2.0 1518 | transitivePeerDependencies: 1519 | - supports-color 1520 | dev: true 1521 | 1522 | /espree@9.6.1: 1523 | resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} 1524 | engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1525 | dependencies: 1526 | acorn: 8.11.2 1527 | acorn-jsx: 5.3.2(acorn@8.11.2) 1528 | eslint-visitor-keys: 3.4.3 1529 | dev: true 1530 | 1531 | /esquery@1.5.0: 1532 | resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} 1533 | engines: {node: '>=0.10'} 1534 | dependencies: 1535 | estraverse: 5.3.0 1536 | dev: true 1537 | 1538 | /esrecurse@4.3.0: 1539 | resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} 1540 | engines: {node: '>=4.0'} 1541 | dependencies: 1542 | estraverse: 5.3.0 1543 | dev: true 1544 | 1545 | /estraverse@5.3.0: 1546 | resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} 1547 | engines: {node: '>=4.0'} 1548 | dev: true 1549 | 1550 | /estree-walker@2.0.2: 1551 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} 1552 | dev: false 1553 | 1554 | /estree-walker@3.0.3: 1555 | resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} 1556 | dependencies: 1557 | '@types/estree': 1.0.5 1558 | dev: false 1559 | 1560 | /esutils@2.0.3: 1561 | resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} 1562 | engines: {node: '>=0.10.0'} 1563 | dev: true 1564 | 1565 | /event-target-shim@5.0.1: 1566 | resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} 1567 | engines: {node: '>=6'} 1568 | dev: false 1569 | 1570 | /eventsource-parser@1.0.0: 1571 | resolution: {integrity: sha512-9jgfSCa3dmEme2ES3mPByGXfgZ87VbP97tng1G2nWwWx6bV2nYxm2AWCrbQjXToSe+yYlqaZNtxffR9IeQr95g==} 1572 | engines: {node: '>=14.18'} 1573 | dev: false 1574 | 1575 | /extend@3.0.2: 1576 | resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} 1577 | dev: false 1578 | 1579 | /fast-deep-equal@3.1.3: 1580 | resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} 1581 | dev: true 1582 | 1583 | /fast-glob@3.3.2: 1584 | resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} 1585 | engines: {node: '>=8.6.0'} 1586 | dependencies: 1587 | '@nodelib/fs.stat': 2.0.5 1588 | '@nodelib/fs.walk': 1.2.8 1589 | glob-parent: 5.1.2 1590 | merge2: 1.4.1 1591 | micromatch: 4.0.5 1592 | dev: true 1593 | 1594 | /fast-json-stable-stringify@2.1.0: 1595 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1596 | dev: true 1597 | 1598 | /fast-levenshtein@2.0.6: 1599 | resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} 1600 | dev: true 1601 | 1602 | /fastq@1.15.0: 1603 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 1604 | dependencies: 1605 | reusify: 1.0.4 1606 | dev: true 1607 | 1608 | /fault@1.0.4: 1609 | resolution: {integrity: sha512-CJ0HCB5tL5fYTEA7ToAq5+kTwd++Borf1/bifxd9iT70QcXr4MRrO3Llf8Ifs70q+SJcGHFtnIE/Nw6giCtECA==} 1610 | dependencies: 1611 | format: 0.2.2 1612 | dev: false 1613 | 1614 | /file-entry-cache@6.0.1: 1615 | resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} 1616 | engines: {node: ^10.12.0 || >=12.0.0} 1617 | dependencies: 1618 | flat-cache: 3.2.0 1619 | dev: true 1620 | 1621 | /fill-range@7.0.1: 1622 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1623 | engines: {node: '>=8'} 1624 | dependencies: 1625 | to-regex-range: 5.0.1 1626 | dev: true 1627 | 1628 | /find-up@5.0.0: 1629 | resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} 1630 | engines: {node: '>=10'} 1631 | dependencies: 1632 | locate-path: 6.0.0 1633 | path-exists: 4.0.0 1634 | dev: true 1635 | 1636 | /flat-cache@3.2.0: 1637 | resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} 1638 | engines: {node: ^10.12.0 || >=12.0.0} 1639 | dependencies: 1640 | flatted: 3.2.9 1641 | keyv: 4.5.4 1642 | rimraf: 3.0.2 1643 | dev: true 1644 | 1645 | /flatted@3.2.9: 1646 | resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} 1647 | dev: true 1648 | 1649 | /for-each@0.3.3: 1650 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} 1651 | dependencies: 1652 | is-callable: 1.2.7 1653 | dev: true 1654 | 1655 | /form-data-encoder@1.7.2: 1656 | resolution: {integrity: sha512-qfqtYan3rxrnCk1VYaA4H+Ms9xdpPqvLZa6xmMgFvhO32x7/3J/ExcTd6qpxM0vH2GdMI+poehyBZvqfMTto8A==} 1657 | dev: false 1658 | 1659 | /form-data@4.0.0: 1660 | resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} 1661 | engines: {node: '>= 6'} 1662 | dependencies: 1663 | asynckit: 0.4.0 1664 | combined-stream: 1.0.8 1665 | mime-types: 2.1.35 1666 | dev: false 1667 | 1668 | /format@0.2.2: 1669 | resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} 1670 | engines: {node: '>=0.4.x'} 1671 | dev: false 1672 | 1673 | /formdata-node@4.4.1: 1674 | resolution: {integrity: sha512-0iirZp3uVDjVGt9p49aTaqjk84TrglENEDuqfdlZQ1roC9CWlPk6Avf8EEnZNcAqPonwkG35x4n3ww/1THYAeQ==} 1675 | engines: {node: '>= 12.20'} 1676 | dependencies: 1677 | node-domexception: 1.0.0 1678 | web-streams-polyfill: 4.0.0-beta.3 1679 | dev: false 1680 | 1681 | /fraction.js@4.3.7: 1682 | resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} 1683 | dev: true 1684 | 1685 | /fs.realpath@1.0.0: 1686 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1687 | dev: true 1688 | 1689 | /fsevents@2.3.3: 1690 | resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} 1691 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1692 | os: [darwin] 1693 | requiresBuild: true 1694 | dev: true 1695 | optional: true 1696 | 1697 | /function-bind@1.1.2: 1698 | resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} 1699 | dev: true 1700 | 1701 | /function.prototype.name@1.1.6: 1702 | resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} 1703 | engines: {node: '>= 0.4'} 1704 | dependencies: 1705 | call-bind: 1.0.5 1706 | define-properties: 1.2.1 1707 | es-abstract: 1.22.3 1708 | functions-have-names: 1.2.3 1709 | dev: true 1710 | 1711 | /functions-have-names@1.2.3: 1712 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} 1713 | dev: true 1714 | 1715 | /get-intrinsic@1.2.2: 1716 | resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} 1717 | dependencies: 1718 | function-bind: 1.1.2 1719 | has-proto: 1.0.1 1720 | has-symbols: 1.0.3 1721 | hasown: 2.0.0 1722 | dev: true 1723 | 1724 | /get-symbol-description@1.0.0: 1725 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} 1726 | engines: {node: '>= 0.4'} 1727 | dependencies: 1728 | call-bind: 1.0.5 1729 | get-intrinsic: 1.2.2 1730 | dev: true 1731 | 1732 | /get-tsconfig@4.7.2: 1733 | resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} 1734 | dependencies: 1735 | resolve-pkg-maps: 1.0.0 1736 | dev: true 1737 | 1738 | /glob-parent@5.1.2: 1739 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 1740 | engines: {node: '>= 6'} 1741 | dependencies: 1742 | is-glob: 4.0.3 1743 | dev: true 1744 | 1745 | /glob-parent@6.0.2: 1746 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} 1747 | engines: {node: '>=10.13.0'} 1748 | dependencies: 1749 | is-glob: 4.0.3 1750 | dev: true 1751 | 1752 | /glob-to-regexp@0.4.1: 1753 | resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} 1754 | dev: false 1755 | 1756 | /glob@7.1.6: 1757 | resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} 1758 | dependencies: 1759 | fs.realpath: 1.0.0 1760 | inflight: 1.0.6 1761 | inherits: 2.0.4 1762 | minimatch: 3.1.2 1763 | once: 1.4.0 1764 | path-is-absolute: 1.0.1 1765 | dev: true 1766 | 1767 | /glob@7.1.7: 1768 | resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} 1769 | dependencies: 1770 | fs.realpath: 1.0.0 1771 | inflight: 1.0.6 1772 | inherits: 2.0.4 1773 | minimatch: 3.1.2 1774 | once: 1.4.0 1775 | path-is-absolute: 1.0.1 1776 | dev: true 1777 | 1778 | /glob@7.2.3: 1779 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1780 | dependencies: 1781 | fs.realpath: 1.0.0 1782 | inflight: 1.0.6 1783 | inherits: 2.0.4 1784 | minimatch: 3.1.2 1785 | once: 1.4.0 1786 | path-is-absolute: 1.0.1 1787 | dev: true 1788 | 1789 | /globals@13.23.0: 1790 | resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} 1791 | engines: {node: '>=8'} 1792 | dependencies: 1793 | type-fest: 0.20.2 1794 | dev: true 1795 | 1796 | /globalthis@1.0.3: 1797 | resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} 1798 | engines: {node: '>= 0.4'} 1799 | dependencies: 1800 | define-properties: 1.2.1 1801 | dev: true 1802 | 1803 | /globby@11.1.0: 1804 | resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} 1805 | engines: {node: '>=10'} 1806 | dependencies: 1807 | array-union: 2.1.0 1808 | dir-glob: 3.0.1 1809 | fast-glob: 3.3.2 1810 | ignore: 5.3.0 1811 | merge2: 1.4.1 1812 | slash: 3.0.0 1813 | dev: true 1814 | 1815 | /gopd@1.0.1: 1816 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} 1817 | dependencies: 1818 | get-intrinsic: 1.2.2 1819 | dev: true 1820 | 1821 | /graceful-fs@4.2.11: 1822 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1823 | 1824 | /graphemer@1.4.0: 1825 | resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} 1826 | dev: true 1827 | 1828 | /has-bigints@1.0.2: 1829 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} 1830 | dev: true 1831 | 1832 | /has-flag@4.0.0: 1833 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1834 | engines: {node: '>=8'} 1835 | dev: true 1836 | 1837 | /has-property-descriptors@1.0.1: 1838 | resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} 1839 | dependencies: 1840 | get-intrinsic: 1.2.2 1841 | dev: true 1842 | 1843 | /has-proto@1.0.1: 1844 | resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} 1845 | engines: {node: '>= 0.4'} 1846 | dev: true 1847 | 1848 | /has-symbols@1.0.3: 1849 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} 1850 | engines: {node: '>= 0.4'} 1851 | dev: true 1852 | 1853 | /has-tostringtag@1.0.0: 1854 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} 1855 | engines: {node: '>= 0.4'} 1856 | dependencies: 1857 | has-symbols: 1.0.3 1858 | dev: true 1859 | 1860 | /hasown@2.0.0: 1861 | resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} 1862 | engines: {node: '>= 0.4'} 1863 | dependencies: 1864 | function-bind: 1.1.2 1865 | dev: true 1866 | 1867 | /hast-util-parse-selector@2.2.5: 1868 | resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} 1869 | dev: false 1870 | 1871 | /hast-util-whitespace@2.0.1: 1872 | resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==} 1873 | dev: false 1874 | 1875 | /hastscript@6.0.0: 1876 | resolution: {integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==} 1877 | dependencies: 1878 | '@types/hast': 2.3.8 1879 | comma-separated-tokens: 1.0.8 1880 | hast-util-parse-selector: 2.2.5 1881 | property-information: 5.6.0 1882 | space-separated-tokens: 1.1.5 1883 | dev: false 1884 | 1885 | /highlight.js@10.7.3: 1886 | resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} 1887 | dev: false 1888 | 1889 | /humanize-ms@1.2.1: 1890 | resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==} 1891 | dependencies: 1892 | ms: 2.1.3 1893 | dev: false 1894 | 1895 | /ignore@5.3.0: 1896 | resolution: {integrity: sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==} 1897 | engines: {node: '>= 4'} 1898 | dev: true 1899 | 1900 | /import-fresh@3.3.0: 1901 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 1902 | engines: {node: '>=6'} 1903 | dependencies: 1904 | parent-module: 1.0.1 1905 | resolve-from: 4.0.0 1906 | dev: true 1907 | 1908 | /imurmurhash@0.1.4: 1909 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1910 | engines: {node: '>=0.8.19'} 1911 | dev: true 1912 | 1913 | /inflight@1.0.6: 1914 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1915 | dependencies: 1916 | once: 1.4.0 1917 | wrappy: 1.0.2 1918 | dev: true 1919 | 1920 | /inherits@2.0.4: 1921 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1922 | dev: true 1923 | 1924 | /inline-style-parser@0.1.1: 1925 | resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} 1926 | dev: false 1927 | 1928 | /internal-slot@1.0.6: 1929 | resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} 1930 | engines: {node: '>= 0.4'} 1931 | dependencies: 1932 | get-intrinsic: 1.2.2 1933 | hasown: 2.0.0 1934 | side-channel: 1.0.4 1935 | dev: true 1936 | 1937 | /is-alphabetical@1.0.4: 1938 | resolution: {integrity: sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==} 1939 | dev: false 1940 | 1941 | /is-alphanumerical@1.0.4: 1942 | resolution: {integrity: sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==} 1943 | dependencies: 1944 | is-alphabetical: 1.0.4 1945 | is-decimal: 1.0.4 1946 | dev: false 1947 | 1948 | /is-array-buffer@3.0.2: 1949 | resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} 1950 | dependencies: 1951 | call-bind: 1.0.5 1952 | get-intrinsic: 1.2.2 1953 | is-typed-array: 1.1.12 1954 | dev: true 1955 | 1956 | /is-async-function@2.0.0: 1957 | resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} 1958 | engines: {node: '>= 0.4'} 1959 | dependencies: 1960 | has-tostringtag: 1.0.0 1961 | dev: true 1962 | 1963 | /is-bigint@1.0.4: 1964 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} 1965 | dependencies: 1966 | has-bigints: 1.0.2 1967 | dev: true 1968 | 1969 | /is-binary-path@2.1.0: 1970 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 1971 | engines: {node: '>=8'} 1972 | dependencies: 1973 | binary-extensions: 2.2.0 1974 | dev: true 1975 | 1976 | /is-boolean-object@1.1.2: 1977 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} 1978 | engines: {node: '>= 0.4'} 1979 | dependencies: 1980 | call-bind: 1.0.5 1981 | has-tostringtag: 1.0.0 1982 | dev: true 1983 | 1984 | /is-buffer@1.1.6: 1985 | resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==} 1986 | dev: false 1987 | 1988 | /is-buffer@2.0.5: 1989 | resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==} 1990 | engines: {node: '>=4'} 1991 | dev: false 1992 | 1993 | /is-callable@1.2.7: 1994 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} 1995 | engines: {node: '>= 0.4'} 1996 | dev: true 1997 | 1998 | /is-core-module@2.13.1: 1999 | resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} 2000 | dependencies: 2001 | hasown: 2.0.0 2002 | dev: true 2003 | 2004 | /is-date-object@1.0.5: 2005 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} 2006 | engines: {node: '>= 0.4'} 2007 | dependencies: 2008 | has-tostringtag: 1.0.0 2009 | dev: true 2010 | 2011 | /is-decimal@1.0.4: 2012 | resolution: {integrity: sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==} 2013 | dev: false 2014 | 2015 | /is-extglob@2.1.1: 2016 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 2017 | engines: {node: '>=0.10.0'} 2018 | dev: true 2019 | 2020 | /is-finalizationregistry@1.0.2: 2021 | resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} 2022 | dependencies: 2023 | call-bind: 1.0.5 2024 | dev: true 2025 | 2026 | /is-generator-function@1.0.10: 2027 | resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} 2028 | engines: {node: '>= 0.4'} 2029 | dependencies: 2030 | has-tostringtag: 1.0.0 2031 | dev: true 2032 | 2033 | /is-glob@4.0.3: 2034 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 2035 | engines: {node: '>=0.10.0'} 2036 | dependencies: 2037 | is-extglob: 2.1.1 2038 | dev: true 2039 | 2040 | /is-hexadecimal@1.0.4: 2041 | resolution: {integrity: sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==} 2042 | dev: false 2043 | 2044 | /is-map@2.0.2: 2045 | resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} 2046 | dev: true 2047 | 2048 | /is-negative-zero@2.0.2: 2049 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} 2050 | engines: {node: '>= 0.4'} 2051 | dev: true 2052 | 2053 | /is-number-object@1.0.7: 2054 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} 2055 | engines: {node: '>= 0.4'} 2056 | dependencies: 2057 | has-tostringtag: 1.0.0 2058 | dev: true 2059 | 2060 | /is-number@7.0.0: 2061 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 2062 | engines: {node: '>=0.12.0'} 2063 | dev: true 2064 | 2065 | /is-path-inside@3.0.3: 2066 | resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} 2067 | engines: {node: '>=8'} 2068 | dev: true 2069 | 2070 | /is-plain-obj@4.1.0: 2071 | resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} 2072 | engines: {node: '>=12'} 2073 | dev: false 2074 | 2075 | /is-reference@3.0.2: 2076 | resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} 2077 | dependencies: 2078 | '@types/estree': 1.0.5 2079 | dev: false 2080 | 2081 | /is-regex@1.1.4: 2082 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} 2083 | engines: {node: '>= 0.4'} 2084 | dependencies: 2085 | call-bind: 1.0.5 2086 | has-tostringtag: 1.0.0 2087 | dev: true 2088 | 2089 | /is-set@2.0.2: 2090 | resolution: {integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==} 2091 | dev: true 2092 | 2093 | /is-shared-array-buffer@1.0.2: 2094 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} 2095 | dependencies: 2096 | call-bind: 1.0.5 2097 | dev: true 2098 | 2099 | /is-string@1.0.7: 2100 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} 2101 | engines: {node: '>= 0.4'} 2102 | dependencies: 2103 | has-tostringtag: 1.0.0 2104 | dev: true 2105 | 2106 | /is-symbol@1.0.4: 2107 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} 2108 | engines: {node: '>= 0.4'} 2109 | dependencies: 2110 | has-symbols: 1.0.3 2111 | dev: true 2112 | 2113 | /is-typed-array@1.1.12: 2114 | resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} 2115 | engines: {node: '>= 0.4'} 2116 | dependencies: 2117 | which-typed-array: 1.1.13 2118 | dev: true 2119 | 2120 | /is-weakmap@2.0.1: 2121 | resolution: {integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==} 2122 | dev: true 2123 | 2124 | /is-weakref@1.0.2: 2125 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} 2126 | dependencies: 2127 | call-bind: 1.0.5 2128 | dev: true 2129 | 2130 | /is-weakset@2.0.2: 2131 | resolution: {integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==} 2132 | dependencies: 2133 | call-bind: 1.0.5 2134 | get-intrinsic: 1.2.2 2135 | dev: true 2136 | 2137 | /isarray@2.0.5: 2138 | resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} 2139 | dev: true 2140 | 2141 | /isexe@2.0.0: 2142 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 2143 | dev: true 2144 | 2145 | /iterator.prototype@1.1.2: 2146 | resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} 2147 | dependencies: 2148 | define-properties: 1.2.1 2149 | get-intrinsic: 1.2.2 2150 | has-symbols: 1.0.3 2151 | reflect.getprototypeof: 1.0.4 2152 | set-function-name: 2.0.1 2153 | dev: true 2154 | 2155 | /jiti@1.21.0: 2156 | resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} 2157 | hasBin: true 2158 | dev: true 2159 | 2160 | /js-tokens@4.0.0: 2161 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 2162 | 2163 | /js-yaml@4.1.0: 2164 | resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} 2165 | hasBin: true 2166 | dependencies: 2167 | argparse: 2.0.1 2168 | dev: true 2169 | 2170 | /json-buffer@3.0.1: 2171 | resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} 2172 | dev: true 2173 | 2174 | /json-schema-traverse@0.4.1: 2175 | resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} 2176 | dev: true 2177 | 2178 | /json-stable-stringify-without-jsonify@1.0.1: 2179 | resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} 2180 | dev: true 2181 | 2182 | /json5@1.0.2: 2183 | resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} 2184 | hasBin: true 2185 | dependencies: 2186 | minimist: 1.2.8 2187 | dev: true 2188 | 2189 | /jsx-ast-utils@3.3.5: 2190 | resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} 2191 | engines: {node: '>=4.0'} 2192 | dependencies: 2193 | array-includes: 3.1.7 2194 | array.prototype.flat: 1.3.2 2195 | object.assign: 4.1.4 2196 | object.values: 1.1.7 2197 | dev: true 2198 | 2199 | /katex@0.16.9: 2200 | resolution: {integrity: sha512-fsSYjWS0EEOwvy81j3vRA8TEAhQhKiqO+FQaKWp0m39qwOzHVBgAUBIXWj1pB+O2W3fIpNa6Y9KSKCVbfPhyAQ==} 2201 | hasBin: true 2202 | dependencies: 2203 | commander: 8.3.0 2204 | dev: false 2205 | 2206 | /keyv@4.5.4: 2207 | resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} 2208 | dependencies: 2209 | json-buffer: 3.0.1 2210 | dev: true 2211 | 2212 | /kleur@4.1.5: 2213 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 2214 | engines: {node: '>=6'} 2215 | dev: false 2216 | 2217 | /language-subtag-registry@0.3.22: 2218 | resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} 2219 | dev: true 2220 | 2221 | /language-tags@1.0.9: 2222 | resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} 2223 | engines: {node: '>=0.10'} 2224 | dependencies: 2225 | language-subtag-registry: 0.3.22 2226 | dev: true 2227 | 2228 | /levn@0.4.1: 2229 | resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} 2230 | engines: {node: '>= 0.8.0'} 2231 | dependencies: 2232 | prelude-ls: 1.2.1 2233 | type-check: 0.4.0 2234 | dev: true 2235 | 2236 | /lilconfig@2.1.0: 2237 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} 2238 | engines: {node: '>=10'} 2239 | dev: true 2240 | 2241 | /lilconfig@3.0.0: 2242 | resolution: {integrity: sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==} 2243 | engines: {node: '>=14'} 2244 | dev: true 2245 | 2246 | /lines-and-columns@1.2.4: 2247 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 2248 | dev: true 2249 | 2250 | /locate-character@3.0.0: 2251 | resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==} 2252 | dev: false 2253 | 2254 | /locate-path@6.0.0: 2255 | resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} 2256 | engines: {node: '>=10'} 2257 | dependencies: 2258 | p-locate: 5.0.0 2259 | dev: true 2260 | 2261 | /lodash.merge@4.6.2: 2262 | resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} 2263 | dev: true 2264 | 2265 | /longest-streak@3.1.0: 2266 | resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} 2267 | dev: false 2268 | 2269 | /loose-envify@1.4.0: 2270 | resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} 2271 | hasBin: true 2272 | dependencies: 2273 | js-tokens: 4.0.0 2274 | 2275 | /lowlight@1.20.0: 2276 | resolution: {integrity: sha512-8Ktj+prEb1RoCPkEOrPMYUN/nCggB7qAWe3a7OpMjWQkh3l2RD5wKRQ+o8Q8YuI9RG/xs95waaI/E6ym/7NsTw==} 2277 | dependencies: 2278 | fault: 1.0.4 2279 | highlight.js: 10.7.3 2280 | dev: false 2281 | 2282 | /lru-cache@6.0.0: 2283 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 2284 | engines: {node: '>=10'} 2285 | dependencies: 2286 | yallist: 4.0.0 2287 | dev: true 2288 | 2289 | /lucide-react@0.291.0(react@18.2.0): 2290 | resolution: {integrity: sha512-79jHlT9Je2PXSvXIBGDkItCK7In2O9iKnnSJ/bJxvIBOFaX2Ex0xEcC4fRS/g0F2uQGFejjmn2qWhwdc5wicMQ==} 2291 | peerDependencies: 2292 | react: ^16.5.1 || ^17.0.0 || ^18.0.0 2293 | dependencies: 2294 | react: 18.2.0 2295 | dev: false 2296 | 2297 | /magic-string@0.30.5: 2298 | resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} 2299 | engines: {node: '>=12'} 2300 | dependencies: 2301 | '@jridgewell/sourcemap-codec': 1.4.15 2302 | dev: false 2303 | 2304 | /markdown-table@3.0.3: 2305 | resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} 2306 | dev: false 2307 | 2308 | /md5@2.3.0: 2309 | resolution: {integrity: sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==} 2310 | dependencies: 2311 | charenc: 0.0.2 2312 | crypt: 0.0.2 2313 | is-buffer: 1.1.6 2314 | dev: false 2315 | 2316 | /mdast-util-definitions@5.1.2: 2317 | resolution: {integrity: sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==} 2318 | dependencies: 2319 | '@types/mdast': 3.0.15 2320 | '@types/unist': 2.0.10 2321 | unist-util-visit: 4.1.2 2322 | dev: false 2323 | 2324 | /mdast-util-find-and-replace@2.2.2: 2325 | resolution: {integrity: sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==} 2326 | dependencies: 2327 | '@types/mdast': 3.0.15 2328 | escape-string-regexp: 5.0.0 2329 | unist-util-is: 5.2.1 2330 | unist-util-visit-parents: 5.1.3 2331 | dev: false 2332 | 2333 | /mdast-util-from-markdown@1.3.1: 2334 | resolution: {integrity: sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==} 2335 | dependencies: 2336 | '@types/mdast': 3.0.15 2337 | '@types/unist': 2.0.10 2338 | decode-named-character-reference: 1.0.2 2339 | mdast-util-to-string: 3.2.0 2340 | micromark: 3.2.0 2341 | micromark-util-decode-numeric-character-reference: 1.1.0 2342 | micromark-util-decode-string: 1.1.0 2343 | micromark-util-normalize-identifier: 1.1.0 2344 | micromark-util-symbol: 1.1.0 2345 | micromark-util-types: 1.1.0 2346 | unist-util-stringify-position: 3.0.3 2347 | uvu: 0.5.6 2348 | transitivePeerDependencies: 2349 | - supports-color 2350 | dev: false 2351 | 2352 | /mdast-util-gfm-autolink-literal@1.0.3: 2353 | resolution: {integrity: sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==} 2354 | dependencies: 2355 | '@types/mdast': 3.0.15 2356 | ccount: 2.0.1 2357 | mdast-util-find-and-replace: 2.2.2 2358 | micromark-util-character: 1.2.0 2359 | dev: false 2360 | 2361 | /mdast-util-gfm-footnote@1.0.2: 2362 | resolution: {integrity: sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==} 2363 | dependencies: 2364 | '@types/mdast': 3.0.15 2365 | mdast-util-to-markdown: 1.5.0 2366 | micromark-util-normalize-identifier: 1.1.0 2367 | dev: false 2368 | 2369 | /mdast-util-gfm-strikethrough@1.0.3: 2370 | resolution: {integrity: sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==} 2371 | dependencies: 2372 | '@types/mdast': 3.0.15 2373 | mdast-util-to-markdown: 1.5.0 2374 | dev: false 2375 | 2376 | /mdast-util-gfm-table@1.0.7: 2377 | resolution: {integrity: sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==} 2378 | dependencies: 2379 | '@types/mdast': 3.0.15 2380 | markdown-table: 3.0.3 2381 | mdast-util-from-markdown: 1.3.1 2382 | mdast-util-to-markdown: 1.5.0 2383 | transitivePeerDependencies: 2384 | - supports-color 2385 | dev: false 2386 | 2387 | /mdast-util-gfm-task-list-item@1.0.2: 2388 | resolution: {integrity: sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==} 2389 | dependencies: 2390 | '@types/mdast': 3.0.15 2391 | mdast-util-to-markdown: 1.5.0 2392 | dev: false 2393 | 2394 | /mdast-util-gfm@2.0.2: 2395 | resolution: {integrity: sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==} 2396 | dependencies: 2397 | mdast-util-from-markdown: 1.3.1 2398 | mdast-util-gfm-autolink-literal: 1.0.3 2399 | mdast-util-gfm-footnote: 1.0.2 2400 | mdast-util-gfm-strikethrough: 1.0.3 2401 | mdast-util-gfm-table: 1.0.7 2402 | mdast-util-gfm-task-list-item: 1.0.2 2403 | mdast-util-to-markdown: 1.5.0 2404 | transitivePeerDependencies: 2405 | - supports-color 2406 | dev: false 2407 | 2408 | /mdast-util-math@2.0.2: 2409 | resolution: {integrity: sha512-8gmkKVp9v6+Tgjtq6SYx9kGPpTf6FVYRa53/DLh479aldR9AyP48qeVOgNZ5X7QUK7nOy4yw7vg6mbiGcs9jWQ==} 2410 | dependencies: 2411 | '@types/mdast': 3.0.15 2412 | longest-streak: 3.1.0 2413 | mdast-util-to-markdown: 1.5.0 2414 | dev: false 2415 | 2416 | /mdast-util-phrasing@3.0.1: 2417 | resolution: {integrity: sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==} 2418 | dependencies: 2419 | '@types/mdast': 3.0.15 2420 | unist-util-is: 5.2.1 2421 | dev: false 2422 | 2423 | /mdast-util-to-hast@12.3.0: 2424 | resolution: {integrity: sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==} 2425 | dependencies: 2426 | '@types/hast': 2.3.8 2427 | '@types/mdast': 3.0.15 2428 | mdast-util-definitions: 5.1.2 2429 | micromark-util-sanitize-uri: 1.2.0 2430 | trim-lines: 3.0.1 2431 | unist-util-generated: 2.0.1 2432 | unist-util-position: 4.0.4 2433 | unist-util-visit: 4.1.2 2434 | dev: false 2435 | 2436 | /mdast-util-to-markdown@1.5.0: 2437 | resolution: {integrity: sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==} 2438 | dependencies: 2439 | '@types/mdast': 3.0.15 2440 | '@types/unist': 2.0.10 2441 | longest-streak: 3.1.0 2442 | mdast-util-phrasing: 3.0.1 2443 | mdast-util-to-string: 3.2.0 2444 | micromark-util-decode-string: 1.1.0 2445 | unist-util-visit: 4.1.2 2446 | zwitch: 2.0.4 2447 | dev: false 2448 | 2449 | /mdast-util-to-string@3.2.0: 2450 | resolution: {integrity: sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==} 2451 | dependencies: 2452 | '@types/mdast': 3.0.15 2453 | dev: false 2454 | 2455 | /mdn-data@2.0.30: 2456 | resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} 2457 | dev: false 2458 | 2459 | /merge2@1.4.1: 2460 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 2461 | engines: {node: '>= 8'} 2462 | dev: true 2463 | 2464 | /micromark-core-commonmark@1.1.0: 2465 | resolution: {integrity: sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==} 2466 | dependencies: 2467 | decode-named-character-reference: 1.0.2 2468 | micromark-factory-destination: 1.1.0 2469 | micromark-factory-label: 1.1.0 2470 | micromark-factory-space: 1.1.0 2471 | micromark-factory-title: 1.1.0 2472 | micromark-factory-whitespace: 1.1.0 2473 | micromark-util-character: 1.2.0 2474 | micromark-util-chunked: 1.1.0 2475 | micromark-util-classify-character: 1.1.0 2476 | micromark-util-html-tag-name: 1.2.0 2477 | micromark-util-normalize-identifier: 1.1.0 2478 | micromark-util-resolve-all: 1.1.0 2479 | micromark-util-subtokenize: 1.1.0 2480 | micromark-util-symbol: 1.1.0 2481 | micromark-util-types: 1.1.0 2482 | uvu: 0.5.6 2483 | dev: false 2484 | 2485 | /micromark-extension-gfm-autolink-literal@1.0.5: 2486 | resolution: {integrity: sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==} 2487 | dependencies: 2488 | micromark-util-character: 1.2.0 2489 | micromark-util-sanitize-uri: 1.2.0 2490 | micromark-util-symbol: 1.1.0 2491 | micromark-util-types: 1.1.0 2492 | dev: false 2493 | 2494 | /micromark-extension-gfm-footnote@1.1.2: 2495 | resolution: {integrity: sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==} 2496 | dependencies: 2497 | micromark-core-commonmark: 1.1.0 2498 | micromark-factory-space: 1.1.0 2499 | micromark-util-character: 1.2.0 2500 | micromark-util-normalize-identifier: 1.1.0 2501 | micromark-util-sanitize-uri: 1.2.0 2502 | micromark-util-symbol: 1.1.0 2503 | micromark-util-types: 1.1.0 2504 | uvu: 0.5.6 2505 | dev: false 2506 | 2507 | /micromark-extension-gfm-strikethrough@1.0.7: 2508 | resolution: {integrity: sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==} 2509 | dependencies: 2510 | micromark-util-chunked: 1.1.0 2511 | micromark-util-classify-character: 1.1.0 2512 | micromark-util-resolve-all: 1.1.0 2513 | micromark-util-symbol: 1.1.0 2514 | micromark-util-types: 1.1.0 2515 | uvu: 0.5.6 2516 | dev: false 2517 | 2518 | /micromark-extension-gfm-table@1.0.7: 2519 | resolution: {integrity: sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==} 2520 | dependencies: 2521 | micromark-factory-space: 1.1.0 2522 | micromark-util-character: 1.2.0 2523 | micromark-util-symbol: 1.1.0 2524 | micromark-util-types: 1.1.0 2525 | uvu: 0.5.6 2526 | dev: false 2527 | 2528 | /micromark-extension-gfm-tagfilter@1.0.2: 2529 | resolution: {integrity: sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==} 2530 | dependencies: 2531 | micromark-util-types: 1.1.0 2532 | dev: false 2533 | 2534 | /micromark-extension-gfm-task-list-item@1.0.5: 2535 | resolution: {integrity: sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==} 2536 | dependencies: 2537 | micromark-factory-space: 1.1.0 2538 | micromark-util-character: 1.2.0 2539 | micromark-util-symbol: 1.1.0 2540 | micromark-util-types: 1.1.0 2541 | uvu: 0.5.6 2542 | dev: false 2543 | 2544 | /micromark-extension-gfm@2.0.3: 2545 | resolution: {integrity: sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==} 2546 | dependencies: 2547 | micromark-extension-gfm-autolink-literal: 1.0.5 2548 | micromark-extension-gfm-footnote: 1.1.2 2549 | micromark-extension-gfm-strikethrough: 1.0.7 2550 | micromark-extension-gfm-table: 1.0.7 2551 | micromark-extension-gfm-tagfilter: 1.0.2 2552 | micromark-extension-gfm-task-list-item: 1.0.5 2553 | micromark-util-combine-extensions: 1.1.0 2554 | micromark-util-types: 1.1.0 2555 | dev: false 2556 | 2557 | /micromark-extension-math@2.1.2: 2558 | resolution: {integrity: sha512-es0CcOV89VNS9wFmyn+wyFTKweXGW4CEvdaAca6SWRWPyYCbBisnjaHLjWO4Nszuiud84jCpkHsqAJoa768Pvg==} 2559 | dependencies: 2560 | '@types/katex': 0.16.7 2561 | katex: 0.16.9 2562 | micromark-factory-space: 1.1.0 2563 | micromark-util-character: 1.2.0 2564 | micromark-util-symbol: 1.1.0 2565 | micromark-util-types: 1.1.0 2566 | uvu: 0.5.6 2567 | dev: false 2568 | 2569 | /micromark-factory-destination@1.1.0: 2570 | resolution: {integrity: sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==} 2571 | dependencies: 2572 | micromark-util-character: 1.2.0 2573 | micromark-util-symbol: 1.1.0 2574 | micromark-util-types: 1.1.0 2575 | dev: false 2576 | 2577 | /micromark-factory-label@1.1.0: 2578 | resolution: {integrity: sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==} 2579 | dependencies: 2580 | micromark-util-character: 1.2.0 2581 | micromark-util-symbol: 1.1.0 2582 | micromark-util-types: 1.1.0 2583 | uvu: 0.5.6 2584 | dev: false 2585 | 2586 | /micromark-factory-space@1.1.0: 2587 | resolution: {integrity: sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==} 2588 | dependencies: 2589 | micromark-util-character: 1.2.0 2590 | micromark-util-types: 1.1.0 2591 | dev: false 2592 | 2593 | /micromark-factory-title@1.1.0: 2594 | resolution: {integrity: sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==} 2595 | dependencies: 2596 | micromark-factory-space: 1.1.0 2597 | micromark-util-character: 1.2.0 2598 | micromark-util-symbol: 1.1.0 2599 | micromark-util-types: 1.1.0 2600 | dev: false 2601 | 2602 | /micromark-factory-whitespace@1.1.0: 2603 | resolution: {integrity: sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==} 2604 | dependencies: 2605 | micromark-factory-space: 1.1.0 2606 | micromark-util-character: 1.2.0 2607 | micromark-util-symbol: 1.1.0 2608 | micromark-util-types: 1.1.0 2609 | dev: false 2610 | 2611 | /micromark-util-character@1.2.0: 2612 | resolution: {integrity: sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==} 2613 | dependencies: 2614 | micromark-util-symbol: 1.1.0 2615 | micromark-util-types: 1.1.0 2616 | dev: false 2617 | 2618 | /micromark-util-chunked@1.1.0: 2619 | resolution: {integrity: sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==} 2620 | dependencies: 2621 | micromark-util-symbol: 1.1.0 2622 | dev: false 2623 | 2624 | /micromark-util-classify-character@1.1.0: 2625 | resolution: {integrity: sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==} 2626 | dependencies: 2627 | micromark-util-character: 1.2.0 2628 | micromark-util-symbol: 1.1.0 2629 | micromark-util-types: 1.1.0 2630 | dev: false 2631 | 2632 | /micromark-util-combine-extensions@1.1.0: 2633 | resolution: {integrity: sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==} 2634 | dependencies: 2635 | micromark-util-chunked: 1.1.0 2636 | micromark-util-types: 1.1.0 2637 | dev: false 2638 | 2639 | /micromark-util-decode-numeric-character-reference@1.1.0: 2640 | resolution: {integrity: sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==} 2641 | dependencies: 2642 | micromark-util-symbol: 1.1.0 2643 | dev: false 2644 | 2645 | /micromark-util-decode-string@1.1.0: 2646 | resolution: {integrity: sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==} 2647 | dependencies: 2648 | decode-named-character-reference: 1.0.2 2649 | micromark-util-character: 1.2.0 2650 | micromark-util-decode-numeric-character-reference: 1.1.0 2651 | micromark-util-symbol: 1.1.0 2652 | dev: false 2653 | 2654 | /micromark-util-encode@1.1.0: 2655 | resolution: {integrity: sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==} 2656 | dev: false 2657 | 2658 | /micromark-util-html-tag-name@1.2.0: 2659 | resolution: {integrity: sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==} 2660 | dev: false 2661 | 2662 | /micromark-util-normalize-identifier@1.1.0: 2663 | resolution: {integrity: sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==} 2664 | dependencies: 2665 | micromark-util-symbol: 1.1.0 2666 | dev: false 2667 | 2668 | /micromark-util-resolve-all@1.1.0: 2669 | resolution: {integrity: sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==} 2670 | dependencies: 2671 | micromark-util-types: 1.1.0 2672 | dev: false 2673 | 2674 | /micromark-util-sanitize-uri@1.2.0: 2675 | resolution: {integrity: sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==} 2676 | dependencies: 2677 | micromark-util-character: 1.2.0 2678 | micromark-util-encode: 1.1.0 2679 | micromark-util-symbol: 1.1.0 2680 | dev: false 2681 | 2682 | /micromark-util-subtokenize@1.1.0: 2683 | resolution: {integrity: sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==} 2684 | dependencies: 2685 | micromark-util-chunked: 1.1.0 2686 | micromark-util-symbol: 1.1.0 2687 | micromark-util-types: 1.1.0 2688 | uvu: 0.5.6 2689 | dev: false 2690 | 2691 | /micromark-util-symbol@1.1.0: 2692 | resolution: {integrity: sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==} 2693 | dev: false 2694 | 2695 | /micromark-util-types@1.1.0: 2696 | resolution: {integrity: sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==} 2697 | dev: false 2698 | 2699 | /micromark@3.2.0: 2700 | resolution: {integrity: sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==} 2701 | dependencies: 2702 | '@types/debug': 4.1.12 2703 | debug: 4.3.4 2704 | decode-named-character-reference: 1.0.2 2705 | micromark-core-commonmark: 1.1.0 2706 | micromark-factory-space: 1.1.0 2707 | micromark-util-character: 1.2.0 2708 | micromark-util-chunked: 1.1.0 2709 | micromark-util-combine-extensions: 1.1.0 2710 | micromark-util-decode-numeric-character-reference: 1.1.0 2711 | micromark-util-encode: 1.1.0 2712 | micromark-util-normalize-identifier: 1.1.0 2713 | micromark-util-resolve-all: 1.1.0 2714 | micromark-util-sanitize-uri: 1.2.0 2715 | micromark-util-subtokenize: 1.1.0 2716 | micromark-util-symbol: 1.1.0 2717 | micromark-util-types: 1.1.0 2718 | uvu: 0.5.6 2719 | transitivePeerDependencies: 2720 | - supports-color 2721 | dev: false 2722 | 2723 | /micromatch@4.0.5: 2724 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 2725 | engines: {node: '>=8.6'} 2726 | dependencies: 2727 | braces: 3.0.2 2728 | picomatch: 2.3.1 2729 | dev: true 2730 | 2731 | /mime-db@1.52.0: 2732 | resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} 2733 | engines: {node: '>= 0.6'} 2734 | dev: false 2735 | 2736 | /mime-types@2.1.35: 2737 | resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} 2738 | engines: {node: '>= 0.6'} 2739 | dependencies: 2740 | mime-db: 1.52.0 2741 | dev: false 2742 | 2743 | /min-indent@1.0.1: 2744 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 2745 | engines: {node: '>=4'} 2746 | dev: false 2747 | 2748 | /minimatch@3.1.2: 2749 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 2750 | dependencies: 2751 | brace-expansion: 1.1.11 2752 | dev: true 2753 | 2754 | /minimist@1.2.8: 2755 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 2756 | dev: true 2757 | 2758 | /mri@1.2.0: 2759 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 2760 | engines: {node: '>=4'} 2761 | dev: false 2762 | 2763 | /ms@2.1.2: 2764 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 2765 | 2766 | /ms@2.1.3: 2767 | resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} 2768 | 2769 | /mz@2.7.0: 2770 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} 2771 | dependencies: 2772 | any-promise: 1.3.0 2773 | object-assign: 4.1.1 2774 | thenify-all: 1.6.0 2775 | dev: true 2776 | 2777 | /nanoid@3.3.6: 2778 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} 2779 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2780 | hasBin: true 2781 | dev: false 2782 | 2783 | /nanoid@3.3.7: 2784 | resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} 2785 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 2786 | hasBin: true 2787 | 2788 | /natural-compare@1.4.0: 2789 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 2790 | dev: true 2791 | 2792 | /next@14.0.3(react-dom@18.2.0)(react@18.2.0): 2793 | resolution: {integrity: sha512-AbYdRNfImBr3XGtvnwOxq8ekVCwbFTv/UJoLwmaX89nk9i051AEY4/HAWzU0YpaTDw8IofUpmuIlvzWF13jxIw==} 2794 | engines: {node: '>=18.17.0'} 2795 | hasBin: true 2796 | peerDependencies: 2797 | '@opentelemetry/api': ^1.1.0 2798 | react: ^18.2.0 2799 | react-dom: ^18.2.0 2800 | sass: ^1.3.0 2801 | peerDependenciesMeta: 2802 | '@opentelemetry/api': 2803 | optional: true 2804 | sass: 2805 | optional: true 2806 | dependencies: 2807 | '@next/env': 14.0.3 2808 | '@swc/helpers': 0.5.2 2809 | busboy: 1.6.0 2810 | caniuse-lite: 1.0.30001565 2811 | postcss: 8.4.31 2812 | react: 18.2.0 2813 | react-dom: 18.2.0(react@18.2.0) 2814 | styled-jsx: 5.1.1(react@18.2.0) 2815 | watchpack: 2.4.0 2816 | optionalDependencies: 2817 | '@next/swc-darwin-arm64': 14.0.3 2818 | '@next/swc-darwin-x64': 14.0.3 2819 | '@next/swc-linux-arm64-gnu': 14.0.3 2820 | '@next/swc-linux-arm64-musl': 14.0.3 2821 | '@next/swc-linux-x64-gnu': 14.0.3 2822 | '@next/swc-linux-x64-musl': 14.0.3 2823 | '@next/swc-win32-arm64-msvc': 14.0.3 2824 | '@next/swc-win32-ia32-msvc': 14.0.3 2825 | '@next/swc-win32-x64-msvc': 14.0.3 2826 | transitivePeerDependencies: 2827 | - '@babel/core' 2828 | - babel-plugin-macros 2829 | dev: false 2830 | 2831 | /node-domexception@1.0.0: 2832 | resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} 2833 | engines: {node: '>=10.5.0'} 2834 | dev: false 2835 | 2836 | /node-fetch@2.7.0: 2837 | resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} 2838 | engines: {node: 4.x || >=6.0.0} 2839 | peerDependencies: 2840 | encoding: ^0.1.0 2841 | peerDependenciesMeta: 2842 | encoding: 2843 | optional: true 2844 | dependencies: 2845 | whatwg-url: 5.0.0 2846 | dev: false 2847 | 2848 | /node-releases@2.0.13: 2849 | resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} 2850 | dev: true 2851 | 2852 | /normalize-path@3.0.0: 2853 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 2854 | engines: {node: '>=0.10.0'} 2855 | dev: true 2856 | 2857 | /normalize-range@0.1.2: 2858 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} 2859 | engines: {node: '>=0.10.0'} 2860 | dev: true 2861 | 2862 | /object-assign@4.1.1: 2863 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} 2864 | engines: {node: '>=0.10.0'} 2865 | 2866 | /object-hash@3.0.0: 2867 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} 2868 | engines: {node: '>= 6'} 2869 | dev: true 2870 | 2871 | /object-inspect@1.13.1: 2872 | resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} 2873 | dev: true 2874 | 2875 | /object-keys@1.1.1: 2876 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} 2877 | engines: {node: '>= 0.4'} 2878 | dev: true 2879 | 2880 | /object.assign@4.1.4: 2881 | resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} 2882 | engines: {node: '>= 0.4'} 2883 | dependencies: 2884 | call-bind: 1.0.5 2885 | define-properties: 1.2.1 2886 | has-symbols: 1.0.3 2887 | object-keys: 1.1.1 2888 | dev: true 2889 | 2890 | /object.entries@1.1.7: 2891 | resolution: {integrity: sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==} 2892 | engines: {node: '>= 0.4'} 2893 | dependencies: 2894 | call-bind: 1.0.5 2895 | define-properties: 1.2.1 2896 | es-abstract: 1.22.3 2897 | dev: true 2898 | 2899 | /object.fromentries@2.0.7: 2900 | resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} 2901 | engines: {node: '>= 0.4'} 2902 | dependencies: 2903 | call-bind: 1.0.5 2904 | define-properties: 1.2.1 2905 | es-abstract: 1.22.3 2906 | dev: true 2907 | 2908 | /object.groupby@1.0.1: 2909 | resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} 2910 | dependencies: 2911 | call-bind: 1.0.5 2912 | define-properties: 1.2.1 2913 | es-abstract: 1.22.3 2914 | get-intrinsic: 1.2.2 2915 | dev: true 2916 | 2917 | /object.hasown@1.1.3: 2918 | resolution: {integrity: sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==} 2919 | dependencies: 2920 | define-properties: 1.2.1 2921 | es-abstract: 1.22.3 2922 | dev: true 2923 | 2924 | /object.values@1.1.7: 2925 | resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} 2926 | engines: {node: '>= 0.4'} 2927 | dependencies: 2928 | call-bind: 1.0.5 2929 | define-properties: 1.2.1 2930 | es-abstract: 1.22.3 2931 | dev: true 2932 | 2933 | /once@1.4.0: 2934 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 2935 | dependencies: 2936 | wrappy: 1.0.2 2937 | dev: true 2938 | 2939 | /openai@4.20.0: 2940 | resolution: {integrity: sha512-VbAYerNZFfIIeESS+OL9vgDkK8Mnri55n+jN0UN/HZeuM0ghGh6nDN6UGRZxslNgyJ7XmY/Ca9DO4YYyvrszGA==} 2941 | hasBin: true 2942 | dependencies: 2943 | '@types/node': 18.18.13 2944 | '@types/node-fetch': 2.6.9 2945 | abort-controller: 3.0.0 2946 | agentkeepalive: 4.5.0 2947 | digest-fetch: 1.3.0 2948 | form-data-encoder: 1.7.2 2949 | formdata-node: 4.4.1 2950 | node-fetch: 2.7.0 2951 | web-streams-polyfill: 3.2.1 2952 | transitivePeerDependencies: 2953 | - encoding 2954 | dev: false 2955 | 2956 | /optionator@0.9.3: 2957 | resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} 2958 | engines: {node: '>= 0.8.0'} 2959 | dependencies: 2960 | '@aashutoshrathi/word-wrap': 1.2.6 2961 | deep-is: 0.1.4 2962 | fast-levenshtein: 2.0.6 2963 | levn: 0.4.1 2964 | prelude-ls: 1.2.1 2965 | type-check: 0.4.0 2966 | dev: true 2967 | 2968 | /p-limit@3.1.0: 2969 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 2970 | engines: {node: '>=10'} 2971 | dependencies: 2972 | yocto-queue: 0.1.0 2973 | dev: true 2974 | 2975 | /p-locate@5.0.0: 2976 | resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} 2977 | engines: {node: '>=10'} 2978 | dependencies: 2979 | p-limit: 3.1.0 2980 | dev: true 2981 | 2982 | /parent-module@1.0.1: 2983 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 2984 | engines: {node: '>=6'} 2985 | dependencies: 2986 | callsites: 3.1.0 2987 | dev: true 2988 | 2989 | /parse-entities@2.0.0: 2990 | resolution: {integrity: sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==} 2991 | dependencies: 2992 | character-entities: 1.2.4 2993 | character-entities-legacy: 1.1.4 2994 | character-reference-invalid: 1.1.4 2995 | is-alphanumerical: 1.0.4 2996 | is-decimal: 1.0.4 2997 | is-hexadecimal: 1.0.4 2998 | dev: false 2999 | 3000 | /path-exists@4.0.0: 3001 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 3002 | engines: {node: '>=8'} 3003 | dev: true 3004 | 3005 | /path-is-absolute@1.0.1: 3006 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 3007 | engines: {node: '>=0.10.0'} 3008 | dev: true 3009 | 3010 | /path-key@3.1.1: 3011 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 3012 | engines: {node: '>=8'} 3013 | dev: true 3014 | 3015 | /path-parse@1.0.7: 3016 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 3017 | dev: true 3018 | 3019 | /path-type@4.0.0: 3020 | resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} 3021 | engines: {node: '>=8'} 3022 | dev: true 3023 | 3024 | /periscopic@3.1.0: 3025 | resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} 3026 | dependencies: 3027 | '@types/estree': 1.0.5 3028 | estree-walker: 3.0.3 3029 | is-reference: 3.0.2 3030 | dev: false 3031 | 3032 | /picocolors@1.0.0: 3033 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 3034 | 3035 | /picomatch@2.3.1: 3036 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 3037 | engines: {node: '>=8.6'} 3038 | dev: true 3039 | 3040 | /pify@2.3.0: 3041 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} 3042 | engines: {node: '>=0.10.0'} 3043 | dev: true 3044 | 3045 | /pirates@4.0.6: 3046 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 3047 | engines: {node: '>= 6'} 3048 | dev: true 3049 | 3050 | /postcss-import@15.1.0(postcss@8.4.31): 3051 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} 3052 | engines: {node: '>=14.0.0'} 3053 | peerDependencies: 3054 | postcss: ^8.0.0 3055 | dependencies: 3056 | postcss: 8.4.31 3057 | postcss-value-parser: 4.2.0 3058 | read-cache: 1.0.0 3059 | resolve: 1.22.8 3060 | dev: true 3061 | 3062 | /postcss-js@4.0.1(postcss@8.4.31): 3063 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} 3064 | engines: {node: ^12 || ^14 || >= 16} 3065 | peerDependencies: 3066 | postcss: ^8.4.21 3067 | dependencies: 3068 | camelcase-css: 2.0.1 3069 | postcss: 8.4.31 3070 | dev: true 3071 | 3072 | /postcss-load-config@4.0.2(postcss@8.4.31): 3073 | resolution: {integrity: sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==} 3074 | engines: {node: '>= 14'} 3075 | peerDependencies: 3076 | postcss: '>=8.0.9' 3077 | ts-node: '>=9.0.0' 3078 | peerDependenciesMeta: 3079 | postcss: 3080 | optional: true 3081 | ts-node: 3082 | optional: true 3083 | dependencies: 3084 | lilconfig: 3.0.0 3085 | postcss: 8.4.31 3086 | yaml: 2.3.4 3087 | dev: true 3088 | 3089 | /postcss-nested@6.0.1(postcss@8.4.31): 3090 | resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} 3091 | engines: {node: '>=12.0'} 3092 | peerDependencies: 3093 | postcss: ^8.2.14 3094 | dependencies: 3095 | postcss: 8.4.31 3096 | postcss-selector-parser: 6.0.13 3097 | dev: true 3098 | 3099 | /postcss-selector-parser@6.0.13: 3100 | resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} 3101 | engines: {node: '>=4'} 3102 | dependencies: 3103 | cssesc: 3.0.0 3104 | util-deprecate: 1.0.2 3105 | dev: true 3106 | 3107 | /postcss-value-parser@4.2.0: 3108 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} 3109 | dev: true 3110 | 3111 | /postcss@8.4.31: 3112 | resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} 3113 | engines: {node: ^10 || ^12 || >=14} 3114 | dependencies: 3115 | nanoid: 3.3.7 3116 | picocolors: 1.0.0 3117 | source-map-js: 1.0.2 3118 | 3119 | /prelude-ls@1.2.1: 3120 | resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} 3121 | engines: {node: '>= 0.8.0'} 3122 | dev: true 3123 | 3124 | /prismjs@1.27.0: 3125 | resolution: {integrity: sha512-t13BGPUlFDR7wRB5kQDG4jjl7XeuH6jbJGt11JHPL96qwsEHNX2+68tFXqc1/k+/jALsbSWJKUOT/hcYAZ5LkA==} 3126 | engines: {node: '>=6'} 3127 | dev: false 3128 | 3129 | /prismjs@1.29.0: 3130 | resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==} 3131 | engines: {node: '>=6'} 3132 | dev: false 3133 | 3134 | /prop-types@15.8.1: 3135 | resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} 3136 | dependencies: 3137 | loose-envify: 1.4.0 3138 | object-assign: 4.1.1 3139 | react-is: 16.13.1 3140 | 3141 | /property-information@5.6.0: 3142 | resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==} 3143 | dependencies: 3144 | xtend: 4.0.2 3145 | dev: false 3146 | 3147 | /property-information@6.4.0: 3148 | resolution: {integrity: sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ==} 3149 | dev: false 3150 | 3151 | /punycode@2.3.1: 3152 | resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} 3153 | engines: {node: '>=6'} 3154 | dev: true 3155 | 3156 | /queue-microtask@1.2.3: 3157 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 3158 | dev: true 3159 | 3160 | /react-dom@18.2.0(react@18.2.0): 3161 | resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} 3162 | peerDependencies: 3163 | react: ^18.2.0 3164 | dependencies: 3165 | loose-envify: 1.4.0 3166 | react: 18.2.0 3167 | scheduler: 0.23.0 3168 | dev: false 3169 | 3170 | /react-is@16.13.1: 3171 | resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} 3172 | 3173 | /react-is@18.2.0: 3174 | resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} 3175 | dev: false 3176 | 3177 | /react-markdown@8.0.7(@types/react@18.2.38)(react@18.2.0): 3178 | resolution: {integrity: sha512-bvWbzG4MtOU62XqBx3Xx+zB2raaFFsq4mYiAzfjXJMEz2sixgeAfraA3tvzULF02ZdOMUOKTBFFaZJDDrq+BJQ==} 3179 | peerDependencies: 3180 | '@types/react': '>=16' 3181 | react: '>=16' 3182 | dependencies: 3183 | '@types/hast': 2.3.8 3184 | '@types/prop-types': 15.7.11 3185 | '@types/react': 18.2.38 3186 | '@types/unist': 2.0.10 3187 | comma-separated-tokens: 2.0.3 3188 | hast-util-whitespace: 2.0.1 3189 | prop-types: 15.8.1 3190 | property-information: 6.4.0 3191 | react: 18.2.0 3192 | react-is: 18.2.0 3193 | remark-parse: 10.0.2 3194 | remark-rehype: 10.1.0 3195 | space-separated-tokens: 2.0.2 3196 | style-to-object: 0.4.4 3197 | unified: 10.1.2 3198 | unist-util-visit: 4.1.2 3199 | vfile: 5.3.7 3200 | transitivePeerDependencies: 3201 | - supports-color 3202 | dev: false 3203 | 3204 | /react-syntax-highlighter@15.5.0(react@18.2.0): 3205 | resolution: {integrity: sha512-+zq2myprEnQmH5yw6Gqc8lD55QHnpKaU8TOcFeC/Lg/MQSs8UknEA0JC4nTZGFAXC2J2Hyj/ijJ7NlabyPi2gg==} 3206 | peerDependencies: 3207 | react: '>= 0.14.0' 3208 | dependencies: 3209 | '@babel/runtime': 7.23.4 3210 | highlight.js: 10.7.3 3211 | lowlight: 1.20.0 3212 | prismjs: 1.29.0 3213 | react: 18.2.0 3214 | refractor: 3.6.0 3215 | dev: false 3216 | 3217 | /react@18.2.0: 3218 | resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} 3219 | engines: {node: '>=0.10.0'} 3220 | dependencies: 3221 | loose-envify: 1.4.0 3222 | dev: false 3223 | 3224 | /read-cache@1.0.0: 3225 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} 3226 | dependencies: 3227 | pify: 2.3.0 3228 | dev: true 3229 | 3230 | /readdirp@3.6.0: 3231 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 3232 | engines: {node: '>=8.10.0'} 3233 | dependencies: 3234 | picomatch: 2.3.1 3235 | dev: true 3236 | 3237 | /reflect.getprototypeof@1.0.4: 3238 | resolution: {integrity: sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==} 3239 | engines: {node: '>= 0.4'} 3240 | dependencies: 3241 | call-bind: 1.0.5 3242 | define-properties: 1.2.1 3243 | es-abstract: 1.22.3 3244 | get-intrinsic: 1.2.2 3245 | globalthis: 1.0.3 3246 | which-builtin-type: 1.1.3 3247 | dev: true 3248 | 3249 | /refractor@3.6.0: 3250 | resolution: {integrity: sha512-MY9W41IOWxxk31o+YvFCNyNzdkc9M20NoZK5vq6jkv4I/uh2zkWcfudj0Q1fovjUQJrNewS9NMzeTtqPf+n5EA==} 3251 | dependencies: 3252 | hastscript: 6.0.0 3253 | parse-entities: 2.0.0 3254 | prismjs: 1.27.0 3255 | dev: false 3256 | 3257 | /regenerator-runtime@0.14.0: 3258 | resolution: {integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==} 3259 | 3260 | /regexp.prototype.flags@1.5.1: 3261 | resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} 3262 | engines: {node: '>= 0.4'} 3263 | dependencies: 3264 | call-bind: 1.0.5 3265 | define-properties: 1.2.1 3266 | set-function-name: 2.0.1 3267 | dev: true 3268 | 3269 | /remark-code-import@1.2.0: 3270 | resolution: {integrity: sha512-fgwLruqlZbVOIhCJFjY+JDwPZhA4/eK3InJzN8Ox8UDdtudpG212JwtRj6la+lAzJU7JmSEyewZSukVZdknt3Q==} 3271 | engines: {node: '>= 12'} 3272 | dependencies: 3273 | strip-indent: 4.0.0 3274 | to-gatsby-remark-plugin: 0.1.0 3275 | unist-util-visit: 4.1.2 3276 | dev: false 3277 | 3278 | /remark-gfm@3.0.1: 3279 | resolution: {integrity: sha512-lEFDoi2PICJyNrACFOfDD3JlLkuSbOa5Wd8EPt06HUdptv8Gn0bxYTdbU/XXQ3swAPkEaGxxPN9cbnMHvVu1Ig==} 3280 | dependencies: 3281 | '@types/mdast': 3.0.15 3282 | mdast-util-gfm: 2.0.2 3283 | micromark-extension-gfm: 2.0.3 3284 | unified: 10.1.2 3285 | transitivePeerDependencies: 3286 | - supports-color 3287 | dev: false 3288 | 3289 | /remark-math@5.1.1: 3290 | resolution: {integrity: sha512-cE5T2R/xLVtfFI4cCePtiRn+e6jKMtFDR3P8V3qpv8wpKjwvHoBA4eJzvX+nVrnlNy0911bdGmuspCSwetfYHw==} 3291 | dependencies: 3292 | '@types/mdast': 3.0.15 3293 | mdast-util-math: 2.0.2 3294 | micromark-extension-math: 2.1.2 3295 | unified: 10.1.2 3296 | dev: false 3297 | 3298 | /remark-parse@10.0.2: 3299 | resolution: {integrity: sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==} 3300 | dependencies: 3301 | '@types/mdast': 3.0.15 3302 | mdast-util-from-markdown: 1.3.1 3303 | unified: 10.1.2 3304 | transitivePeerDependencies: 3305 | - supports-color 3306 | dev: false 3307 | 3308 | /remark-rehype@10.1.0: 3309 | resolution: {integrity: sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==} 3310 | dependencies: 3311 | '@types/hast': 2.3.8 3312 | '@types/mdast': 3.0.15 3313 | mdast-util-to-hast: 12.3.0 3314 | unified: 10.1.2 3315 | dev: false 3316 | 3317 | /remark-stringify@10.0.3: 3318 | resolution: {integrity: sha512-koyOzCMYoUHudypbj4XpnAKFbkddRMYZHwghnxd7ue5210WzGw6kOBwauJTRUMq16jsovXx8dYNvSSWP89kZ3A==} 3319 | dependencies: 3320 | '@types/mdast': 3.0.15 3321 | mdast-util-to-markdown: 1.5.0 3322 | unified: 10.1.2 3323 | dev: false 3324 | 3325 | /remark@14.0.3: 3326 | resolution: {integrity: sha512-bfmJW1dmR2LvaMJuAnE88pZP9DktIFYXazkTfOIKZzi3Knk9lT0roItIA24ydOucI3bV/g/tXBA6hzqq3FV9Ew==} 3327 | dependencies: 3328 | '@types/mdast': 3.0.15 3329 | remark-parse: 10.0.2 3330 | remark-stringify: 10.0.3 3331 | unified: 10.1.2 3332 | transitivePeerDependencies: 3333 | - supports-color 3334 | dev: false 3335 | 3336 | /resolve-from@4.0.0: 3337 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 3338 | engines: {node: '>=4'} 3339 | dev: true 3340 | 3341 | /resolve-pkg-maps@1.0.0: 3342 | resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} 3343 | dev: true 3344 | 3345 | /resolve@1.22.8: 3346 | resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} 3347 | hasBin: true 3348 | dependencies: 3349 | is-core-module: 2.13.1 3350 | path-parse: 1.0.7 3351 | supports-preserve-symlinks-flag: 1.0.0 3352 | dev: true 3353 | 3354 | /resolve@2.0.0-next.5: 3355 | resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} 3356 | hasBin: true 3357 | dependencies: 3358 | is-core-module: 2.13.1 3359 | path-parse: 1.0.7 3360 | supports-preserve-symlinks-flag: 1.0.0 3361 | dev: true 3362 | 3363 | /reusify@1.0.4: 3364 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 3365 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 3366 | dev: true 3367 | 3368 | /rimraf@3.0.2: 3369 | resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} 3370 | hasBin: true 3371 | dependencies: 3372 | glob: 7.2.3 3373 | dev: true 3374 | 3375 | /run-parallel@1.2.0: 3376 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 3377 | dependencies: 3378 | queue-microtask: 1.2.3 3379 | dev: true 3380 | 3381 | /sade@1.8.1: 3382 | resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} 3383 | engines: {node: '>=6'} 3384 | dependencies: 3385 | mri: 1.2.0 3386 | dev: false 3387 | 3388 | /safe-array-concat@1.0.1: 3389 | resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} 3390 | engines: {node: '>=0.4'} 3391 | dependencies: 3392 | call-bind: 1.0.5 3393 | get-intrinsic: 1.2.2 3394 | has-symbols: 1.0.3 3395 | isarray: 2.0.5 3396 | dev: true 3397 | 3398 | /safe-regex-test@1.0.0: 3399 | resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} 3400 | dependencies: 3401 | call-bind: 1.0.5 3402 | get-intrinsic: 1.2.2 3403 | is-regex: 1.1.4 3404 | dev: true 3405 | 3406 | /scheduler@0.23.0: 3407 | resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} 3408 | dependencies: 3409 | loose-envify: 1.4.0 3410 | dev: false 3411 | 3412 | /semver@6.3.1: 3413 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 3414 | hasBin: true 3415 | dev: true 3416 | 3417 | /semver@7.5.4: 3418 | resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} 3419 | engines: {node: '>=10'} 3420 | hasBin: true 3421 | dependencies: 3422 | lru-cache: 6.0.0 3423 | dev: true 3424 | 3425 | /seroval@0.14.1: 3426 | resolution: {integrity: sha512-ZlC9y1KVDhZFdEHLYZup1RjKDutyX1tt3ffOauqRbRURa2vRr2NU/bHuVEuNEqR3zE2uCU3WM6LqH6Oinc3tWg==} 3427 | engines: {node: '>=10'} 3428 | dev: false 3429 | 3430 | /set-function-length@1.1.1: 3431 | resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} 3432 | engines: {node: '>= 0.4'} 3433 | dependencies: 3434 | define-data-property: 1.1.1 3435 | get-intrinsic: 1.2.2 3436 | gopd: 1.0.1 3437 | has-property-descriptors: 1.0.1 3438 | dev: true 3439 | 3440 | /set-function-name@2.0.1: 3441 | resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} 3442 | engines: {node: '>= 0.4'} 3443 | dependencies: 3444 | define-data-property: 1.1.1 3445 | functions-have-names: 1.2.3 3446 | has-property-descriptors: 1.0.1 3447 | dev: true 3448 | 3449 | /shebang-command@2.0.0: 3450 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 3451 | engines: {node: '>=8'} 3452 | dependencies: 3453 | shebang-regex: 3.0.0 3454 | dev: true 3455 | 3456 | /shebang-regex@3.0.0: 3457 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 3458 | engines: {node: '>=8'} 3459 | dev: true 3460 | 3461 | /side-channel@1.0.4: 3462 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} 3463 | dependencies: 3464 | call-bind: 1.0.5 3465 | get-intrinsic: 1.2.2 3466 | object-inspect: 1.13.1 3467 | dev: true 3468 | 3469 | /slash@3.0.0: 3470 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 3471 | engines: {node: '>=8'} 3472 | dev: true 3473 | 3474 | /solid-js@1.8.6: 3475 | resolution: {integrity: sha512-yiH6ZfBBZ3xj/aU/PBpVKB+8r8WWp100NGF7k/Z0IrK9Y8Lv0jwvFiJY1cHdc6Tj7GqXArKnMBabM0m1k+LzkA==} 3476 | dependencies: 3477 | csstype: 3.1.2 3478 | seroval: 0.14.1 3479 | dev: false 3480 | 3481 | /solid-swr-store@0.10.7(solid-js@1.8.6)(swr-store@0.10.6): 3482 | resolution: {integrity: sha512-A6d68aJmRP471aWqKKPE2tpgOiR5fH4qXQNfKIec+Vap+MGQm3tvXlT8n0I8UgJSlNAsSAUuw2VTviH2h3Vv5g==} 3483 | engines: {node: '>=10'} 3484 | peerDependencies: 3485 | solid-js: ^1.2 3486 | swr-store: ^0.10 3487 | dependencies: 3488 | solid-js: 1.8.6 3489 | swr-store: 0.10.6 3490 | dev: false 3491 | 3492 | /source-map-js@1.0.2: 3493 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 3494 | engines: {node: '>=0.10.0'} 3495 | 3496 | /space-separated-tokens@1.1.5: 3497 | resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==} 3498 | dev: false 3499 | 3500 | /space-separated-tokens@2.0.2: 3501 | resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} 3502 | dev: false 3503 | 3504 | /sswr@2.0.0(svelte@4.2.7): 3505 | resolution: {integrity: sha512-mV0kkeBHcjcb0M5NqKtKVg/uTIYNlIIniyDfSGrSfxpEdM9C365jK0z55pl9K0xAkNTJi2OAOVFQpgMPUk+V0w==} 3506 | peerDependencies: 3507 | svelte: ^4.0.0 3508 | dependencies: 3509 | svelte: 4.2.7 3510 | swrev: 4.0.0 3511 | dev: false 3512 | 3513 | /streamsearch@1.1.0: 3514 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} 3515 | engines: {node: '>=10.0.0'} 3516 | dev: false 3517 | 3518 | /string.prototype.matchall@4.0.10: 3519 | resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} 3520 | dependencies: 3521 | call-bind: 1.0.5 3522 | define-properties: 1.2.1 3523 | es-abstract: 1.22.3 3524 | get-intrinsic: 1.2.2 3525 | has-symbols: 1.0.3 3526 | internal-slot: 1.0.6 3527 | regexp.prototype.flags: 1.5.1 3528 | set-function-name: 2.0.1 3529 | side-channel: 1.0.4 3530 | dev: true 3531 | 3532 | /string.prototype.trim@1.2.8: 3533 | resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} 3534 | engines: {node: '>= 0.4'} 3535 | dependencies: 3536 | call-bind: 1.0.5 3537 | define-properties: 1.2.1 3538 | es-abstract: 1.22.3 3539 | dev: true 3540 | 3541 | /string.prototype.trimend@1.0.7: 3542 | resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} 3543 | dependencies: 3544 | call-bind: 1.0.5 3545 | define-properties: 1.2.1 3546 | es-abstract: 1.22.3 3547 | dev: true 3548 | 3549 | /string.prototype.trimstart@1.0.7: 3550 | resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} 3551 | dependencies: 3552 | call-bind: 1.0.5 3553 | define-properties: 1.2.1 3554 | es-abstract: 1.22.3 3555 | dev: true 3556 | 3557 | /strip-ansi@6.0.1: 3558 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 3559 | engines: {node: '>=8'} 3560 | dependencies: 3561 | ansi-regex: 5.0.1 3562 | dev: true 3563 | 3564 | /strip-bom@3.0.0: 3565 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} 3566 | engines: {node: '>=4'} 3567 | dev: true 3568 | 3569 | /strip-indent@4.0.0: 3570 | resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} 3571 | engines: {node: '>=12'} 3572 | dependencies: 3573 | min-indent: 1.0.1 3574 | dev: false 3575 | 3576 | /strip-json-comments@3.1.1: 3577 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 3578 | engines: {node: '>=8'} 3579 | dev: true 3580 | 3581 | /style-to-object@0.4.4: 3582 | resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} 3583 | dependencies: 3584 | inline-style-parser: 0.1.1 3585 | dev: false 3586 | 3587 | /styled-jsx@5.1.1(react@18.2.0): 3588 | resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} 3589 | engines: {node: '>= 12.0.0'} 3590 | peerDependencies: 3591 | '@babel/core': '*' 3592 | babel-plugin-macros: '*' 3593 | react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' 3594 | peerDependenciesMeta: 3595 | '@babel/core': 3596 | optional: true 3597 | babel-plugin-macros: 3598 | optional: true 3599 | dependencies: 3600 | client-only: 0.0.1 3601 | react: 18.2.0 3602 | dev: false 3603 | 3604 | /sucrase@3.34.0: 3605 | resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} 3606 | engines: {node: '>=8'} 3607 | hasBin: true 3608 | dependencies: 3609 | '@jridgewell/gen-mapping': 0.3.3 3610 | commander: 4.1.1 3611 | glob: 7.1.6 3612 | lines-and-columns: 1.2.4 3613 | mz: 2.7.0 3614 | pirates: 4.0.6 3615 | ts-interface-checker: 0.1.13 3616 | dev: true 3617 | 3618 | /supports-color@7.2.0: 3619 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 3620 | engines: {node: '>=8'} 3621 | dependencies: 3622 | has-flag: 4.0.0 3623 | dev: true 3624 | 3625 | /supports-preserve-symlinks-flag@1.0.0: 3626 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 3627 | engines: {node: '>= 0.4'} 3628 | dev: true 3629 | 3630 | /svelte@4.2.7: 3631 | resolution: {integrity: sha512-UExR1KS7raTdycsUrKLtStayu4hpdV3VZQgM0akX8XbXgLBlosdE/Sf3crOgyh9xIjqSYB3UEBuUlIQKRQX2hg==} 3632 | engines: {node: '>=16'} 3633 | dependencies: 3634 | '@ampproject/remapping': 2.2.1 3635 | '@jridgewell/sourcemap-codec': 1.4.15 3636 | '@jridgewell/trace-mapping': 0.3.20 3637 | acorn: 8.11.2 3638 | aria-query: 5.3.0 3639 | axobject-query: 3.2.1 3640 | code-red: 1.0.4 3641 | css-tree: 2.3.1 3642 | estree-walker: 3.0.3 3643 | is-reference: 3.0.2 3644 | locate-character: 3.0.0 3645 | magic-string: 0.30.5 3646 | periscopic: 3.1.0 3647 | dev: false 3648 | 3649 | /swr-store@0.10.6: 3650 | resolution: {integrity: sha512-xPjB1hARSiRaNNlUQvWSVrG5SirCjk2TmaUyzzvk69SZQan9hCJqw/5rG9iL7xElHU784GxRPISClq4488/XVw==} 3651 | engines: {node: '>=10'} 3652 | dependencies: 3653 | dequal: 2.0.3 3654 | dev: false 3655 | 3656 | /swr@2.2.0(react@18.2.0): 3657 | resolution: {integrity: sha512-AjqHOv2lAhkuUdIiBu9xbuettzAzWXmCEcLONNKJRba87WAefz8Ca9d6ds/SzrPc235n1IxWYdhJ2zF3MNUaoQ==} 3658 | peerDependencies: 3659 | react: ^16.11.0 || ^17.0.0 || ^18.0.0 3660 | dependencies: 3661 | react: 18.2.0 3662 | use-sync-external-store: 1.2.0(react@18.2.0) 3663 | dev: false 3664 | 3665 | /swrev@4.0.0: 3666 | resolution: {integrity: sha512-LqVcOHSB4cPGgitD1riJ1Hh4vdmITOp+BkmfmXRh4hSF/t7EnS4iD+SOTmq7w5pPm/SiPeto4ADbKS6dHUDWFA==} 3667 | dev: false 3668 | 3669 | /swrv@1.0.4(vue@3.3.9): 3670 | resolution: {integrity: sha512-zjEkcP8Ywmj+xOJW3lIT65ciY/4AL4e/Or7Gj0MzU3zBJNMdJiT8geVZhINavnlHRMMCcJLHhraLTAiDOTmQ9g==} 3671 | peerDependencies: 3672 | vue: '>=3.2.26 < 4' 3673 | dependencies: 3674 | vue: 3.3.9(typescript@5.3.2) 3675 | dev: false 3676 | 3677 | /tailwind-merge@2.0.0: 3678 | resolution: {integrity: sha512-WO8qghn9yhsldLSg80au+3/gY9E4hFxIvQ3qOmlpXnqpDKoMruKfi/56BbbMg6fHTQJ9QD3cc79PoWqlaQE4rw==} 3679 | dependencies: 3680 | '@babel/runtime': 7.23.4 3681 | dev: false 3682 | 3683 | /tailwindcss@3.3.5: 3684 | resolution: {integrity: sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA==} 3685 | engines: {node: '>=14.0.0'} 3686 | hasBin: true 3687 | dependencies: 3688 | '@alloc/quick-lru': 5.2.0 3689 | arg: 5.0.2 3690 | chokidar: 3.5.3 3691 | didyoumean: 1.2.2 3692 | dlv: 1.1.3 3693 | fast-glob: 3.3.2 3694 | glob-parent: 6.0.2 3695 | is-glob: 4.0.3 3696 | jiti: 1.21.0 3697 | lilconfig: 2.1.0 3698 | micromatch: 4.0.5 3699 | normalize-path: 3.0.0 3700 | object-hash: 3.0.0 3701 | picocolors: 1.0.0 3702 | postcss: 8.4.31 3703 | postcss-import: 15.1.0(postcss@8.4.31) 3704 | postcss-js: 4.0.1(postcss@8.4.31) 3705 | postcss-load-config: 4.0.2(postcss@8.4.31) 3706 | postcss-nested: 6.0.1(postcss@8.4.31) 3707 | postcss-selector-parser: 6.0.13 3708 | resolve: 1.22.8 3709 | sucrase: 3.34.0 3710 | transitivePeerDependencies: 3711 | - ts-node 3712 | dev: true 3713 | 3714 | /tapable@2.2.1: 3715 | resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} 3716 | engines: {node: '>=6'} 3717 | dev: true 3718 | 3719 | /text-table@0.2.0: 3720 | resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} 3721 | dev: true 3722 | 3723 | /thenify-all@1.6.0: 3724 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} 3725 | engines: {node: '>=0.8'} 3726 | dependencies: 3727 | thenify: 3.3.1 3728 | dev: true 3729 | 3730 | /thenify@3.3.1: 3731 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} 3732 | dependencies: 3733 | any-promise: 1.3.0 3734 | dev: true 3735 | 3736 | /to-fast-properties@2.0.0: 3737 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 3738 | engines: {node: '>=4'} 3739 | dev: false 3740 | 3741 | /to-gatsby-remark-plugin@0.1.0: 3742 | resolution: {integrity: sha512-blmhJ/gIrytWnWLgPSRCkhCPeki6UBK2daa3k9mGahN7GjwHu8KrS7F70MvwlsG7IE794JLgwAdCbi4hU4faFQ==} 3743 | dependencies: 3744 | to-vfile: 6.1.0 3745 | dev: false 3746 | 3747 | /to-regex-range@5.0.1: 3748 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 3749 | engines: {node: '>=8.0'} 3750 | dependencies: 3751 | is-number: 7.0.0 3752 | dev: true 3753 | 3754 | /to-vfile@6.1.0: 3755 | resolution: {integrity: sha512-BxX8EkCxOAZe+D/ToHdDsJcVI4HqQfmw0tCkp31zf3dNP/XWIAjU4CmeuSwsSoOzOTqHPOL0KUzyZqJplkD0Qw==} 3756 | dependencies: 3757 | is-buffer: 2.0.5 3758 | vfile: 4.2.1 3759 | dev: false 3760 | 3761 | /tr46@0.0.3: 3762 | resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} 3763 | dev: false 3764 | 3765 | /trim-lines@3.0.1: 3766 | resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} 3767 | dev: false 3768 | 3769 | /trough@2.1.0: 3770 | resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} 3771 | dev: false 3772 | 3773 | /ts-api-utils@1.0.3(typescript@5.3.2): 3774 | resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} 3775 | engines: {node: '>=16.13.0'} 3776 | peerDependencies: 3777 | typescript: '>=4.2.0' 3778 | dependencies: 3779 | typescript: 5.3.2 3780 | dev: true 3781 | 3782 | /ts-interface-checker@0.1.13: 3783 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} 3784 | dev: true 3785 | 3786 | /tsconfig-paths@3.14.2: 3787 | resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} 3788 | dependencies: 3789 | '@types/json5': 0.0.29 3790 | json5: 1.0.2 3791 | minimist: 1.2.8 3792 | strip-bom: 3.0.0 3793 | dev: true 3794 | 3795 | /tslib@2.6.2: 3796 | resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} 3797 | dev: false 3798 | 3799 | /type-check@0.4.0: 3800 | resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} 3801 | engines: {node: '>= 0.8.0'} 3802 | dependencies: 3803 | prelude-ls: 1.2.1 3804 | dev: true 3805 | 3806 | /type-fest@0.20.2: 3807 | resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} 3808 | engines: {node: '>=10'} 3809 | dev: true 3810 | 3811 | /typed-array-buffer@1.0.0: 3812 | resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} 3813 | engines: {node: '>= 0.4'} 3814 | dependencies: 3815 | call-bind: 1.0.5 3816 | get-intrinsic: 1.2.2 3817 | is-typed-array: 1.1.12 3818 | dev: true 3819 | 3820 | /typed-array-byte-length@1.0.0: 3821 | resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} 3822 | engines: {node: '>= 0.4'} 3823 | dependencies: 3824 | call-bind: 1.0.5 3825 | for-each: 0.3.3 3826 | has-proto: 1.0.1 3827 | is-typed-array: 1.1.12 3828 | dev: true 3829 | 3830 | /typed-array-byte-offset@1.0.0: 3831 | resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} 3832 | engines: {node: '>= 0.4'} 3833 | dependencies: 3834 | available-typed-arrays: 1.0.5 3835 | call-bind: 1.0.5 3836 | for-each: 0.3.3 3837 | has-proto: 1.0.1 3838 | is-typed-array: 1.1.12 3839 | dev: true 3840 | 3841 | /typed-array-length@1.0.4: 3842 | resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} 3843 | dependencies: 3844 | call-bind: 1.0.5 3845 | for-each: 0.3.3 3846 | is-typed-array: 1.1.12 3847 | dev: true 3848 | 3849 | /typescript@5.3.2: 3850 | resolution: {integrity: sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==} 3851 | engines: {node: '>=14.17'} 3852 | hasBin: true 3853 | 3854 | /unbox-primitive@1.0.2: 3855 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} 3856 | dependencies: 3857 | call-bind: 1.0.5 3858 | has-bigints: 1.0.2 3859 | has-symbols: 1.0.3 3860 | which-boxed-primitive: 1.0.2 3861 | dev: true 3862 | 3863 | /undici-types@5.26.5: 3864 | resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} 3865 | 3866 | /unified@10.1.2: 3867 | resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==} 3868 | dependencies: 3869 | '@types/unist': 2.0.10 3870 | bail: 2.0.2 3871 | extend: 3.0.2 3872 | is-buffer: 2.0.5 3873 | is-plain-obj: 4.1.0 3874 | trough: 2.1.0 3875 | vfile: 5.3.7 3876 | dev: false 3877 | 3878 | /unist-util-generated@2.0.1: 3879 | resolution: {integrity: sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==} 3880 | dev: false 3881 | 3882 | /unist-util-is@5.2.1: 3883 | resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==} 3884 | dependencies: 3885 | '@types/unist': 2.0.10 3886 | dev: false 3887 | 3888 | /unist-util-position@4.0.4: 3889 | resolution: {integrity: sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==} 3890 | dependencies: 3891 | '@types/unist': 2.0.10 3892 | dev: false 3893 | 3894 | /unist-util-stringify-position@2.0.3: 3895 | resolution: {integrity: sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==} 3896 | dependencies: 3897 | '@types/unist': 2.0.10 3898 | dev: false 3899 | 3900 | /unist-util-stringify-position@3.0.3: 3901 | resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==} 3902 | dependencies: 3903 | '@types/unist': 2.0.10 3904 | dev: false 3905 | 3906 | /unist-util-visit-parents@5.1.3: 3907 | resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==} 3908 | dependencies: 3909 | '@types/unist': 2.0.10 3910 | unist-util-is: 5.2.1 3911 | dev: false 3912 | 3913 | /unist-util-visit@4.1.2: 3914 | resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==} 3915 | dependencies: 3916 | '@types/unist': 2.0.10 3917 | unist-util-is: 5.2.1 3918 | unist-util-visit-parents: 5.1.3 3919 | dev: false 3920 | 3921 | /update-browserslist-db@1.0.13(browserslist@4.22.1): 3922 | resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} 3923 | hasBin: true 3924 | peerDependencies: 3925 | browserslist: '>= 4.21.0' 3926 | dependencies: 3927 | browserslist: 4.22.1 3928 | escalade: 3.1.1 3929 | picocolors: 1.0.0 3930 | dev: true 3931 | 3932 | /uri-js@4.4.1: 3933 | resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} 3934 | dependencies: 3935 | punycode: 2.3.1 3936 | dev: true 3937 | 3938 | /use-sync-external-store@1.2.0(react@18.2.0): 3939 | resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} 3940 | peerDependencies: 3941 | react: ^16.8.0 || ^17.0.0 || ^18.0.0 3942 | dependencies: 3943 | react: 18.2.0 3944 | dev: false 3945 | 3946 | /util-deprecate@1.0.2: 3947 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} 3948 | dev: true 3949 | 3950 | /uvu@0.5.6: 3951 | resolution: {integrity: sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==} 3952 | engines: {node: '>=8'} 3953 | hasBin: true 3954 | dependencies: 3955 | dequal: 2.0.3 3956 | diff: 5.1.0 3957 | kleur: 4.1.5 3958 | sade: 1.8.1 3959 | dev: false 3960 | 3961 | /vfile-message@2.0.4: 3962 | resolution: {integrity: sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==} 3963 | dependencies: 3964 | '@types/unist': 2.0.10 3965 | unist-util-stringify-position: 2.0.3 3966 | dev: false 3967 | 3968 | /vfile-message@3.1.4: 3969 | resolution: {integrity: sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==} 3970 | dependencies: 3971 | '@types/unist': 2.0.10 3972 | unist-util-stringify-position: 3.0.3 3973 | dev: false 3974 | 3975 | /vfile@4.2.1: 3976 | resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==} 3977 | dependencies: 3978 | '@types/unist': 2.0.10 3979 | is-buffer: 2.0.5 3980 | unist-util-stringify-position: 2.0.3 3981 | vfile-message: 2.0.4 3982 | dev: false 3983 | 3984 | /vfile@5.3.7: 3985 | resolution: {integrity: sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==} 3986 | dependencies: 3987 | '@types/unist': 2.0.10 3988 | is-buffer: 2.0.5 3989 | unist-util-stringify-position: 3.0.3 3990 | vfile-message: 3.1.4 3991 | dev: false 3992 | 3993 | /vue@3.3.9(typescript@5.3.2): 3994 | resolution: {integrity: sha512-sy5sLCTR8m6tvUk1/ijri3Yqzgpdsmxgj6n6yl7GXXCXqVbmW2RCXe9atE4cEI6Iv7L89v5f35fZRRr5dChP9w==} 3995 | peerDependencies: 3996 | typescript: '*' 3997 | peerDependenciesMeta: 3998 | typescript: 3999 | optional: true 4000 | dependencies: 4001 | '@vue/compiler-dom': 3.3.9 4002 | '@vue/compiler-sfc': 3.3.9 4003 | '@vue/runtime-dom': 3.3.9 4004 | '@vue/server-renderer': 3.3.9(vue@3.3.9) 4005 | '@vue/shared': 3.3.9 4006 | typescript: 5.3.2 4007 | dev: false 4008 | 4009 | /watchpack@2.4.0: 4010 | resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==} 4011 | engines: {node: '>=10.13.0'} 4012 | dependencies: 4013 | glob-to-regexp: 0.4.1 4014 | graceful-fs: 4.2.11 4015 | dev: false 4016 | 4017 | /web-streams-polyfill@3.2.1: 4018 | resolution: {integrity: sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==} 4019 | engines: {node: '>= 8'} 4020 | dev: false 4021 | 4022 | /web-streams-polyfill@4.0.0-beta.3: 4023 | resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} 4024 | engines: {node: '>= 14'} 4025 | dev: false 4026 | 4027 | /webidl-conversions@3.0.1: 4028 | resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} 4029 | dev: false 4030 | 4031 | /whatwg-url@5.0.0: 4032 | resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} 4033 | dependencies: 4034 | tr46: 0.0.3 4035 | webidl-conversions: 3.0.1 4036 | dev: false 4037 | 4038 | /which-boxed-primitive@1.0.2: 4039 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} 4040 | dependencies: 4041 | is-bigint: 1.0.4 4042 | is-boolean-object: 1.1.2 4043 | is-number-object: 1.0.7 4044 | is-string: 1.0.7 4045 | is-symbol: 1.0.4 4046 | dev: true 4047 | 4048 | /which-builtin-type@1.1.3: 4049 | resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} 4050 | engines: {node: '>= 0.4'} 4051 | dependencies: 4052 | function.prototype.name: 1.1.6 4053 | has-tostringtag: 1.0.0 4054 | is-async-function: 2.0.0 4055 | is-date-object: 1.0.5 4056 | is-finalizationregistry: 1.0.2 4057 | is-generator-function: 1.0.10 4058 | is-regex: 1.1.4 4059 | is-weakref: 1.0.2 4060 | isarray: 2.0.5 4061 | which-boxed-primitive: 1.0.2 4062 | which-collection: 1.0.1 4063 | which-typed-array: 1.1.13 4064 | dev: true 4065 | 4066 | /which-collection@1.0.1: 4067 | resolution: {integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==} 4068 | dependencies: 4069 | is-map: 2.0.2 4070 | is-set: 2.0.2 4071 | is-weakmap: 2.0.1 4072 | is-weakset: 2.0.2 4073 | dev: true 4074 | 4075 | /which-typed-array@1.1.13: 4076 | resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} 4077 | engines: {node: '>= 0.4'} 4078 | dependencies: 4079 | available-typed-arrays: 1.0.5 4080 | call-bind: 1.0.5 4081 | for-each: 0.3.3 4082 | gopd: 1.0.1 4083 | has-tostringtag: 1.0.0 4084 | dev: true 4085 | 4086 | /which@2.0.2: 4087 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 4088 | engines: {node: '>= 8'} 4089 | hasBin: true 4090 | dependencies: 4091 | isexe: 2.0.0 4092 | dev: true 4093 | 4094 | /wrappy@1.0.2: 4095 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 4096 | dev: true 4097 | 4098 | /xtend@4.0.2: 4099 | resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} 4100 | engines: {node: '>=0.4'} 4101 | dev: false 4102 | 4103 | /yallist@4.0.0: 4104 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 4105 | dev: true 4106 | 4107 | /yaml@2.3.4: 4108 | resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} 4109 | engines: {node: '>= 14'} 4110 | dev: true 4111 | 4112 | /yocto-queue@0.1.0: 4113 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 4114 | engines: {node: '>=10'} 4115 | dev: true 4116 | 4117 | /zwitch@2.0.4: 4118 | resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} 4119 | dev: false 4120 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusschiesser/ai-chatbot/491fdd0dca772580ff8263538aaf01d8f363b29c/public/apple-touch-icon.png -------------------------------------------------------------------------------- /public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusschiesser/ai-chatbot/491fdd0dca772580ff8263538aaf01d8f363b29c/public/favicon-16x16.png -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusschiesser/ai-chatbot/491fdd0dca772580ff8263538aaf01d8f363b29c/public/favicon.ico -------------------------------------------------------------------------------- /public/next.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/opengraph-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusschiesser/ai-chatbot/491fdd0dca772580ff8263538aaf01d8f363b29c/public/opengraph-image.png -------------------------------------------------------------------------------- /public/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/marcusschiesser/ai-chatbot/491fdd0dca772580ff8263538aaf01d8f363b29c/public/screenshot.png -------------------------------------------------------------------------------- /public/vercel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tailwind.config.ts: -------------------------------------------------------------------------------- 1 | import type { Config } from "tailwindcss"; 2 | import { fontFamily } from "tailwindcss/defaultTheme"; 3 | 4 | const config: Config = { 5 | darkMode: ["class"], 6 | content: ["app/**/*.{ts,tsx}", "components/**/*.{ts,tsx}"], 7 | theme: { 8 | container: { 9 | center: true, 10 | padding: "2rem", 11 | screens: { 12 | "2xl": "1400px", 13 | }, 14 | }, 15 | extend: { 16 | colors: { 17 | border: "hsl(var(--border))", 18 | input: "hsl(var(--input))", 19 | ring: "hsl(var(--ring))", 20 | background: "hsl(var(--background))", 21 | foreground: "hsl(var(--foreground))", 22 | primary: { 23 | DEFAULT: "hsl(var(--primary))", 24 | foreground: "hsl(var(--primary-foreground))", 25 | }, 26 | secondary: { 27 | DEFAULT: "hsl(var(--secondary))", 28 | foreground: "hsl(var(--secondary-foreground))", 29 | }, 30 | destructive: { 31 | DEFAULT: "hsl(var(--destructive) / )", 32 | foreground: "hsl(var(--destructive-foreground) / )", 33 | }, 34 | muted: { 35 | DEFAULT: "hsl(var(--muted))", 36 | foreground: "hsl(var(--muted-foreground))", 37 | }, 38 | accent: { 39 | DEFAULT: "hsl(var(--accent))", 40 | foreground: "hsl(var(--accent-foreground))", 41 | }, 42 | popover: { 43 | DEFAULT: "hsl(var(--popover))", 44 | foreground: "hsl(var(--popover-foreground))", 45 | }, 46 | card: { 47 | DEFAULT: "hsl(var(--card))", 48 | foreground: "hsl(var(--card-foreground))", 49 | }, 50 | }, 51 | borderRadius: { 52 | xl: `calc(var(--radius) + 4px)`, 53 | lg: `var(--radius)`, 54 | md: `calc(var(--radius) - 2px)`, 55 | sm: "calc(var(--radius) - 4px)", 56 | }, 57 | fontFamily: { 58 | sans: ["var(--font-sans)", ...fontFamily.sans], 59 | }, 60 | keyframes: { 61 | "accordion-down": { 62 | from: { height: "0" }, 63 | to: { height: "var(--radix-accordion-content-height)" }, 64 | }, 65 | "accordion-up": { 66 | from: { height: "var(--radix-accordion-content-height)" }, 67 | to: { height: "0" }, 68 | }, 69 | }, 70 | animation: { 71 | "accordion-down": "accordion-down 0.2s ease-out", 72 | "accordion-up": "accordion-up 0.2s ease-out", 73 | }, 74 | }, 75 | }, 76 | plugins: [], 77 | }; 78 | export default config; 79 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "lib": ["dom", "dom.iterable", "esnext"], 4 | "allowJs": true, 5 | "skipLibCheck": true, 6 | "strict": true, 7 | "forceConsistentCasingInFileNames": true, 8 | "noEmit": true, 9 | "incremental": true, 10 | "esModuleInterop": true, 11 | "module": "esnext", 12 | "moduleResolution": "node", 13 | "resolveJsonModule": true, 14 | "isolatedModules": true, 15 | "jsx": "preserve", 16 | "baseUrl": ".", 17 | "paths": { 18 | "@/*": ["./*"] 19 | }, 20 | "plugins": [ 21 | { 22 | "name": "next" 23 | } 24 | ], 25 | "strictNullChecks": true 26 | }, 27 | "include": [ 28 | "next-env.d.ts", 29 | "next-auth.d.ts", 30 | "**/*.ts", 31 | "**/*.tsx", 32 | ".next/types/**/*.ts" 33 | ], 34 | "exclude": ["node_modules"] 35 | } --------------------------------------------------------------------------------