pal-crawl 1.6.1 → 1.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/pal.js CHANGED
@@ -1,201 +1,172 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
35
5
  Object.defineProperty(exports, "__esModule", { value: true });
36
6
  exports.PalCrawl = void 0;
37
7
  const url_1 = require("url");
38
- const cheerio = __importStar(require("cheerio"));
8
+ const puppeteer_1 = __importDefault(require("puppeteer"));
39
9
  const config_1 = require("./config");
40
10
  const http_client_1 = require("./http-client");
11
+ const parser_1 = require("./parser");
41
12
  class PalCrawl {
42
13
  constructor(config) {
14
+ this.browser = null;
43
15
  this.httpClient = new http_client_1.HttpClient({
44
16
  userAgent: config?.userAgent ?? config_1.Config.UserAgent,
45
17
  timeout: config?.timeout ?? 10000,
46
18
  retryCount: config?.retryCount ?? 3,
47
19
  customHeaders: config?.customHeaders ?? {},
48
20
  });
21
+ this.parser = new parser_1.PalParser();
22
+ this.screenshotConfig = {
23
+ enabled: config?.screenshot?.enabled ?? false,
24
+ fullPage: config?.screenshot?.fullPage ?? true,
25
+ width: config?.screenshot?.width ?? 1920,
26
+ height: config?.screenshot?.height ?? 1080,
27
+ format: config?.screenshot?.format ?? 'png',
28
+ quality: config?.screenshot?.quality ?? 80,
29
+ };
49
30
  }
50
- async getPalHTML() {
51
- const url = new url_1.URL(config_1.Config.LIST_URL, config_1.Config.DOMAIN);
52
- return this.httpClient.get(url);
31
+ /**
32
+ * Initialize the Puppeteer browser instance.
33
+ * Call this before taking screenshots if not already initialized.
34
+ */
35
+ async initBrowser() {
36
+ if (!this.browser) {
37
+ this.browser = await puppeteer_1.default.launch({
38
+ headless: true,
39
+ args: ['--no-sandbox', '--disable-setuid-sandbox'],
40
+ });
41
+ }
42
+ }
43
+ /**
44
+ * Close the Puppeteer browser instance.
45
+ * Call this when done to free up resources.
46
+ */
47
+ async closeBrowser() {
48
+ if (this.browser) {
49
+ await this.browser.close();
50
+ this.browser = null;
51
+ }
53
52
  }
54
- extractContentId(link) {
53
+ /**
54
+ * Take a screenshot of a URL and return it as a Buffer.
55
+ * Initializes browser if not already done.
56
+ */
57
+ async takeScreenshot(urlStr) {
58
+ if (!this.screenshotConfig.enabled) {
59
+ throw new Error('Screenshot feature is not enabled. Enable it in the config.');
60
+ }
61
+ await this.initBrowser();
62
+ if (!this.browser) {
63
+ throw new Error('Failed to initialize browser');
64
+ }
65
+ const page = await this.browser.newPage();
55
66
  try {
56
- const url = new url_1.URL(link, config_1.Config.DOMAIN);
57
- return (url.searchParams.get('lgsltPaId') ?? url.searchParams.get('lgsltPaid'));
67
+ await page.setViewport({
68
+ width: this.screenshotConfig.width ?? 1920,
69
+ height: this.screenshotConfig.height ?? 1080,
70
+ });
71
+ await page.goto(urlStr, { waitUntil: 'networkidle0', timeout: 30000 });
72
+ const screenshotBuffer = await page.screenshot({
73
+ fullPage: this.screenshotConfig.fullPage ?? true,
74
+ type: this.screenshotConfig.format,
75
+ quality: this.screenshotConfig.format === 'jpeg'
76
+ ? (this.screenshotConfig.quality ?? 80)
77
+ : undefined,
78
+ });
79
+ return screenshotBuffer;
58
80
  }
59
- catch {
60
- return null;
81
+ finally {
82
+ await page.close();
61
83
  }
62
84
  }
63
- parseTable(html) {
64
- const $ = cheerio.load(html);
65
- const body = $('body');
66
- const table = body.find('table > tbody > tr');
67
- const output = [];
68
- table.map((_i, el) => {
69
- const subject = $(el).find('td.td_block > a.board_subject').text().trim();
70
- if (subject) {
71
- const link = $(el).find('td.td_block > a.board_subject').attr('href');
72
- const numComments = Number($(el).find('td:nth-child(8)').text().replace(',', '').trim());
73
- const proposerCategory = $(el).find('td:nth-child(3)').text().trim();
74
- const committee = $(el).find('td:nth-child(4)').text().trim();
75
- const num = Number($(el).find('td:nth-child(1)').text().trim());
76
- let boardLink = '';
77
- if (link) {
78
- boardLink = config_1.Config.DOMAIN + link;
79
- }
80
- const pdfFile = $(el).find('td:nth-child(6) > a:nth-child(3)').attr('href') ?? null;
81
- const hwpFile = $(el).find('td:nth-child(6) > a:nth-child(2)').attr('href') ?? null;
82
- const attachments = {
83
- pdfFile,
84
- hwpFile,
85
- };
86
- const contentId = boardLink ? this.extractContentId(boardLink) : null;
87
- output.push({
88
- num,
89
- subject,
90
- proposerCategory,
91
- committee,
92
- numComments,
93
- link: boardLink,
94
- contentId,
95
- attachments,
96
- });
97
- }
98
- });
99
- return output;
100
- }
101
- normalizeText(text) {
102
- return text
103
- .replace(/\u00a0/g, ' ')
104
- .replace(/\r/g, '')
105
- .split('\n')
106
- .map((line) => line.replace(/\s+/g, ' ').trim())
107
- .filter(Boolean)
108
- .join('\n');
109
- }
110
- extractTableCellText($, cell) {
111
- const clonedCell = cell.clone();
112
- clonedCell.find('.m_subject, script, style').remove();
113
- clonedCell.find('a.btn_sm').remove();
114
- return this.normalizeText($(clonedCell).text());
115
- }
116
- parseBillInfoTable($) {
117
- const table = $('.board-added table').first();
118
- const row = table.find('tbody > tr').first();
119
- if (!table.length || !row.length) {
120
- return {
121
- billNumber: null,
122
- proposer: null,
123
- proposalDate: null,
124
- committee: null,
125
- referralDate: null,
126
- noticePeriod: null,
127
- proposalSession: null,
128
- };
85
+ /**
86
+ * Get a screenshot of the bill list page.
87
+ */
88
+ async getPalScreenshot() {
89
+ const url = new url_1.URL(config_1.Config.LIST_URL, config_1.Config.DOMAIN);
90
+ return this.takeScreenshot(url.toString());
91
+ }
92
+ /**
93
+ * Get a screenshot of a specific bill content page.
94
+ */
95
+ async getContentScreenshot(id) {
96
+ const normalizedId = id.trim();
97
+ if (!normalizedId) {
98
+ throw new Error('id is required');
129
99
  }
130
- const headers = table
131
- .find('thead th')
132
- .map((_, th) => this.normalizeText($(th).text()).replace(/\s+/g, ''))
133
- .get();
134
- const values = row
135
- .children('td')
136
- .map((_, td) => this.extractTableCellText($, $(td)))
137
- .get();
138
- const valueByHeader = new Map();
139
- headers.forEach((header, index) => {
140
- const value = values[index];
141
- if (value) {
142
- valueByHeader.set(header, value);
143
- }
144
- });
145
- return {
146
- billNumber: valueByHeader.get('의안번호') ?? null,
147
- proposer: valueByHeader.get('제안자') ?? null,
148
- proposalDate: valueByHeader.get('제안일') ?? null,
149
- committee: valueByHeader.get('소관위원회') ?? null,
150
- referralDate: valueByHeader.get('회부일') ?? null,
151
- noticePeriod: valueByHeader.get('입법예고기간') ?? null,
152
- proposalSession: valueByHeader.get('제안회기') ?? null,
100
+ const url = new url_1.URL(config_1.Config.CONTENT_URL, config_1.Config.DOMAIN);
101
+ url.searchParams.set('lgsltPaid', normalizedId);
102
+ url.searchParams.set('lgsltPaId', normalizedId);
103
+ return this.takeScreenshot(url.toString());
104
+ }
105
+ /**
106
+ * Get a screenshot of the done bills list page.
107
+ */
108
+ async getDoneScreenshot() {
109
+ const url = new url_1.URL(config_1.Config.DONE_LIST_URL, config_1.Config.DOMAIN);
110
+ return this.takeScreenshot(url.toString());
111
+ }
112
+ /**
113
+ * Get a screenshot of a specific done bill content page.
114
+ */
115
+ async getDoneContentScreenshot(id) {
116
+ const normalizedId = id.trim();
117
+ if (!normalizedId) {
118
+ throw new Error('id is required');
119
+ }
120
+ const url = new url_1.URL(config_1.Config.DONE_CONTENT_URL, config_1.Config.DOMAIN);
121
+ url.searchParams.set('lgsltPaid', normalizedId);
122
+ url.searchParams.set('lgsltPaId', normalizedId);
123
+ return this.takeScreenshot(url.toString());
124
+ }
125
+ /**
126
+ * Update screenshot configuration.
127
+ */
128
+ updateScreenshotConfig(config) {
129
+ this.screenshotConfig = {
130
+ ...this.screenshotConfig,
131
+ ...config,
153
132
  };
154
133
  }
155
- parseContent(html) {
156
- const $ = cheerio.load(html);
157
- const title = this.normalizeText($('.legislation-heading h3').first().text() || $('h3').first().text());
158
- const sections = {};
159
- $('.card-wrap .item').each((_, item) => {
160
- const heading = this.normalizeText($(item).find('h4').first().text());
161
- if (!heading) {
162
- return;
163
- }
164
- const descText = this.normalizeText($(item).find('.desc').first().text());
165
- if (!descText) {
166
- sections[heading] = '';
167
- return;
134
+ buildListUrl(base, query) {
135
+ const url = new url_1.URL(base, config_1.Config.DOMAIN);
136
+ const entries = [
137
+ ['pageIndex', query.pageIndex],
138
+ ['pageUnit', query.pageUnit],
139
+ ['committeeId', query.committeeId],
140
+ ['billName', query.billName],
141
+ ['represent', query.represent],
142
+ ['proposers', query.proposers],
143
+ ['ppslRsonMnCn', query.ppslRsonMnCn],
144
+ ['sortCol', query.sortCol],
145
+ ['sortGbn', query.sortGbn],
146
+ ['fromAge', query.fromAge],
147
+ ['toAge', query.toAge],
148
+ ['billNo', query.billNo],
149
+ ];
150
+ for (const [key, value] of entries) {
151
+ if (value !== undefined && value !== null && value !== '') {
152
+ url.searchParams.set(key, String(value));
168
153
  }
169
- const normalizedHeading = heading.replace(/\s+/g, '');
170
- const lines = descText.split('\n').filter(Boolean);
171
- const firstLine = lines[0]?.replace(/\s+/g, '') ?? '';
172
- // The first line sometimes repeats the section heading itself.
173
- const content = firstLine === normalizedHeading
174
- ? this.normalizeText(lines.slice(1).join('\n'))
175
- : descText;
176
- sections[heading] = content;
177
- });
178
- const proposalReasonRaw = Object.entries(sections).find(([heading]) => heading.replace(/\s+/g, '').includes('제안이유및주요내용'))?.[1] ?? null;
179
- const proposalReason = proposalReasonRaw
180
- ? this.normalizeText(proposalReasonRaw)
181
- : null;
182
- const billInfo = this.parseBillInfoTable($);
183
- return {
184
- title,
185
- proposalReason,
186
- billNumber: billInfo.billNumber,
187
- proposer: billInfo.proposer,
188
- proposalDate: billInfo.proposalDate,
189
- committee: billInfo.committee,
190
- referralDate: billInfo.referralDate,
191
- noticePeriod: billInfo.noticePeriod,
192
- proposalSession: billInfo.proposalSession,
193
- };
154
+ }
155
+ return url;
156
+ }
157
+ async getPalHTML() {
158
+ const url = new url_1.URL(config_1.Config.LIST_URL, config_1.Config.DOMAIN);
159
+ return this.httpClient.get(url);
160
+ }
161
+ parseTable(html) {
162
+ return this.parser.parseTable(html);
163
+ }
164
+ parseContent(html) {
165
+ return this.parser.parseContent(html);
194
166
  }
195
167
  async get() {
196
168
  const html = await this.getPalHTML();
197
- const table = this.parseTable(html);
198
- return table;
169
+ return this.parser.parseTable(html);
199
170
  }
200
171
  async getContentHTML(id) {
201
172
  const normalizedId = id.trim();
@@ -210,7 +181,93 @@ class PalCrawl {
210
181
  }
211
182
  async getContent(id) {
212
183
  const html = await this.getContentHTML(id);
213
- return this.parseContent(html);
184
+ return this.parser.parseContent(html);
185
+ }
186
+ async getDoneHTML() {
187
+ const url = new url_1.URL(config_1.Config.DONE_LIST_URL, config_1.Config.DOMAIN);
188
+ return this.httpClient.get(url);
189
+ }
190
+ async getDone() {
191
+ const html = await this.getDoneHTML();
192
+ return this.parser.parseTable(html);
193
+ }
194
+ async getDoneContentHTML(id) {
195
+ const normalizedId = id.trim();
196
+ if (!normalizedId) {
197
+ throw new Error('id is required');
198
+ }
199
+ const url = new url_1.URL(config_1.Config.DONE_CONTENT_URL, config_1.Config.DOMAIN);
200
+ url.searchParams.set('lgsltPaid', normalizedId);
201
+ url.searchParams.set('lgsltPaId', normalizedId);
202
+ return this.httpClient.get(url);
203
+ }
204
+ async getDoneContent(id) {
205
+ const html = await this.getDoneContentHTML(id);
206
+ return this.parser.parseContent(html);
207
+ }
208
+ // ── Search / Filter ──────────────────────────────────────────────────────────
209
+ /** Fetch ongoing notices with optional filters and return parsed result with metadata. */
210
+ async search(query = {}) {
211
+ const url = this.buildListUrl(config_1.Config.LIST_URL, { pageIndex: 1, ...query });
212
+ const html = await this.httpClient.get(url);
213
+ return this.parser.parseSearchResult(html);
214
+ }
215
+ /** Fetch done notices with optional filters and return parsed result with metadata. */
216
+ async searchDone(query = {}) {
217
+ const url = this.buildListUrl(config_1.Config.DONE_LIST_URL, {
218
+ pageIndex: 1,
219
+ ...query,
220
+ });
221
+ const html = await this.httpClient.get(url);
222
+ return this.parser.parseSearchResult(html);
223
+ }
224
+ // ── Explicit page access ─────────────────────────────────────────────────────
225
+ /** Fetch a specific page of ongoing notices. */
226
+ async getPage(pageIndex, pageUnit) {
227
+ const result = await this.search({ pageIndex, pageUnit });
228
+ return result.items;
229
+ }
230
+ /** Fetch a specific page of done notices. */
231
+ async getDonePage(pageIndex, pageUnit) {
232
+ const result = await this.searchDone({ pageIndex, pageUnit });
233
+ return result.items;
234
+ }
235
+ // ── Bulk / pagination helpers ────────────────────────────────────────────────
236
+ async *_getAllPagesImpl(searchFn, query, options) {
237
+ const delayMs = options.delayMs ?? 500;
238
+ const concurrency = Math.max(1, options.concurrency ?? 1);
239
+ const first = await searchFn({ ...query, pageIndex: 1 });
240
+ yield first;
241
+ if (first.totalPages <= 1 || first.items.length === 0)
242
+ return;
243
+ const maxPages = Math.min(first.totalPages, options.maxPages ?? first.totalPages);
244
+ for (let start = 2; start <= maxPages; start += concurrency) {
245
+ if (delayMs > 0) {
246
+ await new Promise((resolve) => setTimeout(resolve, delayMs));
247
+ }
248
+ const end = Math.min(start + concurrency - 1, maxPages);
249
+ const pageNums = Array.from({ length: end - start + 1 }, (_, i) => start + i);
250
+ const results = await Promise.all(pageNums.map((p) => searchFn({ ...query, pageIndex: p })));
251
+ for (const result of results) {
252
+ yield result;
253
+ if (result.items.length === 0)
254
+ return;
255
+ }
256
+ }
257
+ }
258
+ /**
259
+ * Async generator that yields every page of ongoing notices.
260
+ * Respects `IBulkOptions` for rate-limiting and concurrency.
261
+ */
262
+ getAllPages(query, options) {
263
+ return this._getAllPagesImpl((q) => this.search(q), query ?? {}, options ?? {});
264
+ }
265
+ /**
266
+ * Async generator that yields every page of done notices.
267
+ * Respects `IBulkOptions` for rate-limiting and concurrency.
268
+ */
269
+ getAllDonePages(query, options) {
270
+ return this._getAllPagesImpl((q) => this.searchDone(q), query ?? {}, options ?? {});
214
271
  }
215
272
  }
216
273
  exports.PalCrawl = PalCrawl;
package/dist/pal.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pal.js","sourceRoot":"","sources":["../src/pal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pal.js","sourceRoot":"","sources":["../src/pal.ts"],"names":[],"mappings":";;;;;;AAAA,6BAA0B;AAC1B,0DAAoD;AACpD,qCAAkC;AAClC,+CAA2C;AAC3C,qCAKkB;AAoDlB,MAAa,QAAQ;IAMnB,YAAY,MAAuB;QAH3B,YAAO,GAAmB,IAAI,CAAC;QAIrC,IAAI,CAAC,UAAU,GAAG,IAAI,wBAAU,CAAC;YAC/B,SAAS,EAAE,MAAM,EAAE,SAAS,IAAI,eAAM,CAAC,SAAS;YAChD,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,KAAK;YACjC,UAAU,EAAE,MAAM,EAAE,UAAU,IAAI,CAAC;YACnC,aAAa,EAAE,MAAM,EAAE,aAAa,IAAI,EAAE;SAC3C,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,kBAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,gBAAgB,GAAG;YACtB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,IAAI,KAAK;YAC7C,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,IAAI,IAAI;YAC9C,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,IAAI,IAAI;YACxC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,IAAI,IAAI;YAC1C,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,IAAI,KAAK;YAC3C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,IAAI,EAAE;SAC3C,CAAC;IACJ,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,WAAW;QACtB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,GAAG,MAAM,mBAAS,CAAC,MAAM,CAAC;gBACpC,QAAQ,EAAE,IAAI;gBACd,IAAI,EAAE,CAAC,cAAc,EAAE,0BAA0B,CAAC;aACnD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,YAAY;QACvB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,cAAc,CAAC,MAAc;QACxC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,6DAA6D,CAC9D,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAEzB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,WAAW,CAAC;gBACrB,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,IAAI,IAAI;gBAC1C,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,IAAI,IAAI;aAC7C,CAAC,CAAC;YAEH,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAEvE,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC;gBAC7C,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,IAAI,IAAI;gBAChD,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAwB;gBACpD,OAAO,EACL,IAAI,CAAC,gBAAgB,CAAC,MAAM,KAAK,MAAM;oBACrC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,IAAI,EAAE,CAAC;oBACvC,CAAC,CAAC,SAAS;aAChB,CAAC,CAAC;YAEH,OAAO,gBAAgB,CAAC;QAC1B,CAAC;gBAAS,CAAC;YACT,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,gBAAgB;QAC3B,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,eAAM,CAAC,QAAQ,EAAE,eAAM,CAAC,MAAM,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,oBAAoB,CAAC,EAAU;QAC1C,MAAM,YAAY,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,eAAM,CAAC,WAAW,EAAE,eAAM,CAAC,MAAM,CAAC,CAAC;QACvD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAChD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAEhD,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,iBAAiB;QAC5B,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,eAAM,CAAC,aAAa,EAAE,eAAM,CAAC,MAAM,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,wBAAwB,CAAC,EAAU;QAC9C,MAAM,YAAY,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,eAAM,CAAC,gBAAgB,EAAE,eAAM,CAAC,MAAM,CAAC,CAAC;QAC5D,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAChD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAEhD,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACI,sBAAsB,CAAC,MAAkC;QAC9D,IAAI,CAAC,gBAAgB,GAAG;YACtB,GAAG,IAAI,CAAC,gBAAgB;YACxB,GAAG,MAAM;SACV,CAAC;IACJ,CAAC;IAEO,YAAY,CAAC,IAAY,EAAE,KAAmB;QACpD,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,IAAI,EAAE,eAAM,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,OAAO,GAAiD;YAC5D,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;YAC9B,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC;YAC5B,CAAC,aAAa,EAAE,KAAK,CAAC,WAAW,CAAC;YAClC,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC;YAC5B,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;YAC9B,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;YAC9B,CAAC,cAAc,EAAE,KAAK,CAAC,YAAY,CAAC;YACpC,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;YAC1B,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;YAC1B,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;YAC1B,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC;YACtB,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC;SACzB,CAAC;QACF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;YACnC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;gBAC1D,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEM,KAAK,CAAC,UAAU;QACrB,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,eAAM,CAAC,QAAQ,EAAE,eAAM,CAAC,MAAM,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAEM,UAAU,CAAC,IAAY;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAEM,YAAY,CAAC,IAAY;QAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAEM,KAAK,CAAC,GAAG;QACd,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,EAAU;QACpC,MAAM,YAAY,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,eAAM,CAAC,WAAW,EAAE,eAAM,CAAC,MAAM,CAAC,CAAC;QACvD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAChD,mEAAmE;QACnE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAEhD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAEM,KAAK,CAAC,UAAU,CAAC,EAAU;QAChC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAEM,KAAK,CAAC,WAAW;QACtB,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,eAAM,CAAC,aAAa,EAAE,eAAM,CAAC,MAAM,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAEM,KAAK,CAAC,OAAO;QAClB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAEM,KAAK,CAAC,kBAAkB,CAAC,EAAU;QACxC,MAAM,YAAY,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;QAC/B,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC,eAAM,CAAC,gBAAgB,EAAE,eAAM,CAAC,MAAM,CAAC,CAAC;QAC5D,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAChD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAEhD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,EAAU;QACpC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,gFAAgF;IAEhF,0FAA0F;IACnF,KAAK,CAAC,MAAM,CAAC,QAAsB,EAAE;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,eAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QAC3E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,uFAAuF;IAChF,KAAK,CAAC,UAAU,CAAC,QAAsB,EAAE;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,eAAM,CAAC,aAAa,EAAE;YAClD,SAAS,EAAE,CAAC;YACZ,GAAG,KAAK;SACT,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,gFAAgF;IAEhF,gDAAgD;IACzC,KAAK,CAAC,OAAO,CAClB,SAAiB,EACjB,QAAiB;QAEjB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1D,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,6CAA6C;IACtC,KAAK,CAAC,WAAW,CACtB,SAAiB,EACjB,QAAiB;QAEjB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9D,OAAO,MAAM,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,gFAAgF;IAExE,KAAK,CAAC,CAAC,gBAAgB,CAC7B,QAAyD,EACzD,KAAsC,EACtC,OAAqB;QAErB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;QAE1D,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;QACzD,MAAM,KAAK,CAAC;QAEZ,IAAI,KAAK,CAAC,UAAU,IAAI,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAE9D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CACvB,KAAK,CAAC,UAAU,EAChB,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,UAAU,CACrC,CAAC;QAEF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,QAAQ,EAAE,KAAK,IAAI,WAAW,EAAE,CAAC;YAC5D,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;gBAChB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,WAAW,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;YACxD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CACzB,EAAE,MAAM,EAAE,GAAG,GAAG,KAAK,GAAG,CAAC,EAAE,EAC3B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CACpB,CAAC;YACF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAC1D,CAAC;YACF,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,MAAM,MAAM,CAAC;gBACb,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO;YACxC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,WAAW,CAChB,KAAuC,EACvC,OAAsB;QAEtB,OAAO,IAAI,CAAC,gBAAgB,CAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EACrB,KAAK,IAAI,EAAE,EACX,OAAO,IAAI,EAAE,CACd,CAAC;IACJ,CAAC;IAED;;;OAGG;IACI,eAAe,CACpB,KAAuC,EACvC,OAAsB;QAEtB,OAAO,IAAI,CAAC,gBAAgB,CAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EACzB,KAAK,IAAI,EAAE,EACX,OAAO,IAAI,EAAE,CACd,CAAC;IACJ,CAAC;CACF;AAvVD,4BAuVC"}