@czlonkowski/n8n-nodes-librus 0.1.4 → 0.2.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/CHANGELOG.md +27 -0
- package/README.md +21 -1
- package/dist/nodes/Librus/LibrusClient.d.ts +15 -8
- package/dist/nodes/Librus/LibrusClient.js +167 -71
- package/dist/nodes/Librus/LibrusClient.js.map +1 -1
- package/dist/nodes/Librus/LibrusTrigger.node.js +133 -15
- package/dist/nodes/Librus/LibrusTrigger.node.js.map +1 -1
- package/dist/nodes/Librus/calendarState.d.ts +57 -0
- package/dist/nodes/Librus/calendarState.js +289 -0
- package/dist/nodes/Librus/calendarState.js.map +1 -0
- package/dist/nodes/Librus/errors.d.ts +9 -0
- package/dist/nodes/Librus/errors.js +45 -0
- package/dist/nodes/Librus/errors.js.map +1 -0
- package/dist/nodes/Librus/terminarz.d.ts +26 -0
- package/dist/nodes/Librus/terminarz.js +151 -0
- package/dist/nodes/Librus/terminarz.js.map +1 -0
- package/docs/architecture.md +43 -1
- package/docs/live-verification.md +58 -0
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.2.0 — 2026-09-12
|
|
4
|
+
|
|
5
|
+
- Add two calendar events, Nowe wydarzenie w terminarzu and Zmiana wydarzenia w terminarzu, to the shared Librus Trigger node; removals and cancellations are reported on the change event, not a separate one.
|
|
6
|
+
- Scan the current month plus a configurable number of months ahead through a credential-free POST to the Librus terminarz month form, guarded by a day-grid completeness check so a malformed or mis-rendered grid fails the poll instead of silently mis-dating or dropping events.
|
|
7
|
+
- Fetch event detail pages only for new or changed entries, hydrating up to 50 per poll and deferring the remainder to later polls without failing or losing already-detected changes.
|
|
8
|
+
- Record calendar discovery history under its own librusCalendar state key, separate from the existing message history, with an independent silent baseline, window pruning and account-change reset.
|
|
9
|
+
- Add a free-text, case-insensitive event-kind filter that always passes an unknown kind, so an unrecognized or not-yet-hydrated event type is never silently dropped.
|
|
10
|
+
- Leave message behaviour, the newMessage event and its defaults unchanged for existing workflows.
|
|
11
|
+
- Bound each day block of the month grid to its own element, so a page legend or footer after the grid is no longer read as events dated to the last day of the month, and a footer that changes between polls no longer emits a phantom change every poll; an unbalanced grid fails the poll instead.
|
|
12
|
+
- Fix calendar polling aborting silently and permanently after a credential or username change: the concurrency guard now compares the stored owner against the owner seen when the poll was planned, so an account change commits its silent baseline and the next poll emits again.
|
|
13
|
+
- Give each calendar attempt its own request budget so a session expiry late in detail hydration can still complete its single retry, and report an exhausted calendar scan with its own message pointing at Liczba miesięcy do przodu instead of the inbox page limit.
|
|
14
|
+
- Silence only the months a larger window actually added, so months that the passage of time had already brought into range still emit instead of being baselined away.
|
|
15
|
+
- Skip entries with no detail link before applying the 50-page hydration budget, so a real backlog of linked events drains faster.
|
|
16
|
+
- Reject stored calendar records whose month is malformed, which would otherwise be neither prunable nor removable.
|
|
17
|
+
- Reject a calendar detail response whose final address is not the requested event page, so a redirect to another Synergia page can no longer be parsed as event details.
|
|
18
|
+
- Stop detail hydration on the remaining request budget instead of failing the whole poll, so redirected detail pages leave a partial, committed scan that the next poll finishes rather than a backlog retried forever.
|
|
19
|
+
- Report invalid calendar settings with their own message naming Liczba miesięcy do przodu instead of the message-fetching settings, which the calendar events do not have.
|
|
20
|
+
- Rename the parameter label to Liczba miesięcy do przodu, fall back to Nowa wiadomość in the node subtitle for an unexpected event value, and keep internal planning documents out of the published npm package.
|
|
21
|
+
- Describe both message and calendar automation in the package description.
|
|
22
|
+
- Fix calendar state pruning keeping records for months beyond a shrunk window indefinitely: prune against the exact set of scanned months instead of only the window's start.
|
|
23
|
+
- Decode named HTML entities for code points 160-255 and the twice-encoded month-grid tooltip, so Polish letters no longer reach the output as raw entity text; this affected above all the entries with no detail page to correct them, the free days and the parent-teacher meetings.
|
|
24
|
+
- Report as changed only the fields a poll can detect a change in, so the first edit of an entry no longer also reports the detail-page fields that the silent baseline had simply never fetched.
|
|
25
|
+
|
|
26
|
+
## 0.1.5 — 2026-09-08
|
|
27
|
+
|
|
28
|
+
- Add the author’s standard AiAdvisors automation services CTA in Polish to the README.
|
|
29
|
+
|
|
3
30
|
## 0.1.4 — 2026-09-08
|
|
4
31
|
|
|
5
32
|
- Describe both message retrieval and new-message detection on the shared Librus card in n8n.
|
package/README.md
CHANGED
|
@@ -2,10 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
# Librus dla n8n
|
|
4
4
|
|
|
5
|
-
Pobieraj wiadomości z Librus Synergia i uruchamiaj automatyzacje po otrzymaniu nowych wiadomości. Paczka zawiera dwa węzły, dostępne na wspólnej karcie **Librus**: akcje pobierania wiadomości oraz
|
|
5
|
+
Pobieraj wiadomości z Librus Synergia i uruchamiaj automatyzacje po otrzymaniu nowych wiadomości albo po zmianach w terminarzu. Paczka zawiera dwa węzły, dostępne na wspólnej karcie **Librus**: akcje pobierania wiadomości oraz zdarzenia wyzwalające workflow — **Nowa wiadomość**, **Nowe wydarzenie w terminarzu** i **Zmiana wydarzenia w terminarzu**.
|
|
6
6
|
|
|
7
7
|
To nieoficjalna, eksperymentalna integracja do **samodzielnie hostowanego n8n**. Nie jest dostępna w n8n Cloud. Instancja n8n musi korzystać z Node.js 24 lub nowszego.
|
|
8
8
|
|
|
9
|
+
> 💼 **Chcesz zlecić budowę automatyzacji?** Zleć audyt, budowę lub utrzymanie automatyzacji n8n firmie [AiAdvisors](https://aiadvisors.pl), prowadzonej przez autora n8n-mcp i n8n-skills.
|
|
10
|
+
|
|
9
11
|
## Instalacja
|
|
10
12
|
|
|
11
13
|
1. W n8n przejdź do **Settings → Community nodes → Install**.
|
|
@@ -65,6 +67,24 @@ Trigger domyślnie zwraca metadane i skrócony podgląd. Aby dołączyć pełną
|
|
|
65
67
|
|
|
66
68
|
Przykładowy workflow: **Librus — Nowa wiadomość → Librus (Pobierz treść wiadomości) → wybrany kanał powiadomień**. Jeśli wystarczy temat i podgląd, pomiń Pobierz treść wiadomości.
|
|
67
69
|
|
|
70
|
+
## Automatyzacja po zmianach w terminarzu
|
|
71
|
+
|
|
72
|
+
1. Wyszukaj **Librus Trigger** i wybierz zdarzenie **Nowe wydarzenie w terminarzu** albo **Zmiana wydarzenia w terminarzu** oraz zapisane dane logowania.
|
|
73
|
+
2. Ustaw **Liczba miesięcy do przodu** — ile miesięcy po bieżącym miesiącu sprawdzać (0–6, domyślnie 1). Każdy dodatkowy miesiąc to jedno kolejne zapytanie do Librusa; wydarzeń spoza tego zakresu węzeł nie wykryje.
|
|
74
|
+
3. Opcjonalnie wypełnij **Rodzaje wydarzeń** listą rodzajów po przecinku (np. `Sprawdzian, Kartkówka`), dopasowywaną bez rozróżniania wielkości liter. Puste pole przepuszcza wszystkie wydarzenia. **Wydarzenie o nieznanym rodzaju zawsze przechodzi przez filtr** — dotyczy to też usuniętych wydarzeń, których szczegółów węzeł nie zdążył jeszcze pobrać — żeby filtr nigdy nie zgubił odwołanego sprawdzianu.
|
|
75
|
+
4. Ustaw **Poll Times** na co najmniej 15 minut.
|
|
76
|
+
5. Ręcznie przetestuj węzeł. Zwróci do pięciu najbliższych wydarzeń z bieżącego miesiąca jako próbkę (`changeType: "sample"`) i nie zmieni historii. Próbka **celowo pomija filtr Rodzaje wydarzeń** — dzięki temu odczytasz z wyniku prawdziwe wartości pola `rodzaj` i wpiszesz je do filtra, a wąski filtr nie zwróci pustej próbki wyglądającej na zepsute połączenie.
|
|
77
|
+
6. Dodaj dalsze kroki i opublikuj/aktywuj workflow.
|
|
78
|
+
|
|
79
|
+
**Pierwsze automatyczne sprawdzenie zapamiętuje obecny terminarz bez uruchamiania workflow dla już istniejących wydarzeń.** Kolejne sprawdzenia porównują terminarz z zapamiętanym stanem:
|
|
80
|
+
|
|
81
|
+
- **Nowe wydarzenie w terminarzu** uruchamia się, gdy w terminarzu pojawi się wydarzenie, którego wcześniej nie było.
|
|
82
|
+
- **Zmiana wydarzenia w terminarzu** uruchamia się dla edycji istniejącego wydarzenia (np. zmiana opisu albo przeniesienie na inny dzień) **oraz dla wydarzeń, które zniknęły z terminarza** — usunięcie lub odwołanie wydarzenia trafia na to samo zdarzenie co zmiana (`changeType: "removed"`), a nie na osobne zdarzenie.
|
|
83
|
+
|
|
84
|
+
Każdy element zawiera m.in. `changeType`, `eventKey`, `eventId`, `route`, `date`, `subject`, `teacher`, `description`, `rodzaj`, `room`, `addedAt`, `details`, `changedFields` oraz `previous`; dla nowych wydarzeń te dwa ostatnie pola są puste (`changedFields: []`, `previous: null`), a przy zmianach niosą listę zmienionych pól i poprzednią wersję, przy usunięciach zaś poprzednią wersję.
|
|
85
|
+
|
|
86
|
+
Wykrywanie zmian opiera się wyłącznie na tym, co pokazuje siatka terminarza — na dacie, tekście komórki, nauczycielu i opisie. Edycja widoczna tylko na stronie szczegółów wydarzenia (np. sama zmiana sali) nie wywoła zdarzenia zmiany, dopóki nie zajdzie razem z inną, widoczną w siatce edycją. Usunięcie wydarzenia nigdy nie niesie pola `details` (jest `null`) — to, co zniknęło, opisuje pole `previous`.
|
|
87
|
+
|
|
68
88
|
## Ograniczenia i rozwiązywanie problemów
|
|
69
89
|
|
|
70
90
|
- **Oznaczanie jako nieprzeczytane lub przeczytane**, wysyłanie, usuwanie i pobieranie załączników nie są obsługiwane. Odczyt pełnej treści może sam zmienić status wiadomości w Librusie.
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import { LibrusError, safeError } from './errors';
|
|
2
|
+
import { type CalendarDetail, type CalendarEntry } from './terminarz';
|
|
3
|
+
export { LibrusError, safeError };
|
|
1
4
|
export interface Request {
|
|
2
5
|
url: string;
|
|
3
6
|
method: 'GET' | 'POST';
|
|
@@ -25,6 +28,14 @@ export interface Scan {
|
|
|
25
28
|
contentSource?: ContentSource;
|
|
26
29
|
readStatus?: ReadStatus;
|
|
27
30
|
}
|
|
31
|
+
export interface CalendarScan {
|
|
32
|
+
months: string[];
|
|
33
|
+
}
|
|
34
|
+
export type CalendarSelect = (entries: CalendarEntry[]) => string[];
|
|
35
|
+
export interface CalendarResult {
|
|
36
|
+
entries: CalendarEntry[];
|
|
37
|
+
details: Map<string, CalendarDetail | null>;
|
|
38
|
+
}
|
|
28
39
|
export interface Message {
|
|
29
40
|
messageId: string;
|
|
30
41
|
senderFirstName: string;
|
|
@@ -39,19 +50,13 @@ export interface Message {
|
|
|
39
50
|
content?: string;
|
|
40
51
|
contentSource?: ContentSource;
|
|
41
52
|
}
|
|
42
|
-
type AuthStage = 'rozpoczęcie logowania' | 'przesłanie danych logowania' | 'kontynuacja autoryzacji' | 'otwarcie skrzynki';
|
|
43
|
-
type AuthDestination = 'autoryzacja OAuth' | 'powrót OAuth do Synergii' | 'logowanie do Synergii' | 'strona Synergii' | 'serwis wiadomości' | 'inna dozwolona strona';
|
|
44
|
-
export declare class LibrusError extends Error {
|
|
45
|
-
readonly code: string;
|
|
46
|
-
constructor(code: string, stage?: AuthStage, destination?: AuthDestination, rejection?: 'adres bez HTTPS' | 'dane logowania w adresie URL' | 'niestandardowy port' | 'nierozpoznana domena');
|
|
47
|
-
}
|
|
48
|
-
export declare function safeError(error: unknown): LibrusError;
|
|
49
53
|
export declare class LibrusClient {
|
|
50
54
|
private readonly transport;
|
|
51
55
|
private readonly login;
|
|
52
56
|
private jar;
|
|
53
57
|
private deadline;
|
|
54
58
|
private requests;
|
|
59
|
+
private budgetCode;
|
|
55
60
|
constructor(transport: Transport, login: Login);
|
|
56
61
|
private request;
|
|
57
62
|
private authenticate;
|
|
@@ -63,5 +68,7 @@ export declare class LibrusClient {
|
|
|
63
68
|
}>;
|
|
64
69
|
private fullContent;
|
|
65
70
|
private scan;
|
|
71
|
+
private monthPage;
|
|
72
|
+
private eventDetail;
|
|
73
|
+
getCalendar(options: CalendarScan, select: CalendarSelect): Promise<CalendarResult>;
|
|
66
74
|
}
|
|
67
|
-
export {};
|
|
@@ -1,42 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LibrusClient = exports.LibrusError = void 0;
|
|
4
|
-
exports.safeError = safeError;
|
|
3
|
+
exports.LibrusClient = exports.safeError = exports.LibrusError = void 0;
|
|
5
4
|
const tough_cookie_1 = require("tough-cookie");
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
AUTH_FAILED: 'Librus odrzucił logowanie. Sprawdź login i hasło na stronie Librusa.',
|
|
11
|
-
ACTION_REQUIRED: 'Zaloguj się na stronie Librusa i uzupełnij wymagane potwierdzenia konta.',
|
|
12
|
-
SESSION_EXPIRED: 'Sesja Librusa wygasła podczas zapytania.',
|
|
13
|
-
RATE_LIMITED: 'Librus ogranicza liczbę zapytań. Odczekaj przed kolejną próbą.',
|
|
14
|
-
ACCESS_DENIED: 'Librus odmówił dostępu. Sprawdź uprawnienia konta na stronie Librusa.',
|
|
15
|
-
SERVICE_ERROR: 'Librus jest niedostępny lub zwrócił nieoczekiwany status HTTP.',
|
|
16
|
-
SCAN_INCOMPLETE: 'Nie udało się sprawdzić całej skrzynki w wyznaczonych granicach. Zwiększ Maksymalną liczbę stron lub ogranicz liczbę pobieranych wiadomości.',
|
|
17
|
-
FULL_CONTENT_LIMIT: 'W jednym wykonaniu można pobrać pełną treść maksymalnie 50 wiadomości. Wyłącz Pobierz wszystkie i ustaw Limit na 50 lub mniej.',
|
|
18
|
-
INVALID_OPTIONS: 'Nieprawidłowe dane logowania do Librusa lub ustawienia pobierania wiadomości.',
|
|
19
|
-
TRIGGER_STATE_INVALID: 'Zapisana historia wykrytych wiadomości jest nieprawidłowa. Utwórz ponownie węzeł Nowa wiadomość, aby zapamiętać aktualną skrzynkę.',
|
|
20
|
-
TRIGGER_STATE_LIMIT: 'Osiągnięto limit historii 10 000 wiadomości. Utwórz ponownie węzeł Nowa wiadomość, aby zapamiętać aktualną skrzynkę.',
|
|
21
|
-
};
|
|
22
|
-
class LibrusError extends Error {
|
|
23
|
-
constructor(code, stage, destination, rejection) {
|
|
24
|
-
var _a;
|
|
25
|
-
super(((_a = messages[code]) !== null && _a !== void 0 ? _a : messages.PROTOCOL_ERROR) +
|
|
26
|
-
(stage ? ` [Etap: ${stage}; strona: ${destination}]` : '') +
|
|
27
|
-
(rejection ? ` [Odrzucone przekierowanie: ${rejection}]` : ''));
|
|
28
|
-
this.code = code;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
exports.LibrusError = LibrusError;
|
|
32
|
-
function safeError(error) {
|
|
33
|
-
return error instanceof LibrusError ? error : new LibrusError('PROTOCOL_ERROR');
|
|
34
|
-
}
|
|
5
|
+
const errors_1 = require("./errors");
|
|
6
|
+
Object.defineProperty(exports, "LibrusError", { enumerable: true, get: function () { return errors_1.LibrusError; } });
|
|
7
|
+
Object.defineProperty(exports, "safeError", { enumerable: true, get: function () { return errors_1.safeError; } });
|
|
8
|
+
const terminarz_1 = require("./terminarz");
|
|
35
9
|
function protocolError(check, value) {
|
|
36
|
-
|
|
37
|
-
const error = new LibrusError('PROTOCOL_ERROR');
|
|
38
|
-
error.message += ` [Walidacja: ${check}; otrzymany typ: ${type}]`;
|
|
39
|
-
return error;
|
|
10
|
+
return (0, errors_1.protocolError)(check, value);
|
|
40
11
|
}
|
|
41
12
|
const allowedHosts = new Set([
|
|
42
13
|
'portal.librus.pl',
|
|
@@ -44,13 +15,18 @@ const allowedHosts = new Set([
|
|
|
44
15
|
'api.librus.pl',
|
|
45
16
|
'wiadomosci.librus.pl',
|
|
46
17
|
]);
|
|
18
|
+
const allowedPostUrls = new Set(['https://synergia.librus.pl/terminarz']);
|
|
19
|
+
const MAX_DETAILS = 50;
|
|
20
|
+
const MAX_REQUESTS = 100;
|
|
21
|
+
const MAX_REDIRECTS = 10;
|
|
22
|
+
const DETAIL_HEADROOM = MAX_REDIRECTS + 1;
|
|
47
23
|
function checkedUrl(value, base) {
|
|
48
24
|
let url;
|
|
49
25
|
try {
|
|
50
26
|
url = new URL(value, base);
|
|
51
27
|
}
|
|
52
28
|
catch {
|
|
53
|
-
throw new LibrusError('UNSAFE_URL');
|
|
29
|
+
throw new errors_1.LibrusError('UNSAFE_URL');
|
|
54
30
|
}
|
|
55
31
|
if (url.protocol !== 'https:' ||
|
|
56
32
|
url.port ||
|
|
@@ -64,7 +40,7 @@ function checkedUrl(value, base) {
|
|
|
64
40
|
: url.port
|
|
65
41
|
? 'niestandardowy port'
|
|
66
42
|
: 'nierozpoznana domena';
|
|
67
|
-
throw new LibrusError('UNSAFE_URL', undefined, undefined, rejection);
|
|
43
|
+
throw new errors_1.LibrusError('UNSAFE_URL', undefined, undefined, rejection);
|
|
68
44
|
}
|
|
69
45
|
return url;
|
|
70
46
|
}
|
|
@@ -74,7 +50,7 @@ function checkedRedirect(value, base) {
|
|
|
74
50
|
url = new URL(value, base);
|
|
75
51
|
}
|
|
76
52
|
catch {
|
|
77
|
-
throw new LibrusError('UNSAFE_URL');
|
|
53
|
+
throw new errors_1.LibrusError('UNSAFE_URL');
|
|
78
54
|
}
|
|
79
55
|
if (url.protocol === 'http:' &&
|
|
80
56
|
allowedHosts.has(url.hostname) &&
|
|
@@ -99,7 +75,7 @@ function actionRequired(stage, url) {
|
|
|
99
75
|
: url.hostname === 'wiadomosci.librus.pl'
|
|
100
76
|
? 'serwis wiadomości'
|
|
101
77
|
: 'inna dozwolona strona';
|
|
102
|
-
return new LibrusError('ACTION_REQUIRED', stage, destination);
|
|
78
|
+
return new errors_1.LibrusError('ACTION_REQUIRED', stage, destination);
|
|
103
79
|
}
|
|
104
80
|
function object(value) {
|
|
105
81
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
@@ -187,14 +163,17 @@ class LibrusClient {
|
|
|
187
163
|
this.jar = new tough_cookie_1.CookieJar();
|
|
188
164
|
this.deadline = 0;
|
|
189
165
|
this.requests = 0;
|
|
166
|
+
this.budgetCode = 'SCAN_INCOMPLETE';
|
|
190
167
|
}
|
|
191
168
|
async request(value, body) {
|
|
192
169
|
let url = checkedUrl(value);
|
|
193
|
-
for (let hop = 0; hop <=
|
|
194
|
-
if (++this.requests >
|
|
195
|
-
throw new LibrusError(
|
|
196
|
-
if (body !== undefined &&
|
|
197
|
-
|
|
170
|
+
for (let hop = 0; hop <= MAX_REDIRECTS; hop++) {
|
|
171
|
+
if (++this.requests > MAX_REQUESTS || Date.now() >= this.deadline)
|
|
172
|
+
throw new errors_1.LibrusError(this.budgetCode);
|
|
173
|
+
if (body !== undefined &&
|
|
174
|
+
!authUrl(url) &&
|
|
175
|
+
!allowedPostUrls.has(`${url.origin}${url.pathname}`))
|
|
176
|
+
throw new errors_1.LibrusError('UNSAFE_URL');
|
|
198
177
|
const headers = {
|
|
199
178
|
Accept: 'application/json, text/html;q=0.9',
|
|
200
179
|
'User-Agent': 'n8n-nodes-librus/0.1',
|
|
@@ -206,7 +185,7 @@ class LibrusClient {
|
|
|
206
185
|
headers['Content-Type'] = 'application/x-www-form-urlencoded';
|
|
207
186
|
const remaining = this.deadline - Date.now();
|
|
208
187
|
if (remaining <= 0)
|
|
209
|
-
throw new LibrusError(
|
|
188
|
+
throw new errors_1.LibrusError(this.budgetCode);
|
|
210
189
|
let response;
|
|
211
190
|
try {
|
|
212
191
|
response = await this.transport({
|
|
@@ -218,7 +197,7 @@ class LibrusClient {
|
|
|
218
197
|
});
|
|
219
198
|
}
|
|
220
199
|
catch {
|
|
221
|
-
throw new LibrusError('TRANSPORT_ERROR');
|
|
200
|
+
throw new errors_1.LibrusError('TRANSPORT_ERROR');
|
|
222
201
|
}
|
|
223
202
|
if (typeof response.body !== 'string')
|
|
224
203
|
throw protocolError('typ treści odpowiedzi HTTP', response.body);
|
|
@@ -239,8 +218,21 @@ class LibrusClient {
|
|
|
239
218
|
}
|
|
240
219
|
}
|
|
241
220
|
if ([301, 302, 303, 307, 308].includes(response.statusCode)) {
|
|
242
|
-
if (body !== undefined)
|
|
221
|
+
if (body !== undefined) {
|
|
222
|
+
const location = normalized.location;
|
|
223
|
+
if (!authUrl(url) && typeof location === 'string') {
|
|
224
|
+
let target;
|
|
225
|
+
try {
|
|
226
|
+
target = checkedRedirect(location, url.href);
|
|
227
|
+
}
|
|
228
|
+
catch {
|
|
229
|
+
target = undefined;
|
|
230
|
+
}
|
|
231
|
+
if (target && (authUrl(target) || /^\/loguj(?:\/|$)/.test(target.pathname)))
|
|
232
|
+
throw new errors_1.LibrusError('SESSION_EXPIRED');
|
|
233
|
+
}
|
|
243
234
|
throw protocolError('przekierowanie POST');
|
|
235
|
+
}
|
|
244
236
|
const location = normalized.location;
|
|
245
237
|
if (typeof location !== 'string')
|
|
246
238
|
throw protocolError('adres przekierowania', location);
|
|
@@ -248,18 +240,21 @@ class LibrusClient {
|
|
|
248
240
|
continue;
|
|
249
241
|
}
|
|
250
242
|
if (response.statusCode === 429)
|
|
251
|
-
throw new LibrusError('RATE_LIMITED');
|
|
243
|
+
throw new errors_1.LibrusError('RATE_LIMITED');
|
|
252
244
|
if (response.statusCode === 401)
|
|
253
|
-
throw new LibrusError('SESSION_EXPIRED');
|
|
245
|
+
throw new errors_1.LibrusError('SESSION_EXPIRED');
|
|
254
246
|
if ((response.statusCode === 403 || response.statusCode === 200) &&
|
|
255
247
|
url.hostname === 'wiadomosci.librus.pl' &&
|
|
256
248
|
/^\/api\/inbox\/messages(?:\/[A-Za-z0-9_-]+)?$/.test(url.pathname) &&
|
|
257
249
|
isLoginForm(response.body))
|
|
258
|
-
throw new LibrusError('SESSION_EXPIRED');
|
|
250
|
+
throw new errors_1.LibrusError('SESSION_EXPIRED');
|
|
259
251
|
if (response.statusCode === 403)
|
|
260
|
-
throw new LibrusError('ACCESS_DENIED');
|
|
261
|
-
if (response.statusCode < 200 || response.statusCode >= 300)
|
|
262
|
-
|
|
252
|
+
throw new errors_1.LibrusError('ACCESS_DENIED');
|
|
253
|
+
if (response.statusCode < 200 || response.statusCode >= 300) {
|
|
254
|
+
const error = new errors_1.LibrusError('SERVICE_ERROR');
|
|
255
|
+
error.status = response.statusCode;
|
|
256
|
+
throw error;
|
|
257
|
+
}
|
|
263
258
|
return { ...response, url };
|
|
264
259
|
}
|
|
265
260
|
throw protocolError('limit przekierowań');
|
|
@@ -280,10 +275,10 @@ class LibrusClient {
|
|
|
280
275
|
throw actionRequired('przesłanie danych logowania', loginReply.url);
|
|
281
276
|
const reply = parseJson(loginReply.body);
|
|
282
277
|
if (!object(reply) || typeof reply.goTo !== 'string' || !reply.goTo)
|
|
283
|
-
throw new LibrusError('AUTH_FAILED');
|
|
278
|
+
throw new errors_1.LibrusError('AUTH_FAILED');
|
|
284
279
|
const continuation = checkedUrl(reply.goTo, 'https://api.librus.pl');
|
|
285
280
|
if (!authUrl(continuation))
|
|
286
|
-
throw new LibrusError('UNSAFE_URL');
|
|
281
|
+
throw new errors_1.LibrusError('UNSAFE_URL');
|
|
287
282
|
const authorized = await this.request(continuation.href);
|
|
288
283
|
if (authorized.url.hostname !== 'synergia.librus.pl' ||
|
|
289
284
|
(/\/loguj(?:\/|$)/.test(authorized.url.pathname) &&
|
|
@@ -296,7 +291,7 @@ class LibrusClient {
|
|
|
296
291
|
throw actionRequired('otwarcie skrzynki', inbox.url);
|
|
297
292
|
}
|
|
298
293
|
catch (error) {
|
|
299
|
-
if (error instanceof LibrusError && error.code === 'PROTOCOL_ERROR')
|
|
294
|
+
if (error instanceof errors_1.LibrusError && error.code === 'PROTOCOL_ERROR')
|
|
300
295
|
error.message += ' [Faza: logowanie]';
|
|
301
296
|
throw error;
|
|
302
297
|
}
|
|
@@ -315,7 +310,8 @@ class LibrusClient {
|
|
|
315
310
|
(options.contentSource !== undefined &&
|
|
316
311
|
options.contentSource !== 'preview' &&
|
|
317
312
|
options.contentSource !== 'full'))
|
|
318
|
-
throw new LibrusError('INVALID_OPTIONS');
|
|
313
|
+
throw new errors_1.LibrusError('INVALID_OPTIONS');
|
|
314
|
+
this.budgetCode = 'SCAN_INCOMPLETE';
|
|
319
315
|
this.deadline = Date.now() + 120000;
|
|
320
316
|
this.requests = 0;
|
|
321
317
|
await this.authenticate();
|
|
@@ -325,7 +321,7 @@ class LibrusClient {
|
|
|
325
321
|
const result = unreadSelection !== null && unreadSelection !== void 0 ? unreadSelection : (await this.scan(options));
|
|
326
322
|
if (options.includeContent && options.contentSource === 'full') {
|
|
327
323
|
if (result.length > 50)
|
|
328
|
-
throw new LibrusError('FULL_CONTENT_LIMIT');
|
|
324
|
+
throw new errors_1.LibrusError('FULL_CONTENT_LIMIT');
|
|
329
325
|
if (options.readStatus === 'unread')
|
|
330
326
|
unreadSelection = result;
|
|
331
327
|
for (const message of result) {
|
|
@@ -336,19 +332,20 @@ class LibrusClient {
|
|
|
336
332
|
return result;
|
|
337
333
|
}
|
|
338
334
|
catch (error) {
|
|
339
|
-
if (!(error instanceof LibrusError) || error.code !== 'SESSION_EXPIRED' || attempt === 1)
|
|
335
|
+
if (!(error instanceof errors_1.LibrusError) || error.code !== 'SESSION_EXPIRED' || attempt === 1)
|
|
340
336
|
throw error;
|
|
341
337
|
await this.authenticate();
|
|
342
338
|
}
|
|
343
339
|
}
|
|
344
|
-
throw new LibrusError('SESSION_EXPIRED');
|
|
340
|
+
throw new errors_1.LibrusError('SESSION_EXPIRED');
|
|
345
341
|
}
|
|
346
342
|
async getMessageContent(messageId) {
|
|
347
343
|
if (!this.login.username ||
|
|
348
344
|
!this.login.password ||
|
|
349
345
|
typeof messageId !== 'string' ||
|
|
350
346
|
!/^[A-Za-z0-9_-]+$/.test(messageId))
|
|
351
|
-
throw new LibrusError('INVALID_OPTIONS');
|
|
347
|
+
throw new errors_1.LibrusError('INVALID_OPTIONS');
|
|
348
|
+
this.budgetCode = 'SCAN_INCOMPLETE';
|
|
352
349
|
this.deadline = Date.now() + 120000;
|
|
353
350
|
this.requests = 0;
|
|
354
351
|
await this.authenticate();
|
|
@@ -357,25 +354,25 @@ class LibrusClient {
|
|
|
357
354
|
return { messageId, content: await this.fullContent(messageId), contentSource: 'full' };
|
|
358
355
|
}
|
|
359
356
|
catch (error) {
|
|
360
|
-
if (!(error instanceof LibrusError) || error.code !== 'SESSION_EXPIRED' || attempt === 1)
|
|
357
|
+
if (!(error instanceof errors_1.LibrusError) || error.code !== 'SESSION_EXPIRED' || attempt === 1)
|
|
361
358
|
throw error;
|
|
362
359
|
await this.authenticate();
|
|
363
360
|
}
|
|
364
361
|
}
|
|
365
|
-
throw new LibrusError('SESSION_EXPIRED');
|
|
362
|
+
throw new errors_1.LibrusError('SESSION_EXPIRED');
|
|
366
363
|
}
|
|
367
364
|
async fullContent(messageId) {
|
|
368
365
|
if (!/^[A-Za-z0-9_-]+$/.test(messageId))
|
|
369
|
-
throw new LibrusError('PROTOCOL_ERROR');
|
|
366
|
+
throw new errors_1.LibrusError('PROTOCOL_ERROR');
|
|
370
367
|
const path = `/api/inbox/messages/${encodeURIComponent(messageId)}`;
|
|
371
368
|
const response = await this.request(`https://wiadomosci.librus.pl${path}`);
|
|
372
369
|
if (authUrl(response.url) || /\/loguj(?:\/|$)/.test(response.url.pathname))
|
|
373
|
-
throw new LibrusError('SESSION_EXPIRED');
|
|
370
|
+
throw new errors_1.LibrusError('SESSION_EXPIRED');
|
|
374
371
|
if (response.url.hostname !== 'wiadomosci.librus.pl' || response.url.pathname !== path)
|
|
375
|
-
throw new LibrusError('PROTOCOL_ERROR');
|
|
372
|
+
throw new errors_1.LibrusError('PROTOCOL_ERROR');
|
|
376
373
|
const payload = parseJson(response.body);
|
|
377
374
|
if (!object(payload) || !object(payload.data) || payload.data.messageId !== messageId)
|
|
378
|
-
throw new LibrusError('PROTOCOL_ERROR');
|
|
375
|
+
throw new errors_1.LibrusError('PROTOCOL_ERROR');
|
|
379
376
|
return decodeContent(payload.data.Message);
|
|
380
377
|
}
|
|
381
378
|
async scan(options) {
|
|
@@ -389,7 +386,7 @@ class LibrusClient {
|
|
|
389
386
|
try {
|
|
390
387
|
const response = await this.request(`https://wiadomosci.librus.pl/api/inbox/messages?page=${page}&limit=${pageSize}`);
|
|
391
388
|
if (authUrl(response.url) || /\/loguj(?:\/|$)/.test(response.url.pathname))
|
|
392
|
-
throw new LibrusError('SESSION_EXPIRED');
|
|
389
|
+
throw new errors_1.LibrusError('SESSION_EXPIRED');
|
|
393
390
|
if (response.url.hostname !== 'wiadomosci.librus.pl' ||
|
|
394
391
|
response.url.pathname !== '/api/inbox/messages')
|
|
395
392
|
throw protocolError('adres skrzynki');
|
|
@@ -416,18 +413,117 @@ class LibrusClient {
|
|
|
416
413
|
if (payload.data.length === 0)
|
|
417
414
|
return [...found.values()];
|
|
418
415
|
if (scanned.size === before)
|
|
419
|
-
throw new LibrusError('SCAN_INCOMPLETE');
|
|
416
|
+
throw new errors_1.LibrusError('SCAN_INCOMPLETE');
|
|
420
417
|
if (payload.data.length < pageSize)
|
|
421
418
|
return [...found.values()];
|
|
422
419
|
}
|
|
423
420
|
catch (error) {
|
|
424
|
-
if (error instanceof LibrusError && error.code === 'PROTOCOL_ERROR') {
|
|
421
|
+
if (error instanceof errors_1.LibrusError && error.code === 'PROTOCOL_ERROR') {
|
|
425
422
|
error.message += ` [Strona skrzynki: ${page}; rozmiar strony: ${pageSize}${itemIndex === undefined ? '' : `; pozycja: ${itemIndex}`}]`;
|
|
426
423
|
}
|
|
427
424
|
throw error;
|
|
428
425
|
}
|
|
429
426
|
}
|
|
430
|
-
throw new LibrusError('SCAN_INCOMPLETE');
|
|
427
|
+
throw new errors_1.LibrusError('SCAN_INCOMPLETE');
|
|
428
|
+
}
|
|
429
|
+
async monthPage(year, month) {
|
|
430
|
+
const body = new URLSearchParams({
|
|
431
|
+
rok: String(year),
|
|
432
|
+
miesiac: String(month),
|
|
433
|
+
}).toString();
|
|
434
|
+
const response = await this.request('https://synergia.librus.pl/terminarz', body);
|
|
435
|
+
if (authUrl(response.url) ||
|
|
436
|
+
/\/loguj(?:\/|$)/.test(response.url.pathname) ||
|
|
437
|
+
isLoginForm(response.body))
|
|
438
|
+
throw new errors_1.LibrusError('SESSION_EXPIRED');
|
|
439
|
+
if (response.url.hostname !== 'synergia.librus.pl' ||
|
|
440
|
+
!/^\/terminarz\/?$/.test(response.url.pathname))
|
|
441
|
+
throw protocolError('adres terminarza');
|
|
442
|
+
try {
|
|
443
|
+
return (0, terminarz_1.parseMonth)(response.body, year, month);
|
|
444
|
+
}
|
|
445
|
+
catch (error) {
|
|
446
|
+
if (error instanceof errors_1.LibrusError && error.code === 'PROTOCOL_ERROR')
|
|
447
|
+
error.message += ` [Miesiąc terminarza: ${year}-${String(month).padStart(2, '0')}]`;
|
|
448
|
+
throw error;
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
async eventDetail(route, id) {
|
|
452
|
+
if ((route !== 'szczegoly' && route !== 'szczegoly_wolne') || !/^\d+$/.test(id))
|
|
453
|
+
throw new errors_1.LibrusError('PROTOCOL_ERROR');
|
|
454
|
+
const path = `/terminarz/${route}/${id}`;
|
|
455
|
+
let response;
|
|
456
|
+
try {
|
|
457
|
+
response = await this.request(`https://synergia.librus.pl${path}`);
|
|
458
|
+
}
|
|
459
|
+
catch (error) {
|
|
460
|
+
if (error instanceof errors_1.LibrusError && error.code === 'SERVICE_ERROR' && error.status === 404)
|
|
461
|
+
return null;
|
|
462
|
+
throw error;
|
|
463
|
+
}
|
|
464
|
+
if (authUrl(response.url) ||
|
|
465
|
+
/\/loguj(?:\/|$)/.test(response.url.pathname) ||
|
|
466
|
+
isLoginForm(response.body))
|
|
467
|
+
throw new errors_1.LibrusError('SESSION_EXPIRED');
|
|
468
|
+
if (response.url.hostname !== 'synergia.librus.pl' || response.url.pathname !== path)
|
|
469
|
+
throw protocolError('adres wydarzenia terminarza');
|
|
470
|
+
return (0, terminarz_1.parseEventDetail)(response.body);
|
|
471
|
+
}
|
|
472
|
+
async getCalendar(options, select) {
|
|
473
|
+
if (!this.login.username ||
|
|
474
|
+
!this.login.password ||
|
|
475
|
+
typeof select !== 'function' ||
|
|
476
|
+
!Array.isArray(options.months) ||
|
|
477
|
+
options.months.length < 1 ||
|
|
478
|
+
options.months.length > 7 ||
|
|
479
|
+
options.months.some((month) => !/^\d{4}-(?:0[1-9]|1[0-2])$/.test(month)))
|
|
480
|
+
throw new errors_1.LibrusError('CALENDAR_INVALID_OPTIONS');
|
|
481
|
+
this.budgetCode = 'CALENDAR_SCAN_INCOMPLETE';
|
|
482
|
+
this.deadline = Date.now() + 120000;
|
|
483
|
+
this.requests = 0;
|
|
484
|
+
await this.authenticate();
|
|
485
|
+
for (let attempt = 0; attempt < 2; attempt++) {
|
|
486
|
+
try {
|
|
487
|
+
const entries = [];
|
|
488
|
+
for (const month of options.months) {
|
|
489
|
+
const [year, index] = month.split('-').map(Number);
|
|
490
|
+
if (year < 2000 || year > 2100)
|
|
491
|
+
throw new errors_1.LibrusError('CALENDAR_INVALID_OPTIONS');
|
|
492
|
+
entries.push(...(await this.monthPage(year, index)));
|
|
493
|
+
}
|
|
494
|
+
const known = new Map(entries.map((entry) => [entry.key, entry]));
|
|
495
|
+
const selected = select(entries);
|
|
496
|
+
if (!Array.isArray(selected))
|
|
497
|
+
throw new errors_1.LibrusError('CALENDAR_INVALID_OPTIONS');
|
|
498
|
+
const details = new Map();
|
|
499
|
+
const fetchable = [];
|
|
500
|
+
for (const key of selected) {
|
|
501
|
+
const entry = known.get(key);
|
|
502
|
+
if (!entry)
|
|
503
|
+
continue;
|
|
504
|
+
if (!entry.route || !entry.eventId) {
|
|
505
|
+
details.set(key, null);
|
|
506
|
+
continue;
|
|
507
|
+
}
|
|
508
|
+
fetchable.push({ key, route: entry.route, id: entry.eventId });
|
|
509
|
+
}
|
|
510
|
+
for (const { key, route, id } of fetchable.slice(0, MAX_DETAILS)) {
|
|
511
|
+
if (MAX_REQUESTS - this.requests < DETAIL_HEADROOM)
|
|
512
|
+
break;
|
|
513
|
+
const detail = await this.eventDetail(route, id);
|
|
514
|
+
if (detail !== null)
|
|
515
|
+
details.set(key, detail);
|
|
516
|
+
}
|
|
517
|
+
return { entries, details };
|
|
518
|
+
}
|
|
519
|
+
catch (error) {
|
|
520
|
+
if (!(error instanceof errors_1.LibrusError) || error.code !== 'SESSION_EXPIRED' || attempt === 1)
|
|
521
|
+
throw error;
|
|
522
|
+
this.requests = 0;
|
|
523
|
+
await this.authenticate();
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
throw new errors_1.LibrusError('SESSION_EXPIRED');
|
|
431
527
|
}
|
|
432
528
|
}
|
|
433
529
|
exports.LibrusClient = LibrusClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LibrusClient.js","sourceRoot":"","sources":["../../../nodes/Librus/LibrusClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LibrusClient.js","sourceRoot":"","sources":["../../../nodes/Librus/LibrusClient.ts"],"names":[],"mappings":";;;AAAA,+CAAyC;AAEzC,qCAMkB;AAET,4FALR,oBAAW,OAKQ;AAAE,0FAHrB,kBAAS,OAGqB;AAD/B,2CAAoG;AAyEpG,SAAS,aAAa,CAAC,KAAoB,EAAE,KAAe;IAC3D,OAAO,IAAA,sBAAiB,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC;AACD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAC5B,kBAAkB;IAClB,oBAAoB;IACpB,eAAe;IACf,sBAAsB;CACtB,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC;AAE1E,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB,MAAM,YAAY,GAAG,GAAG,CAAC;AAEzB,MAAM,aAAa,GAAG,EAAE,CAAC;AASzB,MAAM,eAAe,GAAG,aAAa,GAAG,CAAC,CAAC;AAC1C,SAAS,UAAU,CAAC,KAAa,EAAE,IAAa;IAC/C,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACJ,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,IAAI,oBAAW,CAAC,YAAY,CAAC,CAAC;IACrC,CAAC;IACD,IACC,GAAG,CAAC,QAAQ,KAAK,QAAQ;QACzB,GAAG,CAAC,IAAI;QACR,GAAG,CAAC,QAAQ;QACZ,GAAG,CAAC,QAAQ;QACZ,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,EAC9B,CAAC;QACF,MAAM,SAAS,GACd,GAAG,CAAC,QAAQ,KAAK,QAAQ;YACxB,CAAC,CAAC,iBAAiB;YACnB,CAAC,CAAC,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ;gBAC7B,CAAC,CAAC,8BAA8B;gBAChC,CAAC,CAAC,GAAG,CAAC,IAAI;oBACT,CAAC,CAAC,qBAAqB;oBACvB,CAAC,CAAC,sBAAsB,CAAC;QAC7B,MAAM,IAAI,oBAAW,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC;AACD,SAAS,eAAe,CAAC,KAAa,EAAE,IAAY;IACnD,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACJ,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,IAAI,oBAAW,CAAC,YAAY,CAAC,CAAC;IACrC,CAAC;IAGD,IACC,GAAG,CAAC,QAAQ,KAAK,OAAO;QACxB,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC9B,CAAC,GAAG,CAAC,IAAI;QACT,CAAC,GAAG,CAAC,QAAQ;QACb,CAAC,GAAG,CAAC,QAAQ;QAEb,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACzB,OAAO,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AACD,SAAS,OAAO,CAAC,GAAQ;IACxB,OAAO,GAAG,CAAC,QAAQ,KAAK,eAAe,IAAI,iCAAiC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACjG,CAAC;AACD,SAAS,cAAc,CAAC,KAAgB,EAAE,GAAQ;IACjD,MAAM,WAAW,GAAoB,OAAO,CAAC,GAAG,CAAC;QAChD,CAAC,CAAC,mBAAmB;QACrB,CAAC,CAAC,GAAG,CAAC,QAAQ,KAAK,oBAAoB,IAAI,GAAG,CAAC,QAAQ,KAAK,sBAAsB;YACjF,CAAC,CAAC,0BAA0B;YAC5B,CAAC,CAAC,GAAG,CAAC,QAAQ,KAAK,oBAAoB,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAC/E,CAAC,CAAC,uBAAuB;gBACzB,CAAC,CAAC,GAAG,CAAC,QAAQ,KAAK,oBAAoB;oBACtC,CAAC,CAAC,iBAAiB;oBACnB,CAAC,CAAC,GAAG,CAAC,QAAQ,KAAK,sBAAsB;wBACxC,CAAC,CAAC,mBAAmB;wBACrB,CAAC,CAAC,uBAAuB,CAAC;IAC/B,OAAO,IAAI,oBAAW,CAAC,iBAAiB,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;AAC/D,CAAC;AACD,SAAS,MAAM,CAAC,KAAc;IAC7B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC7E,CAAC;AACD,SAAS,SAAS,CAAC,IAAY;IAC9B,IAAI,CAAC;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAClF,CAAC;AACF,CAAC;AACD,SAAS,MAAM,CAAC,IAAY;IAC3B,OAAO,yCAAyC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7D,CAAC;AACD,SAAS,WAAW,CAAC,IAAY;IAEhC,OAAO,CACN,MAAM,CAAC,IAAI,CAAC;QACZ,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;QACrB,sDAAsD,CAAC,IAAI,CAAC,IAAI,CAAC;QACjE,0CAA0C,CAAC,IAAI,CAAC,IAAI,CAAC,CACrD,CAAC;AACH,CAAC;AACD,SAAS,aAAa,CAAC,KAAc;IACpC,IACC,OAAO,KAAK,KAAK,QAAQ;QACzB,CAAC,kEAAkE,CAAC,IAAI,CAAC,KAAK,CAAC,EAC9E,CAAC;QACF,MAAM,aAAa,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,CAAC;QACJ,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;IACvF,CAAC;IAAC,MAAM,CAAC;QACR,MAAM,aAAa,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;AACF,CAAC;AAGD,SAAS,SAAS,CAAC,KAAc;IAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,aAAa,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACtE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,GAAY,EAAE,EAAE;QACjC,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC;QACxC,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACjB,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,IAAI,GAAG,CAAC,EAAE;gBAAE,OAAO,GAAG,CAAC,EAAE,CAAC;YACxD,IAAI,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC;gBAC5E,OAAO,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC;QACD,MAAM,aAAa,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;AACJ,CAAC;AACD,SAAS,YAAY,CAAC,KAAc,EAAE,cAAuB;IAC5D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;QAAE,MAAM,aAAa,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG;QACf,WAAW;QACX,iBAAiB;QACjB,gBAAgB;QAChB,YAAY;QACZ,OAAO;QACP,UAAU;KACD,CAAC;IACX,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC3B,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,KAAK,WAAW,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACzE,MAAM,aAAa,CAAC,WAAW,GAAG,EAAE,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAuB,CAAC;IACjG,KAAK,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAU,EAAE,CAAC;QACrD,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;YACrE,MAAM,aAAa,CAAC,WAAW,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;QAC9C,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,CAAC;IAC7B,CAAC;IACD,IAAI,OAAO,KAAK,CAAC,iBAAiB,KAAK,SAAS;QAC/C,MAAM,aAAa,CAAC,2BAA2B,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC3E,MAAM,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC;IACnD,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,cAAc,EAAE,CAAC;QACpB,MAAM,CAAC,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,CAAC,aAAa,GAAG,SAAS,CAAC;IAClC,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAGD,MAAa,YAAY;IAUxB,YACkB,SAAoB,EACpB,KAAY;QADZ,cAAS,GAAT,SAAS,CAAW;QACpB,UAAK,GAAL,KAAK,CAAO;QAXtB,QAAG,GAAG,IAAI,wBAAS,EAAE,CAAC;QACtB,aAAQ,GAAG,CAAC,CAAC;QACb,aAAQ,GAAG,CAAC,CAAC;QAMb,eAAU,GAAmD,iBAAiB,CAAC;IAIpF,CAAC;IAEI,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,IAAa;QACjD,IAAI,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAC5B,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,IAAI,aAAa,EAAE,GAAG,EAAE,EAAE,CAAC;YAC/C,IAAI,EAAE,IAAI,CAAC,QAAQ,GAAG,YAAY,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,QAAQ;gBAChE,MAAM,IAAI,oBAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACxC,IACC,IAAI,KAAK,SAAS;gBAClB,CAAC,OAAO,CAAC,GAAG,CAAC;gBACb,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAEpD,MAAM,IAAI,oBAAW,CAAC,YAAY,CAAC,CAAC;YACrC,MAAM,OAAO,GAA2B;gBACvC,MAAM,EAAE,mCAAmC;gBAC3C,YAAY,EAAE,sBAAsB;aACpC,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACxD,IAAI,MAAM;gBAAE,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;YACpC,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO,CAAC,cAAc,CAAC,GAAG,mCAAmC,CAAC;YACtF,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7C,IAAI,SAAS,IAAI,CAAC;gBAAE,MAAM,IAAI,oBAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC3D,IAAI,QAAkB,CAAC;YACvB,IAAI,CAAC;gBACJ,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC;oBAC/B,GAAG,EAAE,GAAG,CAAC,IAAI;oBACb,MAAM,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;oBAC3C,OAAO;oBACP,IAAI;oBACJ,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;iBAChD,CAAC,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACR,MAAM,IAAI,oBAAW,CAAC,iBAAiB,CAAC,CAAC;YAC1C,CAAC;YACD,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ;gBACpC,MAAM,aAAa,CAAC,4BAA4B,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YAClE,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,QAAU;gBAAE,MAAM,aAAa,CAAC,yBAAyB,CAAC,CAAC;YACtF,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CACpC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,CAAC,CAC9E,CAAC;YACF,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;YACzC,KAAK,MAAM,KAAK,IAAI,OAAO,KAAK,SAAS;gBACxC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;oBACvB,CAAC,CAAC,OAAO;oBACT,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;gBACf,IAAI,CAAC;oBACJ,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC3C,CAAC;gBAAC,MAAM,CAAC;oBACR,MAAM,aAAa,CAAC,uBAAuB,CAAC,CAAC;gBAC9C,CAAC;YACF,CAAC;YACD,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAE7D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACxB,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;oBACrC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;wBACnD,IAAI,MAAuB,CAAC;wBAC5B,IAAI,CAAC;4BACJ,MAAM,GAAG,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;wBAC9C,CAAC;wBAAC,MAAM,CAAC;4BACR,MAAM,GAAG,SAAS,CAAC;wBACpB,CAAC;wBACD,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;4BAC1E,MAAM,IAAI,oBAAW,CAAC,iBAAiB,CAAC,CAAC;oBAC3C,CAAC;oBACD,MAAM,aAAa,CAAC,qBAAqB,CAAC,CAAC;gBAC5C,CAAC;gBACD,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;gBACrC,IAAI,OAAO,QAAQ,KAAK,QAAQ;oBAAE,MAAM,aAAa,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;gBACxF,GAAG,GAAG,eAAe,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC1C,SAAS;YACV,CAAC;YACD,IAAI,QAAQ,CAAC,UAAU,KAAK,GAAG;gBAAE,MAAM,IAAI,oBAAW,CAAC,cAAc,CAAC,CAAC;YACvE,IAAI,QAAQ,CAAC,UAAU,KAAK,GAAG;gBAAE,MAAM,IAAI,oBAAW,CAAC,iBAAiB,CAAC,CAAC;YAC1E,IACC,CAAC,QAAQ,CAAC,UAAU,KAAK,GAAG,IAAI,QAAQ,CAAC,UAAU,KAAK,GAAG,CAAC;gBAC5D,GAAG,CAAC,QAAQ,KAAK,sBAAsB;gBACvC,+CAA+C,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAClE,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAE1B,MAAM,IAAI,oBAAW,CAAC,iBAAiB,CAAC,CAAC;YAC1C,IAAI,QAAQ,CAAC,UAAU,KAAK,GAAG;gBAAE,MAAM,IAAI,oBAAW,CAAC,eAAe,CAAC,CAAC;YACxE,IAAI,QAAQ,CAAC,UAAU,GAAG,GAAG,IAAI,QAAQ,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;gBAC7D,MAAM,KAAK,GAAG,IAAI,oBAAW,CAAC,eAAe,CAAC,CAAC;gBAC/C,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC;gBACnC,MAAM,KAAK,CAAC;YACb,CAAC;YACD,OAAO,EAAE,GAAG,QAAQ,EAAE,GAAG,EAAE,CAAC;QAC7B,CAAC;QACD,MAAM,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAC3C,CAAC;IAEO,KAAK,CAAC,YAAY;QACzB,IAAI,CAAC;YACJ,IAAI,CAAC,GAAG,GAAG,IAAI,wBAAS,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC;YACnF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;gBAAE,MAAM,cAAc,CAAC,uBAAuB,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;YAClF,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC;gBAChC,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;gBAC1B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;aACzB,CAAC,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACvE,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;gBAC1B,MAAM,cAAc,CAAC,6BAA6B,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;YACrE,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI;gBAClE,MAAM,IAAI,oBAAW,CAAC,aAAa,CAAC,CAAC;YACtC,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,uBAAuB,CAAC,CAAC;YACrE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;gBAAE,MAAM,IAAI,oBAAW,CAAC,YAAY,CAAC,CAAC;YAChE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACzD,IACC,UAAU,CAAC,GAAG,CAAC,QAAQ,KAAK,oBAAoB;gBAChD,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;oBAC/C,CAAC,6BAA6B,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC9D,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC;gBAE5B,MAAM,cAAc,CAAC,yBAAyB,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;YACjE,MAAM,IAAI,CAAC,OAAO,CAAC,4DAA4D,CAAC,CAAC;YACjF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC;YAC3E,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACnE,MAAM,cAAc,CAAC,mBAAmB,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,oBAAW,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB;gBAClE,KAAK,CAAC,OAAO,IAAI,oBAAoB,CAAC;YACvC,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAa;QAC9B,IACC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ;YACpB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ;YACpB,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;YAChC,OAAO,CAAC,KAAK,GAAG,CAAC;YACjB,OAAO,CAAC,KAAK,GAAG,IAAI;YACpB,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC;YACnC,OAAO,CAAC,QAAQ,GAAG,CAAC;YACpB,OAAO,CAAC,QAAQ,GAAG,EAAE;YACrB,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS;gBAChC,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACzD,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS;gBACnC,OAAO,CAAC,aAAa,KAAK,SAAS;gBACnC,OAAO,CAAC,aAAa,KAAK,MAAM,CAAC;YAElC,MAAM,IAAI,oBAAW,CAAC,iBAAiB,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1B,IAAI,eAAsC,CAAC;QAC3C,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;YAC9C,IAAI,CAAC;gBAEJ,MAAM,MAAM,GAAG,eAAe,aAAf,eAAe,cAAf,eAAe,GAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC7D,IAAI,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;oBAChE,IAAI,MAAM,CAAC,MAAM,GAAG,EAAE;wBAAE,MAAM,IAAI,oBAAW,CAAC,oBAAoB,CAAC,CAAC;oBACpE,IAAI,OAAO,CAAC,UAAU,KAAK,QAAQ;wBAAE,eAAe,GAAG,MAAM,CAAC;oBAC9D,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;wBAC9B,OAAO,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;wBAC5D,OAAO,CAAC,aAAa,GAAG,MAAM,CAAC;oBAChC,CAAC;gBACF,CAAC;gBACD,OAAO,MAAM,CAAC;YACf,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,CAAC,KAAK,YAAY,oBAAW,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,IAAI,OAAO,KAAK,CAAC;oBACvF,MAAM,KAAK,CAAC;gBACb,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC3B,CAAC;QACF,CAAC;QACD,MAAM,IAAI,oBAAW,CAAC,iBAAiB,CAAC,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,iBAAiB,CACtB,SAAiB;QAEjB,IACC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ;YACpB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ;YACpB,OAAO,SAAS,KAAK,QAAQ;YAC7B,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC;YAEnC,MAAM,IAAI,oBAAW,CAAC,iBAAiB,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1B,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;YAC9C,IAAI,CAAC;gBACJ,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;YACzF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,CAAC,KAAK,YAAY,oBAAW,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,IAAI,OAAO,KAAK,CAAC;oBACvF,MAAM,KAAK,CAAC;gBACb,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC3B,CAAC;QACF,CAAC;QACD,MAAM,IAAI,oBAAW,CAAC,iBAAiB,CAAC,CAAC;IAC1C,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,SAAiB;QAC1C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC;YAAE,MAAM,IAAI,oBAAW,CAAC,gBAAgB,CAAC,CAAC;QACjF,MAAM,IAAI,GAAG,uBAAuB,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;QACpE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC;QAC3E,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;YACzE,MAAM,IAAI,oBAAW,CAAC,iBAAiB,CAAC,CAAC;QAC1C,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,KAAK,sBAAsB,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,KAAK,IAAI;YACrF,MAAM,IAAI,oBAAW,CAAC,gBAAgB,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS;YACpF,MAAM,IAAI,oBAAW,CAAC,gBAAgB,CAAC,CAAC;QACzC,OAAO,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAEO,KAAK,CAAC,IAAI,CAAC,OAAa;QAC/B,MAAM,QAAQ,GACb,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,KAAK,KAAK,CAAC;YACxE,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAmB,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;YACrD,IAAI,SAA6B,CAAC;YAClC,IAAI,CAAC;gBACJ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAClC,wDAAwD,IAAI,UAAU,QAAQ,EAAE,CAChF,CAAC;gBACF,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;oBACzE,MAAM,IAAI,oBAAW,CAAC,iBAAiB,CAAC,CAAC;gBAC1C,IACC,QAAQ,CAAC,GAAG,CAAC,QAAQ,KAAK,sBAAsB;oBAChD,QAAQ,CAAC,GAAG,CAAC,QAAQ,KAAK,qBAAqB;oBAE/C,MAAM,aAAa,CAAC,gBAAgB,CAAC,CAAC;gBACvC,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACzC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;oBAAE,MAAM,aAAa,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC;gBACjF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;oBAAE,MAAM,aAAa,CAAC,oBAAoB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC1F,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ;oBACjC,MAAM,aAAa,CAAC,8BAA8B,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBACnE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;gBAC5B,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;oBACnD,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;oBACtB,MAAM,OAAO,GAAG,YAAY,CAC3B,GAAG,EACH,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,aAAa,KAAK,MAAM,CAC1D,CAAC;oBACF,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,KAAK,IAAI,IAAI,OAAO,CAAC,QAAQ,KAAK,EAAE,CAAC;oBACpE,IACC,CAAC,OAAO,CAAC,UAAU;wBACnB,OAAO,CAAC,UAAU,KAAK,KAAK;wBAC5B,CAAC,OAAO,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;wBAEpD,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBACxC,CAAC;gBACD,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK;oBACpD,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;gBACpD,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC1D,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM;oBAAE,MAAM,IAAI,oBAAW,CAAC,iBAAiB,CAAC,CAAC;gBACtE,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ;oBAAE,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YAChE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,KAAK,YAAY,oBAAW,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;oBACrE,KAAK,CAAC,OAAO,IAAI,sBAAsB,IAAI,qBAAqB,QAAQ,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,SAAS,EAAE,GAAG,CAAC;gBACxI,CAAC;gBACD,MAAM,KAAK,CAAC;YACb,CAAC;QACF,CAAC;QACD,MAAM,IAAI,oBAAW,CAAC,iBAAiB,CAAC,CAAC;IAC1C,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,KAAa;QAClD,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC;YAChC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC;YACjB,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC;SACtB,CAAC,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,sCAAsC,EAAE,IAAI,CAAC,CAAC;QAClF,IACC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;YACrB,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC7C,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;YAE1B,MAAM,IAAI,oBAAW,CAAC,iBAAiB,CAAC,CAAC;QAC1C,IACC,QAAQ,CAAC,GAAG,CAAC,QAAQ,KAAK,oBAAoB;YAC9C,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;YAE/C,MAAM,aAAa,CAAC,kBAAkB,CAAC,CAAC;QACzC,IAAI,CAAC;YACJ,OAAO,IAAA,sBAAU,EAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,YAAY,oBAAW,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB;gBAClE,KAAK,CAAC,OAAO,IAAI,yBAAyB,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC;YACrF,MAAM,KAAK,CAAC;QACb,CAAC;IACF,CAAC;IAEO,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,EAAU;QAClD,IAAI,CAAC,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9E,MAAM,IAAI,oBAAW,CAAC,gBAAgB,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,cAAc,KAAK,IAAI,EAAE,EAAE,CAAC;QACzC,IAAI,QAAQ,CAAC;QACb,IAAI,CAAC;YACJ,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,6BAA6B,IAAI,EAAE,CAAC,CAAC;QACpE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEhB,IAAI,KAAK,YAAY,oBAAW,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG;gBACzF,OAAO,IAAI,CAAC;YACb,MAAM,KAAK,CAAC;QACb,CAAC;QACD,IACC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;YACrB,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC7C,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;YAE1B,MAAM,IAAI,oBAAW,CAAC,iBAAiB,CAAC,CAAC;QAK1C,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,KAAK,oBAAoB,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,KAAK,IAAI;YACnF,MAAM,aAAa,CAAC,6BAA6B,CAAC,CAAC;QACpD,OAAO,IAAA,4BAAgB,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAqB,EAAE,MAAsB;QAC9D,IACC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ;YACpB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ;YACpB,OAAO,MAAM,KAAK,UAAU;YAC5B,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;YAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YACzB,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YACzB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAExE,MAAM,IAAI,oBAAW,CAAC,0BAA0B,CAAC,CAAC;QACnD,IAAI,CAAC,UAAU,GAAG,0BAA0B,CAAC;QAC7C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1B,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;YAC9C,IAAI,CAAC;gBACJ,MAAM,OAAO,GAAoB,EAAE,CAAC;gBACpC,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;oBACpC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACnD,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI;wBAAE,MAAM,IAAI,oBAAW,CAAC,0BAA0B,CAAC,CAAC;oBAClF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtD,CAAC;gBACD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBAClE,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;gBACjC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;oBAAE,MAAM,IAAI,oBAAW,CAAC,0BAA0B,CAAC,CAAC;gBAChF,MAAM,OAAO,GAAG,IAAI,GAAG,EAAiC,CAAC;gBAIzD,MAAM,SAAS,GAA0E,EAAE,CAAC;gBAC5F,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;oBAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAC7B,IAAI,CAAC,KAAK;wBAAE,SAAS;oBACrB,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;wBACpC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;wBACvB,SAAS;oBACV,CAAC;oBACD,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChE,CAAC;gBAID,KAAK,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC;oBAClE,IAAI,YAAY,GAAG,IAAI,CAAC,QAAQ,GAAG,eAAe;wBAAE,MAAM;oBAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBACjD,IAAI,MAAM,KAAK,IAAI;wBAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBAC/C,CAAC;gBACD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;YAC7B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,CAAC,CAAC,KAAK,YAAY,oBAAW,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,IAAI,OAAO,KAAK,CAAC;oBACvF,MAAM,KAAK,CAAC;gBAKb,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;gBAClB,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;YAC3B,CAAC;QACF,CAAC;QACD,MAAM,IAAI,oBAAW,CAAC,iBAAiB,CAAC,CAAC;IAC1C,CAAC;CACD;AA/YD,oCA+YC"}
|