清明节为什么不给自己头像 p 上蜡烛纸钱<\/div>","thank_count":156,"no":1,"title":"国庆节快到啦,快给头像加上国旗吧"},{"topic_id":758335,"id":10267209,"content":"
人家延迟的是公务员国企事业单位,你想得美 60 了还写代码,35 就把你开了<\/div>","thank_count":156,"no":2,"title":"延迟退休估计要实行了,大家怎么看"},{"topic_id":903635,"id":12484167,"content":"
会不会出新变种以新华社通稿为准,你说了不算<\/div>","thank_count":153,"no":1,"title":"\"多地宣布无症状或轻症可上班\",在这种全民感染的环境下,以中国人口数量,会不会诞生新的变种。高传播高死亡率那种。"}]
--------------------------------------------------------------------------------
/v2ex_scrapy/middlewares.py:
--------------------------------------------------------------------------------
1 | # Define here the models for your spider middleware
2 | #
3 | # See documentation in:
4 | # https://docs.scrapy.org/en/latest/topics/spider-middleware.html
5 |
6 | # useful for handling different item types with a single interface
7 |
8 | import logging
9 | import random
10 | import time
11 |
12 | import scrapy
13 | import scrapy.http.response.html
14 | from scrapy import signals
15 | from scrapy.exceptions import IgnoreRequest
16 |
17 | from v2ex_scrapy import utils
18 | from v2ex_scrapy.DB import DB, LogItem
19 |
20 |
21 | class TutorialScrapySpiderMiddleware:
22 | # Not all methods need to be defined. If a method is not defined,
23 | # scrapy acts as if the spider middleware does not modify the
24 | # passed objects.
25 |
26 | @classmethod
27 | def from_crawler(cls, crawler):
28 | # This method is used by Scrapy to create your spiders.
29 | s = cls()
30 | crawler.signals.connect(s.spider_opened, signal=signals.spider_opened)
31 | return s
32 |
33 | def process_spider_input(self, response, spider):
34 | # Called for each response that goes through the spider
35 | # middleware and into the spider.
36 |
37 | # Should return None or raise an exception.
38 | return None
39 |
40 | def process_spider_output(self, response, result, spider):
41 | # Called with the results returned from the Spider, after
42 | # it has processed the response.
43 |
44 | # Must return an iterable of Request, or item objects.
45 | for i in result:
46 | yield i
47 |
48 | def process_spider_exception(self, response, exception, spider):
49 | # Called when a spider or process_spider_input() method
50 | # (from other spider middleware) raises an exception.
51 |
52 | # Should return either None or an iterable of Request or item objects.
53 | pass
54 |
55 | def process_start_requests(self, start_requests, spider):
56 | # Called with the start requests of the spider, and works
57 | # similarly to the process_spider_output() method, except
58 | # that it doesn’t have a response associated.
59 |
60 | # Must return only requests (not items).
61 | for r in start_requests:
62 | yield r
63 |
64 | def spider_opened(self, spider):
65 | spider.logger.info("Spider opened: %s" % spider.name)
66 |
67 |
68 | class ProxyAndCookieDownloaderMiddleware:
69 | # Not all methods need to be defined. If a method is not defined,
70 | # scrapy acts as if the downloader middleware does not modify the
71 | # passed objects.
72 | def __init__(self):
73 | self.proxies: list[str] = []
74 | self.cookies: dict[str, str] = {}
75 | self.logger = logging.getLogger(__name__)
76 |
77 | @classmethod
78 | def from_crawler(cls, crawler):
79 | # This method is used by Scrapy to create your spiders.
80 | s = cls()
81 | crawler.signals.connect(s.spider_opened, signal=signals.spider_opened)
82 | return s
83 |
84 | def process_request(self, request: scrapy.Request, spider):
85 | if "proxy" not in request.meta and len(self.proxies) > 0:
86 | request.meta["proxy"] = random.choice(self.proxies)
87 | if self.cookies != {} and request.cookies == {}:
88 | request.cookies = self.cookies
89 | # Called for each request that goes through the downloader
90 | # middleware.
91 |
92 | # Must either:
93 | # - return None: continue processing this request
94 | # - or return a Response object
95 | # - or return a Request object
96 | # - or raise IgnoreRequest: process_exception() methods of
97 | # installed downloader middleware will be called
98 | return None
99 |
100 | def process_response(
101 | self,
102 | request: scrapy.Request,
103 | response: scrapy.http.response.html.HtmlResponse,
104 | spider: scrapy.Spider,
105 | ):
106 | # Called with the response returned from the downloader.
107 | if response.status == 403:
108 | self.logger.info(f"skip url:{response.url}, because 403")
109 | raise IgnoreRequest(f"403 url {response.url}")
110 | # Must either;
111 | # - return a Response object
112 | # - return a Request object
113 | # - or raise IgnoreRequest
114 | return response
115 |
116 | def process_exception(self, request, exception, spider):
117 | # Called when a download handler or a process_request()
118 | # (from other downloader middleware) raises an exception.
119 |
120 | # Must either:
121 | # - return None: continue processing this exception
122 | # - return a Response object: stops process_exception() chain
123 | # - return a Request object: stops process_exception() chain
124 | pass
125 |
126 | def spider_opened(self, spider: scrapy.Spider):
127 | self.proxies = spider.settings.get("PROXIES", []) # type: ignore
128 |
129 | cookie_str = spider.settings.get("COOKIES", "")
130 | self.cookies = utils.cookie_str2cookie_dict(cookie_str) # type: ignore
131 |
132 | spider.logger.info("Spider opened: %s" % spider.name)
133 |
134 |
135 | class RandomUserAgentMiddleware:
136 | def __init__(self):
137 | self.user_agents: list[str] = []
138 |
139 | @classmethod
140 | def from_crawler(cls, crawler):
141 | s = cls()
142 | crawler.signals.connect(s.spider_opened, signal=signals.spider_opened)
143 | return s
144 |
145 | def process_request(self, request: scrapy.Request, spider):
146 | if len(self.user_agents) > 0:
147 | request.headers[b"User-Agent"] = random.choice(self.user_agents)
148 | return None
149 |
150 | def spider_opened(self, spider: scrapy.Spider):
151 | with open("./user-agents.txt") as f:
152 | self.user_agents = f.read().splitlines()
153 |
154 |
155 | class SaveHttpStatusToDBMiddleware:
156 | def __init__(self):
157 | self.db = DB()
158 |
159 | def process_response(
160 | self, request, response: scrapy.http.response.html.HtmlResponse, spider
161 | ):
162 | url = response.url
163 | status_code = response.status
164 | create_at = int(time.time())
165 | self.db.session.add(
166 | LogItem(url=url, status_code=status_code, create_at=create_at)
167 | )
168 | return response
169 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 中文 | [English](./README-en.md)
2 |
3 | # 一个爬取v2ex.com网站的爬虫
4 |
5 | 学习scrapy写的一个小爬虫
6 |
7 | 数据都放在了sqlite数据库,方便分享,整个数据库大小3.7GB。
8 |
9 | 在GitHub我 release 了完整的sqlite数据库文件
10 |
11 | **数据库更新:2023-07-22-full**
12 |
13 | 包含全部帖子数据(水深火热在内),同时帖子和评论的内容不再只爬取文本内容,而是爬取原始的HTML,同时topic增加了单独的reply_count,comment增加了no
14 |
15 | ## 不建议自行运行爬虫,数据已经有了
16 |
17 | 爬取花了几十小时,因为爬快了会封禁IP,并且我也没使用代理池。并发数设置为3基本上可以一直爬。
18 |
19 | [下载数据库](https://github.com/oldshensheep/v2ex_scrapy/releases)
20 |
21 | ## 爬取相关数据说明
22 |
23 | 爬虫从`topic_id = 1`开始爬,路径为`https://www.v2ex.com/t/{topic_id}`。 服务器可能返回404/403/302/200,如果是404说明帖子被删除了,如果是403说明是爬虫被限制了,302一般是跳转到登陆页面,有的也是跳转到主页,200返回正常页面。
24 |
25 | 爬取过程中会帖子内容,评论,以及评论的用户信息。
26 |
27 | 数据库表结构:[表结构源码](./v2ex_scrapy/items.py)
28 |
29 | ## 运行
30 |
31 | 确保python >=3.10
32 |
33 | ### 安装依赖
34 |
35 | ```bash
36 | pip install -r requirements.txt
37 | ```
38 |
39 | ### 配置
40 |
41 | 默认的并发数设置成了1,如需更改修改`CONCURRENT_REQUESTS`
42 |
43 | #### Cookie
44 |
45 | 部分帖子和部分帖子信息需要登录才能爬取,可以设置Cookie来登录,修改 `v2ex_scrapy/settings.py`中 `COOKIES`的值
46 |
47 | ```python
48 | COOKIES = """
49 | a=b;c=d;e=f
50 | """
51 | ```
52 |
53 | #### 代理
54 |
55 | 更改 `v2ex_scrapy/settings.py` 中 `PROXIES`的值 如
56 |
57 | ```python
58 | [
59 | "http://127.0.0.1:7890"
60 | ]
61 | ```
62 |
63 | 请求会随机选择一个代理,如果需要更高级的代理方式可以使用第三方库,或者自行实现Middleware
64 |
65 | #### LOG
66 |
67 | 默认关闭了写入Log文件的功能,如需开启修改`v2ex_scrapy\settings.py`中的这行`# LOG_FILE = "v2ex_scrapy.log"`配置文件,取消注释
68 |
69 | ### 运行爬虫
70 |
71 | 爬取全站帖子、用户信息和评论
72 |
73 | ```bash
74 | scrapy crawl v2ex
75 | ```
76 |
77 | 爬取指定节点帖子、用户信息和评论,如果node-name为空则爬flamewar
78 |
79 | ```bash
80 | scrapy crawl v2ex-node node=${node-name}
81 | ```
82 |
83 | 爬取用户信息,从uid=1开始爬到uid=635000
84 |
85 | ```bash
86 | scrapy crawl v2ex-member start_id=${start_id} end_id=${end_id}
87 | ```
88 |
89 | > `scrapy: command not found` 说明没有添加python包的安装位置到环境变量
90 |
91 | ### 接着上次爬
92 |
93 | 直接运行爬取的命令即可,会自动继续爬。会自动跳过已经爬过的帖子
94 |
95 | ```bash
96 | scrapy crawl v2ex
97 | ```
98 |
99 | ### 注意事项
100 |
101 | 爬取过程中出现403基本上是因为IP被限制了,等待一段时间即可
102 |
103 | ## 统计分析
104 |
105 | 统计用的SQL在[query.sql](query.sql)这个文件下,图表的源码在[analysis](analysis)这个子项目下,包含一个分析数据导出到JSON的Python脚本和一个前端展示项目
106 |
107 | 第一次的分析见
108 |
109 | 水深火热见
110 |
111 | ### 帖子、评论和用户数量统计
112 |
113 | 帖子总数:801,038 (80万)
114 | 评论总数:10,899,382 (1000万)
115 | 用户总数:194,534 (20万)异常原因见爬取相关数据说明的注2
116 |
117 | ### 获得感谢最多的评论
118 |
119 | 因为部分评论内容较多不方便展示,要查看内容可以点击链接。或者下载数据库使用SQL查询,SQL查询文件也包含在开源文件中
120 |
121 | | 评论链接 | 感谢数 |
122 | | :--- | :--- |
123 | | [https://www.v2ex.com/t/820687#r_11150263](https://www.v2ex.com/t/820687#r_11150263) | 316 |
124 | | [https://www.v2ex.com/t/437760#r_5432223](https://www.v2ex.com/t/437760#r_5432223) | 297 |
125 | | [https://www.v2ex.com/t/915584#r_12684442](https://www.v2ex.com/t/915584#r_12684442) | 248 |
126 | | [https://www.v2ex.com/t/917858#r_12720322](https://www.v2ex.com/t/917858#r_12720322) | 246 |
127 | | [https://www.v2ex.com/t/949195#r_13227124](https://www.v2ex.com/t/949195#r_13227124) | 246 |
128 | | [https://www.v2ex.com/t/881410#r_12126164](https://www.v2ex.com/t/881410#r_12126164) | 245 |
129 | | [https://www.v2ex.com/t/884719#r_12178891](https://www.v2ex.com/t/884719#r_12178891) | 240 |
130 | | [https://www.v2ex.com/t/901263#r_12442916](https://www.v2ex.com/t/901263#r_12442916) | 240 |
131 | | [https://www.v2ex.com/t/749163#r_10129442](https://www.v2ex.com/t/749163#r_10129442) | 217 |
132 | | [https://www.v2ex.com/t/877829#r_12070911](https://www.v2ex.com/t/877829#r_12070911) | 216 |
133 |
134 | ### 正向投票最多的帖子
135 |
136 | | 帖子链接 | 标题 | 票数 |
137 | | :--- | :--- | :--- |
138 | | [https://www.v2ex.com/t/110327](https://www.v2ex.com/t/110327) | UP n DOWN vote in V2EX | 321 |
139 | | [https://www.v2ex.com/t/295433](https://www.v2ex.com/t/295433) | Snipaste - 开发了三年的截图工具,但不只是截图 | 274 |
140 | | [https://www.v2ex.com/t/462641](https://www.v2ex.com/t/462641) | 在 D 版发过了,不过因为不少朋友看不到 D 版,我就放在这里吧,说说我最近做的这个 Project | 200 |
141 | | [https://www.v2ex.com/t/658387](https://www.v2ex.com/t/658387) | 剽窃别人成果的人一直有,不过今天遇到了格外厉害的 | 179 |
142 | | [https://www.v2ex.com/t/745030](https://www.v2ex.com/t/745030) | QQ 正在尝试读取你的浏览记录 | 177 |
143 | | [https://www.v2ex.com/t/689296](https://www.v2ex.com/t/689296) | 早上还在睡觉,自如管家进了我卧室... | 145 |
144 | | [https://www.v2ex.com/t/814025](https://www.v2ex.com/t/814025) | 分享一张我精心修改调整的 M42 猎户座大星云(Orion Nebula)壁纸。用了非常多年,首次分享出来,能和 MBP 2021 新屏幕和谐相处。 | 136 |
145 | | [https://www.v2ex.com/t/511827](https://www.v2ex.com/t/511827) | 23 岁,得了癌症,人生无望 | 129 |
146 | | [https://www.v2ex.com/t/427796](https://www.v2ex.com/t/427796) | 隔壁组的小兵集体情愿 要炒了 team leader | 123 |
147 | | [https://www.v2ex.com/t/534800](https://www.v2ex.com/t/534800) | 使用 Github 账号登录 黑客派 之后, Github 自动 follow | 112 |
148 |
149 | ### 点击次数最多的帖子
150 |
151 | | 帖子链接 | 标题 | 点击数 |
152 | | :--- | :--- | :--- |
153 | | [https://www.v2ex.com/t/510849](https://www.v2ex.com/t/510849) | chrome 签到插件 \[魂签\] 更新啦 | 39,452,510 |
154 | | [https://www.v2ex.com/t/706595](https://www.v2ex.com/t/706595) | 迫于搬家 ··· 继续出 700 本书\~ 四折 非技术书还剩 270 多本· | 2,406,584 |
155 | | [https://www.v2ex.com/t/718092](https://www.v2ex.com/t/718092) | 使用 GitHub 的流量数据为仓库创建访问数和克隆数的徽章 | 1,928,267 |
156 | | [https://www.v2ex.com/t/861832](https://www.v2ex.com/t/861832) | 帮朋友推销下福建古田水蜜桃,欢迎各位购买啊 | 635,832 |
157 | | [https://www.v2ex.com/t/176916](https://www.v2ex.com/t/176916) | 王垠这是在想不开吗 | 329,617 |
158 | | [https://www.v2ex.com/t/303889](https://www.v2ex.com/t/303889) | 关于 V2EX 提供的 Android Captive Portal Server 地址的更新 | 295,681 |
159 | | [https://www.v2ex.com/t/206766](https://www.v2ex.com/t/206766) | 如何找到一些有趣的 telegram 群组? | 294,553 |
160 | | [https://www.v2ex.com/t/265474](https://www.v2ex.com/t/265474) | ngrok 客户端和服务端如何不验证证书 | 271,244 |
161 | | [https://www.v2ex.com/t/308080](https://www.v2ex.com/t/308080) | Element UI——一套基于 Vue 2.0 的桌面端组件库 | 221,099 |
162 | | [https://www.v2ex.com/t/295433](https://www.v2ex.com/t/295433) | Snipaste - 开发了三年的截图工具,但不只是截图 | 210,675 |
163 |
164 | ### 发送评论最多的用户
165 |
166 | | 用户 | 评论数 |
167 | | :--- | :--- |
168 | | [Livid](https://www.v2ex.com/member/Livid) | 19559 |
169 | | [loading](https://www.v2ex.com/member/loading) | 19190 |
170 | | [murmur](https://www.v2ex.com/member/murmur) | 17189 |
171 | | [msg7086](https://www.v2ex.com/member/msg7086) | 16768 |
172 | | [Tink](https://www.v2ex.com/member/Tink) | 15919 |
173 | | [imn1](https://www.v2ex.com/member/imn1) | 11468 |
174 | | [20015jjw](https://www.v2ex.com/member/20015jjw) | 10293 |
175 | | [x86](https://www.v2ex.com/member/x86) | 9704 |
176 | | [opengps](https://www.v2ex.com/member/opengps) | 9694 |
177 | | [est](https://www.v2ex.com/member/est) | 9532 |
178 |
179 | ### 发送帖子最多的用户
180 |
181 | | 用户 | 主题数 |
182 | | :--- | :--- |
183 | | [Livid](https://www.v2ex.com/member/Livid) | 6974 |
184 | | [icedx](https://www.v2ex.com/member/icedx) | 722 |
185 | | [ccming](https://www.v2ex.com/member/ccming) | 646 |
186 | | [2232588429](https://www.v2ex.com/member/2232588429) | 614 |
187 | | [razios](https://www.v2ex.com/member/razios) | 611 |
188 | | [coolair](https://www.v2ex.com/member/coolair) | 604 |
189 | | [Kai](https://www.v2ex.com/member/Kai) | 599 |
190 | | [est](https://www.v2ex.com/member/est) | 571 |
191 | | [Newyorkcity](https://www.v2ex.com/member/Newyorkcity) | 553 |
192 | | [WildCat](https://www.v2ex.com/member/WildCat) | 544 |
193 |
194 | ## 曲线
195 |
196 | 需要详细的数据,建议下载数据库
197 |
198 | ### 每月新用户数折线图
199 |
200 | 
201 |
202 | ### 每月新帖子数折线图
203 |
204 | 
205 |
206 | ### 评论数折线图
207 |
208 | 
209 |
210 | ### 使用次数最多的节点
211 |
212 | | 节点 | 次数 |
213 | | :--- | :--- |
214 | | [qna](https://www.v2ex.com/go/qna) | 188011 |
215 | | [all4all](https://www.v2ex.com/go/all4all) | 103254 |
216 | | [programmer](https://www.v2ex.com/go/programmer) | 51706 |
217 | | [jobs](https://www.v2ex.com/go/jobs) | 49959 |
218 | | [share](https://www.v2ex.com/go/share) | 35942 |
219 | | [apple](https://www.v2ex.com/go/apple) | 20713 |
220 | | [macos](https://www.v2ex.com/go/macos) | 19040 |
221 | | [create](https://www.v2ex.com/go/create) | 18685 |
222 | | [python](https://www.v2ex.com/go/python) | 14124 |
223 | | [career](https://www.v2ex.com/go/career) | 13170 |
224 |
225 | ### 使用次数最多的tag (tag为v2ex自动生成)
226 |
227 | | tag | 次数 |
228 | | :--- | :--- |
229 | | [开发](https://www.v2ex.com/tag/%E5%BC%80%E5%8F%91) | 16414 |
230 | | [App](https://www.v2ex.com/tag/App) | 13240 |
231 | | [Python](https://www.v2ex.com/tag/Python) | 13016 |
232 | | [Mac](https://www.v2ex.com/tag/Mac) | 12931 |
233 | | [Java](https://www.v2ex.com/tag/Java) | 10984 |
234 | | [Pro](https://www.v2ex.com/tag/Pro) | 9375 |
235 | | [iOS](https://www.v2ex.com/tag/iOS) | 9216 |
236 | | [微信](https://www.v2ex.com/tag/%E5%BE%AE%E4%BF%A1) | 8922 |
237 | | [V2EX](https://www.v2ex.com/tag/V2EX) | 8426 |
238 | | [域名](https://www.v2ex.com/tag/%E5%9F%9F%E5%90%8D) | 8424 |
239 |
--------------------------------------------------------------------------------
/README-en.md:
--------------------------------------------------------------------------------
1 | [中文](./README.md) | English
2 | Translated by ChatGPT
3 |
4 | # A web crawler for v2ex.com
5 |
6 | A small crawler written to learn scrapy.
7 |
8 | The data is stored in an SQLite database for easy sharing, with a total database size of 3.7GB.
9 |
10 | I have released the complete SQLite database file on GitHub.
11 |
12 | **Database Update: 2023-07-22-full**
13 |
14 | It contains all post data, including hot topics. Both post and comment content are now scraped in their original HTML format. Additionally, the "topic" has a new field "reply_count," and "comment" has a new field "no."
15 |
16 | ## It is not recommended to run the crawler as the data is already available
17 |
18 | The crawling process took several dozen hours because rapid crawling can result in IP banning, and I didn't use a proxy pool. Setting the concurrency to 3 should allow for continuous crawling.
19 |
20 | [Download the database](https://github.com/oldshensheep/v2ex_scrapy/releases)
21 |
22 | ## Explanation of Crawled Data
23 |
24 | The crawler starts crawling from `topic_id = 1`, and the path is `https://www.v2ex.com/t/{topic_id}`. The server might return 404/403/302/200 status codes. A 404 indicates that the post has been deleted, 403 indicates that the crawler has been restricted, 302 is usually a redirection to the login page or homepage, and 200 indicates a normal page.
25 |
26 | The crawler fetches post content, comments, and user information during the crawling process.
27 |
28 | Database table structure: [Table structure source code](./v2ex_scrapy/items.py)
29 |
30 | ## Running
31 |
32 | Ensure Python version is >=3.10
33 |
34 | ### Install Dependencies
35 |
36 | ```bash
37 | pip install -r requirements.txt
38 | ```
39 |
40 | ### Configuration
41 |
42 | The default concurrency is set to 1. To change it, modify `CONCURRENT_REQUESTS`.
43 |
44 | #### Cookie
45 |
46 | Some posts and post information require login for crawling. You can set a Cookie to log in. Modify the `COOKIES` value in `v2ex_scrapy/settings.py`:
47 |
48 | ```python
49 | COOKIES = """
50 | a=b;c=d;e=f
51 | """
52 | ```
53 |
54 | #### Proxy
55 |
56 | Change the value of `PROXIES` in `v2ex_scrapy/settings.py`, for example:
57 |
58 | ```python
59 | [
60 | "http://127.0.0.1:7890"
61 | ]
62 | ```
63 |
64 | Requests will randomly choose one of the proxies. If you need a more advanced proxy method, you can use a third-party library or implement Middleware yourself.
65 |
66 | #### LOG
67 |
68 | The writing of Log files is disabled by default. To enable it, uncomment this line in `v2ex_scrapy\settings.py`:
69 |
70 | ```python
71 | LOG_FILE = "v2ex_scrapy.log"
72 | ```
73 |
74 | ### Run the Crawler
75 |
76 | Crawl all posts, user information, and comments on the entire site:
77 |
78 | ```bash
79 | scrapy crawl v2ex
80 | ```
81 |
82 | Crawl posts, user information, and comments for a specific node. If node-name is empty, it crawls "flamewar":
83 |
84 | ```bash
85 | scrapy crawl v2ex-node node=${node-name}
86 | ```
87 |
88 | Crawl user information, starting from uid=1 and crawling up to uid=635000:
89 |
90 | ```bash
91 | scrapy crawl v2ex-member start_id=${start_id} end_id=${end_id}
92 | ```
93 |
94 | > If you see `scrapy: command not found`, it means the Python package installation path has not been added to the environment variable.
95 |
96 | ### Resuming the Crawl
97 |
98 | Simply run the crawl command again, and it will automatically continue crawling, skipping the posts that have already been crawled:
99 |
100 | ```bash
101 | scrapy crawl v2ex
102 | ```
103 |
104 | ### Notes
105 |
106 | If you encounter a 403 error during the crawling process, it is likely due to IP restrictions. Wait for a while before trying again.
107 |
108 | ## Statistical Analysis
109 |
110 | The SQL queries used for statistics can be found in the [query.sql](query.sql) file, and the source code for the charts is in the [analysis](analysis) subproject. It includes a Python script for exporting data to JSON for analysis and a frontend display project.
111 |
112 | The first analysis can be found at
113 |
114 | For more detailed data, I suggest downloading the database.
115 |
116 | ### Statistics of Posts, Comments, and Users
117 |
118 | Total posts: 801,038 (800,000)
119 | Total comments: 10,899,382 (10 million)
120 | Total users: 194,534 (200,000) - See Note 2 in the Explanation of Crawled Data
121 |
122 | ### Top Comments by Gratitude
123 |
124 | Gratitude count is too large to display the full content. You can click on the links or download the database to query using SQL. The SQL queries are also included in the open-source files.
125 |
126 | | Comment Link | Gratitude Count |
127 | | :--- | :--- |
128 | | [https://www.v2ex.com/t/820687#r_11150263](https://www.v2ex.com/t/820687#r_11150263) | 316 |
129 | | [https://www.v2ex.com/t/437760#r_5432223](https://www.v2ex.com/t/437760#r_5432223) | 297 |
130 | | [https://www.v2ex.com/t/915584#r_12684442](https://www.v2ex.com/t/915584#r_12684442) | 248 |
131 | | [https://www.v2ex.com/t/917858#r_12720322](https://www.v2ex.com/t/917858#r_12720322) | 246 |
132 | | [https://www.v2ex.com/t/949195#r_13227124](https://www.v2ex.com/t/949195#r_13227124) | 246 |
133 | | [https://www.v2ex.com/t/881410#r_12126164](https://www.v2ex.com/t/881410#r_12126164) | 245 |
134 | | [https://www.v2ex.com/t/884719#r_12178891](https://www.v2ex.com/t/884719#r_12178891) | 240 |
135 | | [https://www.v2ex.com/t/901263#r_12442916](https://www.v2ex.com/t/901263#r_12442916) | 240 |
136 | | [https://www.v2ex.com/t/749163#r_10129442](https://www.v2ex.com/t/749163#r_10129442) | 217 |
137 | | [https://www.v2ex.com/t/877829#r_12070911](https://www.v2ex.com/t/877829#r_12070911) | 216 |
138 |
139 | ### Most Upvoted Posts
140 |
141 | | Post Link | Title | Votes |
142 | | :--- | :--- | :--- |
143 | | [https://www.v2ex.com/t/110327](https://www.v2ex.com/t/110327) | UP n DOWN vote in V2EX | 321 |
144 | | [https://www.v2ex.com/t/295433](https://www.v2ex.com/t/295433) | Snipaste - 开发了三年的截图工具,但不只是截图 | 274 |
145 | | [https://www.v2ex.com/t/462641](https://www.v2ex.com/t/462641) | 在 D 版发过了,不过因为不少朋友看不到 D 版,我就放在这里吧,说说我最近做的这个 Project | 200 |
146 | | [https://www.v2ex.com/t/658387](https://www.v2ex.com/t/658387) | 剽窃别人成果的人一直有,不过今天遇到了格外厉害的 | 179 |
147 | | [https://www.v2ex.com/t/745030](https://www.v2ex.com/t/745030) | QQ 正在尝试读取你的浏览记录 | 177 |
148 | | [https://www.v2ex.com/t/689296](https://www.v2ex.com/t/689296) | 早上还在睡觉,自如管家进了我卧室... | 145 |
149 | | [https://www.v2ex.com/t/814025](https://www.v2ex.com/t/814025) | 分享一张我精心修改调整的 M42 猎户座大星云(Orion Nebula)壁纸。用了非常多年,首次分享出来,能和 MBP 2021 新屏幕和谐相处。 | 136 |
150 | | [https://www.v2ex.com/t/511827](https://www.v2ex.com/t/511827) | 23 岁,得了癌症,人生无望 | 129 |
151 | | [https://www.v2ex.com/t/427796](https://www.v2ex.com/t/427796) | 隔壁组的小兵集体情愿 要炒了 team leader | 123 |
152 | | [https://www.v2ex.com/t/534800](https://www.v2ex.com/t/534800) | 使用 Github 账号登录 黑客派 之后, Github 自动 follow | 112 |
153 |
154 | ### Most Viewed Posts
155 |
156 | | Post Link | Title | Views |
157 | | :--- | :--- | :--- |
158 | | [https://www.v2ex.com/t/510849](https://www.v2ex.com/t/510849) | chrome 签到插件 \[魂签\] 更新啦 | 39,452,510 |
159 | | [https://www.v2ex.com/t/706595](https://www.v2ex.com/t/706595) | 迫于搬家 ··· 继续出 700 本书\~ 四折 非技术书还剩 270 多本· | 2,406,584 |
160 | | [https://www.v2ex.com/t/718092](https://www.v2ex.com/t/718092) | 使用 GitHub 的流量数据为仓库创建访问数和克隆数的徽章 | 1,928,267 |
161 | | [https://www.v2ex.com/t/861832](https://www.v2ex.com/t/861832) | 帮朋友推销下福建古田水蜜桃,欢迎各位购买啊 | 635,832 |
162 | | [https://www.v2ex.com/t/176916](https://www.v2ex.com/t/176916) | 王垠这是在想不开吗 | 329,617 |
163 | | [https://www.v2ex.com/t/303889](https://www.v2ex.com/t/303889) | 关于 V2EX 提供的 Android Captive Portal Server 地址的更新 | 295,681 |
164 | | [https://www.v2ex.com/t/206766](https://www.v2ex.com/t/206766) | 如何找到一些有趣的 telegram 群组? | 294,553 |
165 | | [https://www.v2ex.com/t/265474](https://www.v2ex.com/t/265474) | ngrok 客户端和服务端如何不验证证书 | 271,244 |
166 | | [https://www.v2ex.com/t/308080](https://www.v2ex.com/t/308080) | Element UI——一套基于 Vue 2.0 的桌面端组件库 | 221,099 |
167 | | [https://www.v2ex.com/t/295433](https://www.v2ex.com/t/295433) | Snipaste - 开发了三年的截图工具,但不只是截图 | 210,675 |
168 |
169 | ### Users with Most Comments
170 |
171 | | User | Comment Count |
172 | | :--- | :--- |
173 | | [Livid](https://www.v2ex.com/member/Livid) | 19559 |
174 | | [loading](https://www.v2ex.com/member/loading) | 19190 |
175 | | [murmur](https://www.v2ex.com/member/murmur) | 17189 |
176 | | [msg7086](https://www.v2ex.com/member/msg7086) | 16768 |
177 | | [Tink](https://www.v2ex.com/member/Tink) | 15919 |
178 | | [imn1](https://www.v2ex.com/member/imn1) | 11468 |
179 | | [20015jjw](https://www.v2ex.com/member/20015jjw) | 10293 |
180 | | [x86](https://www.v2ex.com/member/x86) | 9704 |
181 | | [opengps](https://www.v2ex.com/member/opengps) | 9694 |
182 | | [est](https://www.v2ex.com/member/est) | 9532 |
183 |
184 | ### Users with Most Posts
185 |
186 | | User | Topic Count |
187 | | :--- | :--- |
188 | | [Livid](https://www.v2ex.com/member/Livid) | 6974 |
189 | | [icedx](https://www.v2ex.com/member/icedx) | 722 |
190 | | [ccming](https://www.v2ex.com/member/ccming) | 646 |
191 | | [2232588429](https://www.v2ex.com/member/2232588429) | 614 |
192 | | [razios](https://www.v2ex.com/member/razios) | 611 |
193 | | [coolair](https://www.v2ex.com/member/coolair) | 604 |
194 | | [Kai](https://www.v2ex.com/member/Kai) | 599 |
195 | | [est](https://www.v2ex.com/member/est) | 571 |
196 | | [Newyorkcity](https://www.v2ex.com/member/Newyorkcity) | 553 |
197 | | [WildCat](https://www.v2ex.com/member/WildCat) | 544 |
198 |
199 | ## Curves
200 |
201 | For detailed data, I recommend downloading the database.
202 |
203 | ### Line Chart for New Users per Month
204 |
205 | 
206 |
207 | ### Line Chart for New Posts per Month
208 |
209 | 
210 |
211 | ### Line Chart for Comment Count
212 |
213 | 
214 |
215 | ### Most Frequently Used Nodes
216 |
217 | | Node | Count |
218 | | :--- | :--- |
219 | | [qna](https://www.v2ex.com/go/qna) | 188011 |
220 | | [all4all](https://www.v2ex.com/go/all4all) | 103254 |
221 | | [programmer](https://www.v2ex.com/go/programmer) | 51706 |
222 | | [jobs](https://www.v2ex.com/go/jobs) | 49959 |
223 | | [share](https://www.v2ex.com/go/share) | 35942 |
224 | | [apple](https://www.v2ex.com/go/apple) | 20713 |
225 | | [macos](https://www.v2ex.com/go/macos) | 19040 |
226 | | [create](https://www.v2ex.com/go/create) | 18685 |
227 | | [python](https://www.v2ex.com/go/python) | 14124 |
228 | | [career](https://www.v2ex.com/go/career) | 13170 |
229 |
230 | ### Most Frequently Used Tags (auto-generated by V2EX)
231 |
232 | | Tag | Count |
233 | | :--- | :--- |
234 | | [开发](https://www.v2ex.com/tag/%E5%BC%80%E5%8F%91) | 16414 |
235 | | [App](https://www.v2ex.com/tag/App) | 13240 |
236 | | [Python](https://www.v2ex.com/tag/Python) | 13016 |
237 | | [Mac](https://www.v2ex.com/tag/Mac) | 12931 |
238 | | [Java](https://www.v2ex.com/tag/Java) | 10984 |
239 | | [Pro](https://www.v2ex.com/tag/Pro) | 9375 |
240 | | [iOS](https://www.v2ex.com/tag/iOS) | 9216 |
241 | | [微信](https://www.v2ex.com/tag/%E5%BE%AE%E4%BF%A1) | 8922 |
242 | | [V2EX](https://www.v2ex.com/tag/V2EX) | 8426 |
243 | | [域名](https://www.v2ex.com/tag/%E5%9F%9F%E5%90%8D) | 8424 |
244 |
--------------------------------------------------------------------------------
/analysis/v2ex-analysis/pnpm-lock.yaml:
--------------------------------------------------------------------------------
1 | lockfileVersion: '6.0'
2 |
3 | settings:
4 | autoInstallPeers: true
5 | excludeLinksFromLockfile: false
6 |
7 | dependencies:
8 | plotly.js-dist-min:
9 | specifier: ^2.24.3
10 | version: 2.24.3
11 | vue:
12 | specifier: ^3.3.4
13 | version: 3.3.4
14 |
15 | devDependencies:
16 | '@tsconfig/node18':
17 | specifier: ^2.0.1
18 | version: 2.0.1
19 | '@types/node':
20 | specifier: ^18.16.17
21 | version: 18.16.17
22 | '@vitejs/plugin-vue':
23 | specifier: ^4.2.3
24 | version: 4.2.3(vite@4.3.9)(vue@3.3.4)
25 | '@vue/tsconfig':
26 | specifier: ^0.4.0
27 | version: 0.4.0
28 | autoprefixer:
29 | specifier: ^10.4.14
30 | version: 10.4.14(postcss@8.4.25)
31 | daisyui:
32 | specifier: ^3.2.1
33 | version: 3.2.1
34 | npm-run-all:
35 | specifier: ^4.1.5
36 | version: 4.1.5
37 | postcss:
38 | specifier: ^8.4.25
39 | version: 8.4.25
40 | tailwindcss:
41 | specifier: ^3.3.2
42 | version: 3.3.2
43 | typescript:
44 | specifier: ~5.0.4
45 | version: 5.0.4
46 | vite:
47 | specifier: ^4.3.9
48 | version: 4.3.9(@types/node@18.16.17)
49 | vue-tsc:
50 | specifier: ^1.6.5
51 | version: 1.6.5(typescript@5.0.4)
52 |
53 | packages:
54 |
55 | /@alloc/quick-lru@5.2.0:
56 | resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
57 | engines: {node: '>=10'}
58 | dev: true
59 |
60 | /@babel/helper-string-parser@7.22.5:
61 | resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==}
62 | engines: {node: '>=6.9.0'}
63 |
64 | /@babel/helper-validator-identifier@7.22.5:
65 | resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==}
66 | engines: {node: '>=6.9.0'}
67 |
68 | /@babel/parser@7.22.7:
69 | resolution: {integrity: sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==}
70 | engines: {node: '>=6.0.0'}
71 | hasBin: true
72 | dependencies:
73 | '@babel/types': 7.22.5
74 |
75 | /@babel/types@7.22.5:
76 | resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==}
77 | engines: {node: '>=6.9.0'}
78 | dependencies:
79 | '@babel/helper-string-parser': 7.22.5
80 | '@babel/helper-validator-identifier': 7.22.5
81 | to-fast-properties: 2.0.0
82 |
83 | /@esbuild/android-arm64@0.17.19:
84 | resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==}
85 | engines: {node: '>=12'}
86 | cpu: [arm64]
87 | os: [android]
88 | requiresBuild: true
89 | dev: true
90 | optional: true
91 |
92 | /@esbuild/android-arm@0.17.19:
93 | resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==}
94 | engines: {node: '>=12'}
95 | cpu: [arm]
96 | os: [android]
97 | requiresBuild: true
98 | dev: true
99 | optional: true
100 |
101 | /@esbuild/android-x64@0.17.19:
102 | resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==}
103 | engines: {node: '>=12'}
104 | cpu: [x64]
105 | os: [android]
106 | requiresBuild: true
107 | dev: true
108 | optional: true
109 |
110 | /@esbuild/darwin-arm64@0.17.19:
111 | resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==}
112 | engines: {node: '>=12'}
113 | cpu: [arm64]
114 | os: [darwin]
115 | requiresBuild: true
116 | dev: true
117 | optional: true
118 |
119 | /@esbuild/darwin-x64@0.17.19:
120 | resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==}
121 | engines: {node: '>=12'}
122 | cpu: [x64]
123 | os: [darwin]
124 | requiresBuild: true
125 | dev: true
126 | optional: true
127 |
128 | /@esbuild/freebsd-arm64@0.17.19:
129 | resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==}
130 | engines: {node: '>=12'}
131 | cpu: [arm64]
132 | os: [freebsd]
133 | requiresBuild: true
134 | dev: true
135 | optional: true
136 |
137 | /@esbuild/freebsd-x64@0.17.19:
138 | resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==}
139 | engines: {node: '>=12'}
140 | cpu: [x64]
141 | os: [freebsd]
142 | requiresBuild: true
143 | dev: true
144 | optional: true
145 |
146 | /@esbuild/linux-arm64@0.17.19:
147 | resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==}
148 | engines: {node: '>=12'}
149 | cpu: [arm64]
150 | os: [linux]
151 | requiresBuild: true
152 | dev: true
153 | optional: true
154 |
155 | /@esbuild/linux-arm@0.17.19:
156 | resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==}
157 | engines: {node: '>=12'}
158 | cpu: [arm]
159 | os: [linux]
160 | requiresBuild: true
161 | dev: true
162 | optional: true
163 |
164 | /@esbuild/linux-ia32@0.17.19:
165 | resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==}
166 | engines: {node: '>=12'}
167 | cpu: [ia32]
168 | os: [linux]
169 | requiresBuild: true
170 | dev: true
171 | optional: true
172 |
173 | /@esbuild/linux-loong64@0.17.19:
174 | resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==}
175 | engines: {node: '>=12'}
176 | cpu: [loong64]
177 | os: [linux]
178 | requiresBuild: true
179 | dev: true
180 | optional: true
181 |
182 | /@esbuild/linux-mips64el@0.17.19:
183 | resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==}
184 | engines: {node: '>=12'}
185 | cpu: [mips64el]
186 | os: [linux]
187 | requiresBuild: true
188 | dev: true
189 | optional: true
190 |
191 | /@esbuild/linux-ppc64@0.17.19:
192 | resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==}
193 | engines: {node: '>=12'}
194 | cpu: [ppc64]
195 | os: [linux]
196 | requiresBuild: true
197 | dev: true
198 | optional: true
199 |
200 | /@esbuild/linux-riscv64@0.17.19:
201 | resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==}
202 | engines: {node: '>=12'}
203 | cpu: [riscv64]
204 | os: [linux]
205 | requiresBuild: true
206 | dev: true
207 | optional: true
208 |
209 | /@esbuild/linux-s390x@0.17.19:
210 | resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==}
211 | engines: {node: '>=12'}
212 | cpu: [s390x]
213 | os: [linux]
214 | requiresBuild: true
215 | dev: true
216 | optional: true
217 |
218 | /@esbuild/linux-x64@0.17.19:
219 | resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==}
220 | engines: {node: '>=12'}
221 | cpu: [x64]
222 | os: [linux]
223 | requiresBuild: true
224 | dev: true
225 | optional: true
226 |
227 | /@esbuild/netbsd-x64@0.17.19:
228 | resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==}
229 | engines: {node: '>=12'}
230 | cpu: [x64]
231 | os: [netbsd]
232 | requiresBuild: true
233 | dev: true
234 | optional: true
235 |
236 | /@esbuild/openbsd-x64@0.17.19:
237 | resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==}
238 | engines: {node: '>=12'}
239 | cpu: [x64]
240 | os: [openbsd]
241 | requiresBuild: true
242 | dev: true
243 | optional: true
244 |
245 | /@esbuild/sunos-x64@0.17.19:
246 | resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==}
247 | engines: {node: '>=12'}
248 | cpu: [x64]
249 | os: [sunos]
250 | requiresBuild: true
251 | dev: true
252 | optional: true
253 |
254 | /@esbuild/win32-arm64@0.17.19:
255 | resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==}
256 | engines: {node: '>=12'}
257 | cpu: [arm64]
258 | os: [win32]
259 | requiresBuild: true
260 | dev: true
261 | optional: true
262 |
263 | /@esbuild/win32-ia32@0.17.19:
264 | resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==}
265 | engines: {node: '>=12'}
266 | cpu: [ia32]
267 | os: [win32]
268 | requiresBuild: true
269 | dev: true
270 | optional: true
271 |
272 | /@esbuild/win32-x64@0.17.19:
273 | resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==}
274 | engines: {node: '>=12'}
275 | cpu: [x64]
276 | os: [win32]
277 | requiresBuild: true
278 | dev: true
279 | optional: true
280 |
281 | /@jridgewell/gen-mapping@0.3.3:
282 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
283 | engines: {node: '>=6.0.0'}
284 | dependencies:
285 | '@jridgewell/set-array': 1.1.2
286 | '@jridgewell/sourcemap-codec': 1.4.15
287 | '@jridgewell/trace-mapping': 0.3.18
288 | dev: true
289 |
290 | /@jridgewell/resolve-uri@3.1.0:
291 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==}
292 | engines: {node: '>=6.0.0'}
293 | dev: true
294 |
295 | /@jridgewell/set-array@1.1.2:
296 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
297 | engines: {node: '>=6.0.0'}
298 | dev: true
299 |
300 | /@jridgewell/sourcemap-codec@1.4.14:
301 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==}
302 | dev: true
303 |
304 | /@jridgewell/sourcemap-codec@1.4.15:
305 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
306 |
307 | /@jridgewell/trace-mapping@0.3.18:
308 | resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==}
309 | dependencies:
310 | '@jridgewell/resolve-uri': 3.1.0
311 | '@jridgewell/sourcemap-codec': 1.4.14
312 | dev: true
313 |
314 | /@nodelib/fs.scandir@2.1.5:
315 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
316 | engines: {node: '>= 8'}
317 | dependencies:
318 | '@nodelib/fs.stat': 2.0.5
319 | run-parallel: 1.2.0
320 | dev: true
321 |
322 | /@nodelib/fs.stat@2.0.5:
323 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
324 | engines: {node: '>= 8'}
325 | dev: true
326 |
327 | /@nodelib/fs.walk@1.2.8:
328 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
329 | engines: {node: '>= 8'}
330 | dependencies:
331 | '@nodelib/fs.scandir': 2.1.5
332 | fastq: 1.15.0
333 | dev: true
334 |
335 | /@tsconfig/node18@2.0.1:
336 | resolution: {integrity: sha512-UqdfvuJK0SArA2CxhKWwwAWfnVSXiYe63bVpMutc27vpngCntGUZQETO24pEJ46zU6XM+7SpqYoMgcO3bM11Ew==}
337 | dev: true
338 |
339 | /@types/node@18.16.17:
340 | resolution: {integrity: sha512-QAkjjRA1N7gPJeAP4WLXZtYv6+eMXFNviqktCDt4GLcmCugMr5BcRHfkOjCQzvCsnMp+L79a54zBkbw356xv9Q==}
341 | dev: true
342 |
343 | /@vitejs/plugin-vue@4.2.3(vite@4.3.9)(vue@3.3.4):
344 | resolution: {integrity: sha512-R6JDUfiZbJA9cMiguQ7jxALsgiprjBeHL5ikpXfJCH62pPHtI+JdJ5xWj6Ev73yXSlYl86+blXn1kZHQ7uElxw==}
345 | engines: {node: ^14.18.0 || >=16.0.0}
346 | peerDependencies:
347 | vite: ^4.0.0
348 | vue: ^3.2.25
349 | dependencies:
350 | vite: 4.3.9(@types/node@18.16.17)
351 | vue: 3.3.4
352 | dev: true
353 |
354 | /@volar/language-core@1.4.1:
355 | resolution: {integrity: sha512-EIY+Swv+TjsWpxOxujjMf1ZXqOjg9MT2VMXZ+1dKva0wD8W0L6EtptFFcCJdBbcKmGMFkr57Qzz9VNMWhs3jXQ==}
356 | dependencies:
357 | '@volar/source-map': 1.4.1
358 | dev: true
359 |
360 | /@volar/source-map@1.4.1:
361 | resolution: {integrity: sha512-bZ46ad72dsbzuOWPUtJjBXkzSQzzSejuR3CT81+GvTEI2E994D8JPXzM3tl98zyCNnjgs4OkRyliImL1dvJ5BA==}
362 | dependencies:
363 | muggle-string: 0.2.2
364 | dev: true
365 |
366 | /@volar/typescript@1.4.1-patch.2(typescript@5.0.4):
367 | resolution: {integrity: sha512-lPFYaGt8OdMEzNGJJChF40uYqMO4Z/7Q9fHPQC/NRVtht43KotSXLrkPandVVMf9aPbiJ059eAT+fwHGX16k4w==}
368 | peerDependencies:
369 | typescript: '*'
370 | dependencies:
371 | '@volar/language-core': 1.4.1
372 | typescript: 5.0.4
373 | dev: true
374 |
375 | /@volar/vue-language-core@1.6.5:
376 | resolution: {integrity: sha512-IF2b6hW4QAxfsLd5mePmLgtkXzNi+YnH6ltCd80gb7+cbdpFMjM1I+w+nSg2kfBTyfu+W8useCZvW89kPTBpzg==}
377 | dependencies:
378 | '@volar/language-core': 1.4.1
379 | '@volar/source-map': 1.4.1
380 | '@vue/compiler-dom': 3.3.4
381 | '@vue/compiler-sfc': 3.3.4
382 | '@vue/reactivity': 3.3.4
383 | '@vue/shared': 3.3.4
384 | minimatch: 9.0.3
385 | muggle-string: 0.2.2
386 | vue-template-compiler: 2.7.14
387 | dev: true
388 |
389 | /@volar/vue-typescript@1.6.5(typescript@5.0.4):
390 | resolution: {integrity: sha512-er9rVClS4PHztMUmtPMDTl+7c7JyrxweKSAEe/o/Noeq2bQx6v3/jZHVHBe8ZNUti5ubJL/+Tg8L3bzmlalV8A==}
391 | peerDependencies:
392 | typescript: '*'
393 | dependencies:
394 | '@volar/typescript': 1.4.1-patch.2(typescript@5.0.4)
395 | '@volar/vue-language-core': 1.6.5
396 | typescript: 5.0.4
397 | dev: true
398 |
399 | /@vue/compiler-core@3.3.4:
400 | resolution: {integrity: sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==}
401 | dependencies:
402 | '@babel/parser': 7.22.7
403 | '@vue/shared': 3.3.4
404 | estree-walker: 2.0.2
405 | source-map-js: 1.0.2
406 |
407 | /@vue/compiler-dom@3.3.4:
408 | resolution: {integrity: sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==}
409 | dependencies:
410 | '@vue/compiler-core': 3.3.4
411 | '@vue/shared': 3.3.4
412 |
413 | /@vue/compiler-sfc@3.3.4:
414 | resolution: {integrity: sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==}
415 | dependencies:
416 | '@babel/parser': 7.22.7
417 | '@vue/compiler-core': 3.3.4
418 | '@vue/compiler-dom': 3.3.4
419 | '@vue/compiler-ssr': 3.3.4
420 | '@vue/reactivity-transform': 3.3.4
421 | '@vue/shared': 3.3.4
422 | estree-walker: 2.0.2
423 | magic-string: 0.30.1
424 | postcss: 8.4.25
425 | source-map-js: 1.0.2
426 |
427 | /@vue/compiler-ssr@3.3.4:
428 | resolution: {integrity: sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==}
429 | dependencies:
430 | '@vue/compiler-dom': 3.3.4
431 | '@vue/shared': 3.3.4
432 |
433 | /@vue/reactivity-transform@3.3.4:
434 | resolution: {integrity: sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==}
435 | dependencies:
436 | '@babel/parser': 7.22.7
437 | '@vue/compiler-core': 3.3.4
438 | '@vue/shared': 3.3.4
439 | estree-walker: 2.0.2
440 | magic-string: 0.30.1
441 |
442 | /@vue/reactivity@3.3.4:
443 | resolution: {integrity: sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==}
444 | dependencies:
445 | '@vue/shared': 3.3.4
446 |
447 | /@vue/runtime-core@3.3.4:
448 | resolution: {integrity: sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==}
449 | dependencies:
450 | '@vue/reactivity': 3.3.4
451 | '@vue/shared': 3.3.4
452 |
453 | /@vue/runtime-dom@3.3.4:
454 | resolution: {integrity: sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==}
455 | dependencies:
456 | '@vue/runtime-core': 3.3.4
457 | '@vue/shared': 3.3.4
458 | csstype: 3.1.2
459 |
460 | /@vue/server-renderer@3.3.4(vue@3.3.4):
461 | resolution: {integrity: sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==}
462 | peerDependencies:
463 | vue: 3.3.4
464 | dependencies:
465 | '@vue/compiler-ssr': 3.3.4
466 | '@vue/shared': 3.3.4
467 | vue: 3.3.4
468 |
469 | /@vue/shared@3.3.4:
470 | resolution: {integrity: sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==}
471 |
472 | /@vue/tsconfig@0.4.0:
473 | resolution: {integrity: sha512-CPuIReonid9+zOG/CGTT05FXrPYATEqoDGNrEaqS4hwcw5BUNM2FguC0mOwJD4Jr16UpRVl9N0pY3P+srIbqmg==}
474 | dev: true
475 |
476 | /ansi-styles@3.2.1:
477 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
478 | engines: {node: '>=4'}
479 | dependencies:
480 | color-convert: 1.9.3
481 | dev: true
482 |
483 | /any-promise@1.3.0:
484 | resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
485 | dev: true
486 |
487 | /anymatch@3.1.3:
488 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
489 | engines: {node: '>= 8'}
490 | dependencies:
491 | normalize-path: 3.0.0
492 | picomatch: 2.3.1
493 | dev: true
494 |
495 | /arg@5.0.2:
496 | resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
497 | dev: true
498 |
499 | /array-buffer-byte-length@1.0.0:
500 | resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==}
501 | dependencies:
502 | call-bind: 1.0.2
503 | is-array-buffer: 3.0.2
504 | dev: true
505 |
506 | /autoprefixer@10.4.14(postcss@8.4.25):
507 | resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==}
508 | engines: {node: ^10 || ^12 || >=14}
509 | hasBin: true
510 | peerDependencies:
511 | postcss: ^8.1.0
512 | dependencies:
513 | browserslist: 4.21.9
514 | caniuse-lite: 1.0.30001514
515 | fraction.js: 4.2.0
516 | normalize-range: 0.1.2
517 | picocolors: 1.0.0
518 | postcss: 8.4.25
519 | postcss-value-parser: 4.2.0
520 | dev: true
521 |
522 | /available-typed-arrays@1.0.5:
523 | resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==}
524 | engines: {node: '>= 0.4'}
525 | dev: true
526 |
527 | /balanced-match@1.0.2:
528 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
529 | dev: true
530 |
531 | /binary-extensions@2.2.0:
532 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
533 | engines: {node: '>=8'}
534 | dev: true
535 |
536 | /brace-expansion@1.1.11:
537 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
538 | dependencies:
539 | balanced-match: 1.0.2
540 | concat-map: 0.0.1
541 | dev: true
542 |
543 | /brace-expansion@2.0.1:
544 | resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==}
545 | dependencies:
546 | balanced-match: 1.0.2
547 | dev: true
548 |
549 | /braces@3.0.2:
550 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
551 | engines: {node: '>=8'}
552 | dependencies:
553 | fill-range: 7.0.1
554 | dev: true
555 |
556 | /browserslist@4.21.9:
557 | resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==}
558 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
559 | hasBin: true
560 | dependencies:
561 | caniuse-lite: 1.0.30001514
562 | electron-to-chromium: 1.4.454
563 | node-releases: 2.0.13
564 | update-browserslist-db: 1.0.11(browserslist@4.21.9)
565 | dev: true
566 |
567 | /call-bind@1.0.2:
568 | resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
569 | dependencies:
570 | function-bind: 1.1.1
571 | get-intrinsic: 1.2.1
572 | dev: true
573 |
574 | /camelcase-css@2.0.1:
575 | resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
576 | engines: {node: '>= 6'}
577 | dev: true
578 |
579 | /caniuse-lite@1.0.30001514:
580 | resolution: {integrity: sha512-ENcIpYBmwAAOm/V2cXgM7rZUrKKaqisZl4ZAI520FIkqGXUxJjmaIssbRW5HVVR5tyV6ygTLIm15aU8LUmQSaQ==}
581 | dev: true
582 |
583 | /chalk@2.4.2:
584 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
585 | engines: {node: '>=4'}
586 | dependencies:
587 | ansi-styles: 3.2.1
588 | escape-string-regexp: 1.0.5
589 | supports-color: 5.5.0
590 | dev: true
591 |
592 | /chokidar@3.5.3:
593 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
594 | engines: {node: '>= 8.10.0'}
595 | dependencies:
596 | anymatch: 3.1.3
597 | braces: 3.0.2
598 | glob-parent: 5.1.2
599 | is-binary-path: 2.1.0
600 | is-glob: 4.0.3
601 | normalize-path: 3.0.0
602 | readdirp: 3.6.0
603 | optionalDependencies:
604 | fsevents: 2.3.2
605 | dev: true
606 |
607 | /color-convert@1.9.3:
608 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
609 | dependencies:
610 | color-name: 1.1.3
611 | dev: true
612 |
613 | /color-name@1.1.3:
614 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
615 | dev: true
616 |
617 | /colord@2.9.3:
618 | resolution: {integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==}
619 | dev: true
620 |
621 | /commander@4.1.1:
622 | resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
623 | engines: {node: '>= 6'}
624 | dev: true
625 |
626 | /concat-map@0.0.1:
627 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
628 | dev: true
629 |
630 | /cross-spawn@6.0.5:
631 | resolution: {integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==}
632 | engines: {node: '>=4.8'}
633 | dependencies:
634 | nice-try: 1.0.5
635 | path-key: 2.0.1
636 | semver: 5.7.1
637 | shebang-command: 1.2.0
638 | which: 1.3.1
639 | dev: true
640 |
641 | /css-selector-tokenizer@0.8.0:
642 | resolution: {integrity: sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg==}
643 | dependencies:
644 | cssesc: 3.0.0
645 | fastparse: 1.1.2
646 | dev: true
647 |
648 | /cssesc@3.0.0:
649 | resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
650 | engines: {node: '>=4'}
651 | hasBin: true
652 | dev: true
653 |
654 | /csstype@3.1.2:
655 | resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
656 |
657 | /daisyui@3.2.1:
658 | resolution: {integrity: sha512-gIqE6wiqoJt9G8+n3R/SwLeUnpNCE2eDhT73rP0yZYVaM7o6zVcakBH3aEW5RGpx3UkonPiLuvcgxRcb2lE8TA==}
659 | engines: {node: '>=16.9.0'}
660 | dependencies:
661 | colord: 2.9.3
662 | css-selector-tokenizer: 0.8.0
663 | postcss: 8.4.25
664 | postcss-js: 4.0.1(postcss@8.4.25)
665 | tailwindcss: 3.3.2
666 | transitivePeerDependencies:
667 | - ts-node
668 | dev: true
669 |
670 | /de-indent@1.0.2:
671 | resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==}
672 | dev: true
673 |
674 | /define-properties@1.2.0:
675 | resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==}
676 | engines: {node: '>= 0.4'}
677 | dependencies:
678 | has-property-descriptors: 1.0.0
679 | object-keys: 1.1.1
680 | dev: true
681 |
682 | /didyoumean@1.2.2:
683 | resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
684 | dev: true
685 |
686 | /dlv@1.1.3:
687 | resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
688 | dev: true
689 |
690 | /electron-to-chromium@1.4.454:
691 | resolution: {integrity: sha512-pmf1rbAStw8UEQ0sr2cdJtWl48ZMuPD9Sto8HVQOq9vx9j2WgDEN6lYoaqFvqEHYOmGA9oRGn7LqWI9ta0YugQ==}
692 | dev: true
693 |
694 | /error-ex@1.3.2:
695 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
696 | dependencies:
697 | is-arrayish: 0.2.1
698 | dev: true
699 |
700 | /es-abstract@1.21.2:
701 | resolution: {integrity: sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==}
702 | engines: {node: '>= 0.4'}
703 | dependencies:
704 | array-buffer-byte-length: 1.0.0
705 | available-typed-arrays: 1.0.5
706 | call-bind: 1.0.2
707 | es-set-tostringtag: 2.0.1
708 | es-to-primitive: 1.2.1
709 | function.prototype.name: 1.1.5
710 | get-intrinsic: 1.2.1
711 | get-symbol-description: 1.0.0
712 | globalthis: 1.0.3
713 | gopd: 1.0.1
714 | has: 1.0.3
715 | has-property-descriptors: 1.0.0
716 | has-proto: 1.0.1
717 | has-symbols: 1.0.3
718 | internal-slot: 1.0.5
719 | is-array-buffer: 3.0.2
720 | is-callable: 1.2.7
721 | is-negative-zero: 2.0.2
722 | is-regex: 1.1.4
723 | is-shared-array-buffer: 1.0.2
724 | is-string: 1.0.7
725 | is-typed-array: 1.1.10
726 | is-weakref: 1.0.2
727 | object-inspect: 1.12.3
728 | object-keys: 1.1.1
729 | object.assign: 4.1.4
730 | regexp.prototype.flags: 1.5.0
731 | safe-regex-test: 1.0.0
732 | string.prototype.trim: 1.2.7
733 | string.prototype.trimend: 1.0.6
734 | string.prototype.trimstart: 1.0.6
735 | typed-array-length: 1.0.4
736 | unbox-primitive: 1.0.2
737 | which-typed-array: 1.1.9
738 | dev: true
739 |
740 | /es-set-tostringtag@2.0.1:
741 | resolution: {integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==}
742 | engines: {node: '>= 0.4'}
743 | dependencies:
744 | get-intrinsic: 1.2.1
745 | has: 1.0.3
746 | has-tostringtag: 1.0.0
747 | dev: true
748 |
749 | /es-to-primitive@1.2.1:
750 | resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==}
751 | engines: {node: '>= 0.4'}
752 | dependencies:
753 | is-callable: 1.2.7
754 | is-date-object: 1.0.5
755 | is-symbol: 1.0.4
756 | dev: true
757 |
758 | /esbuild@0.17.19:
759 | resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==}
760 | engines: {node: '>=12'}
761 | hasBin: true
762 | requiresBuild: true
763 | optionalDependencies:
764 | '@esbuild/android-arm': 0.17.19
765 | '@esbuild/android-arm64': 0.17.19
766 | '@esbuild/android-x64': 0.17.19
767 | '@esbuild/darwin-arm64': 0.17.19
768 | '@esbuild/darwin-x64': 0.17.19
769 | '@esbuild/freebsd-arm64': 0.17.19
770 | '@esbuild/freebsd-x64': 0.17.19
771 | '@esbuild/linux-arm': 0.17.19
772 | '@esbuild/linux-arm64': 0.17.19
773 | '@esbuild/linux-ia32': 0.17.19
774 | '@esbuild/linux-loong64': 0.17.19
775 | '@esbuild/linux-mips64el': 0.17.19
776 | '@esbuild/linux-ppc64': 0.17.19
777 | '@esbuild/linux-riscv64': 0.17.19
778 | '@esbuild/linux-s390x': 0.17.19
779 | '@esbuild/linux-x64': 0.17.19
780 | '@esbuild/netbsd-x64': 0.17.19
781 | '@esbuild/openbsd-x64': 0.17.19
782 | '@esbuild/sunos-x64': 0.17.19
783 | '@esbuild/win32-arm64': 0.17.19
784 | '@esbuild/win32-ia32': 0.17.19
785 | '@esbuild/win32-x64': 0.17.19
786 | dev: true
787 |
788 | /escalade@3.1.1:
789 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
790 | engines: {node: '>=6'}
791 | dev: true
792 |
793 | /escape-string-regexp@1.0.5:
794 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
795 | engines: {node: '>=0.8.0'}
796 | dev: true
797 |
798 | /estree-walker@2.0.2:
799 | resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
800 |
801 | /fast-glob@3.3.0:
802 | resolution: {integrity: sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==}
803 | engines: {node: '>=8.6.0'}
804 | dependencies:
805 | '@nodelib/fs.stat': 2.0.5
806 | '@nodelib/fs.walk': 1.2.8
807 | glob-parent: 5.1.2
808 | merge2: 1.4.1
809 | micromatch: 4.0.5
810 | dev: true
811 |
812 | /fastparse@1.1.2:
813 | resolution: {integrity: sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==}
814 | dev: true
815 |
816 | /fastq@1.15.0:
817 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
818 | dependencies:
819 | reusify: 1.0.4
820 | dev: true
821 |
822 | /fill-range@7.0.1:
823 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
824 | engines: {node: '>=8'}
825 | dependencies:
826 | to-regex-range: 5.0.1
827 | dev: true
828 |
829 | /for-each@0.3.3:
830 | resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==}
831 | dependencies:
832 | is-callable: 1.2.7
833 | dev: true
834 |
835 | /fraction.js@4.2.0:
836 | resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==}
837 | dev: true
838 |
839 | /fs.realpath@1.0.0:
840 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
841 | dev: true
842 |
843 | /fsevents@2.3.2:
844 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
845 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
846 | os: [darwin]
847 | requiresBuild: true
848 | dev: true
849 | optional: true
850 |
851 | /function-bind@1.1.1:
852 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
853 | dev: true
854 |
855 | /function.prototype.name@1.1.5:
856 | resolution: {integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==}
857 | engines: {node: '>= 0.4'}
858 | dependencies:
859 | call-bind: 1.0.2
860 | define-properties: 1.2.0
861 | es-abstract: 1.21.2
862 | functions-have-names: 1.2.3
863 | dev: true
864 |
865 | /functions-have-names@1.2.3:
866 | resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
867 | dev: true
868 |
869 | /get-intrinsic@1.2.1:
870 | resolution: {integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==}
871 | dependencies:
872 | function-bind: 1.1.1
873 | has: 1.0.3
874 | has-proto: 1.0.1
875 | has-symbols: 1.0.3
876 | dev: true
877 |
878 | /get-symbol-description@1.0.0:
879 | resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==}
880 | engines: {node: '>= 0.4'}
881 | dependencies:
882 | call-bind: 1.0.2
883 | get-intrinsic: 1.2.1
884 | dev: true
885 |
886 | /glob-parent@5.1.2:
887 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
888 | engines: {node: '>= 6'}
889 | dependencies:
890 | is-glob: 4.0.3
891 | dev: true
892 |
893 | /glob-parent@6.0.2:
894 | resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
895 | engines: {node: '>=10.13.0'}
896 | dependencies:
897 | is-glob: 4.0.3
898 | dev: true
899 |
900 | /glob@7.1.6:
901 | resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
902 | dependencies:
903 | fs.realpath: 1.0.0
904 | inflight: 1.0.6
905 | inherits: 2.0.4
906 | minimatch: 3.1.2
907 | once: 1.4.0
908 | path-is-absolute: 1.0.1
909 | dev: true
910 |
911 | /globalthis@1.0.3:
912 | resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==}
913 | engines: {node: '>= 0.4'}
914 | dependencies:
915 | define-properties: 1.2.0
916 | dev: true
917 |
918 | /gopd@1.0.1:
919 | resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==}
920 | dependencies:
921 | get-intrinsic: 1.2.1
922 | dev: true
923 |
924 | /graceful-fs@4.2.11:
925 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
926 | dev: true
927 |
928 | /has-bigints@1.0.2:
929 | resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==}
930 | dev: true
931 |
932 | /has-flag@3.0.0:
933 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
934 | engines: {node: '>=4'}
935 | dev: true
936 |
937 | /has-property-descriptors@1.0.0:
938 | resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
939 | dependencies:
940 | get-intrinsic: 1.2.1
941 | dev: true
942 |
943 | /has-proto@1.0.1:
944 | resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
945 | engines: {node: '>= 0.4'}
946 | dev: true
947 |
948 | /has-symbols@1.0.3:
949 | resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
950 | engines: {node: '>= 0.4'}
951 | dev: true
952 |
953 | /has-tostringtag@1.0.0:
954 | resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
955 | engines: {node: '>= 0.4'}
956 | dependencies:
957 | has-symbols: 1.0.3
958 | dev: true
959 |
960 | /has@1.0.3:
961 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
962 | engines: {node: '>= 0.4.0'}
963 | dependencies:
964 | function-bind: 1.1.1
965 | dev: true
966 |
967 | /he@1.2.0:
968 | resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
969 | hasBin: true
970 | dev: true
971 |
972 | /hosted-git-info@2.8.9:
973 | resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
974 | dev: true
975 |
976 | /inflight@1.0.6:
977 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
978 | dependencies:
979 | once: 1.4.0
980 | wrappy: 1.0.2
981 | dev: true
982 |
983 | /inherits@2.0.4:
984 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
985 | dev: true
986 |
987 | /internal-slot@1.0.5:
988 | resolution: {integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==}
989 | engines: {node: '>= 0.4'}
990 | dependencies:
991 | get-intrinsic: 1.2.1
992 | has: 1.0.3
993 | side-channel: 1.0.4
994 | dev: true
995 |
996 | /is-array-buffer@3.0.2:
997 | resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==}
998 | dependencies:
999 | call-bind: 1.0.2
1000 | get-intrinsic: 1.2.1
1001 | is-typed-array: 1.1.10
1002 | dev: true
1003 |
1004 | /is-arrayish@0.2.1:
1005 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
1006 | dev: true
1007 |
1008 | /is-bigint@1.0.4:
1009 | resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==}
1010 | dependencies:
1011 | has-bigints: 1.0.2
1012 | dev: true
1013 |
1014 | /is-binary-path@2.1.0:
1015 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
1016 | engines: {node: '>=8'}
1017 | dependencies:
1018 | binary-extensions: 2.2.0
1019 | dev: true
1020 |
1021 | /is-boolean-object@1.1.2:
1022 | resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==}
1023 | engines: {node: '>= 0.4'}
1024 | dependencies:
1025 | call-bind: 1.0.2
1026 | has-tostringtag: 1.0.0
1027 | dev: true
1028 |
1029 | /is-callable@1.2.7:
1030 | resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
1031 | engines: {node: '>= 0.4'}
1032 | dev: true
1033 |
1034 | /is-core-module@2.12.1:
1035 | resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==}
1036 | dependencies:
1037 | has: 1.0.3
1038 | dev: true
1039 |
1040 | /is-date-object@1.0.5:
1041 | resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
1042 | engines: {node: '>= 0.4'}
1043 | dependencies:
1044 | has-tostringtag: 1.0.0
1045 | dev: true
1046 |
1047 | /is-extglob@2.1.1:
1048 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
1049 | engines: {node: '>=0.10.0'}
1050 | dev: true
1051 |
1052 | /is-glob@4.0.3:
1053 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
1054 | engines: {node: '>=0.10.0'}
1055 | dependencies:
1056 | is-extglob: 2.1.1
1057 | dev: true
1058 |
1059 | /is-negative-zero@2.0.2:
1060 | resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==}
1061 | engines: {node: '>= 0.4'}
1062 | dev: true
1063 |
1064 | /is-number-object@1.0.7:
1065 | resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==}
1066 | engines: {node: '>= 0.4'}
1067 | dependencies:
1068 | has-tostringtag: 1.0.0
1069 | dev: true
1070 |
1071 | /is-number@7.0.0:
1072 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
1073 | engines: {node: '>=0.12.0'}
1074 | dev: true
1075 |
1076 | /is-regex@1.1.4:
1077 | resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
1078 | engines: {node: '>= 0.4'}
1079 | dependencies:
1080 | call-bind: 1.0.2
1081 | has-tostringtag: 1.0.0
1082 | dev: true
1083 |
1084 | /is-shared-array-buffer@1.0.2:
1085 | resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==}
1086 | dependencies:
1087 | call-bind: 1.0.2
1088 | dev: true
1089 |
1090 | /is-string@1.0.7:
1091 | resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==}
1092 | engines: {node: '>= 0.4'}
1093 | dependencies:
1094 | has-tostringtag: 1.0.0
1095 | dev: true
1096 |
1097 | /is-symbol@1.0.4:
1098 | resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==}
1099 | engines: {node: '>= 0.4'}
1100 | dependencies:
1101 | has-symbols: 1.0.3
1102 | dev: true
1103 |
1104 | /is-typed-array@1.1.10:
1105 | resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==}
1106 | engines: {node: '>= 0.4'}
1107 | dependencies:
1108 | available-typed-arrays: 1.0.5
1109 | call-bind: 1.0.2
1110 | for-each: 0.3.3
1111 | gopd: 1.0.1
1112 | has-tostringtag: 1.0.0
1113 | dev: true
1114 |
1115 | /is-weakref@1.0.2:
1116 | resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==}
1117 | dependencies:
1118 | call-bind: 1.0.2
1119 | dev: true
1120 |
1121 | /isexe@2.0.0:
1122 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
1123 | dev: true
1124 |
1125 | /jiti@1.19.1:
1126 | resolution: {integrity: sha512-oVhqoRDaBXf7sjkll95LHVS6Myyyb1zaunVwk4Z0+WPSW4gjS0pl01zYKHScTuyEhQsFxV5L4DR5r+YqSyqyyg==}
1127 | hasBin: true
1128 | dev: true
1129 |
1130 | /json-parse-better-errors@1.0.2:
1131 | resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==}
1132 | dev: true
1133 |
1134 | /lilconfig@2.1.0:
1135 | resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
1136 | engines: {node: '>=10'}
1137 | dev: true
1138 |
1139 | /lines-and-columns@1.2.4:
1140 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
1141 | dev: true
1142 |
1143 | /load-json-file@4.0.0:
1144 | resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==}
1145 | engines: {node: '>=4'}
1146 | dependencies:
1147 | graceful-fs: 4.2.11
1148 | parse-json: 4.0.0
1149 | pify: 3.0.0
1150 | strip-bom: 3.0.0
1151 | dev: true
1152 |
1153 | /lru-cache@6.0.0:
1154 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
1155 | engines: {node: '>=10'}
1156 | dependencies:
1157 | yallist: 4.0.0
1158 | dev: true
1159 |
1160 | /magic-string@0.30.1:
1161 | resolution: {integrity: sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==}
1162 | engines: {node: '>=12'}
1163 | dependencies:
1164 | '@jridgewell/sourcemap-codec': 1.4.15
1165 |
1166 | /memorystream@0.3.1:
1167 | resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==}
1168 | engines: {node: '>= 0.10.0'}
1169 | dev: true
1170 |
1171 | /merge2@1.4.1:
1172 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
1173 | engines: {node: '>= 8'}
1174 | dev: true
1175 |
1176 | /micromatch@4.0.5:
1177 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
1178 | engines: {node: '>=8.6'}
1179 | dependencies:
1180 | braces: 3.0.2
1181 | picomatch: 2.3.1
1182 | dev: true
1183 |
1184 | /minimatch@3.1.2:
1185 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
1186 | dependencies:
1187 | brace-expansion: 1.1.11
1188 | dev: true
1189 |
1190 | /minimatch@9.0.3:
1191 | resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==}
1192 | engines: {node: '>=16 || 14 >=14.17'}
1193 | dependencies:
1194 | brace-expansion: 2.0.1
1195 | dev: true
1196 |
1197 | /muggle-string@0.2.2:
1198 | resolution: {integrity: sha512-YVE1mIJ4VpUMqZObFndk9CJu6DBJR/GB13p3tXuNbwD4XExaI5EOuRl6BHeIDxIqXZVxSfAC+y6U1Z/IxCfKUg==}
1199 | dev: true
1200 |
1201 | /mz@2.7.0:
1202 | resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
1203 | dependencies:
1204 | any-promise: 1.3.0
1205 | object-assign: 4.1.1
1206 | thenify-all: 1.6.0
1207 | dev: true
1208 |
1209 | /nanoid@3.3.6:
1210 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
1211 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
1212 | hasBin: true
1213 |
1214 | /nice-try@1.0.5:
1215 | resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==}
1216 | dev: true
1217 |
1218 | /node-releases@2.0.13:
1219 | resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==}
1220 | dev: true
1221 |
1222 | /normalize-package-data@2.5.0:
1223 | resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
1224 | dependencies:
1225 | hosted-git-info: 2.8.9
1226 | resolve: 1.22.2
1227 | semver: 5.7.1
1228 | validate-npm-package-license: 3.0.4
1229 | dev: true
1230 |
1231 | /normalize-path@3.0.0:
1232 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
1233 | engines: {node: '>=0.10.0'}
1234 | dev: true
1235 |
1236 | /normalize-range@0.1.2:
1237 | resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
1238 | engines: {node: '>=0.10.0'}
1239 | dev: true
1240 |
1241 | /npm-run-all@4.1.5:
1242 | resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==}
1243 | engines: {node: '>= 4'}
1244 | hasBin: true
1245 | dependencies:
1246 | ansi-styles: 3.2.1
1247 | chalk: 2.4.2
1248 | cross-spawn: 6.0.5
1249 | memorystream: 0.3.1
1250 | minimatch: 3.1.2
1251 | pidtree: 0.3.1
1252 | read-pkg: 3.0.0
1253 | shell-quote: 1.8.1
1254 | string.prototype.padend: 3.1.4
1255 | dev: true
1256 |
1257 | /object-assign@4.1.1:
1258 | resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
1259 | engines: {node: '>=0.10.0'}
1260 | dev: true
1261 |
1262 | /object-hash@3.0.0:
1263 | resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
1264 | engines: {node: '>= 6'}
1265 | dev: true
1266 |
1267 | /object-inspect@1.12.3:
1268 | resolution: {integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==}
1269 | dev: true
1270 |
1271 | /object-keys@1.1.1:
1272 | resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
1273 | engines: {node: '>= 0.4'}
1274 | dev: true
1275 |
1276 | /object.assign@4.1.4:
1277 | resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==}
1278 | engines: {node: '>= 0.4'}
1279 | dependencies:
1280 | call-bind: 1.0.2
1281 | define-properties: 1.2.0
1282 | has-symbols: 1.0.3
1283 | object-keys: 1.1.1
1284 | dev: true
1285 |
1286 | /once@1.4.0:
1287 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
1288 | dependencies:
1289 | wrappy: 1.0.2
1290 | dev: true
1291 |
1292 | /parse-json@4.0.0:
1293 | resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==}
1294 | engines: {node: '>=4'}
1295 | dependencies:
1296 | error-ex: 1.3.2
1297 | json-parse-better-errors: 1.0.2
1298 | dev: true
1299 |
1300 | /path-is-absolute@1.0.1:
1301 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
1302 | engines: {node: '>=0.10.0'}
1303 | dev: true
1304 |
1305 | /path-key@2.0.1:
1306 | resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==}
1307 | engines: {node: '>=4'}
1308 | dev: true
1309 |
1310 | /path-parse@1.0.7:
1311 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
1312 | dev: true
1313 |
1314 | /path-type@3.0.0:
1315 | resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==}
1316 | engines: {node: '>=4'}
1317 | dependencies:
1318 | pify: 3.0.0
1319 | dev: true
1320 |
1321 | /picocolors@1.0.0:
1322 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
1323 |
1324 | /picomatch@2.3.1:
1325 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
1326 | engines: {node: '>=8.6'}
1327 | dev: true
1328 |
1329 | /pidtree@0.3.1:
1330 | resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==}
1331 | engines: {node: '>=0.10'}
1332 | hasBin: true
1333 | dev: true
1334 |
1335 | /pify@2.3.0:
1336 | resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
1337 | engines: {node: '>=0.10.0'}
1338 | dev: true
1339 |
1340 | /pify@3.0.0:
1341 | resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==}
1342 | engines: {node: '>=4'}
1343 | dev: true
1344 |
1345 | /pirates@4.0.6:
1346 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==}
1347 | engines: {node: '>= 6'}
1348 | dev: true
1349 |
1350 | /plotly.js-dist-min@2.24.3:
1351 | resolution: {integrity: sha512-NuX+/VaimP++uPlS4YdPOX/fg0ffOOvoaNmJenNcEu9fFWckCWxKkrknA5Jk7ZeweTEpzYTz6K1VGOstf8/PCw==}
1352 | dev: false
1353 |
1354 | /postcss-import@15.1.0(postcss@8.4.25):
1355 | resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
1356 | engines: {node: '>=14.0.0'}
1357 | peerDependencies:
1358 | postcss: ^8.0.0
1359 | dependencies:
1360 | postcss: 8.4.25
1361 | postcss-value-parser: 4.2.0
1362 | read-cache: 1.0.0
1363 | resolve: 1.22.2
1364 | dev: true
1365 |
1366 | /postcss-js@4.0.1(postcss@8.4.25):
1367 | resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
1368 | engines: {node: ^12 || ^14 || >= 16}
1369 | peerDependencies:
1370 | postcss: ^8.4.21
1371 | dependencies:
1372 | camelcase-css: 2.0.1
1373 | postcss: 8.4.25
1374 | dev: true
1375 |
1376 | /postcss-load-config@4.0.1(postcss@8.4.25):
1377 | resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==}
1378 | engines: {node: '>= 14'}
1379 | peerDependencies:
1380 | postcss: '>=8.0.9'
1381 | ts-node: '>=9.0.0'
1382 | peerDependenciesMeta:
1383 | postcss:
1384 | optional: true
1385 | ts-node:
1386 | optional: true
1387 | dependencies:
1388 | lilconfig: 2.1.0
1389 | postcss: 8.4.25
1390 | yaml: 2.3.1
1391 | dev: true
1392 |
1393 | /postcss-nested@6.0.1(postcss@8.4.25):
1394 | resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
1395 | engines: {node: '>=12.0'}
1396 | peerDependencies:
1397 | postcss: ^8.2.14
1398 | dependencies:
1399 | postcss: 8.4.25
1400 | postcss-selector-parser: 6.0.13
1401 | dev: true
1402 |
1403 | /postcss-selector-parser@6.0.13:
1404 | resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==}
1405 | engines: {node: '>=4'}
1406 | dependencies:
1407 | cssesc: 3.0.0
1408 | util-deprecate: 1.0.2
1409 | dev: true
1410 |
1411 | /postcss-value-parser@4.2.0:
1412 | resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
1413 | dev: true
1414 |
1415 | /postcss@8.4.25:
1416 | resolution: {integrity: sha512-7taJ/8t2av0Z+sQEvNzCkpDynl0tX3uJMCODi6nT3PfASC7dYCWV9aQ+uiCf+KBD4SEFcu+GvJdGdwzQ6OSjCw==}
1417 | engines: {node: ^10 || ^12 || >=14}
1418 | dependencies:
1419 | nanoid: 3.3.6
1420 | picocolors: 1.0.0
1421 | source-map-js: 1.0.2
1422 |
1423 | /queue-microtask@1.2.3:
1424 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
1425 | dev: true
1426 |
1427 | /read-cache@1.0.0:
1428 | resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
1429 | dependencies:
1430 | pify: 2.3.0
1431 | dev: true
1432 |
1433 | /read-pkg@3.0.0:
1434 | resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==}
1435 | engines: {node: '>=4'}
1436 | dependencies:
1437 | load-json-file: 4.0.0
1438 | normalize-package-data: 2.5.0
1439 | path-type: 3.0.0
1440 | dev: true
1441 |
1442 | /readdirp@3.6.0:
1443 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
1444 | engines: {node: '>=8.10.0'}
1445 | dependencies:
1446 | picomatch: 2.3.1
1447 | dev: true
1448 |
1449 | /regexp.prototype.flags@1.5.0:
1450 | resolution: {integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==}
1451 | engines: {node: '>= 0.4'}
1452 | dependencies:
1453 | call-bind: 1.0.2
1454 | define-properties: 1.2.0
1455 | functions-have-names: 1.2.3
1456 | dev: true
1457 |
1458 | /resolve@1.22.2:
1459 | resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==}
1460 | hasBin: true
1461 | dependencies:
1462 | is-core-module: 2.12.1
1463 | path-parse: 1.0.7
1464 | supports-preserve-symlinks-flag: 1.0.0
1465 | dev: true
1466 |
1467 | /reusify@1.0.4:
1468 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
1469 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
1470 | dev: true
1471 |
1472 | /rollup@3.26.2:
1473 | resolution: {integrity: sha512-6umBIGVz93er97pMgQO08LuH3m6PUb3jlDUUGFsNJB6VgTCUaDFpupf5JfU30529m/UKOgmiX+uY6Sx8cOYpLA==}
1474 | engines: {node: '>=14.18.0', npm: '>=8.0.0'}
1475 | hasBin: true
1476 | optionalDependencies:
1477 | fsevents: 2.3.2
1478 | dev: true
1479 |
1480 | /run-parallel@1.2.0:
1481 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
1482 | dependencies:
1483 | queue-microtask: 1.2.3
1484 | dev: true
1485 |
1486 | /safe-regex-test@1.0.0:
1487 | resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==}
1488 | dependencies:
1489 | call-bind: 1.0.2
1490 | get-intrinsic: 1.2.1
1491 | is-regex: 1.1.4
1492 | dev: true
1493 |
1494 | /semver@5.7.1:
1495 | resolution: {integrity: sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==}
1496 | hasBin: true
1497 | dev: true
1498 |
1499 | /semver@7.5.4:
1500 | resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==}
1501 | engines: {node: '>=10'}
1502 | hasBin: true
1503 | dependencies:
1504 | lru-cache: 6.0.0
1505 | dev: true
1506 |
1507 | /shebang-command@1.2.0:
1508 | resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==}
1509 | engines: {node: '>=0.10.0'}
1510 | dependencies:
1511 | shebang-regex: 1.0.0
1512 | dev: true
1513 |
1514 | /shebang-regex@1.0.0:
1515 | resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==}
1516 | engines: {node: '>=0.10.0'}
1517 | dev: true
1518 |
1519 | /shell-quote@1.8.1:
1520 | resolution: {integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==}
1521 | dev: true
1522 |
1523 | /side-channel@1.0.4:
1524 | resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
1525 | dependencies:
1526 | call-bind: 1.0.2
1527 | get-intrinsic: 1.2.1
1528 | object-inspect: 1.12.3
1529 | dev: true
1530 |
1531 | /source-map-js@1.0.2:
1532 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
1533 | engines: {node: '>=0.10.0'}
1534 |
1535 | /spdx-correct@3.2.0:
1536 | resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
1537 | dependencies:
1538 | spdx-expression-parse: 3.0.1
1539 | spdx-license-ids: 3.0.13
1540 | dev: true
1541 |
1542 | /spdx-exceptions@2.3.0:
1543 | resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==}
1544 | dev: true
1545 |
1546 | /spdx-expression-parse@3.0.1:
1547 | resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
1548 | dependencies:
1549 | spdx-exceptions: 2.3.0
1550 | spdx-license-ids: 3.0.13
1551 | dev: true
1552 |
1553 | /spdx-license-ids@3.0.13:
1554 | resolution: {integrity: sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==}
1555 | dev: true
1556 |
1557 | /string.prototype.padend@3.1.4:
1558 | resolution: {integrity: sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==}
1559 | engines: {node: '>= 0.4'}
1560 | dependencies:
1561 | call-bind: 1.0.2
1562 | define-properties: 1.2.0
1563 | es-abstract: 1.21.2
1564 | dev: true
1565 |
1566 | /string.prototype.trim@1.2.7:
1567 | resolution: {integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==}
1568 | engines: {node: '>= 0.4'}
1569 | dependencies:
1570 | call-bind: 1.0.2
1571 | define-properties: 1.2.0
1572 | es-abstract: 1.21.2
1573 | dev: true
1574 |
1575 | /string.prototype.trimend@1.0.6:
1576 | resolution: {integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==}
1577 | dependencies:
1578 | call-bind: 1.0.2
1579 | define-properties: 1.2.0
1580 | es-abstract: 1.21.2
1581 | dev: true
1582 |
1583 | /string.prototype.trimstart@1.0.6:
1584 | resolution: {integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==}
1585 | dependencies:
1586 | call-bind: 1.0.2
1587 | define-properties: 1.2.0
1588 | es-abstract: 1.21.2
1589 | dev: true
1590 |
1591 | /strip-bom@3.0.0:
1592 | resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
1593 | engines: {node: '>=4'}
1594 | dev: true
1595 |
1596 | /sucrase@3.32.0:
1597 | resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==}
1598 | engines: {node: '>=8'}
1599 | hasBin: true
1600 | dependencies:
1601 | '@jridgewell/gen-mapping': 0.3.3
1602 | commander: 4.1.1
1603 | glob: 7.1.6
1604 | lines-and-columns: 1.2.4
1605 | mz: 2.7.0
1606 | pirates: 4.0.6
1607 | ts-interface-checker: 0.1.13
1608 | dev: true
1609 |
1610 | /supports-color@5.5.0:
1611 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
1612 | engines: {node: '>=4'}
1613 | dependencies:
1614 | has-flag: 3.0.0
1615 | dev: true
1616 |
1617 | /supports-preserve-symlinks-flag@1.0.0:
1618 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
1619 | engines: {node: '>= 0.4'}
1620 | dev: true
1621 |
1622 | /tailwindcss@3.3.2:
1623 | resolution: {integrity: sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==}
1624 | engines: {node: '>=14.0.0'}
1625 | hasBin: true
1626 | dependencies:
1627 | '@alloc/quick-lru': 5.2.0
1628 | arg: 5.0.2
1629 | chokidar: 3.5.3
1630 | didyoumean: 1.2.2
1631 | dlv: 1.1.3
1632 | fast-glob: 3.3.0
1633 | glob-parent: 6.0.2
1634 | is-glob: 4.0.3
1635 | jiti: 1.19.1
1636 | lilconfig: 2.1.0
1637 | micromatch: 4.0.5
1638 | normalize-path: 3.0.0
1639 | object-hash: 3.0.0
1640 | picocolors: 1.0.0
1641 | postcss: 8.4.25
1642 | postcss-import: 15.1.0(postcss@8.4.25)
1643 | postcss-js: 4.0.1(postcss@8.4.25)
1644 | postcss-load-config: 4.0.1(postcss@8.4.25)
1645 | postcss-nested: 6.0.1(postcss@8.4.25)
1646 | postcss-selector-parser: 6.0.13
1647 | postcss-value-parser: 4.2.0
1648 | resolve: 1.22.2
1649 | sucrase: 3.32.0
1650 | transitivePeerDependencies:
1651 | - ts-node
1652 | dev: true
1653 |
1654 | /thenify-all@1.6.0:
1655 | resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
1656 | engines: {node: '>=0.8'}
1657 | dependencies:
1658 | thenify: 3.3.1
1659 | dev: true
1660 |
1661 | /thenify@3.3.1:
1662 | resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
1663 | dependencies:
1664 | any-promise: 1.3.0
1665 | dev: true
1666 |
1667 | /to-fast-properties@2.0.0:
1668 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
1669 | engines: {node: '>=4'}
1670 |
1671 | /to-regex-range@5.0.1:
1672 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
1673 | engines: {node: '>=8.0'}
1674 | dependencies:
1675 | is-number: 7.0.0
1676 | dev: true
1677 |
1678 | /ts-interface-checker@0.1.13:
1679 | resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
1680 | dev: true
1681 |
1682 | /typed-array-length@1.0.4:
1683 | resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==}
1684 | dependencies:
1685 | call-bind: 1.0.2
1686 | for-each: 0.3.3
1687 | is-typed-array: 1.1.10
1688 | dev: true
1689 |
1690 | /typescript@5.0.4:
1691 | resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==}
1692 | engines: {node: '>=12.20'}
1693 | hasBin: true
1694 | dev: true
1695 |
1696 | /unbox-primitive@1.0.2:
1697 | resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==}
1698 | dependencies:
1699 | call-bind: 1.0.2
1700 | has-bigints: 1.0.2
1701 | has-symbols: 1.0.3
1702 | which-boxed-primitive: 1.0.2
1703 | dev: true
1704 |
1705 | /update-browserslist-db@1.0.11(browserslist@4.21.9):
1706 | resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==}
1707 | hasBin: true
1708 | peerDependencies:
1709 | browserslist: '>= 4.21.0'
1710 | dependencies:
1711 | browserslist: 4.21.9
1712 | escalade: 3.1.1
1713 | picocolors: 1.0.0
1714 | dev: true
1715 |
1716 | /util-deprecate@1.0.2:
1717 | resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
1718 | dev: true
1719 |
1720 | /validate-npm-package-license@3.0.4:
1721 | resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
1722 | dependencies:
1723 | spdx-correct: 3.2.0
1724 | spdx-expression-parse: 3.0.1
1725 | dev: true
1726 |
1727 | /vite@4.3.9(@types/node@18.16.17):
1728 | resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==}
1729 | engines: {node: ^14.18.0 || >=16.0.0}
1730 | hasBin: true
1731 | peerDependencies:
1732 | '@types/node': '>= 14'
1733 | less: '*'
1734 | sass: '*'
1735 | stylus: '*'
1736 | sugarss: '*'
1737 | terser: ^5.4.0
1738 | peerDependenciesMeta:
1739 | '@types/node':
1740 | optional: true
1741 | less:
1742 | optional: true
1743 | sass:
1744 | optional: true
1745 | stylus:
1746 | optional: true
1747 | sugarss:
1748 | optional: true
1749 | terser:
1750 | optional: true
1751 | dependencies:
1752 | '@types/node': 18.16.17
1753 | esbuild: 0.17.19
1754 | postcss: 8.4.25
1755 | rollup: 3.26.2
1756 | optionalDependencies:
1757 | fsevents: 2.3.2
1758 | dev: true
1759 |
1760 | /vue-template-compiler@2.7.14:
1761 | resolution: {integrity: sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==}
1762 | dependencies:
1763 | de-indent: 1.0.2
1764 | he: 1.2.0
1765 | dev: true
1766 |
1767 | /vue-tsc@1.6.5(typescript@5.0.4):
1768 | resolution: {integrity: sha512-Wtw3J7CC+JM2OR56huRd5iKlvFWpvDiU+fO1+rqyu4V2nMTotShz4zbOZpW5g9fUOcjnyZYfBo5q5q+D/q27JA==}
1769 | hasBin: true
1770 | peerDependencies:
1771 | typescript: '*'
1772 | dependencies:
1773 | '@volar/vue-language-core': 1.6.5
1774 | '@volar/vue-typescript': 1.6.5(typescript@5.0.4)
1775 | semver: 7.5.4
1776 | typescript: 5.0.4
1777 | dev: true
1778 |
1779 | /vue@3.3.4:
1780 | resolution: {integrity: sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==}
1781 | dependencies:
1782 | '@vue/compiler-dom': 3.3.4
1783 | '@vue/compiler-sfc': 3.3.4
1784 | '@vue/runtime-dom': 3.3.4
1785 | '@vue/server-renderer': 3.3.4(vue@3.3.4)
1786 | '@vue/shared': 3.3.4
1787 |
1788 | /which-boxed-primitive@1.0.2:
1789 | resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==}
1790 | dependencies:
1791 | is-bigint: 1.0.4
1792 | is-boolean-object: 1.1.2
1793 | is-number-object: 1.0.7
1794 | is-string: 1.0.7
1795 | is-symbol: 1.0.4
1796 | dev: true
1797 |
1798 | /which-typed-array@1.1.9:
1799 | resolution: {integrity: sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==}
1800 | engines: {node: '>= 0.4'}
1801 | dependencies:
1802 | available-typed-arrays: 1.0.5
1803 | call-bind: 1.0.2
1804 | for-each: 0.3.3
1805 | gopd: 1.0.1
1806 | has-tostringtag: 1.0.0
1807 | is-typed-array: 1.1.10
1808 | dev: true
1809 |
1810 | /which@1.3.1:
1811 | resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
1812 | hasBin: true
1813 | dependencies:
1814 | isexe: 2.0.0
1815 | dev: true
1816 |
1817 | /wrappy@1.0.2:
1818 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
1819 | dev: true
1820 |
1821 | /yallist@4.0.0:
1822 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
1823 | dev: true
1824 |
1825 | /yaml@2.3.1:
1826 | resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==}
1827 | engines: {node: '>= 14'}
1828 | dev: true
1829 |
--------------------------------------------------------------------------------