fixdog 0.0.1 → 0.0.2
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/LICENSE +21 -0
- package/README.md +80 -433
- package/dist/api/client.d.ts +74 -0
- package/dist/components/ConversationalInputReact.d.ts +26 -0
- package/dist/components/ElementInfoDisplayReact.d.ts +9 -0
- package/dist/components/FixdogSidebarReact.d.ts +29 -0
- package/dist/fiber.d.ts +9 -0
- package/dist/index.cjs.js +33 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +6 -158
- package/dist/index.esm.js +29 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/inspector-B4F5CBT7.cjs.js +1159 -0
- package/dist/inspector-B4F5CBT7.cjs.js.map +1 -0
- package/dist/inspector-BL2pNjn-.cjs.js +1173 -0
- package/dist/inspector-BL2pNjn-.cjs.js.map +1 -0
- package/dist/inspector-Bg6uSvk0.esm.js +1273 -0
- package/dist/inspector-Bg6uSvk0.esm.js.map +1 -0
- package/dist/inspector-BuOffbVc.cjs.js +1280 -0
- package/dist/inspector-BuOffbVc.cjs.js.map +1 -0
- package/dist/inspector-CNgFkZOU.esm.js +1185 -0
- package/dist/inspector-CNgFkZOU.esm.js.map +1 -0
- package/dist/inspector-CPF1N9dL.esm.js +1185 -0
- package/dist/inspector-CPF1N9dL.esm.js.map +1 -0
- package/dist/inspector-CPGK5Lg7.esm.js +1155 -0
- package/dist/inspector-CPGK5Lg7.esm.js.map +1 -0
- package/dist/inspector-CWcTSREy.cjs.js +1174 -0
- package/dist/inspector-CWcTSREy.cjs.js.map +1 -0
- package/dist/inspector-Cn_bl9Io.cjs.js +1189 -0
- package/dist/inspector-Cn_bl9Io.cjs.js.map +1 -0
- package/dist/inspector-D9DuXirp.cjs.js +1189 -0
- package/dist/inspector-D9DuXirp.cjs.js.map +1 -0
- package/dist/inspector-DQEtAjyM.esm.js +1129 -0
- package/dist/inspector-DQEtAjyM.esm.js.map +1 -0
- package/dist/inspector-DVlU9p44.cjs.js +1189 -0
- package/dist/inspector-DVlU9p44.cjs.js.map +1 -0
- package/dist/inspector-DaRVppX9.cjs.js +1134 -0
- package/dist/inspector-DaRVppX9.cjs.js.map +1 -0
- package/dist/inspector-huqtI2MD.esm.js +1170 -0
- package/dist/inspector-huqtI2MD.esm.js.map +1 -0
- package/dist/inspector-spoCY1tf.esm.js +1169 -0
- package/dist/inspector-spoCY1tf.esm.js.map +1 -0
- package/dist/inspector-tY1kJK5_.esm.js +1185 -0
- package/dist/inspector-tY1kJK5_.esm.js.map +1 -0
- package/dist/inspector.d.ts +43 -0
- package/dist/keyboard.d.ts +10 -0
- package/dist/overlay.d.ts +31 -0
- package/dist/react/InspectorProvider.d.ts +6 -0
- package/dist/react/index.cjs.js +32 -0
- package/dist/react/index.cjs.js.map +1 -0
- package/dist/react/index.esm.js +30 -0
- package/dist/react/index.esm.js.map +1 -0
- package/dist/sidebar/SidebarRuntime.d.ts +8 -0
- package/dist/sidebar-runtime.esm.js +2122 -0
- package/dist/sidebar-runtime.esm.js.map +1 -0
- package/dist/sidebar-runtime.iife.js +2991 -0
- package/dist/styles/sidebarStyles.d.ts +2 -0
- package/dist/styles.d.ts +8 -0
- package/dist/types/sidebar.d.ts +62 -0
- package/dist/types.d.ts +47 -0
- package/dist/utils/cookies.d.ts +10 -0
- package/dist/utils/devMode.d.ts +17 -0
- package/dist/utils/sessionStorage.d.ts +19 -0
- package/package.json +57 -40
- package/USAGE.md +0 -77
- package/dist/client/index.d.mts +0 -110
- package/dist/client/index.d.ts +0 -110
- package/dist/client/index.js +0 -1601
- package/dist/client/index.mjs +0 -1582
- package/dist/client/init.d.mts +0 -67
- package/dist/client/init.d.ts +0 -67
- package/dist/client/init.js +0 -1609
- package/dist/client/init.mjs +0 -1593
- package/dist/index.d.mts +0 -158
- package/dist/index.js +0 -1635
- package/dist/index.mjs +0 -1606
- package/src/api/client.ts +0 -141
- package/src/client/index.ts +0 -75
- package/src/client/init.tsx +0 -78
- package/src/components/ConversationalInputReact.tsx +0 -406
- package/src/components/ElementInfoDisplayReact.tsx +0 -84
- package/src/components/UiDogSidebarReact.tsx +0 -49
- package/src/element-detector.ts +0 -186
- package/src/index.ts +0 -228
- package/src/instrument.ts +0 -171
- package/src/sidebar-initializer.ts +0 -171
- package/src/source-resolver.ts +0 -121
- package/src/styles/sidebarStyles.ts +0 -597
- package/src/types/css.d.ts +0 -9
- package/src/types/sidebar.ts +0 -56
- package/src/types.ts +0 -119
- package/tsconfig.json +0 -23
- package/tsup.config.ts +0 -40
|
@@ -0,0 +1,1185 @@
|
|
|
1
|
+
import { SourceMapConsumer } from 'source-map-js';
|
|
2
|
+
|
|
3
|
+
const STYLE_ELEMENT_ID = 'fixdog-sdk-styles';
|
|
4
|
+
const OVERLAY_CLASS = 'fixdog-overlay';
|
|
5
|
+
const TOOLTIP_CLASS = 'fixdog-tooltip';
|
|
6
|
+
const HIGHLIGHT_CLASS = 'fixdog-highlight';
|
|
7
|
+
const SELECTION_CLASS = 'fixdog-selection';
|
|
8
|
+
const SELECTION_BADGE_CLASS = 'fixdog-selection-badge';
|
|
9
|
+
// Selection highlight color (blue, distinct from hover cyan)
|
|
10
|
+
const SELECTION_COLOR = '#3b82f6';
|
|
11
|
+
const baseStyles = (options) => `
|
|
12
|
+
.${OVERLAY_CLASS} {
|
|
13
|
+
position: fixed;
|
|
14
|
+
pointer-events: none;
|
|
15
|
+
border: 2px solid ${options.borderColor};
|
|
16
|
+
background: rgba(97, 218, 251, 0.08);
|
|
17
|
+
border-radius: 4px;
|
|
18
|
+
box-sizing: border-box;
|
|
19
|
+
transition: all 50ms ease-out;
|
|
20
|
+
z-index: ${options.zIndex};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.${TOOLTIP_CLASS} {
|
|
24
|
+
position: fixed;
|
|
25
|
+
pointer-events: none;
|
|
26
|
+
font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
|
27
|
+
font-size: 12px;
|
|
28
|
+
line-height: 1.4;
|
|
29
|
+
color: #e5f6ff;
|
|
30
|
+
background: rgba(0, 0, 0, 0.78);
|
|
31
|
+
border: 1px solid ${options.borderColor};
|
|
32
|
+
border-radius: 6px;
|
|
33
|
+
padding: 8px 10px;
|
|
34
|
+
box-shadow: 0 8px 30px rgba(0, 0, 0, 0.25);
|
|
35
|
+
z-index: ${options.zIndex};
|
|
36
|
+
max-width: 320px;
|
|
37
|
+
transform: translateY(-4px);
|
|
38
|
+
transition: opacity 50ms ease-out, transform 50ms ease-out;
|
|
39
|
+
opacity: 0;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.${TOOLTIP_CLASS} .fixdog-name {
|
|
43
|
+
display: block;
|
|
44
|
+
font-weight: 700;
|
|
45
|
+
color: ${options.borderColor};
|
|
46
|
+
margin-bottom: 2px;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.${TOOLTIP_CLASS} .fixdog-file {
|
|
50
|
+
display: block;
|
|
51
|
+
color: #98c379;
|
|
52
|
+
word-break: break-all;
|
|
53
|
+
margin-bottom: 2px;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.${TOOLTIP_CLASS} .fixdog-hint {
|
|
57
|
+
display: block;
|
|
58
|
+
color: #c9d1d9;
|
|
59
|
+
opacity: 0.8;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.${HIGHLIGHT_CLASS} {
|
|
63
|
+
outline: 2px solid ${options.borderColor};
|
|
64
|
+
outline-offset: 2px;
|
|
65
|
+
background: rgba(97, 218, 251, 0.08);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/* Selection highlight - persistent blue border for selected components */
|
|
69
|
+
.${SELECTION_CLASS} {
|
|
70
|
+
position: fixed;
|
|
71
|
+
pointer-events: none;
|
|
72
|
+
border: 2px solid ${SELECTION_COLOR};
|
|
73
|
+
background: rgba(59, 130, 246, 0.1);
|
|
74
|
+
border-radius: 4px;
|
|
75
|
+
box-sizing: border-box;
|
|
76
|
+
z-index: ${options.zIndex - 1};
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/* Numbered badge for selected components */
|
|
80
|
+
.${SELECTION_BADGE_CLASS} {
|
|
81
|
+
position: fixed;
|
|
82
|
+
pointer-events: none;
|
|
83
|
+
width: 24px;
|
|
84
|
+
height: 24px;
|
|
85
|
+
background: ${SELECTION_COLOR};
|
|
86
|
+
color: #ffffff;
|
|
87
|
+
font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
|
88
|
+
font-size: 12px;
|
|
89
|
+
font-weight: 700;
|
|
90
|
+
display: flex;
|
|
91
|
+
align-items: center;
|
|
92
|
+
justify-content: center;
|
|
93
|
+
border-radius: 50%;
|
|
94
|
+
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
|
|
95
|
+
z-index: ${options.zIndex + 1};
|
|
96
|
+
}
|
|
97
|
+
`;
|
|
98
|
+
|
|
99
|
+
const clamp = (value, min, max) => Math.max(min, Math.min(max, value));
|
|
100
|
+
class Overlay {
|
|
101
|
+
constructor(options) {
|
|
102
|
+
this.styleEl = null;
|
|
103
|
+
this.highlight = null;
|
|
104
|
+
this.tooltip = null;
|
|
105
|
+
this.mounted = false;
|
|
106
|
+
this.doc = document;
|
|
107
|
+
// Multi-selection tracking
|
|
108
|
+
this.selections = new Map();
|
|
109
|
+
this.options = options;
|
|
110
|
+
}
|
|
111
|
+
mount(doc = document) {
|
|
112
|
+
if (this.mounted)
|
|
113
|
+
return;
|
|
114
|
+
this.mounted = true;
|
|
115
|
+
this.doc = doc;
|
|
116
|
+
this.styleEl = doc.getElementById(STYLE_ELEMENT_ID);
|
|
117
|
+
if (!this.styleEl) {
|
|
118
|
+
this.styleEl = doc.createElement("style");
|
|
119
|
+
this.styleEl.id = STYLE_ELEMENT_ID;
|
|
120
|
+
this.styleEl.textContent = baseStyles(this.options);
|
|
121
|
+
doc.head.appendChild(this.styleEl);
|
|
122
|
+
}
|
|
123
|
+
this.highlight = doc.createElement("div");
|
|
124
|
+
this.highlight.className = `${OVERLAY_CLASS} ${HIGHLIGHT_CLASS}`;
|
|
125
|
+
this.tooltip = doc.createElement("div");
|
|
126
|
+
this.tooltip.className = TOOLTIP_CLASS;
|
|
127
|
+
doc.body.appendChild(this.highlight);
|
|
128
|
+
doc.body.appendChild(this.tooltip);
|
|
129
|
+
}
|
|
130
|
+
update(element, info) {
|
|
131
|
+
if (!this.mounted || !this.highlight || !this.tooltip)
|
|
132
|
+
return;
|
|
133
|
+
if (!element)
|
|
134
|
+
return this.hide();
|
|
135
|
+
const rect = element.getBoundingClientRect();
|
|
136
|
+
const position = {
|
|
137
|
+
top: rect.top,
|
|
138
|
+
left: rect.left,
|
|
139
|
+
width: rect.width,
|
|
140
|
+
height: rect.height,
|
|
141
|
+
};
|
|
142
|
+
this.applyHighlight(position);
|
|
143
|
+
this.applyTooltip(position, info);
|
|
144
|
+
}
|
|
145
|
+
hide() {
|
|
146
|
+
if (!this.highlight || !this.tooltip)
|
|
147
|
+
return;
|
|
148
|
+
this.highlight.style.display = "none";
|
|
149
|
+
this.tooltip.style.opacity = "0";
|
|
150
|
+
this.tooltip.style.transform = "translateY(-4px)";
|
|
151
|
+
}
|
|
152
|
+
destroy() {
|
|
153
|
+
if (!this.mounted)
|
|
154
|
+
return;
|
|
155
|
+
this.mounted = false;
|
|
156
|
+
this.hide();
|
|
157
|
+
this.clearSelections();
|
|
158
|
+
this.highlight?.remove();
|
|
159
|
+
this.tooltip?.remove();
|
|
160
|
+
// Do not remove style tag to allow re-use across mounts within the same page.
|
|
161
|
+
}
|
|
162
|
+
// Add a selection highlight with numbered badge
|
|
163
|
+
addSelection(id, element, componentName) {
|
|
164
|
+
if (!this.mounted)
|
|
165
|
+
return;
|
|
166
|
+
// Remove existing selection with same ID if any
|
|
167
|
+
this.removeSelection(id);
|
|
168
|
+
const rect = element.getBoundingClientRect();
|
|
169
|
+
// Create selection highlight
|
|
170
|
+
const highlight = this.doc.createElement("div");
|
|
171
|
+
highlight.className = `${OVERLAY_CLASS} ${SELECTION_CLASS}`;
|
|
172
|
+
highlight.style.top = `${rect.top}px`;
|
|
173
|
+
highlight.style.left = `${rect.left}px`;
|
|
174
|
+
highlight.style.width = `${rect.width}px`;
|
|
175
|
+
highlight.style.height = `${rect.height}px`;
|
|
176
|
+
highlight.dataset.selectionId = String(id);
|
|
177
|
+
// Create numbered badge
|
|
178
|
+
const badge = this.doc.createElement("div");
|
|
179
|
+
badge.className = SELECTION_BADGE_CLASS;
|
|
180
|
+
badge.textContent = String(id);
|
|
181
|
+
badge.style.top = `${rect.top - 12}px`;
|
|
182
|
+
badge.style.left = `${rect.left - 12}px`;
|
|
183
|
+
badge.dataset.selectionId = String(id);
|
|
184
|
+
this.doc.body.appendChild(highlight);
|
|
185
|
+
this.doc.body.appendChild(badge);
|
|
186
|
+
this.selections.set(id, { element, highlight, badge, componentName });
|
|
187
|
+
// Set up scroll/resize listener for this selection
|
|
188
|
+
this.updateSelectionPositions();
|
|
189
|
+
}
|
|
190
|
+
// Remove a specific selection
|
|
191
|
+
removeSelection(id) {
|
|
192
|
+
const selection = this.selections.get(id);
|
|
193
|
+
if (selection) {
|
|
194
|
+
selection.highlight.remove();
|
|
195
|
+
selection.badge.remove();
|
|
196
|
+
this.selections.delete(id);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
// Clear all selections
|
|
200
|
+
clearSelections() {
|
|
201
|
+
this.selections.forEach((selection) => {
|
|
202
|
+
selection.highlight.remove();
|
|
203
|
+
selection.badge.remove();
|
|
204
|
+
});
|
|
205
|
+
this.selections.clear();
|
|
206
|
+
}
|
|
207
|
+
// Update positions of all selection overlays (called on scroll/resize)
|
|
208
|
+
updateSelectionPositions() {
|
|
209
|
+
this.selections.forEach((selection, id) => {
|
|
210
|
+
const rect = selection.element.getBoundingClientRect();
|
|
211
|
+
selection.highlight.style.top = `${rect.top}px`;
|
|
212
|
+
selection.highlight.style.left = `${rect.left}px`;
|
|
213
|
+
selection.highlight.style.width = `${rect.width}px`;
|
|
214
|
+
selection.highlight.style.height = `${rect.height}px`;
|
|
215
|
+
selection.badge.style.top = `${rect.top - 12}px`;
|
|
216
|
+
selection.badge.style.left = `${rect.left - 12}px`;
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
// Get all current selections
|
|
220
|
+
getSelections() {
|
|
221
|
+
return this.selections;
|
|
222
|
+
}
|
|
223
|
+
applyHighlight(pos) {
|
|
224
|
+
if (!this.highlight)
|
|
225
|
+
return;
|
|
226
|
+
this.highlight.style.display = "block";
|
|
227
|
+
this.highlight.style.top = `${pos.top}px`;
|
|
228
|
+
this.highlight.style.left = `${pos.left}px`;
|
|
229
|
+
this.highlight.style.width = `${pos.width}px`;
|
|
230
|
+
this.highlight.style.height = `${pos.height}px`;
|
|
231
|
+
}
|
|
232
|
+
applyTooltip(pos, info) {
|
|
233
|
+
if (!this.tooltip)
|
|
234
|
+
return;
|
|
235
|
+
// const name = info.componentName || "Unknown component";
|
|
236
|
+
const line = Number.isFinite(info.lineNumber) ? info.lineNumber : "?";
|
|
237
|
+
const column = Number.isFinite(info.columnNumber)
|
|
238
|
+
? `:${info.columnNumber}`
|
|
239
|
+
: "";
|
|
240
|
+
const file = info.fileName
|
|
241
|
+
? `${info.fileName}:${line}${column}`
|
|
242
|
+
: "Source not available - ensure dev mode";
|
|
243
|
+
this.tooltip.innerHTML = `
|
|
244
|
+
<span class="fixdog-name">${name}</span>
|
|
245
|
+
<span class="fixdog-file">${file}</span>
|
|
246
|
+
<span class="fixdog-hint">Click to log • Esc to cancel</span>
|
|
247
|
+
`;
|
|
248
|
+
this.tooltip.style.opacity = "1";
|
|
249
|
+
this.tooltip.style.transform = "translateY(0)";
|
|
250
|
+
// Positioning
|
|
251
|
+
this.positionTooltip(pos);
|
|
252
|
+
}
|
|
253
|
+
positionTooltip(pos) {
|
|
254
|
+
if (!this.tooltip)
|
|
255
|
+
return;
|
|
256
|
+
const gap = 8;
|
|
257
|
+
const viewportWidth = window.innerWidth;
|
|
258
|
+
const viewportHeight = window.innerHeight;
|
|
259
|
+
// Measure after ensuring content is set
|
|
260
|
+
const tooltipRect = this.tooltip.getBoundingClientRect();
|
|
261
|
+
const preferTop = this.shouldPlaceTop(pos, tooltipRect.height);
|
|
262
|
+
const top = preferTop
|
|
263
|
+
? pos.top - tooltipRect.height - gap
|
|
264
|
+
: pos.top + pos.height + gap;
|
|
265
|
+
const left = clamp(pos.left + pos.width / 2 - tooltipRect.width / 2, 8, viewportWidth - tooltipRect.width - 8);
|
|
266
|
+
this.tooltip.style.top = `${clamp(top, 8, viewportHeight - tooltipRect.height - 8)}px`;
|
|
267
|
+
this.tooltip.style.left = `${left}px`;
|
|
268
|
+
}
|
|
269
|
+
shouldPlaceTop(pos, tooltipHeight) {
|
|
270
|
+
const spaceAbove = pos.top;
|
|
271
|
+
const spaceBelow = window.innerHeight - (pos.top + pos.height);
|
|
272
|
+
const preference = this.options.tooltipPosition;
|
|
273
|
+
if (preference === "top")
|
|
274
|
+
return true;
|
|
275
|
+
if (preference === "bottom")
|
|
276
|
+
return false;
|
|
277
|
+
if (spaceAbove >= tooltipHeight + 12)
|
|
278
|
+
return true;
|
|
279
|
+
if (spaceBelow >= tooltipHeight + 12)
|
|
280
|
+
return false;
|
|
281
|
+
return spaceAbove >= spaceBelow; // fallback to the larger side
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
const REACT_FIBER_PROP = "__reactFiber$";
|
|
286
|
+
const REACT_INTERNAL_PROP = "__reactInternalInstance$";
|
|
287
|
+
const REACT_CONTAINER_PROP = "__reactContainer$";
|
|
288
|
+
const STACK_TOP = "react-stack-top-frame";
|
|
289
|
+
const STACK_BOTTOM = "react_stack_bottom_frame";
|
|
290
|
+
// Debug mode - check global flag or set to true for development
|
|
291
|
+
const isDebugEnabled = () => {
|
|
292
|
+
return globalThis.__FIXDOG_DEBUG__ === true;
|
|
293
|
+
};
|
|
294
|
+
const debugLog = (...args) => {
|
|
295
|
+
if (isDebugEnabled())
|
|
296
|
+
console.log("[fixdog-sdk:debug]", ...args);
|
|
297
|
+
};
|
|
298
|
+
const possibleFiberKeys = (node) => {
|
|
299
|
+
const keys = [];
|
|
300
|
+
for (const key in node) {
|
|
301
|
+
if (key.startsWith(REACT_FIBER_PROP) ||
|
|
302
|
+
key.startsWith(REACT_INTERNAL_PROP) ||
|
|
303
|
+
key.startsWith(REACT_CONTAINER_PROP)) {
|
|
304
|
+
keys.push(key);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
return keys;
|
|
308
|
+
};
|
|
309
|
+
const getFiberFromNode = (node) => {
|
|
310
|
+
let current = node;
|
|
311
|
+
while (current) {
|
|
312
|
+
const keys = possibleFiberKeys(current);
|
|
313
|
+
if (keys.length) {
|
|
314
|
+
const value = current[keys[0]]; // accessing React internals intentionally
|
|
315
|
+
if (value?.current)
|
|
316
|
+
return value.current; // container root form
|
|
317
|
+
return value;
|
|
318
|
+
}
|
|
319
|
+
const root = current.getRootNode();
|
|
320
|
+
if (root &&
|
|
321
|
+
root.host &&
|
|
322
|
+
current !== root.host) {
|
|
323
|
+
current = root.host;
|
|
324
|
+
continue;
|
|
325
|
+
}
|
|
326
|
+
current = current.parentElement;
|
|
327
|
+
}
|
|
328
|
+
return null;
|
|
329
|
+
};
|
|
330
|
+
const unwrapType = (type) => {
|
|
331
|
+
// handle memo/forwardRef/lazy wrappers
|
|
332
|
+
if (!type)
|
|
333
|
+
return type;
|
|
334
|
+
if (type.render)
|
|
335
|
+
return type.render; // forwardRef
|
|
336
|
+
if (type.type)
|
|
337
|
+
return type.type; // memo wraps actual type
|
|
338
|
+
if (type._payload && type._payload._result)
|
|
339
|
+
return type._payload._result; // lazy resolved
|
|
340
|
+
return type;
|
|
341
|
+
};
|
|
342
|
+
const getComponentName = (fiber, element) => {
|
|
343
|
+
const rawType = fiber?.type || fiber?.elementType;
|
|
344
|
+
const unwrapped = unwrapType(rawType);
|
|
345
|
+
const displayName = unwrapped?.displayName || unwrapped?.name;
|
|
346
|
+
if (displayName)
|
|
347
|
+
return displayName;
|
|
348
|
+
if (fiber?.tag === 5 && element)
|
|
349
|
+
return element.tagName.toLowerCase();
|
|
350
|
+
if (fiber?.tag === 7)
|
|
351
|
+
return "Fragment";
|
|
352
|
+
if (fiber?.tag === 4)
|
|
353
|
+
return "Portal";
|
|
354
|
+
return "AnonymousComponent";
|
|
355
|
+
};
|
|
356
|
+
// Read source from various possible locations
|
|
357
|
+
const readSource = (candidate) => {
|
|
358
|
+
if (!candidate)
|
|
359
|
+
return null;
|
|
360
|
+
// Standard React _debugSource
|
|
361
|
+
if (candidate._debugSource) {
|
|
362
|
+
return {
|
|
363
|
+
fileName: candidate._debugSource.fileName,
|
|
364
|
+
lineNumber: candidate._debugSource.lineNumber,
|
|
365
|
+
columnNumber: candidate._debugSource.columnNumber ?? 0,
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
// Some bundlers attach __source to the element
|
|
369
|
+
if (candidate.__source) {
|
|
370
|
+
return {
|
|
371
|
+
fileName: candidate.__source.fileName,
|
|
372
|
+
lineNumber: candidate.__source.lineNumber,
|
|
373
|
+
columnNumber: candidate.__source.columnNumber ?? 0,
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
return null;
|
|
377
|
+
};
|
|
378
|
+
// Check for source info on the component type itself
|
|
379
|
+
const readSourceFromType = (type) => {
|
|
380
|
+
if (!type)
|
|
381
|
+
return null;
|
|
382
|
+
const unwrapped = unwrapType(type);
|
|
383
|
+
// Some transforms add __source to the function
|
|
384
|
+
if (unwrapped?.__source) {
|
|
385
|
+
return {
|
|
386
|
+
fileName: unwrapped.__source.fileName,
|
|
387
|
+
lineNumber: unwrapped.__source.lineNumber,
|
|
388
|
+
columnNumber: unwrapped.__source.columnNumber ?? 0,
|
|
389
|
+
};
|
|
390
|
+
}
|
|
391
|
+
// Check _source (used by some bundlers)
|
|
392
|
+
if (unwrapped?._source) {
|
|
393
|
+
return {
|
|
394
|
+
fileName: unwrapped._source.fileName,
|
|
395
|
+
lineNumber: unwrapped._source.lineNumber,
|
|
396
|
+
columnNumber: unwrapped._source.columnNumber ?? 0,
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
return null;
|
|
400
|
+
};
|
|
401
|
+
const findDebugSource = (fiber) => {
|
|
402
|
+
const visited = new Set();
|
|
403
|
+
let current = fiber;
|
|
404
|
+
while (current && !visited.has(current)) {
|
|
405
|
+
visited.add(current);
|
|
406
|
+
// Check fiber's _debugSource
|
|
407
|
+
const direct = readSource(current) || readSource(current.alternate);
|
|
408
|
+
if (direct) {
|
|
409
|
+
debugLog("Found source via _debugSource on fiber");
|
|
410
|
+
return direct;
|
|
411
|
+
}
|
|
412
|
+
// Check type for source info
|
|
413
|
+
const typeSource = readSourceFromType(current.type) ||
|
|
414
|
+
readSourceFromType(current.elementType);
|
|
415
|
+
if (typeSource) {
|
|
416
|
+
debugLog("Found source via type");
|
|
417
|
+
return typeSource;
|
|
418
|
+
}
|
|
419
|
+
// Check owner
|
|
420
|
+
const owner = current._debugOwner;
|
|
421
|
+
const ownerSource = readSource(owner) || readSource(owner?.alternate);
|
|
422
|
+
if (ownerSource) {
|
|
423
|
+
debugLog("Found source via _debugOwner");
|
|
424
|
+
return ownerSource;
|
|
425
|
+
}
|
|
426
|
+
// Check owner's type
|
|
427
|
+
const ownerTypeSource = readSourceFromType(owner?.type) || readSourceFromType(owner?.elementType);
|
|
428
|
+
if (ownerTypeSource) {
|
|
429
|
+
debugLog("Found source via owner type");
|
|
430
|
+
return ownerTypeSource;
|
|
431
|
+
}
|
|
432
|
+
current = current.return || owner;
|
|
433
|
+
}
|
|
434
|
+
debugLog("No _debugSource found, will try stack trace");
|
|
435
|
+
return null;
|
|
436
|
+
};
|
|
437
|
+
const isInternalFrame = (frame) => {
|
|
438
|
+
const fn = frame.functionName || "";
|
|
439
|
+
const url = frame.url || "";
|
|
440
|
+
if (fn.includes(STACK_TOP) || fn.includes(STACK_BOTTOM))
|
|
441
|
+
return true;
|
|
442
|
+
if (fn === "exports.jsxDEV" || fn === "jsxDEV" || fn === "jsx")
|
|
443
|
+
return true;
|
|
444
|
+
if (url.includes("react-dom"))
|
|
445
|
+
return true;
|
|
446
|
+
if (url.includes("react-refresh"))
|
|
447
|
+
return true;
|
|
448
|
+
if (url.includes("react.development"))
|
|
449
|
+
return true;
|
|
450
|
+
if (url.includes("node_modules/react"))
|
|
451
|
+
return true;
|
|
452
|
+
return false;
|
|
453
|
+
};
|
|
454
|
+
// Extended regex to handle various stack trace formats including URLs with special characters
|
|
455
|
+
const FRAME_REGEX = /at\s+(?:(.*?)\s+\()?([^():\s]+(?::[^():\s]+)*):(\d+):(\d+)\)?/;
|
|
456
|
+
// Simpler regex for URL extraction - handles Next.js Turbopack URLs
|
|
457
|
+
const URL_REGEX = /(https?:\/\/[^:\s]+):(\d+):(\d+)/;
|
|
458
|
+
const parseStack = (stack) => {
|
|
459
|
+
if (!stack)
|
|
460
|
+
return [];
|
|
461
|
+
debugLog("Parsing stack:", stack);
|
|
462
|
+
const results = stack
|
|
463
|
+
.split("\n")
|
|
464
|
+
.map((line) => line.trim())
|
|
465
|
+
.map((line) => {
|
|
466
|
+
// Try URL regex first (more reliable for complex URLs)
|
|
467
|
+
const urlMatch = line.match(URL_REGEX);
|
|
468
|
+
if (urlMatch) {
|
|
469
|
+
const [, url, lineNum, colNum] = urlMatch;
|
|
470
|
+
// Extract function name if present
|
|
471
|
+
const fnMatch = line.match(/at\s+([^\s(]+)/);
|
|
472
|
+
const fn = fnMatch ? fnMatch[1] : null;
|
|
473
|
+
return {
|
|
474
|
+
functionName: fn,
|
|
475
|
+
url,
|
|
476
|
+
line: Number(lineNum),
|
|
477
|
+
column: Number(colNum),
|
|
478
|
+
};
|
|
479
|
+
}
|
|
480
|
+
// Fallback to original regex
|
|
481
|
+
const match = line.match(FRAME_REGEX);
|
|
482
|
+
if (!match)
|
|
483
|
+
return null;
|
|
484
|
+
const [, fn, url, lineNum, colNum] = match;
|
|
485
|
+
return {
|
|
486
|
+
functionName: fn || null,
|
|
487
|
+
url: url || null,
|
|
488
|
+
line: lineNum ? Number(lineNum) : null,
|
|
489
|
+
column: colNum ? Number(colNum) : null,
|
|
490
|
+
};
|
|
491
|
+
})
|
|
492
|
+
.filter((f) => !!f && !!f.url && f.line != null && f.column != null);
|
|
493
|
+
debugLog("Parsed frames:", results);
|
|
494
|
+
return results;
|
|
495
|
+
};
|
|
496
|
+
// Generate possible source map URLs for a JS file
|
|
497
|
+
const getSourceMapUrls = (url) => {
|
|
498
|
+
const urls = [];
|
|
499
|
+
const withoutQuery = url.split("?")[0];
|
|
500
|
+
// Standard .map suffix
|
|
501
|
+
urls.push(`${withoutQuery}.map`);
|
|
502
|
+
// Next.js Turbopack might use different patterns
|
|
503
|
+
// Try adding .map before query params
|
|
504
|
+
if (url.includes("?")) {
|
|
505
|
+
urls.push(`${withoutQuery}.map${url.slice(url.indexOf("?"))}`);
|
|
506
|
+
}
|
|
507
|
+
return urls;
|
|
508
|
+
};
|
|
509
|
+
const sourceMapCache = new Map();
|
|
510
|
+
const failedSourceMaps = new Set();
|
|
511
|
+
const inlineSourceMapCache = new Map();
|
|
512
|
+
// Try to extract inline source map from JS file content
|
|
513
|
+
const extractInlineSourceMap = async (jsUrl) => {
|
|
514
|
+
if (inlineSourceMapCache.has(jsUrl))
|
|
515
|
+
return inlineSourceMapCache.get(jsUrl);
|
|
516
|
+
const promise = (async () => {
|
|
517
|
+
try {
|
|
518
|
+
debugLog("Fetching JS file to check for inline source map:", jsUrl);
|
|
519
|
+
const res = await fetch(jsUrl);
|
|
520
|
+
if (!res.ok)
|
|
521
|
+
return null;
|
|
522
|
+
const text = await res.text();
|
|
523
|
+
// Look for inline source map (base64 encoded)
|
|
524
|
+
const inlineMatch = text.match(/\/\/# sourceMappingURL=data:application\/json;(?:charset=utf-8;)?base64,([^\s]+)/);
|
|
525
|
+
if (inlineMatch) {
|
|
526
|
+
debugLog("Found inline source map in:", jsUrl);
|
|
527
|
+
const base64 = inlineMatch[1];
|
|
528
|
+
const decoded = atob(base64);
|
|
529
|
+
const map = JSON.parse(decoded);
|
|
530
|
+
return await new SourceMapConsumer(map);
|
|
531
|
+
}
|
|
532
|
+
// Also check for sourceMappingURL comment pointing to a file
|
|
533
|
+
const urlMatch = text.match(/\/\/# sourceMappingURL=([^\s]+)/);
|
|
534
|
+
if (urlMatch && !urlMatch[1].startsWith("data:")) {
|
|
535
|
+
const mapPath = urlMatch[1];
|
|
536
|
+
// Resolve relative to JS file
|
|
537
|
+
const baseUrl = jsUrl.substring(0, jsUrl.lastIndexOf("/") + 1);
|
|
538
|
+
const mapUrl = mapPath.startsWith("http") ? mapPath : baseUrl + mapPath;
|
|
539
|
+
debugLog("Found sourceMappingURL comment pointing to:", mapUrl);
|
|
540
|
+
const mapRes = await fetch(mapUrl);
|
|
541
|
+
if (mapRes.ok) {
|
|
542
|
+
const mapText = await mapRes.text();
|
|
543
|
+
const map = JSON.parse(mapText);
|
|
544
|
+
return await new SourceMapConsumer(map);
|
|
545
|
+
}
|
|
546
|
+
}
|
|
547
|
+
return null;
|
|
548
|
+
}
|
|
549
|
+
catch (e) {
|
|
550
|
+
debugLog("Error extracting inline source map:", e);
|
|
551
|
+
return null;
|
|
552
|
+
}
|
|
553
|
+
})();
|
|
554
|
+
inlineSourceMapCache.set(jsUrl, promise);
|
|
555
|
+
return promise;
|
|
556
|
+
};
|
|
557
|
+
const fetchSourceMap = async (jsUrl) => {
|
|
558
|
+
// Check if we already tried and failed
|
|
559
|
+
if (failedSourceMaps.has(jsUrl))
|
|
560
|
+
return null;
|
|
561
|
+
if (sourceMapCache.has(jsUrl))
|
|
562
|
+
return sourceMapCache.get(jsUrl);
|
|
563
|
+
const promise = (async () => {
|
|
564
|
+
const mapUrls = getSourceMapUrls(jsUrl);
|
|
565
|
+
// First try standard .map URLs
|
|
566
|
+
for (const mapUrl of mapUrls) {
|
|
567
|
+
try {
|
|
568
|
+
debugLog("Fetching source map:", mapUrl);
|
|
569
|
+
const res = await fetch(mapUrl);
|
|
570
|
+
if (!res.ok) {
|
|
571
|
+
debugLog("Source map not found at:", mapUrl, res.status);
|
|
572
|
+
continue;
|
|
573
|
+
}
|
|
574
|
+
const text = await res.text();
|
|
575
|
+
// Check if it's valid JSON
|
|
576
|
+
let map;
|
|
577
|
+
try {
|
|
578
|
+
map = JSON.parse(text);
|
|
579
|
+
}
|
|
580
|
+
catch {
|
|
581
|
+
debugLog("Invalid source map JSON at:", mapUrl);
|
|
582
|
+
continue;
|
|
583
|
+
}
|
|
584
|
+
debugLog("Source map loaded successfully from:", mapUrl);
|
|
585
|
+
const consumer = await new SourceMapConsumer(map);
|
|
586
|
+
return consumer;
|
|
587
|
+
}
|
|
588
|
+
catch (e) {
|
|
589
|
+
debugLog("Error fetching source map:", mapUrl, e);
|
|
590
|
+
continue;
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
// Try inline source map as fallback
|
|
594
|
+
const inlineConsumer = await extractInlineSourceMap(jsUrl);
|
|
595
|
+
if (inlineConsumer) {
|
|
596
|
+
return inlineConsumer;
|
|
597
|
+
}
|
|
598
|
+
failedSourceMaps.add(jsUrl);
|
|
599
|
+
return null;
|
|
600
|
+
})();
|
|
601
|
+
sourceMapCache.set(jsUrl, promise);
|
|
602
|
+
return promise;
|
|
603
|
+
};
|
|
604
|
+
const resolveFromStack = async (fiber) => {
|
|
605
|
+
// Handle both Error object and string stack
|
|
606
|
+
let stackString;
|
|
607
|
+
if (fiber?._debugStack?.stack) {
|
|
608
|
+
stackString = fiber._debugStack.stack;
|
|
609
|
+
}
|
|
610
|
+
else if (typeof fiber?._debugStack === "string") {
|
|
611
|
+
stackString = fiber._debugStack;
|
|
612
|
+
}
|
|
613
|
+
if (!stackString) {
|
|
614
|
+
debugLog("No stack string found on fiber");
|
|
615
|
+
return null;
|
|
616
|
+
}
|
|
617
|
+
const frames = parseStack(stackString);
|
|
618
|
+
// Find first non-internal frame (this is the component that created the element)
|
|
619
|
+
for (const frame of frames) {
|
|
620
|
+
if (!frame.url || frame.line == null || frame.column == null)
|
|
621
|
+
continue;
|
|
622
|
+
if (isInternalFrame(frame)) {
|
|
623
|
+
debugLog("Skipping internal frame:", frame.functionName);
|
|
624
|
+
continue;
|
|
625
|
+
}
|
|
626
|
+
debugLog("Processing frame:", frame);
|
|
627
|
+
const consumer = await fetchSourceMap(frame.url);
|
|
628
|
+
if (!consumer) {
|
|
629
|
+
debugLog("No source map for:", frame.url);
|
|
630
|
+
// Even without source map, we can use the bundled location
|
|
631
|
+
// This at least gives some info for debugging
|
|
632
|
+
continue;
|
|
633
|
+
}
|
|
634
|
+
const original = consumer.originalPositionFor({
|
|
635
|
+
line: frame.line,
|
|
636
|
+
column: frame.column,
|
|
637
|
+
});
|
|
638
|
+
debugLog("Original position:", original);
|
|
639
|
+
if (original.source && original.line != null && original.column != null) {
|
|
640
|
+
// Clean up the source path
|
|
641
|
+
let fileName = original.source;
|
|
642
|
+
// Remove webpack/turbopack prefixes
|
|
643
|
+
fileName = fileName.replace(/^webpack:\/\/[^/]*\//, "");
|
|
644
|
+
fileName = fileName.replace(/^\[project\]\//, "");
|
|
645
|
+
fileName = fileName.replace(/^\.\//, "");
|
|
646
|
+
return {
|
|
647
|
+
fileName,
|
|
648
|
+
lineNumber: original.line,
|
|
649
|
+
columnNumber: original.column,
|
|
650
|
+
};
|
|
651
|
+
}
|
|
652
|
+
}
|
|
653
|
+
debugLog("Could not resolve source from stack");
|
|
654
|
+
return null;
|
|
655
|
+
};
|
|
656
|
+
const resolveFromFiber = async (fiber, element) => {
|
|
657
|
+
if (!fiber)
|
|
658
|
+
return Promise.resolve(null);
|
|
659
|
+
const componentName = getComponentName(fiber, element);
|
|
660
|
+
debugLog("Resolving source for:", componentName);
|
|
661
|
+
// Try to find source from _debugSource first
|
|
662
|
+
const immediate = findDebugSource(fiber);
|
|
663
|
+
if (immediate) {
|
|
664
|
+
debugLog("Found immediate source:", immediate);
|
|
665
|
+
return Promise.resolve({
|
|
666
|
+
componentName,
|
|
667
|
+
fileName: immediate.fileName,
|
|
668
|
+
lineNumber: immediate.lineNumber,
|
|
669
|
+
columnNumber: immediate.columnNumber,
|
|
670
|
+
fiber,
|
|
671
|
+
element,
|
|
672
|
+
});
|
|
673
|
+
}
|
|
674
|
+
// Fall back to stack trace parsing
|
|
675
|
+
const stackSource = await resolveFromStack(fiber);
|
|
676
|
+
if (stackSource) {
|
|
677
|
+
debugLog("Found stack source:", stackSource);
|
|
678
|
+
return {
|
|
679
|
+
componentName,
|
|
680
|
+
fileName: stackSource.fileName,
|
|
681
|
+
lineNumber: stackSource.lineNumber,
|
|
682
|
+
columnNumber: stackSource.columnNumber,
|
|
683
|
+
fiber,
|
|
684
|
+
element,
|
|
685
|
+
};
|
|
686
|
+
}
|
|
687
|
+
// If we have a function name from the component, we can still return useful info
|
|
688
|
+
debugLog("No source found for:", componentName);
|
|
689
|
+
return {
|
|
690
|
+
componentName,
|
|
691
|
+
fileName: "Source not available - ensure dev build with source maps",
|
|
692
|
+
lineNumber: 0,
|
|
693
|
+
columnNumber: 0,
|
|
694
|
+
fiber,
|
|
695
|
+
element,
|
|
696
|
+
};
|
|
697
|
+
};
|
|
698
|
+
const getSourceFromElement = (element) => {
|
|
699
|
+
if (!element)
|
|
700
|
+
return Promise.resolve(null);
|
|
701
|
+
const fiber = getFiberFromNode(element);
|
|
702
|
+
if (!fiber) {
|
|
703
|
+
debugLog("No fiber found for element:", element);
|
|
704
|
+
return Promise.resolve(null);
|
|
705
|
+
}
|
|
706
|
+
debugLog("Found fiber for element:", element, fiber);
|
|
707
|
+
return resolveFromFiber(fiber, element);
|
|
708
|
+
};
|
|
709
|
+
/**
|
|
710
|
+
* Get the ancestor component chain from a fiber up to the root.
|
|
711
|
+
* Returns an array of component names, starting from the immediate parent.
|
|
712
|
+
* e.g., ['Header', 'Layout', 'App'] for a Button inside Header inside Layout inside App
|
|
713
|
+
*/
|
|
714
|
+
const getComponentAncestors = (fiber) => {
|
|
715
|
+
const ancestors = [];
|
|
716
|
+
let current = fiber?.return;
|
|
717
|
+
while (current) {
|
|
718
|
+
const name = getComponentName(current);
|
|
719
|
+
if (name && name !== 'AnonymousComponent') {
|
|
720
|
+
ancestors.push(name);
|
|
721
|
+
}
|
|
722
|
+
current = current.return;
|
|
723
|
+
}
|
|
724
|
+
return ancestors;
|
|
725
|
+
};
|
|
726
|
+
// Export for debugging purposes
|
|
727
|
+
const enableDebug = () => {
|
|
728
|
+
globalThis.__FIXDOG_DEBUG__ = true;
|
|
729
|
+
};
|
|
730
|
+
|
|
731
|
+
/*
|
|
732
|
+
* fixdog-sdk types
|
|
733
|
+
* Core interfaces shared across inspector modules.
|
|
734
|
+
*/
|
|
735
|
+
const DEFAULT_SHORTCUT = 'ctrl+shift+x';
|
|
736
|
+
const isProd = typeof process !== 'undefined' &&
|
|
737
|
+
typeof process.env !== 'undefined' &&
|
|
738
|
+
process.env.NODE_ENV === 'production';
|
|
739
|
+
const DEFAULT_OPTIONS = {
|
|
740
|
+
shortcut: DEFAULT_SHORTCUT,
|
|
741
|
+
useOptionClick: true,
|
|
742
|
+
enabled: !isProd,
|
|
743
|
+
zIndex: 999999,
|
|
744
|
+
borderColor: '#61dafb',
|
|
745
|
+
tooltipPosition: 'auto',
|
|
746
|
+
enableSidebar: true,
|
|
747
|
+
apiEndpoint: 'http://localhost:3000',
|
|
748
|
+
};
|
|
749
|
+
|
|
750
|
+
const normalize = (token) => token.trim().toLowerCase();
|
|
751
|
+
const tokenToFlags = (tokens) => {
|
|
752
|
+
const flags = { ctrl: false, meta: false, alt: false, shift: false, key: null };
|
|
753
|
+
tokens.forEach((token) => {
|
|
754
|
+
switch (normalize(token)) {
|
|
755
|
+
case 'ctrl':
|
|
756
|
+
case 'control':
|
|
757
|
+
flags.ctrl = true;
|
|
758
|
+
break;
|
|
759
|
+
case 'cmd':
|
|
760
|
+
case 'command':
|
|
761
|
+
case 'meta':
|
|
762
|
+
flags.meta = true;
|
|
763
|
+
break;
|
|
764
|
+
case 'alt':
|
|
765
|
+
case 'option':
|
|
766
|
+
flags.alt = true;
|
|
767
|
+
break;
|
|
768
|
+
case 'shift':
|
|
769
|
+
flags.shift = true;
|
|
770
|
+
break;
|
|
771
|
+
default:
|
|
772
|
+
flags.key = normalize(token);
|
|
773
|
+
}
|
|
774
|
+
});
|
|
775
|
+
return flags;
|
|
776
|
+
};
|
|
777
|
+
const parseShortcut = (shortcut) => {
|
|
778
|
+
const value = shortcut || DEFAULT_SHORTCUT;
|
|
779
|
+
return tokenToFlags(value.split('+'));
|
|
780
|
+
};
|
|
781
|
+
const matchesShortcut = (event, shortcut) => {
|
|
782
|
+
const parsed = parseShortcut(shortcut);
|
|
783
|
+
const key = event.key?.toLowerCase();
|
|
784
|
+
return ((!!parsed.key ? key === parsed.key : true) &&
|
|
785
|
+
event.ctrlKey === parsed.ctrl &&
|
|
786
|
+
event.metaKey === parsed.meta &&
|
|
787
|
+
event.altKey === parsed.alt &&
|
|
788
|
+
event.shiftKey === parsed.shift);
|
|
789
|
+
};
|
|
790
|
+
const isOptionClick = (event, useOptionClick) => {
|
|
791
|
+
if (!useOptionClick)
|
|
792
|
+
return false;
|
|
793
|
+
return event.altKey && event.button === 0; // left click + alt/option
|
|
794
|
+
};
|
|
795
|
+
|
|
796
|
+
var sidebarRuntimeCode = "var __FIXDOG_SIDEBAR__ = (function (exports) {\n 'use strict';\n\n var jsxRuntime = {exports: {}};\n\n var reactJsxRuntime_production_min = {};\n\n var react = {exports: {}};\n\n var react_production_min = {};\n\n /**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n var hasRequiredReact_production_min;\n\n function requireReact_production_min () {\n \tif (hasRequiredReact_production_min) return react_production_min;\n \thasRequiredReact_production_min = 1;\n var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return \"function\"===typeof a?a:null}\n \tvar B={isMounted:function(){return false},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B;}E.prototype.isReactComponent={};\n \tE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\");};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\");};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B;}var H=G.prototype=new F;\n \tH.constructor=G;C(H,E.prototype);H.isPureReactComponent=true;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:true,ref:true,__self:true,__source:true};\n \tfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f;}if(a&&a.defaultProps)for(d in g=a.defaultProps,g) void 0===c[d]&&(c[d]=g[d]);return {$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\n \tfunction N(a,b){return {$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return \"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return \"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return \"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\n \tfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=false;if(null===a)h=true;else switch(k){case \"string\":case \"number\":h=true;break;case \"object\":switch(a.$$typeof){case l:case n:h=true;}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\n \ta[g];var f=d+Q(k,g);h+=R(k,b,e,f,c);}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\n \tfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b;},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b;});-1===a._status&&(a._status=0,a._result=b);}if(1===a._status)return a._result.default;throw a._result;}\n \tvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};function X(){throw Error(\"act(...) is not supported in production builds of React.\");}\n \treact_production_min.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments);},e);},count:function(a){var b=0;S(a,function(){b++;});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};react_production_min.Component=E;react_production_min.Fragment=p;react_production_min.Profiler=r;react_production_min.PureComponent=G;react_production_min.StrictMode=q;react_production_min.Suspense=w;\n \treact_production_min.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;react_production_min.act=X;\n \treact_production_min.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){ void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f]);}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\n \tfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g;}return {$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};react_production_min.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};react_production_min.createElement=M;react_production_min.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};react_production_min.createRef=function(){return {current:null}};\n \treact_production_min.forwardRef=function(a){return {$$typeof:v,render:a}};react_production_min.isValidElement=O;react_production_min.lazy=function(a){return {$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};react_production_min.memo=function(a,b){return {$$typeof:x,type:a,compare:void 0===b?null:b}};react_production_min.startTransition=function(a){var b=V.transition;V.transition={};try{a();}finally{V.transition=b;}};react_production_min.unstable_act=X;react_production_min.useCallback=function(a,b){return U.current.useCallback(a,b)};react_production_min.useContext=function(a){return U.current.useContext(a)};\n \treact_production_min.useDebugValue=function(){};react_production_min.useDeferredValue=function(a){return U.current.useDeferredValue(a)};react_production_min.useEffect=function(a,b){return U.current.useEffect(a,b)};react_production_min.useId=function(){return U.current.useId()};react_production_min.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};react_production_min.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};react_production_min.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};\n \treact_production_min.useMemo=function(a,b){return U.current.useMemo(a,b)};react_production_min.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};react_production_min.useRef=function(a){return U.current.useRef(a)};react_production_min.useState=function(a){return U.current.useState(a)};react_production_min.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};react_production_min.useTransition=function(){return U.current.useTransition()};react_production_min.version=\"18.3.1\";\n \treturn react_production_min;\n }\n\n var hasRequiredReact;\n\n function requireReact () {\n \tif (hasRequiredReact) return react.exports;\n \thasRequiredReact = 1;\n\n \t{\n \t react.exports = requireReact_production_min();\n \t}\n \treturn react.exports;\n }\n\n /**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n var hasRequiredReactJsxRuntime_production_min;\n\n function requireReactJsxRuntime_production_min () {\n \tif (hasRequiredReactJsxRuntime_production_min) return reactJsxRuntime_production_min;\n \thasRequiredReactJsxRuntime_production_min = 1;\n var f=requireReact(),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:true,ref:true,__self:true,__source:true};\n \tfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a) void 0===d[b]&&(d[b]=a[b]);return {$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}reactJsxRuntime_production_min.Fragment=l;reactJsxRuntime_production_min.jsx=q;reactJsxRuntime_production_min.jsxs=q;\n \treturn reactJsxRuntime_production_min;\n }\n\n var hasRequiredJsxRuntime;\n\n function requireJsxRuntime () {\n \tif (hasRequiredJsxRuntime) return jsxRuntime.exports;\n \thasRequiredJsxRuntime = 1;\n\n \t{\n \t jsxRuntime.exports = requireReactJsxRuntime_production_min();\n \t}\n \treturn jsxRuntime.exports;\n }\n\n var jsxRuntimeExports = requireJsxRuntime();\n\n var client = {};\n\n var reactDom = {exports: {}};\n\n var reactDom_production_min = {};\n\n var scheduler = {exports: {}};\n\n var scheduler_production_min = {};\n\n /**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n var hasRequiredScheduler_production_min;\n\n function requireScheduler_production_min () {\n \tif (hasRequiredScheduler_production_min) return scheduler_production_min;\n \thasRequiredScheduler_production_min = 1;\n \t(function (exports$1) {\n function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\n \t\tfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports$1.unstable_now=function(){return l.now()};}else {var p=Date,q=p.now();exports$1.unstable_now=function(){return p.now()-q};}var r=[],t=[],u=1,v=null,y=3,z=false,A=false,B=false,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n \t\t\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t);}}function H(a){B=false;G(a);if(!A)if(null!==h(r))A=true,I(J);else {var b=h(t);null!==b&&K(H,b.startTime-a);}}\n \t\tfunction J(a,b){A=false;B&&(B=false,E(L),L=-1);z=true;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports$1.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b);}else k(r);v=h(r);}if(null!==v)var w=!0;else {var m=h(t);null!==m&&K(H,m.startTime-b);w=!1;}return w}finally{v=null,y=c,z=false;}}var N=false,O=null,L=-1,P=5,Q=-1;\n \t\tfunction M(){return exports$1.unstable_now()-Q<P?false:true}function R(){if(null!==O){var a=exports$1.unstable_now();Q=a;var b=true;try{b=O(!0,a);}finally{b?S():(N=false,O=null);}}else N=false;}var S;if(\"function\"===typeof F)S=function(){F(R);};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null);};}else S=function(){D(R,0);};function I(a){O=a;N||(N=true,S());}function K(a,b){L=D(function(){a(exports$1.unstable_now());},b);}\n \t\texports$1.unstable_IdlePriority=5;exports$1.unstable_ImmediatePriority=1;exports$1.unstable_LowPriority=4;exports$1.unstable_NormalPriority=3;exports$1.unstable_Profiling=null;exports$1.unstable_UserBlockingPriority=2;exports$1.unstable_cancelCallback=function(a){a.callback=null;};exports$1.unstable_continueExecution=function(){A||z||(A=true,I(J));};\n \t\texports$1.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):P=0<a?Math.floor(1E3/a):5;};exports$1.unstable_getCurrentPriorityLevel=function(){return y};exports$1.unstable_getFirstCallbackNode=function(){return h(r)};exports$1.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y;}var c=y;y=b;try{return a()}finally{y=c;}};exports$1.unstable_pauseExecution=function(){};\n \t\texports$1.unstable_requestPaint=function(){};exports$1.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3;}var c=y;y=a;try{return b()}finally{y=c;}};\n \t\texports$1.unstable_scheduleCallback=function(a,b,c){var d=exports$1.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3;}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=true,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=true,I(J)));return a};\n \t\texports$1.unstable_shouldYield=M;exports$1.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c;}}}; \n \t} (scheduler_production_min));\n \treturn scheduler_production_min;\n }\n\n var hasRequiredScheduler;\n\n function requireScheduler () {\n \tif (hasRequiredScheduler) return scheduler.exports;\n \thasRequiredScheduler = 1;\n\n \t{\n \t scheduler.exports = requireScheduler_production_min();\n \t}\n \treturn scheduler.exports;\n }\n\n /**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n var hasRequiredReactDom_production_min;\n\n function requireReactDom_production_min () {\n \tif (hasRequiredReactDom_production_min) return reactDom_production_min;\n \thasRequiredReactDom_production_min = 1;\n var aa=requireReact(),ca=requireScheduler();function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return \"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+\"Capture\",b);}\n \tfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a]);}\n \tvar ia=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n \t{},ma={};function oa(a){if(ja.call(ma,a))return true;if(ja.call(la,a))return false;if(ka.test(a))return ma[a]=true;la[a]=true;return false}function pa(a,b,c,d){if(null!==c&&0===c.type)return false;switch(typeof b){case \"function\":case \"symbol\":return true;case \"boolean\":if(d)return false;if(null!==c)return !c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return \"data-\"!==a&&\"aria-\"!==a;default:return false}}\n \tfunction qa(a,b,c,d){if(null===b||\"undefined\"===typeof b||pa(a,b,c,d))return true;if(d)return false;if(null!==c)switch(c.type){case 3:return !b;case 4:return false===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return false}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g;}var z={};\n \t\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,false,a,null,false,false);});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,false,a[1],null,false,false);});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,false,a.toLowerCase(),null,false,false);});\n \t[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,false,a,null,false,false);});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,false,a.toLowerCase(),null,false,false);});\n \t[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,true,a,null,false,false);});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,false,a,null,false,false);});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,false,a,null,false,false);});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,false,a.toLowerCase(),null,false,false);});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n \t\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\n \tsa);z[b]=new v(b,1,false,a,null,false,false);});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,false,a,\"http://www.w3.org/1999/xlink\",false,false);});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,false,a,\"http://www.w3.org/XML/1998/namespace\",false,false);});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,false,a.toLowerCase(),null,false,false);});\n \tz.xlinkHref=new v(\"xlinkHref\",1,false,\"xlink:href\",\"http://www.w3.org/1999/xlink\",true,false);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,false,a.toLowerCase(),null,true,true);});\n \tfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?false:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&true===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)));}\n \tvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for(\"react.element\"),wa=Symbol.for(\"react.portal\"),ya=Symbol.for(\"react.fragment\"),za=Symbol.for(\"react.strict_mode\"),Aa=Symbol.for(\"react.profiler\"),Ba=Symbol.for(\"react.provider\"),Ca=Symbol.for(\"react.context\"),Da=Symbol.for(\"react.forward_ref\"),Ea=Symbol.for(\"react.suspense\"),Fa=Symbol.for(\"react.suspense_list\"),Ga=Symbol.for(\"react.memo\"),Ha=Symbol.for(\"react.lazy\");\tvar Ia=Symbol.for(\"react.offscreen\");var Ja=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=Ja&&a[Ja]||a[\"@@iterator\"];return \"function\"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||\"\";}return \"\\n\"+La+a}var Na=false;\n \tfunction Oa(a,b){if(!a||Na)return \"\";Na=true;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[]);}catch(l){var d=l;}Reflect.construct(a,[],b);}else {try{b.call();}catch(l){d=l;}a.call(b.prototype);}else {try{throw Error();}catch(l){d=l;}a();}}catch(l){if(l&&d&&\"string\"===typeof l.stack){for(var e=l.stack.split(\"\\n\"),\n \tf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"<anonymous>\")&&(k=k.replace(\"<anonymous>\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=false,Error.prepareStackTrace=c;}return (a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\n \tfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,false),a;case 11:return a=Oa(a.type.render,false),a;case 1:return a=Oa(a.type,true),a;default:return \"\"}}\n \tfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return \"Fragment\";case wa:return \"Portal\";case Aa:return \"Profiler\";case za:return \"StrictMode\";case Ea:return \"Suspense\";case Fa:return \"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return (a.displayName||\"Context\")+\".Consumer\";case Ba:return (a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\n \tb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\n \tfunction Ra(a){var b=a.type;switch(a.tag){case 24:return \"Cache\";case 9:return (b.displayName||\"Context\")+\".Consumer\";case 10:return (b._context.displayName||\"Context\")+\".Provider\";case 18:return \"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return \"Fragment\";case 5:return b;case 4:return \"Portal\";case 3:return \"Root\";case 6:return \"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return \"Offscreen\";\n \tcase 12:return \"Profiler\";case 21:return \"Scope\";case 13:return \"Suspense\";case 19:return \"SuspenseList\";case 25:return \"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return \"\"}}\n \tfunction Ta(a){var b=a.type;return (a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\n \tfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:true,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a);}});Object.defineProperty(a,b,{enumerable:c.enumerable});return {getValue:function(){return d},setValue:function(a){d=\"\"+a;},stopTracking:function(){a._valueTracker=\n \tnull;delete a[b];}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a));}function Wa(a){if(!a)return false;var b=a._valueTracker;if(!b)return true;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),true):false}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\n \tfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value};}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,false);}\n \tfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c;}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked);}\n \tfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b;}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c);}\n \tfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c);}var eb=Array.isArray;\n \tfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=true;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=true);}else {c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=true;d&&(a[e].defaultSelected=true);return}null!==b||a[e].disabled||(b=a[e]);}null!==b&&(b.selected=true);}}\n \tfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(93));c=c[0];}b=c;}null==b&&(b=\"\");c=b;}a._wrapperState={initialValue:Sa(c)};}\n \tfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d);}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b);}function kb(a){switch(a){case \"svg\":return \"http://www.w3.org/2000/svg\";case \"math\":return \"http://www.w3.org/1998/Math/MathML\";default:return \"http://www.w3.org/1999/xhtml\"}}\n \tfunction lb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\n \tvar mb,nb=function(a){return \"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)});}:a}(function(a,b){if(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=b;else {mb=mb||document.createElement(\"div\");mb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild);}});\n \tfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b;}\n \tvar pb={animationIterationCount:true,aspectRatio:true,borderImageOutset:true,borderImageSlice:true,borderImageWidth:true,boxFlex:true,boxFlexGroup:true,boxOrdinalGroup:true,columnCount:true,columns:true,flex:true,flexGrow:true,flexPositive:true,flexShrink:true,flexNegative:true,flexOrder:true,gridArea:true,gridRow:true,gridRowEnd:true,gridRowSpan:true,gridRowStart:true,gridColumn:true,gridColumnEnd:true,gridColumnSpan:true,gridColumnStart:true,fontWeight:true,lineClamp:true,lineHeight:true,opacity:true,order:true,orphans:true,tabSize:true,widows:true,zIndex:true,\n \tzoom:true,fillOpacity:true,floodOpacity:true,stopOpacity:true,strokeDasharray:true,strokeDashoffset:true,strokeMiterlimit:true,strokeOpacity:true,strokeWidth:true},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a];});});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\n \tfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e;}}var tb=A({menuitem:true},{area:true,base:true,br:true,col:true,embed:true,hr:true,img:true,input:true,keygen:true,link:true,meta:true,param:true,source:true,track:true,wbr:true});\n \tfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\n \tfunction vb(a,b){if(-1===a.indexOf(\"-\"))return \"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return false;default:return true}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\n \tfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b));}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a;}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a]);}}function Gb(a,b){return a(b)}function Hb(){}var Ib=false;function Jb(a,b,c){if(Ib)return a(b,c);Ib=true;try{return Gb(a,b,c)}finally{if(Ib=false,null!==zb||null!==Ab)Hb(),Fb();}}\n \tfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=false;}if(a)return null;if(c&&\"function\"!==\n \ttypeof c)throw Error(p(231,b,typeof c));return c}var Lb=false;if(ia)try{var Mb={};Object.defineProperty(Mb,\"passive\",{get:function(){Lb=!0;}});window.addEventListener(\"test\",Mb,Mb);window.removeEventListener(\"test\",Mb,Mb);}catch(a){Lb=false;}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l);}catch(m){this.onError(m);}}var Ob=false,Pb=null,Qb=false,Rb=null,Sb={onError:function(a){Ob=true;Pb=a;}};function Tb(a,b,c,d,e,f,g,h,k){Ob=false;Pb=null;Nb.apply(Sb,arguments);}\n \tfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=false;Pb=null;}else throw Error(p(198));Qb||(Qb=true,Rb=l);}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else {a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}\n \tfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling;}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else {for(var g=false,h=e.child;h;){if(h===c){g=true;c=e;d=f;break}if(h===d){g=true;d=e;c=f;break}h=h.sibling;}if(!g){for(h=f.child;h;){if(h===\n \tc){g=true;c=f;d=e;break}if(h===d){g=true;d=f;c=e;break}h=h.sibling;}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling;}return null}\n \tvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&\"function\"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128));}catch(b){}}\n \tvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\n \tfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\n \tdefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)));}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\n \tfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return -1;case 134217728:case 268435456:case 536870912:case 1073741824:return -1;default:return -1}}\n \tfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b);}else k<=b&&(a.expiredLanes|=h);f&=~h;}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\n \tfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c;}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f;}}\n \tfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e;}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=false,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\n \tfunction Sc(a,b){switch(a){case \"focusin\":case \"focusout\":Lc=null;break;case \"dragenter\":case \"dragleave\":Mc=null;break;case \"mouseover\":case \"mouseout\":Nc=null;break;case \"pointerover\":case \"pointerout\":Oc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Pc.delete(b.pointerId);}}\n \tfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\n \tfunction Uc(a,b,c,d,e){switch(b){case \"focusin\":return Lc=Tc(Lc,a,b,c,d,e),true;case \"dragenter\":return Mc=Tc(Mc,a,b,c,d,e),true;case \"mouseover\":return Nc=Tc(Nc,a,b,c,d,e),true;case \"pointerover\":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return true;case \"gotpointercapture\":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),true}return false}\n \tfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c);});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null;}\n \tfunction Xc(a){if(null!==a.blockedOn)return false;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null;}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,false;b.shift();}return true}function Zc(a,b,c){Xc(a)&&c.delete(b);}function $c(){Jc=false;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc);}\n \tfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=true,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)));}\n \tfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null);}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift();}var cd=ua.ReactCurrentBatchConfig,dd=true;\n \tfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d);}finally{C=e,cd.transition=f;}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d);}finally{C=e,cd.transition=f;}}\n \tfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f;}null!==e&&d.stopPropagation();}else hd(a,b,d,null,c);}}var id=null;\n \tfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null;}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null;}else b!==a&&(a=null);id=a;return null}\n \tfunction jd(a){switch(a){case \"cancel\":case \"click\":case \"close\":case \"contextmenu\":case \"copy\":case \"cut\":case \"auxclick\":case \"dblclick\":case \"dragend\":case \"dragstart\":case \"drop\":case \"focusin\":case \"focusout\":case \"input\":case \"invalid\":case \"keydown\":case \"keypress\":case \"keyup\":case \"mousedown\":case \"mouseup\":case \"paste\":case \"pause\":case \"play\":case \"pointercancel\":case \"pointerdown\":case \"pointerup\":case \"ratechange\":case \"reset\":case \"resize\":case \"seeked\":case \"submit\":case \"touchcancel\":case \"touchend\":case \"touchstart\":case \"volumechange\":case \"change\":case \"selectionchange\":case \"textInput\":case \"compositionstart\":case \"compositionend\":case \"compositionupdate\":case \"beforeblur\":case \"afterblur\":case \"beforeinput\":case \"blur\":case \"fullscreenchange\":case \"focus\":case \"hashchange\":case \"popstate\":case \"select\":case \"selectstart\":return 1;case \"drag\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"mousemove\":case \"mouseout\":case \"mouseover\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"scroll\":case \"toggle\":case \"touchmove\":case \"wheel\":case \"mouseenter\":case \"mouseleave\":case \"pointerenter\":case \"pointerleave\":return 4;\n \tcase \"message\":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\n \tfunction od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return true}function qd(){return false}\n \tfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:false===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=true;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n \t(a.returnValue=false),this.isDefaultPrevented=pd);},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=true),this.isPropagationStopped=pd);},persist:function(){},isPersistent:pd});return b}\n \tvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\n \ta)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return \"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return \"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\n \tSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n \t119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:false}function zd(){return Pd}\n \tvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return \"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return \"keypress\"===a.type?od(a):0},keyCode:function(a){return \"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return \"keypress\"===\n \ta.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return \"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\n \tdeltaY:function(a){return \"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&\"CompositionEvent\"in window,be=null;ia&&\"documentMode\"in document&&(be=document.documentMode);var ce=ia&&\"TextEvent\"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=false;\n \tfunction ge(a,b){switch(a){case \"keyup\":return -1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return true;default:return false}}function he(a){a=a.detail;return \"object\"===typeof a&&\"data\"in a?a.data:null}var ie=false;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=true;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\n \tfunction ke(a,b){if(ie)return \"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=false,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\n \tvar le={color:true,date:true,datetime:true,\"datetime-local\":true,email:true,month:true,number:true,password:true,range:true,search:true,tel:true,text:true,time:true,url:true,week:true};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return \"input\"===b?!!le[a.type]:\"textarea\"===b?true:false}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}));}var pe=null,qe=null;function re(a){se(a,0);}function te(a){var b=ue(a);if(Wa(b))return a}\n \tfunction ve(a,b){if(\"change\"===a)return b}var we=false;if(ia){var xe;if(ia){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput;}xe=ye;}else xe=false;we=xe&&(!document.documentMode||9<document.documentMode);}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null);}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b);}}\n \tfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae();}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge;\n \tfunction Ie(a,b){if(He(a,b))return true;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return false;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return false;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return false}return true}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\n \tfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return {node:c,offset:b-a};a=d;}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode;}c=void 0;}c=Je(c);}}function Le(a,b){return a&&b?a===b?true:a&&3===a.nodeType?false:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):false:false}\n \tfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href;}catch(d){c=false;}if(c)a=b.contentWindow;else break;b=Xa(a.document);}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\n \tfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\n \td);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)));}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top;}}\n \tvar Pe=ia&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=false;\n \tfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)));}\n \tfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var We={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Xe={},Ye={};\n \tia&&(Ye=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),\"TransitionEvent\"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze(\"animationend\"),af=Ze(\"animationiteration\"),bf=Ze(\"animationstart\"),cf=Ze(\"transitionend\"),df=new Map,ef=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");\n \tfunction ff(a,b){df.set(a,b);fa(b,[a]);}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,\"on\"+kf);}ff($e,\"onAnimationEnd\");ff(af,\"onAnimationIteration\");ff(bf,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(cf,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);\n \tha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\n \tfa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var lf=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),mf=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(lf));\n \tfunction nf(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null;}\n \tfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k;}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k;}}}if(Qb)throw a=Rb,Qb=false,Rb=null,a;}\n \tfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+\"__bubble\";c.has(d)||(pf(b,a,2,false),c.add(d));}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b);}var rf=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=true;da.forEach(function(b){\"selectionchange\"!==b&&(mf.has(b)||qf(b,false,a),qf(b,true,a));});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=true,qf(\"selectionchange\",false,b));}}\n \tfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd;}c=e.bind(null,b,c,a);e=void 0;!Lb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=true);d?void 0!==e?a.addEventListener(b,c,{capture:true,passive:e}):a.addEventListener(b,c,true):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,false);}\n \tfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return;}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode;}}d=d.return;}Jb(function(){var d=f,e=xb(c),g=[];\n \ta:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":n=\"focus\";k=Fd;break;case \"focusout\":n=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\n \tDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td;}var t=0!==(b&4),J=!t&&\"scroll\"===a,x=t?null!==h?h+\"Capture\":null:h;t=[];for(var w=d,u;null!==\n \tw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return;}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}));}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\n \tn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null;}else k=null,n=d;if(k!==n){t=Bd;F=\"onMouseLeave\";x=\"onMouseEnter\";w=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)t=Td,F=\"onPointerLeave\",x=\"onPointerEnter\",w=\"pointer\";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+\"leave\",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+\"enter\",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\n \tvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x);}t=null;}else t=null;null!==k&&wf(g,h,k,t,false);null!==n&&null!==J&&wf(g,J,n,t,true);}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else {na=De;var xa=Ce;}else (k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);\"focusout\"===a&&(xa=h._wrapperState)&&\n \txa.controlled&&\"number\"===h.type&&cb(h,\"number\",h.value);}xa=d?ue(d):window;switch(a){case \"focusin\":if(me(xa)||\"true\"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=true;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=false;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e);}var $a;if(ae)b:{switch(a){case \"compositionstart\":var ba=\"onCompositionStart\";break b;case \"compositionend\":ba=\"onCompositionEnd\";\n \tbreak b;case \"compositionupdate\":ba=\"onCompositionUpdate\";break b}ba=void 0;}else ie?ge(a,c)&&(ba=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(ba=\"onCompositionStart\");ba&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==ba?\"onCompositionEnd\"===ba&&ie&&($a=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=true)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),\n \t0<d.length&&(e=new Ld(\"onBeforeInput\",\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=$a);}se(g,b);});}function tf(a,b,c){return {instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return;}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\n \tfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return;}0!==g.length&&a.push({event:b,listeners:g});}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return (\"string\"===typeof a?a:\"\"+a).replace(xf,\"\\n\").replace(yf,\"\")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\n \tvar Cf=null,Df=null;function Ef(a,b){return \"textarea\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\n \tvar Ff=\"function\"===typeof setTimeout?setTimeout:void 0,Gf=\"function\"===typeof clearTimeout?clearTimeout:void 0,Hf=\"function\"===typeof Promise?Promise:void 0,Jf=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;});}\n \tfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,\"/$\"===c){if(0===d){a.removeChild(e);bd(b);return}d--;}else \"$\"!==c&&\"$?\"!==c&&\"$!\"!==c||d++;c=e;}while(c);bd(b);}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if(\"$\"===b||\"$!\"===b||\"$?\"===b)break;if(\"/$\"===b)return null}}return a}\n \tfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--;}else \"/$\"===c&&b++;}a=a.previousSibling;}return null}var Nf=Math.random().toString(36).slice(2),Of=\"__reactFiber$\"+Nf,Pf=\"__reactProps$\"+Nf,uf=\"__reactContainer$\"+Nf,of=\"__reactEvents$\"+Nf,Qf=\"__reactListeners$\"+Nf,Rf=\"__reactHandles$\"+Nf;\n \tfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a);}return b}a=c;c=a.parentNode;}return null}function Cb(a){a=a[Of]||a[uf];return !a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return {current:a}}\n \tfunction E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--);}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b;}var Vf={},H=Uf(Vf),Wf=Uf(false),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\n \tfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H);}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c);}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\n \tfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return true}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c);}var eg=null,fg=false,gg=false;function hg(a){null===eg?eg=[a]:eg.push(a);}function ig(a){fg=true;hg(a);}\n \tfunction jg(){if(!gg&&null!==eg){gg=true;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1;}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=false;}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg=\"\";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b;}\n \tfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a;}else rg=1<<f|c<<e|d,sg=a;}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0));}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null;}var xg=null,yg=null,I=false,zg=null;\n \tfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType=\"DELETED\";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c);}\n \tfunction Cg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,xg=a,yg=Lf(b.firstChild),true):false;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,true):false;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\n \tnull,true):false;default:return false}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=false,xg=a);}}else {if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=false;xg=a;}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a;}\n \tfunction Gg(a){if(a!==xg)return false;if(!I)return Fg(a),I=true,false;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b=\"head\"!==b&&\"body\"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling);}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--;}else \"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++;}a=a.nextSibling;}yg=\n \tnull;}}else yg=xg?Lf(a.stateNode.nextSibling):null;return true}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling);}function Ig(){yg=xg=null;I=false;}function Jg(a){null===zg?zg=[a]:zg.push(a);}var Kg=ua.ReactCurrentBatchConfig;\n \tfunction Lg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode;}if(!d)throw Error(p(147,a));var e=d,f=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;null===a?delete b[f]:b[f]=a;};b._stringRef=f;return b}if(\"string\"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\n \tfunction Mg(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":a));}function Ng(a){var b=a._init;return b(a._payload)}\n \tfunction Og(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c);}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Pg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\n \tnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Qg(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===Ha&&Ng(f)===b.type))return d=e(b,c.props),d.ref=Lg(a,b,c),d.return=a,d;d=Rg(c.type,c.key,c.props,null,a.mode,d);d.ref=Lg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\n \tb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=Sg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Tg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if(\"string\"===typeof b&&\"\"!==b||\"number\"===typeof b)return b=Qg(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=Rg(b.type,b.key,b.props,null,a.mode,c),\n \tc.ref=Lg(a,null,b),c.return=a,c;case wa:return b=Sg(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Tg(b,a.mode,c,null),b.return=a,b;Mg(a,b);}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c&&\"\"!==c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\n \tb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);Mg(a,c);}return null}function y(a,b,c,d,e){if(\"string\"===typeof d&&\"\"!==d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);Mg(b,d);}return null}\n \tfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x;}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\n \tx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if(\"function\"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x;}if(n.done)return c(e,\n \tm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\n \tf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling;}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h);}return g(a);case wa:a:{for(l=f.key;null!==\n \td;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else {c(a,d);break}else b(a,d);d=d.sibling;}d=Sg(f,a.mode,h);d.return=a;a=d;}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f);}return \"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n \t(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(true),Vg=Og(false),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null;}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b;}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return;}}\n \tfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=true),a.firstContext=null);}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a};}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a);}\n \tfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=false;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null};}\n \tfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects});}function mh(a,b){return {eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\n \tfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c);}}\n \tfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next;}while(null!==c);null===f?e=f=b:f=f.next=b;}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\n \tb;c.lastBaseUpdate=b;}\n \tfunction qh(a,b,c,d){var e=a.updateQueue;jh=false;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k));}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\n \tnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=true;}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h));}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\n \th=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null;}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q;}}\n \tfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(p(191,e));e.call(d);}}}var th={},uh=Uf(th),vh=Uf(th),wh=Uf(th);function xh(a){if(a===th)throw Error(p(174));return a}\n \tfunction yh(a,b){G(wh,b);G(vh,a);G(uh,th);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a);}E(uh);G(uh,b);}function zh(){E(uh);E(vh);E(wh);}function Ah(a){xh(wh.current);var b=xh(uh.current);var c=lb(b,a.type);b!==c&&(G(vh,a),G(uh,c));}function Bh(a){vh.current===a&&(E(uh),E(vh));}var L=Uf(0);\n \tfunction Ch(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return;}b.sibling.return=b.return;b=b.sibling;}return null}var Dh=[];\n \tfunction Eh(){for(var a=0;a<Dh.length;a++)Dh[a]._workInProgressVersionPrimary=null;Dh.length=0;}var Fh=ua.ReactCurrentDispatcher,Gh=ua.ReactCurrentBatchConfig,Hh=0,M=null,N=null,O=null,Ih=false,Jh=false,Kh=0,Lh=0;function P(){throw Error(p(321));}function Mh(a,b){if(null===b)return false;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return false;return true}\n \tfunction Nh(a,b,c,d,e,f){Hh=f;M=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Fh.current=null===a||null===a.memoizedState?Oh:Ph;a=c(d,e);if(Jh){f=0;do{Jh=false;Kh=0;if(25<=f)throw Error(p(301));f+=1;O=N=null;b.updateQueue=null;Fh.current=Qh;a=c(d,e);}while(Jh)}Fh.current=Rh;b=null!==N&&null!==N.next;Hh=0;O=N=M=null;Ih=false;if(b)throw Error(p(300));return a}function Sh(){var a=0!==Kh;Kh=0;return a}\n \tfunction Th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===O?M.memoizedState=O=a:O=O.next=a;return O}function Uh(){if(null===N){var a=M.alternate;a=null!==a?a.memoizedState:null;}else a=N.next;var b=null===O?M.memoizedState:O.next;if(null!==b)O=b,N=a;else {if(null===a)throw Error(p(310));N=a;a={memoizedState:N.memoizedState,baseState:N.baseState,baseQueue:N.baseQueue,queue:N.queue,next:null};null===O?M.memoizedState=O=a:O=O.next=a;}return O}\n \tfunction Vh(a,b){return \"function\"===typeof b?b(a):b}\n \tfunction Wh(a){var b=Uh(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=N,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g;}d.baseQueue=e=f;c.pending=null;}if(null!==e){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Hh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else {var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\n \teagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;M.lanes|=m;rh|=m;}l=l.next;}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(dh=true);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d;}a=c.interleaved;if(null!==a){e=a;do f=e.lane,M.lanes|=f,rh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return [b.memoizedState,c.dispatch]}\n \tfunction Xh(a){var b=Uh(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(dh=true);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f;}return [f,d]}function Yh(){}\n \tfunction Zh(a,b){var c=M,d=Uh(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,dh=true);d=d.queue;$h(ai.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==O&&O.memoizedState.tag&1){c.flags|=2048;bi(9,ci.bind(null,c,d,e,b),void 0,null);if(null===Q)throw Error(p(349));0!==(Hh&30)||di(c,b,e);}return e}function di(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=M.updateQueue;null===b?(b={lastEffect:null,stores:null},M.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a));}\n \tfunction ci(a,b,c,d){b.value=c;b.getSnapshot=d;ei(b)&&fi(a);}function ai(a,b,c){return c(function(){ei(b)&&fi(a);})}function ei(a){var b=a.getSnapshot;a=a.value;try{var c=b();return !He(a,c)}catch(d){return true}}function fi(a){var b=ih(a,1);null!==b&&gi(b,a,1,-1);}\n \tfunction hi(a){var b=Th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Vh,lastRenderedState:a};b.queue=a;a=a.dispatch=ii.bind(null,M,a);return [b.memoizedState,a]}\n \tfunction bi(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=M.updateQueue;null===b?(b={lastEffect:null,stores:null},M.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function ji(){return Uh().memoizedState}function ki(a,b,c,d){var e=Th();M.flags|=a;e.memoizedState=bi(1|b,c,void 0,void 0===d?null:d);}\n \tfunction li(a,b,c,d){var e=Uh();d=void 0===d?null:d;var f=void 0;if(null!==N){var g=N.memoizedState;f=g.destroy;if(null!==d&&Mh(d,g.deps)){e.memoizedState=bi(b,c,f,d);return}}M.flags|=a;e.memoizedState=bi(1|b,c,f,d);}function mi(a,b){return ki(8390656,8,a,b)}function $h(a,b){return li(2048,8,a,b)}function ni(a,b){return li(4,2,a,b)}function oi(a,b){return li(4,4,a,b)}\n \tfunction pi(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null);};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null;}}function qi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return li(4,4,pi.bind(null,b,a),c)}function ri(){}function si(a,b){var c=Uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Mh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\n \tfunction ti(a,b){var c=Uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Mh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function ui(a,b,c){if(0===(Hh&21))return a.baseState&&(a.baseState=false,dh=true),a.memoizedState=c;He(c,b)||(c=yc(),M.lanes|=c,rh|=c,a.baseState=true);return b}function vi(a,b){var c=C;C=0!==c&&4>c?c:4;a(true);var d=Gh.transition;Gh.transition={};try{a(!1),b();}finally{C=c,Gh.transition=d;}}function wi(){return Uh().memoizedState}\n \tfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:false,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d);}}\n \tfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:false,eagerState:null,next:null};if(zi(a))Ai(b,e);else {var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d));}}\n \tfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=true;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b;}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c);}}\n \tvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:false},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n \t4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return [d.memoizedState,a]},useRef:function(a){var b=\n \tTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(false),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return [b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c();}else {c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c);}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\n \tf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0<c&&(b+=\"H\"+c.toString(32));b+=\":\";}else c=Lh++,b=\":\"+b+\"r\"+c.toString(32)+\":\";return a.memoizedState=b},unstable_isNewReconciler:false},Ph={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Wh,useRef:ji,useState:function(){return Wh(Vh)},\n \tuseDebugValue:ri,useDeferredValue:function(a){var b=Uh();return ui(b,N.memoizedState,a)},useTransition:function(){var a=Wh(Vh)[0],b=Uh().memoizedState;return [a,b]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:false},Qh={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Xh,useRef:ji,useState:function(){return Xh(Vh)},useDebugValue:ri,useDeferredValue:function(a){var b=Uh();return null===\n \tN?b.memoizedState=a:ui(b,N.memoizedState,a)},useTransition:function(){var a=Xh(Vh)[0],b=Uh().memoizedState;return [a,b]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:false};function Ci(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a) void 0===b[c]&&(b[c]=a[c]);return b}return b}function Di(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c);}\n \tvar Ei={isMounted:function(a){return (a=a._reactInternals)?Vb(a)===a:false},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=R(),e=yi(a),f=mh(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=nh(a,f,e);null!==b&&(gi(b,a,e,d),oh(b,a,e));},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=R(),e=yi(a),f=mh(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=nh(a,f,e);null!==b&&(gi(b,a,e,d),oh(b,a,e));},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=R(),d=\n \tyi(a),e=mh(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=nh(a,e,d);null!==b&&(gi(b,a,d,c),oh(b,a,d));}};function Fi(a,b,c,d,e,f,g){a=a.stateNode;return \"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):true}\n \tfunction Gi(a,b,c){var d=false,e=Vf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=eh(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Ei;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\n \tfunction Hi(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Ei.enqueueReplaceState(b,b.state,null);}\n \tfunction Ii(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs={};kh(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=eh(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Di(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||(b=e.state,\n \t\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Ei.enqueueReplaceState(e,e.state,null),qh(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4194308);}function Ji(a,b){try{var c=\"\",d=b;do c+=Pa(d),d=d.return;while(d);var e=c;}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack;}return {value:a,source:b,stack:e,digest:null}}\n \tfunction Ki(a,b,c){return {value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}function Li(a,b){try{console.error(b.value);}catch(c){setTimeout(function(){throw c;});}}var Mi=\"function\"===typeof WeakMap?WeakMap:Map;function Ni(a,b,c){c=mh(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Oi||(Oi=true,Pi=d);Li(a,b);};return c}\n \tfunction Qi(a,b,c){c=mh(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Li(a,b);};}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){Li(a,b);\"function\"!==typeof d&&(null===Ri?Ri=new Set([this]):Ri.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"});});return c}\n \tfunction Si(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Mi;var e=new Set;d.set(b,e);}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ti.bind(null,a,b,c),b.then(a,a));}function Ui(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?true:false:true;if(b)return a;a=a.return;}while(null!==a);return null}\n \tfunction Vi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=mh(-1,1),b.tag=2,nh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Wi=ua.ReactCurrentOwner,dh=false;function Xi(a,b,c,d){b.child=null===a?Vg(b,null,c,d):Ug(b,a.child,c,d);}\n \tfunction Yi(a,b,c,d,e){c=c.render;var f=b.ref;ch(b,e);d=Nh(a,b,c,d,f,e);c=Sh();if(null!==a&&!dh)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);I&&c&&vg(b);b.flags|=1;Xi(a,b,d,e);return b.child}\n \tfunction $i(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!aj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,bj(a,b,f,d,e);a=Rg(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return Zi(a,b,e)}b.flags|=1;a=Pg(f,d);a.ref=b.ref;a.return=b;return b.child=a}\n \tfunction bj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(dh=false,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(dh=true);else return b.lanes=a.lanes,Zi(a,b,e)}return cj(a,b,c,d,e)}\n \tfunction dj(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(ej,fj),fj|=c;else {if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(ej,fj),fj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(ej,fj);fj|=d;}else null!==\n \tf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(ej,fj),fj|=d;Xi(a,b,e,c);return b.child}function gj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152;}function cj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);ch(b,e);c=Nh(a,b,c,d,f,e);d=Sh();if(null!==a&&!dh)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);I&&d&&vg(b);b.flags|=1;Xi(a,b,c,e);return b.child}\n \tfunction hj(a,b,c,d,e){if(Zf(c)){var f=true;cg(b);}else f=false;ch(b,e);if(null===b.stateNode)ij(a,b),Gi(b,c,d),Ii(b,c,d,e),d=true;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=eh(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;q||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||\n \t(h!==d||k!==l)&&Hi(b,g,d,l);jh=false;var r=b.memoizedState;g.state=r;qh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||jh?(\"function\"===typeof m&&(Di(b,c,m,d),k=b.memoizedState),(h=jh||Fi(b,c,h,d,r,k,l))?(q||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.flags|=4194308)):\n \t(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=false);}else {g=b.stateNode;lh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Ci(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=eh(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===typeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\n \t\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&Hi(b,g,d,k);jh=false;r=b.memoizedState;g.state=r;qh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||jh?(\"function\"===typeof y&&(Di(b,c,y,d),n=b.memoizedState),(l=jh||Fi(b,c,l,d,r,n,k)||false)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&\n \tg.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\n \ta.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=false);}return jj(a,b,c,d,f,e)}\n \tfunction jj(a,b,c,d,e,f){gj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,false),Zi(a,b,f);d=b.stateNode;Wi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Ug(b,a.child,null,f),b.child=Ug(b,null,h,f)):Xi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,true);return b.child}function kj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,false);yh(a,b.containerInfo);}\n \tfunction lj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Xi(a,b,c,d);return b.child}var mj={dehydrated:null,treeContext:null,retryLane:0};function nj(a){return {baseLanes:a,cachePool:null,transitions:null}}\n \tfunction oj(a,b,c){var d=b.pendingProps,e=L.current,f=false,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?false:0!==(e&2));if(h)f=true,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(L,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:\"hidden\",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\n \tg):f=pj(g,d,0,null),a=Tg(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=nj(c),b.memoizedState=mj,a):qj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return rj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:\"hidden\",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=Pg(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=Pg(h,f):(f=Tg(f,g,c,null),f.flags|=2);f.return=\n \tb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?nj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=mj;return d}f=a.child;a=f.sibling;d=Pg(f,{mode:\"visible\",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\n \tfunction qj(a,b){b=pj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function sj(a,b,c,d){null!==d&&Jg(d);Ug(b,a.child,null,c);a=qj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\n \tfunction rj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Ki(Error(p(422))),sj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=pj({mode:\"visible\",children:d.children},e,0,null);f=Tg(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Ug(b,a.child,null,g);b.child.memoizedState=nj(g);b.memoizedState=mj;return f}if(0===(b.mode&1))return sj(a,b,g,null);if(\"$!\"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\n \tif(d)var h=d.dgst;d=h;f=Error(p(419));d=Ki(f,d,void 0);return sj(a,b,g,d)}h=0!==(g&a.childLanes);if(dh||h){d=Q;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0;}e=0!==(e&(d.suspendedLanes|g))?0:e;\n \t0!==e&&e!==f.retryLane&&(f.retryLane=e,ih(a,e),gi(d,a,e,-1));}tj();d=Ki(Error(p(421)));return sj(a,b,g,d)}if(\"$?\"===e.data)return b.flags|=128,b.child=a.child,b=uj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=true;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=qj(b,d.children);b.flags|=4096;return b}function vj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);bh(a.return,b,c);}\n \tfunction wj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e);}\n \tfunction xj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Xi(a,b,d.children,c);d=L.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else {if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&vj(a,c,b);else if(19===a.tag)vj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return;}a.sibling.return=a.return;a=a.sibling;}d&=1;}G(L,d);if(0===(b.mode&1))b.memoizedState=\n \tnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Ch(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);wj(b,false,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Ch(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a;}wj(b,true,c,null,f);break;case \"together\":wj(b,false,null,null,void 0);break;default:b.memoizedState=null;}return b.child}\n \tfunction ij(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2);}function Zi(a,b,c){null!==a&&(b.dependencies=a.dependencies);rh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=Pg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Pg(a,a.pendingProps),c.return=b;c.sibling=null;}return b.child}\n \tfunction yj(a,b,c){switch(b.tag){case 3:kj(b);Ig();break;case 5:Ah(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:yh(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Wg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(L,L.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return oj(a,b,c);G(L,L.current&1);a=Zi(a,b,c);return null!==a?a.sibling:null}G(L,L.current&1);break;case 19:d=0!==(c&\n \tb.childLanes);if(0!==(a.flags&128)){if(d)return xj(a,b,c);b.flags|=128;}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(L,L.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,dj(a,b,c)}return Zi(a,b,c)}var zj,Aj,Bj,Cj;\n \tzj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return;}c.sibling.return=c.return;c=c.sibling;}};Aj=function(){};\n \tBj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;xh(uh.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"select\":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=Bf);}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n \t(c||(c={}),c[g]=\"\");}else \"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g]);}else c||(f||(f=[]),f.push(l,\n \tc)),c=k;else \"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ea.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&D(\"scroll\",a),f||h===k||(f=[])):(f=f||[]).push(l,k));}c&&(f=f||[]).push(\"style\",c);var l=f;if(b.updateQueue=l)b.flags|=4;}};Cj=function(a,b,c,d){c!==d&&(b.flags|=4);};\n \tfunction Dj(a,b){if(!I)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null;}}\n \tfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\n \tfunction Ej(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;zh();E(Wf);E(H);Eh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Fj(zg),zg=null));Aj(a,b);S(b);return null;case 5:Bh(b);var e=xh(wh.current);\n \tc=b.type;if(null!==a&&null!=b.stateNode)Bj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else {if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=xh(uh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case \"dialog\":D(\"cancel\",d);D(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",d);break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],d);break;case \"source\":D(\"error\",d);break;case \"img\":case \"image\":case \"link\":D(\"error\",\n \td);D(\"load\",d);break;case \"details\":D(\"toggle\",d);break;case \"input\":Za(d,f);D(\"invalid\",d);break;case \"select\":d._wrapperState={wasMultiple:!!f.multiple};D(\"invalid\",d);break;case \"textarea\":hb(d,f),D(\"invalid\",d);}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(true!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(true!==f.suppressHydrationWarning&&Af(d.textContent,\n \th,a),e=[\"children\",\"\"+h]):ea.hasOwnProperty(g)&&null!=h&&\"onScroll\"===g&&D(\"scroll\",d);}switch(c){case \"input\":Va(d);db(d,f,true);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=Bf);}d=e;b.updateQueue=d;null!==d&&(b.flags|=4);}else {g=9===e.nodeType?e:e.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(c));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\n \t\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=true:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,false,false);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case \"source\":D(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":D(\"error\",\n \ta);D(\"load\",a);e=d;break;case \"details\":D(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);D(\"invalid\",a);break;case \"option\":e=d;break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D(\"invalid\",a);break;case \"textarea\":hb(a,d);e=gb(a,d);D(\"invalid\",a);break;default:e=d;}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?sb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==\n \tc||\"\"!==k)&&ob(a,k):\"number\"===typeof k&&ob(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ea.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&D(\"scroll\",a):null!=k&&ta(a,f,k,g));}switch(c){case \"input\":Va(a);db(a,d,false);break;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,false):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n \ttrue);break;default:\"function\"===typeof e.onClick&&(a.onclick=Bf);}switch(c){case \"button\":case \"input\":case \"select\":case \"textarea\":d=!!d.autoFocus;break a;case \"img\":d=true;break a;default:d=false;}}d&&(b.flags|=4);}null!==b.ref&&(b.flags|=512,b.flags|=2097152);}S(b);return null;case 6:if(a&&null!=b.stateNode)Cj(a,b,a.memoizedProps,d);else {if(\"string\"!==typeof d&&null===b.stateNode)throw Error(p(166));c=xh(wh.current);xh(uh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\n \txg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:true!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1));}f&&(b.flags|=4);}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d;}S(b);return null;case 13:E(L);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=false;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\n \ta){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b;}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=false;}else null!==zg&&(Fj(zg),zg=null),f=true;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(L.current&1)?0===T&&(T=3):tj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return zh(),\n \tAj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return ah(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(L);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Dj(f,false);else {if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Ch(a);if(null!==g){b.flags|=128;Dj(f,false);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\n \tg=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(L,L.current&1|2);return b.child}a=\n \ta.sibling;}null!==f.tail&&B()>Gj&&(b.flags|=128,d=true,Dj(f,false),b.lanes=4194304);}else {if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=true,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,true),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=true,Dj(f,false),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g);}if(null!==f.tail)return b=f.tail,f.rendering=\n \tb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\n \tfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig();}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\n \tnull;case 24:return null;default:return null}}var Jj=false,U=false,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null);}catch(d){W(a,b,d);}else c.current=null;}function Mj(a,b,c){try{c();}catch(d){W(a,b,d);}}var Nj=false;\n \tfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType;}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\n \tq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y;}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode;}q=y;}c=-1===h||-1===k?null:{start:h,end:k};}else c=null;}c=c||{start:0,end:0};}else c=null;Df={focusedElem:a,selectionRange:c};dd=false;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\n \tcase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w;}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F);}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return;}n=Nj;Nj=false;return n}\n \tfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f);}e=e.next;}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d();}c=c.next;}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c;}\"function\"===typeof b?b(a):b.current=a;}}\n \tfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null;}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\n \tfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return;}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child;}if(!(a.flags&2))return a.stateNode}}\n \tfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling;}\n \tfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling;}var X=null,Xj=false;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling;}\n \tfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c);}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=true;\n \tYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next;}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount();}catch(h){W(c,b,h);}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\n \tc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c);}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d));});}}\n \tfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Xj=!1;break a;case 3:X=h.stateNode.containerInfo;Xj=!0;break a;case 4:X=h.stateNode.containerInfo;Xj=!0;break a}h=h.return;}if(null===X)throw Error(p(160));Zj(f,g,e);X=null;Xj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null;}catch(l){W(e,b,l);}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)dk(b,a),b=b.sibling;}\n \tfunction dk(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:ck(b,a);ek(a);if(d&4){try{Pj(3,a,a.return),Qj(3,a);}catch(t){W(a,a.return,t);}try{Pj(5,a,a.return);}catch(t){W(a,a.return,t);}}break;case 1:ck(b,a);ek(a);d&512&&null!==c&&Lj(c,c.return);break;case 5:ck(b,a);ek(a);d&512&&null!==c&&Lj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,\"\");}catch(t){W(a,a.return,t);}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\n \ta.updateQueue=null;if(null!==k)try{\"input\"===h&&\"radio\"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];\"style\"===m?sb(e,q):\"dangerouslySetInnerHTML\"===m?nb(e,q):\"children\"===m?ob(e,q):ta(e,m,q,l);}switch(h){case \"input\":bb(e,f);break;case \"textarea\":ib(e,f);break;case \"select\":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\n \tf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:\"\",!1));}e[Pf]=f;}catch(t){W(a,a.return,t);}}break;case 6:ck(b,a);ek(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f;}catch(t){W(a,a.return,t);}}break;case 3:ck(b,a);ek(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo);}catch(t){W(a,a.return,t);}break;case 4:ck(b,a);ek(a);break;case 13:ck(b,a);ek(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\n \tnull!==e.alternate&&null!==e.alternate.memoizedState||(fk=B()));d&4&&ak(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,ck(b,a),U=l):ck(b,a);ek(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Pj(4,r,r.return);break;case 1:Lj(r,r.return);var n=r.stateNode;if(\"function\"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\n \tb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount();}catch(t){W(d,c,t);}}break;case 5:Lj(r,r.return);break;case 22:if(null!==r.memoizedState){gk(q);continue}}null!==y?(y.return=r,V=y):gk(q);}m=m.sibling;}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty(\"display\")?k.display:null,h.style.display=\n \trb(\"display\",g));}catch(t){W(a,a.return,t);}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?\"\":q.memoizedProps;}catch(t){W(a,a.return,t);}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return;}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling;}}break;case 19:ck(b,a);ek(a);d&4&&ak(a);break;case 21:break;default:ck(b,\n \ta),ek(a);}}function ek(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Tj(c)){var d=c;break a}c=c.return;}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,\"\"),d.flags&=-33);var f=Uj(a);Wj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Uj(a);Vj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k);}a.flags&=-3;}b&4096&&(a.flags&=-4097);}function hk(a,b,c){V=a;ik(a);}\n \tfunction ik(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Jj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Jj;var l=U;Jj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?jk(e):null!==k?(k.return=g,V=k):jk(e);for(;null!==f;)V=f,ik(f),f=f.sibling;V=e;Jj=h;U=l;}kk(a);}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):kk(a);}}\n \tfunction kk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Qj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else {var e=b.elementType===b.type?c.memoizedProps:Ci(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate);}var f=b.updateQueue;null!==f&&sh(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\n \tb.child.stateNode;break;case 1:c=b.child.stateNode;}sh(b,g,c);}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case \"button\":case \"input\":case \"select\":case \"textarea\":k.autoFocus&&c.focus();break;case \"img\":k.src&&(c.src=k.src);}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q);}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\n \tdefault:throw Error(p(163));}U||b.flags&512&&Rj(b);}catch(r){W(b,b.return,r);}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return;}}function gk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return;}}\n \tfunction jk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Qj(4,b);}catch(k){W(b,c,k);}break;case 1:var d=b.stateNode;if(\"function\"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount();}catch(k){W(b,e,k);}}var f=b.return;try{Rj(b);}catch(k){W(b,f,k);}break;case 5:var g=b.return;try{Rj(b);}catch(k){W(b,g,k);}}}catch(k){W(b,b.return,k);}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return;}}\n \tvar lk=Math.ceil,mk=ua.ReactCurrentDispatcher,nk=ua.ReactCurrentOwner,ok=ua.ReactCurrentBatchConfig,K=0,Q=null,Y=null,Z=0,fj=0,ej=Uf(0),T=0,pk=null,rh=0,qk=0,rk=0,sk=null,tk=null,fk=0,Gj=Infinity,uk=null,Oi=false,Pi=null,Ri=null,vk=false,wk=null,xk=0,yk=0,zk=null,Ak=-1,Bk=0;function R(){return 0!==(K&6)?B():-1!==Ak?Ak:Ak=B()}\n \tfunction yi(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Bk&&(Bk=yc()),Bk;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function gi(a,b,c,d){if(50<yk)throw yk=0,zk=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==Q)a===Q&&(0===(K&2)&&(qk|=c),4===T&&Ck(a,Z)),Dk(a,d),1===c&&0===K&&0===(b.mode&1)&&(Gj=B()+500,fg&&jg());}\n \tfunction Dk(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===Q?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Ek.bind(null,a)):hg(Ek.bind(null,a)),Jf(function(){0===(K&6)&&jg();}),c=null;else {switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc;}c=Fk(c,Gk.bind(null,a));}a.callbackPriority=b;a.callbackNode=c;}}\n \tfunction Gk(a,b){Ak=-1;Bk=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Hk()&&a.callbackNode!==c)return null;var d=uc(a,a===Q?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Ik(a,d);else {b=d;var e=K;K|=2;var f=Jk();if(Q!==a||Z!==b)uk=null,Gj=B()+500,Kk(a,b);do try{Lk();break}catch(h){Mk(a,h);}while(1);$g();mk.current=f;K=e;null!==Y?b=0:(Q=null,Z=0,b=T);}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Nk(a,e)));if(1===b)throw c=pk,Kk(a,0),Ck(a,d),Dk(a,B()),c;if(6===b)Ck(a,d);\n \telse {e=a.current.alternate;if(0===(d&30)&&!Ok(e)&&(b=Ik(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Nk(a,f))),1===b))throw c=pk,Kk(a,0),Ck(a,d),Dk(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Pk(a,tk,uk);break;case 3:Ck(a,d);if((d&130023424)===d&&(b=fk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){R();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Pk.bind(null,a,tk,uk),b);break}Pk(a,tk,uk);break;case 4:Ck(a,d);if((d&4194240)===\n \td)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f;}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Pk.bind(null,a,tk,uk),d);break}Pk(a,tk,uk);break;case 5:Pk(a,tk,uk);break;default:throw Error(p(329));}}}Dk(a,B());return a.callbackNode===c?Gk.bind(null,a):null}\n \tfunction Nk(a,b){var c=sk;a.current.memoizedState.isDehydrated&&(Kk(a,b).flags|=256);a=Ik(a,b);2!==a&&(b=tk,tk=c,null!==b&&Fj(b));return a}function Fj(a){null===tk?tk=a:tk.push.apply(tk,a);}\n \tfunction Ok(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return !1}catch(g){return false}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else {if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return true;b=b.return;}b.sibling.return=b.return;b=b.sibling;}}return true}\n \tfunction Ck(a,b){b&=~rk;b&=~qk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d;}}function Ek(a){if(0!==(K&6))throw Error(p(327));Hk();var b=uc(a,0);if(0===(b&1))return Dk(a,B()),null;var c=Ik(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Nk(a,d));}if(1===c)throw c=pk,Kk(a,0),Ck(a,b),Dk(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Pk(a,tk,uk);Dk(a,B());return null}\n \tfunction Qk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Gj=B()+500,fg&&jg());}}function Rk(a){null!==wk&&0===wk.tag&&0===(K&6)&&Hk();var b=K;K|=1;var c=ok.transition,d=C;try{if(ok.transition=null,C=1,a)return a()}finally{C=d,ok.transition=c,K=b,0===(K&6)&&jg();}}function Hj(){fj=ej.current;E(ej);}\n \tfunction Kk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:zh();E(Wf);E(H);Eh();break;case 5:Bh(d);break;case 4:zh();break;case 13:E(L);break;case 19:E(L);break;case 10:ah(d.type._context);break;case 22:case 23:Hj();}c=c.return;}Q=a;Y=a=Pg(a.current,null);Z=fj=b;T=0;pk=null;rk=qk=rh=0;tk=sk=null;if(null!==fh){for(b=\n \t0;b<fh.length;b++)if(c=fh[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g;}c.pending=d;}fh=null;}return a}\n \tfunction Mk(a,b){do{var c=Y;try{$g();Fh.current=Rh;if(Ih){for(var d=M.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next;}Ih=!1;}Hh=0;O=N=M=null;Jh=!1;Kh=0;nk.current=null;if(null===c||null===c.return){T=1;pk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\n \tm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null);}var y=Ui(g);if(null!==y){y.flags&=-257;Vi(y,g,h,f,b);y.mode&1&&Si(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t;}else n.add(k);break a}else {if(0===(b&1)){Si(f,l,b);tj();break a}k=Error(p(426));}}else if(I&&h.mode&1){var J=Ui(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Vi(J,g,h,f,b);Jg(Ji(k,h));break a}}f=k=Ji(k,h);4!==T&&(T=2);null===sk?sk=[f]:sk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\n \tb&=-b;f.lanes|=b;var x=Ni(f,k,b);ph(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&(\"function\"===typeof w.getDerivedStateFromError||null!==u&&\"function\"===typeof u.componentDidCatch&&(null===Ri||!Ri.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Qi(f,h,b);ph(f,F);break a}}f=f.return;}while(null!==f)}Sk(c);}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Jk(){var a=mk.current;mk.current=Rh;return null===a?Rh:a}\n \tfunction tj(){if(0===T||3===T||2===T)T=4;null===Q||0===(rh&268435455)&&0===(qk&268435455)||Ck(Q,Z);}function Ik(a,b){var c=K;K|=2;var d=Jk();if(Q!==a||Z!==b)uk=null,Kk(a,b);do try{Tk();break}catch(e){Mk(a,e);}while(1);$g();K=c;mk.current=d;if(null!==Y)throw Error(p(261));Q=null;Z=0;return T}function Tk(){for(;null!==Y;)Uk(Y);}function Lk(){for(;null!==Y&&!cc();)Uk(Y);}function Uk(a){var b=Vk(a.alternate,a,fj);a.memoizedProps=a.pendingProps;null===b?Sk(a):Y=b;nk.current=null;}\n \tfunction Sk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Ej(c,b,fj),null!==c){Y=c;return}}else {c=Ij(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else {T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a;}while(null!==b);0===T&&(T=5);}function Pk(a,b,c){var d=C,e=ok.transition;try{ok.transition=null,C=1,Wk(a,b,c,d);}finally{ok.transition=e,C=d;}return null}\n \tfunction Wk(a,b,c,d){do Hk();while(null!==wk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===Q&&(Y=Q=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||vk||(vk=true,Fk(hc,function(){Hk();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=ok.transition;ok.transition=null;\n \tvar g=C;C=1;var h=K;K|=4;nk.current=null;Oj(a,c);dk(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;hk(c);dc();K=h;C=g;ok.transition=f;}else a.current=c;vk&&(vk=false,wk=a,xk=e);f=a.pendingLanes;0===f&&(Ri=null);mc(c.stateNode);Dk(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Oi)throw Oi=false,a=Pi,Pi=null,a;0!==(xk&1)&&0!==a.tag&&Hk();f=a.pendingLanes;0!==(f&1)?a===zk?yk++:(yk=0,zk=a):yk=0;jg();return null}\n \tfunction Hk(){if(null!==wk){var a=Dc(xk),b=ok.transition,c=C;try{ok.transition=null;C=16>a?16:a;if(null===wk)var d=!1;else {a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Pj(8,m,f);}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Sj(m);if(m===\n \tl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y;}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J;}while(null!==t)}}V=f;}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Pj(9,f,f.return);}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return;}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\n \tu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Qj(9,h);}}catch(na){W(h,h.return,na);}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return;}}K=e;jg();if(lc&&\"function\"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a);}catch(na){}d=!0;}return d}finally{C=c,ok.transition=b;}}return false}function Xk(a,b,c){b=Ji(c,b);b=Ni(a,b,1);a=nh(a,b,1);b=R();null!==a&&(Ac(a,1,b),Dk(a,b));}\n \tfunction W(a,b,c){if(3===a.tag)Xk(a,a,c);else for(;null!==b;){if(3===b.tag){Xk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if(\"function\"===typeof b.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ri||!Ri.has(d))){a=Ji(c,a);a=Qi(b,a,1);b=nh(b,a,1);a=R();null!==b&&(Ac(b,1,a),Dk(b,a));break}}b=b.return;}}\n \tfunction Ti(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=R();a.pingedLanes|=a.suspendedLanes&c;Q===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-fk?Kk(a,0):rk|=c);Dk(a,b);}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c));}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c);}\n \tfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c);}var Vk;\n \tVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=true;else {if(0===(a.lanes&c)&&0===(b.flags&128))return dh=false,yj(a,b,c);dh=0!==(a.flags&131072)?true:false;}else dh=false,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\n \tnull,Zf(d)?(f=true,cg(b)):f=false,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,true,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\n \td,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:false,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\n \tf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=true,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else {Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c);}b=b.child;}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\n \tgj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\n \tg=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k;}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\n \tc,b);h.lanes|=c;break}k=k.next;}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling;}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return;}f=g;}Xi(a,b,e.children,c);b=b.child;}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\n \tb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=true,cg(b)):a=false,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,true,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\n \tfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null;}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return !(!a||!a.isReactComponent)}\n \tfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\n \tfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\n \tc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\n \tfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\n \tbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:false};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\n \tfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\n \tfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\n \tnull;}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,true===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return {$$typeof:wa,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\n \tfunction dl(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return;}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\n \tfunction el(a,b,c,d,e,f,g,h,k){a=bl(c,d,true,a,e,f,g,h,k);a.context=dl(null);c=a.current;d=R();e=yi(c);f=mh(d,e);f.callback=void 0!==b&&null!==b?b:null;nh(c,f,e);a.current.lanes=e;Ac(a,e,d);Dk(a,d);return a}function fl(a,b,c,d){var e=b.current,f=R(),g=yi(e);c=dl(c);null===b.context?b.context=c:b.pendingContext=c;b=mh(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=nh(e,b,g);null!==a&&(gi(a,e,g,f),oh(a,e,g));return g}\n \tfunction gl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function hl(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b;}}function il(a,b){hl(a,b);(a=a.alternate)&&hl(a,b);}function jl(){return null}var kl=\"function\"===typeof reportError?reportError:function(a){console.error(a);};function ll(a){this._internalRoot=a;}\n \tml.prototype.render=ll.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));fl(a,b,null,null);};ml.prototype.unmount=ll.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Rk(function(){fl(null,a,null,null);});b[uf]=null;}};function ml(a){this._internalRoot=a;}\n \tml.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a);}};function nl(a){return !(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function ol(a){return !(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function pl(){}\n \tfunction ql(a,b,c,d,e){if(e){if(\"function\"===typeof d){var f=d;d=function(){var a=gl(g);f.call(a);};}var g=el(b,d,a,0,null,false,false,\"\",pl);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Rk();return g}for(;e=a.lastChild;)a.removeChild(e);if(\"function\"===typeof d){var h=d;d=function(){var a=gl(k);h.call(a);};}var k=bl(a,0,false,null,null,false,false,\"\",pl);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Rk(function(){fl(b,k,c,d);});return k}\n \tfunction rl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if(\"function\"===typeof e){var h=e;e=function(){var a=gl(g);h.call(a);};}fl(b,g,a,e);}else g=ql(c,b,a,e,d);return gl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Dk(b,B()),0===(K&6)&&(Gj=B()+500,jg()));}break;case 13:Rk(function(){var b=ih(a,1);if(null!==b){var c=R();gi(b,a,1,c);}}),il(a,1);}};\n \tFc=function(a){if(13===a.tag){var b=ih(a,134217728);if(null!==b){var c=R();gi(b,a,134217728,c);}il(a,134217728);}};Gc=function(a){if(13===a.tag){var b=yi(a),c=ih(a,b);if(null!==c){var d=R();gi(c,a,b,d);}il(a,b);}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c;}};\n \tyb=function(a,b,c){switch(b){case \"input\":bb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e);}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,false);}};Gb=Qk;Hb=Rk;\n \tvar sl={usingClientEntryPoint:false,Events:[Cb,ue,Db,Eb,Fb,Qk]},tl={findFiberByHostInstance:Wc,bundleType:0,version:\"18.3.1\",rendererPackageName:\"react-dom\"};\n \tvar ul={bundleType:tl.bundleType,version:tl.version,rendererPackageName:tl.rendererPackageName,rendererConfig:tl.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:tl.findFiberByHostInstance||\n \tjl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.3.1-next-f1338f8080-20240426\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var vl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!vl.isDisabled&&vl.supportsFiber)try{kc=vl.inject(ul),lc=vl;}catch(a){}}reactDom_production_min.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=sl;\n \treactDom_production_min.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!nl(b))throw Error(p(200));return cl(a,b,null,c)};reactDom_production_min.createRoot=function(a,b){if(!nl(a))throw Error(p(299));var c=false,d=\"\",e=kl;null!==b&&void 0!==b&&(true===b.unstable_strictMode&&(c=true),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=bl(a,1,false,null,null,c,false,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ll(b)};\n \treactDom_production_min.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};reactDom_production_min.flushSync=function(a){return Rk(a)};reactDom_production_min.hydrate=function(a,b,c){if(!ol(b))throw Error(p(200));return rl(null,a,b,true,c)};\n \treactDom_production_min.hydrateRoot=function(a,b,c){if(!nl(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=false,f=\"\",g=kl;null!==c&&void 0!==c&&(true===c.unstable_strictMode&&(e=true),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=el(b,null,a,1,null!=c?c:null,e,false,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\n \te);return new ml(b)};reactDom_production_min.render=function(a,b,c){if(!ol(b))throw Error(p(200));return rl(null,a,b,false,c)};reactDom_production_min.unmountComponentAtNode=function(a){if(!ol(a))throw Error(p(40));return a._reactRootContainer?(Rk(function(){rl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null;});}),true):false};reactDom_production_min.unstable_batchedUpdates=Qk;\n \treactDom_production_min.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!ol(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return rl(a,b,c,false,d)};reactDom_production_min.version=\"18.3.1-next-f1338f8080-20240426\";\n \treturn reactDom_production_min;\n }\n\n var hasRequiredReactDom;\n\n function requireReactDom () {\n \tif (hasRequiredReactDom) return reactDom.exports;\n \thasRequiredReactDom = 1;\n\n \tfunction checkDCE() {\n \t /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n \t if (\n \t typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n \t typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n \t ) {\n \t return;\n \t }\n \t try {\n \t // Verify that the code above has been dead code eliminated (DCE'd).\n \t __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n \t } catch (err) {\n \t // DevTools shouldn't crash React, no matter what.\n \t // We should still report in case we break this code.\n \t console.error(err);\n \t }\n \t}\n\n \t{\n \t // DCE check should happen before ReactDOM bundle executes so that\n \t // DevTools can report bad minification during injection.\n \t checkDCE();\n \t reactDom.exports = requireReactDom_production_min();\n \t}\n \treturn reactDom.exports;\n }\n\n var hasRequiredClient;\n\n function requireClient () {\n \tif (hasRequiredClient) return client;\n \thasRequiredClient = 1;\n\n \tvar m = requireReactDom();\n \t{\n \t client.createRoot = m.createRoot;\n \t client.hydrateRoot = m.hydrateRoot;\n \t}\n \treturn client;\n }\n\n var clientExports = requireClient();\n\n var reactExports = requireReact();\n\n /**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\n const toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n const mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n }).join(\" \").trim();\n\n /**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\n var defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n };\n\n /**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\n\n const Icon = reactExports.forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => {\n return reactExports.createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => reactExports.createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n );\n }\n );\n\n /**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\n\n const createLucideIcon = (iconName, iconNode) => {\n const Component = reactExports.forwardRef(\n ({ className, ...props }, ref) => reactExports.createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(`lucide-${toKebabCase(iconName)}`, className),\n ...props\n })\n );\n Component.displayName = `${iconName}`;\n return Component;\n };\n\n /**\n * @license lucide-react v0.469.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\n\n const ArrowLeftRight = createLucideIcon(\"ArrowLeftRight\", [\n [\"path\", { d: \"M8 3 4 7l4 4\", key: \"9rb6wj\" }],\n [\"path\", { d: \"M4 7h16\", key: \"6tx8e3\" }],\n [\"path\", { d: \"m16 21 4-4-4-4\", key: \"siv7j2\" }],\n [\"path\", { d: \"M20 17H4\", key: \"h6l3hr\" }]\n ]);\n\n // HTML elements that should show parent React component instead\n const HTML_ELEMENTS = new Set([\n \"div\",\n \"span\",\n \"p\",\n \"a\",\n \"button\",\n \"input\",\n \"img\",\n \"ul\",\n \"li\",\n \"ol\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"section\",\n \"article\",\n \"header\",\n \"footer\",\n \"nav\",\n \"main\",\n \"aside\",\n \"form\",\n \"label\",\n \"textarea\",\n \"select\",\n \"table\",\n \"tr\",\n \"td\",\n \"th\",\n \"tbody\",\n \"thead\",\n \"svg\",\n \"path\",\n \"circle\",\n \"pre\",\n ]);\n // Get the display name - use parent React component if current is an HTML element\n function getDisplayName(component) {\n const { componentName, componentTree } = component.elementInfo;\n // If it's an HTML element name, use the first React component from the tree\n if (HTML_ELEMENTS.has(componentName.toLowerCase())) {\n // Find first non-HTML component in the tree\n if (componentTree && componentTree.length > 0) {\n for (const ancestor of componentTree) {\n if (!HTML_ELEMENTS.has(ancestor.toLowerCase())) {\n return ancestor;\n }\n }\n }\n }\n return componentName;\n }\n function ElementInfoDisplayReact(props) {\n return (jsxRuntimeExports.jsxs(\"div\", { className: \"fixdog-element-info\", children: [jsxRuntimeExports.jsxs(\"div\", { className: \"fixdog-element-info-header\", children: [jsxRuntimeExports.jsxs(\"span\", { className: \"fixdog-element-info-title\", children: [\"Selected Components (\", props.selectedComponents.length, \")\"] }), jsxRuntimeExports.jsx(\"button\", { className: \"fixdog-close-btn\", onClick: props.onClose, title: \"Close sidebar (ESC)\", \"aria-label\": \"Close sidebar\", children: \"\\u00D7\" })] }), jsxRuntimeExports.jsx(\"div\", { className: \"fixdog-selected-components-list\", children: props.selectedComponents.map((component) => {\n component.elementInfo.filePath.split(\"/\").pop() || \"\";\n const displayName = getDisplayName(component);\n return (jsxRuntimeExports.jsxs(\"div\", { className: \"fixdog-selected-component-item\", children: [jsxRuntimeExports.jsxs(\"div\", { className: \"fixdog-component-chip-wrapper\", children: [jsxRuntimeExports.jsx(\"span\", { className: \"fixdog-component-chip\", onClick: () => props.onInsertChip(component.id), title: \"Click to insert reference in chat\", children: component.id }), jsxRuntimeExports.jsx(\"div\", { className: \"fixdog-component-details\", children: jsxRuntimeExports.jsx(\"span\", { className: \"fixdog-component-name-label\", children: displayName }) })] }), jsxRuntimeExports.jsx(\"button\", { className: \"fixdog-remove-component-btn\", onClick: () => props.onRemoveComponent(component.id), title: \"Remove from selection\", \"aria-label\": \"Remove component\", children: \"\\u00D7\" })] }, component.id));\n }) }), jsxRuntimeExports.jsx(\"div\", { className: \"fixdog-selection-hint\", children: \"Option+click to add more components\" })] }));\n }\n\n const COOKIE_NAME = \"fixdog_secret\";\n /**\n * Get the stored secret from cookies\n * @returns The secret string or null if not set\n */\n function getSecret() {\n const cookies = document.cookie.split(\";\");\n for (const cookie of cookies) {\n const [name, value] = cookie.trim().split(\"=\");\n if (name === COOKIE_NAME) {\n return decodeURIComponent(value);\n }\n }\n return null;\n }\n /**\n * Store the secret in a persistent cookie (no expiry)\n * @param secret The secret to store\n */\n function setSecret(secret) {\n // Set cookie with a very long expiry (10 years) to make it effectively permanent\n const maxAge = 10 * 365 * 24 * 60 * 60; // 10 years in seconds\n document.cookie = `${COOKIE_NAME}=${encodeURIComponent(secret)}; path=/; max-age=${maxAge}; SameSite=Lax`;\n }\n\n async function sendChatPrompt(request, apiEndpoint = \"http://localhost:3000\") {\n try {\n const secret = request.secret ?? getSecret();\n const headers = {\n \"Content-Type\": \"application/json\",\n };\n if (secret) {\n headers[\"x-api-secret\"] = secret;\n }\n const response = await fetch(`${apiEndpoint}/chat`, {\n method: \"POST\",\n headers,\n body: JSON.stringify({\n projectId: request.projectId,\n secret,\n prompt: request.prompt,\n modelId: request.modelId,\n sessionId: request.sessionId,\n }),\n });\n if (!response.ok) {\n const errorData = await response\n .json()\n .catch(() => ({ error: response.statusText }));\n return {\n ok: false,\n message: \"\",\n error: errorData.error || `API error (${response.status})`,\n };\n }\n return await response.json();\n }\n catch (error) {\n if (error instanceof Error) {\n return {\n ok: false,\n message: \"\",\n error: error.message,\n };\n }\n return {\n ok: false,\n message: \"\",\n error: \"Unknown error occurred\",\n };\n }\n }\n async function sendToDeveloper(request, apiEndpoint = \"http://localhost:3000\") {\n try {\n const secret = request.secret ?? getSecret();\n const headers = {\n \"Content-Type\": \"application/json\",\n };\n if (secret) {\n headers[\"x-api-secret\"] = secret;\n }\n const response = await fetch(`${apiEndpoint}/send-to-dev`, {\n method: \"POST\",\n headers,\n body: JSON.stringify({\n projectId: request.projectId,\n secret,\n sessionId: request.sessionId,\n }),\n });\n if (!response.ok) {\n const errorData = await response\n .json()\n .catch(() => ({ error: response.statusText }));\n return {\n ok: false,\n error: errorData.error || `API error (${response.status})`,\n };\n }\n return await response.json();\n }\n catch (error) {\n if (error instanceof Error) {\n return {\n ok: false,\n error: error.message,\n };\n }\n return {\n ok: false,\n error: \"Unknown error occurred\",\n };\n }\n }\n /**\n * Get current active session for a project\n */\n async function getSession(request, apiEndpoint = \"http://localhost:3000\") {\n try {\n const secret = request.secret ?? getSecret();\n const response = await fetch(`${apiEndpoint}/session`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n projectId: request.projectId,\n secret,\n }),\n });\n if (!response.ok) {\n const errorData = await response\n .json()\n .catch(() => ({ error: response.statusText }));\n return {\n ok: false,\n session: null,\n error: errorData.error || `API error (${response.status})`,\n };\n }\n return await response.json();\n }\n catch (error) {\n return {\n ok: false,\n session: null,\n error: error instanceof Error ? error.message : \"Unknown error occurred\",\n };\n }\n }\n /**\n * Create a new session (disposes existing sessions and resets repo)\n */\n async function createSession(request, apiEndpoint = \"http://localhost:3000\") {\n try {\n const secret = request.secret ?? getSecret();\n const response = await fetch(`${apiEndpoint}/session/create`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n projectId: request.projectId,\n secret,\n }),\n });\n if (!response.ok) {\n const errorData = await response\n .json()\n .catch(() => ({ error: response.statusText }));\n return {\n ok: false,\n error: errorData.error || `API error (${response.status})`,\n };\n }\n return await response.json();\n }\n catch (error) {\n return {\n ok: false,\n error: error instanceof Error ? error.message : \"Unknown error occurred\",\n };\n }\n }\n\n function ConversationalInputReact(props) {\n const [messages, setMessages] = reactExports.useState([]);\n const [isLoading, setIsLoading] = reactExports.useState(false);\n const [sessionId, setSessionId] = reactExports.useState(props.sessionId);\n const [isCreatingPR, setIsCreatingPR] = reactExports.useState(false);\n const [prUrl, setPrUrl] = reactExports.useState(null);\n const [hasSecret, setHasSecret] = reactExports.useState(() => !!getSecret());\n const [secretInput, setSecretInput] = reactExports.useState(\"\");\n const inputRef = reactExports.useRef(null);\n const messagesEndRef = reactExports.useRef(null);\n const previousChipIdsRef = reactExports.useRef(new Set());\n const secretInputRef = reactExports.useRef(null);\n reactExports.useEffect(() => {\n if (hasSecret) {\n inputRef.current?.focus();\n }\n else {\n secretInputRef.current?.focus();\n }\n }, [hasSecret]);\n reactExports.useEffect(() => {\n // Auto-scroll to bottom when new messages are added\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\n }, [messages]);\n // Keep local sessionId in sync with parent\n reactExports.useEffect(() => {\n setSessionId(props.sessionId);\n }, [props.sessionId]);\n // Get current chip IDs from the input\n const getCurrentChipIds = reactExports.useCallback(() => {\n const input = inputRef.current;\n if (!input)\n return new Set();\n const chipIds = new Set();\n const chips = input.querySelectorAll(\".fixdog-inline-chip\");\n chips.forEach((chip) => {\n const chipId = chip.dataset.chipId;\n if (chipId) {\n chipIds.add(parseInt(chipId));\n }\n });\n return chipIds;\n }, []);\n // Handle input changes to detect chip deletion\n const handleInput = reactExports.useCallback(() => {\n const currentChipIds = getCurrentChipIds();\n const previousChipIds = previousChipIdsRef.current;\n // Find deleted chips\n previousChipIds.forEach((id) => {\n if (!currentChipIds.has(id)) {\n // Chip was deleted\n props.onChipDeleted?.(id);\n }\n });\n // Update previous chip IDs\n previousChipIdsRef.current = currentChipIds;\n }, [getCurrentChipIds, props.onChipDeleted]);\n // Handle chip insertion from parent\n reactExports.useEffect(() => {\n if (props.insertChipId !== null && inputRef.current) {\n insertChipAtCursor(props.insertChipId);\n props.onChipInserted();\n }\n }, [props.insertChipId, props.onChipInserted]);\n // Insert a chip element at the current cursor position\n const insertChipAtCursor = reactExports.useCallback((componentId) => {\n const input = inputRef.current;\n if (!input)\n return;\n // Focus the input first\n input.focus();\n // Create chip element\n const chip = document.createElement(\"span\");\n chip.className = \"fixdog-inline-chip\";\n chip.textContent = String(componentId);\n chip.dataset.chipId = String(componentId);\n chip.contentEditable = \"false\";\n // Get selection\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0) {\n const range = selection.getRangeAt(0);\n // Check if we're inside the input\n if (input.contains(range.commonAncestorContainer)) {\n range.deleteContents();\n range.insertNode(chip);\n // Move cursor after chip\n range.setStartAfter(chip);\n range.setEndAfter(chip);\n selection.removeAllRanges();\n selection.addRange(range);\n // Add a space after chip for better UX\n const space = document.createTextNode(\" \");\n range.insertNode(space);\n range.setStartAfter(space);\n range.setEndAfter(space);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n else {\n // Append at end if not focused inside\n input.appendChild(chip);\n input.appendChild(document.createTextNode(\" \"));\n // Move cursor to end\n const newRange = document.createRange();\n newRange.selectNodeContents(input);\n newRange.collapse(false);\n selection.removeAllRanges();\n selection.addRange(newRange);\n }\n }\n else {\n // Append at end\n input.appendChild(chip);\n input.appendChild(document.createTextNode(\" \"));\n }\n // Track the new chip\n previousChipIdsRef.current.add(componentId);\n }, []);\n // Extract text content with chip markers from the input\n const getInputContent = reactExports.useCallback(() => {\n const input = inputRef.current;\n if (!input)\n return { display: \"\", raw: \"\" };\n let display = \"\";\n let raw = \"\";\n const processNode = (node) => {\n if (node.nodeType === Node.TEXT_NODE) {\n display += node.textContent || \"\";\n raw += node.textContent || \"\";\n }\n else if (node.nodeType === Node.ELEMENT_NODE) {\n const element = node;\n if (element.classList.contains(\"fixdog-inline-chip\")) {\n const chipId = element.dataset.chipId;\n if (chipId) {\n // For display, show [N]\n display += `[${chipId}]`;\n // For raw/backend, replace with JSON\n const component = props.selectedComponents.find((c) => c.id === parseInt(chipId));\n if (component) {\n const componentData = {\n editorURL: component.editorUrl,\n componentTree: component.elementInfo.componentTree || [],\n componentName: component.elementInfo.componentName,\n filePath: component.elementInfo.filePath,\n line: component.elementInfo.line,\n column: component.elementInfo.column,\n };\n raw += JSON.stringify(componentData);\n }\n else {\n raw += `[${chipId}]`; // Fallback if component not found\n }\n }\n }\n else if (element.tagName === \"BR\") {\n display += \"\\n\";\n raw += \"\\n\";\n }\n else {\n // Process children\n element.childNodes.forEach(processNode);\n }\n }\n };\n input.childNodes.forEach(processNode);\n return { display: display.trim(), raw: raw.trim() };\n }, [props.selectedComponents]);\n // Clear the input\n const clearInput = reactExports.useCallback(() => {\n if (inputRef.current) {\n inputRef.current.innerHTML = \"\";\n }\n // Clear chip tracking (don't trigger deletion callbacks since this is intentional clear)\n previousChipIdsRef.current.clear();\n }, []);\n // Check if input has content\n const hasContent = reactExports.useCallback(() => {\n const input = inputRef.current;\n if (!input)\n return false;\n return (input.textContent?.trim() !== \"\" ||\n input.querySelector(\".fixdog-inline-chip\") !== null);\n }, []);\n const handleSubmit = async () => {\n if (!hasContent() || isLoading)\n return;\n // Require session before sending chat\n if (!sessionId) {\n setMessages((prev) => [\n ...prev,\n {\n id: `no-session-${Date.now()}`,\n role: \"assistant\",\n content: 'No active session. Click \"New session\" above to start one.',\n timestamp: Date.now(),\n error: \"NO_SESSION\",\n },\n ]);\n return;\n }\n const { display, raw } = getInputContent();\n if (!display)\n return;\n // Add user message to history\n const userMessage = {\n id: `user-${Date.now()}`,\n role: \"user\",\n content: display,\n rawContent: raw,\n timestamp: Date.now(),\n };\n setMessages((prev) => [...prev, userMessage]);\n clearInput();\n setIsLoading(true);\n // Add loading message\n const loadingMessageId = `loading-${Date.now()}`;\n const loadingMessage = {\n id: loadingMessageId,\n role: \"assistant\",\n content: \"\",\n timestamp: Date.now(),\n isLoading: true,\n };\n setMessages((prev) => [...prev, loadingMessage]);\n // Build request with raw content (JSON-replaced chips)\n const request = {\n prompt: `User request: ${raw}\nUpdate multiple files (if necessary) to achieve the user's request.`,\n sessionId: sessionId,\n projectId: props.projectId,\n secret: getSecret() || \"\",\n modelId: props.modelId,\n };\n // Log the request being sent to the backend\n console.log(\"[fixdog-sdk] Sending request to backend:\", {\n endpoint: `${props.apiEndpoint}/chat`,\n displayContent: display,\n request,\n });\n try {\n const result = await sendChatPrompt(request, props.apiEndpoint);\n // Handle NO_SESSION error - prompt user to create session\n if (!result.ok && result.code === \"NO_SESSION\") {\n setMessages((prev) => {\n const filtered = prev.filter((msg) => msg.id !== loadingMessageId);\n return [\n ...filtered,\n {\n id: `no-session-${Date.now()}`,\n role: \"assistant\",\n content: 'Session expired or invalid. Click \"New session\" to start a new one.',\n timestamp: Date.now(),\n error: \"NO_SESSION\",\n },\n ];\n });\n // Clear the invalid session\n setSessionId(undefined);\n props.onSessionUpdated?.(undefined);\n setIsLoading(false);\n return;\n }\n // Save sessionId from response if provided\n if (result.sessionId && result.sessionId !== sessionId) {\n setSessionId(result.sessionId);\n props.onSessionUpdated?.(result.sessionId);\n }\n // Remove loading message and add response\n setMessages((prev) => {\n const filtered = prev.filter((msg) => msg.id !== loadingMessageId);\n const assistantMessage = {\n id: `assistant-${Date.now()}`,\n role: \"assistant\",\n content: result.ok\n ? result.message\n : result.error || \"Request failed\",\n timestamp: Date.now(),\n error: !result.ok ? result.error : undefined,\n };\n return [...filtered, assistantMessage];\n });\n }\n catch (err) {\n // Remove loading message and add error\n setMessages((prev) => {\n const filtered = prev.filter((msg) => msg.id !== loadingMessageId);\n const errorMessage = {\n id: `error-${Date.now()}`,\n role: \"assistant\",\n content: err instanceof Error ? err.message : \"Unknown error occurred\",\n timestamp: Date.now(),\n error: err instanceof Error ? err.message : \"Unknown error occurred\",\n };\n return [...filtered, errorMessage];\n });\n }\n finally {\n setIsLoading(false);\n }\n };\n const handleKeyDown = (e) => {\n // Submit on Cmd/Ctrl + Enter\n if ((e.metaKey || e.ctrlKey) && e.key === \"Enter\") {\n e.preventDefault();\n handleSubmit();\n }\n };\n const handleSendToDeveloper = async () => {\n if (!sessionId || isCreatingPR)\n return;\n const confirmed = await (async () => {\n if (!props.onSendToDevConfirm)\n return true;\n const result = await props.onSendToDevConfirm();\n return result !== false;\n })();\n // Backend will reset repo after PR creation, so require confirmation.\n if (!confirmed)\n return;\n setIsCreatingPR(true);\n setPrUrl(null);\n try {\n const result = await sendToDeveloper({\n sessionId,\n projectId: props.projectId,\n secret: getSecret() || \"\",\n }, props.apiEndpoint);\n if (result.ok && result.prUrl) {\n setPrUrl(result.prUrl);\n // Clear session because backend resets after PR\n setSessionId(undefined);\n props.onSessionUpdated?.(undefined);\n props.onPrRecorded?.({\n prUrl: result.prUrl,\n branchName: result.branchName,\n savedAt: Date.now(),\n });\n // Add success message\n const successMessage = {\n id: `pr-success-${Date.now()}`,\n role: \"assistant\",\n content: `Pull request created successfully!`,\n timestamp: Date.now(),\n };\n setMessages((prev) => [...prev, successMessage]);\n }\n else {\n // Add error message\n const errorMessage = {\n id: `pr-error-${Date.now()}`,\n role: \"assistant\",\n content: result.error || \"Failed to create pull request\",\n timestamp: Date.now(),\n error: result.error || \"Failed to create pull request\",\n };\n setMessages((prev) => [...prev, errorMessage]);\n }\n }\n catch (err) {\n const errorMessage = {\n id: `pr-error-${Date.now()}`,\n role: \"assistant\",\n content: err instanceof Error ? err.message : \"Unknown error occurred\",\n timestamp: Date.now(),\n error: err instanceof Error ? err.message : \"Unknown error occurred\",\n };\n setMessages((prev) => [...prev, errorMessage]);\n }\n finally {\n setIsCreatingPR(false);\n }\n };\n const handleRetry = async (messageId) => {\n // Find the user message that corresponds to this error\n const errorIndex = messages.findIndex((msg) => msg.id === messageId);\n if (errorIndex === -1)\n return;\n // Find the previous user message\n let userMessageIndex = -1;\n for (let i = errorIndex - 1; i >= 0; i--) {\n if (messages[i].role === \"user\") {\n userMessageIndex = i;\n break;\n }\n }\n if (userMessageIndex === -1)\n return;\n const userMessage = messages[userMessageIndex];\n const rawContent = userMessage.rawContent || userMessage.content;\n // Remove error message\n setMessages((prev) => prev.filter((msg) => msg.id !== messageId));\n setIsLoading(true);\n // Add loading message\n const loadingMessageId = `loading-${Date.now()}`;\n const loadingMessage = {\n id: loadingMessageId,\n role: \"assistant\",\n content: \"\",\n timestamp: Date.now(),\n isLoading: true,\n };\n setMessages((prev) => [...prev, loadingMessage]);\n const request = {\n prompt: `User request: ${rawContent}\nUpdate multiple files (if necessary) to achieve the user's request.`,\n sessionId: sessionId,\n projectId: props.projectId,\n secret: getSecret() || \"\",\n modelId: props.modelId,\n };\n // Log the request being sent to the backend (retry)\n console.log(\"[fixdog-sdk] Retrying request to backend:\", {\n endpoint: `${props.apiEndpoint}/chat`,\n request,\n });\n try {\n const result = await sendChatPrompt(request, props.apiEndpoint);\n // Save sessionId from response if provided\n if (result.sessionId && result.sessionId !== sessionId) {\n setSessionId(result.sessionId);\n props.onSessionUpdated?.(result.sessionId);\n }\n // Remove loading message and add response\n setMessages((prev) => {\n const filtered = prev.filter((msg) => msg.id !== loadingMessageId);\n const assistantMessage = {\n id: `assistant-${Date.now()}`,\n role: \"assistant\",\n content: result.ok\n ? result.message\n : result.error || \"Request failed\",\n timestamp: Date.now(),\n error: !result.ok ? result.error : undefined,\n };\n return [...filtered, assistantMessage];\n });\n }\n catch (err) {\n // Remove loading message and add error\n setMessages((prev) => {\n const filtered = prev.filter((msg) => msg.id !== loadingMessageId);\n const errorMessage = {\n id: `error-${Date.now()}`,\n role: \"assistant\",\n content: err instanceof Error ? err.message : \"Unknown error occurred\",\n timestamp: Date.now(),\n error: err instanceof Error ? err.message : \"Unknown error occurred\",\n };\n return [...filtered, errorMessage];\n });\n }\n finally {\n setIsLoading(false);\n }\n };\n // Handle secret submission\n const handleSecretSubmit = reactExports.useCallback(() => {\n const trimmedSecret = secretInput.trim();\n if (!trimmedSecret)\n return;\n setSecret(trimmedSecret);\n setHasSecret(true);\n setSecretInput(\"\");\n }, [secretInput]);\n const handleSecretKeyDown = (e) => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n handleSecretSubmit();\n }\n };\n // Render message content with chips displayed as badges\n const renderMessageContent = (content) => {\n // Parse [N] patterns and render as chips\n const parts = [];\n let lastIndex = 0;\n const chipPattern = /\\[(\\d+)\\]/g;\n let match;\n while ((match = chipPattern.exec(content)) !== null) {\n // Add text before the chip\n if (match.index > lastIndex) {\n parts.push(content.slice(lastIndex, match.index));\n }\n // Add the chip\n const chipId = match[1];\n parts.push(jsxRuntimeExports.jsx(\"span\", { className: \"fixdog-message-chip\", children: chipId }, `chip-${match.index}`));\n lastIndex = match.index + match[0].length;\n }\n // Add remaining text\n if (lastIndex < content.length) {\n parts.push(content.slice(lastIndex));\n }\n return parts.length > 0 ? parts : content;\n };\n return (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsxs(\"div\", { className: \"fixdog-messages-container\", children: [!hasSecret ? (jsxRuntimeExports.jsx(\"div\", { className: \"fixdog-empty-state\", children: jsxRuntimeExports.jsxs(\"div\", { className: \"fixdog-secret-prompt\", children: [jsxRuntimeExports.jsx(\"div\", { className: \"fixdog-secret-title\", children: \"Enter your secret\" }), jsxRuntimeExports.jsx(\"div\", { className: \"fixdog-secret-description\", children: \"Please enter your secret to continue\" }), jsxRuntimeExports.jsxs(\"div\", { className: \"fixdog-secret-input-wrapper\", children: [jsxRuntimeExports.jsx(\"input\", { ref: secretInputRef, type: \"password\", className: \"fixdog-secret-input\", value: secretInput, onChange: (e) => setSecretInput(e.target.value), onKeyDown: handleSecretKeyDown, autoComplete: \"off\" }), jsxRuntimeExports.jsx(\"button\", { className: \"fixdog-secret-submit-btn\", onClick: handleSecretSubmit, disabled: !secretInput.trim(), children: \"Continue\" })] })] }) })) : messages.length === 0 ? (jsxRuntimeExports.jsx(\"div\", { className: \"fixdog-empty-state\", children: jsxRuntimeExports.jsx(\"div\", { className: \"fixdog-empty-state-text\", children: \"What changes would you like to make?\" }) })) : null, messages.map((message) => (jsxRuntimeExports.jsx(\"div\", { className: `fixdog-message fixdog-message-${message.role}`, children: jsxRuntimeExports.jsx(\"div\", { className: \"fixdog-message-bubble\", children: message.isLoading ? (jsxRuntimeExports.jsxs(\"div\", { className: \"fixdog-message-loading\", children: [jsxRuntimeExports.jsx(\"div\", { className: \"fixdog-spinner\" }), jsxRuntimeExports.jsx(\"span\", { children: \"Processing your request...\" })] })) : message.error ? (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(\"div\", { className: \"fixdog-message-content fixdog-message-error\", children: message.content }), jsxRuntimeExports.jsx(\"button\", { className: \"fixdog-retry-btn\", onClick: () => handleRetry(message.id), children: \"Retry\" })] })) : (jsxRuntimeExports.jsx(\"div\", { className: \"fixdog-message-content\", children: message.role === \"user\"\n ? renderMessageContent(message.content)\n : message.content })) }) }, message.id))), jsxRuntimeExports.jsx(\"div\", { ref: messagesEndRef })] }), jsxRuntimeExports.jsxs(\"div\", { className: \"fixdog-input-footer-fixed\", children: [jsxRuntimeExports.jsxs(\"div\", { className: \"fixdog-input-wrapper\", children: [jsxRuntimeExports.jsx(\"div\", { ref: inputRef, className: \"fixdog-chip-input\", contentEditable: !isLoading, \"data-placeholder\": \"Describe the changes you want...\", \"data-disabled\": isLoading, onKeyDown: handleKeyDown, onInput: handleInput, role: \"textbox\", \"aria-multiline\": \"true\", \"aria-label\": \"Message input\" }), jsxRuntimeExports.jsx(\"button\", { className: \"fixdog-submit-btn\", onClick: handleSubmit, disabled: isLoading, title: \"Send message (Cmd/Ctrl + Enter)\", children: isLoading ? (jsxRuntimeExports.jsx(\"div\", { className: \"fixdog-spinner-small\" })) : (jsxRuntimeExports.jsx(\"svg\", { width: \"16\", height: \"16\", viewBox: \"0 0 16 16\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", children: jsxRuntimeExports.jsx(\"path\", { d: \"M8 2L8 14M8 2L2 8M8 2L14 8\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }) })) })] }), jsxRuntimeExports.jsx(\"div\", { className: \"fixdog-input-hint\", children: \"Cmd/Ctrl + Enter to submit\" }), sessionId && (jsxRuntimeExports.jsxs(\"div\", { className: \"fixdog-send-to-dev-section\", children: [jsxRuntimeExports.jsx(\"button\", { className: \"fixdog-send-to-dev-btn\", onClick: handleSendToDeveloper, disabled: isCreatingPR || isLoading, title: \"Create PR with changes\", children: isCreatingPR ? (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(\"div\", { className: \"fixdog-spinner-small\" }), jsxRuntimeExports.jsx(\"span\", { children: \"Creating PR...\" })] })) : (jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [jsxRuntimeExports.jsx(\"svg\", { width: \"16\", height: \"16\", viewBox: \"0 0 16 16\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", children: jsxRuntimeExports.jsx(\"path\", { d: \"M8 1L8 15M8 1L1 8M8 1L15 8\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\" }) }), jsxRuntimeExports.jsx(\"span\", { children: \"Submit to Developer\" })] })) }), prUrl && (jsxRuntimeExports.jsx(\"a\", { href: prUrl, target: \"_blank\", rel: \"noopener noreferrer\", className: \"fixdog-pr-link\", children: \"View PR \\u2192\" }))] }))] })] }));\n }\n\n // Lucide-style SVG icons\n const IconAlertTriangle = () => (jsxRuntimeExports.jsxs(\"svg\", { width: \"22\", height: \"22\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", children: [jsxRuntimeExports.jsx(\"path\", { d: \"M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" }), jsxRuntimeExports.jsx(\"line\", { x1: \"12\", y1: \"9\", x2: \"12\", y2: \"13\" }), jsxRuntimeExports.jsx(\"line\", { x1: \"12\", y1: \"17\", x2: \"12.01\", y2: \"17\" })] }));\n const IconLoader = () => (jsxRuntimeExports.jsxs(\"svg\", { width: \"22\", height: \"22\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", className: \"fixdog-icon-spin\", children: [jsxRuntimeExports.jsx(\"line\", { x1: \"12\", y1: \"2\", x2: \"12\", y2: \"6\" }), jsxRuntimeExports.jsx(\"line\", { x1: \"12\", y1: \"18\", x2: \"12\", y2: \"22\" }), jsxRuntimeExports.jsx(\"line\", { x1: \"4.93\", y1: \"4.93\", x2: \"7.76\", y2: \"7.76\" }), jsxRuntimeExports.jsx(\"line\", { x1: \"16.24\", y1: \"16.24\", x2: \"19.07\", y2: \"19.07\" }), jsxRuntimeExports.jsx(\"line\", { x1: \"2\", y1: \"12\", x2: \"6\", y2: \"12\" }), jsxRuntimeExports.jsx(\"line\", { x1: \"18\", y1: \"12\", x2: \"22\", y2: \"12\" }), jsxRuntimeExports.jsx(\"line\", { x1: \"4.93\", y1: \"19.07\", x2: \"7.76\", y2: \"16.24\" }), jsxRuntimeExports.jsx(\"line\", { x1: \"16.24\", y1: \"7.76\", x2: \"19.07\", y2: \"4.93\" })] }));\n const IconXCircle = () => (jsxRuntimeExports.jsxs(\"svg\", { width: \"22\", height: \"22\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", children: [jsxRuntimeExports.jsx(\"circle\", { cx: \"12\", cy: \"12\", r: \"10\" }), jsxRuntimeExports.jsx(\"line\", { x1: \"15\", y1: \"9\", x2: \"9\", y2: \"15\" }), jsxRuntimeExports.jsx(\"line\", { x1: \"9\", y1: \"9\", x2: \"15\", y2: \"15\" })] }));\n const IconRocket = () => (jsxRuntimeExports.jsxs(\"svg\", { width: \"22\", height: \"22\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", children: [jsxRuntimeExports.jsx(\"path\", { d: \"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z\" }), jsxRuntimeExports.jsx(\"path\", { d: \"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z\" }), jsxRuntimeExports.jsx(\"path\", { d: \"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0\" }), jsxRuntimeExports.jsx(\"path\", { d: \"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5\" })] }));\n const IconSun = () => (jsxRuntimeExports.jsxs(\"svg\", { width: \"18\", height: \"18\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", children: [jsxRuntimeExports.jsx(\"circle\", { cx: \"12\", cy: \"12\", r: \"4\" }), jsxRuntimeExports.jsx(\"path\", { d: \"M12 2v2\" }), jsxRuntimeExports.jsx(\"path\", { d: \"M12 20v2\" }), jsxRuntimeExports.jsx(\"path\", { d: \"m4.93 4.93 1.41 1.41\" }), jsxRuntimeExports.jsx(\"path\", { d: \"m17.66 17.66 1.41 1.41\" }), jsxRuntimeExports.jsx(\"path\", { d: \"M2 12h2\" }), jsxRuntimeExports.jsx(\"path\", { d: \"M20 12h2\" }), jsxRuntimeExports.jsx(\"path\", { d: \"m6.34 17.66-1.41 1.41\" }), jsxRuntimeExports.jsx(\"path\", { d: \"m19.07 4.93-1.41 1.41\" })] }));\n const IconMoon = () => (jsxRuntimeExports.jsx(\"svg\", { width: \"18\", height: \"18\", viewBox: \"0 0 24 24\", fill: \"none\", stroke: \"currentColor\", strokeWidth: \"2\", strokeLinecap: \"round\", strokeLinejoin: \"round\", children: jsxRuntimeExports.jsx(\"path\", { d: \"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9z\" }) }));\n function FixdogSidebarReact(props) {\n // Track chips inserted into input - map from component ID to whether it's been inserted\n const [insertedChipId, setInsertedChipId] = reactExports.useState(null);\n const [showStartNewConfirm, setShowStartNewConfirm] = reactExports.useState(false);\n const [showSendToDevConfirm, setShowSendToDevConfirm] = reactExports.useState(false);\n const [sendToDevResolver, setSendToDevResolver] = reactExports.useState(null);\n const [isCreatingSession, setIsCreatingSession] = reactExports.useState(false);\n const [sessionError, setSessionError] = reactExports.useState(null);\n reactExports.useEffect(() => {\n const handleEscapeKey = (e) => {\n if (e.key === \"Escape\") {\n if (showStartNewConfirm) {\n setShowStartNewConfirm(false);\n }\n else if (showSendToDevConfirm) {\n cancelSendToDev();\n }\n else {\n props.onClose();\n }\n }\n };\n document.addEventListener(\"keydown\", handleEscapeKey);\n return () => {\n document.removeEventListener(\"keydown\", handleEscapeKey);\n };\n }, [props, showStartNewConfirm, showSendToDevConfirm]);\n // When a new component is added, signal to insert its chip\n reactExports.useEffect(() => {\n if (props.selectedComponents.length > 0) {\n const lastComponent = props.selectedComponents[props.selectedComponents.length - 1];\n setInsertedChipId(lastComponent.id);\n }\n }, [props.selectedComponents.length]);\n const handleChipInserted = reactExports.useCallback(() => {\n setInsertedChipId(null);\n }, []);\n const handleInsertChip = reactExports.useCallback((componentId) => {\n setInsertedChipId(componentId);\n }, []);\n const handleStartNewClick = () => {\n setSessionError(null);\n setShowStartNewConfirm(true);\n };\n const confirmStartNew = async () => {\n const secret = getSecret();\n if (!secret) {\n setSessionError(\"Please enter your secret first\");\n setShowStartNewConfirm(false);\n return;\n }\n setIsCreatingSession(true);\n setSessionError(null);\n try {\n const result = await createSession({ projectId: props.projectId, secret }, props.apiEndpoint);\n if (result.ok && result.session) {\n // Session created successfully, update state\n props.onSessionUpdated?.(result.session.id);\n console.log(\"[fixdog-sdk] New session created:\", result.session.id);\n }\n else {\n setSessionError(result.error || \"Failed to create session\");\n console.error(\"[fixdog-sdk] Failed to create session:\", result.error);\n }\n }\n catch (err) {\n const errorMsg = err instanceof Error ? err.message : \"Failed to create session\";\n setSessionError(errorMsg);\n console.error(\"[fixdog-sdk] Error creating session:\", err);\n }\n finally {\n setIsCreatingSession(false);\n setShowStartNewConfirm(false);\n }\n };\n const cancelStartNew = () => {\n setShowStartNewConfirm(false);\n };\n const handleSendToDevConfirm = reactExports.useCallback(() => {\n setShowSendToDevConfirm(true);\n return new Promise((resolve) => {\n setSendToDevResolver(() => resolve);\n });\n }, []);\n const confirmSendToDev = () => {\n setShowSendToDevConfirm(false);\n sendToDevResolver?.(true);\n setSendToDevResolver(null);\n };\n const cancelSendToDev = () => {\n setShowSendToDevConfirm(false);\n sendToDevResolver?.(false);\n setSendToDevResolver(null);\n };\n const themeClass = props.theme === \"light\" ? \"fixdog-light\" : \"fixdog-dark\";\n const sessionLabel = props.sessionId\n ? `Session · ${props.sessionId.slice(-6)}`\n : \"No active session\";\n const sidebarSide = props.side ?? \"right\";\n return (jsxRuntimeExports.jsx(\"div\", { className: `fixdog-sidebar-overlay ${themeClass}`, children: jsxRuntimeExports.jsxs(\"div\", { className: `fixdog-sidebar ${themeClass} ${sidebarSide === \"left\" ? \"fixdog-side-left\" : \"fixdog-side-right\"}`, children: [jsxRuntimeExports.jsxs(\"div\", { className: \"fixdog-top-bar\", children: [jsxRuntimeExports.jsxs(\"div\", { className: \"fixdog-session-top\", children: [jsxRuntimeExports.jsx(\"span\", { className: `fixdog-session-dot ${props.sessionId ? \"active\" : \"\"}` }), jsxRuntimeExports.jsx(\"span\", { className: \"fixdog-session-label\", children: sessionLabel }), jsxRuntimeExports.jsx(\"button\", { className: `fixdog-new-session-btn ${!props.sessionId ? \"primary\" : \"\"}`, onClick: handleStartNewClick, title: props.sessionId\n ? \"Start a new session (will reset repo)\"\n : \"Start a session\", children: props.sessionId ? \"New session\" : \"Start session\" }), props.lastPr?.prUrl && (jsxRuntimeExports.jsx(\"a\", { className: \"fixdog-pr-chip\", href: props.lastPr.prUrl, target: \"_blank\", rel: \"noreferrer\", children: \"View PR\" }))] }), jsxRuntimeExports.jsxs(\"div\", { className: \"fixdog-top-actions\", children: [jsxRuntimeExports.jsx(\"button\", { className: \"fixdog-side-toggle\", onClick: props.onToggleSide, title: `Open on ${sidebarSide === \"right\" ? \"left\" : \"right\"} side`, children: jsxRuntimeExports.jsx(ArrowLeftRight, { size: 18 }) }), jsxRuntimeExports.jsx(\"button\", { className: \"fixdog-theme-toggle\", onClick: props.onToggleTheme, title: `Switch to ${props.theme === \"dark\" ? \"light\" : \"dark\"} mode`, children: props.theme === \"dark\" ? jsxRuntimeExports.jsx(IconSun, {}) : jsxRuntimeExports.jsx(IconMoon, {}) })] })] }), jsxRuntimeExports.jsx(\"div\", { className: \"fixdog-element-info-section\", children: jsxRuntimeExports.jsx(ElementInfoDisplayReact, { selectedComponents: props.selectedComponents, onClose: props.onClose, onRemoveComponent: props.onRemoveComponent, onInsertChip: handleInsertChip }) }), jsxRuntimeExports.jsxs(\"div\", { className: \"fixdog-chat-container\", children: [showStartNewConfirm && (jsxRuntimeExports.jsxs(\"div\", { className: \"fixdog-inline-modal\", children: [jsxRuntimeExports.jsx(\"div\", { className: \"fixdog-inline-modal-icon\", children: isCreatingSession ? jsxRuntimeExports.jsx(IconLoader, {}) : jsxRuntimeExports.jsx(IconAlertTriangle, {}) }), jsxRuntimeExports.jsxs(\"div\", { className: \"fixdog-inline-modal-content\", children: [jsxRuntimeExports.jsx(\"div\", { className: \"fixdog-inline-modal-title\", children: isCreatingSession\n ? \"Creating session...\"\n : \"Start new session?\" }), jsxRuntimeExports.jsx(\"div\", { className: \"fixdog-inline-modal-body\", children: isCreatingSession\n ? \"Resetting repo and creating new session...\"\n : \"This will reset the repo to the base branch and discard unsubmitted edits.\" })] }), !isCreatingSession && (jsxRuntimeExports.jsxs(\"div\", { className: \"fixdog-inline-modal-actions\", children: [jsxRuntimeExports.jsx(\"button\", { className: \"fixdog-inline-modal-btn cancel\", onClick: cancelStartNew, children: \"Cancel\" }), jsxRuntimeExports.jsx(\"button\", { className: \"fixdog-inline-modal-btn confirm\", onClick: confirmStartNew, children: \"Reset & Start\" })] }))] })), sessionError && (jsxRuntimeExports.jsxs(\"div\", { className: \"fixdog-inline-modal error\", children: [jsxRuntimeExports.jsx(\"div\", { className: \"fixdog-inline-modal-icon\", children: jsxRuntimeExports.jsx(IconXCircle, {}) }), jsxRuntimeExports.jsxs(\"div\", { className: \"fixdog-inline-modal-content\", children: [jsxRuntimeExports.jsx(\"div\", { className: \"fixdog-inline-modal-title\", children: \"Session Error\" }), jsxRuntimeExports.jsx(\"div\", { className: \"fixdog-inline-modal-body\", children: sessionError })] }), jsxRuntimeExports.jsx(\"div\", { className: \"fixdog-inline-modal-actions\", children: jsxRuntimeExports.jsx(\"button\", { className: \"fixdog-inline-modal-btn cancel\", onClick: () => setSessionError(null), children: \"Dismiss\" }) })] })), showSendToDevConfirm && (jsxRuntimeExports.jsxs(\"div\", { className: \"fixdog-inline-modal\", children: [jsxRuntimeExports.jsx(\"div\", { className: \"fixdog-inline-modal-icon\", children: jsxRuntimeExports.jsx(IconRocket, {}) }), jsxRuntimeExports.jsxs(\"div\", { className: \"fixdog-inline-modal-content\", children: [jsxRuntimeExports.jsx(\"div\", { className: \"fixdog-inline-modal-title\", children: \"Submit to developer?\" }), jsxRuntimeExports.jsx(\"div\", { className: \"fixdog-inline-modal-body\", children: \"This will create a PR and reset the repo afterward.\" })] }), jsxRuntimeExports.jsxs(\"div\", { className: \"fixdog-inline-modal-actions\", children: [jsxRuntimeExports.jsx(\"button\", { className: \"fixdog-inline-modal-btn cancel\", onClick: cancelSendToDev, children: \"Cancel\" }), jsxRuntimeExports.jsx(\"button\", { className: \"fixdog-inline-modal-btn confirm success\", onClick: confirmSendToDev, children: \"Create PR\" })] })] })), jsxRuntimeExports.jsx(ConversationalInputReact, { selectedComponents: props.selectedComponents, apiEndpoint: props.apiEndpoint, projectId: props.projectId, modelId: props.modelId, sessionId: props.sessionId, onSessionUpdated: props.onSessionUpdated, onPrRecorded: props.onPrRecorded, onSendToDevConfirm: handleSendToDevConfirm, onStartNewSession: handleStartNewClick, lastPr: props.lastPr, insertChipId: insertedChipId, onChipInserted: handleChipInserted, onChipDeleted: props.onRemoveComponent })] })] }) }));\n }\n\n // This file exports the CSS content as a string\n // It's used instead of the ?inline import which doesn't work with rollup\n const sidebarStyles = `/* Fixdog Sidebar Styles */\n\n/* CSS Variables - Dark Theme (default) */\n.fixdog-dark {\n --fixdog-bg: #13140a;\n --fixdog-bg-secondary: rgba(0, 0, 0, 0.3);\n --fixdog-bg-tertiary: rgba(0, 0, 0, 0.4);\n --fixdog-border: rgba(255, 255, 255, 0.1);\n --fixdog-border-strong: rgba(255, 255, 255, 0.15);\n --fixdog-text: #ffffff;\n --fixdog-text-secondary: rgba(255, 255, 255, 0.7);\n --fixdog-text-muted: rgba(255, 255, 255, 0.5);\n --fixdog-accent: #3b82f6;\n --fixdog-accent-hover: #2563eb;\n --fixdog-success: #10b981;\n --fixdog-success-hover: #059669;\n --fixdog-warning: #f59e0b;\n --fixdog-error: #ef4444;\n --fixdog-shadow: rgba(0, 0, 0, 0.5);\n --fixdog-modal-bg: rgba(30, 30, 20, 0.98);\n}\n\n/* CSS Variables - Light Theme */\n.fixdog-light {\n --fixdog-bg: #f8f9fa;\n --fixdog-bg-secondary: #ffffff;\n --fixdog-bg-tertiary: #e9ecef;\n --fixdog-border: rgba(0, 0, 0, 0.1);\n --fixdog-border-strong: rgba(0, 0, 0, 0.15);\n --fixdog-text: #1a1a1a;\n --fixdog-text-secondary: #4a4a4a;\n --fixdog-text-muted: #6b7280;\n --fixdog-accent: #2563eb;\n --fixdog-accent-hover: #1d4ed8;\n --fixdog-success: #059669;\n --fixdog-success-hover: #047857;\n --fixdog-warning: #d97706;\n --fixdog-error: #dc2626;\n --fixdog-shadow: rgba(0, 0, 0, 0.12);\n --fixdog-modal-bg: #ffffff;\n}\n\n/* Overlay */\n.fixdog-sidebar-overlay {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: 999999;\n pointer-events: none;\n}\n\n/* Main Sidebar Container */\n.fixdog-sidebar {\n position: fixed;\n right: 0;\n top: 0;\n width: 420px;\n max-width: 100vw;\n height: 100vh;\n background: var(--fixdog-bg, #13140a);\n box-shadow: -4px 0 24px var(--fixdog-shadow, rgba(0, 0, 0, 0.5));\n display: flex;\n flex-direction: column;\n font-family: system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;\n font-size: 14px;\n color: var(--fixdog-text, #ffffff);\n pointer-events: auto;\n animation: fixdog-slide-in-right 0.3s ease-out;\n overflow: hidden;\n border-left: 1px solid var(--fixdog-border, rgba(255, 255, 255, 0.1));\n}\n\n.fixdog-side-left {\n left: 0;\n right: auto;\n box-shadow: 4px 0 24px var(--fixdog-shadow, rgba(0, 0, 0, 0.5));\n border-left: none;\n border-right: 1px solid var(--fixdog-border, rgba(255, 255, 255, 0.1));\n animation: fixdog-slide-in-left 0.3s ease-out;\n}\n\n.fixdog-side-right {\n right: 0;\n left: auto;\n animation: fixdog-slide-in-right 0.3s ease-out;\n}\n\n@keyframes fixdog-slide-in-right {\n from {\n transform: translateX(100%);\n }\n to {\n transform: translateX(0);\n }\n}\n\n@keyframes fixdog-slide-in-left {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0);\n }\n}\n\n/* Icon spin animation */\n@keyframes fixdog-icon-spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n.fixdog-icon-spin {\n animation: fixdog-icon-spin 1s linear infinite;\n}\n\n/* Top Bar - Pinned session and theme controls */\n.fixdog-top-bar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n background: var(--fixdog-bg-secondary, rgba(0, 0, 0, 0.3));\n border-bottom: 1px solid var(--fixdog-border-strong, rgba(255, 255, 255, 0.15));\n flex-shrink: 0;\n gap: 12px;\n}\n\n.fixdog-session-top {\n display: flex;\n align-items: center;\n gap: 10px;\n flex: 1;\n min-width: 0;\n}\n\n.fixdog-top-actions {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n\n.fixdog-theme-toggle,\n.fixdog-side-toggle {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: 1px solid var(--fixdog-border, rgba(255, 255, 255, 0.1));\n border-radius: 8px;\n color: var(--fixdog-text-secondary, rgba(255, 255, 255, 0.7));\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.fixdog-theme-toggle:hover,\n.fixdog-side-toggle:hover {\n background: var(--fixdog-bg-tertiary, rgba(0, 0, 0, 0.4));\n color: var(--fixdog-text, #ffffff);\n border-color: var(--fixdog-border-strong, rgba(255, 255, 255, 0.15));\n}\n\n/* Light mode theme toggle */\n.fixdog-light .fixdog-theme-toggle,\n.fixdog-light .fixdog-side-toggle {\n border-color: #d1d5db;\n color: #4b5563;\n}\n\n.fixdog-light .fixdog-theme-toggle:hover,\n.fixdog-light .fixdog-side-toggle:hover {\n background: #f3f4f6;\n color: #1f2937;\n border-color: #9ca3af;\n}\n\n.fixdog-pr-chip {\n font-size: 11px;\n font-weight: 500;\n color: var(--fixdog-accent, #3b82f6);\n text-decoration: none;\n padding: 4px 10px;\n border-radius: 6px;\n background: rgba(59, 130, 246, 0.1);\n transition: all 0.2s;\n white-space: nowrap;\n}\n\n.fixdog-pr-chip:hover {\n background: rgba(59, 130, 246, 0.2);\n}\n\n/* Header */\n.fixdog-sidebar-header {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n padding: 20px 24px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.15);\n background: rgba(0, 0, 0, 0.3);\n flex-shrink: 0;\n}\n\n.fixdog-sidebar-title {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #ffffff;\n letter-spacing: -0.01em;\n}\n\n.fixdog-close-btn {\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n font-size: 28px;\n line-height: 1;\n color: var(--fixdog-text-secondary, rgba(255, 255, 255, 0.7));\n cursor: pointer;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s;\n flex-shrink: 0;\n margin-left: 12px;\n}\n\n.fixdog-close-btn:hover {\n background: var(--fixdog-bg-tertiary, rgba(255, 255, 255, 0.1));\n color: var(--fixdog-text, #ffffff);\n}\n\n/* Light mode close button */\n.fixdog-light .fixdog-close-btn {\n color: #6b7280;\n}\n\n.fixdog-light .fixdog-close-btn:hover {\n background: #f3f4f6;\n color: #1f2937;\n}\n\n/* Content Area */\n.fixdog-sidebar-content {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 24px;\n scrollbar-width: thin;\n scrollbar-color: rgba(255, 255, 255, 0.2) transparent;\n}\n\n.fixdog-sidebar-content::-webkit-scrollbar {\n width: 8px;\n}\n\n.fixdog-sidebar-content::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.fixdog-sidebar-content::-webkit-scrollbar-thumb {\n background: rgba(255, 255, 255, 0.2);\n border-radius: 4px;\n}\n\n.fixdog-sidebar-content::-webkit-scrollbar-thumb:hover {\n background: rgba(255, 255, 255, 0.3);\n}\n\n/* Element Info Section */\n.fixdog-element-info-section {\n padding: 16px 20px;\n border-bottom: 1px solid var(--fixdog-border-strong, rgba(255, 255, 255, 0.15));\n flex-shrink: 0;\n background: var(--fixdog-bg-secondary, rgba(0, 0, 0, 0.2));\n margin-top: 0;\n}\n\n/* Element Info Section */\n.fixdog-element-info {\n margin-bottom: 0;\n}\n\n.fixdog-element-info-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 12px;\n}\n\n.fixdog-element-info-title {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--fixdog-text, rgba(255, 255, 255, 0.9));\n text-transform: uppercase;\n letter-spacing: 0.05em;\n}\n\n.fixdog-toggle-view-btn {\n padding: 6px 14px;\n font-size: 12px;\n border: 1px solid var(--fixdog-border-strong, rgba(255, 255, 255, 0.2));\n background: var(--fixdog-bg-tertiary, rgba(255, 255, 255, 0.1));\n color: var(--fixdog-text, #ffffff);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n font-weight: 500;\n}\n\n.fixdog-toggle-view-btn:hover {\n background: var(--fixdog-bg-tertiary, rgba(255, 255, 255, 0.2));\n border-color: var(--fixdog-border-strong, rgba(255, 255, 255, 0.3));\n}\n\n/* Light mode toggle view button */\n.fixdog-light .fixdog-toggle-view-btn {\n background: #f3f4f6;\n border-color: #d1d5db;\n color: #374151;\n}\n\n.fixdog-light .fixdog-toggle-view-btn:hover {\n background: #e5e7eb;\n border-color: #9ca3af;\n}\n\n.fixdog-element-info-content {\n background: var(--fixdog-bg-tertiary, rgba(0, 0, 0, 0.3));\n border: 1px solid var(--fixdog-border-strong, rgba(255, 255, 255, 0.15));\n border-radius: 8px;\n padding: 16px;\n display: flex;\n align-items: center;\n justify-content: space-between;\n position: relative;\n}\n\n/* Light mode element info content */\n.fixdog-light .fixdog-element-info-content {\n background: #ffffff;\n border-color: #e5e7eb;\n}\n\n.fixdog-file-location {\n font-family: \"SF Mono\", Monaco, Menlo, Consolas, monospace;\n font-size: 13px;\n color: var(--fixdog-text, #ffffff);\n word-break: break-word;\n}\n\n.fixdog-info-row {\n display: flex;\n margin-bottom: 12px;\n line-height: 1.6;\n}\n\n.fixdog-info-row:last-of-type {\n margin-bottom: 0;\n}\n\n.fixdog-info-row:last-child {\n margin-bottom: 0;\n}\n\n.fixdog-info-label {\n flex-shrink: 0;\n width: 100px;\n font-weight: 500;\n color: var(--fixdog-text-secondary, rgba(255, 255, 255, 0.75));\n font-size: 13px;\n}\n\n.fixdog-info-value {\n flex: 1;\n color: var(--fixdog-text, #ffffff);\n word-break: break-word;\n font-size: 13px;\n}\n\n.fixdog-component-name {\n font-weight: 600;\n color: var(--fixdog-accent, #60a5fa);\n}\n\n.fixdog-file-path {\n font-family: \"SF Mono\", Monaco, Menlo, Consolas, monospace;\n font-size: 12px;\n}\n\n.fixdog-mono {\n font-family: \"SF Mono\", Monaco, Menlo, Consolas, monospace;\n font-size: 12px;\n}\n\n.fixdog-detailed-section {\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--fixdog-border, rgba(255, 255, 255, 0.1));\n}\n\n.fixdog-code-preview {\n flex-direction: column;\n}\n\n.fixdog-code-placeholder {\n margin-top: 6px;\n padding: 8px;\n background: var(--fixdog-bg-tertiary, rgba(0, 0, 0, 0.3));\n color: var(--fixdog-text-secondary, rgba(255, 255, 255, 0.8));\n border-radius: 4px;\n font-family: \"SF Mono\", Monaco, Menlo, Consolas, monospace;\n font-size: 12px;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n/* Chat Container */\n.fixdog-chat-container {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n min-height: 0;\n}\n\n/* Messages Container */\n.fixdog-messages-container {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 16px 20px;\n scrollbar-width: thin;\n scrollbar-color: var(--fixdog-text-muted, rgba(255, 255, 255, 0.2)) transparent;\n}\n\n.fixdog-messages-container::-webkit-scrollbar {\n width: 8px;\n}\n\n.fixdog-messages-container::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.fixdog-messages-container::-webkit-scrollbar-thumb {\n background: var(--fixdog-text-muted, rgba(255, 255, 255, 0.2));\n border-radius: 4px;\n}\n\n.fixdog-messages-container::-webkit-scrollbar-thumb:hover {\n background: var(--fixdog-text-secondary, rgba(255, 255, 255, 0.3));\n}\n\n/* Empty State */\n.fixdog-empty-state {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n min-height: 200px;\n width: 100%;\n}\n\n.fixdog-empty-state-text {\n color: var(--fixdog-text-secondary, rgba(255, 255, 255, 0.6));\n font-size: 14px;\n text-align: center;\n}\n\n/* Secret Prompt */\n.fixdog-secret-prompt {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n padding: 24px;\n width: 100%;\n box-sizing: border-box;\n}\n\n.fixdog-secret-title {\n font-size: 16px;\n font-weight: 600;\n color: #ffffff;\n}\n\n.fixdog-secret-description {\n font-size: 13px;\n color: var(--fixdog-text-muted, rgba(255, 255, 255, 0.6));\n text-align: center;\n}\n\n.fixdog-secret-input-wrapper {\n display: flex;\n flex-direction: column;\n gap: 12px;\n width: 100%;\n}\n\n.fixdog-secret-input {\n width: 100%;\n padding: 10px 14px;\n border: 1px solid var(--fixdog-border-strong, rgba(255, 255, 255, 0.2));\n border-radius: 8px;\n font-family: inherit;\n font-size: 14px;\n background: var(--fixdog-bg-tertiary, rgba(0, 0, 0, 0.4));\n color: var(--fixdog-text, #ffffff);\n transition: border-color 0.2s, box-shadow 0.2s, background 0.2s;\n box-sizing: border-box;\n}\n\n.fixdog-secret-input::placeholder {\n color: var(--fixdog-text-muted, rgba(255, 255, 255, 0.5));\n}\n\n.fixdog-secret-input:focus {\n outline: none;\n border-color: var(--fixdog-accent, #60a5fa);\n background: var(--fixdog-bg-tertiary, rgba(0, 0, 0, 0.5));\n box-shadow: 0 0 0 3px rgba(96, 165, 250, 0.15);\n}\n\n/* Light mode secret input */\n.fixdog-light .fixdog-secret-input {\n background: #ffffff;\n border-color: #d1d5db;\n}\n\n.fixdog-light .fixdog-secret-input:focus {\n background: #ffffff;\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n.fixdog-secret-submit-btn {\n width: 100%;\n padding: 10px 16px;\n font-size: 14px;\n font-weight: 500;\n color: #ffffff;\n background: var(--fixdog-accent, #3b82f6);\n border: none;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.fixdog-secret-submit-btn:hover:not(:disabled) {\n background: var(--fixdog-accent-hover, #2563eb);\n}\n\n.fixdog-secret-submit-btn:disabled {\n background: var(--fixdog-bg-tertiary, rgba(255, 255, 255, 0.1));\n color: var(--fixdog-text-muted, rgba(255, 255, 255, 0.4));\n cursor: not-allowed;\n}\n\n/* Light mode disabled button */\n.fixdog-light .fixdog-secret-submit-btn:disabled {\n background: #e5e7eb;\n color: #9ca3af;\n}\n\n/* Messages */\n.fixdog-message {\n margin-bottom: 16px;\n display: flex;\n animation: fixdog-message-fade-in 0.2s ease-out;\n}\n\n@keyframes fixdog-message-fade-in {\n from {\n opacity: 0;\n transform: translateY(4px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.fixdog-message-user {\n justify-content: flex-end;\n}\n\n.fixdog-message-assistant {\n justify-content: flex-start;\n}\n\n/* Message Bubbles */\n.fixdog-message-bubble {\n max-width: 80%;\n padding: 12px 16px;\n border-radius: 12px;\n word-wrap: break-word;\n overflow-wrap: break-word;\n}\n\n.fixdog-message-user .fixdog-message-bubble {\n background: rgba(59, 130, 246, 0.15);\n border: 1px solid rgba(59, 130, 246, 0.25);\n color: var(--fixdog-accent, #3b82f6);\n}\n\n.fixdog-light .fixdog-message-user .fixdog-message-bubble {\n background: rgba(59, 130, 246, 0.1);\n color: #1d4ed8;\n}\n\n.fixdog-message-assistant .fixdog-message-bubble {\n background: var(--fixdog-bg-tertiary, rgba(255, 255, 255, 0.08));\n border: 1px solid var(--fixdog-border-strong, rgba(255, 255, 255, 0.15));\n color: var(--fixdog-text-secondary, rgba(255, 255, 255, 0.9));\n}\n\n.fixdog-message-content {\n line-height: 1.6;\n white-space: pre-wrap;\n word-break: break-word;\n font-size: 14px;\n}\n\n.fixdog-message-content.fixdog-message-error {\n color: #fca5a5;\n}\n\n/* Loading Message */\n.fixdog-message-loading {\n display: flex;\n align-items: center;\n gap: 10px;\n color: var(--fixdog-text-secondary, rgba(255, 255, 255, 0.7));\n font-size: 14px;\n}\n\n.fixdog-spinner {\n width: 16px;\n height: 16px;\n border: 2px solid var(--fixdog-border-strong, rgba(255, 255, 255, 0.2));\n border-top-color: var(--fixdog-text-secondary, rgba(255, 255, 255, 0.8));\n border-radius: 50%;\n animation: fixdog-spin 0.8s linear infinite;\n}\n\n.fixdog-spinner-small {\n width: 14px;\n height: 14px;\n border: 2px solid var(--fixdog-border-strong, rgba(255, 255, 255, 0.3));\n border-top-color: var(--fixdog-text, #ffffff);\n border-radius: 50%;\n animation: fixdog-spin 0.8s linear infinite;\n}\n\n/* Light mode spinner */\n.fixdog-light .fixdog-spinner {\n border-color: #e5e7eb;\n border-top-color: #4b5563;\n}\n\n.fixdog-light .fixdog-spinner-small {\n border-color: #d1d5db;\n border-top-color: #374151;\n}\n\n@keyframes fixdog-spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n/* Fixed Input Footer */\n.fixdog-input-footer-fixed {\n flex-shrink: 0;\n padding: 16px 20px;\n border-top: 1px solid var(--fixdog-border-strong, rgba(255, 255, 255, 0.15));\n background: var(--fixdog-bg-secondary, rgba(0, 0, 0, 0.3));\n}\n\n.fixdog-input-wrapper {\n position: relative;\n margin-bottom: 8px;\n}\n\n.fixdog-textarea {\n width: 100%;\n padding: 10px 60px 10px 14px;\n border: 1px solid var(--fixdog-border-strong, rgba(255, 255, 255, 0.2));\n border-radius: 8px;\n font-family: inherit;\n font-size: 14px;\n line-height: 1.5;\n resize: none;\n min-height: 44px;\n max-height: 200px;\n background: var(--fixdog-bg-tertiary, rgba(0, 0, 0, 0.4));\n color: var(--fixdog-text, #ffffff);\n transition: border-color 0.2s, box-shadow 0.2s, background 0.2s;\n box-sizing: border-box;\n overflow-wrap: break-word;\n word-wrap: break-word;\n overflow-y: auto;\n}\n\n.fixdog-textarea::placeholder {\n color: var(--fixdog-text-muted, rgba(255, 255, 255, 0.5));\n}\n\n.fixdog-textarea:focus {\n outline: none;\n border-color: var(--fixdog-accent, #60a5fa);\n background: var(--fixdog-bg-tertiary, rgba(0, 0, 0, 0.5));\n box-shadow: 0 0 0 3px rgba(96, 165, 250, 0.15);\n}\n\n.fixdog-textarea:disabled {\n background: var(--fixdog-bg-secondary, rgba(0, 0, 0, 0.2));\n color: var(--fixdog-text-muted, rgba(255, 255, 255, 0.5));\n cursor: not-allowed;\n}\n\n.fixdog-submit-btn {\n position: absolute;\n bottom: 10px;\n right: 6px;\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n font-size: 14px;\n font-weight: 500;\n color: #ffffff;\n background: #3b82f6;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n}\n\n.fixdog-submit-btn:active {\n transform: translateY(1px);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\n}\n\n.fixdog-submit-btn:hover:not(:disabled) {\n background: #2563eb;\n}\n\n.fixdog-submit-btn:disabled {\n background: var(--fixdog-bg-tertiary, rgba(255, 255, 255, 0.1));\n color: var(--fixdog-text-muted, rgba(255, 255, 255, 0.3));\n cursor: not-allowed;\n}\n\n/* Light mode submit button disabled */\n.fixdog-light .fixdog-submit-btn:disabled {\n background: #e5e7eb;\n color: #9ca3af;\n}\n\n.fixdog-submit-btn svg {\n stroke: currentColor;\n}\n\n.fixdog-input-hint {\n font-size: 11px;\n color: var(--fixdog-text-muted, rgba(255, 255, 255, 0.5));\n text-align: center;\n margin-top: 4px;\n}\n\n.fixdog-send-to-dev-section {\n margin-top: 12px;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.fixdog-send-to-dev-btn {\n width: 100%;\n padding: 10px 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 500;\n color: #ffffff;\n background: #10b981;\n border: none;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n}\n\n.fixdog-send-to-dev-btn:hover:not(:disabled) {\n background: #059669;\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);\n}\n\n.fixdog-send-to-dev-btn:active:not(:disabled) {\n transform: translateY(1px);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\n}\n\n.fixdog-send-to-dev-btn:disabled {\n background: var(--fixdog-bg-tertiary, rgba(255, 255, 255, 0.1));\n color: var(--fixdog-text-muted, rgba(255, 255, 255, 0.5));\n cursor: not-allowed;\n}\n\n/* Light mode send-to-dev disabled */\n.fixdog-light .fixdog-send-to-dev-btn:disabled {\n background: #e5e7eb;\n color: #9ca3af;\n}\n\n.fixdog-send-to-dev-btn svg {\n stroke: currentColor;\n}\n\n.fixdog-pr-link {\n display: block;\n text-align: center;\n font-size: 13px;\n font-weight: 500;\n color: #60a5fa;\n text-decoration: none;\n padding: 6px;\n border-radius: 6px;\n transition: all 0.2s;\n}\n\n.fixdog-pr-link:hover {\n background: rgba(96, 165, 250, 0.1);\n color: #93c5fd;\n text-decoration: underline;\n}\n\n.fixdog-retry-btn {\n margin-top: 8px;\n padding: 6px 12px;\n font-size: 12px;\n font-weight: 500;\n color: #ffffff;\n background: #ef4444;\n border: none;\n border-radius: 6px;\n cursor: pointer;\n transition: background 0.2s;\n}\n\n.fixdog-retry-btn:hover {\n background: #dc2626;\n}\n\n/* Footer */\n.fixdog-sidebar-footer {\n padding: 16px 24px;\n border-top: 1px solid rgba(255, 255, 255, 0.15);\n background: rgba(0, 0, 0, 0.3);\n text-align: center;\n flex-shrink: 0;\n}\n\n.fixdog-footer-text {\n font-size: 12px;\n color: rgba(255, 255, 255, 0.7);\n}\n\n.fixdog-footer-link {\n color: #60a5fa;\n text-decoration: none;\n font-weight: 500;\n}\n\n.fixdog-footer-link:hover {\n text-decoration: underline;\n color: #93c5fd;\n}\n\n/* Selected Components List */\n.fixdog-selected-components-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n max-height: 200px;\n overflow-y: auto;\n scrollbar-width: thin;\n scrollbar-color: var(--fixdog-text-muted, rgba(255, 255, 255, 0.2)) transparent;\n}\n\n.fixdog-selected-components-list::-webkit-scrollbar {\n width: 6px;\n}\n\n.fixdog-selected-components-list::-webkit-scrollbar-track {\n background: transparent;\n}\n\n.fixdog-selected-components-list::-webkit-scrollbar-thumb {\n background: var(--fixdog-text-muted, rgba(255, 255, 255, 0.2));\n border-radius: 3px;\n}\n\n/* Light mode scrollbar */\n.fixdog-light .fixdog-selected-components-list {\n scrollbar-color: #d1d5db transparent;\n}\n\n.fixdog-light .fixdog-selected-components-list::-webkit-scrollbar-thumb {\n background: #d1d5db;\n}\n\n.fixdog-selected-component-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 12px;\n background: var(--fixdog-bg-tertiary, rgba(0, 0, 0, 0.3));\n border: 1px solid var(--fixdog-border, rgba(255, 255, 255, 0.1));\n border-radius: 8px;\n transition: all 0.2s;\n}\n\n.fixdog-selected-component-item:hover {\n background: var(--fixdog-bg-tertiary, rgba(0, 0, 0, 0.4));\n border-color: var(--fixdog-border-strong, rgba(255, 255, 255, 0.2));\n}\n\n/* Light mode component items */\n.fixdog-light .fixdog-selected-component-item {\n background: #ffffff;\n border-color: #e5e7eb;\n}\n\n.fixdog-light .fixdog-selected-component-item:hover {\n background: #f9fafb;\n border-color: #d1d5db;\n}\n\n.fixdog-component-chip-wrapper {\n display: flex;\n align-items: center;\n gap: 10px;\n flex: 1;\n min-width: 0;\n}\n\n.fixdog-component-chip {\n width: 24px;\n height: 24px;\n min-width: 24px;\n background: #3b82f6;\n color: #ffffff;\n font-size: 12px;\n font-weight: 700;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 50%;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.fixdog-component-chip:hover {\n background: #2563eb;\n transform: scale(1.1);\n}\n\n.fixdog-component-details {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n\n.fixdog-component-name-label {\n font-weight: 600;\n color: var(--fixdog-accent, #60a5fa);\n font-size: 13px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.fixdog-component-file-label {\n font-family: \"SF Mono\", Monaco, Menlo, Consolas, monospace;\n font-size: 11px;\n color: var(--fixdog-text-muted, rgba(255, 255, 255, 0.6));\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.fixdog-remove-component-btn {\n width: 24px;\n height: 24px;\n min-width: 24px;\n border: none;\n background: transparent;\n font-size: 18px;\n line-height: 1;\n color: var(--fixdog-text-muted, rgba(255, 255, 255, 0.5));\n cursor: pointer;\n border-radius: 4px;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s;\n margin-left: 8px;\n}\n\n.fixdog-remove-component-btn:hover {\n background: rgba(239, 68, 68, 0.2);\n color: var(--fixdog-error, #ef4444);\n}\n\n.fixdog-selection-hint {\n margin-top: 12px;\n font-size: 11px;\n color: var(--fixdog-text-muted, rgba(255, 255, 255, 0.5));\n text-align: center;\n}\n\n/* Chip Input Styles */\n.fixdog-chip-input-container {\n position: relative;\n width: 100%;\n}\n\n.fixdog-chip-input {\n width: 100%;\n min-height: 80px;\n max-height: 200px;\n padding: 12px 14px 44px 14px;\n border: 1px solid var(--fixdog-border-strong, rgba(255, 255, 255, 0.2));\n border-radius: 8px;\n font-family: inherit;\n font-size: 14px;\n line-height: 1.5;\n background: var(--fixdog-bg-tertiary, rgba(0, 0, 0, 0.4));\n color: var(--fixdog-text, #ffffff);\n transition: border-color 0.2s, box-shadow 0.2s, background 0.2s;\n box-sizing: border-box;\n overflow-y: auto;\n overflow-wrap: break-word;\n word-wrap: break-word;\n white-space: pre-wrap;\n}\n\n.fixdog-chip-input:empty::before {\n content: attr(data-placeholder);\n color: var(--fixdog-text-muted, rgba(255, 255, 255, 0.5));\n pointer-events: none;\n}\n\n.fixdog-chip-input:focus {\n outline: none;\n border-color: var(--fixdog-accent, #60a5fa);\n background: var(--fixdog-bg-tertiary, rgba(0, 0, 0, 0.5));\n box-shadow: 0 0 0 3px rgba(96, 165, 250, 0.15);\n}\n\n.fixdog-chip-input[data-disabled=\"true\"] {\n background: var(--fixdog-bg-secondary, rgba(0, 0, 0, 0.2));\n color: var(--fixdog-text-muted, rgba(255, 255, 255, 0.5));\n cursor: not-allowed;\n pointer-events: none;\n}\n\n/* Light mode chip input */\n.fixdog-light .fixdog-chip-input {\n background: #ffffff;\n border-color: #d1d5db;\n}\n\n.fixdog-light .fixdog-chip-input:focus {\n background: #ffffff;\n border-color: var(--fixdog-accent);\n box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);\n}\n\n/* Inline chip in input */\n.fixdog-inline-chip {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n background: #3b82f6;\n color: #ffffff;\n font-size: 11px;\n font-weight: 700;\n border-radius: 50%;\n margin: 0 2px;\n vertical-align: middle;\n user-select: none;\n cursor: default;\n}\n\n/* Message display chip */\n.fixdog-message-chip {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n background: #3b82f6;\n color: #ffffff;\n font-size: 10px;\n font-weight: 700;\n border-radius: 50%;\n margin: 0 2px;\n vertical-align: middle;\n}\n\n/* Session elements in top bar */\n.fixdog-session-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--fixdog-text-muted, rgba(255, 255, 255, 0.3));\n transition: background 0.2s;\n flex-shrink: 0;\n}\n\n.fixdog-session-dot.active {\n background: var(--fixdog-success, #22c55e);\n box-shadow: 0 0 6px rgba(34, 197, 94, 0.5);\n}\n\n.fixdog-session-label {\n color: var(--fixdog-text-secondary, rgba(255, 255, 255, 0.7));\n font-weight: 500;\n font-size: 12px;\n white-space: nowrap;\n}\n\n.fixdog-new-session-btn {\n font-size: 11px;\n font-weight: 500;\n color: var(--fixdog-text-secondary, rgba(255, 255, 255, 0.7));\n background: var(--fixdog-bg-tertiary, rgba(255, 255, 255, 0.1));\n border: 1px solid var(--fixdog-border, rgba(255, 255, 255, 0.15));\n padding: 5px 12px;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n white-space: nowrap;\n}\n\n.fixdog-new-session-btn:hover {\n background: var(--fixdog-bg-tertiary, rgba(255, 255, 255, 0.15));\n color: var(--fixdog-text, #ffffff);\n border-color: var(--fixdog-border-strong, rgba(255, 255, 255, 0.25));\n}\n\n.fixdog-new-session-btn.primary {\n background: var(--fixdog-accent, #3b82f6);\n color: #ffffff;\n border-color: var(--fixdog-accent, #3b82f6);\n font-weight: 600;\n}\n\n.fixdog-new-session-btn.primary:hover {\n background: var(--fixdog-accent-hover, #2563eb);\n border-color: var(--fixdog-accent-hover, #2563eb);\n}\n\n/* Light mode session button */\n.fixdog-light .fixdog-new-session-btn {\n background: #f3f4f6;\n color: #4b5563;\n border-color: #d1d5db;\n}\n\n.fixdog-light .fixdog-new-session-btn:hover {\n background: #e5e7eb;\n color: #1f2937;\n border-color: #9ca3af;\n}\n\n/* Inline Modal - inside chat container */\n.fixdog-inline-modal {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n padding: 20px;\n margin: 0 16px 16px 16px;\n background: var(--fixdog-modal-bg, rgba(30, 30, 20, 0.98));\n border: 1px solid var(--fixdog-warning, rgba(255, 200, 100, 0.3));\n border-radius: 12px;\n box-shadow: 0 4px 20px var(--fixdog-shadow, rgba(0, 0, 0, 0.4));\n animation: fixdog-modal-slide-in 0.2s ease-out;\n}\n\n/* Light mode modal adjustments */\n.fixdog-light .fixdog-inline-modal {\n border-color: var(--fixdog-border-strong);\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);\n}\n\n.fixdog-inline-modal.error {\n border-color: var(--fixdog-error, #ef4444);\n}\n\n@keyframes fixdog-modal-slide-in {\n from {\n opacity: 0;\n transform: translateY(-8px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n.fixdog-inline-modal-icon {\n color: var(--fixdog-warning, #f59e0b);\n line-height: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.fixdog-inline-modal.error .fixdog-inline-modal-icon {\n color: var(--fixdog-error, #ef4444);\n}\n\n.fixdog-inline-modal-content {\n text-align: center;\n}\n\n.fixdog-inline-modal-title {\n font-size: 15px;\n font-weight: 600;\n color: var(--fixdog-text, #ffffff);\n margin-bottom: 6px;\n}\n\n.fixdog-inline-modal-body {\n font-size: 13px;\n color: var(--fixdog-text-secondary, rgba(255, 255, 255, 0.7));\n line-height: 1.5;\n}\n\n.fixdog-inline-modal-actions {\n display: flex;\n gap: 10px;\n margin-top: 4px;\n}\n\n.fixdog-inline-modal-btn {\n padding: 8px 16px;\n font-size: 13px;\n font-weight: 500;\n border: none;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.fixdog-inline-modal-btn.cancel {\n background: var(--fixdog-bg-tertiary, rgba(255, 255, 255, 0.1));\n color: var(--fixdog-text-secondary, rgba(255, 255, 255, 0.8));\n border: 1px solid var(--fixdog-border-strong, rgba(255, 255, 255, 0.15));\n}\n\n.fixdog-inline-modal-btn.cancel:hover {\n background: var(--fixdog-bg-tertiary, rgba(255, 255, 255, 0.15));\n color: var(--fixdog-text, #ffffff);\n}\n\n/* Light mode cancel button */\n.fixdog-light .fixdog-inline-modal-btn.cancel {\n background: #f3f4f6;\n color: #374151;\n border-color: #d1d5db;\n}\n\n.fixdog-light .fixdog-inline-modal-btn.cancel:hover {\n background: #e5e7eb;\n color: #1f2937;\n}\n\n.fixdog-inline-modal-btn.confirm {\n background: var(--fixdog-warning, #f59e0b);\n color: #000000;\n font-weight: 600;\n}\n\n.fixdog-inline-modal-btn.confirm:hover {\n background: #d97706;\n}\n\n.fixdog-inline-modal-btn.confirm.success {\n background: var(--fixdog-success, #10b981);\n color: #ffffff;\n}\n\n.fixdog-inline-modal-btn.confirm.success:hover {\n background: var(--fixdog-success-hover, #059669);\n}\n\n/* Mobile Responsive */\n@media (max-width: 768px) {\n .fixdog-sidebar {\n width: 100vw;\n }\n\n .fixdog-session-status-bar {\n flex-direction: column;\n align-items: flex-start;\n gap: 8px;\n }\n\n .fixdog-session-status-right {\n width: 100%;\n justify-content: flex-end;\n }\n}`;\n\n const SESSION_PREFIX = \"fixdog:session:\";\n const PR_PREFIX = \"fixdog:pr:last:\";\n const THEME_KEY = \"fixdog:theme\";\n function getStorage() {\n if (typeof window === \"undefined\" || !window.localStorage)\n return null;\n return window.localStorage;\n }\n function loadSession(projectId) {\n const storage = getStorage();\n if (!storage)\n return null;\n try {\n const raw = storage.getItem(`${SESSION_PREFIX}${projectId}`);\n return raw ? JSON.parse(raw) : null;\n }\n catch {\n return null;\n }\n }\n function saveSession(projectId, session) {\n const storage = getStorage();\n if (!storage)\n return;\n try {\n storage.setItem(`${SESSION_PREFIX}${projectId}`, JSON.stringify(session));\n }\n catch {\n // ignore write errors (e.g., quota)\n }\n }\n function clearSession(projectId) {\n const storage = getStorage();\n if (!storage)\n return;\n storage.removeItem(`${SESSION_PREFIX}${projectId}`);\n }\n function loadLastPr(projectId) {\n const storage = getStorage();\n if (!storage)\n return null;\n try {\n const raw = storage.getItem(`${PR_PREFIX}${projectId}`);\n return raw ? JSON.parse(raw) : null;\n }\n catch {\n return null;\n }\n }\n function saveLastPr(projectId, pr) {\n const storage = getStorage();\n if (!storage)\n return;\n try {\n storage.setItem(`${PR_PREFIX}${projectId}`, JSON.stringify(pr));\n }\n catch {\n // ignore write errors (e.g., quota)\n }\n }\n function clearLastPr(projectId) {\n const storage = getStorage();\n if (!storage)\n return;\n storage.removeItem(`${PR_PREFIX}${projectId}`);\n }\n function loadTheme() {\n const storage = getStorage();\n if (!storage)\n return \"dark\";\n try {\n const raw = storage.getItem(THEME_KEY);\n return raw === \"light\" ? \"light\" : \"dark\";\n }\n catch {\n return \"dark\";\n }\n }\n function saveTheme(theme) {\n const storage = getStorage();\n if (!storage)\n return;\n try {\n storage.setItem(THEME_KEY, theme);\n }\n catch {\n // ignore\n }\n }\n\n function initializeSidebarRuntime(config) {\n // Create container for sidebar\n const container = document.createElement(\"div\");\n container.id = \"fixdog-sidebar-root\";\n document.body.appendChild(container);\n // Create shadow DOM for style isolation\n const shadowRoot = container.attachShadow({ mode: \"open\" });\n // Inject styles into shadow DOM\n const styleElement = document.createElement(\"style\");\n styleElement.textContent = sidebarStyles;\n shadowRoot.appendChild(styleElement);\n // Create mount point for React\n const mountPoint = document.createElement(\"div\");\n shadowRoot.appendChild(mountPoint);\n // Create React root\n const root = clientExports.createRoot(mountPoint);\n // App component with state management\n function SidebarApp() {\n const [isOpen, setIsOpen] = reactExports.useState(false);\n const [selectedComponents, setSelectedComponents] = reactExports.useState([]);\n const [sessionId, setSessionId] = reactExports.useState(undefined);\n const [lastPr, setLastPr] = reactExports.useState(null);\n const [sessionValidated, setSessionValidated] = reactExports.useState(false);\n const [theme, setTheme] = reactExports.useState(() => loadTheme());\n const [sidebarSide, setSidebarSide] = reactExports.useState(\"right\");\n // Load persisted session + PR info, then validate session with backend\n reactExports.useEffect(() => {\n const stored = loadSession(config.projectId);\n const storedPr = loadLastPr(config.projectId);\n if (storedPr?.prUrl) {\n setLastPr(storedPr);\n }\n // Validate stored session with backend\n const validateSession = async () => {\n const secret = getSecret();\n if (!secret) {\n // No secret yet, can't validate\n setSessionValidated(true);\n return;\n }\n if (!stored?.sessionId) {\n // No stored session, nothing to validate\n setSessionValidated(true);\n return;\n }\n try {\n const result = await getSession({ projectId: config.projectId, secret }, config.apiEndpoint);\n if (result.ok && result.session?.id === stored.sessionId) {\n // Session is still valid\n setSessionId(stored.sessionId);\n console.log(\"[fixdog-sdk] Session validated:\", stored.sessionId);\n }\n else {\n // Session is invalid or expired, clear it\n clearSession(config.projectId);\n console.log(\"[fixdog-sdk] Stored session invalid, cleared\");\n }\n }\n catch (err) {\n // On error, keep stored session (may work on next attempt)\n setSessionId(stored.sessionId);\n console.warn(\"[fixdog-sdk] Could not validate session:\", err);\n }\n setSessionValidated(true);\n };\n validateSession();\n }, []);\n reactExports.useEffect(() => {\n // Handle initial sidebar open with first component\n const handleSidebarOpen = (event) => {\n const { selectedComponent } = event.detail;\n if (!selectedComponent) {\n console.warn(\"[fixdog-sdk] No selected component available for sidebar\");\n return;\n }\n setSelectedComponents([selectedComponent]);\n setIsOpen(true);\n };\n // Handle adding additional components\n const handleAddComponent = (event) => {\n const { selectedComponent } = event.detail;\n if (!selectedComponent) {\n console.warn(\"[fixdog-sdk] No component to add\");\n return;\n }\n setSelectedComponents((prev) => [...prev, selectedComponent]);\n };\n // Handle removing a component\n const handleRemoveComponent = (event) => {\n const { componentId } = event.detail;\n setSelectedComponents((prev) => prev.filter((c) => c.id !== componentId));\n };\n // Handle clearing all selections\n const handleClearSelections = () => {\n setSelectedComponents([]);\n };\n // Handle toggle sidebar (keyboard shortcut)\n const handleToggleSidebar = () => {\n setIsOpen((prev) => !prev);\n };\n window.addEventListener(\"fixdog:open-sidebar\", handleSidebarOpen);\n window.addEventListener(\"fixdog:add-component\", handleAddComponent);\n window.addEventListener(\"fixdog:remove-component\", handleRemoveComponent);\n window.addEventListener(\"fixdog:clear-selections\", handleClearSelections);\n window.addEventListener(\"fixdog:toggle-sidebar\", handleToggleSidebar);\n return () => {\n window.removeEventListener(\"fixdog:open-sidebar\", handleSidebarOpen);\n window.removeEventListener(\"fixdog:add-component\", handleAddComponent);\n window.removeEventListener(\"fixdog:remove-component\", handleRemoveComponent);\n window.removeEventListener(\"fixdog:clear-selections\", handleClearSelections);\n window.removeEventListener(\"fixdog:toggle-sidebar\", handleToggleSidebar);\n };\n }, []);\n const handleClose = reactExports.useCallback(() => {\n setIsOpen(false);\n setSelectedComponents([]);\n // Dispatch clear selections event to inspector\n window.dispatchEvent(new CustomEvent(\"fixdog:clear-selections\", {\n detail: {},\n }));\n }, []);\n const handleRemoveComponent = reactExports.useCallback((componentId) => {\n setSelectedComponents((prev) => prev.filter((c) => c.id !== componentId));\n // Dispatch remove component event to inspector\n window.dispatchEvent(new CustomEvent(\"fixdog:remove-component\", {\n detail: { componentId },\n }));\n }, []);\n // Backend resets repo when a chat starts without a valid session or after send-to-dev.\n const handleSessionUpdated = reactExports.useCallback((newSessionId) => {\n setSessionId(newSessionId);\n if (newSessionId) {\n saveSession(config.projectId, {\n sessionId: newSessionId,\n modelId: config.modelId,\n savedAt: Date.now(),\n });\n }\n else {\n clearSession(config.projectId);\n }\n }, [config.modelId, config.projectId]);\n const handleStartNewSession = reactExports.useCallback(() => {\n handleSessionUpdated(undefined);\n }, [handleSessionUpdated]);\n const handlePrRecorded = reactExports.useCallback((pr) => {\n setLastPr(pr);\n if (pr) {\n saveLastPr(config.projectId, pr);\n }\n else {\n clearLastPr(config.projectId);\n }\n }, [config.projectId]);\n const handleToggleTheme = reactExports.useCallback(() => {\n setTheme((prev) => {\n const next = prev === \"dark\" ? \"light\" : \"dark\";\n saveTheme(next);\n return next;\n });\n }, []);\n const handleToggleSidebarSide = reactExports.useCallback(() => {\n setSidebarSide((prev) => (prev === \"right\" ? \"left\" : \"right\"));\n }, []);\n if (!isOpen) {\n return null;\n }\n return (jsxRuntimeExports.jsx(FixdogSidebarReact, { selectedComponents: selectedComponents, onClose: handleClose, onRemoveComponent: handleRemoveComponent, apiEndpoint: config.apiEndpoint, projectId: config.projectId, modelId: config.modelId, sessionId: sessionId, onSessionUpdated: handleSessionUpdated, onStartNewSession: handleStartNewSession, lastPr: lastPr, onPrRecorded: handlePrRecorded, theme: theme, onToggleTheme: handleToggleTheme, side: sidebarSide, onToggleSide: handleToggleSidebarSide }));\n }\n // Render the app\n root.render(jsxRuntimeExports.jsx(SidebarApp, {}));\n console.log(\"[fixdog-sdk] Sidebar runtime initialized\");\n }\n\n exports.initializeSidebarRuntime = initializeSidebarRuntime;\n\n return exports;\n\n})({});\n";
|
|
797
|
+
|
|
798
|
+
// Cache for the loaded sidebar module
|
|
799
|
+
let sidebarModuleCache = null;
|
|
800
|
+
let loadingPromise = null;
|
|
801
|
+
// Dynamic loader for the isolated sidebar runtime
|
|
802
|
+
// Uses script injection for universal compatibility across all frameworks (Vite, Next.js, etc.)
|
|
803
|
+
async function loadSidebarRuntime() {
|
|
804
|
+
// Return cached module if already loaded
|
|
805
|
+
if (sidebarModuleCache) {
|
|
806
|
+
return sidebarModuleCache;
|
|
807
|
+
}
|
|
808
|
+
// Return existing loading promise to avoid duplicate loads
|
|
809
|
+
if (loadingPromise) {
|
|
810
|
+
return loadingPromise;
|
|
811
|
+
}
|
|
812
|
+
loadingPromise = (async () => {
|
|
813
|
+
if (typeof window === "undefined") {
|
|
814
|
+
throw new Error("Sidebar can only be loaded in browser environment");
|
|
815
|
+
}
|
|
816
|
+
// Check if already loaded (e.g., from a previous initialization)
|
|
817
|
+
if (window.__FIXDOG_SIDEBAR__) {
|
|
818
|
+
sidebarModuleCache = window.__FIXDOG_SIDEBAR__;
|
|
819
|
+
return sidebarModuleCache;
|
|
820
|
+
}
|
|
821
|
+
// Load sidebar by executing the IIFE code via script injection
|
|
822
|
+
// This works universally across Vite, Next.js, Webpack, and other bundlers
|
|
823
|
+
return new Promise((resolve, reject) => {
|
|
824
|
+
try {
|
|
825
|
+
const script = document.createElement("script");
|
|
826
|
+
script.textContent = sidebarRuntimeCode;
|
|
827
|
+
// Execute the script
|
|
828
|
+
document.head.appendChild(script);
|
|
829
|
+
// The IIFE exposes __FIXDOG_SIDEBAR__ global
|
|
830
|
+
// Use setTimeout to ensure the script has executed
|
|
831
|
+
setTimeout(() => {
|
|
832
|
+
const sidebarModule = window.__FIXDOG_SIDEBAR__;
|
|
833
|
+
if (sidebarModule && sidebarModule.initializeSidebarRuntime) {
|
|
834
|
+
sidebarModuleCache = sidebarModule;
|
|
835
|
+
console.log("[fixdog-sdk] Sidebar runtime loaded successfully");
|
|
836
|
+
resolve(sidebarModule);
|
|
837
|
+
}
|
|
838
|
+
else {
|
|
839
|
+
reject(new Error("Sidebar module not found after script execution. Global: " +
|
|
840
|
+
typeof window.__FIXDOG_SIDEBAR__));
|
|
841
|
+
}
|
|
842
|
+
}, 0);
|
|
843
|
+
}
|
|
844
|
+
catch (error) {
|
|
845
|
+
console.error("[fixdog-sdk] Failed to load sidebar runtime:", error);
|
|
846
|
+
reject(error);
|
|
847
|
+
}
|
|
848
|
+
});
|
|
849
|
+
})();
|
|
850
|
+
return loadingPromise;
|
|
851
|
+
}
|
|
852
|
+
const message = {
|
|
853
|
+
noFiber: "[fixdog-sdk] No React fiber found for element.",
|
|
854
|
+
disabled: "[fixdog-sdk] Inspector disabled (production build)."};
|
|
855
|
+
class Inspector {
|
|
856
|
+
async findInfoInElementAndAncestors(element) {
|
|
857
|
+
let current = element;
|
|
858
|
+
while (current) {
|
|
859
|
+
const info = await getSourceFromElement(current);
|
|
860
|
+
if (info)
|
|
861
|
+
return { element: current, info };
|
|
862
|
+
current = current.parentElement;
|
|
863
|
+
}
|
|
864
|
+
return { element: null, info: null };
|
|
865
|
+
}
|
|
866
|
+
async findInfoFromEvent(event) {
|
|
867
|
+
const path = event.composedPath?.() ?? [];
|
|
868
|
+
for (const node of path) {
|
|
869
|
+
if (node instanceof Element) {
|
|
870
|
+
const found = await this.findInfoInElementAndAncestors(node);
|
|
871
|
+
if (found.info)
|
|
872
|
+
return found;
|
|
873
|
+
}
|
|
874
|
+
}
|
|
875
|
+
const target = event.target;
|
|
876
|
+
return this.findInfoInElementAndAncestors(target);
|
|
877
|
+
}
|
|
878
|
+
constructor(options = {}) {
|
|
879
|
+
this.state = { active: false, persistent: false };
|
|
880
|
+
this.lastElement = null;
|
|
881
|
+
this.lastInfo = null;
|
|
882
|
+
this.boundMouseMove = (e) => this.handleMouseMove(e);
|
|
883
|
+
this.boundClick = (e) => this.handleClick(e);
|
|
884
|
+
this.boundKeyDown = (e) => this.handleKeyDown(e);
|
|
885
|
+
this.boundScroll = () => this.reposition();
|
|
886
|
+
this.boundResize = () => this.reposition();
|
|
887
|
+
this.mounted = false;
|
|
888
|
+
this.requestId = 0;
|
|
889
|
+
// Multi-select state
|
|
890
|
+
this.selectedComponents = [];
|
|
891
|
+
this.nextComponentId = 1;
|
|
892
|
+
this.sidebarOpen = false;
|
|
893
|
+
this.sidebarInitialized = false;
|
|
894
|
+
this.boundClearSelections = () => this.handleClearSelections();
|
|
895
|
+
this.boundRemoveComponent = (e) => this.handleRemoveComponent(e);
|
|
896
|
+
this.options = {
|
|
897
|
+
...DEFAULT_OPTIONS,
|
|
898
|
+
...options,
|
|
899
|
+
enabled: typeof options.enabled === "boolean"
|
|
900
|
+
? options.enabled
|
|
901
|
+
: DEFAULT_OPTIONS.enabled,
|
|
902
|
+
};
|
|
903
|
+
this.overlayOptions = {
|
|
904
|
+
zIndex: this.options.zIndex ?? DEFAULT_OPTIONS.zIndex,
|
|
905
|
+
borderColor: this.options.borderColor ?? DEFAULT_OPTIONS.borderColor,
|
|
906
|
+
tooltipPosition: this.options.tooltipPosition ?? DEFAULT_OPTIONS.tooltipPosition,
|
|
907
|
+
};
|
|
908
|
+
this.overlay = new Overlay(this.overlayOptions);
|
|
909
|
+
// Initialize sidebar if enabled
|
|
910
|
+
if (this.options.enableSidebar && !this.sidebarInitialized) {
|
|
911
|
+
this.initializeSidebar();
|
|
912
|
+
}
|
|
913
|
+
}
|
|
914
|
+
async initializeSidebar() {
|
|
915
|
+
if (typeof window === "undefined")
|
|
916
|
+
return;
|
|
917
|
+
try {
|
|
918
|
+
// Dynamically load the sidebar runtime which has its own bundled React
|
|
919
|
+
// This ensures the sidebar works regardless of the host app's React version
|
|
920
|
+
const { initializeSidebarRuntime } = await loadSidebarRuntime();
|
|
921
|
+
const apiEndpoint = this.options.apiEndpoint ?? DEFAULT_OPTIONS.apiEndpoint;
|
|
922
|
+
if (!this.options.projectId || !this.options.modelId) {
|
|
923
|
+
console.error("[fixdog-sdk] Missing projectId or modelId for sidebar initialization.");
|
|
924
|
+
return;
|
|
925
|
+
}
|
|
926
|
+
initializeSidebarRuntime({
|
|
927
|
+
apiEndpoint,
|
|
928
|
+
projectId: this.options.projectId,
|
|
929
|
+
modelId: this.options.modelId,
|
|
930
|
+
});
|
|
931
|
+
this.sidebarInitialized = true;
|
|
932
|
+
console.log("[fixdog-sdk] Sidebar runtime loaded successfully (isolated React)");
|
|
933
|
+
}
|
|
934
|
+
catch (error) {
|
|
935
|
+
console.error("[fixdog-sdk] Failed to initialize sidebar:", error);
|
|
936
|
+
}
|
|
937
|
+
}
|
|
938
|
+
activate() {
|
|
939
|
+
if (!this.options.enabled) {
|
|
940
|
+
console.info(message.disabled);
|
|
941
|
+
return;
|
|
942
|
+
}
|
|
943
|
+
if (this.mounted)
|
|
944
|
+
return;
|
|
945
|
+
this.mounted = true;
|
|
946
|
+
this.overlay.mount();
|
|
947
|
+
window.addEventListener("mousemove", this.boundMouseMove, true);
|
|
948
|
+
window.addEventListener("click", this.boundClick, true);
|
|
949
|
+
window.addEventListener("keydown", this.boundKeyDown, true);
|
|
950
|
+
window.addEventListener("scroll", this.boundScroll, true);
|
|
951
|
+
window.addEventListener("resize", this.boundResize, true);
|
|
952
|
+
window.addEventListener("fixdog:clear-selections", this.boundClearSelections);
|
|
953
|
+
window.addEventListener("fixdog:remove-component", this.boundRemoveComponent);
|
|
954
|
+
this.state.active = true;
|
|
955
|
+
}
|
|
956
|
+
deactivate() {
|
|
957
|
+
if (!this.mounted)
|
|
958
|
+
return;
|
|
959
|
+
window.removeEventListener("mousemove", this.boundMouseMove, true);
|
|
960
|
+
window.removeEventListener("click", this.boundClick, true);
|
|
961
|
+
window.removeEventListener("keydown", this.boundKeyDown, true);
|
|
962
|
+
window.removeEventListener("scroll", this.boundScroll, true);
|
|
963
|
+
window.removeEventListener("resize", this.boundResize, true);
|
|
964
|
+
window.removeEventListener("fixdog:clear-selections", this.boundClearSelections);
|
|
965
|
+
window.removeEventListener("fixdog:remove-component", this.boundRemoveComponent);
|
|
966
|
+
this.overlay.hide();
|
|
967
|
+
this.clearSelections();
|
|
968
|
+
this.lastElement = null;
|
|
969
|
+
this.lastInfo = null;
|
|
970
|
+
this.state = { active: false, persistent: false };
|
|
971
|
+
this.mounted = false;
|
|
972
|
+
}
|
|
973
|
+
destroy() {
|
|
974
|
+
this.deactivate();
|
|
975
|
+
this.overlay.destroy();
|
|
976
|
+
}
|
|
977
|
+
async handleMouseMove(event) {
|
|
978
|
+
if (!this.state.active || !this.options.enabled)
|
|
979
|
+
return;
|
|
980
|
+
const currentId = ++this.requestId;
|
|
981
|
+
const { element: target, info } = await this.findInfoFromEvent(event);
|
|
982
|
+
const shouldInspect = this.state.persistent || event.altKey;
|
|
983
|
+
if (!shouldInspect || !target) {
|
|
984
|
+
this.overlay.hide();
|
|
985
|
+
this.lastElement = null;
|
|
986
|
+
this.lastInfo = null;
|
|
987
|
+
this.options.onHover?.(null);
|
|
988
|
+
return;
|
|
989
|
+
}
|
|
990
|
+
if (currentId !== this.requestId)
|
|
991
|
+
return; // stale
|
|
992
|
+
if (!info) {
|
|
993
|
+
this.overlay.hide();
|
|
994
|
+
this.options.onHover?.(null);
|
|
995
|
+
return;
|
|
996
|
+
}
|
|
997
|
+
this.lastElement = target;
|
|
998
|
+
this.lastInfo = info;
|
|
999
|
+
this.overlay.update(target, info);
|
|
1000
|
+
this.options.onHover?.(info);
|
|
1001
|
+
}
|
|
1002
|
+
handleClick(event) {
|
|
1003
|
+
if (!this.state.active || !this.options.enabled)
|
|
1004
|
+
return;
|
|
1005
|
+
const shouldHandle = this.state.persistent ||
|
|
1006
|
+
isOptionClick(event, this.options.useOptionClick ?? true);
|
|
1007
|
+
if (!shouldHandle)
|
|
1008
|
+
return;
|
|
1009
|
+
const currentId = ++this.requestId;
|
|
1010
|
+
this.findInfoFromEvent(event).then(({ element: target, info }) => {
|
|
1011
|
+
if (!target)
|
|
1012
|
+
return;
|
|
1013
|
+
event.preventDefault();
|
|
1014
|
+
event.stopPropagation();
|
|
1015
|
+
if (currentId !== this.requestId)
|
|
1016
|
+
return; // stale
|
|
1017
|
+
if (!info) {
|
|
1018
|
+
console.warn(message.noFiber);
|
|
1019
|
+
return;
|
|
1020
|
+
}
|
|
1021
|
+
this.lastElement = target;
|
|
1022
|
+
this.lastInfo = info;
|
|
1023
|
+
this.overlay.update(target, info);
|
|
1024
|
+
this.log(info);
|
|
1025
|
+
// Open sidebar with element info
|
|
1026
|
+
if (this.options.enableSidebar) {
|
|
1027
|
+
this.openSidebar(info);
|
|
1028
|
+
}
|
|
1029
|
+
this.options.onClick?.(info);
|
|
1030
|
+
});
|
|
1031
|
+
}
|
|
1032
|
+
createSelectedComponent(info) {
|
|
1033
|
+
const elementInfo = {
|
|
1034
|
+
componentName: info.componentName,
|
|
1035
|
+
filePath: info.fileName,
|
|
1036
|
+
line: info.lineNumber,
|
|
1037
|
+
column: info.columnNumber,
|
|
1038
|
+
componentTree: info.fiber ? getComponentAncestors(info.fiber) : undefined,
|
|
1039
|
+
};
|
|
1040
|
+
// Get bounding box if element is available
|
|
1041
|
+
if (info.element) {
|
|
1042
|
+
const rect = info.element.getBoundingClientRect();
|
|
1043
|
+
elementInfo.box = {
|
|
1044
|
+
x: rect.x,
|
|
1045
|
+
y: rect.y,
|
|
1046
|
+
width: rect.width,
|
|
1047
|
+
height: rect.height,
|
|
1048
|
+
};
|
|
1049
|
+
}
|
|
1050
|
+
// Create editor URL format
|
|
1051
|
+
const editorUrl = `${info.fileName}:${info.lineNumber}:${info.columnNumber}`;
|
|
1052
|
+
// Get next available ID (fills gaps)
|
|
1053
|
+
const id = this.getNextAvailableId();
|
|
1054
|
+
const selectedComponent = {
|
|
1055
|
+
id,
|
|
1056
|
+
editorUrl,
|
|
1057
|
+
elementInfo,
|
|
1058
|
+
elementRef: info.element ?? undefined,
|
|
1059
|
+
};
|
|
1060
|
+
return selectedComponent;
|
|
1061
|
+
}
|
|
1062
|
+
openSidebar(info) {
|
|
1063
|
+
const selectedComponent = this.createSelectedComponent(info);
|
|
1064
|
+
if (!this.sidebarOpen) {
|
|
1065
|
+
// First selection - open sidebar
|
|
1066
|
+
this.selectedComponents = [selectedComponent];
|
|
1067
|
+
this.sidebarOpen = true;
|
|
1068
|
+
// Add selection highlight to overlay (if element exists)
|
|
1069
|
+
if (info.element) {
|
|
1070
|
+
this.overlay.addSelection(selectedComponent.id, info.element, selectedComponent.elementInfo.componentName);
|
|
1071
|
+
}
|
|
1072
|
+
// Dispatch open sidebar event
|
|
1073
|
+
const event = new CustomEvent("fixdog:open-sidebar", {
|
|
1074
|
+
detail: {
|
|
1075
|
+
editorUrl: selectedComponent.editorUrl,
|
|
1076
|
+
elementInfo: selectedComponent.elementInfo,
|
|
1077
|
+
selectedComponent,
|
|
1078
|
+
},
|
|
1079
|
+
});
|
|
1080
|
+
window.dispatchEvent(event);
|
|
1081
|
+
}
|
|
1082
|
+
else {
|
|
1083
|
+
// Sidebar already open - add to selection
|
|
1084
|
+
this.selectedComponents.push(selectedComponent);
|
|
1085
|
+
// Add selection highlight to overlay (if element exists)
|
|
1086
|
+
if (info.element) {
|
|
1087
|
+
this.overlay.addSelection(selectedComponent.id, info.element, selectedComponent.elementInfo.componentName);
|
|
1088
|
+
}
|
|
1089
|
+
// Dispatch add component event
|
|
1090
|
+
const event = new CustomEvent("fixdog:add-component", {
|
|
1091
|
+
detail: {
|
|
1092
|
+
selectedComponent,
|
|
1093
|
+
},
|
|
1094
|
+
});
|
|
1095
|
+
window.dispatchEvent(event);
|
|
1096
|
+
}
|
|
1097
|
+
// Store selected components globally for reference
|
|
1098
|
+
window.__FIXDOG_SELECTED_COMPONENTS__ = this.selectedComponents;
|
|
1099
|
+
}
|
|
1100
|
+
clearSelections() {
|
|
1101
|
+
this.selectedComponents = [];
|
|
1102
|
+
this.nextComponentId = 1;
|
|
1103
|
+
this.sidebarOpen = false;
|
|
1104
|
+
this.overlay.clearSelections();
|
|
1105
|
+
window.__FIXDOG_SELECTED_COMPONENTS__ = [];
|
|
1106
|
+
}
|
|
1107
|
+
handleClearSelections() {
|
|
1108
|
+
this.clearSelections();
|
|
1109
|
+
}
|
|
1110
|
+
handleRemoveComponent(event) {
|
|
1111
|
+
const { componentId } = event.detail;
|
|
1112
|
+
this.removeSelection(componentId);
|
|
1113
|
+
}
|
|
1114
|
+
// Calculate the next available ID (fill gaps first)
|
|
1115
|
+
getNextAvailableId() {
|
|
1116
|
+
if (this.selectedComponents.length === 0) {
|
|
1117
|
+
return 1;
|
|
1118
|
+
}
|
|
1119
|
+
// Get all current IDs sorted
|
|
1120
|
+
const usedIds = new Set(this.selectedComponents.map((c) => c.id));
|
|
1121
|
+
// Find the first gap starting from 1
|
|
1122
|
+
let nextId = 1;
|
|
1123
|
+
while (usedIds.has(nextId)) {
|
|
1124
|
+
nextId++;
|
|
1125
|
+
}
|
|
1126
|
+
return nextId;
|
|
1127
|
+
}
|
|
1128
|
+
// Public method to remove a specific selection
|
|
1129
|
+
removeSelection(componentId) {
|
|
1130
|
+
this.selectedComponents = this.selectedComponents.filter((c) => c.id !== componentId);
|
|
1131
|
+
this.overlay.removeSelection(componentId);
|
|
1132
|
+
window.__FIXDOG_SELECTED_COMPONENTS__ = this.selectedComponents;
|
|
1133
|
+
// Recalculate next ID to fill gaps
|
|
1134
|
+
this.nextComponentId = this.getNextAvailableId();
|
|
1135
|
+
// Reset component ID counter when all removed (but don't close sidebar)
|
|
1136
|
+
if (this.selectedComponents.length === 0) {
|
|
1137
|
+
this.nextComponentId = 1;
|
|
1138
|
+
}
|
|
1139
|
+
}
|
|
1140
|
+
handleKeyDown(event) {
|
|
1141
|
+
if (!this.options.enabled)
|
|
1142
|
+
return;
|
|
1143
|
+
if (matchesShortcut(event, this.options.shortcut)) {
|
|
1144
|
+
event.preventDefault();
|
|
1145
|
+
event.stopPropagation();
|
|
1146
|
+
this.togglePersistent();
|
|
1147
|
+
return;
|
|
1148
|
+
}
|
|
1149
|
+
// Ctrl/Cmd + Shift + F to toggle sidebar
|
|
1150
|
+
if ((event.ctrlKey || event.metaKey) &&
|
|
1151
|
+
event.shiftKey &&
|
|
1152
|
+
event.key.toLowerCase() === "f") {
|
|
1153
|
+
event.preventDefault();
|
|
1154
|
+
event.stopPropagation();
|
|
1155
|
+
window.dispatchEvent(new CustomEvent("fixdog:toggle-sidebar"));
|
|
1156
|
+
return;
|
|
1157
|
+
}
|
|
1158
|
+
if (event.key === "Escape") {
|
|
1159
|
+
this.state.persistent = false;
|
|
1160
|
+
this.overlay.hide();
|
|
1161
|
+
// Don't clear selections on Escape - let sidebar handle that
|
|
1162
|
+
}
|
|
1163
|
+
}
|
|
1164
|
+
togglePersistent() {
|
|
1165
|
+
this.state.persistent = !this.state.persistent;
|
|
1166
|
+
if (!this.state.persistent) {
|
|
1167
|
+
this.overlay.hide();
|
|
1168
|
+
}
|
|
1169
|
+
}
|
|
1170
|
+
reposition() {
|
|
1171
|
+
if (this.lastElement && this.lastInfo) {
|
|
1172
|
+
this.overlay.update(this.lastElement, this.lastInfo);
|
|
1173
|
+
}
|
|
1174
|
+
// Also update selection positions
|
|
1175
|
+
this.overlay.updateSelectionPositions();
|
|
1176
|
+
}
|
|
1177
|
+
log(info) {
|
|
1178
|
+
const { componentName, fileName, lineNumber } = info;
|
|
1179
|
+
console.log("%c[fixdog-sdk]%c %s %c@ %s:%d", "color: #61dafb; font-weight: bold", "color: #98c379; font-weight: bold", componentName, "color: #888", fileName, lineNumber);
|
|
1180
|
+
console.log(info);
|
|
1181
|
+
}
|
|
1182
|
+
}
|
|
1183
|
+
|
|
1184
|
+
export { DEFAULT_OPTIONS as D, Inspector as I, enableDebug as e };
|
|
1185
|
+
//# sourceMappingURL=inspector-CNgFkZOU.esm.js.map
|