@newyorkcompute/kalshi-tui 0.1.0 → 0.3.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.
Files changed (113) hide show
  1. package/README.md +35 -0
  2. package/dist/App.d.ts +2 -1
  3. package/dist/App.d.ts.map +1 -1
  4. package/dist/App.js +43 -36
  5. package/dist/App.js.map +1 -1
  6. package/dist/cache.d.ts +34 -0
  7. package/dist/cache.d.ts.map +1 -0
  8. package/dist/cache.js +60 -0
  9. package/dist/cache.js.map +1 -0
  10. package/dist/cache.test.d.ts +2 -0
  11. package/dist/cache.test.d.ts.map +1 -0
  12. package/dist/cache.test.js +73 -0
  13. package/dist/cache.test.js.map +1 -0
  14. package/dist/cli.d.ts +2 -2
  15. package/dist/cli.js +31 -35
  16. package/dist/cli.js.map +1 -1
  17. package/dist/components/ErrorBoundary.d.ts +20 -0
  18. package/dist/components/ErrorBoundary.d.ts.map +1 -0
  19. package/dist/components/ErrorBoundary.js +28 -0
  20. package/dist/components/ErrorBoundary.js.map +1 -0
  21. package/dist/components/Footer.d.ts +6 -0
  22. package/dist/components/Footer.d.ts.map +1 -0
  23. package/dist/components/Footer.js +10 -0
  24. package/dist/components/Footer.js.map +1 -0
  25. package/dist/components/Header.d.ts +10 -2
  26. package/dist/components/Header.d.ts.map +1 -1
  27. package/dist/components/Header.js +18 -9
  28. package/dist/components/Header.js.map +1 -1
  29. package/dist/components/Markets.d.ts +21 -0
  30. package/dist/components/Markets.d.ts.map +1 -0
  31. package/dist/components/Markets.js +25 -0
  32. package/dist/components/Markets.js.map +1 -0
  33. package/dist/components/Orderbook.d.ts +18 -5
  34. package/dist/components/Orderbook.d.ts.map +1 -1
  35. package/dist/components/Orderbook.js +25 -36
  36. package/dist/components/Orderbook.js.map +1 -1
  37. package/dist/components/Positions.d.ts +13 -2
  38. package/dist/components/Positions.d.ts.map +1 -1
  39. package/dist/components/Positions.js +10 -17
  40. package/dist/components/Positions.js.map +1 -1
  41. package/dist/components/PriceChart.d.ts +18 -0
  42. package/dist/components/PriceChart.d.ts.map +1 -0
  43. package/dist/components/PriceChart.js +103 -0
  44. package/dist/components/PriceChart.js.map +1 -0
  45. package/dist/components/index.d.ts +10 -10
  46. package/dist/components/index.d.ts.map +1 -1
  47. package/dist/components/index.js +10 -11
  48. package/dist/components/index.js.map +1 -1
  49. package/dist/hooks/index.d.ts +4 -4
  50. package/dist/hooks/index.d.ts.map +1 -1
  51. package/dist/hooks/index.js +4 -4
  52. package/dist/hooks/index.js.map +1 -1
  53. package/dist/hooks/useKalshi.d.ts +30 -12
  54. package/dist/hooks/useKalshi.d.ts.map +1 -1
  55. package/dist/hooks/useKalshi.js +249 -19
  56. package/dist/hooks/useKalshi.js.map +1 -1
  57. package/dist/utils.d.ts +33 -0
  58. package/dist/utils.d.ts.map +1 -0
  59. package/dist/utils.js +88 -0
  60. package/dist/utils.js.map +1 -0
  61. package/dist/utils.test.d.ts +2 -0
  62. package/dist/utils.test.d.ts.map +1 -0
  63. package/dist/utils.test.js +115 -0
  64. package/dist/utils.test.js.map +1 -0
  65. package/package.json +8 -8
  66. package/dist/components/HelpModal.d.ts +0 -5
  67. package/dist/components/HelpModal.d.ts.map +0 -1
  68. package/dist/components/HelpModal.js +0 -19
  69. package/dist/components/HelpModal.js.map +0 -1
  70. package/dist/components/MarketList.d.ts +0 -5
  71. package/dist/components/MarketList.d.ts.map +0 -1
  72. package/dist/components/MarketList.js +0 -68
  73. package/dist/components/MarketList.js.map +0 -1
  74. package/dist/components/OrderEntry.d.ts +0 -9
  75. package/dist/components/OrderEntry.d.ts.map +0 -1
  76. package/dist/components/OrderEntry.js +0 -77
  77. package/dist/components/OrderEntry.js.map +0 -1
  78. package/dist/components/SearchBar.d.ts +0 -5
  79. package/dist/components/SearchBar.d.ts.map +0 -1
  80. package/dist/components/SearchBar.js +0 -27
  81. package/dist/components/SearchBar.js.map +0 -1
  82. package/dist/components/StatusBar.d.ts +0 -5
  83. package/dist/components/StatusBar.d.ts.map +0 -1
  84. package/dist/components/StatusBar.js +0 -9
  85. package/dist/components/StatusBar.js.map +0 -1
  86. package/dist/components/ui/Box.d.ts +0 -14
  87. package/dist/components/ui/Box.d.ts.map +0 -1
  88. package/dist/components/ui/Box.js +0 -9
  89. package/dist/components/ui/Box.js.map +0 -1
  90. package/dist/components/ui/Sparkline.d.ts +0 -11
  91. package/dist/components/ui/Sparkline.d.ts.map +0 -1
  92. package/dist/components/ui/Sparkline.js +0 -32
  93. package/dist/components/ui/Sparkline.js.map +0 -1
  94. package/dist/hooks/useMarkets.d.ts +0 -13
  95. package/dist/hooks/useMarkets.d.ts.map +0 -1
  96. package/dist/hooks/useMarkets.js +0 -89
  97. package/dist/hooks/useMarkets.js.map +0 -1
  98. package/dist/hooks/useOrderbook.d.ts +0 -13
  99. package/dist/hooks/useOrderbook.d.ts.map +0 -1
  100. package/dist/hooks/useOrderbook.js +0 -81
  101. package/dist/hooks/useOrderbook.js.map +0 -1
  102. package/dist/hooks/usePortfolio.d.ts +0 -18
  103. package/dist/hooks/usePortfolio.d.ts.map +0 -1
  104. package/dist/hooks/usePortfolio.js +0 -84
  105. package/dist/hooks/usePortfolio.js.map +0 -1
  106. package/dist/stores/app-store.d.ts +0 -17
  107. package/dist/stores/app-store.d.ts.map +0 -1
  108. package/dist/stores/app-store.js +0 -21
  109. package/dist/stores/app-store.js.map +0 -1
  110. package/dist/theme.d.ts +0 -31
  111. package/dist/theme.d.ts.map +0 -1
  112. package/dist/theme.js +0 -37
  113. package/dist/theme.js.map +0 -1
@@ -1,81 +0,0 @@
1
- import { useState, useEffect, useCallback, useRef } from "react";
2
- import { useKalshi } from "./useKalshi.js";
3
- // Helper to check if orderbook data has changed
4
- function orderbookChanged(prev, next) {
5
- if (!prev && !next)
6
- return false;
7
- if (!prev || !next)
8
- return true;
9
- return JSON.stringify(prev) !== JSON.stringify(next);
10
- }
11
- /**
12
- * Hook to fetch and poll orderbook data for a specific market
13
- */
14
- export function useOrderbook(ticker, pollInterval = 10000) {
15
- const { marketApi } = useKalshi();
16
- const [orderbook, setOrderbook] = useState(null);
17
- const [isLoading, setIsLoading] = useState(false);
18
- const [error, setError] = useState(null);
19
- const orderbookRef = useRef(null);
20
- const fetchOrderbook = useCallback(async () => {
21
- if (!marketApi || !ticker) {
22
- if (orderbookRef.current !== null) {
23
- orderbookRef.current = null;
24
- setOrderbook(null);
25
- }
26
- return;
27
- }
28
- // Only show loading on first fetch
29
- if (!orderbookRef.current) {
30
- setIsLoading(true);
31
- }
32
- try {
33
- // API signature: getMarketOrderbook(ticker, depth)
34
- const response = await marketApi.getMarketOrderbook(ticker, 10);
35
- const ob = response.data.orderbook;
36
- let newOrderbook = null;
37
- if (ob) {
38
- // Orderbook has yes_dollars and no_dollars arrays (string[][])
39
- // Each entry is [price_string, quantity_string]
40
- const parseLevel = (entry) => [
41
- parseFloat(entry[0] || "0"),
42
- parseInt(entry[1] || "0", 10),
43
- ];
44
- newOrderbook = {
45
- yes: (ob.yes_dollars || []).map(parseLevel),
46
- no: (ob.no_dollars || []).map(parseLevel),
47
- };
48
- }
49
- // Only update state if data actually changed
50
- if (orderbookChanged(orderbookRef.current, newOrderbook)) {
51
- orderbookRef.current = newOrderbook;
52
- setOrderbook(newOrderbook);
53
- }
54
- setError(null);
55
- }
56
- catch (err) {
57
- setError(err instanceof Error ? err.message : "Failed to fetch orderbook");
58
- }
59
- finally {
60
- setIsLoading(false);
61
- }
62
- }, [marketApi, ticker]);
63
- // Fetch when ticker changes
64
- useEffect(() => {
65
- fetchOrderbook();
66
- }, [fetchOrderbook]);
67
- // Polling
68
- useEffect(() => {
69
- if (!marketApi || !ticker)
70
- return;
71
- const interval = setInterval(fetchOrderbook, pollInterval);
72
- return () => clearInterval(interval);
73
- }, [marketApi, ticker, pollInterval, fetchOrderbook]);
74
- return {
75
- orderbook,
76
- isLoading,
77
- error,
78
- refresh: fetchOrderbook,
79
- };
80
- }
81
- //# sourceMappingURL=useOrderbook.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useOrderbook.js","sourceRoot":"","sources":["../../src/hooks/useOrderbook.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import type { PositionDisplay } from "@newyorkcompute/kalshi-core";
2
- interface Balance {
3
- balance: number;
4
- portfolioValue: number;
5
- }
6
- interface UsePortfolioResult {
7
- balance: Balance | null;
8
- positions: PositionDisplay[];
9
- isLoading: boolean;
10
- error: string | null;
11
- refresh: () => Promise<void>;
12
- }
13
- /**
14
- * Hook to fetch and poll portfolio data (balance + positions)
15
- */
16
- export declare function usePortfolio(pollInterval?: number): UsePortfolioResult;
17
- export {};
18
- //# sourceMappingURL=usePortfolio.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usePortfolio.d.ts","sourceRoot":"","sources":["../../src/hooks/usePortfolio.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAcnE,UAAU,OAAO;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,kBAAkB;IAC1B,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,eAAe,EAAE,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,YAAY,SAAQ,GAAG,kBAAkB,CA8ErE"}
@@ -1,84 +0,0 @@
1
- import { useState, useEffect, useCallback, useRef } from "react";
2
- import { useKalshi } from "./useKalshi.js";
3
- import { useAppStore } from "../stores/app-store.js";
4
- // Helper to check if balance changed
5
- function balanceChanged(prev, next) {
6
- if (!prev && !next)
7
- return false;
8
- if (!prev || !next)
9
- return true;
10
- return prev.balance !== next.balance || prev.portfolioValue !== next.portfolioValue;
11
- }
12
- /**
13
- * Hook to fetch and poll portfolio data (balance + positions)
14
- */
15
- export function usePortfolio(pollInterval = 30000) {
16
- const { portfolioApi } = useKalshi();
17
- const setIsConnected = useAppStore((state) => state.setIsConnected);
18
- const [balance, setBalance] = useState(null);
19
- const [positions, setPositions] = useState([]);
20
- const [isLoading, setIsLoading] = useState(true);
21
- const [error, setError] = useState(null);
22
- const balanceRef = useRef(null);
23
- const fetchPortfolio = useCallback(async () => {
24
- if (!portfolioApi)
25
- return;
26
- try {
27
- // Fetch balance and positions in parallel
28
- // API signature: getPositions(cursor, limit, countFilter, settlementStatus, ticker, eventTicker)
29
- const [balanceResponse, positionsResponse] = await Promise.all([
30
- portfolioApi.getBalance(),
31
- portfolioApi.getPositions(undefined, // cursor
32
- 100, // limit
33
- "position" // countFilter
34
- ),
35
- ]);
36
- const newBalance = {
37
- balance: balanceResponse.data.balance || 0,
38
- portfolioValue: balanceResponse.data.portfolio_value || 0,
39
- };
40
- // Only update balance if it changed
41
- if (balanceChanged(balanceRef.current, newBalance)) {
42
- balanceRef.current = newBalance;
43
- setBalance(newBalance);
44
- }
45
- // Map to our display type
46
- const positionData = (positionsResponse.data.market_positions || []).map((p) => ({
47
- ticker: p.ticker || "",
48
- position: p.position || 0,
49
- market_exposure: p.market_exposure || 0,
50
- realized_pnl: p.realized_pnl,
51
- total_traded: p.total_traded,
52
- }));
53
- setPositions(positionData);
54
- setError(null);
55
- setIsConnected(true);
56
- }
57
- catch (err) {
58
- setError(err instanceof Error ? err.message : "Failed to fetch portfolio");
59
- setIsConnected(false);
60
- }
61
- finally {
62
- setIsLoading(false);
63
- }
64
- }, [portfolioApi, setIsConnected]);
65
- // Initial fetch
66
- useEffect(() => {
67
- fetchPortfolio();
68
- }, [fetchPortfolio]);
69
- // Polling
70
- useEffect(() => {
71
- if (!portfolioApi)
72
- return;
73
- const interval = setInterval(fetchPortfolio, pollInterval);
74
- return () => clearInterval(interval);
75
- }, [portfolioApi, pollInterval, fetchPortfolio]);
76
- return {
77
- balance,
78
- positions,
79
- isLoading,
80
- error,
81
- refresh: fetchPortfolio,
82
- };
83
- }
84
- //# sourceMappingURL=usePortfolio.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"usePortfolio.js","sourceRoot":"","sources":["../../src/hooks/usePortfolio.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- interface AppState {
2
- selectedMarket: string | null;
3
- setSelectedMarket: (ticker: string | null) => void;
4
- activePanel: "markets" | "orderbook" | "positions" | "order";
5
- setActivePanel: (panel: AppState["activePanel"]) => void;
6
- showHelp: boolean;
7
- toggleHelp: () => void;
8
- searchQuery: string;
9
- setSearchQuery: (query: string) => void;
10
- isSearching: boolean;
11
- setIsSearching: (searching: boolean) => void;
12
- isConnected: boolean;
13
- setIsConnected: (connected: boolean) => void;
14
- }
15
- export declare const useAppStore: import("zustand").UseBoundStore<import("zustand").StoreApi<AppState>>;
16
- export {};
17
- //# sourceMappingURL=app-store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-store.d.ts","sourceRoot":"","sources":["../../src/stores/app-store.ts"],"names":[],"mappings":"AAEA,UAAU,QAAQ;IAEhB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAGnD,WAAW,EAAE,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,OAAO,CAAC;IAC7D,cAAc,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;IAGzD,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,IAAI,CAAC;IAGvB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAG7C,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;CAC9C;AAED,eAAO,MAAM,WAAW,uEAsBrB,CAAC"}
@@ -1,21 +0,0 @@
1
- import { create } from "zustand";
2
- export const useAppStore = create((set) => ({
3
- // Selected market
4
- selectedMarket: null,
5
- setSelectedMarket: (ticker) => set({ selectedMarket: ticker }),
6
- // Active panel
7
- activePanel: "markets",
8
- setActivePanel: (panel) => set({ activePanel: panel }),
9
- // Help modal
10
- showHelp: false,
11
- toggleHelp: () => set((state) => ({ showHelp: !state.showHelp })),
12
- // Search
13
- searchQuery: "",
14
- setSearchQuery: (query) => set({ searchQuery: query }),
15
- isSearching: false,
16
- setIsSearching: (searching) => set({ isSearching: searching }),
17
- // Connection
18
- isConnected: false,
19
- setIsConnected: (connected) => set({ isConnected: connected }),
20
- }));
21
- //# sourceMappingURL=app-store.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-store.js","sourceRoot":"","sources":["../../src/stores/app-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AA0BjC,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACpD,kBAAkB;IAClB,cAAc,EAAE,IAAI;IACpB,iBAAiB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;IAE9D,eAAe;IACf,WAAW,EAAE,SAAS;IACtB,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IAEtD,aAAa;IACb,QAAQ,EAAE,KAAK;IACf,UAAU,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEjE,SAAS;IACT,WAAW,EAAE,EAAE;IACf,cAAc,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IACtD,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;IAE9D,aAAa;IACb,WAAW,EAAE,KAAK;IAClB,cAAc,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;CAC/D,CAAC,CAAC,CAAC"}
package/dist/theme.d.ts DELETED
@@ -1,31 +0,0 @@
1
- /**
2
- * NYC + Kalshi Theme Colors
3
- *
4
- * Based on NYC brand guidelines with Kalshi green accent.
5
- */
6
- export declare const theme: {
7
- readonly background: "#000000";
8
- readonly foreground: "#FFFFFF";
9
- readonly accent: "#00D26A";
10
- readonly accentDim: "#00A857";
11
- readonly border: "#262626";
12
- readonly muted: "#525252";
13
- readonly body: "#737373";
14
- readonly success: "#00D26A";
15
- readonly error: "#EF4444";
16
- readonly warning: "#F59E0B";
17
- readonly up: "#00D26A";
18
- readonly down: "#EF4444";
19
- readonly unchanged: "#737373";
20
- };
21
- /**
22
- * Terminal-friendly color mappings for Ink
23
- */
24
- export declare const colors: {
25
- accent: "green";
26
- error: "red";
27
- warning: "yellow";
28
- muted: "gray";
29
- text: "white";
30
- };
31
- //# sourceMappingURL=theme.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,KAAK;;;;;;;;;;;;;;CAuBR,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,MAAM;;;;;;CAOlB,CAAC"}
package/dist/theme.js DELETED
@@ -1,37 +0,0 @@
1
- /**
2
- * NYC + Kalshi Theme Colors
3
- *
4
- * Based on NYC brand guidelines with Kalshi green accent.
5
- */
6
- export const theme = {
7
- // Core colors
8
- background: "#000000",
9
- foreground: "#FFFFFF",
10
- // Accent (Kalshi green instead of NYC blue)
11
- accent: "#00D26A",
12
- accentDim: "#00A857",
13
- // Grayscale
14
- border: "#262626", // gray-800
15
- muted: "#525252", // gray-600
16
- body: "#737373", // gray-500
17
- // Semantic colors
18
- success: "#00D26A", // Same as accent
19
- error: "#EF4444",
20
- warning: "#F59E0B",
21
- // Price indicators
22
- up: "#00D26A",
23
- down: "#EF4444",
24
- unchanged: "#737373",
25
- };
26
- /**
27
- * Terminal-friendly color mappings for Ink
28
- */
29
- export const colors = {
30
- // Use Ink's built-in color names that map to theme
31
- accent: "green",
32
- error: "red",
33
- warning: "yellow",
34
- muted: "gray",
35
- text: "white",
36
- };
37
- //# sourceMappingURL=theme.js.map
package/dist/theme.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,cAAc;IACd,UAAU,EAAE,SAAS;IACrB,UAAU,EAAE,SAAS;IAErB,4CAA4C;IAC5C,MAAM,EAAE,SAAS;IACjB,SAAS,EAAE,SAAS;IAEpB,YAAY;IACZ,MAAM,EAAE,SAAS,EAAE,WAAW;IAC9B,KAAK,EAAE,SAAS,EAAE,WAAW;IAC7B,IAAI,EAAE,SAAS,EAAE,WAAW;IAE5B,kBAAkB;IAClB,OAAO,EAAE,SAAS,EAAE,iBAAiB;IACrC,KAAK,EAAE,SAAS;IAChB,OAAO,EAAE,SAAS;IAElB,mBAAmB;IACnB,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,SAAS;IACf,SAAS,EAAE,SAAS;CACZ,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,mDAAmD;IACnD,MAAM,EAAE,OAAgB;IACxB,KAAK,EAAE,KAAc;IACrB,OAAO,EAAE,QAAiB;IAC1B,KAAK,EAAE,MAAe;IACtB,IAAI,EAAE,OAAgB;CACvB,CAAC"}