@meridianlabs/inspect-scout-viewer 0.4.38 → 0.4.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/lib/AsciinemaPlayerImpl-6ZAkt1g5.js +5854 -0
  2. package/lib/AsciinemaPlayerImpl-6ZAkt1g5.js.map +1 -0
  3. package/lib/e2e/app-navigation.spec.d.ts +1 -0
  4. package/lib/e2e/chat-components.spec.d.ts +1 -0
  5. package/lib/e2e/fixtures/app.d.ts +7 -0
  6. package/lib/e2e/fixtures/handlers.d.ts +2 -0
  7. package/lib/e2e/fixtures/test-data.d.ts +42 -0
  8. package/lib/e2e/scan.spec.d.ts +1 -0
  9. package/lib/e2e/scans.spec.d.ts +1 -0
  10. package/lib/e2e/shared-components.spec.d.ts +1 -0
  11. package/lib/e2e/timeline-migration-baseline.spec.d.ts +8 -0
  12. package/lib/e2e/timeline.spec.d.ts +1 -0
  13. package/lib/e2e/transcript-events.spec.d.ts +1 -0
  14. package/lib/e2e/transcript.spec.d.ts +1 -0
  15. package/lib/e2e/transcripts.spec.d.ts +1 -0
  16. package/lib/index.d.ts +2 -0
  17. package/lib/index.js +128052 -0
  18. package/lib/index.js.map +1 -0
  19. package/lib/src/App.d.ts +6 -0
  20. package/lib/src/AppRouter.d.ts +6 -0
  21. package/lib/src/api/api-scout-server.d.ts +8 -0
  22. package/lib/src/api/api-vscode.d.ts +3 -0
  23. package/lib/src/api/api.d.ts +56 -0
  24. package/lib/src/api/attachmentsHelpers.d.ts +1 -0
  25. package/lib/src/api/expandInputEvents.d.ts +6 -0
  26. package/lib/src/api/jsonrpc-fetch.d.ts +20 -0
  27. package/lib/src/api/jsonrpc.d.ts +50 -0
  28. package/lib/src/api/request.d.ts +30 -0
  29. package/lib/src/api/vscode-storage.d.ts +3 -0
  30. package/lib/src/app/components/ActivityBar.d.ts +23 -0
  31. package/lib/src/app/components/ActivityBarLayout.d.ts +11 -0
  32. package/lib/src/app/components/AddFilterButton.d.ts +37 -0
  33. package/lib/src/app/components/BreadCrumbs.d.ts +10 -0
  34. package/lib/src/app/components/Chip.d.ts +12 -0
  35. package/lib/src/app/components/ChipGroup.d.ts +7 -0
  36. package/lib/src/app/components/ColumnHeader.d.ts +11 -0
  37. package/lib/src/app/components/ColumnPickerButton.d.ts +19 -0
  38. package/lib/src/app/components/ColumnsPopover.d.ts +25 -0
  39. package/lib/src/app/components/DataframeView.d.ts +17 -0
  40. package/lib/src/app/components/DownloadScanButton.d.ts +9 -0
  41. package/lib/src/app/components/EditablePath.d.ts +15 -0
  42. package/lib/src/app/components/EditableText.d.ts +16 -0
  43. package/lib/src/app/components/Error.d.ts +7 -0
  44. package/lib/src/app/components/FilterBar.d.ts +35 -0
  45. package/lib/src/app/components/FindBand.d.ts +6 -0
  46. package/lib/src/app/components/Footer.d.ts +21 -0
  47. package/lib/src/app/components/HeadingGrid.d.ts +15 -0
  48. package/lib/src/app/components/Identifier.d.ts +7 -0
  49. package/lib/src/app/components/NavButtons.d.ts +12 -0
  50. package/lib/src/app/components/Navbar.d.ts +11 -0
  51. package/lib/src/app/components/NextPreviousNav.d.ts +11 -0
  52. package/lib/src/app/components/Pager.d.ts +9 -0
  53. package/lib/src/app/components/ProjectBar.d.ts +7 -0
  54. package/lib/src/app/components/ScansNavbar.d.ts +10 -0
  55. package/lib/src/app/components/ScoreValue.d.ts +12 -0
  56. package/lib/src/app/components/TaskName.d.ts +8 -0
  57. package/lib/src/app/components/TranscriptsNavbar.d.ts +11 -0
  58. package/lib/src/app/components/agGridSetup.d.ts +1 -0
  59. package/lib/src/app/components/columnFilter/ColumnFilterButton.d.ts +6 -0
  60. package/lib/src/app/components/columnFilter/ColumnFilterControl.d.ts +16 -0
  61. package/lib/src/app/components/columnFilter/ColumnFilterEditor.d.ts +32 -0
  62. package/lib/src/app/components/columnFilter/DurationInput.d.ts +9 -0
  63. package/lib/src/app/components/columnFilter/index.d.ts +12 -0
  64. package/lib/src/app/components/columnFilter/useAddFilterPopover.d.ts +35 -0
  65. package/lib/src/app/components/columnFilter/useColumnFilter.d.ts +27 -0
  66. package/lib/src/app/components/columnFilter/useColumnFilterPopover.d.ts +25 -0
  67. package/lib/src/app/components/columnSizing/defaultStrategy.d.ts +2 -0
  68. package/lib/src/app/components/columnSizing/fitContentStrategy.d.ts +2 -0
  69. package/lib/src/app/components/columnSizing/index.d.ts +5 -0
  70. package/lib/src/app/components/columnSizing/strategies.d.ts +10 -0
  71. package/lib/src/app/components/columnSizing/types.d.ts +60 -0
  72. package/lib/src/app/components/columnTypes.d.ts +46 -0
  73. package/lib/src/app/components/dataGrid/DataGrid.d.ts +8 -0
  74. package/lib/src/app/components/dataGrid/index.d.ts +2 -0
  75. package/lib/src/app/components/dataGrid/types.d.ts +70 -0
  76. package/lib/src/app/components/useFilterBarHandlers.d.ts +41 -0
  77. package/lib/src/app/hooks/useFilterConditions.d.ts +6 -0
  78. package/lib/src/app/hooks/useScanFilterConditions.d.ts +6 -0
  79. package/lib/src/app/hooks/useScanResultSummaries.d.ts +6 -0
  80. package/lib/src/app/hooks/useScanRoute.d.ts +8 -0
  81. package/lib/src/app/hooks/useScansFilterBarProps.d.ts +13 -0
  82. package/lib/src/app/hooks/useSelectedScan.d.ts +3 -0
  83. package/lib/src/app/hooks/useSelectedScanDataframe.d.ts +3 -0
  84. package/lib/src/app/hooks/useSelectedScanResultData.d.ts +3 -0
  85. package/lib/src/app/hooks/useSelectedScanResultDetail.d.ts +3 -0
  86. package/lib/src/app/hooks/useSelectedScanner.d.ts +2 -0
  87. package/lib/src/app/hooks/useTranscriptsFilterBarProps.d.ts +18 -0
  88. package/lib/src/app/hooks/useWindowMessaging.d.ts +19 -0
  89. package/lib/src/app/project/ProjectPanel.d.ts +7 -0
  90. package/lib/src/app/project/SettingsContent.d.ts +7 -0
  91. package/lib/src/app/project/components/FormFields.d.ts +73 -0
  92. package/lib/src/app/project/configUtils.d.ts +30 -0
  93. package/lib/src/app/project/hooks/useNestedConfig.d.ts +28 -0
  94. package/lib/src/app/runScan/ActiveScanView.d.ts +6 -0
  95. package/lib/src/app/runScan/DefineScannerSection.d.ts +6 -0
  96. package/lib/src/app/runScan/LlmScannerParams.d.ts +14 -0
  97. package/lib/src/app/runScan/RunScanPanel.d.ts +2 -0
  98. package/lib/src/app/runScan/ScannerParamsPlaceholder.d.ts +6 -0
  99. package/lib/src/app/scan/ScanPanel.d.ts +2 -0
  100. package/lib/src/app/scan/ScanPanelBody.d.ts +6 -0
  101. package/lib/src/app/scan/ScanPanelTitle.d.ts +6 -0
  102. package/lib/src/app/scan/info/ScanInfo.d.ts +5 -0
  103. package/lib/src/app/scan/scanners/ScannerPanel.d.ts +5 -0
  104. package/lib/src/app/scan/scanners/ScannerSidebar.d.ts +5 -0
  105. package/lib/src/app/scan/scanners/dataframe/DataframeGridApiContext.d.ts +7 -0
  106. package/lib/src/app/scan/scanners/dataframe/ScannerDataframeCSVButtons.d.ts +11 -0
  107. package/lib/src/app/scan/scanners/dataframe/ScannerDataframeClearFiltersButton.d.ts +2 -0
  108. package/lib/src/app/scan/scanners/dataframe/ScannerDataframeColumnsPopover.d.ts +5 -0
  109. package/lib/src/app/scan/scanners/dataframe/ScannerDataframeFilterColumnsButton.d.ts +1 -0
  110. package/lib/src/app/scan/scanners/dataframe/ScannerDataframeWrapTextButton.d.ts +2 -0
  111. package/lib/src/app/scan/scanners/dataframe/useOperationStatus.d.ts +7 -0
  112. package/lib/src/app/scan/scanners/list/ScannerResultsGroup.d.ts +6 -0
  113. package/lib/src/app/scan/scanners/list/ScannerResultsHeader.d.ts +7 -0
  114. package/lib/src/app/scan/scanners/list/ScannerResultsList.d.ts +14 -0
  115. package/lib/src/app/scan/scanners/list/ScannerResultsRow.d.ts +9 -0
  116. package/lib/src/app/scan/scanners/results/ScannerResultsBody.d.ts +12 -0
  117. package/lib/src/app/scan/scanners/results/ScannerResultsFilter.d.ts +5 -0
  118. package/lib/src/app/scan/scanners/results/ScannerResultsGroup.d.ts +7 -0
  119. package/lib/src/app/scan/scanners/results/ScannerResultsSearch.d.ts +2 -0
  120. package/lib/src/app/scan/scanners/types.d.ts +1 -0
  121. package/lib/src/app/scannerResult/AllScoresDialog.d.ts +9 -0
  122. package/lib/src/app/scannerResult/ScannerResultHeader.d.ts +13 -0
  123. package/lib/src/app/scannerResult/ScannerResultNav.d.ts +2 -0
  124. package/lib/src/app/scannerResult/ScannerResultPanel.d.ts +2 -0
  125. package/lib/src/app/scannerResult/ScoreColumn.d.ts +15 -0
  126. package/lib/src/app/scannerResult/SourcePath.d.ts +9 -0
  127. package/lib/src/app/scannerResult/error/ErrorPanel.d.ts +7 -0
  128. package/lib/src/app/scannerResult/info/InfoPanel.d.ts +9 -0
  129. package/lib/src/app/scannerResult/metadata/MetadataPanel.d.ts +7 -0
  130. package/lib/src/app/scannerResult/result/ResultBody.d.ts +8 -0
  131. package/lib/src/app/scannerResult/result/ResultPanel.d.ts +9 -0
  132. package/lib/src/app/scannerResult/result/ResultSidebar.d.ts +9 -0
  133. package/lib/src/app/scannerResult/transcript/TranscriptPanel.d.ts +15 -0
  134. package/lib/src/app/scans/ScansFilterBar.d.ts +7 -0
  135. package/lib/src/app/scans/ScansGrid.d.ts +21 -0
  136. package/lib/src/app/scans/ScansPanel.d.ts +2 -0
  137. package/lib/src/app/scans/columnSizing/index.d.ts +3 -0
  138. package/lib/src/app/scans/columnSizing/useColumnSizing.d.ts +33 -0
  139. package/lib/src/app/scans/columns.d.ts +25 -0
  140. package/lib/src/app/scans/constants.d.ts +35 -0
  141. package/lib/src/app/server/index.d.ts +6 -0
  142. package/lib/src/app/server/useActiveScan.d.ts +3 -0
  143. package/lib/src/app/server/useActiveScans.d.ts +3 -0
  144. package/lib/src/app/server/useAdjacentTranscriptIds.d.ts +10 -0
  145. package/lib/src/app/server/useAppConfig.d.ts +20 -0
  146. package/lib/src/app/server/useCode.d.ts +4 -0
  147. package/lib/src/app/server/useHasTranscript.d.ts +8 -0
  148. package/lib/src/app/server/useProjectConfig.d.ts +30 -0
  149. package/lib/src/app/server/useScan.d.ts +9 -0
  150. package/lib/src/app/server/useScanDataframe.d.ts +11 -0
  151. package/lib/src/app/server/useScanDataframeDetail.d.ts +11 -0
  152. package/lib/src/app/server/useScanners.d.ts +3 -0
  153. package/lib/src/app/server/useScansColumnValues.d.ts +11 -0
  154. package/lib/src/app/server/useScansInfinite.d.ts +6 -0
  155. package/lib/src/app/server/useSearches.d.ts +43 -0
  156. package/lib/src/app/server/useServerTranscripts.d.ts +5 -0
  157. package/lib/src/app/server/useServerTranscriptsInfinite.d.ts +13 -0
  158. package/lib/src/app/server/useStartScan.d.ts +3 -0
  159. package/lib/src/app/server/useTopicInvalidation.d.ts +11 -0
  160. package/lib/src/app/server/useTranscript.d.ts +9 -0
  161. package/lib/src/app/server/useTranscriptsColumnValues.d.ts +11 -0
  162. package/lib/src/app/server/useValidations.d.ts +87 -0
  163. package/lib/src/app/settings/SettingsPanel.d.ts +2 -0
  164. package/lib/src/app/timeline/components/TimelineEventsView.d.ts +50 -0
  165. package/lib/src/app/timeline/hooks/useActiveTimeline.d.ts +5 -0
  166. package/lib/src/app/timeline/hooks/useTimeline.d.ts +6 -0
  167. package/lib/src/app/timeline/hooks/useTimelineConfig.d.ts +7 -0
  168. package/lib/src/app/timeline/hooks/useTranscriptTimeline.d.ts +6 -0
  169. package/lib/src/app/transcript/SearchPanel.d.ts +9 -0
  170. package/lib/src/app/transcript/TranscriptBody.d.ts +17 -0
  171. package/lib/src/app/transcript/TranscriptFilterPopover.d.ts +7 -0
  172. package/lib/src/app/transcript/TranscriptNav.d.ts +10 -0
  173. package/lib/src/app/transcript/TranscriptPanel.d.ts +2 -0
  174. package/lib/src/app/transcript/TranscriptTitle.d.ts +7 -0
  175. package/lib/src/app/transcript/debugEventTree.d.ts +4 -0
  176. package/lib/src/app/transcript/hooks/useSearchReferenceLabels.d.ts +12 -0
  177. package/lib/src/app/transcript/hooks/useTranscriptColumnFilter.d.ts +11 -0
  178. package/lib/src/app/transcript/hooks/useTranscriptNavigation.d.ts +14 -0
  179. package/lib/src/app/transcript/hooks/useTranscriptTimeline.d.ts +1 -0
  180. package/lib/src/app/transcript/searchPanelState.d.ts +35 -0
  181. package/lib/src/app/transcript/searchRequest.d.ts +22 -0
  182. package/lib/src/app/transcripts/TranscriptFilterBar.d.ts +8 -0
  183. package/lib/src/app/transcripts/TranscriptsGrid.d.ts +21 -0
  184. package/lib/src/app/transcripts/TranscriptsPanel.d.ts +2 -0
  185. package/lib/src/app/transcripts/columnSizing/index.d.ts +3 -0
  186. package/lib/src/app/transcripts/columnSizing/types.d.ts +22 -0
  187. package/lib/src/app/transcripts/columnSizing/useColumnSizing.d.ts +34 -0
  188. package/lib/src/app/transcripts/columns.d.ts +37 -0
  189. package/lib/src/app/transcripts/constants.d.ts +35 -0
  190. package/lib/src/app/types.d.ts +111 -0
  191. package/lib/src/app/utils/arrow.d.ts +2 -0
  192. package/lib/src/app/utils/arrowHelpers.d.ts +4 -0
  193. package/lib/src/app/utils/autosizeTextarea.d.ts +5 -0
  194. package/lib/src/app/utils/refs.d.ts +6 -0
  195. package/lib/src/app/utils/results.d.ts +17 -0
  196. package/lib/src/app/utils/router.d.ts +1 -0
  197. package/lib/src/app/utils/scan.d.ts +12 -0
  198. package/lib/src/app/utils/transcript.d.ts +29 -0
  199. package/lib/src/app/utils/useScansDir.d.ts +8 -0
  200. package/lib/src/app/utils/useTranscriptsDir.d.ts +8 -0
  201. package/lib/src/app/validation/ValidationPanel.d.ts +2 -0
  202. package/lib/src/app/validation/components/CopyMoveCasesModal.d.ts +24 -0
  203. package/lib/src/app/validation/components/ValidationBulkActions.d.ts +16 -0
  204. package/lib/src/app/validation/components/ValidationCaseCard.d.ts +23 -0
  205. package/lib/src/app/validation/components/ValidationCaseEditor.d.ts +25 -0
  206. package/lib/src/app/validation/components/ValidationCaseLabelsEditor.d.ts +20 -0
  207. package/lib/src/app/validation/components/ValidationCasePredicateSelector.d.ts +19 -0
  208. package/lib/src/app/validation/components/ValidationCaseTargetEditor.d.ts +13 -0
  209. package/lib/src/app/validation/components/ValidationCasesList.d.ts +19 -0
  210. package/lib/src/app/validation/components/ValidationFilterBar.d.ts +14 -0
  211. package/lib/src/app/validation/components/ValidationSetSelector.d.ts +23 -0
  212. package/lib/src/app/validation/components/ValidationSplitSelector.d.ts +23 -0
  213. package/lib/src/app/validation/components/ValidationSummary.d.ts +11 -0
  214. package/lib/src/app/validation/hooks/useTranscriptsByIds.d.ts +13 -0
  215. package/lib/src/app/validation/utils.d.ts +55 -0
  216. package/lib/src/debugging/navigationDebugging.d.ts +8 -0
  217. package/lib/src/icons.d.ts +153 -0
  218. package/lib/src/index.d.ts +5 -0
  219. package/lib/src/main.d.ts +6 -0
  220. package/lib/src/query/column.d.ts +23 -0
  221. package/lib/src/query/conditionBuilder.d.ts +29 -0
  222. package/lib/src/query/index.d.ts +96 -0
  223. package/lib/src/query/transcriptColumns.d.ts +32 -0
  224. package/lib/src/query/types.d.ts +62 -0
  225. package/lib/src/router/activities.d.ts +11 -0
  226. package/lib/src/router/url.d.ts +80 -0
  227. package/lib/src/state/componentStateAdapter.d.ts +2 -0
  228. package/lib/src/state/userSettings.d.ts +28 -0
  229. package/lib/src/test/objectFactories.d.ts +4 -0
  230. package/lib/src/test/setup-msw.d.ts +1 -0
  231. package/lib/src/test/test-utils.d.ts +7 -0
  232. package/lib/src/theme/bootstrap.d.ts +6 -0
  233. package/lib/src/theme/resolveTheme.d.ts +19 -0
  234. package/lib/src/types/api-types.d.ts +50 -0
  235. package/lib/src/types/generated.d.ts +5182 -0
  236. package/lib/src/types/json-value.d.ts +12 -0
  237. package/lib/styles/index.css +10953 -0
  238. package/package.json +2 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AsciinemaPlayerImpl-6ZAkt1g5.js","names":["clamp","create","ret","startTransition"],"sources":["../../../node_modules/.pnpm/asciinema-player@3.15.1/node_modules/asciinema-player/dist/logging--P0CsEu_.js","../../../node_modules/.pnpm/asciinema-player@3.15.1/node_modules/asciinema-player/dist/core-DnNOMtZn.js","../../../node_modules/.pnpm/asciinema-player@3.15.1/node_modules/asciinema-player/dist/opts-BtLxsM_6.js","../../../node_modules/.pnpm/asciinema-player@3.15.1/node_modules/asciinema-player/dist/index.js","../../../packages/react/src/components/AsciinemaPlayerImpl.tsx"],"sourcesContent":["function parseNpt(time) {\n if (typeof time === \"number\") {\n return time;\n } else if (typeof time === \"string\") {\n return time.split(\":\").reverse().map(parseFloat).reduce((sum, n, i) => sum + n * Math.pow(60, i));\n } else {\n return undefined;\n }\n}\nfunction debounce(f, delay) {\n let timeout;\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n clearTimeout(timeout);\n timeout = setTimeout(() => f.apply(this, args), delay);\n };\n}\nfunction throttle(f, interval) {\n let enableCall = true;\n return function () {\n if (!enableCall) return;\n enableCall = false;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n f.apply(this, args);\n setTimeout(() => enableCall = true, interval);\n };\n}\n\nconst FULL_HEX_COLOR_REGEX = /^#[0-9a-f]{6}$/;\nconst SHORT_HEX_COLOR_REGEX = /^#[0-9a-f]{3}$/;\nfunction normalizeHexColor(color) {\n let fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n if (typeof color !== \"string\") return fallback;\n const normalized = color.trim().toLowerCase();\n if (FULL_HEX_COLOR_REGEX.test(normalized)) {\n return normalized;\n }\n if (SHORT_HEX_COLOR_REGEX.test(normalized)) {\n return `#${normalized[1]}${normalized[1]}${normalized[2]}${normalized[2]}${normalized[3]}${normalized[3]}`;\n }\n return fallback;\n}\nfunction lerpOklab(t, c1, c2) {\n return [c1[0] + t * (c2[0] - c1[0]), c1[1] + t * (c2[1] - c1[1]), c1[2] + t * (c2[2] - c1[2])];\n}\nfunction hexToOklab(hex) {\n const [r, g, b] = hexToSrgb(hex).map(srgbToLinear);\n const l = 0.4122214708 * r + 0.5363325363 * g + 0.0514459929 * b;\n const m = 0.2119034982 * r + 0.6806995451 * g + 0.1073969566 * b;\n const s = 0.0883024619 * r + 0.2817188376 * g + 0.6299787005 * b;\n const l_ = Math.cbrt(l);\n const m_ = Math.cbrt(m);\n const s_ = Math.cbrt(s);\n return [0.2104542553 * l_ + 0.793617785 * m_ - 0.0040720468 * s_, 1.9779984951 * l_ - 2.428592205 * m_ + 0.4505937099 * s_, 0.0259040371 * l_ + 0.7827717662 * m_ - 0.808675766 * s_];\n}\nfunction oklabToHex(lab) {\n const rgb = oklabToSrgb(lab);\n if (isSrgbInGamut(rgb)) return srgbToHex(rgb);\n const [L, C, h] = oklabToOklch(lab);\n let low = 0;\n let high = C;\n let best = [L, 0, h];\n for (let i = 0; i < 24; i += 1) {\n const mid = (low + high) / 2;\n const candidate = [L, mid, h];\n const candidateRgb = oklabToSrgb(oklchToOklab(candidate));\n if (isSrgbInGamut(candidateRgb)) {\n low = mid;\n best = candidate;\n } else {\n high = mid;\n }\n }\n return srgbToHex(oklabToSrgb(oklchToOklab(best)));\n}\nfunction oklabToSrgb(lab) {\n const L = clamp(lab[0], 0, 1);\n const a = lab[1];\n const b = lab[2];\n const l_ = L + 0.3963377774 * a + 0.2158037573 * b;\n const m_ = L - 0.1055613458 * a - 0.0638541728 * b;\n const s_ = L - 0.0894841775 * a - 1.291485548 * b;\n const l = l_ ** 3;\n const m = m_ ** 3;\n const s = s_ ** 3;\n const r = 4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s;\n const g = -1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s;\n const blue = -0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s;\n return [linearToSrgb(r), linearToSrgb(g), linearToSrgb(blue)];\n}\nfunction oklabToOklch(_ref) {\n let [L, a, b] = _ref;\n return [L, Math.hypot(a, b), Math.atan2(b, a)];\n}\nfunction oklchToOklab(_ref2) {\n let [L, C, h] = _ref2;\n return [L, C * Math.cos(h), C * Math.sin(h)];\n}\nfunction hexToSrgb(hex) {\n return [Number.parseInt(hex.slice(1, 3), 16) / 255, Number.parseInt(hex.slice(3, 5), 16) / 255, Number.parseInt(hex.slice(5, 7), 16) / 255];\n}\nfunction srgbToHex(rgb) {\n const toHex = value => {\n const byte = Math.round(clamp(value, 0, 1) * 255);\n return byte.toString(16).padStart(2, \"0\");\n };\n return `#${toHex(rgb[0])}${toHex(rgb[1])}${toHex(rgb[2])}`;\n}\nfunction srgbToLinear(c) {\n if (c <= 0.04045) return c / 12.92;\n return ((c + 0.055) / 1.055) ** 2.4;\n}\nfunction linearToSrgb(c) {\n if (c <= 0.0031308) return c * 12.92;\n return 1.055 * c ** (1 / 2.4) - 0.055;\n}\nfunction isSrgbInGamut(_ref3) {\n let [r, g, b] = _ref3;\n return r >= 0 && r <= 1 && g >= 0 && g <= 1 && b >= 0 && b <= 1;\n}\nfunction clamp(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n\nclass DummyLogger {\n log() {}\n debug() {}\n info() {}\n warn() {}\n error() {}\n}\nclass PrefixedLogger {\n constructor(logger, prefix) {\n this.logger = logger;\n this.prefix = prefix;\n }\n log(message) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n this.logger.log(`${this.prefix}${message}`, ...args);\n }\n debug(message) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n this.logger.debug(`${this.prefix}${message}`, ...args);\n }\n info(message) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n this.logger.info(`${this.prefix}${message}`, ...args);\n }\n warn(message) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n this.logger.warn(`${this.prefix}${message}`, ...args);\n }\n error(message) {\n for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n args[_key5 - 1] = arguments[_key5];\n }\n this.logger.error(`${this.prefix}${message}`, ...args);\n }\n}\n\nexport { DummyLogger as D, PrefixedLogger as P, debounce as d, hexToOklab as h, lerpOklab as l, normalizeHexColor as n, oklabToHex as o, parseNpt as p, throttle as t };\n","import { n as normalizeHexColor, P as PrefixedLogger, p as parseNpt } from './logging--P0CsEu_.js';\n\nlet wasm;\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n heap[idx] = obj;\n return idx;\n}\nfunction debugString(val) {\n // primitive types\n const type = typeof val;\n if (type == 'number' || type == 'boolean' || val == null) {\n return `${val}`;\n }\n if (type == 'string') {\n return `\"${val}\"`;\n }\n if (type == 'symbol') {\n const description = val.description;\n if (description == null) {\n return 'Symbol';\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == 'function') {\n const name = val.name;\n if (typeof name == 'string' && name.length > 0) {\n return `Function(${name})`;\n } else {\n return 'Function';\n }\n }\n // objects\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = '[';\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for (let i = 1; i < length; i++) {\n debug += ', ' + debugString(val[i]);\n }\n debug += ']';\n return debug;\n }\n // Test for built-in\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches && builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n // Failed to match the standard '[object ClassName]'\n return toString.call(val);\n }\n if (className == 'Object') {\n // we're a user defined class or Object\n // JSON.stringify avoids problems with cycles, and is generally much\n // easier than looping through ownProperties of `val`.\n try {\n return 'Object(' + JSON.stringify(val) + ')';\n } catch (_) {\n return 'Object';\n }\n }\n // errors\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\\n${val.stack}`;\n }\n // TODO we could test for more things here, like `Set`s and `Map`s.\n return className;\n}\nfunction dropObject(idx) {\n if (idx < 132) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\nfunction getArrayU32FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint32ArrayMemory0().subarray(ptr / 4, ptr / 4 + len);\n}\nlet cachedDataViewMemory0 = null;\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return decodeText(ptr, len);\n}\nlet cachedUint32ArrayMemory0 = null;\nfunction getUint32ArrayMemory0() {\n if (cachedUint32ArrayMemory0 === null || cachedUint32ArrayMemory0.byteLength === 0) {\n cachedUint32ArrayMemory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32ArrayMemory0;\n}\nlet cachedUint8ArrayMemory0 = null;\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\nfunction getObject(idx) {\n return heap[idx];\n}\nlet heap = new Array(128).fill(undefined);\nheap.push(undefined, null, true, false);\nlet heap_next = heap.length;\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === undefined) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr = malloc(buf.length, 1) >>> 0;\n getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr;\n }\n let len = arg.length;\n let ptr = malloc(len, 1) >>> 0;\n const mem = getUint8ArrayMemory0();\n let offset = 0;\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 0x7F) break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;\n const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);\n const ret = cachedTextEncoder.encodeInto(arg, view);\n offset += ret.written;\n ptr = realloc(ptr, len, offset, 1) >>> 0;\n }\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\nlet cachedTextDecoder = new TextDecoder('utf-8', {\n ignoreBOM: true,\n fatal: true\n});\ncachedTextDecoder.decode();\nconst MAX_SAFARI_DECODE_BYTES = 2146435072;\nlet numBytesDecoded = 0;\nfunction decodeText(ptr, len) {\n numBytesDecoded += len;\n if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {\n cachedTextDecoder = new TextDecoder('utf-8', {\n ignoreBOM: true,\n fatal: true\n });\n cachedTextDecoder.decode();\n numBytesDecoded = len;\n }\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\nconst cachedTextEncoder = new TextEncoder();\nif (!('encodeInto' in cachedTextEncoder)) {\n cachedTextEncoder.encodeInto = function (arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n };\n}\nlet WASM_VECTOR_LEN = 0;\nconst VtFinalization = typeof FinalizationRegistry === 'undefined' ? {\n register: () => {},\n unregister: () => {}\n} : new FinalizationRegistry(ptr => wasm.__wbg_vt_free(ptr >>> 0, 1));\nclass Vt {\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(Vt.prototype);\n obj.__wbg_ptr = ptr;\n VtFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n VtFinalization.unregister(this);\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_vt_free(ptr, 0);\n }\n /**\n * @param {string} s\n * @returns {any}\n */\n feed(s) {\n const ptr0 = passStringToWasm0(s, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len0 = WASM_VECTOR_LEN;\n const ret = wasm.vt_feed(this.__wbg_ptr, ptr0, len0);\n return takeObject(ret);\n }\n /**\n * @param {number} cols\n * @param {number} rows\n * @returns {any}\n */\n resize(cols, rows) {\n const ret = wasm.vt_resize(this.__wbg_ptr, cols, rows);\n return takeObject(ret);\n }\n /**\n * @returns {Uint32Array}\n */\n getSize() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.vt_getSize(retptr, this.__wbg_ptr);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var v1 = getArrayU32FromWasm0(r0, r1).slice();\n wasm.__wbindgen_export3(r0, r1 * 4, 4);\n return v1;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n /**\n * @param {number} row\n * @param {boolean} cursor_on\n * @returns {any}\n */\n getLine(row, cursor_on) {\n const ret = wasm.vt_getLine(this.__wbg_ptr, row, cursor_on);\n return takeObject(ret);\n }\n /**\n * @returns {any}\n */\n getCursor() {\n const ret = wasm.vt_getCursor(this.__wbg_ptr);\n return takeObject(ret);\n }\n}\nif (Symbol.dispose) Vt.prototype[Symbol.dispose] = Vt.prototype.free;\n\n/**\n * @param {number} cols\n * @param {number} rows\n * @param {number} scrollback_limit\n * @param {boolean} bold_is_bright\n * @returns {Vt}\n */\nfunction create(cols, rows, scrollback_limit, bold_is_bright) {\n const ret = wasm.create(cols, rows, scrollback_limit, bold_is_bright);\n return Vt.__wrap(ret);\n}\nconst EXPECTED_RESPONSE_TYPES = new Set(['basic', 'cors', 'default']);\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n } catch (e) {\n const validResponse = module.ok && EXPECTED_RESPONSE_TYPES.has(module.type);\n if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n } else {\n throw e;\n }\n }\n }\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n if (instance instanceof WebAssembly.Instance) {\n return {\n instance,\n module\n };\n } else {\n return instance;\n }\n }\n}\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbg___wbindgen_debug_string_adfb662ae34724b6 = function (arg0, arg1) {\n const ret = debugString(getObject(arg1));\n const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_export, wasm.__wbindgen_export2);\n const len1 = WASM_VECTOR_LEN;\n getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);\n getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);\n };\n imports.wbg.__wbg___wbindgen_throw_dd24417ed36fc46e = function (arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbg_new_13317ed16189158e = function () {\n const ret = new Array();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_4ceb6a766bf78b04 = function () {\n const ret = new Object();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_set_3f1d0b984ed272ed = function (arg0, arg1, arg2) {\n getObject(arg0)[takeObject(arg1)] = takeObject(arg2);\n };\n imports.wbg.__wbg_set_8b6a9a61e98a8881 = function (arg0, arg1, arg2) {\n getObject(arg0)[arg1 >>> 0] = takeObject(arg2);\n };\n imports.wbg.__wbindgen_cast_2241b6af4c4b2941 = function (arg0, arg1) {\n // Cast intrinsic for `Ref(String) -> Externref`.\n const ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_cast_4625c577ab2ec9ee = function (arg0) {\n // Cast intrinsic for `U64 -> Externref`.\n const ret = BigInt.asUintN(64, arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_cast_d6cd19b81560fd6e = function (arg0) {\n // Cast intrinsic for `F64 -> Externref`.\n const ret = arg0;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_object_clone_ref = function (arg0) {\n const ret = getObject(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_object_drop_ref = function (arg0) {\n takeObject(arg0);\n };\n return imports;\n}\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedDataViewMemory0 = null;\n cachedUint32ArrayMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n return wasm;\n}\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n if (typeof module !== 'undefined') {\n if (Object.getPrototypeOf(module) === Object.prototype) {\n ({\n module\n } = module);\n } else {\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead');\n }\n }\n const imports = __wbg_get_imports();\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n const instance = new WebAssembly.Instance(module, imports);\n return __wbg_finalize_init(instance, module);\n}\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n if (typeof module_or_path !== 'undefined') {\n if (Object.getPrototypeOf(module_or_path) === Object.prototype) {\n ({\n module_or_path\n } = module_or_path);\n } else {\n console.warn('using deprecated parameters for the initialization function; pass a single object instead');\n }\n }\n const imports = __wbg_get_imports();\n if (typeof module_or_path === 'string' || typeof Request === 'function' && module_or_path instanceof Request || typeof URL === 'function' && module_or_path instanceof URL) {\n module_or_path = fetch(module_or_path);\n }\n const {\n instance,\n module\n } = await __wbg_load(await module_or_path, imports);\n return __wbg_finalize_init(instance, module);\n}\n\nvar exports = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Vt: Vt,\n create: create,\n default: __wbg_init,\n initSync: initSync\n});\n\nconst base64codes = [62,0,0,0,63,52,53,54,55,56,57,58,59,60,61,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,0,0,0,0,0,0,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51];\n\n function getBase64Code(charCode) {\n return base64codes[charCode - 43];\n }\n\n function base64Decode(str) {\n let missingOctets = str.endsWith(\"==\") ? 2 : str.endsWith(\"=\") ? 1 : 0;\n let n = str.length;\n let result = new Uint8Array(3 * (n / 4));\n let buffer;\n\n for (let i = 0, j = 0; i < n; i += 4, j += 3) {\n buffer =\n getBase64Code(str.charCodeAt(i)) << 18 |\n getBase64Code(str.charCodeAt(i + 1)) << 12 |\n getBase64Code(str.charCodeAt(i + 2)) << 6 |\n getBase64Code(str.charCodeAt(i + 3));\n result[j] = buffer >> 16;\n result[j + 1] = (buffer >> 8) & 0xFF;\n result[j + 2] = buffer & 0xFF;\n }\n\n return result.subarray(0, result.length - missingOctets);\n }\n\n var vtWasmModule = base64Decode(\"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CAgJCgsODA4NDgsgAkGoAWpBASABKAIAIAEoAgRB1NzAABCBASABIAIpA6gBNwIAIABBADoAAAwYCyACQbABakEBIAEoAgAgASgCBEHk3MAAEIEBIAEgAikDsAE3AgAgAEEBOgAADBcLIAJBuAFqQQEgASgCACABKAIEQfTcwAAQgQEgASACKQO4ATcCACAAQQI6AAAMFgsgAkHAAWpBASABKAIAIAEoAgRBhN3AABCBASABIAIpA8ABNwIAIABBAzoAAAwVCyACQcgBakEBIAEoAgAgASgCBEGU3cAAEIEBIAEgAikDyAE3AgAgAEEEOgAADBQLIAJB0AFqQQEgASgCACABKAIEQaTdwAAQgQEgASACKQPQATcCACAAQQU6AAAMEwsgAkHYAWpBASABKAIAIAEoAgRBtN3AABCBASABIAIpA9gBNwIAIABBBjoAAAwSCyACQeABakEBIAEoAgAgASgCBEHE3cAAEIEBIAEgAikD4AE3AgAgAEEHOgAADBELIAJB6AFqQQEgASgCACABKAIEQdTdwAAQgQEgASACKQPoATcCACAAQQg6AAAMEAsgAkHwAWpBASABKAIAIAEoAgRB5N3AABCBASABIAIpA/ABNwIAIABBCToAAAwPCyACQfgBakEBIAEoAgAgASgCBEH03cAAEIEBIAEgAikD+AE3AgAgAEEKOgAADA4LIAJBgAJqQQEgASgCACABKAIEQYTewAAQgQEgASACKQOAAjcCACAAQQs6AAAMDQsgAkGIAmpBASABKAIAIAEoAgRBlN7AABCBASABIAIpA4gCNwIAIABBDDoAAAwMCyACQZACakEBIAEoAgAgASgCBEGk3sAAEIEBIAEgAikDkAI3AgAgAEENOgAADAsLAkACQCADQR5rQf//A3FBCE8EQCADQSZrDgIBCAILIAJBCGpBASABKAIAIAEoAgRBxODAABCBASABIAIpAwg3AgAgACADQR5rOgACIABBDjsAAAwMCwJAIAEoAgQiA0ECTwRAIAJBmAFqIAEoAgBBEGoQaSACKAKYASIDDQEgASgCBCEDCyACQegAakEBIAEoAgAgA0G03sAAEIEBIAIoAmwhAyACKAJoIQQMDQsCQAJAAkAgAigCnAFBAUcNACADLwEAQQJrDgQBAAACAAsgAkHwAGpBASABKAIAIAEoAgRBhN/AABCB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ACABQQRqIQwgAkFAayENIAJBJWohDiACQRxqIQ8gASgCJCEFIAEoAhQhECABKAIQIQMCQAJAAn8CQANAIAEoAgAhBiABQYCAgIB4NgIAIAEoAgQhCwJAAkACQAJAAkAgBkGAgICAeEcEQCABKQIIIREgCyEHDAELAkAgAyAQRgRAQYCAgIB4IQYMAQsgASADQRBqIgg2AhAgAykCCCERIAMoAgQhByADKAIAIQYgCCEDC0GAgICAeCALEKMBIAZBgICAgHhGDQELIAIgBzYCDCACIAY2AgggAiARNwIQIBFCIIghEkF/IAUgEaciBEcgBCAFSxtB/wFxDgICAwELQYCAgIB4IAcQowEgAEGAgICAeDYCACABQYCAgIB4NgIADAcLAkAgEqdBAXENACAFIAQgByAEEDRrIgMgAyAFSRsiAyAESw0AIAIgAzYCECADIQQLAn9BgICAgHggBCAFTQ0AGgJAAkAgByAEIAVBuNrAABCQASgCBEUEQCACQThqIgMgAkEIaiIIIAVBAWsQPyACQTBqIANBCGooAgA2AgAgAiACKQI4NwMoIAItABQhBCADQRBqIAIoAgwgAigCECIHIAdBAWtB2NrAABCQASIHQRBqLwEAOwEAIAJCoICAgBA3AjggAiAHKQIINwJAIAggA0Ho2sAAEFcgAiAEOgA0IAItABRBAXFFDQEMAgsgAkE4aiIDIAJBCGogBRA/IAJBMGogA0EIaigCADYCACACIAIpAjg3AyggAiACLQAUIgM6ADQgAw0BCyACQShqEIsBCyACKAIwBEAgAkFAayACQTRqKAIANgIAIAJBAToAFCACIAIpAiw3AzggAigCKAwBCyACKAIoIAIoAixBBEEUEJ8BQYCAgIB4CyEDQYCAgIB4IAsQowEgASADNgIAIAwgAikDODcCACAMQQhqIAJBQGsoAgA2AgAgAEEIaiACQRBqKQIANwIAIAAgAikCCDcCAAwGCyAAIBE3AgggACAHNgIEIAAgBjYCAAwFCwJAIAMgEEcEQCABIANBEGoiCDYCECADKAIAIgZBgICAgHhHDQELIAJBADsAQCACQQI6ADwgAkECOgA4IAJBCGoiASAFIAJBOGoQQSAAIAIpAgg3AgAgAkEAOgAUIABBCGogAUEIaikCADcCAAwFCyADQQxqKAIAIQkgDyADKQIENwIAIA9BCGogCTYCACACIAY2AhggBSAEayIJRQ0BIBKnQQFxRQRAIAJBADsAQCACQQI6ADwgAkECOgA4IAJBCGogBSACQThqEEEMAgsgAi0AJEUEQCACQRhqEIsBCyACKAIcIQMgAigCICIKIAlNBEAgAkEIaiIEIAMgChCAAQJAIAItACQiBg0AIAJBADoAFCACKAIQIAVPDQAgAkEAOwBAIAJBAjoAPCACQQI6ADggBCAFIAJBOGoQQQsgAigCGCADQQRBFBCfASAGRQ0EQYCAgIB4IAsQowEgAUEIaiACQRBqKQIANwIAIAEgAikCCDcCAEGAgICAeCACEKMBIAghAwwBCwsgAyAKIAlB+NnAABCQASgCBEUEQCANQQhqIAcgBCAEQQFrQYjawAAQkAEiCEEQai8BADsBACANIAgpAgg3AgAgAkKggICAEDcCOCACQQhqIAJBOGpBmNrAABBXIAlBAWshCQsgCSAKTQRAIAJBCGogAyAJEIABIAIoAhghBiADIAogCRCIASAGQYCAgIB4Rg0DIAogCiAJayIIIAggCksbIQQgAi0AJAwCCyAJIApBqNrAABCzAQALIAJBKmogDkECai0AADoAACACIA4vAAA7ASggAigCICEEIAIoAhwhAyACLQAkCyEIQYCAgIB4IAsQowEgASAIOgAMIAEgBDYCCCABIAM2AgQgASAGNgIAIAEgAi8BKDsADSABQQ9qIAJBKmotAAA6AAALIAAgAikCCDcCACAAQQhqIAJBEGopAgA3AgALIAJB0ABqJAAL5QoCEH8BfiMAQZABayICJAAgACgCbCIFIAAoAhwiBmsiAUEAIAEgACgCFCIHIAZrIAVqTRshDSAFIAdqIQMgB0EEdCIBIAAoAhAiCmohDyAAKAIYIQwgACgCaCEOIAAoAqABIQsgACgCnAEhCCAKIQQDQAJAIAMgBkYNACABRQ0AIAkgDGpBACAELQAMIhAbIQkgA0EBayEDIAFBEGshASAEQRBqIQQgDSAQQQFzaiENDAELCyAIIAxHBEBBACEFIABBADYCFCACIAg2AjggAkEANgI0IAIgBzYCMCACIABBDGoiDDYCLCACIA82AiggAiAKNgIkIAJBgICAgHg2AhQgAkHIAGogAkEUaiIBEBACfyACKAJIQYCAgIB4RgRAIAEQoQFBBCEEQQAMAQsgAkEIakEE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QQlJDQEgA0UEQCABIQMDQCADIAVqIgEgAyACEGogASEDIAIgACACayIATQ0ACwwBCwtBACAAQQR0IgNrIQUDQCABIAVqIAEgABBqIAEgA2ohASACIABrIgIgAE8NAAsMAQsLIAEgAEEEdCIFayIDIAJBBHQiBmohByAAIAJLDQEgBEEQaiIAIAMgBRAWGiADIAEgBhASIAcgACAFEBYaDAILIARBCGoiByABIABBBHRrIgZBCGopAgA3AwAgBCAGKQIANwMAIAJBBHQhCCACIgUhAQNAIAYgAUEEdGohAwNAIARBGGoiCSADQQhqIgopAgA3AwAgBCADKQIANwMQIAcpAwAhDSADIAQpAwA3AgAgCiANNwIAIAcgCSkDADcDACAEIAQpAxA3AwAgACABSwRAIAMgCGohAyABIAJqIQEMAQsLIAEgAGsiAQRAIAEgBSABIAVJGyEFDAEFIAQpAwAhDSAGQQhqIARBCGoiBykDADcCACAGIA03AgBBASAFIAVBAU0bIQlBASEBA0AgASAJRg0EIAYgAUEEdGoiBSkCACENIAcgBUEIaiIKKQIANwMAIAQgDTcDACABIAJqIQMDQCAEQRhqIgsgBiADQQR0aiIIQQhqIgwpAgA3AwAgBCAIKQIANwMQIAcpAwAhDSAIIAQpAwA3AgAgDCANNwIAIAcgCykDADcDACAEIAQpAxA3AwAgACADSwRAIAIgA2ohAwwBCyADIABrIgMgAUcNAAsgBCkDACENIAogBykDADcCACAFIA03AgAgAUEBaiEBDAALAAsACwALIARBEGoiACABIAYQFhogByADIAUQEiADIAAgBhAWGgsgBEGQAWokAAuQBQEIfwJAIAJBEEkEQCAAIQMMAQsCQEEAIABrQQNxIgYgAGoiBSAATQ0AIAZBAWsgACEDIAEhBCAGBEAgBiEHA0AgAyAELQAAOgAAIARBAWohBCADQQFqIQMgB0EBayIHDQALC0EHSQ0AA0AgAyAELQAAOgAAIANBAWogBEEBai0AADoAACADQQJqIARBAmotAAA6AAAgA0EDaiAEQQNqLQAAOgAAIANBBGogBEEEai0AADoAACADQQVqIARBBWotAAA6AAAgA0EGaiAEQQZqLQAAOgAAIANBB2ogBEEHai0AADoAACAEQQhqIQQgBSADQQhqIgNHDQALCyACIAZr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AygCHCIAIAEgAhAlIANBKGogAEHgAGooAgAgAEHkAGooAgAQIyADQRBqIAAQJCADIAMpAxA3AjQgA0EIaiADKAIsIAMoAjAQWyADKAIMIQAgAygCCEEBcQRAIAMgADYCPCADQTxqQezCwAAQQgALIANBKGoQbiADKAIgIAMoAiQQsgEgA0FAayQAIAALmQEBA38gAUFsbCECIAFB/////wNxIQMgACABQRRsaiEBQQAhAAJAA0AgAkUNAQJAIAFBFGsiBCgCAEEgRw0AIAFBEGsoAgBBAUcNACABQQxrLQAAQQJHDQAgAUEIay0AAEECRw0AIAFBBGstAAANACABQQNrLQAAQR9xDQAgAkEUaiECIABBAWohACAEIQEMAQsLIAAhAwsgAwuxAQECfyMAQRBrIgIkAAJAIAFFDQAgAUEDakECdiEBAkAgAEEETQRAIAFBAWsiA0GAAkkNAQsgAkGsssEAKAIANgIIIAEgACACQQhqQaiqwQBBBEEFEE8hAEGsssEAIAIoAgg2AgAMAQsgAkGsssEANgIEIAIgA0ECdEGsqsEAaiIDKAIANgIMIAEgACACQQxqIAJBBGpBBkEHEE8hACADIAIoAgw2AgALIAJBEGokACAAC6ABAQN/IwBBEGsiBSQAIAVBCGogACABIAJB4M7AABBnIAUoAgwiBiADIAIgAWsiByADIAdJGyIDTwRAIAYgA2siBiAFKAIIIAZBBHRqIAMQFSAAIAEgASADaiAEECogAQRAIAAgAUEBa0HwzsAAEGJBADoADAsgACACQQFrQYDPwAAQYkEAOgAMIAVBEGokAA8LQczJwABBIUHwycAAEHEAC6gBAQF/IwBBQGoiAyQAIANBCGogACgCABACIAMoAgghACADIAMoAgw2AgQgAyAANgIAIANBATYCMCADQQI2AhggA0GYqsEANgIUIANCATcCICADIAMoAgQiADYCPCADIAMoAgA2AjggAyAANgI0IAMgA0E0ajYCLCADIANBLGo2AhwgASACIANBFGoQFyADKAI0IgEEQCADKAI4QQEgARA4CyADQUBrJAALpAEBAX8jAEEQayIDJAACQCAARQ0AIAJFDQACQCABQQRNBEAgAkEDakECdkEBayIBQYACSQ0BCyADQayywQAoAgA2AgggACADQQhqQaiqwQBBAhAxQayywQAgAygC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BDYCBCAAIAE2AgALOAACQCABaUEBRw0AQYCAgIB4IAFrIABJDQAgAARAQeyywQAtAAAaIAEgABA1IgFFDQELIAEPCwALOAACQCACQYCAxABGDQAgACACIAEoAhARAgBFDQBBAQ8LIANFBEBBAA8LIAAgA0EAIAEoAgwRAwALLQEBfyABIAAoAgBPBH8gACgCBCECIAAtAAhFBEAgASACTQ8LIAEgAkkFQQALC3ABA38gACgCACIEIAAoAggiBUYEQCMAQRBrIgMkACADQQhqIAAgBEEBQQJBCBAmIAMoAggiBEGBgICAeEcEQCADKAIMGiAEIAIQrgEACyADQRBqJAALIAAgBUEBajYCCCAAKAIEIAVBA3RqIAE3AQALNAEBfyAAKAIIIgMgACgCAEYEQCAAIAIQawsgACADQQFqNgIIIAAoAgQgA0ECdGogATYCAAsuAQF/IwBBEGsiAiQAIAJBCGogASAAEIwBIAIoAggiAARAIAJBEGokACAADwsACzcBAX8jAEEgayIBJAAgAUEANgIYIAFBATYCDCABQYzpwAA2AgggAUIENwIQIAFBCGogABCKAQALKgEBfyACIAMQNSIEBEAgBCAAIAEgAyABIANJGxAWGiAAIAIgARA4CyAECysAIAIgA0kEQCADIAIgBBC0AQALIAAgAiADazYCBCAAIAEgA0EUbGo2AgALLwEBfyAAIAIQjgEgACgCBCAAKAIIIgNBFGxqIAEgAkEUbBAWGiAAIAIgA2o2AggLKwAgASADSwRAIAEgAyAEELQBAAsgACADIAFrNgIEIAAgAiABQQR0ajYCAAsvAAJAAkAgA2lBAUcNAEGAgICAeCADayABSQ0AIAAgASADIAIQfiIADQELAAsgAAsuAANAIAEEQCAAKAIAIABBBGooAgBBBEEUEJ8BIAFBAWshASAAQRBqIQAMAQsLCzIBAX8gACgCCCECIAEgACgCAEECai0AABCbASEBIAAoAgQgAiABEAEgACACQQFqNgIICyoAIAAgACgCaCABaiIBIAAoApwBIgBBAWsgACABSxtBACABQQBOGzYCaAszAQJ/IAAgACgCqAEiAiAAKAKsAUEBaiIDIAEgAEGyAWoQNiAAKAJgIAAoAmQgAiADEFMLMwECfyAAIAAoAqgBIgIgACgCrAFBAWoiAyABIABBsgFqEB0gACgCYCAAKAJkIAIgAxBTCyoAIAEgAkkEQEGkyMAAQSNBvMnAABBxAAsgAiAAIAJBFGxqIAEgAmsQGQs1ACAAIAApAnQ3AmggACAAKQF8NwGyASAAIAAvAYYBOwG+ASAAQboBaiAAQYQBai8BADsBAAvsAQICfwF+IwBBEGsiAiQAIAJBATsBDCACIAE2AgggAiAANgIEIwBBEGsiASQAIAJBBGoiACkCACEEIAEgADYCDCABIAQ3AgQjAEEQayIAJAAgAUEEaiIBKAIAIgIoAgwhAwJAAkACQAJAIAIoAgQOAgABAgsgAw0BQQEhAkEAIQMMAgsgAw0AIAIoAgAiAigCBCEDIAIoAgAhAgwBCyAAQYCAgIB4NgIAIAAgATYCDCABKAIIIgEtAAkaIABBGyABLQAIEEoACyAAIAM2AgQgACACNgIAIAEoAggiAS0ACRogAEEcIAEtAAgQSgALKwECfwJAIAAoAgQgACgCCCIBEDQiAkUNACABIAJJDQAgACABIAJrNgIICwsmACACBEBB7LLBAC0AABogASACEDUhAQsgACACNgIEIAAgATYCAAsjAQF/IAEgACgCACAAKAIIIgJrSwRAIAAgAiABQQRBEBBtCwsjAQF/IAEgACgCACAAKAIIIgJrSwRAIAAgAiABQQRBFBBtCwslACAAQQE2AgQgACABKAIEIAEoAgBrQQR2IgE2AgggACABNgIACxsAIAEgAk0EQCACIAEgAxBLAAsgACACQRRsagsgACABIAJNBEAgAiABQeTjwAAQSwALIAAgAmpBAToAAAsbACABIAJNBEAgAiABIAMQSwALIAAgAkEEdGoLAwAACwMAAAsDAAALAwAACwMAAAsDAAALGgBB7LLBAC0AABpBBCAAEDUiAARAIAAPCwALIQAgAEUEQEGc68AAQTIQuQEACyAAIAIgAyABKAIQEQEACxYAIAFBAXFFBEAgALgQCQ8LIACtEAoLRgEBfyAAIAAoAgBBAWsiATYCACABRQRAIABBDGoQRwJAIABBf0YNACAAIAAoAgRBAWsiATYCBCABDQAgAEEEQZwGEDgLCwsfACAARQRAQZzrwABBMhC5AQALIAAgAiABKAIQEQIACyEBAX8gACgCECIBIAAoAhQQgwEgACgCDCABQQRBEBCfAQsSACAABEAgASACIAAgA2wQOAsLIQEBfyAAKAIEIgEgACgCCBCDASAAKAIAIAFBBEEQEJ8BCxYAIABBEGoQWCAAKAIAIAAoAgQQowELFAAgACAAKAIAQQFrNgIAIAEQnAELGQAgAEGAgICAeEcEQCAAIAFBBEEUEJ8BCwsUACABBEBBgICAgHggARCjAQsgAQsZACABKAIcQcjlwABBDiABKAIgKAIMEQMACw8AIAIEQCAAIAEgAhA4CwsPACABBEAgACACIAEQOAsLEwAgAARADwtBpKnBAEEbELkBAAsPACAAQYQBTwRAIAAQAwsLEwAgACgCCCAAKAIAQQJBAhCfAQsVACACIAIQpAEaIABBgICAgHg2AgALFAAgACgCACABIAAoAgQoAgwRAgALEAAgASAAKAIEIAAoAggQDws8ACAARQRAIwBBIGsiACQAIABBADYCGCAAQQE2AgwgAEHQxMAANgIIIABCBDcCECAAQQhqIAEQigEACwALFAAgAEEANgIIIABCgICAgBA3AgALEgAgACABQZDNwAAQYkEBOgAMCxAAIAEgACgCACAAKAIEEA8LDgAgAEEANgIAIAEQnAELawEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQejpwAA2AgggA0ICNwIUIAMgA0EEaq1CgICAgOABhDcDKCADIAOtQoCAgIDgAYQ3AyAgAyADQSBqNgIQIANBCGogAhCKAQALawEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQcjpwAA2AgggA0ICNwIUIAMgA0EEaq1CgICAgOABhDcDKCADIAOtQoCAgIDgAYQ3AyAgAyADQSBqNgIQIANBCGogAhCKAQALawEBfyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBAjYCDCADQZzqwAA2AgggA0ICNwIUIAMgA0EEaq1CgICAgOABhDcDKCADIAOtQoCAgIDgAYQ3AyAgAyADQSBqNgIQIANBCGogAhCKAQALDgBB8OXAAEErIAAQcQALCwAgACMAaiQAIwALDgBBv6nBAEHPABC5AQALCQAgACABEAcACw0AIABB9ObAACABEBcLDAAgACABKQIANwMACwoAIAAoAgAQqQELDQAgAEGAgICAeDYCAAsJACAAQQA2AgALBgAgABBYCwUAQYAECwQAQQELBAAgAQsEAEEACwvSbSAAQYCAwAALQB0AAAAEAAAABAAAAB4AAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlRXJyb3IAQb+JwAALAXgAQeCJwAALEP////////////////////8AQYaKwAALDwEAAAAAACAAAAAAAAAAAgBBwIrAAAsg//////////////////////////////////////////8AQaSLwAALCBAAAAAAAAABAEHAuMAACwL/BwBB1LjAAAsHDwD////1/wBBgLnAAAsW////////////////////////////AwBBoLnAAAsd/////////////////////////////////////w8AQf+5wAALGPz//////////////////////////////wBBoLrAAAs+//////////////////////////////////////////////////////////////////////////////////8AQYy7wAALOP////////////////////////////////////////////////////////////////////////9/AEHgu8AAC9EB/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////wMAQcC9wAALJ///////////////////////////////////////////////////DwBBwMDAAAvBI3NyYy9saWIucnMAAAEADwDwGg8AAAAAAOIlAADlJQAAAAAAALDgAACz4AAAAAAAADz7AQBp+wEAAAAAAGr7AQBs+wEAAAAAAIAlAACfJQAAAAAAAAD7AQA7+wEAAAAAAGF0dGVtcHRlZCB0byB0YWtlIG93bmVyc2hpcCBvZiBSdXN0IHZhbHVlIHdoaWxlIGl0IHdhcyBib3Jyb3dlZGJndGV4dGNvZGVwb2ludHNyYXN0ZXJfc3ltYm9sc3ZlY3Rvcl9zeW1ib2xzAEAgEAAKAAAAZgAAABMAAABAIBAACgAAAGcAAAAVAAAAQCAQAAoAAABoAAAAGQAAAEAgEAAKAAAAaQAAABkAAABAIBAACgAAAGoAAAAVAAAAQCAQAAoAAAByAAAANgAAAEAgEAAKAAAAdwAAADYAAABAIBAACgAAAP4AAAAbAAAAQCAQAAoAAAACAQAAHQAAAEAgEAAKAAAAGQEAAC0AAABAIBAACgAAAK8AAAAjAAAAQCAQAAoAAAC5AAAAIwAAAEAgEAAKAAAAzgAAACUAAABAIBAACgAAAMYAAAAlAAAAQCAQAAoAAADzAAAAKQAAAEAgEAAKAAAA2gAAACUAAABAIBAACgAAAN4AAAAWAAAAQCAQAAoAAAD5AAAAHQAAAEAgEAAKAAAAIAEAAC8AAABjYXBhY2l0eSBvdmVyZmxvdwAAADwiEAARAAAAKSBzaG91bGQgYmUgPCBsZW4gKGlzIGluc2VydGlvbiBpbmRleCAoaXMgKSBzaG91bGQgYmUgPD0gbGVuIChpcyAAAABuIhAAFAAAAIIiEAAXAAAAFlUQAAEAAAByZW1vdmFsIGluZGV4IChpcyAAALQiEAASAAAAWCIQABYAAAAWVRAAAQAAAGBhdGAgc3BsaXQgaW5kZXggKGlzIAAAAOAiEAAVAAAAgiIQABcAAAAWVRAAAQAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3VuaWNvZGUtd2lkdGgtMC4xLjE0L3NyYy90YWJsZXMucnMQIxAAZAAAAJEAAAAVAAAAECMQAGQAAACXAAAAGQAAAC9uaXgvc3RvcmUvMjhoeXpmbDMzOGtzNGFtaGE3dnBwbmxicTFzMW5xYXYtcnVzdC1kZWZhdWx0LTEuODUuMC9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2NvcmUvc3JjL2l0ZXIvdHJhaXRzL2l0ZXJhdG9yLnJzAAAAlCMQAH0AAACzBwAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IG1pZCA8PSBzZWxmLmxlbigpL25peC9zdG9yZS8yOGh5emZsMzM4a3M0YW1oYTd2cHBubGJxMXMxbnFhdi1ydXN0LWRlZmF1bHQtMS44NS4wL2xpYi9ydXN0bGliL3NyYy9ydXN0L2xpYnJhcnkvY29yZS9zcmMvc2xpY2UvbW9kLnJzAAAARyQQAHIAAACgDQAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IGsgPD0gc2VsZi5sZW4oKQAAAEckEAByAAAAzQ0AAAkAAAAvbml4L3N0b3JlLzI4aHl6ZmwzMzhrczRhbWhhN3ZwcG5sYnExczFucWF2LXJ1c3QtZGVmYXVsdC0xLjg1LjAvbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvc2xpY2UucnMAACUQAG8AAAChAAAAGQAAAC9uaXgvc3RvcmUvMjhoeXpmbDMzOGtzNGFtaGE3dnBwbmxicTFzMW5xYXYtcnVzdC1kZWZhdWx0LTEuODUuMC9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2FsbG9jL3NyYy92ZWMvbW9kLnJzAAAAgCUQAHEAAAA/CgAAJAAAAEBTEABxAAAAKAIAABEAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9hdnQtMC4xNi4wL3NyYy9idWZmZXIucnMAABQmEABaAAAALQAAABkAAAAUJhAAWgAAAFoAAAANAAAAFCYQAFoAAABeAAAADQAAABQmEABaAAAAYwAAAA0AAAAUJhAAWgAAAGgAAAAdAAAAFCYQAFoAAAB1AAAAJQAAABQmEABaAAAAfwAAACUAAAAUJhAAWgAAAIcAAAAVAAAAFCYQAFoAAACRAAAAJQAAABQmEABaAAAAmAAAABUAAAAUJhAAWgAAAJ0AAAAlAAAAFCYQAFoAAACoAAAAEQAAABQmEABaAAAAswAAACAAAAAUJhAAWgAAALcAAAARAAAAFCYQAFoAAAC5AAAAEQAAABQmEABaAAAAwwAAAA0AAAAUJhAAWgAAAMcAAAARAAAAFCYQAFoAAADKAAAADQAAABQmEABaAAAA9AAAACsAAAAUJhAAWgAAADkBAAAsAAAAFCYQAFoAAAAyAQAAGwAAABQmEABaAAAARQEAABQAAAAUJhAAWgAAAFcBAAAYAAAAFCYQAFoAAABcAQAAGAAAAGFzc2VydGlvbiBmYWlsZWQ6IGxpbmVzLml0ZXIoKS5hbGwofGx8IGwubGVuKCkgPT0gY29scykAFCYQAFoAAAD3AQAABQAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAABIAAAATAAAAFAAAABUAAAAWAAAAFwAAABgAAAAZAAAAGgAAABsAAAAcAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAKQAAACoAAAArAAAALAAAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAADYAAAA3AAAAOAAAADkAAAA6AAAAOwAAADwAAAA9AAAAPgAAAD8AAABAAAAAQQAAAEIAAABDAAAARAAAAEUAAABGAAAARwAAAEgAAABJAAAASgAAAEsAAABMAAAATQAAAE4AAABPAAAAUAAAAFEAAABSAAAAUwAAAFQAAABVAAAAVgAAAFcAAABYAAAAWQAAAFoAAABbAAAAXAAAAF0AAABeAAAAXwAAAGYmAACSJQAACSQAAAwkAAANJAAACiQAALAAAACxAAAAJCQAAAskAAAYJQAAECUAAAwlAAAUJQAAPCUAALojAAC7IwAAACUAALwjAAC9IwAAHCUAACQlAAA0JQAALCUAAAIlAABkIgAAZSIAAMADAABgIgAAowAAAMUiAAB/AAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYXZ0LTAuMTYuMC9zcmMvbGluZS5yczgqEABYAAAAEAAAABQAAAA4KhAAWAAAAB0AAAAWAAAAOCoQAFgAAAAeAAAAFwAAADgqEABYAAAAIQAAABMAAAA4KhAAWAAAACsAAAAkAAAAOCoQAFgAAAAxAAAAGwAAADgqEABYAAAANQAAABsAAAA4KhAAWAAAADwAAAAbAAAAOCoQAFgAAAA9AAAAGwAAADgqEABYAAAAQQAAABsAAAA4KhAAWAAAAEMAAAAeAAAAOCoQAFgAAABEAAAAHwAAADgqEABYAAAARwAAABsAAAA4KhAAWAAAAE4AAAAbAAAAOCoQAFgAAABPAAAAGwAAADgqEABYAAAAVgAAABsAAAA4KhAAWAAAAFcAAAAbAAAAOCoQAFgAAABeAAAAGwAAADgqEABYAAAAXwAAABsAAAA4KhAAWAAAAG0AAAAbAAAAOCoQAFgAAAB1AAAAGwAAADgqEABYAAAAdgAAABsAAAA4KhAAWAAAAHgAAAAeAAAAOCoQAFgAAAB5AAAAHwAAADgqEABYAAAAfAAAABsAAABpbnRlcm5hbCBlcnJvcjogZW50ZXJlZCB1bnJlYWNoYWJsZSBjb2RlOCoQAFgAAACAAAAAEQAAADgqEABYAAAAiQAAACcAAAA4KhAAWAAAAI0AAAAXAAAAOCoQAFgAAACQAAAAEwAAADgqEABYAAAAkgAAACcAAAA4KhAAWAAAAJYAAAAjAAAAOCoQAFgAAACbAAAAFgAAADgqEABYAAAAnAAAABcAAAA4KhAAWAAAAJ8AAAATAAAAOCoQAFgAAAChAAAAJwAAADgqEABYAAAAqAAAABMAAAA4KhAAWAAAAL0AAAAVAAAAOCoQAFgAAAC/AAAAJQAAADgqEABYAAAAwAAAABwAAAA4KhAAWAAAAMMAAAAlAAAAOCoQAFgAAADtAAAAMAAAADgqEABYAAAA9AAAACMAAAA4KhAAWAAAAPkAAAAlAAAAOCoQAFgAAAD6AAAAHAAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2F2dC0wLjE2LjAvc3JjL3BhcnNlci5ycwAAeC0QAFoAAADGAQAAIgAAAHgtEABaAAAA2gEAAA0AAAB4LRAAWgAAANwBAAANAAAAeC0QAFoAAABNAgAAJgAAAHgtEABaAAAAUgIAACYAAAB4LRAAWgAAAFgCAAAYAAAAeC0QAFoAAABwAgAAEwAAAHgtEABaAAAAdAIAABMAAAB4LRAAWgAAAAUDAAAnAAAAeC0QAFoAAAALAwAAJwAAAHgtEABaAAAAEQMAACcAAAB4LRAAWgAAABcDAAAnAAAAeC0QAFoAAAAdAwAAJwAAAHgtEABaAAAAIwMAACcAAAB4LRAAWgAAACkDAAAnAAAAeC0QAFoAAAAvAwAAJwAAAHgtEABaAAAANQMAACcAAAB4LRAAWgAAADsDAAAnAAAAeC0QAFoAAABBAwAAJwAAAHgtEABaAAAARwMAACcAAAB4LRAAWgAAAE0DAAAnAAAAeC0QAFoAAABTAwAAJwAAAHgtEABaAAAAbgMAACsAAAB4LRAAWgAAAHcDAAAvAAAAeC0QAFoAAAB7AwAALwAAAHgtEABaAAAAgwMAAC8AAAB4LRAAWgAAAIcDAAAvAAAAeC0QAFoAAACMAwAAKwAAAHgtEABaAAAAkQMAACcAAAB4LRAAWgAAAK0DAAArAAAAeC0QAFoAAAC2AwAALwAAAHgtEABaAAAAugMAAC8AAAB4LRAAWgAAAMIDAAAvAAAAeC0QAFoAAADGAwAALwAAAHgtEABaAAAAywMAACsAAAB4LRAAWgAAANADAAAnAAAAeC0QAFoAAADeAwAAJwAAAHgtEABaAAAA1wMAACcAAAB4LRAAWgAAAJgDAAAnAAAAeC0QAFoAAABaAwAAJwAAAHgtEABaAAAAYAMAACcAAAB4LRAAWgAAAJ8DAAAnAAAAeC0QAFoAAABnAwAAJwAAAHgtEABaAAAApgMAACcAAAB4LRAAWgAAAOQDAAAnAAAAeC0QAFoAAAAOBAAAEwAAAHgtEABaAAAAFwQAABsAAAB4LRAAWgAAACAEAAAUAAAAL2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2YvYXZ0LTAuMTYuMC9zcmMvdGFicy5yc9QwEABYAAAACQAAABIAAADUMBAAWAAAABEAAAAUAAAA1DAQAFgAAAAXAAAAFAAAANQwEABYAAAAHwAAABQAAAAvaG9tZS9ydW5uZXIvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9hdnQtMC4xNi4wL3NyYy90ZXJtaW5hbC9kaXJ0eV9saW5lcy5yc2wxEABoAAAACAAAABQAAABsMRAAaAAAAAwAAAAPAAAAbDEQAGgAAAAQAAAADwBBjOTAAAvPBwEAAAAfAAAAIAAAACEAAAAiAAAAIwAAABQAAAAEAAAAJAAAACUAAAAmAAAAJwAAAC9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL2F2dC0wLjE2LjAvc3JjL3Rlcm1pbmFsLnJzPDIQAFwAAAB1AgAAFQAAADwyEABcAAAAsQIAAA4AAAA8MhAAXAAAAAUEAAAjAAAAQm9ycm93TXV0RXJyb3JhbHJlYWR5IGJvcnJvd2VkOiDWMhAAEgAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWVpbmRleCBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzICBidXQgdGhlIGluZGV4IGlzIAAAABszEAAgAAAAOzMQABIAAAA6IAAAAQAAAAAAAABgMxAAAgAAAAAAAAAMAAAABAAAACgAAAApAAAAKgAAACAgICAsCigoCjAwMDEwMjAzMDQwNTA2MDcwODA5MTAxMTEyMTMxNDE1MTYxNzE4MTkyMDIxMjIyMzI0MjUyNjI3MjgyOTMwMzEzMjMzMzQzNTM2MzczODM5NDA0MTQyNDM0NDQ1NDY0NzQ4NDk1MDUxNTI1MzU0NTU1NjU3NTg1OTYwNjE2MjYzNjQ2NTY2Njc2ODY5NzA3MTcyNzM3NDc1NzY3Nzc4Nzk4MDgxODI4Mzg0ODU4Njg3ODg4OTkwOTE5MjkzOTQ5NTk2OTc5ODk5YXR0ZW1wdGVkIHRvIGluZGV4IHNsaWNlIHVwIHRvIG1heGltdW0gdXNpemUAAABdNBAALAAAAHJhbmdlIHN0YXJ0IGluZGV4ICBvdXQgb2YgcmFuZ2UgZm9yIHNsaWNlIG9mIGxlbmd0aCCUNBAAEgAAAKY0EAAiAAAAcmFuZ2UgZW5kIGluZGV4INg0EAAQAAAApjQQACIAAABzbGljZSBpbmRleCBzdGFydHMgYXQgIGJ1dCBlbmRzIGF0IAD4NBAAFgAAAA41EAANAAAASGFzaCB0YWJsZSBjYXBhY2l0eSBvdmVyZmxvdyw1EAAcAAAAL3J1c3QvZGVwcy9oYXNoYnJvd24tMC4xNS4yL3NyYy9yYXcvbW9kLnJzAABQNRAAKgAAACMAAAAoAAAAsVMQAGwAAAAjAQAADgAAAGNsb3N1cmUgaW52b2tlZCByZWN1cnNpdmVseSBvciBhZnRlciBiZWluZyBkcm9wcGVkAAD//////////9A1EABB6OvAAAt1L2hvbWUvcnVubmVyLy5jYXJnby9yZWdpc3RyeS9zcmMvaW5kZXguY3JhdGVzLmlvLTE5NDljZjhjNmI1YjU1N2Yvc2VyZGUtd2FzbS1iaW5kZ2VuLTAuNi41L3NyYy9saWIucnMAAADoNRAAZQAAADUAAAAOAEGB7cAAC4cBAQIDAwQFBgcICQoLDA0OAwMDAwMDAw8DAwMDAwMDDwkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJEAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJAEGB78AAC58LAQICAgIDAgIEAgUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0CAh4CAgICAgICHyAhIiMCJCUmJygpAioCAgICKywCAgICLS4CAgIvMDEyMwICAgICAjQCAjU2NwI4OTo7PD0+Pzk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OUA5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5QQICQkMCAkRFRkdISQJKOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5SwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjk5OTlMAgICAgJNTk9QAgICUQJSUwICAgICAgICAgICAgJUVQICVgJXAgJYWVpbXF1eX2BhAmJjAmRlZmcCaAJpamtsAgJtbm9wAnFyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdHUCAgICAgICdnc5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OXg5OTk5OTk5OTl5egICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICezk5fDk5fQICAgICAgICAgICAgICAgICAgJ+AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICfwICAoCBggICAgICAgICAgICAgICAoOEAgICAgICAgICAoWGdQIChwICAogCAgICAgICiYoCAgICAgICAgICAgICi4wCjY4Cj5CRkpOUlZYClwICmJmamwICAgICAgICAgI5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTmcHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCdAgICAp6fAgQCBQYHCAkKCwwNDg8QERITFBUWFxgZGhscHQICHgICAgICAgIfICEiIwIkJSYnKCkCKgICAgKgoaKjpKWmLqeoqaqrrK0zAgICAgICrgICNTY3Ajg5Ojs8PT6vOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5TAICAgICsE5PsYWGdQIChwICAogCAgICAgICiYoCAgICAgICAgICAgICi4yys44Cj5CRkpOUlZYClwICmJmamwICAgICAgICAgJVVXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAQbz6wAALKVVVVVUVAFBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUBAEHv+sAAC8QBEEEQVVVVVVVXVVVVVVVVVVVVUVVVAABAVPXdVVVVVVVVVVUVAAAAAABVVVVV/F1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQUAFAAUBFBVVVVVVVVVFVFVVVVVVVVVAAAAAAAAQFVVVVVVVVVVVdVXVVVVVVVVVVVVVVUFAABUVVVVVVVVVVVVVVVVVRUAAFVVUVVVVVVVBRAAAAEBUFVVVVVVVVVVVVUBVVVVVVX/////f1VVVVBVAABVVVVVVVVVVVVVBQBBwPzAAAuYBEBVVVVVVVVVVVVVVVVVRVQBAFRRAQBVVQVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVRAFUVVFVFVVVBVVVVVVVVUVBVVVVVVVVVVVVVVVVVVVUQRUUUFFVVVVVVVVVUFFVVUFVVVVVVVVVVVVVVVVVVVQBEFRRVVVVVQVVVVVVVQUAUVVVVVVVVVVVVVVVVVVVBAFUVVFVAVVVBVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVFVFVVUVUVVVVVVVVVVVVVVVRUVVVVVVVVVVVVVVVVVQRUBQRQVUFVVQVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVFEQFBFBVQVVVBVVVVVVVVVVQVVVVVVVVVVVVVVVVVRVEAVRVQVUVVVUFVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVUUVBURVFVVVVVVVVVVVVVVVVVVVVVVVVVVVUQBAVVUVAEBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRAABUVVUAQFVVVVVVVVVVVVVVVVVVVVVVVVBVVVVVVVURUVVVVVVVVVVVVVVVVVUBAABAAARVAQAAAQAAAAAAAAAAVFVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQEEAEFBVVVVVVVVUAVUVVVVAVRVVUVBVVFVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqAEGAgcEAC5ADVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUBVVVVVVVVVVVVVVVVBVRVVVVVVVUFVVVVVVVVVQVVVVVVVVVVBVVVVX///ff//ddfd9bV11UQAFBVRQEAAFVXUVVVVVVVVVVVVVUVAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQVVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBVUVUVVAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVcVFFVVVVVVVVVVVVVVVVVVRQBARAEAVBUAABRVVVVVVVVVVVVVVVUAAAAAAAAAQFVVVVVVVVVVVVVVVQBVVVVVVVVVVVVVVVUAAFAFVVVVVVVVVVVVFQAAVVVVUFVVVVVVVVUFUBBQVVVVVVVVVVVVVVVVVUVQEVBVVVVVVVVVVVVVVVVVVQAABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAAAQAVFFVVFBVVVVVVVVVVVVVVVVVVVVVVQBBoITBAAuTCFVVFQBVVVVVVVUFQFVVVVVVVVVVVVVVVQAAAABVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAAAAAAAAAAFRVVVVVVVVVVVX1VVVVaVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV/VfXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX1VVVVVVV9VVVVVVVVVVVVVVVX///9VVVVVVVVVVVVV1VVVVVXVVVVVXVX1VVVVVX1VX1V1VVdVVVVVdVX1XXVdVV31VVVVVVVVVVdVVVVVVVVVVXfV31VVVVVVVVVVVVVVVVVVVf1VVVVVVVVXVVXVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVdVXVVVVVVVVVVVVVVVVV11VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVBVVVVVVVVVVVVVVVVVVVX9////////////////X1XVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAAAAAAAAAAqqqqqqqqmqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpVVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlpVVVVVVVWqqqqqqqqqqqqqqqqqqgoAqqqqaqmqqqqqqqqqqqqqqqqqqqqqqqqqqmqBqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlWpqqqqqqqqqqqqqqmqqqqqqqqqqqqqqqqoqqqqqqqqqqqqaqqqqqqqqqqqqqqqqqqqqqqqqqqqqlVVlaqqqqqqqqqqqqqqaqqqqqqqqqqqqqpVVaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpVVVVVVVVVVVVVVVVVVVVVqqqqVqqqqqqqqqqqqqqqqqpqVVVVVVVVVVVVVVVVVV9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVQAAAUFVVVVVVVVUFVVVVVVVVVVVVVVVVVVVVVVVVVVVQVVVVRUUVVVVVVVVVQVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBVVVVVVVUAAAAAUFVFFVVVVVVVVVVVVQUAUFVVVVVVFQAAUFVVVaqqqqqqqqpWQFVVVVVVVVVVVVVVFQVQUFVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVVAUBBQVVVFVVVVFVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVQQUVAVRVVVVVVVVVVVVVVBVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFUUVVVVVWqqqqqqqqqqqpVVVUAAAAAAEAVAEG/jMEAC+EMVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAAAA8KqqWlUAAAAAqqqqqqqqqqpqqqqqqmqqVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFamqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlZVVVVVVVVVVVVVVVVVVQVUVVVVVVVVVVVVVVVVVVVVqmpVVQAAVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUFQFUBQVUAVVVVVVVVVVVVVUAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVBVVVVVVVV1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVFVVVVVVVVVVVVVVVVVVVVVVVVUBVVVVVVVVVVVVVVVVVVVVVVUFAABUVVVVVVVVVVVVVVUFUFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVAAAAQFVVVVVVVVVVVVUUVFUVUFVVVVVVVVVVVVVVFUBBVUVVVVVVVVVVVVVVVVVVVVVAVVVVVVVVVVUVAAEAVFVVVVVVVVVVVVVVVVVVFVVVVVBVVVVVVVVVVVVVVVUFAEAFVQEUVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVUARVRVFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRUVAEBVVVVVVVBVVVVVVVVVVVVVVVVVFURUVVVVVRVVVVUFAFQAVFVVVVVVVVVVVVVVVVVVVVUAAAVEVVVVVVVFVVVVVVVVVVVVVVVVVVVVVVVVVVUUAEQRBFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFQVQVRBUVVVVVVVVUFVVVVVVVVVVVVVVVVVVVVVVVVVVFQBAEVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVEAEFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUBBRAAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVAABBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVRUEEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQAFVVRVVVVVVVVVAQBAVVVVVVVVVVVVFQAEQFUVVVUBQAFVVVVVVVVVVVVVAAAAAEBQVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBAABBVVVVVVVVVVVVVVVVVVVVVVVVVVQUAAAAAAAUABEFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUBQEUQAABVVVVVVVVVVVVVVVVVVVVVVVVQEVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVUVVVAVVVVVVVVVVVVVVVVBUBVRFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUFQAAAFBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBUVVVVVVVVVVVVVVVVVVUAQFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUVVVVVVVVVVVVVVVVVVVVVFUBVVVVVVVVVVVVVVVVVVVVVVVVVqlRVVVpVVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpVVaqqqqqqqqqqqqqqqqqqqqqqqqqqqlpVVVVVVVVVVVVVqqpWVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVqqmqaaqqqqqqqqqqalVVVWVVVVVVVVVVallVVVWqVVWqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlVVVVVVVVVVQQBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVQBBq5nBAAt1UAAAAAAAQFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRFQBQAAAABAAQBVVVVVVVVVBVBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUFVFVVVVVVVVVVVVVVVVVVAEGtmsEACwJAFQBBu5rBAAvFBlRVUVVVVVRVVVVVFQABAAAAVVVVVVVVVVVVVVVVVVVVVVVVVVUAQAAAAAAUABAEQFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVRVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFVVVVVVVVVVVVVVVVVVVVAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVAEBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVUAQFVVVVVVVVVVVVVVVVVVV1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVXVVVVVVVVVVVVVVVVVVVVVdf3/f1VVVVVVVVVVVVVVVVVVVVVVVfX///////9uVVVVqqq6qqqqqur6v79VqqpWVV9VVVWqWlVVVVVVVf//////////V1VV/f/f///////////////////////3//////9VVVX/////////////f9X/VVVV/////1dX//////////////////////9/9//////////////////////////////////////////////////////////////X////////////////////X1VV1X////////9VVVVVdVVVVVVVVX1VVVVXVVVVVVVVVVVVVVVVVVVVVVVVVVXV////////////////////////////VVVVVVVVVVVVVVVV//////////////////////9fVVd//VX/VVXVV1X//1dVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVX///9VV1VVVVVVVf//////////////f///3/////////////////////////////////////////////////////////////9VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV////V///V1X//////////////9//X1X1////Vf//V1X//1dVqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqlpVVVVVVVVVVVmWVWGqpVmqVVVVVVWVVVVVVVVVVZVVVQBBjqHBAAsBAwBBnKHBAAuJCVVVVVVVlVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVFQCWalpaaqoFQKZZlWVVVVVVVVVVVQAAAABVVlVVqVZVVVVVVVVVVVVWVVVVVVVVVVUAAAAAAAAAAFRVVVWVWVlVVWVVVWlVVVVVVVVVVVVVVZVWlWqqqqpVqqpaVVVVWVWqqqpVVVVVZVVVWlVVVVWlZVZVVVWVVVVVVVVVppaalllZZamWqqpmVapVWllVWlZlVVVVaqqlpVpVVVWlqlpVVVlZVVVZVVVVVVWVVVVVVVVVVVVVVVVVVVVVVVVVVVVlVfVVVVVpVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpVqqqqqqqqqqqqVVVVqqqqqqVaVVWaqlpVpaVVWlqllqVaVVVVpVpVlVVVVX1VaVmlVV9VZlVVVVVVVVVVZlX///9VVVWammqaVVVV1VVVVVXVVVWlXVX1VVVVVb1Vr6q6qquqqppVuqr6rrquVV31VVVVVVVVVVdVVVVVWVVVVXfV31VVVVVVVVWlqqpVVVVVVVXVV1VVVVVVVVVVVVVVVVetWlVVVVVVVVVVVaqqqqqqqqpqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqAAAAwKqqWlUAAAAAqqqqqqqqqqpqqqqqqmqqVVVVVVVVVVVVVVVVBVRVVVVVVVVVVVVVVVVVVVWqalVVAABUWaqqalWqqqqqqqqqWqqqqqqqqqqqqqqqqqqqWlWqqqqqqqqquv7/v6qqqqpWVVVVVVVVVVVVVVVVVfX///////8vbml4L3N0b3JlLzI4aHl6ZmwzMzhrczRhbWhhN3ZwcG5sYnExczFucWF2LXJ1c3QtZGVmYXVsdC0xLjg1LjAvbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy5ycy9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3dhc20tYmluZGdlbi0wLjIuMTA2L3NyYy9jb252ZXJ0L3NsaWNlcy5ycy9ob21lL3J1bm5lci8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3dhc20tYmluZGdlbi0wLjIuMTA2L3NyYy9leHRlcm5yZWYucnMdVBAAZwAAAH8AAAARAAAAHVQQAGcAAACMAAAAEQAAAG51bGwgcG9pbnRlciBwYXNzZWQgdG8gcnVzdHJlY3Vyc2l2ZSB1c2Ugb2YgYW4gb2JqZWN0IGRldGVjdGVkIHdoaWNoIHdvdWxkIGxlYWQgdG8gdW5zYWZlIGFsaWFzaW5nIGluIHJ1c3RKc1ZhbHVlKCkADlUQAAgAAAAWVRAAAQBBqKrBAAsBBABICXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AgZ3YWxydXMGMC4yNC40DHdhc20tYmluZGdlbhMwLjIuMTA2ICgxMTgzMWZiODkp\");\n\nasync function init(options) {\n await __wbg_init({\n module_or_path: await options.module,\n memory: options.memory,\n });\n return exports;\n }\n\nclass Clock {\n constructor() {\n let speed = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1.0;\n this.speed = speed;\n this.startTime = performance.now();\n }\n getTime() {\n return this.speed * (performance.now() - this.startTime) / 1000.0;\n }\n setTime(time) {\n this.startTime = performance.now() - time / this.speed * 1000.0;\n }\n}\nclass NullClock {\n constructor() {}\n getTime(_speed) {}\n setTime(_time) {}\n}\n\n// Efficient array transformations without intermediate array objects.\n// Inspired by Elixir's streams and Rust's iterator adapters.\n\nclass Stream {\n constructor(input, xfs) {\n this.input = typeof input.next === \"function\" ? input : input[Symbol.iterator]();\n this.xfs = xfs ?? [];\n }\n map(f) {\n return this.transform(Map$1(f));\n }\n flatMap(f) {\n return this.transform(FlatMap(f));\n }\n filter(f) {\n return this.transform(Filter(f));\n }\n take(n) {\n return this.transform(Take(n));\n }\n drop(n) {\n return this.transform(Drop(n));\n }\n transform(f) {\n return new Stream(this.input, this.xfs.concat([f]));\n }\n multiplex(other, comparator) {\n return new Stream(new Multiplexer(this[Symbol.iterator](), other[Symbol.iterator](), comparator));\n }\n toArray() {\n return Array.from(this);\n }\n [Symbol.iterator]() {\n let v = 0;\n let values = [];\n let flushed = false;\n const xf = compose(this.xfs, val => values.push(val));\n return {\n next: () => {\n if (v === values.length) {\n values = [];\n v = 0;\n }\n while (values.length === 0) {\n const next = this.input.next();\n if (next.done) {\n break;\n } else {\n xf.step(next.value);\n }\n }\n if (values.length === 0 && !flushed) {\n xf.flush();\n flushed = true;\n }\n if (values.length > 0) {\n return {\n done: false,\n value: values[v++]\n };\n } else {\n return {\n done: true\n };\n }\n }\n };\n }\n}\nfunction Map$1(f) {\n return emit => {\n return input => {\n emit(f(input));\n };\n };\n}\nfunction FlatMap(f) {\n return emit => {\n return input => {\n f(input).forEach(emit);\n };\n };\n}\nfunction Filter(f) {\n return emit => {\n return input => {\n if (f(input)) {\n emit(input);\n }\n };\n };\n}\nfunction Take(n) {\n let c = 0;\n return emit => {\n return input => {\n if (c < n) {\n emit(input);\n }\n c += 1;\n };\n };\n}\nfunction Drop(n) {\n let c = 0;\n return emit => {\n return input => {\n c += 1;\n if (c > n) {\n emit(input);\n }\n };\n };\n}\nfunction compose(xfs, push) {\n return xfs.reverse().reduce((next, curr) => {\n const xf = toXf(curr(next.step));\n return {\n step: xf.step,\n flush: () => {\n xf.flush();\n next.flush();\n }\n };\n }, toXf(push));\n}\nfunction toXf(xf) {\n if (typeof xf === \"function\") {\n return {\n step: xf,\n flush: () => {}\n };\n } else {\n return xf;\n }\n}\nclass Multiplexer {\n constructor(left, right, comparator) {\n this.left = left;\n this.right = right;\n this.comparator = comparator;\n }\n [Symbol.iterator]() {\n let leftItem;\n let rightItem;\n return {\n next: () => {\n if (leftItem === undefined && this.left !== undefined) {\n const result = this.left.next();\n if (result.done) {\n this.left = undefined;\n } else {\n leftItem = result.value;\n }\n }\n if (rightItem === undefined && this.right !== undefined) {\n const result = this.right.next();\n if (result.done) {\n this.right = undefined;\n } else {\n rightItem = result.value;\n }\n }\n if (leftItem === undefined && rightItem === undefined) {\n return {\n done: true\n };\n } else if (leftItem === undefined) {\n const value = rightItem;\n rightItem = undefined;\n return {\n done: false,\n value: value\n };\n } else if (rightItem === undefined) {\n const value = leftItem;\n leftItem = undefined;\n return {\n done: false,\n value: value\n };\n } else if (this.comparator(leftItem, rightItem)) {\n const value = leftItem;\n leftItem = undefined;\n return {\n done: false,\n value: value\n };\n } else {\n const value = rightItem;\n rightItem = undefined;\n return {\n done: false,\n value: value\n };\n }\n }\n };\n }\n}\n\nfunction normalizeTheme(theme) {\n const foreground = normalizeHexColor(theme.foreground);\n const background = normalizeHexColor(theme.background);\n const paletteInput = theme.palette;\n if (paletteInput === undefined) return;\n if (!foreground || !background || paletteInput.length < 8) return;\n const palette = [];\n const limit = Math.min(paletteInput.length, 16);\n for (let i = 0; i < limit; i += 1) {\n const color = normalizeHexColor(paletteInput[i]);\n if (!color) return;\n palette.push(color);\n }\n for (let i = palette.length; i < 16; i += 1) {\n palette.push(palette[i - 8]);\n }\n return {\n foreground,\n background,\n palette\n };\n}\n\nasync function parse$2(data) {\n if (data instanceof Response) {\n const text = await data.text();\n const result = parseJsonl(text);\n if (result !== undefined) {\n const {\n header,\n events\n } = result;\n if (header.version === 2) {\n return parseAsciicastV2(header, events);\n } else if (header.version === 3) {\n return parseAsciicastV3(header, events);\n } else {\n throw new Error(`asciicast v${header.version} format not supported`);\n }\n } else {\n const header = JSON.parse(text);\n if (header.version === 1) {\n return parseAsciicastV1(header);\n }\n }\n } else if (typeof data === \"object\" && data.version === 1) {\n return parseAsciicastV1(data);\n } else if (Array.isArray(data)) {\n const header = data[0];\n if (header.version === 2) {\n const events = data.slice(1, data.length);\n return parseAsciicastV2(header, events);\n } else if (header.version === 3) {\n const events = data.slice(1, data.length);\n return parseAsciicastV3(header, events);\n } else {\n throw new Error(`asciicast v${header.version} format not supported`);\n }\n }\n throw new Error(\"invalid data\");\n}\nfunction parseJsonl(jsonl) {\n const lines = jsonl.split(\"\\n\");\n let header;\n try {\n header = JSON.parse(lines[0]);\n } catch (_error) {\n return;\n }\n const events = new Stream(lines).drop(1).filter(l => l[0] === \"[\").map(JSON.parse);\n return {\n header,\n events\n };\n}\nfunction parseAsciicastV1(data) {\n let time = 0;\n const events = new Stream(data.stdout).map(e => {\n time += e[0];\n return [time, \"o\", e[1]];\n });\n return {\n cols: data.width,\n rows: data.height,\n events\n };\n}\nfunction parseAsciicastV2(header, events) {\n return {\n cols: header.width,\n rows: header.height,\n theme: parseTheme$1(header.theme),\n events,\n idleTimeLimit: header.idle_time_limit\n };\n}\nfunction parseAsciicastV3(header, events) {\n if (!(events instanceof Stream)) {\n events = new Stream(events);\n }\n let time = 0;\n events = events.map(e => {\n time += e[0];\n return [time, e[1], e[2]];\n });\n return {\n cols: header.term.cols,\n rows: header.term.rows,\n theme: parseTheme$1(header.term?.theme),\n events,\n idleTimeLimit: header.idle_time_limit\n };\n}\nfunction parseTheme$1(theme) {\n const palette = typeof theme?.palette === \"string\" ? theme.palette.split(\":\") : undefined;\n return normalizeTheme({\n foreground: theme?.fg,\n background: theme?.bg,\n palette\n });\n}\nfunction unparseAsciicastV2(recording) {\n const header = JSON.stringify({\n version: 2,\n width: recording.cols,\n height: recording.rows\n });\n const events = recording.events.map(JSON.stringify).join(\"\\n\");\n return `${header}\\n${events}\\n`;\n}\n\nfunction recording(src, _ref, _ref2) {\n let {\n feed,\n resize,\n onInput,\n onMarker,\n setState,\n logger\n } = _ref;\n let {\n speed,\n idleTimeLimit,\n startAt,\n loop,\n posterTime,\n markers: markers_,\n pauseOnMarkers,\n cols: initialCols,\n rows: initialRows,\n audioUrl\n } = _ref2;\n let cols;\n let rows;\n let events;\n let markers;\n let duration;\n let effectiveStartAt;\n let eventTimeoutId;\n let nextEventIndex = 0;\n let lastEventTime = 0;\n let startTime;\n let pauseElapsedTime;\n let playCount = 0;\n let waitingForAudio = false;\n let waitingTimeout;\n let shouldResumeOnAudioPlaying = false;\n let now = () => performance.now() * speed;\n let audioCtx;\n let audioElement;\n let audioSeekable = false;\n async function init() {\n const timeout = setTimeout(() => {\n setState(\"loading\");\n }, 3000);\n try {\n let metadata = loadRecording(src, logger, {\n idleTimeLimit,\n startAt,\n markers_\n });\n const hasAudio = await loadAudio(audioUrl);\n metadata = await metadata;\n return {\n ...metadata,\n hasAudio\n };\n } finally {\n clearTimeout(timeout);\n }\n }\n async function loadRecording(src, logger, opts) {\n const {\n parser,\n minFrameTime,\n inputOffset,\n dumpFilename,\n encoding = \"utf-8\"\n } = src;\n const data = await doFetch(src);\n const recording = prepare(await parser(data, {\n encoding\n }), logger, {\n ...opts,\n minFrameTime,\n inputOffset\n });\n ({\n cols,\n rows,\n events,\n duration,\n effectiveStartAt\n } = recording);\n initialCols = initialCols ?? cols;\n initialRows = initialRows ?? rows;\n if (events.length === 0) {\n throw new Error(\"recording is missing events\");\n }\n if (dumpFilename !== undefined) {\n dump(recording, dumpFilename);\n }\n const poster = posterTime !== undefined ? getPoster(posterTime) : undefined;\n markers = events.filter(e => e[1] === \"m\").map(e => [e[0], e[2].label]);\n return {\n cols,\n rows,\n duration,\n theme: recording.theme,\n poster,\n markers\n };\n }\n async function loadAudio(audioUrl) {\n if (!audioUrl) return false;\n audioElement = await createAudioElement(audioUrl);\n audioSeekable = !Number.isNaN(audioElement.duration) && audioElement.duration !== Infinity && audioElement.seekable.length > 0 && audioElement.seekable.end(audioElement.seekable.length - 1) === audioElement.duration;\n if (audioSeekable) {\n audioElement.addEventListener(\"playing\", onAudioPlaying);\n audioElement.addEventListener(\"waiting\", onAudioWaiting);\n } else {\n logger.warn(`audio is not seekable - you must enable range request support on the server providing ${audioElement.src} for audio seeking to work`);\n }\n return true;\n }\n async function doFetch(_ref3) {\n let {\n url,\n data,\n fetchOpts = {}\n } = _ref3;\n if (typeof url === \"string\") {\n return await doFetchOne(url, fetchOpts);\n } else if (Array.isArray(url)) {\n return await Promise.all(url.map(url => doFetchOne(url, fetchOpts)));\n } else if (data !== undefined) {\n if (typeof data === \"function\") {\n data = data();\n }\n if (!(data instanceof Promise)) {\n data = Promise.resolve(data);\n }\n const value = await data;\n if (typeof value === \"string\" || value instanceof ArrayBuffer) {\n return new Response(value);\n } else {\n return value;\n }\n } else {\n throw new Error(\"failed fetching recording file: url/data missing in src\");\n }\n }\n async function doFetchOne(url, fetchOpts) {\n const response = await fetch(url, fetchOpts);\n if (!response.ok) {\n throw new Error(`failed fetching recording from ${url}: ${response.status} ${response.statusText}`);\n }\n return response;\n }\n function scheduleNextEvent() {\n const nextEvent = events[nextEventIndex];\n if (nextEvent) {\n eventTimeoutId = scheduleAt(runNextEvent, nextEvent[0]);\n } else {\n onEnd();\n }\n }\n function scheduleAt(f, targetTime) {\n let timeout = (targetTime * 1000 - (now() - startTime)) / speed;\n if (timeout < 0) {\n timeout = 0;\n }\n return setTimeout(f, timeout);\n }\n function runNextEvent() {\n let event = events[nextEventIndex];\n let elapsedWallTime;\n do {\n lastEventTime = event[0];\n nextEventIndex++;\n const stop = executeEvent(event);\n if (stop) {\n return;\n }\n event = events[nextEventIndex];\n elapsedWallTime = now() - startTime;\n } while (event && elapsedWallTime > event[0] * 1000);\n scheduleNextEvent();\n }\n function cancelNextEvent() {\n clearTimeout(eventTimeoutId);\n eventTimeoutId = null;\n }\n function executeEvent(event) {\n const [time, type, data] = event;\n if (type === \"o\") {\n feed(data);\n } else if (type === \"i\") {\n onInput(data);\n } else if (type === \"r\") {\n const [cols, rows] = data.split(\"x\");\n resize(cols, rows);\n } else if (type === \"m\") {\n onMarker(data);\n if (pauseOnMarkers) {\n pause();\n pauseElapsedTime = time * 1000;\n setState(\"idle\", {\n reason: \"paused\"\n });\n return true;\n }\n }\n return false;\n }\n function onEnd() {\n cancelNextEvent();\n playCount++;\n if (loop === true || typeof loop === \"number\" && playCount < loop) {\n nextEventIndex = 0;\n startTime = now();\n feed(\"\\x1bc\"); // reset terminal\n resizeTerminalToInitialSize();\n scheduleNextEvent();\n if (audioElement) {\n audioElement.currentTime = 0;\n }\n } else {\n pauseElapsedTime = duration * 1000;\n setState(\"ended\");\n if (audioElement) {\n audioElement.pause();\n }\n }\n }\n async function play() {\n if (eventTimeoutId) throw new Error(\"already playing\");\n if (events[nextEventIndex] === undefined) throw new Error(\"already ended\");\n if (effectiveStartAt !== null) {\n seek(effectiveStartAt);\n }\n await resume();\n return true;\n }\n function pause() {\n shouldResumeOnAudioPlaying = false;\n if (audioElement) {\n audioElement.pause();\n }\n if (!eventTimeoutId) return true;\n cancelNextEvent();\n pauseElapsedTime = now() - startTime;\n return true;\n }\n async function resume() {\n if (audioElement && !audioCtx) setupAudioCtx();\n startTime = now() - pauseElapsedTime;\n pauseElapsedTime = null;\n scheduleNextEvent();\n if (audioElement) {\n await audioElement.play();\n }\n }\n async function seek(where) {\n if (waitingForAudio) {\n return false;\n }\n const isPlaying = !!eventTimeoutId;\n pause();\n if (audioElement) {\n audioElement.pause();\n }\n const currentTime = (pauseElapsedTime ?? 0) / 1000;\n if (typeof where === \"string\") {\n if (where === \"<<\") {\n where = currentTime - 5;\n } else if (where === \">>\") {\n where = currentTime + 5;\n } else if (where === \"<<<\") {\n where = currentTime - 0.1 * duration;\n } else if (where === \">>>\") {\n where = currentTime + 0.1 * duration;\n } else if (where[where.length - 1] === \"%\") {\n where = parseFloat(where.substring(0, where.length - 1)) / 100 * duration;\n }\n } else if (typeof where === \"object\") {\n if (where.marker === \"prev\") {\n where = findMarkerTimeBefore(currentTime) ?? 0;\n if (isPlaying && currentTime - where < 1) {\n where = findMarkerTimeBefore(where) ?? 0;\n }\n } else if (where.marker === \"next\") {\n where = findMarkerTimeAfter(currentTime) ?? duration;\n } else if (typeof where.marker === \"number\") {\n const marker = markers[where.marker];\n if (marker === undefined) {\n throw new Error(`invalid marker index: ${where.marker}`);\n } else {\n where = marker[0];\n }\n }\n }\n const targetTime = Math.min(Math.max(where, 0), duration);\n if (targetTime * 1000 === pauseElapsedTime) return false;\n if (targetTime < lastEventTime) {\n feed(\"\\x1bc\"); // reset terminal\n resizeTerminalToInitialSize();\n nextEventIndex = 0;\n lastEventTime = 0;\n }\n let event = events[nextEventIndex];\n while (event && event[0] <= targetTime) {\n if (event[1] === \"o\" || event[1] === \"r\") {\n executeEvent(event);\n }\n lastEventTime = event[0];\n event = events[++nextEventIndex];\n }\n pauseElapsedTime = targetTime * 1000;\n effectiveStartAt = null;\n if (audioElement && audioSeekable) {\n audioElement.currentTime = targetTime / speed;\n }\n if (isPlaying) {\n await resume();\n } else if (events[nextEventIndex] === undefined) {\n onEnd();\n }\n return true;\n }\n function findMarkerTimeBefore(time) {\n if (markers.length == 0) return;\n let i = 0;\n let marker = markers[i];\n let lastMarkerTimeBefore;\n while (marker && marker[0] < time) {\n lastMarkerTimeBefore = marker[0];\n marker = markers[++i];\n }\n return lastMarkerTimeBefore;\n }\n function findMarkerTimeAfter(time) {\n if (markers.length == 0) return;\n let i = markers.length - 1;\n let marker = markers[i];\n let firstMarkerTimeAfter;\n while (marker && marker[0] > time) {\n firstMarkerTimeAfter = marker[0];\n marker = markers[--i];\n }\n return firstMarkerTimeAfter;\n }\n function step(n) {\n if (n === undefined) {\n n = 1;\n }\n let nextEvent;\n let targetIndex;\n if (n > 0) {\n let index = nextEventIndex;\n nextEvent = events[index];\n for (let i = 0; i < n; i++) {\n while (nextEvent !== undefined && nextEvent[1] !== \"o\") {\n nextEvent = events[++index];\n }\n if (nextEvent !== undefined && nextEvent[1] === \"o\") {\n targetIndex = index;\n }\n }\n } else {\n let index = Math.max(nextEventIndex - 2, 0);\n nextEvent = events[index];\n for (let i = n; i < 0; i++) {\n while (nextEvent !== undefined && nextEvent[1] !== \"o\") {\n nextEvent = events[--index];\n }\n if (nextEvent !== undefined && nextEvent[1] === \"o\") {\n targetIndex = index;\n }\n }\n if (targetIndex !== undefined) {\n feed(\"\\x1bc\"); // reset terminal\n resizeTerminalToInitialSize();\n nextEventIndex = 0;\n }\n }\n if (targetIndex === undefined) return;\n while (nextEventIndex <= targetIndex) {\n nextEvent = events[nextEventIndex++];\n if (nextEvent[1] === \"o\" || nextEvent[1] === \"r\") {\n executeEvent(nextEvent);\n }\n }\n lastEventTime = nextEvent[0];\n pauseElapsedTime = lastEventTime * 1000;\n effectiveStartAt = null;\n if (audioElement && audioSeekable) {\n audioElement.currentTime = lastEventTime / speed;\n }\n if (events[targetIndex + 1] === undefined) {\n onEnd();\n }\n }\n async function restart() {\n if (eventTimeoutId) throw new Error(\"still playing\");\n if (events[nextEventIndex] !== undefined) throw new Error(\"not ended\");\n seek(0);\n await resume();\n return true;\n }\n function getPoster(time) {\n return events.filter(e => e[0] < time && e[1] === \"o\").map(e => e[2]);\n }\n function getCurrentTime() {\n if (eventTimeoutId) {\n return (now() - startTime) / 1000;\n } else {\n return (pauseElapsedTime ?? 0) / 1000;\n }\n }\n function resizeTerminalToInitialSize() {\n resize(initialCols, initialRows);\n }\n function setupAudioCtx() {\n audioCtx = new AudioContext({\n latencyHint: \"interactive\"\n });\n const src = audioCtx.createMediaElementSource(audioElement);\n src.connect(audioCtx.destination);\n now = audioNow;\n }\n function audioNow() {\n if (!audioCtx) throw new Error(\"audio context not started - can't tell time!\");\n const {\n contextTime,\n performanceTime\n } = audioCtx.getOutputTimestamp();\n\n // The check below is needed for Chrome,\n // which returns 0 for first several dozen millis,\n // completely ruining the timing (the clock jumps backwards once),\n // therefore we initially ignore performanceTime in our calculation.\n\n return performanceTime === 0 ? contextTime * 1000 : contextTime * 1000 + (performance.now() - performanceTime);\n }\n function onAudioWaiting() {\n logger.debug(\"audio buffering\");\n waitingForAudio = true;\n shouldResumeOnAudioPlaying = !!eventTimeoutId;\n waitingTimeout = setTimeout(() => setState(\"loading\"), 1000);\n if (!eventTimeoutId) return true;\n logger.debug(\"pausing session playback\");\n cancelNextEvent();\n pauseElapsedTime = now() - startTime;\n }\n function onAudioPlaying() {\n logger.debug(\"audio resumed\");\n clearTimeout(waitingTimeout);\n setState(\"playing\");\n if (!waitingForAudio) return;\n waitingForAudio = false;\n if (shouldResumeOnAudioPlaying) {\n logger.debug(\"resuming session playback\");\n startTime = now() - pauseElapsedTime;\n pauseElapsedTime = null;\n scheduleNextEvent();\n }\n }\n function mute() {\n if (audioElement) {\n audioElement.muted = true;\n return true;\n }\n }\n function unmute() {\n if (audioElement) {\n audioElement.muted = false;\n return true;\n }\n }\n return {\n init,\n play,\n pause,\n seek,\n step,\n restart,\n stop: pause,\n mute,\n unmute,\n getCurrentTime\n };\n}\nfunction batcher(logger) {\n let minFrameTime = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1.0 / 60;\n let prevEvent;\n return emit => {\n let ic = 0;\n let oc = 0;\n return {\n step: event => {\n ic++;\n if (prevEvent === undefined) {\n prevEvent = event;\n return;\n }\n if (event[1] === \"o\" && prevEvent[1] === \"o\" && event[0] - prevEvent[0] < minFrameTime) {\n prevEvent[2] += event[2];\n } else {\n emit(prevEvent);\n prevEvent = event;\n oc++;\n }\n },\n flush: () => {\n if (prevEvent !== undefined) {\n emit(prevEvent);\n oc++;\n }\n logger.debug(`batched ${ic} frames to ${oc} frames`);\n }\n };\n };\n}\nfunction prepare(recording, logger, _ref4) {\n let {\n startAt = 0,\n idleTimeLimit,\n minFrameTime,\n inputOffset,\n markers_\n } = _ref4;\n let {\n events\n } = recording;\n if (!(events instanceof Stream)) {\n events = new Stream(events);\n }\n idleTimeLimit = idleTimeLimit ?? recording.idleTimeLimit ?? Infinity;\n const limiterOutput = {\n offset: 0\n };\n events = events.transform(batcher(logger, minFrameTime)).map(timeLimiter(idleTimeLimit, startAt, limiterOutput)).map(markerWrapper());\n if (markers_ !== undefined) {\n markers_ = new Stream(markers_).map(normalizeMarker);\n events = events.filter(e => e[1] !== \"m\").multiplex(markers_, (a, b) => a[0] < b[0]).map(markerWrapper());\n }\n events = events.toArray();\n if (inputOffset !== undefined) {\n events = events.map(e => e[1] === \"i\" ? [e[0] + inputOffset, e[1], e[2]] : e);\n events.sort((a, b) => a[0] - b[0]);\n }\n const duration = events[events.length - 1][0];\n const effectiveStartAt = startAt - limiterOutput.offset;\n return {\n ...recording,\n events,\n duration,\n effectiveStartAt\n };\n}\nfunction normalizeMarker(m) {\n return typeof m === \"number\" ? [m, \"m\", \"\"] : [m[0], \"m\", m[1]];\n}\nfunction timeLimiter(idleTimeLimit, startAt, output) {\n let prevT = 0;\n let shift = 0;\n return function (e) {\n const delay = e[0] - prevT;\n const delta = delay - idleTimeLimit;\n prevT = e[0];\n if (delta > 0) {\n shift += delta;\n if (e[0] < startAt) {\n output.offset += delta;\n }\n }\n return [e[0] - shift, e[1], e[2]];\n };\n}\nfunction markerWrapper() {\n let i = 0;\n return function (e) {\n if (e[1] === \"m\") {\n return [e[0], e[1], {\n index: i++,\n time: e[0],\n label: e[2]\n }];\n } else {\n return e;\n }\n };\n}\nfunction dump(recording, filename) {\n const link = document.createElement(\"a\");\n const events = recording.events.map(e => e[1] === \"m\" ? [e[0], e[1], e[2].label] : e);\n const asciicast = unparseAsciicastV2({\n ...recording,\n events\n });\n link.href = URL.createObjectURL(new Blob([asciicast], {\n type: \"text/plain\"\n }));\n link.download = filename;\n link.click();\n}\nasync function createAudioElement(src) {\n const audio = new Audio();\n audio.preload = \"metadata\";\n audio.loop = false;\n audio.crossOrigin = \"anonymous\";\n let resolve;\n const canPlay = new Promise(resolve_ => {\n resolve = resolve_;\n });\n function onCanPlay() {\n resolve();\n audio.removeEventListener(\"canplay\", onCanPlay);\n }\n audio.addEventListener(\"canplay\", onCanPlay);\n audio.src = src;\n audio.load();\n await canPlay;\n return audio;\n}\n\nfunction clock(_ref, _ref2, _ref3) {\n let {\n hourColor = 3,\n minuteColor = 4,\n separatorColor = 9\n } = _ref;\n let {\n feed\n } = _ref2;\n let {\n cols = 5,\n rows = 1\n } = _ref3;\n const middleRow = Math.floor(rows / 2);\n const leftPad = Math.floor(cols / 2) - 2;\n const setupCursor = `\\x1b[?25l\\x1b[1m\\x1b[${middleRow}B`;\n let intervalId;\n const getCurrentTime = () => {\n const d = new Date();\n const h = d.getHours();\n const m = d.getMinutes();\n const seqs = [];\n seqs.push(\"\\r\");\n for (let i = 0; i < leftPad; i++) {\n seqs.push(\" \");\n }\n seqs.push(`\\x1b[3${hourColor}m`);\n if (h < 10) {\n seqs.push(\"0\");\n }\n seqs.push(`${h}`);\n seqs.push(`\\x1b[3${separatorColor};5m:\\x1b[25m`);\n seqs.push(`\\x1b[3${minuteColor}m`);\n if (m < 10) {\n seqs.push(\"0\");\n }\n seqs.push(`${m}`);\n return seqs;\n };\n const updateTime = () => {\n getCurrentTime().forEach(feed);\n };\n return {\n init: () => {\n const duration = 24 * 60;\n const poster = [setupCursor].concat(getCurrentTime());\n return {\n cols,\n rows,\n duration,\n poster\n };\n },\n play: () => {\n feed(setupCursor);\n updateTime();\n intervalId = setInterval(updateTime, 1000);\n return true;\n },\n stop: () => {\n clearInterval(intervalId);\n },\n getCurrentTime: () => {\n const d = new Date();\n return d.getHours() * 60 + d.getMinutes();\n }\n };\n}\n\nfunction random(src, _ref, _ref2) {\n let {\n feed\n } = _ref;\n let {\n speed\n } = _ref2;\n const base = \" \".charCodeAt(0);\n const range = \"~\".charCodeAt(0) - base;\n let timeoutId;\n const schedule = () => {\n const t = Math.pow(5, Math.random() * 4);\n timeoutId = setTimeout(print, t / speed);\n };\n const print = () => {\n schedule();\n const char = String.fromCharCode(base + Math.floor(Math.random() * range));\n feed(char);\n };\n return () => {\n schedule();\n return () => clearInterval(timeoutId);\n };\n}\n\nfunction benchmark(_ref, _ref2) {\n let {\n url,\n iterations = 10\n } = _ref;\n let {\n feed,\n setState\n } = _ref2;\n let data;\n let byteCount = 0;\n return {\n async init() {\n const recording = await parse$2(await fetch(url));\n const {\n cols,\n rows,\n events\n } = recording;\n data = Array.from(events).filter(_ref3 => {\n let [_time, type, _text] = _ref3;\n return type === \"o\";\n }).map(_ref4 => {\n let [time, _type, text] = _ref4;\n return [time, text];\n });\n const duration = data[data.length - 1][0];\n for (const [_, text] of data) {\n byteCount += new Blob([text]).size;\n }\n return {\n cols,\n rows,\n duration\n };\n },\n play() {\n const startTime = performance.now();\n for (let i = 0; i < iterations; i++) {\n for (const [_, text] of data) {\n feed(text);\n }\n feed(\"\\x1bc\"); // reset terminal\n }\n\n const endTime = performance.now();\n const duration = (endTime - startTime) / 1000;\n const throughput = byteCount * iterations / duration;\n const throughputMbs = byteCount / (1024 * 1024) * iterations / duration;\n console.info(\"benchmark: result\", {\n byteCount,\n iterations,\n duration,\n throughput,\n throughputMbs\n });\n setTimeout(() => {\n setState(\"stopped\", {\n reason: \"ended\"\n });\n }, 0);\n return true;\n }\n };\n}\n\nclass Queue {\n constructor() {\n this.items = [];\n this.onPush = undefined;\n }\n push(item) {\n this.items.push(item);\n if (this.onPush !== undefined) {\n this.onPush(this.popAll());\n this.onPush = undefined;\n }\n }\n popAll() {\n if (this.items.length > 0) {\n const items = this.items;\n this.items = [];\n return items;\n } else {\n const thiz = this;\n return new Promise(resolve => {\n thiz.onPush = resolve;\n });\n }\n }\n}\n\nfunction getBuffer(bufferTime, feed, resize, onInput, onMarker, setTime, baseStreamTime, minFrameTime, logger) {\n const execute = executeEvent(feed, resize, onInput, onMarker);\n if (bufferTime === 0) {\n logger.debug(\"using no buffer\");\n return nullBuffer(execute);\n } else {\n bufferTime = bufferTime ?? {};\n let getBufferTime;\n if (typeof bufferTime === \"number\") {\n logger.debug(`using fixed time buffer (${bufferTime} ms)`);\n getBufferTime = _latency => bufferTime;\n } else if (typeof bufferTime === \"function\") {\n logger.debug(\"using custom dynamic buffer\");\n getBufferTime = bufferTime({\n logger\n });\n } else {\n logger.debug(\"using adaptive buffer\", bufferTime);\n getBufferTime = adaptiveBufferTimeProvider({\n logger\n }, bufferTime);\n }\n return buffer(getBufferTime, execute, setTime, logger, baseStreamTime ?? 0.0, minFrameTime);\n }\n}\nfunction nullBuffer(execute) {\n return {\n pushEvent(event) {\n execute(event[1], event[2]);\n },\n pushText(text) {\n execute(\"o\", text);\n },\n stop() {}\n };\n}\nfunction executeEvent(feed, resize, onInput, onMarker) {\n return function (code, data) {\n if (code === \"o\") {\n feed(data);\n } else if (code === \"i\") {\n onInput(data);\n } else if (code === \"r\") {\n resize(data.cols, data.rows);\n } else if (code === \"m\") {\n onMarker(data);\n }\n };\n}\nfunction buffer(getBufferTime, execute, setTime, logger, baseStreamTime) {\n let minFrameTime = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1.0 / 60;\n let epoch = performance.now() - baseStreamTime * 1000;\n let bufferTime = getBufferTime(0);\n const queue = new Queue();\n minFrameTime *= 1000;\n let prevElapsedStreamTime = -minFrameTime;\n let stop = false;\n function elapsedWallTime() {\n return performance.now() - epoch;\n }\n setTimeout(async () => {\n while (!stop) {\n const events = await queue.popAll();\n if (stop) return;\n for (const event of events) {\n const elapsedStreamTime = event[0] * 1000 + bufferTime;\n if (elapsedStreamTime - prevElapsedStreamTime < minFrameTime) {\n execute(event[1], event[2]);\n continue;\n }\n const delay = elapsedStreamTime - elapsedWallTime();\n if (delay > 0) {\n await sleep(delay);\n if (stop) return;\n }\n setTime(event[0]);\n execute(event[1], event[2]);\n prevElapsedStreamTime = elapsedStreamTime;\n }\n }\n }, 0);\n return {\n pushEvent(event) {\n let latency = elapsedWallTime() - event[0] * 1000;\n if (latency < 0) {\n logger.debug(`correcting epoch by ${latency} ms`);\n epoch += latency;\n latency = 0;\n }\n bufferTime = getBufferTime(latency);\n queue.push(event);\n },\n pushText(text) {\n queue.push([elapsedWallTime() / 1000, \"o\", text]);\n },\n stop() {\n stop = true;\n queue.push(undefined);\n }\n };\n}\nfunction sleep(t) {\n return new Promise(resolve => {\n setTimeout(resolve, t);\n });\n}\nfunction adaptiveBufferTimeProvider() {\n let {\n logger\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let {\n minBufferTime = 50,\n bufferLevelStep = 100,\n maxBufferLevel = 50,\n transitionDuration = 500,\n peakHalfLifeUp = 100,\n peakHalfLifeDown = 10000,\n floorHalfLifeUp = 5000,\n floorHalfLifeDown = 100,\n idealHalfLifeUp = 1000,\n idealHalfLifeDown = 5000,\n safetyMultiplier = 1.2,\n minImprovementDuration = 3000\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n function levelToMs(level) {\n return level === 0 ? minBufferTime : bufferLevelStep * level;\n }\n let bufferLevel = 1;\n let bufferTime = levelToMs(bufferLevel);\n let lastUpdateTime = performance.now();\n let smoothedPeakLatency = null;\n let smoothedFloorLatency = null;\n let smoothedIdealBufferTime = null;\n let stableSince = null;\n let targetBufferTime = null;\n let transitionRate = null;\n return function (latency) {\n const now = performance.now();\n const dt = Math.max(0, now - lastUpdateTime);\n lastUpdateTime = now;\n\n // adjust EMA-smoothed peak latency from current latency\n\n if (smoothedPeakLatency === null) {\n smoothedPeakLatency = latency;\n } else if (latency > smoothedPeakLatency) {\n const alphaUp = 1 - Math.pow(2, -dt / peakHalfLifeUp);\n smoothedPeakLatency += alphaUp * (latency - smoothedPeakLatency);\n } else {\n const alphaDown = 1 - Math.pow(2, -dt / peakHalfLifeDown);\n smoothedPeakLatency += alphaDown * (latency - smoothedPeakLatency);\n }\n smoothedPeakLatency = Math.max(smoothedPeakLatency, 0);\n\n // adjust EMA-smoothed floor latency from current latency\n\n if (smoothedFloorLatency === null) {\n smoothedFloorLatency = latency;\n } else if (latency > smoothedFloorLatency) {\n const alphaUp = 1 - Math.pow(2, -dt / floorHalfLifeUp);\n smoothedFloorLatency += alphaUp * (latency - smoothedFloorLatency);\n } else {\n const alphaDown = 1 - Math.pow(2, -dt / floorHalfLifeDown);\n smoothedFloorLatency += alphaDown * (latency - smoothedFloorLatency);\n }\n smoothedFloorLatency = Math.max(smoothedFloorLatency, 0);\n\n // adjust EMA-smoothed ideal buffer time\n\n const jitter = smoothedPeakLatency - smoothedFloorLatency;\n const idealBufferTime = safetyMultiplier * (smoothedPeakLatency + jitter);\n if (smoothedIdealBufferTime === null) {\n smoothedIdealBufferTime = idealBufferTime;\n } else if (idealBufferTime > smoothedIdealBufferTime) {\n const alphaUp = 1 - Math.pow(2, -dt / idealHalfLifeUp);\n smoothedIdealBufferTime += +alphaUp * (idealBufferTime - smoothedIdealBufferTime);\n } else {\n const alphaDown = 1 - Math.pow(2, -dt / idealHalfLifeDown);\n smoothedIdealBufferTime += +alphaDown * (idealBufferTime - smoothedIdealBufferTime);\n }\n\n // quantize smoothed ideal buffer time to discrete buffer level\n\n let newBufferLevel;\n if (smoothedIdealBufferTime <= minBufferTime) {\n newBufferLevel = 0;\n } else {\n newBufferLevel = clamp(Math.ceil(smoothedIdealBufferTime / bufferLevelStep), 1, maxBufferLevel);\n }\n if (latency > bufferTime) {\n logger.debug('buffer underrun', {\n latency,\n bufferTime\n });\n }\n\n // adjust buffer level and target buffer time for new buffer level\n\n if (newBufferLevel > bufferLevel) {\n if (latency > bufferTime) {\n // <- underrun - raise quickly\n bufferLevel = Math.min(newBufferLevel, bufferLevel + 3);\n } else {\n bufferLevel += 1;\n }\n targetBufferTime = levelToMs(bufferLevel);\n transitionRate = (targetBufferTime - bufferTime) / transitionDuration;\n stableSince = null;\n logger.debug('raising buffer', {\n latency,\n bufferTime,\n targetBufferTime\n });\n } else if (newBufferLevel < bufferLevel) {\n if (stableSince == null) stableSince = now;\n if (now - stableSince >= minImprovementDuration) {\n bufferLevel -= 1;\n targetBufferTime = levelToMs(bufferLevel);\n transitionRate = (targetBufferTime - bufferTime) / transitionDuration;\n stableSince = now;\n logger.debug('lowering buffer', {\n latency,\n bufferTime,\n targetBufferTime\n });\n }\n } else {\n stableSince = null;\n }\n\n // linear transition to target buffer time\n\n if (targetBufferTime !== null) {\n bufferTime += transitionRate * dt;\n if (transitionRate >= 0 && bufferTime > targetBufferTime || transitionRate < 0 && bufferTime < targetBufferTime) {\n bufferTime = targetBufferTime;\n targetBufferTime = null;\n }\n }\n return bufferTime;\n };\n}\nfunction clamp(x, lo, hi) {\n return Math.min(hi, Math.max(lo, x));\n}\n\nconst ONE_SEC_IN_USEC = 1000000;\nfunction alisHandler(logger) {\n const outputDecoder = new TextDecoder();\n const inputDecoder = new TextDecoder();\n let handler = parseMagicString;\n let lastEventTime;\n let markerIndex = 0;\n function parseMagicString(buffer) {\n const text = new TextDecoder().decode(buffer);\n if (text === \"ALiS\\x01\") {\n handler = parseFirstFrame;\n } else {\n throw new Error(\"not an ALiS v1 live stream\");\n }\n }\n function parseFirstFrame(buffer) {\n const view = new BinaryReader(new DataView(buffer));\n const type = view.getUint8();\n if (type !== 0x01) throw new Error(`expected reset (0x01) frame, got ${type}`);\n return parseResetFrame(view, buffer);\n }\n function parseResetFrame(view, buffer) {\n view.decodeVarUint();\n let time = view.decodeVarUint();\n lastEventTime = time;\n time = time / ONE_SEC_IN_USEC;\n markerIndex = 0;\n const cols = view.decodeVarUint();\n const rows = view.decodeVarUint();\n const themeFormat = view.getUint8();\n let theme;\n if (themeFormat === 8) {\n const len = (2 + 8) * 3;\n theme = parseTheme(new Uint8Array(buffer, view.offset, len));\n view.forward(len);\n } else if (themeFormat === 16) {\n const len = (2 + 16) * 3;\n theme = parseTheme(new Uint8Array(buffer, view.offset, len));\n view.forward(len);\n } else if (themeFormat !== 0) {\n throw new Error(`alis: invalid theme format (${themeFormat})`);\n }\n const initLen = view.decodeVarUint();\n let init;\n if (initLen > 0) {\n init = outputDecoder.decode(new Uint8Array(buffer, view.offset, initLen));\n }\n handler = parseFrame;\n return {\n time,\n term: {\n size: {\n cols,\n rows\n },\n theme,\n init\n }\n };\n }\n function parseFrame(buffer) {\n const view = new BinaryReader(new DataView(buffer));\n const type = view.getUint8();\n if (type === 0x01) {\n return parseResetFrame(view, buffer);\n } else if (type === 0x6f) {\n // \"o\"\n return parseOutputFrame(view, buffer);\n } else if (type === 0x69) {\n // \"i\"\n return parseInputFrame(view, buffer);\n } else if (type === 0x72) {\n // \"r\"\n return parseResizeFrame(view);\n } else if (type === 0x6d) {\n // \"m\"\n return parseMarkerFrame(view, buffer);\n } else if (type === 0x78) {\n // \"x\"\n return parseExitFrame(view);\n } else if (type === 0x04) {\n // EOT\n handler = parseFirstFrame;\n return false;\n } else {\n logger.debug(`alis: unknown frame type: ${type}`);\n }\n }\n function parseOutputFrame(view, buffer) {\n view.decodeVarUint();\n const relTime = view.decodeVarUint();\n lastEventTime += relTime;\n const len = view.decodeVarUint();\n const text = outputDecoder.decode(new Uint8Array(buffer, view.offset, len));\n return [lastEventTime / ONE_SEC_IN_USEC, \"o\", text];\n }\n function parseInputFrame(view, buffer) {\n view.decodeVarUint();\n const relTime = view.decodeVarUint();\n lastEventTime += relTime;\n const len = view.decodeVarUint();\n const text = inputDecoder.decode(new Uint8Array(buffer, view.offset, len));\n return [lastEventTime / ONE_SEC_IN_USEC, \"i\", text];\n }\n function parseResizeFrame(view) {\n view.decodeVarUint();\n const relTime = view.decodeVarUint();\n lastEventTime += relTime;\n const cols = view.decodeVarUint();\n const rows = view.decodeVarUint();\n return [lastEventTime / ONE_SEC_IN_USEC, \"r\", {\n cols,\n rows\n }];\n }\n function parseMarkerFrame(view, buffer) {\n view.decodeVarUint();\n const relTime = view.decodeVarUint();\n lastEventTime += relTime;\n const len = view.decodeVarUint();\n const decoder = new TextDecoder();\n const index = markerIndex++;\n const time = lastEventTime / ONE_SEC_IN_USEC;\n const label = decoder.decode(new Uint8Array(buffer, view.offset, len));\n return [time, \"m\", {\n index,\n time,\n label\n }];\n }\n function parseExitFrame(view) {\n view.decodeVarUint();\n const relTime = view.decodeVarUint();\n lastEventTime += relTime;\n const status = view.decodeVarUint();\n return [lastEventTime / ONE_SEC_IN_USEC, \"x\", {\n status\n }];\n }\n return function (buffer) {\n return handler(buffer);\n };\n}\nfunction parseTheme(arr) {\n const colorCount = arr.length / 3;\n const foreground = hexColor(arr[0], arr[1], arr[2]);\n const background = hexColor(arr[3], arr[4], arr[5]);\n const palette = [];\n for (let i = 2; i < colorCount; i++) {\n palette.push(hexColor(arr[i * 3], arr[i * 3 + 1], arr[i * 3 + 2]));\n }\n return normalizeTheme({\n foreground,\n background,\n palette\n });\n}\nfunction hexColor(r, g, b) {\n return `#${byteToHex(r)}${byteToHex(g)}${byteToHex(b)}`;\n}\nfunction byteToHex(value) {\n return value.toString(16).padStart(2, \"0\");\n}\nclass BinaryReader {\n constructor(inner) {\n let offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n this.inner = inner;\n this.offset = offset;\n }\n forward(delta) {\n this.offset += delta;\n }\n getUint8() {\n const value = this.inner.getUint8(this.offset);\n this.offset += 1;\n return value;\n }\n decodeVarUint() {\n let number = BigInt(0);\n let shift = BigInt(0);\n let byte = this.getUint8();\n while (byte > 127) {\n byte &= 127;\n number += BigInt(byte) << shift;\n shift += BigInt(7);\n byte = this.getUint8();\n }\n number = number + (BigInt(byte) << shift);\n return Number(number);\n }\n}\n\nfunction ascicastV2Handler() {\n let parse = parseHeader;\n function parseHeader(buffer) {\n const header = JSON.parse(buffer);\n if (header.version !== 2) {\n throw new Error(\"not an asciicast v2 stream\");\n }\n parse = parseEvent;\n return {\n time: 0.0,\n term: {\n size: {\n cols: header.width,\n rows: header.height\n }\n }\n };\n }\n function parseEvent(buffer) {\n const event = JSON.parse(buffer);\n if (event[1] === \"r\") {\n const [cols, rows] = event[2].split(\"x\");\n return [event[0], \"r\", {\n cols: parseInt(cols, 10),\n rows: parseInt(rows, 10)\n }];\n } else {\n return event;\n }\n }\n return function (buffer) {\n return parse(buffer);\n };\n}\n\nfunction ascicastV3Handler() {\n let parse = parseHeader;\n let currentTime = 0;\n function parseHeader(buffer) {\n const header = JSON.parse(buffer);\n if (header.version !== 3) {\n throw new Error(\"not an asciicast v3 stream\");\n }\n parse = parseEvent;\n const term = {\n size: {\n cols: header.term.cols,\n rows: header.term.rows\n }\n };\n if (header.term.theme) {\n const palette = typeof header.term.theme.palette === \"string\" ? header.term.theme.palette.split(\":\") : undefined;\n const theme = normalizeTheme({\n foreground: header.term.theme.fg,\n background: header.term.theme.bg,\n palette\n });\n if (theme) {\n term.theme = theme;\n }\n }\n return {\n time: 0.0,\n term\n };\n }\n function parseEvent(buffer) {\n const event = JSON.parse(buffer);\n const [interval, eventType, data] = event;\n currentTime += interval;\n if (eventType === \"r\") {\n const [cols, rows] = data.split(\"x\");\n return [currentTime, \"r\", {\n cols: parseInt(cols, 10),\n rows: parseInt(rows, 10)\n }];\n } else {\n return [currentTime, eventType, data];\n }\n }\n return function (buffer) {\n return parse(buffer);\n };\n}\n\nfunction rawHandler() {\n const outputDecoder = new TextDecoder();\n let parse = parseSize;\n function parseSize(buffer) {\n const text = outputDecoder.decode(buffer, {\n stream: true\n });\n const [cols, rows] = sizeFromResizeSeq(text) ?? sizeFromScriptStartMessage(text) ?? [80, 24];\n parse = parseOutput;\n return {\n time: 0.0,\n term: {\n size: {\n cols,\n rows\n },\n init: text\n }\n };\n }\n function parseOutput(buffer) {\n return outputDecoder.decode(buffer, {\n stream: true\n });\n }\n return function (buffer) {\n return parse(buffer);\n };\n}\nfunction sizeFromResizeSeq(text) {\n const match = text.match(/\\x1b\\[8;(\\d+);(\\d+)t/);\n if (match !== null) {\n return [parseInt(match[2], 10), parseInt(match[1], 10)];\n }\n}\nfunction sizeFromScriptStartMessage(text) {\n const match = text.match(/\\[.*COLUMNS=\"(\\d{1,3})\" LINES=\"(\\d{1,3})\".*\\]/);\n if (match !== null) {\n return [parseInt(match[1], 10), parseInt(match[2], 10)];\n }\n}\n\nconst RECONNECT_DELAY_BASE = 500;\nconst RECONNECT_DELAY_CAP = 10000;\nfunction exponentialDelay(attempt) {\n const base = Math.min(RECONNECT_DELAY_BASE * Math.pow(2, attempt), RECONNECT_DELAY_CAP);\n return Math.random() * base;\n}\nfunction websocket(_ref, _ref2, _ref3) {\n let {\n url,\n bufferTime,\n reconnectDelay = exponentialDelay,\n minFrameTime\n } = _ref;\n let {\n feed,\n reset,\n resize,\n onInput,\n onMarker,\n setState,\n logger\n } = _ref2;\n let {\n audioUrl\n } = _ref3;\n logger = new PrefixedLogger(logger, \"websocket: \");\n let socket;\n let buf;\n let clock = new NullClock();\n let reconnectAttempt = 0;\n let successfulConnectionTimeout;\n let stop = false;\n let wasOnline = false;\n let gotExitEvent = false;\n let gotEotEvent = false;\n let initTimeout;\n let audioElement;\n function connect() {\n socket = new WebSocket(url, [\"v1.alis\", \"v2.asciicast\", \"v3.asciicast\", \"raw\"]);\n socket.binaryType = \"arraybuffer\";\n let proto;\n socket.onopen = () => {\n proto = socket.protocol || \"raw\";\n logger.info(\"opened\");\n logger.info(`activating ${proto} protocol handler`);\n if (proto === \"v1.alis\") {\n socket.onmessage = onMessage(alisHandler(logger));\n } else if (proto === \"v2.asciicast\") {\n socket.onmessage = onMessage(ascicastV2Handler());\n } else if (proto === \"v3.asciicast\") {\n socket.onmessage = onMessage(ascicastV3Handler());\n } else if (proto === \"raw\") {\n socket.onmessage = onMessage(rawHandler());\n }\n successfulConnectionTimeout = setTimeout(() => {\n reconnectAttempt = 0;\n }, 1000);\n };\n socket.onclose = event => {\n clearTimeout(initTimeout);\n stopBuffer();\n if (stop) return;\n let ended = false;\n let endedMessage = \"Stream ended\";\n if (proto === \"v1.alis\") {\n if (gotEotEvent || event.code >= 4000 && event.code <= 4100) {\n ended = true;\n endedMessage = event.reason || endedMessage;\n }\n } else if (gotExitEvent || event.code === 1000 || event.code === 1005) {\n ended = true;\n }\n if (ended) {\n logger.info(\"closed\");\n setState(\"ended\", {\n message: endedMessage\n });\n } else if (event.code === 1002) {\n logger.debug(`close reason: ${event.reason}`);\n setState(\"ended\", {\n message: \"Err: Player not compatible with the server\"\n });\n } else {\n clearTimeout(successfulConnectionTimeout);\n const delay = reconnectDelay(reconnectAttempt++);\n logger.info(`unexpected close, reconnecting in ${delay}...`);\n setState(\"loading\");\n setTimeout(connect, delay);\n }\n };\n wasOnline = false;\n }\n function onMessage(handler) {\n initTimeout = setTimeout(onStreamEnd, 5000);\n return function (event) {\n try {\n const result = handler(event.data);\n if (buf) {\n if (Array.isArray(result)) {\n buf.pushEvent(result);\n if (result[1] === \"x\") {\n gotExitEvent = true;\n }\n } else if (typeof result === \"string\") {\n buf.pushText(result);\n } else if (typeof result === \"object\" && !Array.isArray(result)) {\n // TODO: check last event ID from the parser, don't reset if we didn't miss anything\n onStreamReset(result);\n } else if (result === false) {\n // EOT\n onStreamEnd();\n gotEotEvent = true;\n } else if (result !== undefined) {\n throw new Error(`unexpected value from protocol handler: ${result}`);\n }\n } else {\n if (typeof result === \"object\" && !Array.isArray(result)) {\n onStreamReset(result);\n clearTimeout(initTimeout);\n } else if (result === undefined) {\n clearTimeout(initTimeout);\n initTimeout = setTimeout(onStreamEnd, 1000);\n } else {\n clearTimeout(initTimeout);\n throw new Error(`unexpected value from protocol handler: ${result}`);\n }\n }\n } catch (e) {\n socket.close();\n throw e;\n }\n };\n }\n function onStreamReset(_ref4) {\n let {\n time,\n term\n } = _ref4;\n const {\n size,\n init,\n theme\n } = term;\n const {\n cols,\n rows\n } = size;\n logger.info(`stream reset (${cols}x${rows} @${time})`);\n setState(\"playing\");\n stopBuffer();\n buf = getBuffer(bufferTime, feed, resize, onInput, onMarker, t => clock.setTime(t), time, minFrameTime, logger);\n reset(cols, rows, init, theme);\n clock = new Clock();\n wasOnline = true;\n gotExitEvent = false;\n gotEotEvent = false;\n if (typeof time === \"number\") {\n clock.setTime(time);\n }\n }\n function onStreamEnd() {\n stopBuffer();\n if (wasOnline) {\n logger.info(\"stream ended\");\n setState(\"offline\", {\n message: \"Stream ended\"\n });\n } else {\n logger.info(\"stream offline\");\n setState(\"offline\", {\n message: \"Stream offline\"\n });\n }\n clock = new NullClock();\n }\n function stopBuffer() {\n if (buf) buf.stop();\n buf = null;\n }\n function startAudio() {\n if (!audioUrl) return;\n audioElement = new Audio();\n audioElement.preload = \"auto\";\n audioElement.crossOrigin = \"anonymous\";\n audioElement.src = audioUrl;\n audioElement.play();\n }\n function stopAudio() {\n if (!audioElement) return;\n audioElement.pause();\n }\n function mute() {\n if (audioElement) {\n audioElement.muted = true;\n return true;\n }\n }\n function unmute() {\n if (audioElement) {\n audioElement.muted = false;\n return true;\n }\n }\n return {\n init: () => {\n return {\n hasAudio: !!audioUrl\n };\n },\n play: () => {\n connect();\n startAudio();\n },\n stop: () => {\n stop = true;\n stopBuffer();\n if (socket !== undefined) socket.close();\n stopAudio();\n },\n mute,\n unmute,\n getCurrentTime: () => clock.getTime()\n };\n}\n\nfunction eventsource(_ref, _ref2) {\n let {\n url,\n bufferTime,\n minFrameTime\n } = _ref;\n let {\n feed,\n reset,\n resize,\n onInput,\n onMarker,\n setState,\n logger\n } = _ref2;\n logger = new PrefixedLogger(logger, \"eventsource: \");\n let es;\n let buf;\n let clock = new NullClock();\n function initBuffer(baseStreamTime) {\n if (buf !== undefined) buf.stop();\n buf = getBuffer(bufferTime, feed, resize, onInput, onMarker, t => clock.setTime(t), baseStreamTime, minFrameTime, logger);\n }\n return {\n play: () => {\n es = new EventSource(url);\n es.addEventListener(\"open\", () => {\n logger.info(\"opened\");\n initBuffer();\n });\n es.addEventListener(\"error\", e => {\n logger.info(\"errored\");\n logger.debug({\n e\n });\n setState(\"loading\");\n });\n es.addEventListener(\"message\", event => {\n const e = JSON.parse(event.data);\n if (Array.isArray(e)) {\n buf.pushEvent(e);\n } else if (e.cols !== undefined || e.width !== undefined) {\n const cols = e.cols ?? e.width;\n const rows = e.rows ?? e.height;\n logger.debug(`vt reset (${cols}x${rows})`);\n setState(\"playing\");\n initBuffer(e.time);\n reset(cols, rows, e.init ?? undefined);\n clock = new Clock();\n if (typeof e.time === \"number\") {\n clock.setTime(e.time);\n }\n } else if (e.state === \"offline\") {\n logger.info(\"stream offline\");\n setState(\"offline\", {\n message: \"Stream offline\"\n });\n clock = new NullClock();\n }\n });\n es.addEventListener(\"done\", () => {\n logger.info(\"closed\");\n es.close();\n setState(\"ended\", {\n message: \"Stream ended\"\n });\n });\n },\n stop: () => {\n if (buf !== undefined) buf.stop();\n if (es !== undefined) es.close();\n },\n getCurrentTime: () => clock.getTime()\n };\n}\n\nasync function parse$1(responses, _ref) {\n let {\n encoding\n } = _ref;\n const textDecoder = new TextDecoder(encoding);\n let cols;\n let rows;\n let timing = (await responses[0].text()).split(\"\\n\").filter(line => line.length > 0).map(line => line.split(\" \"));\n if (timing[0].length < 3) {\n timing = timing.map(entry => [\"O\", entry[0], entry[1]]);\n }\n const buffer = await responses[1].arrayBuffer();\n const array = new Uint8Array(buffer);\n const dataOffset = array.findIndex(byte => byte == 0x0a) + 1;\n const header = textDecoder.decode(array.subarray(0, dataOffset));\n const sizeMatch = header.match(/COLUMNS=\"(\\d+)\" LINES=\"(\\d+)\"/);\n if (sizeMatch !== null) {\n cols = parseInt(sizeMatch[1], 10);\n rows = parseInt(sizeMatch[2], 10);\n }\n const stdout = {\n array,\n cursor: dataOffset\n };\n let stdin = stdout;\n if (responses[2] !== undefined) {\n const buffer = await responses[2].arrayBuffer();\n const array = new Uint8Array(buffer);\n stdin = {\n array,\n cursor: dataOffset\n };\n }\n const events = [];\n let time = 0;\n for (const entry of timing) {\n time += parseFloat(entry[1]);\n if (entry[0] === \"O\") {\n const count = parseInt(entry[2], 10);\n const bytes = stdout.array.subarray(stdout.cursor, stdout.cursor + count);\n const text = textDecoder.decode(bytes);\n events.push([time, \"o\", text]);\n stdout.cursor += count;\n } else if (entry[0] === \"I\") {\n const count = parseInt(entry[2], 10);\n const bytes = stdin.array.subarray(stdin.cursor, stdin.cursor + count);\n const text = textDecoder.decode(bytes);\n events.push([time, \"i\", text]);\n stdin.cursor += count;\n } else if (entry[0] === \"S\" && entry[2] === \"SIGWINCH\") {\n const cols = parseInt(entry[4].slice(5), 10);\n const rows = parseInt(entry[3].slice(5), 10);\n events.push([time, \"r\", `${cols}x${rows}`]);\n } else if (entry[0] === \"H\" && entry[2] === \"COLUMNS\") {\n cols = parseInt(entry[3], 10);\n } else if (entry[0] === \"H\" && entry[2] === \"LINES\") {\n rows = parseInt(entry[3], 10);\n }\n }\n cols = cols ?? 80;\n rows = rows ?? 24;\n return {\n cols,\n rows,\n events\n };\n}\n\nasync function parse(response, _ref) {\n let {\n encoding\n } = _ref;\n const textDecoder = new TextDecoder(encoding);\n const buffer = await response.arrayBuffer();\n const array = new Uint8Array(buffer);\n const firstFrame = parseFrame(array);\n const baseTime = firstFrame.time;\n const firstFrameText = textDecoder.decode(firstFrame.data);\n const sizeMatch = firstFrameText.match(/\\x1b\\[8;(\\d+);(\\d+)t/);\n const events = [];\n let cols = 80;\n let rows = 24;\n if (sizeMatch !== null) {\n cols = parseInt(sizeMatch[2], 10);\n rows = parseInt(sizeMatch[1], 10);\n }\n let cursor = 0;\n let frame = parseFrame(array);\n while (frame !== undefined) {\n const time = frame.time - baseTime;\n const text = textDecoder.decode(frame.data);\n events.push([time, \"o\", text]);\n cursor += frame.len;\n frame = parseFrame(array.subarray(cursor));\n }\n return {\n cols,\n rows,\n events\n };\n}\nfunction parseFrame(array) {\n if (array.length < 13) return;\n const time = parseTimestamp(array.subarray(0, 8));\n const len = parseNumber(array.subarray(8, 12));\n const data = array.subarray(12, 12 + len);\n return {\n time,\n data,\n len: len + 12\n };\n}\nfunction parseNumber(array) {\n return array[0] + array[1] * 256 + array[2] * 256 * 256 + array[3] * 256 * 256 * 256;\n}\nfunction parseTimestamp(array) {\n const sec = parseNumber(array.subarray(0, 4));\n const usec = parseNumber(array.subarray(4, 8));\n return sec + usec / 1000000;\n}\n\nconst DEFAULT_COLS = 80;\nconst DEFAULT_ROWS = 24;\nconst vt = init({\n module: vtWasmModule\n}); // trigger async loading of wasm\n\nclass State {\n constructor(core) {\n this.core = core;\n this.driver = core.driver;\n }\n onEnter(data) {}\n init() {}\n play() {}\n pause() {}\n togglePlay() {}\n mute() {\n if (this.driver && this.driver.mute()) {\n this.core._dispatchEvent(\"muted\", true);\n }\n }\n unmute() {\n if (this.driver && this.driver.unmute()) {\n this.core._dispatchEvent(\"muted\", false);\n }\n }\n seek(where) {\n return false;\n }\n step(n) {}\n stop() {\n this.driver.stop();\n }\n}\nclass UninitializedState extends State {\n async init() {\n try {\n await this.core._initializeDriver();\n return this.core._setState(\"idle\");\n } catch (e) {\n this.core._setState(\"errored\");\n throw e;\n }\n }\n async play() {\n this.core._dispatchEvent(\"play\");\n const idleState = await this.init();\n await idleState.doPlay();\n }\n async togglePlay() {\n await this.play();\n }\n async seek(where) {\n const idleState = await this.init();\n return await idleState.seek(where);\n }\n async step(n) {\n const idleState = await this.init();\n await idleState.step(n);\n }\n stop() {}\n}\nclass Idle extends State {\n onEnter(_ref) {\n let {\n reason,\n message\n } = _ref;\n this.core._dispatchEvent(\"idle\", {\n message\n });\n if (reason === \"paused\") {\n this.core._dispatchEvent(\"pause\");\n }\n }\n async play() {\n this.core._dispatchEvent(\"play\");\n await this.doPlay();\n }\n async doPlay() {\n const stop = await this.driver.play();\n if (stop === true) {\n this.core._setState(\"playing\");\n } else if (typeof stop === \"function\") {\n this.core._setState(\"playing\");\n this.driver.stop = stop;\n }\n }\n async togglePlay() {\n await this.play();\n }\n seek(where) {\n return this.driver.seek(where);\n }\n step(n) {\n this.driver.step(n);\n }\n}\nclass PlayingState extends State {\n onEnter() {\n this.core._dispatchEvent(\"playing\");\n }\n pause() {\n if (this.driver.pause() === true) {\n this.core._setState(\"idle\", {\n reason: \"paused\"\n });\n }\n }\n togglePlay() {\n this.pause();\n }\n seek(where) {\n return this.driver.seek(where);\n }\n}\nclass LoadingState extends State {\n onEnter() {\n this.core._dispatchEvent(\"loading\");\n }\n}\nclass OfflineState extends State {\n onEnter(_ref2) {\n let {\n message\n } = _ref2;\n this.core._dispatchEvent(\"offline\", {\n message\n });\n }\n}\nclass EndedState extends State {\n onEnter(_ref3) {\n let {\n message\n } = _ref3;\n this.core._dispatchEvent(\"ended\", {\n message\n });\n }\n async play() {\n this.core._dispatchEvent(\"play\");\n if (await this.driver.restart()) {\n this.core._setState('playing');\n }\n }\n async togglePlay() {\n await this.play();\n }\n async seek(where) {\n if ((await this.driver.seek(where)) === true) {\n this.core._setState('idle');\n return true;\n }\n return false;\n }\n}\nclass ErroredState extends State {\n onEnter() {\n this.core._dispatchEvent(\"errored\");\n }\n}\nclass Core {\n constructor(src, opts) {\n this.logger = opts.logger;\n this.state = new UninitializedState(this);\n this.stateName = \"uninitialized\";\n this.driver = getDriver(src);\n this.changedLines = new Set();\n this.duration = undefined;\n this.cols = opts.cols;\n this.rows = opts.rows;\n this.speed = opts.speed;\n this.loop = opts.loop;\n this.autoPlay = opts.autoPlay;\n this.idleTimeLimit = opts.idleTimeLimit;\n this.preload = opts.preload;\n this.startAt = parseNpt(opts.startAt);\n this.poster = this._parsePoster(opts.poster);\n this.markers = this._normalizeMarkers(opts.markers);\n this.pauseOnMarkers = opts.pauseOnMarkers;\n this.audioUrl = opts.audioUrl;\n this.boldIsBright = opts.boldIsBright ?? false;\n this.commandQueue = Promise.resolve();\n this.needsClear = false;\n this.eventHandlers = new Map([[\"ended\", []], [\"errored\", []], [\"idle\", []], [\"input\", []], [\"loading\", []], [\"marker\", []], [\"metadata\", []], [\"muted\", []], [\"offline\", []], [\"pause\", []], [\"play\", []], [\"playing\", []], [\"ready\", []], [\"seeked\", []], [\"vtUpdate\", []]]);\n }\n async init() {\n this.wasm = await vt;\n const {\n memory\n } = await this.wasm.default();\n this.memory = memory;\n this._initializeVt(this.cols ?? DEFAULT_COLS, this.rows ?? DEFAULT_ROWS);\n const feed = this._feed.bind(this);\n const onInput = data => {\n this._dispatchEvent(\"input\", {\n data\n });\n };\n const onMarker = _ref4 => {\n let {\n index,\n time,\n label\n } = _ref4;\n this._dispatchEvent(\"marker\", {\n index,\n time,\n label\n });\n };\n const reset = this._resetVt.bind(this);\n const resize = this._resizeVt.bind(this);\n const setState = this._setState.bind(this);\n const posterTime = this.poster.type === \"npt\" && !this.autoPlay ? this.poster.value : undefined;\n this.driver = this.driver({\n feed,\n onInput,\n onMarker,\n reset,\n resize,\n setState,\n logger: this.logger\n }, {\n cols: this.cols,\n rows: this.rows,\n speed: this.speed,\n idleTimeLimit: this.idleTimeLimit,\n startAt: this.startAt,\n loop: this.loop,\n posterTime: posterTime,\n markers: this.markers,\n pauseOnMarkers: this.pauseOnMarkers,\n audioUrl: this.audioUrl\n });\n if (typeof this.driver === \"function\") {\n this.driver = {\n play: this.driver\n };\n }\n if (this.preload || posterTime !== undefined) {\n this._withState(state => state.init());\n }\n const config = {\n isPausable: !!this.driver.pause,\n isSeekable: !!this.driver.seek\n };\n if (this.driver.init === undefined) {\n this.driver.init = () => {\n return {};\n };\n }\n if (this.driver.pause === undefined) {\n this.driver.pause = () => {};\n }\n if (this.driver.seek === undefined) {\n this.driver.seek = where => false;\n }\n if (this.driver.step === undefined) {\n this.driver.step = n => {};\n }\n if (this.driver.stop === undefined) {\n this.driver.stop = () => {};\n }\n if (this.driver.restart === undefined) {\n this.driver.restart = () => {};\n }\n if (this.driver.mute === undefined) {\n this.driver.mute = () => {};\n }\n if (this.driver.unmute === undefined) {\n this.driver.unmute = () => {};\n }\n if (this.driver.getCurrentTime === undefined) {\n const play = this.driver.play;\n let clock = new NullClock();\n this.driver.play = () => {\n clock = new Clock(this.speed);\n return play();\n };\n this.driver.getCurrentTime = () => clock.getTime();\n }\n this._dispatchEvent(\"ready\", config);\n if (this.autoPlay) {\n this.play();\n } else if (this.poster.type === \"text\") {\n this._feed(this.poster.value);\n this.needsClear = true;\n }\n }\n play() {\n this._clearIfNeeded();\n return this._withState(state => state.play());\n }\n pause() {\n return this._withState(state => state.pause());\n }\n togglePlay() {\n this._clearIfNeeded();\n return this._withState(state => state.togglePlay());\n }\n seek(where) {\n this._clearIfNeeded();\n return this._withState(async state => {\n if (await state.seek(where)) {\n this._dispatchEvent(\"seeked\");\n }\n });\n }\n step(n) {\n this._clearIfNeeded();\n return this._withState(state => state.step(n));\n }\n stop() {\n return this._withState(state => state.stop());\n }\n mute() {\n return this._withState(state => state.mute());\n }\n unmute() {\n return this._withState(state => state.unmute());\n }\n getLine(n, cursorOn) {\n return this.vt.getLine(n, cursorOn);\n }\n getDataView(_ref5, size) {\n let [ptr, len] = _ref5;\n return new DataView(this.memory.buffer, ptr, len * size);\n }\n getUint32Array(_ref6) {\n let [ptr, len] = _ref6;\n return new Uint32Array(this.memory.buffer, ptr, len);\n }\n getCursor() {\n const cursor = this.vt.getCursor();\n if (cursor) {\n return {\n col: cursor[0],\n row: cursor[1],\n visible: true\n };\n }\n return {\n col: 0,\n row: 0,\n visible: false\n };\n }\n getCurrentTime() {\n return this.driver.getCurrentTime();\n }\n getRemainingTime() {\n if (typeof this.duration === \"number\") {\n return this.duration - Math.min(this.getCurrentTime(), this.duration);\n }\n }\n getProgress() {\n if (typeof this.duration === \"number\") {\n return Math.min(this.getCurrentTime(), this.duration) / this.duration;\n }\n }\n getDuration() {\n return this.duration;\n }\n addEventListener(eventName, handler) {\n this.eventHandlers.get(eventName).push(handler);\n }\n removeEventListener(eventName, handler) {\n const handlers = this.eventHandlers.get(eventName);\n if (!handlers) return;\n const idx = handlers.indexOf(handler);\n if (idx !== -1) handlers.splice(idx, 1);\n }\n _dispatchEvent(eventName) {\n let data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n for (const h of this.eventHandlers.get(eventName)) {\n h(data);\n }\n }\n _withState(f) {\n return this._enqueueCommand(() => f(this.state));\n }\n _enqueueCommand(f) {\n this.commandQueue = this.commandQueue.then(f);\n return this.commandQueue;\n }\n _setState(newState) {\n let data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.stateName === newState) return this.state;\n this.stateName = newState;\n if (newState === \"playing\") {\n this.state = new PlayingState(this);\n } else if (newState === \"idle\") {\n this.state = new Idle(this);\n } else if (newState === \"loading\") {\n this.state = new LoadingState(this);\n } else if (newState === \"ended\") {\n this.state = new EndedState(this);\n } else if (newState === \"offline\") {\n this.state = new OfflineState(this);\n } else if (newState === \"errored\") {\n this.state = new ErroredState(this);\n } else {\n throw new Error(`invalid state: ${newState}`);\n }\n this.state.onEnter(data);\n return this.state;\n }\n _feed(data) {\n const changedRows = this.vt.feed(data);\n this._dispatchEvent(\"vtUpdate\", {\n changedRows\n });\n }\n async _initializeDriver() {\n const meta = await this.driver.init();\n this.cols = this.cols ?? meta.cols ?? DEFAULT_COLS;\n this.rows = this.rows ?? meta.rows ?? DEFAULT_ROWS;\n this.duration = this.duration ?? meta.duration;\n this.markers = this._normalizeMarkers(meta.markers) ?? this.markers ?? [];\n if (this.cols === 0) {\n this.cols = DEFAULT_COLS;\n }\n if (this.rows === 0) {\n this.rows = DEFAULT_ROWS;\n }\n this._initializeVt(this.cols, this.rows);\n if (meta.poster !== undefined) {\n meta.poster.forEach(text => this.vt.feed(text));\n this.needsClear = true;\n } else if (this.poster.type === \"text\") {\n this.vt.feed(this.poster.value);\n this.needsClear = true;\n }\n this._dispatchEvent(\"metadata\", {\n size: {\n cols: this.cols,\n rows: this.rows\n },\n theme: meta.theme ?? null,\n duration: this.duration,\n markers: this.markers,\n hasAudio: meta.hasAudio\n });\n this._dispatchEvent(\"vtUpdate\", {\n size: {\n cols: this.cols,\n rows: this.rows\n },\n theme: meta.theme ?? null,\n changedRows: Array.from({\n length: this.rows\n }, (_, i) => i)\n });\n }\n _clearIfNeeded() {\n if (this.needsClear) {\n this._feed('\\x1bc');\n this.needsClear = false;\n }\n }\n _resetVt(cols, rows) {\n let init = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n let theme = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : undefined;\n this.logger.debug(`core: vt reset (${cols}x${rows})`);\n this.cols = cols;\n this.rows = rows;\n this._initializeVt(cols, rows);\n if (init !== undefined && init !== \"\") {\n this.vt.feed(init);\n }\n this._dispatchEvent(\"metadata\", {\n size: {\n cols,\n rows\n },\n theme: theme ?? null\n });\n this._dispatchEvent(\"vtUpdate\", {\n size: {\n cols,\n rows\n },\n theme: theme ?? null,\n changedRows: Array.from({\n length: rows\n }, (_, i) => i)\n });\n }\n _resizeVt(cols, rows) {\n if (cols === this.vt.cols && rows === this.vt.rows) return;\n const changedRows = this.vt.resize(cols, rows);\n this.vt.cols = cols;\n this.vt.rows = rows;\n this.logger.debug(`core: vt resize (${cols}x${rows})`);\n this._dispatchEvent(\"metadata\", {\n size: {\n cols,\n rows\n }\n });\n this._dispatchEvent(\"vtUpdate\", {\n size: {\n cols,\n rows\n },\n changedRows\n });\n }\n _initializeVt(cols, rows) {\n this.logger.debug('vt init', {\n cols,\n rows\n });\n this.vt = this.wasm.create(cols, rows, 100, this.boldIsBright);\n this.vt.cols = cols;\n this.vt.rows = rows;\n }\n _parsePoster(poster) {\n if (typeof poster !== \"string\") return {};\n if (poster.substring(0, 16) == \"data:text/plain,\") {\n return {\n type: \"text\",\n value: poster.substring(16)\n };\n } else if (poster.substring(0, 4) == \"npt:\") {\n return {\n type: \"npt\",\n value: parseNpt(poster.substring(4))\n };\n }\n return {};\n }\n _normalizeMarkers(markers) {\n if (Array.isArray(markers)) {\n return markers.map(m => typeof m === \"number\" ? [m, \"\"] : m);\n }\n }\n}\nconst DRIVERS = new Map([[\"benchmark\", benchmark], [\"clock\", clock], [\"eventsource\", eventsource], [\"random\", random], [\"recording\", recording], [\"websocket\", websocket]]);\nconst PARSERS = new Map([[\"asciicast\", parse$2], [\"typescript\", parse$1], [\"ttyrec\", parse]]);\nfunction getDriver(src) {\n if (typeof src === \"function\") return src;\n if (typeof src === \"string\") {\n if (src.substring(0, 5) == \"ws://\" || src.substring(0, 6) == \"wss://\") {\n src = {\n driver: \"websocket\",\n url: src\n };\n } else if (src.substring(0, 6) == \"clock:\") {\n src = {\n driver: \"clock\"\n };\n } else if (src.substring(0, 7) == \"random:\") {\n src = {\n driver: \"random\"\n };\n } else if (src.substring(0, 10) == \"benchmark:\") {\n src = {\n driver: \"benchmark\",\n url: src.substring(10)\n };\n } else {\n src = {\n driver: \"recording\",\n url: src\n };\n }\n }\n if (src.driver === undefined) {\n src.driver = \"recording\";\n }\n if (src.driver == \"recording\") {\n if (src.parser === undefined) {\n src.parser = \"asciicast\";\n }\n if (typeof src.parser === \"string\") {\n if (PARSERS.has(src.parser)) {\n src.parser = PARSERS.get(src.parser);\n } else {\n throw new Error(`unknown parser: ${src.parser}`);\n }\n }\n }\n if (DRIVERS.has(src.driver)) {\n const driver = DRIVERS.get(src.driver);\n return (callbacks, opts) => driver(src, callbacks, opts);\n } else {\n throw new Error(`unsupported driver: ${JSON.stringify(src)}`);\n }\n}\n\nexport { Core as C };\n","import { h as hexToOklab, l as lerpOklab, o as oklabToHex, n as normalizeHexColor, t as throttle, d as debounce } from './logging--P0CsEu_.js';\n\nconst IS_DEV = false;\nconst equalFn = (a, b) => a === b;\nconst $PROXY = Symbol(\"solid-proxy\");\nconst $TRACK = Symbol(\"solid-track\");\nconst signalOptions = {\n equals: equalFn\n};\nlet runEffects = runQueue;\nconst STALE = 1;\nconst PENDING = 2;\nconst UNOWNED = {\n owned: null,\n cleanups: null,\n context: null,\n owner: null\n};\nvar Owner = null;\nlet Transition$1 = null;\nlet ExternalSourceConfig = null;\nlet Listener = null;\nlet Updates = null;\nlet Effects = null;\nlet ExecCount = 0;\nfunction createRoot(fn, detachedOwner) {\n const listener = Listener,\n owner = Owner,\n unowned = fn.length === 0,\n current = detachedOwner === undefined ? owner : detachedOwner,\n root = unowned\n ? UNOWNED\n : {\n owned: null,\n cleanups: null,\n context: current ? current.context : null,\n owner: current\n },\n updateFn = unowned ? fn : () => fn(() => untrack(() => cleanNode(root)));\n Owner = root;\n Listener = null;\n try {\n return runUpdates(updateFn, true);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n}\nfunction createSignal(value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const s = {\n value,\n observers: null,\n observerSlots: null,\n comparator: options.equals || undefined\n };\n const setter = value => {\n if (typeof value === \"function\") {\n value = value(s.value);\n }\n return writeSignal(s, value);\n };\n return [readSignal.bind(s), setter];\n}\nfunction createComputed(fn, value, options) {\n const c = createComputation(fn, value, true, STALE);\n updateComputation(c);\n}\nfunction createRenderEffect(fn, value, options) {\n const c = createComputation(fn, value, false, STALE);\n updateComputation(c);\n}\nfunction createEffect(fn, value, options) {\n runEffects = runUserEffects;\n const c = createComputation(fn, value, false, STALE);\n c.user = true;\n Effects ? Effects.push(c) : updateComputation(c);\n}\nfunction createMemo(fn, value, options) {\n options = options ? Object.assign({}, signalOptions, options) : signalOptions;\n const c = createComputation(fn, value, true, 0);\n c.observers = null;\n c.observerSlots = null;\n c.comparator = options.equals || undefined;\n updateComputation(c);\n return readSignal.bind(c);\n}\nfunction batch(fn) {\n return runUpdates(fn, false);\n}\nfunction untrack(fn) {\n if (Listener === null) return fn();\n const listener = Listener;\n Listener = null;\n try {\n if (ExternalSourceConfig) ;\n return fn();\n } finally {\n Listener = listener;\n }\n}\nfunction onMount(fn) {\n createEffect(() => untrack(fn));\n}\nfunction onCleanup(fn) {\n if (Owner === null);\n else if (Owner.cleanups === null) Owner.cleanups = [fn];\n else Owner.cleanups.push(fn);\n return fn;\n}\nfunction getListener() {\n return Listener;\n}\nfunction startTransition(fn) {\n const l = Listener;\n const o = Owner;\n return Promise.resolve().then(() => {\n Listener = l;\n Owner = o;\n let t;\n runUpdates(fn, false);\n Listener = Owner = null;\n return t ? t.done : undefined;\n });\n}\nconst [transPending, setTransPending] = /*@__PURE__*/ createSignal(false);\nfunction useTransition() {\n return [transPending, startTransition];\n}\nfunction children(fn) {\n const children = createMemo(fn);\n const memo = createMemo(() => resolveChildren(children()));\n memo.toArray = () => {\n const c = memo();\n return Array.isArray(c) ? c : c != null ? [c] : [];\n };\n return memo;\n}\nfunction readSignal() {\n if (this.sources && (this.state)) {\n if ((this.state) === STALE) updateComputation(this);\n else {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(this), false);\n Updates = updates;\n }\n }\n if (Listener) {\n const sSlot = this.observers ? this.observers.length : 0;\n if (!Listener.sources) {\n Listener.sources = [this];\n Listener.sourceSlots = [sSlot];\n } else {\n Listener.sources.push(this);\n Listener.sourceSlots.push(sSlot);\n }\n if (!this.observers) {\n this.observers = [Listener];\n this.observerSlots = [Listener.sources.length - 1];\n } else {\n this.observers.push(Listener);\n this.observerSlots.push(Listener.sources.length - 1);\n }\n }\n return this.value;\n}\nfunction writeSignal(node, value, isComp) {\n let current =\n node.value;\n if (!node.comparator || !node.comparator(current, value)) {\n node.value = value;\n if (node.observers && node.observers.length) {\n runUpdates(() => {\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n const TransitionRunning = Transition$1 && Transition$1.running;\n if (TransitionRunning && Transition$1.disposed.has(o)) ;\n if (TransitionRunning ? !o.tState : !o.state) {\n if (o.pure) Updates.push(o);\n else Effects.push(o);\n if (o.observers) markDownstream(o);\n }\n if (!TransitionRunning) o.state = STALE;\n }\n if (Updates.length > 10e5) {\n Updates = [];\n if (IS_DEV);\n throw new Error();\n }\n }, false);\n }\n }\n return value;\n}\nfunction updateComputation(node) {\n if (!node.fn) return;\n cleanNode(node);\n const time = ExecCount;\n runComputation(\n node,\n node.value,\n time\n );\n}\nfunction runComputation(node, value, time) {\n let nextValue;\n const owner = Owner,\n listener = Listener;\n Listener = Owner = node;\n try {\n nextValue = node.fn(value);\n } catch (err) {\n if (node.pure) {\n {\n node.state = STALE;\n node.owned && node.owned.forEach(cleanNode);\n node.owned = null;\n }\n }\n node.updatedAt = time + 1;\n return handleError(err);\n } finally {\n Listener = listener;\n Owner = owner;\n }\n if (!node.updatedAt || node.updatedAt <= time) {\n if (node.updatedAt != null && \"observers\" in node) {\n writeSignal(node, nextValue);\n } else node.value = nextValue;\n node.updatedAt = time;\n }\n}\nfunction createComputation(fn, init, pure, state = STALE, options) {\n const c = {\n fn,\n state: state,\n updatedAt: null,\n owned: null,\n sources: null,\n sourceSlots: null,\n cleanups: null,\n value: init,\n owner: Owner,\n context: Owner ? Owner.context : null,\n pure\n };\n if (Owner === null);\n else if (Owner !== UNOWNED) {\n {\n if (!Owner.owned) Owner.owned = [c];\n else Owner.owned.push(c);\n }\n }\n return c;\n}\nfunction runTop(node) {\n if ((node.state) === 0) return;\n if ((node.state) === PENDING) return lookUpstream(node);\n if (node.suspense && untrack(node.suspense.inFallback)) return node.suspense.effects.push(node);\n const ancestors = [node];\n while ((node = node.owner) && (!node.updatedAt || node.updatedAt < ExecCount)) {\n if (node.state) ancestors.push(node);\n }\n for (let i = ancestors.length - 1; i >= 0; i--) {\n node = ancestors[i];\n if ((node.state) === STALE) {\n updateComputation(node);\n } else if ((node.state) === PENDING) {\n const updates = Updates;\n Updates = null;\n runUpdates(() => lookUpstream(node, ancestors[0]), false);\n Updates = updates;\n }\n }\n}\nfunction runUpdates(fn, init) {\n if (Updates) return fn();\n let wait = false;\n if (!init) Updates = [];\n if (Effects) wait = true;\n else Effects = [];\n ExecCount++;\n try {\n const res = fn();\n completeUpdates(wait);\n return res;\n } catch (err) {\n if (!wait) Effects = null;\n Updates = null;\n handleError(err);\n }\n}\nfunction completeUpdates(wait) {\n if (Updates) {\n runQueue(Updates);\n Updates = null;\n }\n if (wait) return;\n const e = Effects;\n Effects = null;\n if (e.length) runUpdates(() => runEffects(e), false);\n}\nfunction runQueue(queue) {\n for (let i = 0; i < queue.length; i++) runTop(queue[i]);\n}\nfunction runUserEffects(queue) {\n let i,\n userLength = 0;\n for (i = 0; i < queue.length; i++) {\n const e = queue[i];\n if (!e.user) runTop(e);\n else queue[userLength++] = e;\n }\n for (i = 0; i < userLength; i++) runTop(queue[i]);\n}\nfunction lookUpstream(node, ignore) {\n node.state = 0;\n for (let i = 0; i < node.sources.length; i += 1) {\n const source = node.sources[i];\n if (source.sources) {\n const state = source.state;\n if (state === STALE) {\n if (source !== ignore && (!source.updatedAt || source.updatedAt < ExecCount))\n runTop(source);\n } else if (state === PENDING) lookUpstream(source, ignore);\n }\n }\n}\nfunction markDownstream(node) {\n for (let i = 0; i < node.observers.length; i += 1) {\n const o = node.observers[i];\n if (!o.state) {\n o.state = PENDING;\n if (o.pure) Updates.push(o);\n else Effects.push(o);\n o.observers && markDownstream(o);\n }\n }\n}\nfunction cleanNode(node) {\n let i;\n if (node.sources) {\n while (node.sources.length) {\n const source = node.sources.pop(),\n index = node.sourceSlots.pop(),\n obs = source.observers;\n if (obs && obs.length) {\n const n = obs.pop(),\n s = source.observerSlots.pop();\n if (index < obs.length) {\n n.sourceSlots[s] = index;\n obs[index] = n;\n source.observerSlots[index] = s;\n }\n }\n }\n }\n if (node.tOwned) {\n for (i = node.tOwned.length - 1; i >= 0; i--) cleanNode(node.tOwned[i]);\n delete node.tOwned;\n }\n if (node.owned) {\n for (i = node.owned.length - 1; i >= 0; i--) cleanNode(node.owned[i]);\n node.owned = null;\n }\n if (node.cleanups) {\n for (i = node.cleanups.length - 1; i >= 0; i--) node.cleanups[i]();\n node.cleanups = null;\n }\n node.state = 0;\n}\nfunction castError(err) {\n if (err instanceof Error) return err;\n return new Error(typeof err === \"string\" ? err : \"Unknown error\", {\n cause: err\n });\n}\nfunction handleError(err, owner = Owner) {\n const error = castError(err);\n throw error;\n}\nfunction resolveChildren(children) {\n if (typeof children === \"function\" && !children.length) return resolveChildren(children());\n if (Array.isArray(children)) {\n const results = [];\n for (let i = 0; i < children.length; i++) {\n const result = resolveChildren(children[i]);\n Array.isArray(result) ? results.push.apply(results, result) : results.push(result);\n }\n return results;\n }\n return children;\n}\n\nconst FALLBACK = Symbol(\"fallback\");\nfunction dispose(d) {\n for (let i = 0; i < d.length; i++) d[i]();\n}\nfunction mapArray(list, mapFn, options = {}) {\n let items = [],\n mapped = [],\n disposers = [],\n len = 0,\n indexes = mapFn.length > 1 ? [] : null;\n onCleanup(() => dispose(disposers));\n return () => {\n let newItems = list() || [],\n newLen = newItems.length,\n i,\n j;\n newItems[$TRACK];\n return untrack(() => {\n let newIndices, newIndicesNext, temp, tempdisposers, tempIndexes, start, end, newEnd, item;\n if (newLen === 0) {\n if (len !== 0) {\n dispose(disposers);\n disposers = [];\n items = [];\n mapped = [];\n len = 0;\n indexes && (indexes = []);\n }\n if (options.fallback) {\n items = [FALLBACK];\n mapped[0] = createRoot(disposer => {\n disposers[0] = disposer;\n return options.fallback();\n });\n len = 1;\n }\n } else if (len === 0) {\n mapped = new Array(newLen);\n for (j = 0; j < newLen; j++) {\n items[j] = newItems[j];\n mapped[j] = createRoot(mapper);\n }\n len = newLen;\n } else {\n temp = new Array(newLen);\n tempdisposers = new Array(newLen);\n indexes && (tempIndexes = new Array(newLen));\n for (\n start = 0, end = Math.min(len, newLen);\n start < end && items[start] === newItems[start];\n start++\n );\n for (\n end = len - 1, newEnd = newLen - 1;\n end >= start && newEnd >= start && items[end] === newItems[newEnd];\n end--, newEnd--\n ) {\n temp[newEnd] = mapped[end];\n tempdisposers[newEnd] = disposers[end];\n indexes && (tempIndexes[newEnd] = indexes[end]);\n }\n newIndices = new Map();\n newIndicesNext = new Array(newEnd + 1);\n for (j = newEnd; j >= start; j--) {\n item = newItems[j];\n i = newIndices.get(item);\n newIndicesNext[j] = i === undefined ? -1 : i;\n newIndices.set(item, j);\n }\n for (i = start; i <= end; i++) {\n item = items[i];\n j = newIndices.get(item);\n if (j !== undefined && j !== -1) {\n temp[j] = mapped[i];\n tempdisposers[j] = disposers[i];\n indexes && (tempIndexes[j] = indexes[i]);\n j = newIndicesNext[j];\n newIndices.set(item, j);\n } else disposers[i]();\n }\n for (j = start; j < newLen; j++) {\n if (j in temp) {\n mapped[j] = temp[j];\n disposers[j] = tempdisposers[j];\n if (indexes) {\n indexes[j] = tempIndexes[j];\n indexes[j](j);\n }\n } else mapped[j] = createRoot(mapper);\n }\n mapped = mapped.slice(0, (len = newLen));\n items = newItems.slice(0);\n }\n return mapped;\n });\n function mapper(disposer) {\n disposers[j] = disposer;\n if (indexes) {\n const [s, set] = createSignal(j);\n indexes[j] = set;\n return mapFn(newItems[j], s);\n }\n return mapFn(newItems[j]);\n }\n };\n}\nfunction createComponent(Comp, props) {\n return untrack(() => Comp(props || {}));\n}\n\nconst narrowedError = name => `Stale read from <${name}>.`;\nfunction For(props) {\n const fallback = \"fallback\" in props && {\n fallback: () => props.fallback\n };\n return createMemo(mapArray(() => props.each, props.children, fallback || undefined));\n}\nfunction Show(props) {\n const keyed = props.keyed;\n const conditionValue = createMemo(() => props.when, undefined, undefined);\n const condition = keyed\n ? conditionValue\n : createMemo(conditionValue, undefined, {\n equals: (a, b) => !a === !b\n });\n return createMemo(\n () => {\n const c = condition();\n if (c) {\n const child = props.children;\n const fn = typeof child === \"function\" && child.length > 0;\n return fn\n ? untrack(() =>\n child(\n keyed\n ? c\n : () => {\n if (!untrack(condition)) throw narrowedError(\"Show\");\n return conditionValue();\n }\n )\n )\n : child;\n }\n return props.fallback;\n },\n undefined,\n undefined\n );\n}\nfunction Switch(props) {\n const chs = children(() => props.children);\n const switchFunc = createMemo(() => {\n const ch = chs();\n const mps = Array.isArray(ch) ? ch : [ch];\n let func = () => undefined;\n for (let i = 0; i < mps.length; i++) {\n const index = i;\n const mp = mps[i];\n const prevFunc = func;\n const conditionValue = createMemo(\n () => (prevFunc() ? undefined : mp.when),\n undefined,\n undefined\n );\n const condition = mp.keyed\n ? conditionValue\n : createMemo(conditionValue, undefined, {\n equals: (a, b) => !a === !b\n });\n func = () => prevFunc() || (condition() ? [index, conditionValue, mp] : undefined);\n }\n return func;\n });\n return createMemo(\n () => {\n const sel = switchFunc()();\n if (!sel) return props.fallback;\n const [index, conditionValue, mp] = sel;\n const child = mp.children;\n const fn = typeof child === \"function\" && child.length > 0;\n return fn\n ? untrack(() =>\n child(\n mp.keyed\n ? conditionValue()\n : () => {\n if (untrack(switchFunc)()?.[0] !== index) throw narrowedError(\"Match\");\n return conditionValue();\n }\n )\n )\n : child;\n },\n undefined,\n undefined\n );\n}\nfunction Match(props) {\n return props;\n}\n\nfunction reconcileArrays(parentNode, a, b) {\n let bLength = b.length,\n aEnd = a.length,\n bEnd = bLength,\n aStart = 0,\n bStart = 0,\n after = a[aEnd - 1].nextSibling,\n map = null;\n while (aStart < aEnd || bStart < bEnd) {\n if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n continue;\n }\n while (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n if (aEnd === aStart) {\n const node = bEnd < bLength ? (bStart ? b[bStart - 1].nextSibling : b[bEnd - bStart]) : after;\n while (bStart < bEnd) parentNode.insertBefore(b[bStart++], node);\n } else if (bEnd === bStart) {\n while (aStart < aEnd) {\n if (!map || !map.has(a[aStart])) a[aStart].remove();\n aStart++;\n }\n } else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n const node = a[--aEnd].nextSibling;\n parentNode.insertBefore(b[bStart++], a[aStart++].nextSibling);\n parentNode.insertBefore(b[--bEnd], node);\n a[aEnd] = b[bEnd];\n } else {\n if (!map) {\n map = new Map();\n let i = bStart;\n while (i < bEnd) map.set(b[i], i++);\n }\n const index = map.get(a[aStart]);\n if (index != null) {\n if (bStart < index && index < bEnd) {\n let i = aStart,\n sequence = 1,\n t;\n while (++i < aEnd && i < bEnd) {\n if ((t = map.get(a[i])) == null || t !== index + sequence) break;\n sequence++;\n }\n if (sequence > index - bStart) {\n const node = a[aStart];\n while (bStart < index) parentNode.insertBefore(b[bStart++], node);\n } else parentNode.replaceChild(b[bStart++], a[aStart++]);\n } else aStart++;\n } else a[aStart++].remove();\n }\n }\n}\n\nconst $$EVENTS = \"_$DX_DELEGATE\";\nfunction render(code, element, init, options = {}) {\n let disposer;\n createRoot(dispose => {\n disposer = dispose;\n element === document\n ? code()\n : insert(element, code(), element.firstChild ? null : undefined, init);\n }, options.owner);\n return () => {\n disposer();\n element.textContent = \"\";\n };\n}\nfunction template(html, isImportNode, isSVG, isMathML) {\n let node;\n const create = () => {\n const t = document.createElement(\"template\");\n t.innerHTML = html;\n return t.content.firstChild;\n };\n const fn = isImportNode\n ? () => untrack(() => document.importNode(node || (node = create()), true))\n : () => (node || (node = create())).cloneNode(true);\n fn.cloneNode = fn;\n return fn;\n}\nfunction delegateEvents(eventNames, document = window.document) {\n const e = document[$$EVENTS] || (document[$$EVENTS] = new Set());\n for (let i = 0, l = eventNames.length; i < l; i++) {\n const name = eventNames[i];\n if (!e.has(name)) {\n e.add(name);\n document.addEventListener(name, eventHandler);\n }\n }\n}\nfunction setAttribute(node, name, value) {\n if (value == null) node.removeAttribute(name);\n else node.setAttribute(name, value);\n}\nfunction className(node, value) {\n if (value == null) node.removeAttribute(\"class\");\n else node.className = value;\n}\nfunction addEventListener(node, name, handler, delegate) {\n {\n if (Array.isArray(handler)) {\n node[`$$${name}`] = handler[0];\n node[`$$${name}Data`] = handler[1];\n } else node[`$$${name}`] = handler;\n }\n}\nfunction style(node, value, prev) {\n if (!value) return prev ? setAttribute(node, \"style\") : value;\n const nodeStyle = node.style;\n if (typeof value === \"string\") return (nodeStyle.cssText = value);\n typeof prev === \"string\" && (nodeStyle.cssText = prev = undefined);\n prev || (prev = {});\n value || (value = {});\n let v, s;\n for (s in prev) {\n value[s] == null && nodeStyle.removeProperty(s);\n delete prev[s];\n }\n for (s in value) {\n v = value[s];\n if (v !== prev[s]) {\n nodeStyle.setProperty(s, v);\n prev[s] = v;\n }\n }\n return prev;\n}\nfunction use(fn, element, arg) {\n return untrack(() => fn(element, arg));\n}\nfunction insert(parent, accessor, marker, initial) {\n if (marker !== undefined && !initial) initial = [];\n if (typeof accessor !== \"function\") return insertExpression(parent, accessor, initial, marker);\n createRenderEffect(current => insertExpression(parent, accessor(), current, marker), initial);\n}\nfunction eventHandler(e) {\n let node = e.target;\n const key = `$$${e.type}`;\n const oriTarget = e.target;\n const oriCurrentTarget = e.currentTarget;\n const retarget = value =>\n Object.defineProperty(e, \"target\", {\n configurable: true,\n value\n });\n const handleNode = () => {\n const handler = node[key];\n if (handler && !node.disabled) {\n const data = node[`${key}Data`];\n data !== undefined ? handler.call(node, data, e) : handler.call(node, e);\n if (e.cancelBubble) return;\n }\n node.host &&\n typeof node.host !== \"string\" &&\n !node.host._$host &&\n node.contains(e.target) &&\n retarget(node.host);\n return true;\n };\n const walkUpTree = () => {\n while (handleNode() && (node = node._$host || node.parentNode || node.host));\n };\n Object.defineProperty(e, \"currentTarget\", {\n configurable: true,\n get() {\n return node || document;\n }\n });\n if (e.composedPath) {\n const path = e.composedPath();\n retarget(path[0]);\n for (let i = 0; i < path.length - 2; i++) {\n node = path[i];\n if (!handleNode()) break;\n if (node._$host) {\n node = node._$host;\n walkUpTree();\n break;\n }\n if (node.parentNode === oriCurrentTarget) {\n break;\n }\n }\n } else walkUpTree();\n retarget(oriTarget);\n}\nfunction insertExpression(parent, value, current, marker, unwrapArray) {\n while (typeof current === \"function\") current = current();\n if (value === current) return current;\n const t = typeof value,\n multi = marker !== undefined;\n parent = (multi && current[0] && current[0].parentNode) || parent;\n if (t === \"string\" || t === \"number\") {\n if (t === \"number\") {\n value = value.toString();\n if (value === current) return current;\n }\n if (multi) {\n let node = current[0];\n if (node && node.nodeType === 3) {\n node.data !== value && (node.data = value);\n } else node = document.createTextNode(value);\n current = cleanChildren(parent, current, marker, node);\n } else {\n if (current !== \"\" && typeof current === \"string\") {\n current = parent.firstChild.data = value;\n } else current = parent.textContent = value;\n }\n } else if (value == null || t === \"boolean\") {\n current = cleanChildren(parent, current, marker);\n } else if (t === \"function\") {\n createRenderEffect(() => {\n let v = value();\n while (typeof v === \"function\") v = v();\n current = insertExpression(parent, v, current, marker);\n });\n return () => current;\n } else if (Array.isArray(value)) {\n const array = [];\n const currentArray = current && Array.isArray(current);\n if (normalizeIncomingArray(array, value, current, unwrapArray)) {\n createRenderEffect(() => (current = insertExpression(parent, array, current, marker, true)));\n return () => current;\n }\n if (array.length === 0) {\n current = cleanChildren(parent, current, marker);\n if (multi) return current;\n } else if (currentArray) {\n if (current.length === 0) {\n appendNodes(parent, array, marker);\n } else reconcileArrays(parent, current, array);\n } else {\n current && cleanChildren(parent);\n appendNodes(parent, array);\n }\n current = array;\n } else if (value.nodeType) {\n if (Array.isArray(current)) {\n if (multi) return (current = cleanChildren(parent, current, marker, value));\n cleanChildren(parent, current, null, value);\n } else if (current == null || current === \"\" || !parent.firstChild) {\n parent.appendChild(value);\n } else parent.replaceChild(value, parent.firstChild);\n current = value;\n } else;\n return current;\n}\nfunction normalizeIncomingArray(normalized, array, current, unwrap) {\n let dynamic = false;\n for (let i = 0, len = array.length; i < len; i++) {\n let item = array[i],\n prev = current && current[normalized.length],\n t;\n if (item == null || item === true || item === false);\n else if ((t = typeof item) === \"object\" && item.nodeType) {\n normalized.push(item);\n } else if (Array.isArray(item)) {\n dynamic = normalizeIncomingArray(normalized, item, prev) || dynamic;\n } else if (t === \"function\") {\n if (unwrap) {\n while (typeof item === \"function\") item = item();\n dynamic =\n normalizeIncomingArray(\n normalized,\n Array.isArray(item) ? item : [item],\n Array.isArray(prev) ? prev : [prev]\n ) || dynamic;\n } else {\n normalized.push(item);\n dynamic = true;\n }\n } else {\n const value = String(item);\n if (prev && prev.nodeType === 3 && prev.data === value) normalized.push(prev);\n else normalized.push(document.createTextNode(value));\n }\n }\n return dynamic;\n}\nfunction appendNodes(parent, array, marker = null) {\n for (let i = 0, len = array.length; i < len; i++) parent.insertBefore(array[i], marker);\n}\nfunction cleanChildren(parent, current, marker, replacement) {\n if (marker === undefined) return (parent.textContent = \"\");\n const node = replacement || document.createTextNode(\"\");\n if (current.length) {\n let inserted = false;\n for (let i = current.length - 1; i >= 0; i--) {\n const el = current[i];\n if (node !== el) {\n const isParent = el.parentNode === parent;\n if (!inserted && !i)\n isParent ? parent.replaceChild(node, el) : parent.insertBefore(node, marker);\n else isParent && el.remove();\n } else inserted = true;\n }\n } else parent.insertBefore(node, marker);\n return [node];\n}\n\nconst $RAW = Symbol(\"store-raw\"),\n $NODE = Symbol(\"store-node\"),\n $HAS = Symbol(\"store-has\"),\n $SELF = Symbol(\"store-self\");\nfunction wrap$1(value) {\n let p = value[$PROXY];\n if (!p) {\n Object.defineProperty(value, $PROXY, {\n value: (p = new Proxy(value, proxyTraps$1))\n });\n if (!Array.isArray(value)) {\n const keys = Object.keys(value),\n desc = Object.getOwnPropertyDescriptors(value);\n for (let i = 0, l = keys.length; i < l; i++) {\n const prop = keys[i];\n if (desc[prop].get) {\n Object.defineProperty(value, prop, {\n enumerable: desc[prop].enumerable,\n get: desc[prop].get.bind(p)\n });\n }\n }\n }\n }\n return p;\n}\nfunction isWrappable(obj) {\n let proto;\n return (\n obj != null &&\n typeof obj === \"object\" &&\n (obj[$PROXY] ||\n !(proto = Object.getPrototypeOf(obj)) ||\n proto === Object.prototype ||\n Array.isArray(obj))\n );\n}\nfunction unwrap(item, set = new Set()) {\n let result, unwrapped, v, prop;\n if ((result = item != null && item[$RAW])) return result;\n if (!isWrappable(item) || set.has(item)) return item;\n if (Array.isArray(item)) {\n if (Object.isFrozen(item)) item = item.slice(0);\n else set.add(item);\n for (let i = 0, l = item.length; i < l; i++) {\n v = item[i];\n if ((unwrapped = unwrap(v, set)) !== v) item[i] = unwrapped;\n }\n } else {\n if (Object.isFrozen(item)) item = Object.assign({}, item);\n else set.add(item);\n const keys = Object.keys(item),\n desc = Object.getOwnPropertyDescriptors(item);\n for (let i = 0, l = keys.length; i < l; i++) {\n prop = keys[i];\n if (desc[prop].get) continue;\n v = item[prop];\n if ((unwrapped = unwrap(v, set)) !== v) item[prop] = unwrapped;\n }\n }\n return item;\n}\nfunction getNodes(target, symbol) {\n let nodes = target[symbol];\n if (!nodes)\n Object.defineProperty(target, symbol, {\n value: (nodes = Object.create(null))\n });\n return nodes;\n}\nfunction getNode(nodes, property, value) {\n if (nodes[property]) return nodes[property];\n const [s, set] = createSignal(value, {\n equals: false,\n internal: true\n });\n s.$ = set;\n return (nodes[property] = s);\n}\nfunction proxyDescriptor$1(target, property) {\n const desc = Reflect.getOwnPropertyDescriptor(target, property);\n if (!desc || desc.get || !desc.configurable || property === $PROXY || property === $NODE)\n return desc;\n delete desc.value;\n delete desc.writable;\n desc.get = () => target[$PROXY][property];\n return desc;\n}\nfunction trackSelf(target) {\n getListener() && getNode(getNodes(target, $NODE), $SELF)();\n}\nfunction ownKeys(target) {\n trackSelf(target);\n return Reflect.ownKeys(target);\n}\nconst proxyTraps$1 = {\n get(target, property, receiver) {\n if (property === $RAW) return target;\n if (property === $PROXY) return receiver;\n if (property === $TRACK) {\n trackSelf(target);\n return receiver;\n }\n const nodes = getNodes(target, $NODE);\n const tracked = nodes[property];\n let value = tracked ? tracked() : target[property];\n if (property === $NODE || property === $HAS || property === \"__proto__\") return value;\n if (!tracked) {\n const desc = Object.getOwnPropertyDescriptor(target, property);\n if (\n getListener() &&\n (typeof value !== \"function\" || target.hasOwnProperty(property)) &&\n !(desc && desc.get)\n )\n value = getNode(nodes, property, value)();\n }\n return isWrappable(value) ? wrap$1(value) : value;\n },\n has(target, property) {\n if (\n property === $RAW ||\n property === $PROXY ||\n property === $TRACK ||\n property === $NODE ||\n property === $HAS ||\n property === \"__proto__\"\n )\n return true;\n getListener() && getNode(getNodes(target, $HAS), property)();\n return property in target;\n },\n set() {\n return true;\n },\n deleteProperty() {\n return true;\n },\n ownKeys: ownKeys,\n getOwnPropertyDescriptor: proxyDescriptor$1\n};\nfunction setProperty(state, property, value, deleting = false) {\n if (!deleting && state[property] === value) return;\n const prev = state[property],\n len = state.length;\n if (value === undefined) {\n delete state[property];\n if (state[$HAS] && state[$HAS][property] && prev !== undefined) state[$HAS][property].$();\n } else {\n state[property] = value;\n if (state[$HAS] && state[$HAS][property] && prev === undefined) state[$HAS][property].$();\n }\n let nodes = getNodes(state, $NODE),\n node;\n if ((node = getNode(nodes, property, prev))) node.$(() => value);\n if (Array.isArray(state) && state.length !== len) {\n for (let i = state.length; i < len; i++) (node = nodes[i]) && node.$();\n (node = getNode(nodes, \"length\", len)) && node.$(state.length);\n }\n (node = nodes[$SELF]) && node.$();\n}\nfunction mergeStoreNode(state, value) {\n const keys = Object.keys(value);\n for (let i = 0; i < keys.length; i += 1) {\n const key = keys[i];\n setProperty(state, key, value[key]);\n }\n}\nfunction updateArray(current, next) {\n if (typeof next === \"function\") next = next(current);\n next = unwrap(next);\n if (Array.isArray(next)) {\n if (current === next) return;\n let i = 0,\n len = next.length;\n for (; i < len; i++) {\n const value = next[i];\n if (current[i] !== value) setProperty(current, i, value);\n }\n setProperty(current, \"length\", len);\n } else mergeStoreNode(current, next);\n}\nfunction updatePath(current, path, traversed = []) {\n let part,\n prev = current;\n if (path.length > 1) {\n part = path.shift();\n const partType = typeof part,\n isArray = Array.isArray(current);\n if (Array.isArray(part)) {\n for (let i = 0; i < part.length; i++) {\n updatePath(current, [part[i]].concat(path), traversed);\n }\n return;\n } else if (isArray && partType === \"function\") {\n for (let i = 0; i < current.length; i++) {\n if (part(current[i], i)) updatePath(current, [i].concat(path), traversed);\n }\n return;\n } else if (isArray && partType === \"object\") {\n const { from = 0, to = current.length - 1, by = 1 } = part;\n for (let i = from; i <= to; i += by) {\n updatePath(current, [i].concat(path), traversed);\n }\n return;\n } else if (path.length > 1) {\n updatePath(current[part], path, [part].concat(traversed));\n return;\n }\n prev = current[part];\n traversed = [part].concat(traversed);\n }\n let value = path[0];\n if (typeof value === \"function\") {\n value = value(prev, traversed);\n if (value === prev) return;\n }\n if (part === undefined && value == undefined) return;\n value = unwrap(value);\n if (part === undefined || (isWrappable(prev) && isWrappable(value) && !Array.isArray(value))) {\n mergeStoreNode(prev, value);\n } else setProperty(current, part, value);\n}\nfunction createStore(...[store, options]) {\n const unwrappedStore = unwrap(store || {});\n const isArray = Array.isArray(unwrappedStore);\n const wrappedStore = wrap$1(unwrappedStore);\n function setStore(...args) {\n batch(() => {\n isArray && args.length === 1\n ? updateArray(unwrappedStore, args[0])\n : updatePath(unwrappedStore, args);\n });\n }\n return [wrappedStore, setStore];\n}\n\nconst noop = () => {\n /* noop */\n};\nconst noopTransition = (el, done) => done();\n/**\n * Create an element transition interface for switching between single elements.\n * It can be used to implement own transition effect, or a custom `<Transition>`-like component.\n *\n * It will observe {@link source} and return a signal with array of elements to be rendered (current one and exiting ones).\n *\n * @param source a signal with the current element. Any nullish value will mean there is no element.\n * Any object can used as the source, but most likely you will want to use a `HTMLElement` or `SVGElement`.\n * @param options transition options {@link SwitchTransitionOptions}\n * @returns a signal with an array of the current element and exiting previous elements.\n *\n * @see https://github.com/solidjs-community/solid-primitives/tree/main/packages/transition-group#createSwitchTransition\n *\n * @example\n * const [el, setEl] = createSignal<HTMLDivElement>();\n *\n * const rendered = createSwitchTransition(el, {\n * onEnter(el, done) {\n * // the enter callback is called before the element is inserted into the DOM\n * // so run the animation in the next animation frame / microtask\n * queueMicrotask(() => { ... })\n * },\n * onExit(el, done) {\n * // the exitting element is kept in the DOM until the done() callback is called\n * },\n * })\n *\n * // change the source to trigger the transition\n * setEl(refToHtmlElement);\n */\nfunction createSwitchTransition(source, options) {\n const initSource = untrack(source);\n const initReturned = initSource ? [initSource] : [];\n const { onEnter = noopTransition, onExit = noopTransition } = options;\n const [returned, setReturned] = createSignal(options.appear ? [] : initReturned);\n const [isTransitionPending] = useTransition();\n let next;\n let isExiting = false;\n function exitTransition(el, after) {\n if (!el)\n return after && after();\n isExiting = true;\n onExit(el, () => {\n batch(() => {\n isExiting = false;\n setReturned(p => p.filter(e => e !== el));\n after && after();\n });\n });\n }\n function enterTransition(after) {\n const el = next;\n if (!el)\n return after && after();\n next = undefined;\n setReturned(p => [el, ...p]);\n onEnter(el, after ?? noop);\n }\n const triggerTransitions = options.mode === \"out-in\"\n ? // exit -> enter\n // exit -> enter\n prev => isExiting || exitTransition(prev, enterTransition)\n : options.mode === \"in-out\"\n ? // enter -> exit\n // enter -> exit\n prev => enterTransition(() => exitTransition(prev))\n : // exit & enter\n // exit & enter\n prev => {\n exitTransition(prev);\n enterTransition();\n };\n createComputed((prev) => {\n const el = source();\n if (untrack(isTransitionPending)) {\n // wait for pending transition to end before animating\n isTransitionPending();\n return prev;\n }\n if (el !== prev) {\n next = el;\n batch(() => untrack(() => triggerTransitions(prev)));\n }\n return el;\n }, options.appear ? undefined : initSource);\n return returned;\n}\n\n/**\n * Default predicate used in `resolveElements()` and `resolveFirst()` to filter Elements.\n *\n * On the client it uses `instanceof Element` check, on the server it checks for the object with `t` property. (generated by compiling JSX)\n */\nconst defaultElementPredicate = (item) => item instanceof Element;\n/**\n * Utility for resolving recursively nested JSX children in search of the first element that matches a predicate.\n *\n * It does **not** create a computation - should be wrapped in one to repeat the resolution on changes.\n *\n * @param value JSX children\n * @param predicate predicate to filter elements\n * @returns single found element or `null` if no elements were found\n */\nfunction getFirstChild(value, predicate) {\n if (predicate(value))\n return value;\n if (typeof value === \"function\" && !value.length)\n return getFirstChild(value(), predicate);\n if (Array.isArray(value)) {\n for (const item of value) {\n const result = getFirstChild(item, predicate);\n if (result)\n return result;\n }\n }\n return null;\n}\nfunction resolveFirst(fn, predicate = defaultElementPredicate, serverPredicate = defaultElementPredicate) {\n const children = createMemo(fn);\n return createMemo(() => getFirstChild(children(), predicate));\n}\n\n// src/common.ts\nfunction createClassnames(props) {\n return createMemo(() => {\n const name = props.name || \"s\";\n return {\n enterActive: (props.enterActiveClass || name + \"-enter-active\").split(\" \"),\n enter: (props.enterClass || name + \"-enter\").split(\" \"),\n enterTo: (props.enterToClass || name + \"-enter-to\").split(\" \"),\n exitActive: (props.exitActiveClass || name + \"-exit-active\").split(\" \"),\n exit: (props.exitClass || name + \"-exit\").split(\" \"),\n exitTo: (props.exitToClass || name + \"-exit-to\").split(\" \"),\n move: (props.moveClass || name + \"-move\").split(\" \")\n };\n });\n}\nfunction nextFrame(fn) {\n requestAnimationFrame(() => requestAnimationFrame(fn));\n}\nfunction enterTransition(classes, events, el, done) {\n const { onBeforeEnter, onEnter, onAfterEnter } = events;\n onBeforeEnter?.(el);\n el.classList.add(...classes.enter);\n el.classList.add(...classes.enterActive);\n queueMicrotask(() => {\n if (!el.parentNode)\n return done?.();\n onEnter?.(el, () => endTransition());\n });\n nextFrame(() => {\n el.classList.remove(...classes.enter);\n el.classList.add(...classes.enterTo);\n if (!onEnter || onEnter.length < 2) {\n el.addEventListener(\"transitionend\", endTransition);\n el.addEventListener(\"animationend\", endTransition);\n }\n });\n function endTransition(e) {\n if (!e || e.target === el) {\n done?.();\n el.removeEventListener(\"transitionend\", endTransition);\n el.removeEventListener(\"animationend\", endTransition);\n el.classList.remove(...classes.enterActive);\n el.classList.remove(...classes.enterTo);\n onAfterEnter?.(el);\n }\n }\n}\nfunction exitTransition(classes, events, el, done) {\n const { onBeforeExit, onExit, onAfterExit } = events;\n if (!el.parentNode)\n return done?.();\n onBeforeExit?.(el);\n el.classList.add(...classes.exit);\n el.classList.add(...classes.exitActive);\n onExit?.(el, () => endTransition());\n nextFrame(() => {\n el.classList.remove(...classes.exit);\n el.classList.add(...classes.exitTo);\n if (!onExit || onExit.length < 2) {\n el.addEventListener(\"transitionend\", endTransition);\n el.addEventListener(\"animationend\", endTransition);\n }\n });\n function endTransition(e) {\n if (!e || e.target === el) {\n done?.();\n el.removeEventListener(\"transitionend\", endTransition);\n el.removeEventListener(\"animationend\", endTransition);\n el.classList.remove(...classes.exitActive);\n el.classList.remove(...classes.exitTo);\n onAfterExit?.(el);\n }\n }\n}\nvar TRANSITION_MODE_MAP = {\n inout: \"in-out\",\n outin: \"out-in\"\n};\nvar Transition = (props) => {\n const classnames = createClassnames(props);\n return createSwitchTransition(\n resolveFirst(() => props.children),\n {\n mode: TRANSITION_MODE_MAP[props.mode],\n appear: props.appear,\n onEnter(el, done) {\n enterTransition(classnames(), props, el, done);\n },\n onExit(el, done) {\n exitTransition(classnames(), props, el, done);\n }\n }\n );\n};\n\nconst _tmpl$$e = /*#__PURE__*/template(`<div class=\"ap-term\"><canvas></canvas><svg class=\"ap-term-symbols\" xmlns=\"http://www.w3.org/2000/svg\" preserveAspectRatio=\"none\" width=\"100%\" height=\"100%\" aria-hidden=\"true\"><defs></defs><g></g></svg><pre class=\"ap-term-text\" aria-live=\"off\" tabindex=\"0\"></pre></div>`, 12);\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\nconst BLOCK_H_RES = 8;\nconst BLOCK_V_RES = 24;\nconst BOLD_MASK = 1;\nconst FAINT_MASK = 1 << 1;\nconst ITALIC_MASK = 1 << 2;\nconst UNDERLINE_MASK = 1 << 3;\nconst STRIKETHROUGH_MASK = 1 << 4;\nconst BLINK_MASK = 1 << 5;\nvar Terminal = (props => {\n const core = props.core;\n const textRowPool = [];\n const vectorSymbolRowPool = [];\n const vectorSymbolUsePool = [];\n const vectorSymbolDefCache = new Set();\n const colorsCache = new Map();\n const attrClassCache = new Map();\n const [size, setSize] = createSignal({\n cols: props.cols,\n rows: props.rows\n }, {\n equals: (newVal, oldVal) => newVal.cols === oldVal.cols && newVal.rows === oldVal.rows\n });\n const [theme, setTheme] = createSignal(buildTheme(FALLBACK_THEME));\n const lineHeight = () => props.lineHeight ?? 1.3333333333;\n const [blinkOn, setBlinkOn] = createSignal(true);\n const cursorOn = createMemo(() => blinkOn() || cursorHold);\n const style$1 = createMemo(() => {\n return {\n width: `${size().cols}ch`,\n height: `${lineHeight() * size().rows}em`,\n \"font-size\": `${(props.scale || 1.0) * 100}%`,\n \"--term-line-height\": `${lineHeight()}em`,\n \"--term-cols\": size().cols,\n \"--term-rows\": size().rows\n };\n });\n let cursor = {\n col: 0,\n row: 0,\n visible: false\n };\n let pendingChanges = {\n size: undefined,\n theme: undefined,\n rows: new Set()\n };\n let el;\n let canvasEl;\n let canvasCtx;\n let textEl;\n let vectorSymbolsEl;\n let vectorSymbolDefsEl;\n let vectorSymbolRowsEl;\n let frameRequestId;\n let blinkIntervalId;\n let cssTheme;\n let cursorHold = false;\n onMount(() => {\n setupCanvas();\n setInitialTheme();\n adjustTextRowNodeCount(size().rows);\n adjustSymbolRowNodeCount(size().rows);\n core.addEventListener(\"vtUpdate\", onVtUpdate);\n });\n onCleanup(() => {\n core.removeEventListener(\"vtUpdate\", onVtUpdate);\n clearInterval(blinkIntervalId);\n cancelAnimationFrame(frameRequestId);\n });\n createEffect(() => {\n if (props.blinking && blinkIntervalId === undefined) {\n blinkIntervalId = setInterval(toggleBlink, 600);\n } else {\n clearInterval(blinkIntervalId);\n blinkIntervalId = undefined;\n setBlinkOn(true);\n }\n });\n createEffect(() => {\n cursorOn();\n if (cursor.visible) {\n pendingChanges.rows.add(cursor.row);\n scheduleRender();\n }\n });\n function setupCanvas() {\n canvasCtx = canvasEl.getContext(\"2d\");\n if (!canvasCtx) throw new Error(\"2D ctx not available\");\n const {\n cols,\n rows\n } = size();\n canvasEl.width = cols * BLOCK_H_RES;\n canvasEl.height = rows * BLOCK_V_RES;\n canvasEl.style.imageRendering = \"pixelated\";\n canvasCtx.imageSmoothingEnabled = false;\n }\n function resizeCanvas(_ref) {\n let {\n cols,\n rows\n } = _ref;\n canvasEl.width = cols * BLOCK_H_RES;\n canvasEl.height = rows * BLOCK_V_RES;\n canvasCtx.imageSmoothingEnabled = false;\n }\n function setInitialTheme() {\n cssTheme = getCssTheme(el);\n pendingChanges.theme = cssTheme;\n }\n function onVtUpdate(_ref2) {\n let {\n size: newSize,\n theme,\n changedRows\n } = _ref2;\n let activity = false;\n if (changedRows !== undefined) {\n for (const row of changedRows) {\n pendingChanges.rows.add(row);\n cursorHold = true;\n activity = true;\n }\n }\n if (theme !== undefined && props.preferEmbeddedTheme) {\n pendingChanges.theme = theme;\n for (let row = 0; row < size().rows; row++) {\n pendingChanges.rows.add(row);\n }\n }\n const newCursor = core.getCursor();\n if (newCursor.visible != cursor.visible || newCursor.col != cursor.col || newCursor.row != cursor.row) {\n if (cursor.visible) {\n pendingChanges.rows.add(cursor.row);\n }\n if (newCursor.visible) {\n pendingChanges.rows.add(newCursor.row);\n }\n cursor = newCursor;\n cursorHold = true;\n activity = true;\n }\n if (newSize !== undefined) {\n pendingChanges.size = newSize;\n for (const row of pendingChanges.rows) {\n if (row >= newSize.rows) {\n pendingChanges.rows.delete(row);\n }\n }\n }\n if (activity && cursor.visible) {\n pendingChanges.rows.add(cursor.row);\n }\n scheduleRender();\n }\n function toggleBlink() {\n setBlinkOn(blink => {\n if (!blink) cursorHold = false;\n return !blink;\n });\n }\n function scheduleRender() {\n if (frameRequestId === undefined) {\n frameRequestId = requestAnimationFrame(render);\n }\n }\n function render() {\n frameRequestId = undefined;\n const {\n size: newSize,\n theme: newTheme,\n rows\n } = pendingChanges;\n batch(function () {\n if (newSize !== undefined) {\n resizeCanvas(newSize);\n adjustTextRowNodeCount(newSize.rows);\n adjustSymbolRowNodeCount(newSize.rows);\n setSize(newSize);\n }\n if (newTheme !== undefined) {\n if (newTheme === null) {\n setTheme(buildTheme(cssTheme));\n } else {\n setTheme(buildTheme(newTheme));\n }\n colorsCache.clear();\n }\n const theme_ = theme();\n const cursorOn_ = blinkOn() || cursorHold;\n for (const r of rows) {\n renderRow(r, theme_, cursorOn_);\n }\n });\n pendingChanges.size = undefined;\n pendingChanges.theme = undefined;\n pendingChanges.rows.clear();\n props.stats.renders += 1;\n }\n function renderRow(rowIndex, theme, cursorOn) {\n const line = core.getLine(rowIndex, cursorOn);\n clearCanvasRow(rowIndex);\n renderRowBg(rowIndex, line.bg, theme);\n renderRowRasterSymbols(rowIndex, line.raster_symbols, theme);\n renderRowVectorSymbols(rowIndex, line.vector_symbols, theme);\n renderRowText(rowIndex, line.text, line.codepoints, theme);\n }\n function clearCanvasRow(rowIndex) {\n canvasCtx.clearRect(0, rowIndex * BLOCK_V_RES, size().cols * BLOCK_H_RES, BLOCK_V_RES);\n }\n function renderRowBg(rowIndex, spans, theme) {\n // The memory layout of a BgSpan must follow one defined in lib.rs (see the assertions at the bottom)\n const view = core.getDataView(spans, 8);\n const y = rowIndex * BLOCK_V_RES;\n let i = 0;\n while (i < view.byteLength) {\n const column = view.getUint16(i + 0, true);\n const width = view.getUint16(i + 2, true);\n const color = getColor(view, i + 4, theme);\n i += 8;\n canvasCtx.fillStyle = color;\n canvasCtx.fillRect(column * BLOCK_H_RES, y, width * BLOCK_H_RES, BLOCK_V_RES);\n }\n }\n function renderRowRasterSymbols(rowIndex, symbols, theme) {\n // The memory layout of a RasterSymbol must follow one defined in lib.rs (see the assertions at the bottom)\n const view = core.getDataView(symbols, 12);\n const y = rowIndex * BLOCK_V_RES;\n let i = 0;\n while (i < view.byteLength) {\n const column = view.getUint16(i + 0, true);\n const codepoint = view.getUint32(i + 4, true);\n const color = getColor(view, i + 8, theme) || theme.fg;\n i += 12;\n canvasCtx.fillStyle = color;\n drawBlockGlyph(canvasCtx, codepoint, column * BLOCK_H_RES, y);\n }\n }\n function renderRowVectorSymbols(rowIndex, symbols, theme) {\n // The memory layout of a VectorSymbol must follow one defined in lib.rs (see the assertions at the bottom)\n const view = core.getDataView(symbols, 16);\n const frag = document.createDocumentFragment();\n const symbolRow = vectorSymbolRowsEl.children[rowIndex];\n let i = 0;\n while (i < view.byteLength) {\n const column = view.getUint16(i + 0, true);\n const codepoint = view.getUint32(i + 4, true);\n const color = getColor(view, i + 8, theme);\n const attrs = view.getUint8(i + 12);\n i += 16;\n const blink = (attrs & BLINK_MASK) !== 0;\n const el = createVectorSymbolNode(codepoint, column, color, blink);\n if (el) {\n frag.appendChild(el);\n }\n }\n recycleVectorSymbolUses(symbolRow);\n symbolRow.replaceChildren(frag);\n }\n function renderRowText(rowIndex, spans, codepoints, theme) {\n // The memory layout of a TextSpan must follow one defined in lib.rs (see the assertions at the bottom)\n const spansView = core.getDataView(spans, 12);\n const codepointsView = core.getUint32Array(codepoints);\n const frag = document.createDocumentFragment();\n let i = 0;\n while (i < spansView.byteLength) {\n const column = spansView.getUint16(i + 0, true);\n const codepointsStart = spansView.getUint16(i + 2, true);\n const len = spansView.getUint16(i + 4, true);\n const color = getColor(spansView, i + 6, theme);\n const attrs = spansView.getUint8(i + 10);\n const text = String.fromCodePoint(...codepointsView.subarray(codepointsStart, codepointsStart + len));\n i += 12;\n const el = document.createElement(\"span\");\n const style = el.style;\n style.setProperty(\"--offset\", column);\n el.textContent = text;\n if (color) {\n style.color = color;\n }\n const cls = getAttrClass(attrs);\n if (cls !== null) {\n el.className = cls;\n }\n frag.appendChild(el);\n }\n textEl.children[rowIndex].replaceChildren(frag);\n }\n function getAttrClass(attrs) {\n let c = attrClassCache.get(attrs);\n if (c === undefined) {\n c = buildAttrClass(attrs);\n attrClassCache.set(attrs, c);\n }\n return c;\n }\n function buildAttrClass(attrs) {\n let cls = \"\";\n if ((attrs & BOLD_MASK) !== 0) {\n cls += \"ap-bold \";\n } else if ((attrs & FAINT_MASK) !== 0) {\n cls += \"ap-faint \";\n }\n if ((attrs & ITALIC_MASK) !== 0) {\n cls += \"ap-italic \";\n }\n if ((attrs & UNDERLINE_MASK) !== 0) {\n cls += \"ap-underline \";\n }\n if ((attrs & STRIKETHROUGH_MASK) !== 0) {\n cls += \"ap-strike \";\n }\n if ((attrs & BLINK_MASK) !== 0) {\n cls += \"ap-blink \";\n }\n return cls === \"\" ? null : cls;\n }\n function getColor(view, offset, theme) {\n const tag = view.getUint8(offset);\n if (tag === 0) {\n return null;\n } else if (tag === 1) {\n return theme.fg;\n } else if (tag === 2) {\n return theme.bg;\n } else if (tag === 3) {\n return theme.palette[view.getUint8(offset + 1)];\n } else if (tag === 4) {\n const key = view.getUint32(offset, true);\n let c = colorsCache.get(key);\n if (c === undefined) {\n const r = view.getUint8(offset + 1);\n const g = view.getUint8(offset + 2);\n const b = view.getUint8(offset + 3);\n c = \"rgb(\" + r + \",\" + g + \",\" + b + \")\";\n colorsCache.set(key, c);\n }\n return c;\n } else {\n throw new Error(`invalid color tag: ${tag}`);\n }\n }\n function adjustTextRowNodeCount(rows) {\n let r = textEl.children.length;\n if (r < rows) {\n const frag = document.createDocumentFragment();\n while (r < rows) {\n const row = getNewRow();\n row.style.setProperty(\"--row\", r);\n frag.appendChild(row);\n r += 1;\n }\n textEl.appendChild(frag);\n }\n while (textEl.children.length > rows) {\n const row = textEl.lastElementChild;\n textEl.removeChild(row);\n textRowPool.push(row);\n }\n }\n function adjustSymbolRowNodeCount(rows) {\n let r = vectorSymbolRowsEl.children.length;\n if (r < rows) {\n const frag = document.createDocumentFragment();\n while (r < rows) {\n const row = getNewSymbolRow();\n row.setAttribute(\"transform\", `translate(0 ${r})`);\n frag.appendChild(row);\n r += 1;\n }\n vectorSymbolRowsEl.appendChild(frag);\n }\n while (vectorSymbolRowsEl.children.length > rows) {\n const row = vectorSymbolRowsEl.lastElementChild;\n vectorSymbolRowsEl.removeChild(row);\n vectorSymbolRowPool.push(row);\n }\n }\n function getNewRow() {\n let row = textRowPool.pop();\n if (row === undefined) {\n row = document.createElement(\"span\");\n row.className = \"ap-line\";\n }\n return row;\n }\n function getNewSymbolRow() {\n let row = vectorSymbolRowPool.pop();\n if (row === undefined) {\n row = document.createElementNS(SVG_NS, \"g\");\n row.setAttribute(\"class\", \"ap-symbol-line\");\n }\n return row;\n }\n function createVectorSymbolNode(codepoint, column, fg, blink) {\n if (!ensureVectorSymbolDef(codepoint)) {\n return null;\n }\n const isPowerline = POWERLINE_SYMBOLS.has(codepoint);\n const symbolX = isPowerline ? column - POWERLINE_SYMBOL_NUDGE : column;\n const symbolWidth = isPowerline ? 1 + POWERLINE_SYMBOL_NUDGE * 2 : 1;\n const node = getVectorSymbolUse();\n node.setAttribute(\"href\", `#sym-${codepoint}`);\n node.setAttribute(\"x\", symbolX);\n node.setAttribute(\"y\", 0);\n node.setAttribute(\"width\", symbolWidth);\n node.setAttribute(\"height\", \"1\");\n if (fg) {\n node.style.setProperty(\"color\", fg);\n } else {\n node.style.removeProperty(\"color\");\n }\n if (blink) {\n node.classList.add(\"ap-blink\");\n } else {\n node.classList.remove(\"ap-blink\");\n }\n return node;\n }\n function recycleVectorSymbolUses(row) {\n while (row.firstChild) {\n const child = row.firstChild;\n row.removeChild(child);\n vectorSymbolUsePool.push(child);\n }\n }\n function getVectorSymbolUse() {\n let node = vectorSymbolUsePool.pop();\n if (node === undefined) {\n node = document.createElementNS(SVG_NS, \"use\");\n }\n return node;\n }\n function ensureVectorSymbolDef(codepoint) {\n const content = getVectorSymbolDef(codepoint);\n if (!content) {\n return false;\n }\n if (vectorSymbolDefCache.has(codepoint)) {\n return true;\n }\n const id = `sym-${codepoint}`;\n const symbol = document.createElementNS(SVG_NS, \"symbol\");\n symbol.setAttribute(\"id\", id);\n symbol.setAttribute(\"viewBox\", \"0 0 1 1\");\n symbol.setAttribute(\"preserveAspectRatio\", \"none\");\n symbol.setAttribute(\"overflow\", \"visible\");\n symbol.innerHTML = content;\n vectorSymbolDefsEl.appendChild(symbol);\n vectorSymbolDefCache.add(codepoint);\n return true;\n }\n return (() => {\n const _el$ = _tmpl$$e.cloneNode(true),\n _el$2 = _el$.firstChild,\n _el$3 = _el$2.nextSibling,\n _el$4 = _el$3.firstChild,\n _el$5 = _el$4.nextSibling,\n _el$6 = _el$3.nextSibling;\n const _ref$ = el;\n typeof _ref$ === \"function\" ? use(_ref$, _el$) : el = _el$;\n const _ref$2 = canvasEl;\n typeof _ref$2 === \"function\" ? use(_ref$2, _el$2) : canvasEl = _el$2;\n const _ref$3 = vectorSymbolsEl;\n typeof _ref$3 === \"function\" ? use(_ref$3, _el$3) : vectorSymbolsEl = _el$3;\n const _ref$4 = vectorSymbolDefsEl;\n typeof _ref$4 === \"function\" ? use(_ref$4, _el$4) : vectorSymbolDefsEl = _el$4;\n const _ref$5 = vectorSymbolRowsEl;\n typeof _ref$5 === \"function\" ? use(_ref$5, _el$5) : vectorSymbolRowsEl = _el$5;\n const _ref$6 = textEl;\n typeof _ref$6 === \"function\" ? use(_ref$6, _el$6) : textEl = _el$6;\n createRenderEffect(_p$ => {\n const _v$ = style$1(),\n _v$2 = `0 0 ${size().cols} ${size().rows}`,\n _v$3 = !!blinkOn(),\n _v$4 = !!blinkOn();\n _p$._v$ = style(_el$, _v$, _p$._v$);\n _v$2 !== _p$._v$2 && setAttribute(_el$3, \"viewBox\", _p$._v$2 = _v$2);\n _v$3 !== _p$._v$3 && _el$3.classList.toggle(\"ap-blink\", _p$._v$3 = _v$3);\n _v$4 !== _p$._v$4 && _el$6.classList.toggle(\"ap-blink\", _p$._v$4 = _v$4);\n return _p$;\n }, {\n _v$: undefined,\n _v$2: undefined,\n _v$3: undefined,\n _v$4: undefined\n });\n return _el$;\n })();\n});\nfunction buildTheme(theme) {\n return {\n fg: theme.foreground,\n bg: theme.background,\n palette: generate256Palette(theme.palette, theme.background, theme.foreground)\n };\n}\nfunction getCssTheme(el) {\n const style = getComputedStyle(el);\n const foreground = normalizeHexColor(style.getPropertyValue(\"--term-color-foreground\"), FALLBACK_THEME.foreground);\n const background = normalizeHexColor(style.getPropertyValue(\"--term-color-background\"), FALLBACK_THEME.background);\n const palette = [];\n for (let i = 0; i < 16; i++) {\n const fallback = i >= 8 ? palette[i - 8] : FALLBACK_THEME.palette[i];\n palette[i] = normalizeHexColor(style.getPropertyValue(`--term-color-${i}`), fallback);\n }\n return {\n foreground,\n background,\n palette\n };\n}\nfunction generate256Palette(base16, bg, fg) {\n const bgLab = hexToOklab(bg);\n const fgLab = hexToOklab(fg);\n const c100 = hexToOklab(base16[1]);\n const c010 = hexToOklab(base16[2]);\n const c110 = hexToOklab(base16[3]);\n const c001 = hexToOklab(base16[4]);\n const c101 = hexToOklab(base16[5]);\n const c011 = hexToOklab(base16[6]);\n const palette = [...base16];\n\n // 216 color cube range\n\n for (let r = 0; r < 6; r += 1) {\n const tR = r / 5;\n const c0 = lerpOklab(tR, bgLab, c100);\n const c1 = lerpOklab(tR, c010, c110);\n const c2 = lerpOklab(tR, c001, c101);\n const c3 = lerpOklab(tR, c011, fgLab);\n for (let g = 0; g < 6; g += 1) {\n const tG = g / 5;\n const c4 = lerpOklab(tG, c0, c1);\n const c5 = lerpOklab(tG, c2, c3);\n for (let b = 0; b < 6; b += 1) {\n const tB = b / 5;\n const c6 = lerpOklab(tB, c4, c5);\n palette.push(oklabToHex(c6));\n }\n }\n }\n\n // grayscale range\n\n for (let i = 0; i < 24; i += 1) {\n const t = (i + 1) / 25;\n palette.push(oklabToHex(lerpOklab(t, bgLab, fgLab)));\n }\n return palette;\n}\nfunction drawBlockGlyph(ctx, codepoint, x, y) {\n const unitX = BLOCK_H_RES / 8;\n const unitY = BLOCK_V_RES / 8;\n const halfX = BLOCK_H_RES / 2;\n const halfY = BLOCK_V_RES / 2;\n const sextantX = BLOCK_H_RES / 2;\n const sextantY = BLOCK_V_RES / 3;\n switch (codepoint) {\n case 0x2580:\n // upper half block (https://symbl.cc/en/2580/)\n ctx.fillRect(x, y, BLOCK_H_RES, halfY);\n break;\n case 0x2581:\n // lower one eighth block (https://symbl.cc/en/2581/)\n ctx.fillRect(x, y + unitY * 7, BLOCK_H_RES, unitY);\n break;\n case 0x2582:\n // lower one quarter block (https://symbl.cc/en/2582/)\n ctx.fillRect(x, y + unitY * 6, BLOCK_H_RES, unitY * 2);\n break;\n case 0x2583:\n // lower three eighths block (https://symbl.cc/en/2583/)\n ctx.fillRect(x, y + unitY * 5, BLOCK_H_RES, unitY * 3);\n break;\n case 0x2584:\n // lower half block (https://symbl.cc/en/2584/)\n ctx.fillRect(x, y + halfY, BLOCK_H_RES, halfY);\n break;\n case 0x2585:\n // lower five eighths block (https://symbl.cc/en/2585/)\n ctx.fillRect(x, y + unitY * 3, BLOCK_H_RES, unitY * 5);\n break;\n case 0x2586:\n // lower three quarters block (https://symbl.cc/en/2586/)\n ctx.fillRect(x, y + unitY * 2, BLOCK_H_RES, unitY * 6);\n break;\n case 0x2587:\n // lower seven eighths block (https://symbl.cc/en/2587/)\n ctx.fillRect(x, y + unitY, BLOCK_H_RES, unitY * 7);\n break;\n case 0x2588:\n // full block (https://symbl.cc/en/2588/)\n ctx.fillRect(x, y, BLOCK_H_RES, BLOCK_V_RES);\n break;\n case 0x25a0:\n // black square (https://symbl.cc/en/25A0/)\n ctx.fillRect(x, y + unitY * 2, BLOCK_H_RES, unitY * 4);\n break;\n case 0x2589:\n // left seven eighths block (https://symbl.cc/en/2589/)\n ctx.fillRect(x, y, unitX * 7, BLOCK_V_RES);\n break;\n case 0x258a:\n // left three quarters block (https://symbl.cc/en/258A/)\n ctx.fillRect(x, y, unitX * 6, BLOCK_V_RES);\n break;\n case 0x258b:\n // left five eighths block (https://symbl.cc/en/258B/)\n ctx.fillRect(x, y, unitX * 5, BLOCK_V_RES);\n break;\n case 0x258c:\n // left half block (https://symbl.cc/en/258C/)\n ctx.fillRect(x, y, halfX, BLOCK_V_RES);\n break;\n case 0x258d:\n // left three eighths block (https://symbl.cc/en/258D/)\n ctx.fillRect(x, y, unitX * 3, BLOCK_V_RES);\n break;\n case 0x258e:\n // left one quarter block (https://symbl.cc/en/258E/)\n ctx.fillRect(x, y, unitX * 2, BLOCK_V_RES);\n break;\n case 0x258f:\n // left one eighth block (https://symbl.cc/en/258F/)\n ctx.fillRect(x, y, unitX, BLOCK_V_RES);\n break;\n case 0x2590:\n // right half block (https://symbl.cc/en/2590/)\n ctx.fillRect(x + halfX, y, halfX, BLOCK_V_RES);\n break;\n case 0x2591:\n // light shade (https://symbl.cc/en/2591/)\n ctx.save();\n ctx.globalAlpha = 0.25;\n ctx.fillRect(x, y, BLOCK_H_RES, BLOCK_V_RES);\n ctx.restore();\n break;\n case 0x2592:\n // medium shade (https://symbl.cc/en/2592/)\n ctx.save();\n ctx.globalAlpha = 0.5;\n ctx.fillRect(x, y, BLOCK_H_RES, BLOCK_V_RES);\n ctx.restore();\n break;\n case 0x2593:\n // dark shade (https://symbl.cc/en/2593/)\n ctx.save();\n ctx.globalAlpha = 0.75;\n ctx.fillRect(x, y, BLOCK_H_RES, BLOCK_V_RES);\n ctx.restore();\n break;\n case 0x2594:\n // upper one eighth block (https://symbl.cc/en/2594/)\n ctx.fillRect(x, y, BLOCK_H_RES, unitY);\n break;\n case 0x2595:\n // right one eighth block (https://symbl.cc/en/2595/)\n ctx.fillRect(x + unitX * 7, y, unitX, BLOCK_V_RES);\n break;\n case 0x2596:\n // quadrant lower left (https://symbl.cc/en/2596/)\n ctx.fillRect(x, y + halfY, halfX, halfY);\n break;\n case 0x2597:\n // quadrant lower right (https://symbl.cc/en/2597/)\n ctx.fillRect(x + halfX, y + halfY, halfX, halfY);\n break;\n case 0x2598:\n // quadrant upper left (https://symbl.cc/en/2598/)\n ctx.fillRect(x, y, halfX, halfY);\n break;\n case 0x2599:\n // quadrant upper left and lower left and lower right (https://symbl.cc/en/2599/)\n ctx.fillRect(x, y, halfX, BLOCK_V_RES);\n ctx.fillRect(x + halfX, y + halfY, halfX, halfY);\n break;\n case 0x259a:\n // quadrant upper left and lower right (https://symbl.cc/en/259A/)\n ctx.fillRect(x, y, halfX, halfY);\n ctx.fillRect(x + halfX, y + halfY, halfX, halfY);\n break;\n case 0x259b:\n // quadrant upper left and upper right and lower left (https://symbl.cc/en/259B/)\n ctx.fillRect(x, y, BLOCK_H_RES, halfY);\n ctx.fillRect(x, y + halfY, halfX, halfY);\n break;\n case 0x259c:\n // quadrant upper left and upper right and lower right (https://symbl.cc/en/259C/)\n ctx.fillRect(x, y, BLOCK_H_RES, halfY);\n ctx.fillRect(x + halfX, y + halfY, halfX, halfY);\n break;\n case 0x259d:\n // quadrant upper right (https://symbl.cc/en/259D/)\n ctx.fillRect(x + halfX, y, halfX, halfY);\n break;\n case 0x259e:\n // quadrant upper right and lower left (https://symbl.cc/en/259E/)\n ctx.fillRect(x + halfX, y, halfX, halfY);\n ctx.fillRect(x, y + halfY, halfX, halfY);\n break;\n case 0x259f:\n // quadrant upper right and lower left and lower right (https://symbl.cc/en/259F/)\n ctx.fillRect(x + halfX, y, halfX, BLOCK_V_RES);\n ctx.fillRect(x, y + halfY, halfX, halfY);\n break;\n case 0x1fb00:\n // sextant-1: upper left (https://symbl.cc/en/1FB00/)\n ctx.fillRect(x, y, sextantX, sextantY);\n break;\n case 0x1fb01:\n // sextant-2: upper right (https://symbl.cc/en/1FB01/)\n ctx.fillRect(x + sextantX, y, sextantX, sextantY);\n break;\n case 0x1fb02:\n // sextant-12: upper one third (https://symbl.cc/en/1FB02/)\n ctx.fillRect(x, y, sextantX * 2, sextantY);\n break;\n case 0x1fb03:\n // sextant-3: middle left (https://symbl.cc/en/1FB03/)\n ctx.fillRect(x, y + sextantY, sextantX, sextantY);\n break;\n case 0x1fb04:\n // sextant-13: top-left and middle-left filled (https://symbl.cc/en/1FB04/)\n ctx.fillRect(x, y, sextantX, sextantY);\n ctx.fillRect(x, y + sextantY, sextantX, sextantY);\n break;\n case 0x1fb05:\n // sextant-23: upper right and middle left (https://symbl.cc/en/1FB05/)\n ctx.fillRect(x + sextantX, y, sextantX, sextantY);\n ctx.fillRect(x, y + sextantY, sextantX, sextantY);\n break;\n case 0x1fb06:\n // sextant-123: upper one third and middle left (https://symbl.cc/en/1FB06/)\n ctx.fillRect(x, y, sextantX * 2, sextantY);\n ctx.fillRect(x, y + sextantY, sextantX, sextantY);\n break;\n case 0x1fb07:\n // sextant-4: middle right (https://symbl.cc/en/1FB07/)\n ctx.fillRect(x + sextantX, y + sextantY, sextantX, sextantY);\n break;\n case 0x1fb08:\n // sextant-14: upper left and middle right (https://symbl.cc/en/1FB08/)\n ctx.fillRect(x, y, sextantX, sextantY);\n ctx.fillRect(x + sextantX, y + sextantY, sextantX, sextantY);\n break;\n case 0x1fb09:\n // sextant-24: top-right and middle-right filled (https://symbl.cc/en/1FB09/)\n ctx.fillRect(x + sextantX, y, sextantX, sextantY);\n ctx.fillRect(x + sextantX, y + sextantY, sextantX, sextantY);\n break;\n case 0x1fb0a:\n // sextant-124: upper one third and middle right (https://symbl.cc/en/1FB0A/)\n ctx.fillRect(x, y, sextantX * 2, sextantY);\n ctx.fillRect(x + sextantX, y + sextantY, sextantX, sextantY);\n break;\n case 0x1fb0b:\n // sextant-34: middle one third (https://symbl.cc/en/1FB0B/)\n ctx.fillRect(x, y + sextantY, sextantX * 2, sextantY);\n break;\n case 0x1fb0c:\n // sextant-134: upper left, middle left and middle right (https://symbl.cc/en/1FB0C/)\n ctx.fillRect(x, y, sextantX, sextantY);\n ctx.fillRect(x, y + sextantY, sextantX * 2, sextantY);\n break;\n case 0x1fb0d:\n // sextant-234: upper right and middle one third (https://symbl.cc/en/1FB0D/)\n ctx.fillRect(x + sextantX, y, sextantX, sextantY);\n ctx.fillRect(x, y + sextantY, sextantX * 2, sextantY);\n break;\n case 0x1fb0e:\n // sextant-1234: top and middle rows filled (https://symbl.cc/en/1FB0E/)\n ctx.fillRect(x, y, sextantX * 2, sextantY);\n ctx.fillRect(x, y + sextantY, sextantX * 2, sextantY);\n break;\n case 0x1fb0f:\n // sextant-5: lower left (https://symbl.cc/en/1FB0F/)\n ctx.fillRect(x, y + sextantY * 2, sextantX, sextantY);\n break;\n case 0x1fb10:\n // sextant-15: upper left and lower left (https://symbl.cc/en/1FB10/)\n ctx.fillRect(x, y, sextantX, sextantY);\n ctx.fillRect(x, y + sextantY * 2, sextantX, sextantY);\n break;\n case 0x1fb11:\n // sextant-25: upper right and lower left (https://symbl.cc/en/1FB11/)\n ctx.fillRect(x + sextantX, y, sextantX, sextantY);\n ctx.fillRect(x, y + sextantY * 2, sextantX, sextantY);\n break;\n case 0x1fb12:\n // sextant-125: upper one third and lower left (https://symbl.cc/en/1FB12/)\n ctx.fillRect(x, y, sextantX * 2, sextantY);\n ctx.fillRect(x, y + sextantY * 2, sextantX, sextantY);\n break;\n case 0x1fb13:\n // sextant-35: middle left and lower left (https://symbl.cc/en/1FB13/)\n ctx.fillRect(x, y + sextantY, sextantX, sextantY * 2);\n break;\n case 0x1fb14:\n // sextant-235: upper right and left column lower two thirds (https://symbl.cc/en/1FB14/)\n ctx.fillRect(x + sextantX, y, sextantX, sextantY);\n ctx.fillRect(x, y + sextantY, sextantX, sextantY * 2);\n break;\n case 0x1fb15:\n // sextant-1235: upper one third and left column lower two thirds (https://symbl.cc/en/1FB15/)\n ctx.fillRect(x, y, sextantX * 2, sextantY);\n ctx.fillRect(x, y + sextantY, sextantX, sextantY * 2);\n break;\n case 0x1fb16:\n // sextant-45: middle right and lower left (https://symbl.cc/en/1FB16/)\n ctx.fillRect(x + sextantX, y + sextantY, sextantX, sextantY);\n ctx.fillRect(x, y + sextantY * 2, sextantX, sextantY);\n break;\n case 0x1fb17:\n // sextant-145: upper left, middle right and lower left (https://symbl.cc/en/1FB17/)\n ctx.fillRect(x, y, sextantX, sextantY);\n ctx.fillRect(x + sextantX, y + sextantY, sextantX, sextantY);\n ctx.fillRect(x, y + sextantY * 2, sextantX, sextantY);\n break;\n case 0x1fb18:\n // sextant-245: right column upper two thirds and lower left (https://symbl.cc/en/1FB18/)\n ctx.fillRect(x + sextantX, y, sextantX, sextantY * 2);\n ctx.fillRect(x, y + sextantY * 2, sextantX, sextantY);\n break;\n case 0x1fb19:\n // sextant-1245: upper one third, middle right and lower left (https://symbl.cc/en/1FB19/)\n ctx.fillRect(x, y, sextantX * 2, sextantY);\n ctx.fillRect(x + sextantX, y + sextantY, sextantX, sextantY);\n ctx.fillRect(x, y + sextantY * 2, sextantX, sextantY);\n break;\n case 0x1fb1a:\n // sextant-345: middle one third and lower left (https://symbl.cc/en/1FB1A/)\n ctx.fillRect(x, y + sextantY, sextantX * 2, sextantY);\n ctx.fillRect(x, y + sextantY * 2, sextantX, sextantY);\n break;\n case 0x1fb1b:\n // sextant-1345: left column and middle right (https://symbl.cc/en/1FB1B/)\n ctx.fillRect(x, y, sextantX, sextantY * 3);\n ctx.fillRect(x + sextantX, y + sextantY, sextantX, sextantY);\n break;\n case 0x1fb1c:\n // sextant-2345: upper right, middle one third and lower left (https://symbl.cc/en/1FB1C/)\n ctx.fillRect(x + sextantX, y, sextantX, sextantY);\n ctx.fillRect(x, y + sextantY, sextantX * 2, sextantY);\n ctx.fillRect(x, y + sextantY * 2, sextantX, sextantY);\n break;\n case 0x1fb1d:\n // sextant-12345: upper two thirds and lower left (https://symbl.cc/en/1FB1D/)\n ctx.fillRect(x, y, sextantX * 2, sextantY * 2);\n ctx.fillRect(x, y + sextantY * 2, sextantX, sextantY);\n break;\n case 0x1fb1e:\n // sextant-6: lower right (https://symbl.cc/en/1FB1E/)\n ctx.fillRect(x + sextantX, y + sextantY * 2, sextantX, sextantY);\n break;\n case 0x1fb1f:\n // sextant-16: upper left and lower right (https://symbl.cc/en/1FB1F/)\n ctx.fillRect(x, y, sextantX, sextantY);\n ctx.fillRect(x + sextantX, y + sextantY * 2, sextantX, sextantY);\n break;\n case 0x1fb20:\n // sextant-26: upper right and lower right (https://symbl.cc/en/1FB20/)\n ctx.fillRect(x + sextantX, y, sextantX, sextantY);\n ctx.fillRect(x + sextantX, y + sextantY * 2, sextantX, sextantY);\n break;\n case 0x1fb21:\n // sextant-126: upper one third and lower right (https://symbl.cc/en/1FB21/)\n ctx.fillRect(x, y, sextantX * 2, sextantY);\n ctx.fillRect(x + sextantX, y + sextantY * 2, sextantX, sextantY);\n break;\n case 0x1fb22:\n // sextant-36: middle left and lower right (https://symbl.cc/en/1FB22/)\n ctx.fillRect(x, y + sextantY, sextantX, sextantY);\n ctx.fillRect(x + sextantX, y + sextantY * 2, sextantX, sextantY);\n break;\n case 0x1fb23:\n // sextant-136: upper left, middle left and lower right (https://symbl.cc/en/1FB23/)\n ctx.fillRect(x, y, sextantX, sextantY * 2);\n ctx.fillRect(x + sextantX, y + sextantY * 2, sextantX, sextantY);\n break;\n case 0x1fb24:\n // sextant-236: upper right, middle left and lower right (https://symbl.cc/en/1FB24/)\n ctx.fillRect(x + sextantX, y, sextantX, sextantY);\n ctx.fillRect(x, y + sextantY, sextantX, sextantY);\n ctx.fillRect(x + sextantX, y + sextantY * 2, sextantX, sextantY);\n break;\n case 0x1fb25:\n // sextant-1236: upper one third, middle left and lower right (https://symbl.cc/en/1FB25/)\n ctx.fillRect(x, y, sextantX * 2, sextantY);\n ctx.fillRect(x, y + sextantY, sextantX, sextantY);\n ctx.fillRect(x + sextantX, y + sextantY * 2, sextantX, sextantY);\n break;\n case 0x1fb26:\n // sextant-46: middle right and lower right (https://symbl.cc/en/1FB26/)\n ctx.fillRect(x + sextantX, y + sextantY, sextantX, sextantY * 2);\n break;\n case 0x1fb27:\n // sextant-146: upper left and right column lower two thirds (https://symbl.cc/en/1FB27/)\n ctx.fillRect(x, y, sextantX, sextantY);\n ctx.fillRect(x + sextantX, y + sextantY, sextantX, sextantY * 2);\n break;\n case 0x1fb28:\n // sextant-1246: upper one third and right column lower two thirds (https://symbl.cc/en/1FB28/)\n ctx.fillRect(x, y, sextantX * 2, sextantY);\n ctx.fillRect(x + sextantX, y + sextantY, sextantX, sextantY * 2);\n break;\n case 0x1fb29:\n // sextant-346: middle one third and lower right (https://symbl.cc/en/1FB29/)\n ctx.fillRect(x, y + sextantY, sextantX * 2, sextantY);\n ctx.fillRect(x + sextantX, y + sextantY * 2, sextantX, sextantY);\n break;\n case 0x1fb2a:\n // sextant-1346: left column upper two thirds and right column lower two thirds (https://symbl.cc/en/1FB2A/)\n ctx.fillRect(x, y, sextantX, sextantY * 2);\n ctx.fillRect(x + sextantX, y + sextantY, sextantX, sextantY * 2);\n break;\n case 0x1fb2b:\n // sextant-2346: upper right, middle one third and lower right (https://symbl.cc/en/1FB2B/)\n ctx.fillRect(x + sextantX, y, sextantX, sextantY);\n ctx.fillRect(x, y + sextantY, sextantX * 2, sextantY);\n ctx.fillRect(x + sextantX, y + sextantY * 2, sextantX, sextantY);\n break;\n case 0x1fb2c:\n // sextant-12346: upper two thirds and lower right (https://symbl.cc/en/1FB2C/)\n ctx.fillRect(x, y, sextantX * 2, sextantY * 2);\n ctx.fillRect(x + sextantX, y + sextantY * 2, sextantX, sextantY);\n break;\n case 0x1fb2d:\n // sextant-56: lower one third (https://symbl.cc/en/1FB2D/)\n ctx.fillRect(x, y + sextantY * 2, sextantX * 2, sextantY);\n break;\n case 0x1fb2e:\n // sextant-156: upper left and lower one third (https://symbl.cc/en/1FB2E/)\n ctx.fillRect(x, y, sextantX, sextantY);\n ctx.fillRect(x, y + sextantY * 2, sextantX * 2, sextantY);\n break;\n case 0x1fb2f:\n // sextant-256: upper right and lower one third (https://symbl.cc/en/1FB2F/)\n ctx.fillRect(x + sextantX, y, sextantX, sextantY);\n ctx.fillRect(x, y + sextantY * 2, sextantX * 2, sextantY);\n break;\n case 0x1fb30:\n // sextant-1256: upper one third and lower one third (https://symbl.cc/en/1FB30/)\n ctx.fillRect(x, y, sextantX * 2, sextantY);\n ctx.fillRect(x, y + sextantY * 2, sextantX * 2, sextantY);\n break;\n case 0x1fb31:\n // sextant-356: middle left and lower one third (https://symbl.cc/en/1FB31/)\n ctx.fillRect(x, y + sextantY, sextantX, sextantY);\n ctx.fillRect(x, y + sextantY * 2, sextantX * 2, sextantY);\n break;\n case 0x1fb32:\n // sextant-1356: left column upper two thirds and lower one third (https://symbl.cc/en/1FB32/)\n ctx.fillRect(x, y, sextantX, sextantY * 2);\n ctx.fillRect(x, y + sextantY * 2, sextantX * 2, sextantY);\n break;\n case 0x1fb33:\n // sextant-2356: upper right, middle left and lower one third (https://symbl.cc/en/1FB33/)\n ctx.fillRect(x + sextantX, y, sextantX, sextantY);\n ctx.fillRect(x, y + sextantY, sextantX, sextantY);\n ctx.fillRect(x, y + sextantY * 2, sextantX * 2, sextantY);\n break;\n case 0x1fb34:\n // sextant-12356: upper one third, middle left and lower one third (https://symbl.cc/en/1FB34/)\n ctx.fillRect(x, y, sextantX * 2, sextantY);\n ctx.fillRect(x, y + sextantY, sextantX, sextantY);\n ctx.fillRect(x, y + sextantY * 2, sextantX * 2, sextantY);\n break;\n case 0x1fb35:\n // sextant-456: middle right and lower one third (https://symbl.cc/en/1FB35/)\n ctx.fillRect(x + sextantX, y + sextantY, sextantX, sextantY);\n ctx.fillRect(x, y + sextantY * 2, sextantX * 2, sextantY);\n break;\n case 0x1fb36:\n // sextant-1456: upper left, middle right and lower one third (https://symbl.cc/en/1FB36/)\n ctx.fillRect(x, y, sextantX, sextantY);\n ctx.fillRect(x + sextantX, y + sextantY, sextantX, sextantY);\n ctx.fillRect(x, y + sextantY * 2, sextantX * 2, sextantY);\n break;\n case 0x1fb37:\n // sextant-2456: right column upper two thirds and lower one third (https://symbl.cc/en/1FB37/)\n ctx.fillRect(x + sextantX, y, sextantX, sextantY * 2);\n ctx.fillRect(x, y + sextantY * 2, sextantX * 2, sextantY);\n break;\n case 0x1fb38:\n // sextant-12456: upper one third, middle right and lower one third (https://symbl.cc/en/1FB38/)\n ctx.fillRect(x, y, sextantX * 2, sextantY);\n ctx.fillRect(x + sextantX, y + sextantY, sextantX, sextantY);\n ctx.fillRect(x, y + sextantY * 2, sextantX * 2, sextantY);\n break;\n case 0x1fb39:\n // sextant-3456: middle one third and lower one third (https://symbl.cc/en/1FB39/)\n ctx.fillRect(x, y + sextantY, sextantX * 2, sextantY * 2);\n break;\n case 0x1fb3a:\n // sextant-13456: left column and lower one third (https://symbl.cc/en/1FB3A/)\n ctx.fillRect(x, y, sextantX, sextantY * 3);\n ctx.fillRect(x + sextantX, y + sextantY, sextantX, sextantY);\n ctx.fillRect(x + sextantX, y + sextantY * 2, sextantX, sextantY);\n break;\n case 0x1fb3b:\n // sextant-23456: upper right and lower two thirds (https://symbl.cc/en/1FB3B/)\n ctx.fillRect(x + sextantX, y, sextantX, sextantY);\n ctx.fillRect(x, y + sextantY, sextantX * 2, sextantY * 2);\n break;\n }\n}\nconst SYMBOL_STROKE = 0.05;\nconst CELL_RATIO = 9.0375 / 20;\nfunction getVectorSymbolDef(codepoint) {\n const stroke = `stroke=\"currentColor\" stroke-width=\"${SYMBOL_STROKE}\" stroke-linejoin=\"miter\" stroke-linecap=\"square\"`;\n const strokeButt = `stroke=\"currentColor\" stroke-width=\"${SYMBOL_STROKE}\" stroke-linejoin=\"miter\" stroke-linecap=\"butt\"`;\n const stroked = d => `<path d=\"${d}\" fill=\"none\" ${stroke}/>`;\n const third = 1 / 3;\n const twoThirds = 2 / 3;\n switch (codepoint) {\n // ◢ - black lower right triangle (https://symbl.cc/en/25E2/)\n case 0x25e2:\n return '<path d=\"M1,1 L1,0 L0,1 Z\" fill=\"currentColor\"/>' + stroked(\"M1,1 L1,0 L0,1 Z\");\n\n // ◣ - black lower left triangle (https://symbl.cc/en/25E3/)\n case 0x25e3:\n return '<path d=\"M0,1 L0,0 L1,1 Z\" fill=\"currentColor\"/>' + stroked(\"M0,1 L0,0 L1,1 Z\");\n\n // ◤ - black upper left triangle (https://symbl.cc/en/25E4/)\n case 0x25e4:\n return '<path d=\"M0,0 L1,0 L0,1 Z\" fill=\"currentColor\"/>' + stroked(\"M0,0 L1,0 L0,1 Z\");\n\n // ◥ - black upper right triangle (https://symbl.cc/en/25E5/)\n case 0x25e5:\n return '<path d=\"M1,0 L1,1 L0,0 Z\" fill=\"currentColor\"/>' + stroked(\"M1,0 L1,1 L0,0 Z\");\n case 0x268f:\n {\n // ⚏ - digram for greater yin (https://symbl.cc/en/268F/)\n const horizontalGap = 0.15;\n const verticalGap = 0.2;\n const lineHeight = 0.17;\n const halfHorizontalGap = horizontalGap / 2;\n const halfVerticalGap = verticalGap / 2;\n const toViewBoxY = offset => 0.5 + offset * CELL_RATIO;\n const leftX1 = 0.5 - halfHorizontalGap;\n const rightX0 = 0.5 + halfHorizontalGap;\n const rightX1 = 1 + 0.02; // slight overdraw\n const topY0 = toViewBoxY(-halfVerticalGap - lineHeight);\n const topY1 = toViewBoxY(-halfVerticalGap);\n const bottomY0 = toViewBoxY(halfVerticalGap);\n const bottomY1 = toViewBoxY(halfVerticalGap + lineHeight);\n const rect = (x0, x1, y0, y1) => `M${x0},${y0} L${x1},${y0} L${x1},${y1} L${x0},${y1} Z`;\n return `<path d=\"${rect(0, leftX1, topY0, topY1)} ${rect(rightX0, rightX1, topY0, topY1)} ${rect(0, leftX1, bottomY0, bottomY1)} ${rect(rightX0, rightX1, bottomY0, bottomY1)}\" fill=\"currentColor\"/>`;\n }\n\n // 🬼 - lower left block diagonal lower middle left to lower centre (https://symbl.cc/en/1FB3C/)\n case 0x1fb3c:\n return `<path d=\"M0,${twoThirds} L0,1 L0.5,1 Z\" fill=\"currentColor\"/>` + stroked(`M0,${twoThirds} L0,1 L0.5,1 Z`);\n\n // 🬽 - lower left block diagonal lower middle left to lower right (https://symbl.cc/en/1FB3D/)\n case 0x1fb3d:\n return `<path d=\"M0,${twoThirds} L0,1 L1,1 Z\" fill=\"currentColor\"/>` + stroked(`M0,${twoThirds} L0,1 L1,1 Z`);\n\n // 🬾 - lower left block diagonal upper middle left to lower centre (https://symbl.cc/en/1FB3E/)\n case 0x1fb3e:\n return `<path d=\"M0,${third} L0.5,1 L0,1 Z\" fill=\"currentColor\"/>` + stroked(`M0,${third} L0.5,1 L0,1 Z`);\n\n // 🬿 - lower left block diagonal upper middle left to lower right (https://symbl.cc/en/1FB3F/)\n case 0x1fb3f:\n return `<path d=\"M0,${third} L1,1 L0,1 Z\" fill=\"currentColor\"/>` + stroked(`M0,${third} L1,1 L0,1 Z`);\n\n // 🭀 - lower left block diagonal upper left to lower centre (https://symbl.cc/en/1FB40/)\n case 0x1fb40:\n return '<path d=\"M0,0 L0.5,1 L0,1 Z\" fill=\"currentColor\"/>' + stroked(\"M0,0 L0.5,1 L0,1 Z\");\n\n // 🭁 - lower right block diagonal upper middle left to upper centre (https://symbl.cc/en/1FB41/)\n case 0x1fb41:\n return `<path d=\"M0,${third} L0,1 L1,1 L1,0 L0.5,0 Z\" fill=\"currentColor\"/>` + stroked(`M0,${third} L0,1 L1,1 L1,0 L0.5,0 Z`);\n\n // 🭂 - lower right block diagonal upper middle left to upper right (https://symbl.cc/en/1FB42/)\n case 0x1fb42:\n return `<path d=\"M0,${third} L0,1 L1,1 L1,0 Z\" fill=\"currentColor\"/>` + stroked(`M0,${third} L0,1 L1,1 L1,0 Z`);\n\n // 🭃 - lower right block diagonal lower middle left to upper centre (https://symbl.cc/en/1FB43/)\n case 0x1fb43:\n return `<path d=\"M0,${twoThirds} L0,1 L1,1 L1,0 L0.5,0 Z\" fill=\"currentColor\"/>` + stroked(`M0,${twoThirds} L0,1 L1,1 L1,0 L0.5,0 Z`);\n\n // 🭄 - lower right block diagonal lower middle left to upper right (https://symbl.cc/en/1FB44/)\n case 0x1fb44:\n return `<path d=\"M0,${twoThirds} L0,1 L1,1 L1,0 Z\" fill=\"currentColor\"/>` + stroked(`M0,${twoThirds} L0,1 L1,1 L1,0 Z`);\n\n // 🭅 - lower right block diagonal lower left to upper centre (https://symbl.cc/en/1FB45/)\n case 0x1fb45:\n return '<path d=\"M0.5,0 L1,0 L1,1 L0,1 Z\" fill=\"currentColor\"/>' + stroked(\"M0.5,0 L1,0 L1,1 L0,1 Z\");\n\n // 🭆 - lower right block diagonal lower middle left to upper middle right (https://symbl.cc/en/1FB46/)\n case 0x1fb46:\n return `<path d=\"M0,${twoThirds} L0,1 L1,1 L1,${third} Z\" fill=\"currentColor\"/>` + stroked(`M0,${twoThirds} L0,1 L1,1 L1,${third} Z`);\n\n // 🭇 - lower right block diagonal lower centre to lower middle right (https://symbl.cc/en/1FB47/)\n case 0x1fb47:\n return `<path d=\"M0.5,1 L1,1 L1,${twoThirds} Z\" fill=\"currentColor\"/>` + stroked(`M0.5,1 L1,1 L1,${twoThirds} Z`);\n\n // 🭈 - lower right block diagonal lower left to lower middle right (https://symbl.cc/en/1FB48/)\n case 0x1fb48:\n return `<path d=\"M0,1 L1,1 L1,${twoThirds} Z\" fill=\"currentColor\"/>` + stroked(`M0,1 L1,1 L1,${twoThirds} Z`);\n\n // 🭉 - lower right block diagonal lower centre to upper middle right (https://symbl.cc/en/1FB49/)\n case 0x1fb49:\n return `<path d=\"M0.5,1 L1,1 L1,${third} Z\" fill=\"currentColor\"/>` + stroked(`M0.5,1 L1,1 L1,${third} Z`);\n\n // 🭊 - lower right block diagonal lower left to upper middle right (https://symbl.cc/en/1FB4A/)\n case 0x1fb4a:\n return `<path d=\"M0,1 L1,1 L1,${third} Z\" fill=\"currentColor\"/>` + stroked(`M0,1 L1,1 L1,${third} Z`);\n\n // 🭋 - lower right block diagonal lower centre to upper right (https://symbl.cc/en/1FB4B/)\n case 0x1fb4b:\n return '<path d=\"M0.5,1 L1,0 L1,1 Z\" fill=\"currentColor\"/>' + stroked(\"M0.5,1 L1,0 L1,1 Z\");\n\n // 🭌 - lower left block diagonal upper centre to upper middle right (https://symbl.cc/en/1FB4C/)\n case 0x1fb4c:\n return `<path d=\"M0,0 L0.5,0 L1,${third} L1,1 L0,1 Z\" fill=\"currentColor\"/>` + stroked(`M0,0 L0.5,0 L1,${third} L1,1 L0,1 Z`);\n\n // 🭍 - lower left block diagonal upper left to upper middle right (https://symbl.cc/en/1FB4D/)\n case 0x1fb4d:\n return `<path d=\"M0,0 L0,1 L1,1 L1,${third} Z\" fill=\"currentColor\"/>` + stroked(`M0,0 L0,1 L1,1 L1,${third} Z`);\n\n // 🭎 - lower left block diagonal upper centre to lower middle right (https://symbl.cc/en/1FB4E/)\n case 0x1fb4e:\n return `<path d=\"M0,0 L0.5,0 L1,${twoThirds} L1,1 L0,1 Z\" fill=\"currentColor\"/>` + stroked(`M0,0 L0.5,0 L1,${twoThirds} L1,1 L0,1 Z`);\n\n // 🭏 - lower left block diagonal upper left to lower middle right (https://symbl.cc/en/1FB4F/)\n case 0x1fb4f:\n return `<path d=\"M0,0 L1,${twoThirds} L1,1 L0,1 Z\" fill=\"currentColor\"/>` + stroked(`M0,0 L1,${twoThirds} L1,1 L0,1 Z`);\n\n // 🭐 - lower left block diagonal upper centre to lower right (https://symbl.cc/en/1FB50/)\n case 0x1fb50:\n return '<path d=\"M0,0 L0.5,0 L1,1 L0,1 Z\" fill=\"currentColor\"/>' + stroked(\"M0,0 L0.5,0 L1,1 L0,1 Z\");\n\n // 🭑 - lower left block diagonal upper middle left to lower middle right (https://symbl.cc/en/1FB51/)\n case 0x1fb51:\n return `<path d=\"M0,${third} L1,${twoThirds} L1,1 L0,1 Z\" fill=\"currentColor\"/>` + stroked(`M0,${third} L1,${twoThirds} L1,1 L0,1 Z`);\n\n // 🭒 - upper right block diagonal lower middle left to lower centre (https://symbl.cc/en/1FB52/)\n case 0x1fb52:\n return `<path d=\"M0,${twoThirds} L0,0 L1,0 L1,1 L0.5,1 Z\" fill=\"currentColor\"/>` + stroked(`M0,${twoThirds} L0,0 L1,0 L1,1 L0.5,1 Z`);\n\n // 🭓 - upper right block diagonal lower middle left to lower right (https://symbl.cc/en/1FB53/)\n case 0x1fb53:\n return `<path d=\"M0,${twoThirds} L0,0 L1,0 L1,1 Z\" fill=\"currentColor\"/>` + stroked(`M0,${twoThirds} L0,0 L1,0 L1,1 Z`);\n\n // 🭔 - upper right block diagonal upper middle left to lower centre (https://symbl.cc/en/1FB54/)\n case 0x1fb54:\n return `<path d=\"M0,${third} L0,0 L1,0 L1,1 L0.5,1 Z\" fill=\"currentColor\"/>` + stroked(`M0,${third} L0,0 L1,0 L1,1 L0.5,1 Z`);\n\n // 🭕 - upper right block diagonal upper middle left to lower right (https://symbl.cc/en/1FB55/)\n case 0x1fb55:\n return `<path d=\"M0,${third} L0,0 L1,0 L1,1 Z\" fill=\"currentColor\"/>` + stroked(`M0,${third} L0,0 L1,0 L1,1 Z`);\n\n // 🭖 - upper right block diagonal upper left to lower centre (https://symbl.cc/en/1FB56/)\n case 0x1fb56:\n return '<path d=\"M0,0 L1,0 L1,1 L0.5,1 Z\" fill=\"currentColor\"/>' + stroked(\"M0,0 L1,0 L1,1 L0.5,1 Z\");\n\n // 🭗 - upper left block diagonal upper middle left to upper centre (https://symbl.cc/en/1FB57/)\n case 0x1fb57:\n return `<path d=\"M0,${third} L0.5,0 L0,0 Z\" fill=\"currentColor\"/>` + stroked(`M0,${third} L0.5,0 L0,0 Z`);\n\n // 🭘 - upper left block diagonal upper middle left to upper right (https://symbl.cc/en/1FB58/)\n case 0x1fb58:\n return `<path d=\"M0,0 L1,0 L0,${third} Z\" fill=\"currentColor\"/>` + stroked(`M0,0 L1,0 L0,${third} Z`);\n\n // 🭙 - upper left block diagonal lower middle left to upper centre (https://symbl.cc/en/1FB59/)\n case 0x1fb59:\n return `<path d=\"M0,0 L0.5,0 L0,${twoThirds} Z\" fill=\"currentColor\"/>` + stroked(`M0,0 L0.5,0 L0,${twoThirds} Z`);\n\n // 🭚 - upper left block diagonal lower middle left to upper right (https://symbl.cc/en/1FB5A/)\n case 0x1fb5a:\n return `<path d=\"M0,0 L1,0 L0,${twoThirds} Z\" fill=\"currentColor\"/>` + stroked(`M0,0 L1,0 L0,${twoThirds} Z`);\n\n // 🭛 - upper left block diagonal lower left to upper centre (https://symbl.cc/en/1FB5B/)\n case 0x1fb5b:\n return '<path d=\"M0,0 L0.5,0 L0,1 Z\" fill=\"currentColor\"/>' + stroked(\"M0,0 L0.5,0 L0,1 Z\");\n\n // 🭜 - upper left block diagonal lower middle left to upper middle right (https://symbl.cc/en/1FB5C/)\n case 0x1fb5c:\n return `<path d=\"M0,0 L1,0 L1,${third} L0,${twoThirds} Z\" fill=\"currentColor\"/>` + stroked(`M0,0 L1,0 L1,${third} L0,${twoThirds} Z`);\n\n // 🭝 - upper left block diagonal lower centre to lower middle right (https://symbl.cc/en/1FB5D/)\n case 0x1fb5d:\n return `<path d=\"M0,0 L1,0 L1,${twoThirds} L0.5,1 L0,1 Z\" fill=\"currentColor\"/>` + stroked(`M0,0 L1,0 L1,${twoThirds} L0.5,1 L0,1 Z`);\n\n // 🭞 - upper left block diagonal lower left to lower middle right (https://symbl.cc/en/1FB5E/)\n case 0x1fb5e:\n return `<path d=\"M0,0 L1,0 L1,${twoThirds} L0,1 Z\" fill=\"currentColor\"/>` + stroked(`M0,0 L1,0 L1,${twoThirds} L0,1 Z`);\n\n // 🭟 - upper left block diagonal lower centre to upper middle right (https://symbl.cc/en/1FB5F/)\n case 0x1fb5f:\n return `<path d=\"M0,0 L1,0 L1,${third} L0.5,1 L0,1 Z\" fill=\"currentColor\"/>` + stroked(`M0,0 L1,0 L1,${third} L0.5,1 L0,1 Z`);\n\n // 🭠 - upper left block diagonal lower left to upper middle right (https://symbl.cc/en/1FB60/)\n case 0x1fb60:\n return `<path d=\"M0,0 L1,0 L1,${third} L0,1 Z\" fill=\"currentColor\"/>` + stroked(`M0,0 L1,0 L1,${third} L0,1 Z`);\n\n // 🭡 - upper left block diagonal lower centre to upper right (https://symbl.cc/en/1FB61/)\n case 0x1fb61:\n return '<path d=\"M0,0 L1,0 L0.5,1 L0,1 Z\" fill=\"currentColor\"/>' + stroked(\"M0,0 L1,0 L0.5,1 L0,1 Z\");\n\n // 🭢 - upper right block diagonal upper centre to upper middle right (https://symbl.cc/en/1FB62/)\n case 0x1fb62:\n return `<path d=\"M0.5,0 L1,0 L1,${third} Z\" fill=\"currentColor\"/>` + stroked(`M0.5,0 L1,0 L1,${third} Z`);\n\n // 🭣 - upper right block diagonal upper left to upper middle right (https://symbl.cc/en/1FB63/)\n case 0x1fb63:\n return `<path d=\"M0,0 L1,0 L1,${third} Z\" fill=\"currentColor\"/>` + stroked(`M0,0 L1,0 L1,${third} Z`);\n\n // 🭤 - upper right block diagonal upper centre to lower middle right (https://symbl.cc/en/1FB64/)\n case 0x1fb64:\n return `<path d=\"M0.5,0 L1,0 L1,${twoThirds} Z\" fill=\"currentColor\"/>` + stroked(`M0.5,0 L1,0 L1,${twoThirds} Z`);\n\n // 🭥 - upper right block diagonal upper left to lower middle right (https://symbl.cc/en/1FB65/)\n case 0x1fb65:\n return `<path d=\"M0,0 L1,0 L1,${twoThirds} Z\" fill=\"currentColor\"/>` + stroked(`M0,0 L1,0 L1,${twoThirds} Z`);\n\n // 🭦 - upper right block diagonal upper centre to lower right (https://symbl.cc/en/1FB66/)\n case 0x1fb66:\n return '<path d=\"M0.5,0 L1,0 L1,1 Z\" fill=\"currentColor\"/>' + stroked(\"M0.5,0 L1,0 L1,1 Z\");\n\n // 🭧 - upper right block diagonal upper middle left to lower middle right (https://symbl.cc/en/1FB67/)\n case 0x1fb67:\n return `<path d=\"M0,${third} L0,0 L1,0 L1,${twoThirds} Z\" fill=\"currentColor\"/>` + stroked(`M0,${third} L0,0 L1,0 L1,${twoThirds} Z`);\n\n // 🭨 - upper and right and lower triangular three quarters block (https://symbl.cc/en/1FB68/)\n case 0x1fb68:\n return '<path fill-rule=\"evenodd\" d=\"M0,0 L1,0 L1,1 L0,1 Z M0,0 L0,1 L0.5,0.5 Z\" fill=\"currentColor\"/>' + `<path d=\"M0,0 L1,0 M0,1 L1,1 M1,0 L1,1\" fill=\"none\" ${stroke}/>` + `<path d=\"M0,0 L0.5,0.5 M0,1 L0.5,0.5\" fill=\"none\" ${strokeButt}/>`;\n\n // 🭩 - left and lower and right triangular three quarters block (https://symbl.cc/en/1FB69/)\n case 0x1fb69:\n return '<path fill-rule=\"evenodd\" d=\"M0,0 L1,0 L1,1 L0,1 Z M0,0 L1,0 L0.5,0.5 Z\" fill=\"currentColor\"/>' + `<path d=\"M0,0 L0,1 M1,0 L1,1 M0,1 L1,1\" fill=\"none\" ${stroke}/>` + `<path d=\"M0,0 L0.5,0.5 M1,0 L0.5,0.5\" fill=\"none\" ${strokeButt}/>`;\n\n // 🭪 - upper and left and lower triangular three quarters block (https://symbl.cc/en/1FB6A/)\n case 0x1fb6a:\n return '<path fill-rule=\"evenodd\" d=\"M0,0 L1,0 L1,1 L0,1 Z M1,0 L1,1 L0.5,0.5 Z\" fill=\"currentColor\"/>' + `<path d=\"M0,0 L1,0 M0,1 L1,1 M0,0 L0,1\" fill=\"none\" ${stroke}/>` + `<path d=\"M1,0 L0.5,0.5 M1,1 L0.5,0.5\" fill=\"none\" ${strokeButt}/>`;\n\n // 🭫 - left and upper and right triangular three quarters block (https://symbl.cc/en/1FB6B/)\n case 0x1fb6b:\n return '<path fill-rule=\"evenodd\" d=\"M0,0 L1,0 L1,1 L0,1 Z M0,1 L1,1 L0.5,0.5 Z\" fill=\"currentColor\"/>' + `<path d=\"M0,0 L1,0 M0,0 L0,1 M1,0 L1,1\" fill=\"none\" ${stroke}/>` + `<path d=\"M0,1 L0.5,0.5 M1,1 L0.5,0.5\" fill=\"none\" ${strokeButt}/>`;\n\n // 🭬 - left triangular one quarter block (https://symbl.cc/en/1FB6C/)\n case 0x1fb6c:\n return '<path d=\"M0,0 L0,1 L0.5,0.5 Z\" fill=\"currentColor\"/>' + stroked(\"M0,0 L0,1 L0.5,0.5 Z\");\n\n // powerline right full triangle (https://www.nerdfonts.com/cheat-sheet)\n case 0xe0b0:\n return '<path d=\"M0,0 L1,0.5 L0,1 Z\" fill=\"currentColor\"/>';\n\n // powerline right bracket (https://www.nerdfonts.com/cheat-sheet)\n case 0xe0b1:\n return '<path d=\"M0,0 L1,0.5 L0,1\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"0.07\" stroke-linejoin=\"miter\"/>';\n\n // powerline left full triangle (https://www.nerdfonts.com/cheat-sheet)\n case 0xe0b2:\n return '<path d=\"M1,0 L0,0.5 L1,1 Z\" fill=\"currentColor\"/>';\n\n // powerline left bracket (https://www.nerdfonts.com/cheat-sheet)\n case 0xe0b3:\n return '<path d=\"M1,0 L0,0.5 L1,1\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"0.07\" stroke-linejoin=\"miter\"/>';\n default:\n return null;\n }\n}\nconst POWERLINE_SYMBOLS = new Set([0xe0b0, 0xe0b1, 0xe0b2, 0xe0b3]);\nconst POWERLINE_SYMBOL_NUDGE = 0.02;\nconst FALLBACK_THEME = {\n foreground: \"#000000\",\n background: \"#000000\",\n palette: [\"#000000\", \"#000000\", \"#000000\", \"#000000\", \"#000000\", \"#000000\", \"#000000\", \"#000000\", \"#000000\", \"#000000\", \"#000000\", \"#000000\", \"#000000\", \"#000000\", \"#000000\", \"#000000\"]\n};\n\nconst _tmpl$$d = /*#__PURE__*/template(`<svg version=\"1.1\" viewBox=\"0 0 12 12\" class=\"ap-icon ap-icon-fullscreen-off\"><path d=\"M7,5 L7,0 L9,2 L11,0 L12,1 L10,3 L12,5 Z\"></path><path d=\"M5,7 L0,7 L2,9 L0,11 L1,12 L3,10 L5,12 Z\"></path></svg>`, 6);\nvar ExpandIcon = (props => {\n return _tmpl$$d.cloneNode(true);\n});\n\nconst _tmpl$$c = /*#__PURE__*/template(`<svg version=\"1.1\" viewBox=\"6 8 14 16\" class=\"ap-icon\"><path d=\"M0.938 8.313h22.125c0.5 0 0.938 0.438 0.938 0.938v13.5c0 0.5-0.438 0.938-0.938 0.938h-22.125c-0.5 0-0.938-0.438-0.938-0.938v-13.5c0-0.5 0.438-0.938 0.938-0.938zM1.594 22.063h20.813v-12.156h-20.813v12.156zM3.844 11.188h1.906v1.938h-1.906v-1.938zM7.469 11.188h1.906v1.938h-1.906v-1.938zM11.031 11.188h1.938v1.938h-1.938v-1.938zM14.656 11.188h1.875v1.938h-1.875v-1.938zM18.25 11.188h1.906v1.938h-1.906v-1.938zM5.656 15.031h1.938v1.938h-1.938v-1.938zM9.281 16.969v-1.938h1.906v1.938h-1.906zM12.875 16.969v-1.938h1.906v1.938h-1.906zM18.406 16.969h-1.938v-1.938h1.938v1.938zM16.531 20.781h-9.063v-1.906h9.063v1.906z\"></path></svg>`, 4);\nvar KeyboardIcon = (props => {\n return _tmpl$$c.cloneNode(true);\n});\n\nconst _tmpl$$b = /*#__PURE__*/template(`<svg version=\"1.1\" viewBox=\"0 0 12 12\" class=\"ap-icon\" aria-label=\"Pause\" role=\"button\"><path d=\"M1,0 L4,0 L4,12 L1,12 Z\"></path><path d=\"M8,0 L11,0 L11,12 L8,12 Z\"></path></svg>`, 6);\nvar PauseIcon = (props => {\n return _tmpl$$b.cloneNode(true);\n});\n\nconst _tmpl$$a = /*#__PURE__*/template(`<svg version=\"1.1\" viewBox=\"0 0 12 12\" class=\"ap-icon\" aria-label=\"Play\" role=\"button\"><path d=\"M1,0 L11,6 L1,12 Z\"></path></svg>`, 4);\nvar PlayIcon = (props => {\n return _tmpl$$a.cloneNode(true);\n});\n\nconst _tmpl$$9 = /*#__PURE__*/template(`<svg version=\"1.1\" viewBox=\"0 0 12 12\" class=\"ap-icon ap-icon-fullscreen-on\"><path d=\"M12,0 L7,0 L9,2 L7,4 L8,5 L10,3 L12,5 Z\"></path><path d=\"M0,12 L0,7 L2,9 L4,7 L5,8 L3,10 L5,12 Z\"></path></svg>`, 6);\nvar ShrinkIcon = (props => {\n return _tmpl$$9.cloneNode(true);\n});\n\nconst _tmpl$$8 = /*#__PURE__*/template(`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\"><path d=\"M10.5 3.75a.75.75 0 0 0-1.264-.546L5.203 7H2.667a.75.75 0 0 0-.7.48A6.985 6.985 0 0 0 1.5 10c0 .887.165 1.737.468 2.52.111.29.39.48.7.48h2.535l4.033 3.796a.75.75 0 0 0 1.264-.546V3.75ZM16.45 5.05a.75.75 0 0 0-1.06 1.061 5.5 5.5 0 0 1 0 7.778.75.75 0 0 0 1.06 1.06 7 7 0 0 0 0-9.899Z\"></path><path d=\"M14.329 7.172a.75.75 0 0 0-1.061 1.06 2.5 2.5 0 0 1 0 3.536.75.75 0 0 0 1.06 1.06 4 4 0 0 0 0-5.656Z\"></path></svg>`, 6);\nvar SpeakerOnIcon = (props => {\n return _tmpl$$8.cloneNode(true);\n});\n\nconst _tmpl$$7 = /*#__PURE__*/template(`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" class=\"size-5\"><path d=\"M10.047 3.062a.75.75 0 0 1 .453.688v12.5a.75.75 0 0 1-1.264.546L5.203 13H2.667a.75.75 0 0 1-.7-.48A6.985 6.985 0 0 1 1.5 10c0-.887.165-1.737.468-2.52a.75.75 0 0 1 .7-.48h2.535l4.033-3.796a.75.75 0 0 1 .811-.142ZM13.78 7.22a.75.75 0 1 0-1.06 1.06L14.44 10l-1.72 1.72a.75.75 0 0 0 1.06 1.06l1.72-1.72 1.72 1.72a.75.75 0 1 0 1.06-1.06L16.56 10l1.72-1.72a.75.75 0 0 0-1.06-1.06L15.5 8.94l-1.72-1.72Z\"></path></svg>`, 4);\nvar SpeakerOffIcon = (props => {\n return _tmpl$$7.cloneNode(true);\n});\n\nconst _tmpl$$6 = /*#__PURE__*/template(`<span class=\"ap-button ap-playback-button\" tabindex=\"0\"></span>`, 2),\n _tmpl$2$1 = /*#__PURE__*/template(`<span class=\"ap-bar\"><span class=\"ap-gutter ap-gutter-empty\"></span><span class=\"ap-gutter ap-gutter-full\"></span></span>`, 6),\n _tmpl$3$1 = /*#__PURE__*/template(`<span class=\"ap-tooltip\">Unmute (m)</span>`, 2),\n _tmpl$4$1 = /*#__PURE__*/template(`<span class=\"ap-tooltip\">Mute (m)</span>`, 2),\n _tmpl$5$1 = /*#__PURE__*/template(`<span class=\"ap-button ap-speaker-button ap-tooltip-container\" aria-label=\"Mute / unmute\" role=\"button\" tabindex=\"0\"></span>`, 2),\n _tmpl$6$1 = /*#__PURE__*/template(`<div class=\"ap-control-bar\"><span class=\"ap-timer\" aria-readonly=\"true\" role=\"textbox\" tabindex=\"0\"><span class=\"ap-time-elapsed\"></span><span class=\"ap-time-remaining\"></span></span><span class=\"ap-progressbar\"></span><span class=\"ap-button ap-kbd-button ap-tooltip-container\" aria-label=\"Show keyboard shortcuts\" role=\"button\" tabindex=\"0\"><span class=\"ap-tooltip\">Keyboard shortcuts (?)</span></span><span class=\"ap-button ap-fullscreen-button ap-tooltip-container\" aria-label=\"Toggle fullscreen mode\" role=\"button\" tabindex=\"0\"><span class=\"ap-tooltip\">Fullscreen (f)</span></span></div>`, 18),\n _tmpl$7$1 = /*#__PURE__*/template(`<span class=\"ap-marker-container ap-tooltip-container\"><span class=\"ap-marker\"></span><span class=\"ap-tooltip\"></span></span>`, 6);\nfunction formatTime(seconds) {\n let s = Math.floor(seconds);\n const d = Math.floor(s / 86400);\n s %= 86400;\n const h = Math.floor(s / 3600);\n s %= 3600;\n const m = Math.floor(s / 60);\n s %= 60;\n if (d > 0) {\n return `${zeroPad(d)}:${zeroPad(h)}:${zeroPad(m)}:${zeroPad(s)}`;\n } else if (h > 0) {\n return `${zeroPad(h)}:${zeroPad(m)}:${zeroPad(s)}`;\n } else {\n return `${zeroPad(m)}:${zeroPad(s)}`;\n }\n}\nfunction zeroPad(n) {\n return n < 10 ? `0${n}` : n.toString();\n}\nvar ControlBar = (props => {\n const e = f => {\n return e => {\n e.preventDefault();\n f(e);\n };\n };\n const currentTime = () => typeof props.currentTime === \"number\" ? formatTime(props.currentTime) : \"--:--\";\n const remainingTime = () => typeof props.remainingTime === \"number\" ? \"-\" + formatTime(props.remainingTime) : currentTime();\n const markers = createMemo(() => typeof props.duration === \"number\" ? props.markers.filter(m => m[0] < props.duration) : []);\n const markerPosition = m => `${m[0] / props.duration * 100}%`;\n const markerText = m => {\n if (m[1] === \"\") {\n return formatTime(m[0]);\n } else {\n return `${formatTime(m[0])} - ${m[1]}`;\n }\n };\n const isPastMarker = m => typeof props.currentTime === \"number\" ? m[0] <= props.currentTime : false;\n const gutterBarStyle = () => {\n return {\n transform: `scaleX(${props.progress || 0}`\n };\n };\n const calcPosition = e => {\n const barWidth = e.currentTarget.offsetWidth;\n const rect = e.currentTarget.getBoundingClientRect();\n const mouseX = e.clientX - rect.left;\n const pos = Math.max(0, mouseX / barWidth);\n return `${pos * 100}%`;\n };\n const [mouseDown, setMouseDown] = createSignal(false);\n const throttledSeek = throttle(props.onSeekClick, 50);\n const onMouseDown = e => {\n if (e._marker) return;\n if (e.altKey || e.shiftKey || e.metaKey || e.ctrlKey || e.button !== 0) return;\n setMouseDown(true);\n props.onSeekClick(calcPosition(e));\n };\n const seekToMarker = index => {\n return e(() => {\n props.onSeekClick({\n marker: index\n });\n });\n };\n const onMove = e => {\n if (e.altKey || e.shiftKey || e.metaKey || e.ctrlKey) return;\n if (mouseDown()) {\n throttledSeek(calcPosition(e));\n }\n };\n const onDocumentMouseUp = () => {\n setMouseDown(false);\n };\n document.addEventListener(\"mouseup\", onDocumentMouseUp);\n onCleanup(() => {\n document.removeEventListener(\"mouseup\", onDocumentMouseUp);\n });\n return (() => {\n const _el$ = _tmpl$6$1.cloneNode(true),\n _el$3 = _el$.firstChild,\n _el$4 = _el$3.firstChild,\n _el$5 = _el$4.nextSibling,\n _el$6 = _el$3.nextSibling,\n _el$13 = _el$6.nextSibling,\n _el$14 = _el$13.firstChild,\n _el$15 = _el$13.nextSibling,\n _el$16 = _el$15.firstChild;\n const _ref$ = props.ref;\n typeof _ref$ === \"function\" ? use(_ref$, _el$) : props.ref = _el$;\n insert(_el$, createComponent(Show, {\n get when() {\n return props.isPausable;\n },\n get children() {\n const _el$2 = _tmpl$$6.cloneNode(true);\n addEventListener(_el$2, \"click\", e(props.onPlayClick));\n insert(_el$2, createComponent(Switch, {\n get children() {\n return [createComponent(Match, {\n get when() {\n return props.isPlaying;\n },\n get children() {\n return createComponent(PauseIcon, {});\n }\n }), createComponent(Match, {\n when: true,\n get children() {\n return createComponent(PlayIcon, {});\n }\n })];\n }\n }));\n return _el$2;\n }\n }), _el$3);\n insert(_el$4, currentTime);\n insert(_el$5, remainingTime);\n insert(_el$6, createComponent(Show, {\n get when() {\n return typeof props.progress === \"number\" || props.isSeekable;\n },\n get children() {\n const _el$7 = _tmpl$2$1.cloneNode(true),\n _el$8 = _el$7.firstChild,\n _el$9 = _el$8.nextSibling;\n _el$7.$$mousemove = onMove;\n _el$7.$$mousedown = onMouseDown;\n insert(_el$7, createComponent(For, {\n get each() {\n return markers();\n },\n children: (m, i) => (() => {\n const _el$17 = _tmpl$7$1.cloneNode(true),\n _el$18 = _el$17.firstChild,\n _el$19 = _el$18.nextSibling;\n _el$17.$$mousedown = e => {\n e._marker = true;\n };\n addEventListener(_el$17, \"click\", seekToMarker(i()));\n insert(_el$19, () => markerText(m));\n createRenderEffect(_p$ => {\n const _v$ = markerPosition(m),\n _v$2 = !!isPastMarker(m);\n _v$ !== _p$._v$ && _el$17.style.setProperty(\"left\", _p$._v$ = _v$);\n _v$2 !== _p$._v$2 && _el$18.classList.toggle(\"ap-marker-past\", _p$._v$2 = _v$2);\n return _p$;\n }, {\n _v$: undefined,\n _v$2: undefined\n });\n return _el$17;\n })()\n }), null);\n createRenderEffect(_$p => style(_el$9, gutterBarStyle(), _$p));\n return _el$7;\n }\n }));\n insert(_el$, createComponent(Show, {\n get when() {\n return props.isMuted !== undefined;\n },\n get children() {\n const _el$10 = _tmpl$5$1.cloneNode(true);\n addEventListener(_el$10, \"click\", e(props.onMuteClick));\n insert(_el$10, createComponent(Switch, {\n get children() {\n return [createComponent(Match, {\n get when() {\n return props.isMuted === true;\n },\n get children() {\n return [createComponent(SpeakerOffIcon, {}), _tmpl$3$1.cloneNode(true)];\n }\n }), createComponent(Match, {\n get when() {\n return props.isMuted === false;\n },\n get children() {\n return [createComponent(SpeakerOnIcon, {}), _tmpl$4$1.cloneNode(true)];\n }\n })];\n }\n }));\n return _el$10;\n }\n }), _el$13);\n addEventListener(_el$13, \"click\", e(props.onHelpClick));\n insert(_el$13, createComponent(KeyboardIcon, {}), _el$14);\n addEventListener(_el$15, \"click\", e(props.onFullscreenClick));\n insert(_el$15, createComponent(ShrinkIcon, {}), _el$16);\n insert(_el$15, createComponent(ExpandIcon, {}), _el$16);\n createRenderEffect(() => _el$.classList.toggle(\"ap-seekable\", !!props.isSeekable));\n return _el$;\n })();\n});\ndelegateEvents([\"click\", \"mousedown\", \"mousemove\"]);\n\nconst _tmpl$$5 = /*#__PURE__*/template(`<div class=\"ap-overlay ap-overlay-error\"><span>💥</span></div>`, 4);\nvar ErrorOverlay = (props => {\n return _tmpl$$5.cloneNode(true);\n});\n\nconst _tmpl$$4 = /*#__PURE__*/template(`<div class=\"ap-overlay ap-overlay-loading\"><span class=\"ap-loader\"></span></div>`, 4);\nvar LoaderOverlay = (props => {\n return _tmpl$$4.cloneNode(true);\n});\n\nconst _tmpl$$3 = /*#__PURE__*/template(`<div class=\"ap-overlay ap-overlay-info\"><span></span></div>`, 4);\nvar InfoOverlay = (props => {\n return (() => {\n const _el$ = _tmpl$$3.cloneNode(true),\n _el$2 = _el$.firstChild;\n insert(_el$2, () => props.message);\n createRenderEffect(() => _el$.classList.toggle(\"ap-was-playing\", !!props.wasPlaying));\n return _el$;\n })();\n});\n\nconst _tmpl$$2 = /*#__PURE__*/template(`<div class=\"ap-overlay ap-overlay-start\"><div class=\"ap-play-button\"><div><span><svg version=\"1.1\" viewBox=\"0 0 1000.0 1000.0\" class=\"ap-icon\"><defs><mask id=\"small-triangle-mask\"><rect width=\"100%\" height=\"100%\" fill=\"white\"></rect><polygon points=\"700.0 500.0, 400.00000000000006 326.7949192431122, 399.9999999999999 673.2050807568877\" fill=\"black\"></polygon></mask></defs><polygon points=\"1000.0 500.0, 250.0000000000001 66.98729810778059, 249.99999999999977 933.0127018922192\" mask=\"url(#small-triangle-mask)\" fill=\"white\" class=\"ap-play-btn-fill\"></polygon><polyline points=\"673.2050807568878 400.0, 326.7949192431123 600.0\" stroke=\"white\" stroke-width=\"90\" class=\"ap-play-btn-stroke\"></polyline></svg></span></div></div></div>`, 22);\nvar StartOverlay = (props => {\n const e = f => {\n return e => {\n e.preventDefault();\n f(e);\n };\n };\n return (() => {\n const _el$ = _tmpl$$2.cloneNode(true);\n addEventListener(_el$, \"click\", e(props.onClick));\n return _el$;\n })();\n});\ndelegateEvents([\"click\"]);\n\nconst _tmpl$$1 = /*#__PURE__*/template(`<li><kbd>space</kbd> - pause / resume</li>`, 4),\n _tmpl$2 = /*#__PURE__*/template(`<li><kbd>←</kbd> / <kbd>→</kbd> - rewind / fast-forward by 5 seconds</li>`, 6),\n _tmpl$3 = /*#__PURE__*/template(`<li><kbd>Shift</kbd> + <kbd>←</kbd> / <kbd>→</kbd> - rewind / fast-forward by 10%</li>`, 8),\n _tmpl$4 = /*#__PURE__*/template(`<li><kbd>[</kbd> / <kbd>]</kbd> - jump to the previous / next marker</li>`, 6),\n _tmpl$5 = /*#__PURE__*/template(`<li><kbd>0</kbd>, <kbd>1</kbd>, <kbd>2</kbd> ... <kbd>9</kbd> - jump to 0%, 10%, 20% ... 90%</li>`, 10),\n _tmpl$6 = /*#__PURE__*/template(`<li><kbd>,</kbd> / <kbd>.</kbd> - step back / forward, a frame at a time (when paused)</li>`, 6),\n _tmpl$7 = /*#__PURE__*/template(`<li><kbd>m</kbd> - mute / unmute audio</li>`, 4),\n _tmpl$8 = /*#__PURE__*/template(`<div class=\"ap-overlay ap-overlay-help\"><div><div><p>Keyboard shortcuts</p><ul><li><kbd>f</kbd> - toggle fullscreen mode</li><li><kbd>?</kbd> - show this help popup</li></ul></div></div></div>`, 18);\nvar HelpOverlay = (props => {\n const e = f => {\n return e => {\n e.preventDefault();\n f(e);\n };\n };\n return (() => {\n const _el$ = _tmpl$8.cloneNode(true),\n _el$2 = _el$.firstChild,\n _el$3 = _el$2.firstChild,\n _el$4 = _el$3.firstChild,\n _el$5 = _el$4.nextSibling,\n _el$12 = _el$5.firstChild,\n _el$14 = _el$12.nextSibling;\n addEventListener(_el$, \"click\", e(props.onClose));\n _el$2.$$click = e => {\n e.stopPropagation();\n };\n insert(_el$5, createComponent(Show, {\n get when() {\n return props.isPausable;\n },\n get children() {\n return _tmpl$$1.cloneNode(true);\n }\n }), _el$12);\n insert(_el$5, createComponent(Show, {\n get when() {\n return props.isSeekable;\n },\n get children() {\n return [_tmpl$2.cloneNode(true), _tmpl$3.cloneNode(true), _tmpl$4.cloneNode(true), _tmpl$5.cloneNode(true), _tmpl$6.cloneNode(true)];\n }\n }), _el$12);\n insert(_el$5, createComponent(Show, {\n get when() {\n return props.hasAudio;\n },\n get children() {\n return _tmpl$7.cloneNode(true);\n }\n }), _el$14);\n return _el$;\n })();\n});\ndelegateEvents([\"click\"]);\n\nconst _tmpl$ = /*#__PURE__*/template(`<div class=\"ap-wrapper\" tabindex=\"-1\"><div></div></div>`, 4);\nconst CONTROL_BAR_HEIGHT = 32; // must match height of div.ap-control-bar in CSS\n\nvar Player = (props => {\n const logger = props.logger;\n const core = props.core;\n const autoPlay = props.autoPlay;\n const charW = props.charW;\n const charH = props.charH;\n const bordersW = props.bordersW;\n const bordersH = props.bordersH;\n const themeOption = props.theme ?? \"auto/asciinema\";\n const preferEmbeddedTheme = themeOption.slice(0, 5) === \"auto/\";\n const themeName = preferEmbeddedTheme ? themeOption.slice(5) : themeOption;\n const [state, setState] = createStore({\n containerW: 0,\n containerH: 0,\n isPausable: true,\n isSeekable: true,\n isFullscreen: false,\n currentTime: null,\n remainingTime: null,\n progress: null\n });\n const [isPlaying, setIsPlaying] = createSignal(false);\n const [isMuted, setIsMuted] = createSignal(undefined);\n const [wasPlaying, setWasPlaying] = createSignal(false);\n const [overlay, setOverlay] = createSignal(!autoPlay ? \"start\" : null);\n const [infoMessage, setInfoMessage] = createSignal(null);\n const [blinking, setBlinking] = createSignal(false);\n const [terminalSize, setTerminalSize] = createSignal({\n cols: props.cols,\n rows: props.rows\n }, {\n equals: (newVal, oldVal) => newVal.cols === oldVal.cols && newVal.rows === oldVal.rows\n });\n const [duration, setDuration] = createSignal(null);\n const [markers, setMarkers] = createStore([]);\n const [userActive, setUserActive] = createSignal(false);\n const [isHelpVisible, setIsHelpVisible] = createSignal(false);\n const [originalTheme, setOriginalTheme] = createSignal(null);\n const terminalCols = createMemo(() => terminalSize().cols || 80);\n const terminalRows = createMemo(() => terminalSize().rows || 24);\n const controlBarHeight = () => props.controls === false ? 0 : CONTROL_BAR_HEIGHT;\n const controlsVisible = () => props.controls === true || props.controls === \"auto\" && userActive();\n let userActivityTimeoutId;\n let timeUpdateIntervalId;\n let wrapperRef;\n let playerRef;\n let controlBarRef;\n let resizeObserver;\n function onPlaying() {\n setBlinking(true);\n startTimeUpdates();\n }\n function onStopped() {\n setBlinking(false);\n stopTimeUpdates();\n updateTime();\n }\n let resolveCoreReady;\n const coreReady = new Promise(resolve => {\n resolveCoreReady = resolve;\n });\n const onCoreReady = _ref => {\n let {\n isPausable,\n isSeekable\n } = _ref;\n setState({\n isPausable,\n isSeekable\n });\n resolveCoreReady();\n };\n const onCoreMetadata = meta => {\n batch(() => {\n if (meta.duration !== undefined) {\n setDuration(meta.duration);\n }\n if (meta.markers !== undefined) {\n setMarkers(meta.markers);\n }\n if (meta.hasAudio !== undefined) {\n setIsMuted(meta.hasAudio ? false : undefined);\n }\n if (meta.size !== undefined) {\n setTerminalSize(meta.size);\n }\n if (meta.theme !== undefined) {\n setOriginalTheme(meta.theme);\n }\n });\n };\n const onCorePlay = () => {\n setOverlay(null);\n };\n const onCorePlaying = () => {\n batch(() => {\n setIsPlaying(true);\n setWasPlaying(true);\n setOverlay(null);\n onPlaying();\n });\n };\n const onCoreIdle = () => {\n batch(() => {\n setIsPlaying(false);\n onStopped();\n });\n };\n const onCoreLoading = () => {\n batch(() => {\n setIsPlaying(false);\n onStopped();\n setOverlay(\"loader\");\n });\n };\n const onCoreOffline = _ref2 => {\n let {\n message\n } = _ref2;\n batch(() => {\n setIsPlaying(false);\n onStopped();\n if (message !== undefined) {\n setInfoMessage(message);\n setOverlay(\"info\");\n }\n });\n };\n const onCoreMuted = muted => {\n setIsMuted(muted);\n };\n const stats = {\n terminal: {\n renders: 0\n }\n };\n const onCoreEnded = _ref3 => {\n let {\n message\n } = _ref3;\n batch(() => {\n setIsPlaying(false);\n onStopped();\n if (message !== undefined) {\n setInfoMessage(message);\n setOverlay(\"info\");\n }\n });\n logger.debug(\"stats\", stats.terminal);\n };\n const onCoreErrored = () => {\n setOverlay(\"error\");\n };\n const onCoreSeeked = () => {\n updateTime();\n };\n core.addEventListener(\"ready\", onCoreReady);\n core.addEventListener(\"metadata\", onCoreMetadata);\n core.addEventListener(\"play\", onCorePlay);\n core.addEventListener(\"playing\", onCorePlaying);\n core.addEventListener(\"idle\", onCoreIdle);\n core.addEventListener(\"loading\", onCoreLoading);\n core.addEventListener(\"offline\", onCoreOffline);\n core.addEventListener(\"muted\", onCoreMuted);\n core.addEventListener(\"ended\", onCoreEnded);\n core.addEventListener(\"errored\", onCoreErrored);\n core.addEventListener(\"seeked\", onCoreSeeked);\n const setupResizeObserver = () => {\n resizeObserver = new ResizeObserver(debounce(_entries => {\n setState({\n containerW: wrapperRef.offsetWidth,\n containerH: wrapperRef.offsetHeight\n });\n wrapperRef.dispatchEvent(new CustomEvent(\"resize\", {\n detail: {\n el: playerRef\n }\n }));\n }, 10));\n resizeObserver.observe(wrapperRef);\n };\n onMount(async () => {\n logger.info(\"view: mounted\");\n logger.debug(\"view: font measurements\", {\n charW,\n charH\n });\n setupResizeObserver();\n setState({\n containerW: wrapperRef.offsetWidth,\n containerH: wrapperRef.offsetHeight\n });\n });\n onCleanup(() => {\n core.removeEventListener(\"ready\", onCoreReady);\n core.removeEventListener(\"metadata\", onCoreMetadata);\n core.removeEventListener(\"play\", onCorePlay);\n core.removeEventListener(\"playing\", onCorePlaying);\n core.removeEventListener(\"idle\", onCoreIdle);\n core.removeEventListener(\"loading\", onCoreLoading);\n core.removeEventListener(\"offline\", onCoreOffline);\n core.removeEventListener(\"muted\", onCoreMuted);\n core.removeEventListener(\"ended\", onCoreEnded);\n core.removeEventListener(\"errored\", onCoreErrored);\n core.removeEventListener(\"seeked\", onCoreSeeked);\n core.stop();\n stopTimeUpdates();\n resizeObserver.disconnect();\n });\n const terminalElementSize = createMemo(() => {\n const terminalW = charW * terminalCols() + bordersW;\n const terminalH = charH * terminalRows() + bordersH;\n let fit = props.fit ?? \"width\";\n if (fit === \"both\" || state.isFullscreen) {\n const containerRatio = state.containerW / (state.containerH - controlBarHeight());\n const terminalRatio = terminalW / terminalH;\n if (containerRatio > terminalRatio) {\n fit = \"height\";\n } else {\n fit = \"width\";\n }\n }\n if (fit === false || fit === \"none\") {\n return {};\n } else if (fit === \"width\") {\n const scale = state.containerW / terminalW;\n return {\n scale: scale,\n width: state.containerW,\n height: terminalH * scale + controlBarHeight()\n };\n } else if (fit === \"height\") {\n const scale = (state.containerH - controlBarHeight()) / terminalH;\n return {\n scale: scale,\n width: terminalW * scale,\n height: state.containerH\n };\n } else {\n throw new Error(`unsupported fit mode: ${fit}`);\n }\n });\n const onFullscreenChange = () => {\n setState(\"isFullscreen\", document.fullscreenElement ?? document.webkitFullscreenElement);\n };\n const toggleFullscreen = () => {\n if (state.isFullscreen) {\n (document.exitFullscreen ?? document.webkitExitFullscreen ?? (() => {})).apply(document);\n } else {\n (wrapperRef.requestFullscreen ?? wrapperRef.webkitRequestFullscreen ?? (() => {})).apply(wrapperRef);\n }\n };\n const toggleHelp = () => {\n if (isHelpVisible()) {\n setIsHelpVisible(false);\n } else {\n core.pause();\n setIsHelpVisible(true);\n }\n };\n const onKeyDown = e => {\n if (e.altKey || e.metaKey || e.ctrlKey) {\n return;\n }\n if (e.key == \" \") {\n core.togglePlay();\n } else if (e.key == \",\") {\n core.step(-1).then(updateTime);\n } else if (e.key == \".\") {\n core.step().then(updateTime);\n } else if (e.key == \"f\") {\n toggleFullscreen();\n } else if (e.key == \"m\") {\n toggleMuted();\n } else if (e.key == \"[\") {\n core.seek({\n marker: \"prev\"\n });\n } else if (e.key == \"]\") {\n core.seek({\n marker: \"next\"\n });\n } else if (e.key.charCodeAt(0) >= 48 && e.key.charCodeAt(0) <= 57) {\n const pos = (e.key.charCodeAt(0) - 48) / 10;\n core.seek(`${pos * 100}%`);\n } else if (e.key == \"?\") {\n toggleHelp();\n } else if (e.key == \"ArrowLeft\") {\n if (e.shiftKey) {\n core.seek(\"<<<\");\n } else {\n core.seek(\"<<\");\n }\n } else if (e.key == \"ArrowRight\") {\n if (e.shiftKey) {\n core.seek(\">>>\");\n } else {\n core.seek(\">>\");\n }\n } else if (e.key == \"Escape\") {\n setIsHelpVisible(false);\n } else {\n return;\n }\n e.stopPropagation();\n e.preventDefault();\n };\n const wrapperOnMouseMove = () => {\n if (state.isFullscreen) {\n onUserActive(true);\n }\n };\n const playerOnMouseLeave = () => {\n if (!state.isFullscreen) {\n onUserActive(false);\n }\n };\n const startTimeUpdates = () => {\n timeUpdateIntervalId = setInterval(updateTime, 100);\n };\n const stopTimeUpdates = () => {\n clearInterval(timeUpdateIntervalId);\n };\n const updateTime = async () => {\n const currentTime = await core.getCurrentTime();\n const remainingTime = await core.getRemainingTime();\n const progress = await core.getProgress();\n setState({\n currentTime,\n remainingTime,\n progress\n });\n };\n const onUserActive = show => {\n clearTimeout(userActivityTimeoutId);\n if (show) {\n userActivityTimeoutId = setTimeout(() => onUserActive(false), 2000);\n }\n setUserActive(show);\n };\n const embeddedTheme = createMemo(() => preferEmbeddedTheme ? originalTheme() : null);\n const playerStyle = () => {\n const style = {};\n if ((props.fit === false || props.fit === \"none\") && props.terminalFontSize !== undefined) {\n if (props.terminalFontSize === \"small\") {\n style[\"font-size\"] = \"12px\";\n } else if (props.terminalFontSize === \"medium\") {\n style[\"font-size\"] = \"18px\";\n } else if (props.terminalFontSize === \"big\") {\n style[\"font-size\"] = \"24px\";\n } else {\n style[\"font-size\"] = props.terminalFontSize;\n }\n }\n const size = terminalElementSize();\n if (size.width !== undefined) {\n style[\"width\"] = `${size.width}px`;\n style[\"height\"] = `${size.height}px`;\n }\n if (props.terminalFontFamily !== undefined) {\n style[\"--term-font-family\"] = props.terminalFontFamily;\n }\n const themeColors = embeddedTheme();\n if (themeColors) {\n style[\"--term-color-foreground\"] = themeColors.foreground;\n style[\"--term-color-background\"] = themeColors.background;\n }\n return style;\n };\n const play = () => {\n coreReady.then(() => core.play());\n };\n const togglePlay = () => {\n coreReady.then(() => core.togglePlay());\n };\n const toggleMuted = () => {\n coreReady.then(() => {\n if (isMuted() === true) {\n core.unmute();\n } else {\n core.mute();\n }\n });\n };\n const seek = pos => {\n coreReady.then(() => core.seek(pos));\n };\n const playerClass = () => `ap-player ap-default-term-ff asciinema-player-theme-${themeName}`;\n const terminalScale = () => terminalElementSize()?.scale;\n const el = (() => {\n const _el$ = _tmpl$.cloneNode(true),\n _el$2 = _el$.firstChild;\n const _ref$ = wrapperRef;\n typeof _ref$ === \"function\" ? use(_ref$, _el$) : wrapperRef = _el$;\n _el$.addEventListener(\"webkitfullscreenchange\", onFullscreenChange);\n _el$.addEventListener(\"fullscreenchange\", onFullscreenChange);\n _el$.$$mousemove = wrapperOnMouseMove;\n _el$.$$keydown = onKeyDown;\n const _ref$2 = playerRef;\n typeof _ref$2 === \"function\" ? use(_ref$2, _el$2) : playerRef = _el$2;\n _el$2.$$mousemove = () => onUserActive(true);\n _el$2.addEventListener(\"mouseleave\", playerOnMouseLeave);\n insert(_el$2, createComponent(Terminal, {\n get cols() {\n return terminalCols();\n },\n get rows() {\n return terminalRows();\n },\n get scale() {\n return terminalScale();\n },\n get blinking() {\n return blinking();\n },\n get lineHeight() {\n return props.terminalLineHeight;\n },\n preferEmbeddedTheme: preferEmbeddedTheme,\n core: core,\n get stats() {\n return stats.terminal;\n }\n }), null);\n insert(_el$2, createComponent(Show, {\n get when() {\n return props.controls !== false;\n },\n get children() {\n return createComponent(ControlBar, {\n get duration() {\n return duration();\n },\n get currentTime() {\n return state.currentTime;\n },\n get remainingTime() {\n return state.remainingTime;\n },\n get progress() {\n return state.progress;\n },\n markers: markers,\n get isPlaying() {\n return isPlaying() || overlay() == \"loader\";\n },\n get isPausable() {\n return state.isPausable;\n },\n get isSeekable() {\n return state.isSeekable;\n },\n get isMuted() {\n return isMuted();\n },\n onPlayClick: togglePlay,\n onFullscreenClick: toggleFullscreen,\n onHelpClick: toggleHelp,\n onSeekClick: seek,\n onMuteClick: toggleMuted,\n ref(r$) {\n const _ref$3 = controlBarRef;\n typeof _ref$3 === \"function\" ? _ref$3(r$) : controlBarRef = r$;\n }\n });\n }\n }), null);\n insert(_el$2, createComponent(Switch, {\n get children() {\n return [createComponent(Match, {\n get when() {\n return overlay() == \"start\";\n },\n get children() {\n return createComponent(StartOverlay, {\n onClick: play\n });\n }\n }), createComponent(Match, {\n get when() {\n return overlay() == \"loader\";\n },\n get children() {\n return createComponent(LoaderOverlay, {});\n }\n }), createComponent(Match, {\n get when() {\n return overlay() == \"error\";\n },\n get children() {\n return createComponent(ErrorOverlay, {});\n }\n })];\n }\n }), null);\n insert(_el$2, createComponent(Transition, {\n name: \"slide\",\n get children() {\n return createComponent(Show, {\n get when() {\n return overlay() == \"info\";\n },\n get children() {\n return createComponent(InfoOverlay, {\n get message() {\n return infoMessage();\n },\n get wasPlaying() {\n return wasPlaying();\n }\n });\n }\n });\n }\n }), null);\n insert(_el$2, createComponent(Show, {\n get when() {\n return isHelpVisible();\n },\n get children() {\n return createComponent(HelpOverlay, {\n onClose: () => setIsHelpVisible(false),\n get isPausable() {\n return state.isPausable;\n },\n get isSeekable() {\n return state.isSeekable;\n },\n get hasAudio() {\n return isMuted() !== undefined;\n }\n });\n }\n }), null);\n createRenderEffect(_p$ => {\n const _v$ = !!controlsVisible(),\n _v$2 = playerClass(),\n _v$3 = playerStyle();\n _v$ !== _p$._v$ && _el$.classList.toggle(\"ap-hud\", _p$._v$ = _v$);\n _v$2 !== _p$._v$2 && className(_el$2, _p$._v$2 = _v$2);\n _p$._v$3 = style(_el$2, _v$3, _p$._v$3);\n return _p$;\n }, {\n _v$: undefined,\n _v$2: undefined,\n _v$3: undefined\n });\n return _el$;\n })();\n return el;\n});\ndelegateEvents([\"keydown\", \"mousemove\"]);\n\nfunction mount(core, elem) {\n let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const metrics = measureTerminal(opts.terminalFontFamily, opts.terminalLineHeight);\n const props = {\n core: core,\n logger: opts.logger,\n cols: opts.cols,\n rows: opts.rows,\n fit: opts.fit,\n controls: opts.controls,\n autoPlay: opts.autoPlay,\n terminalFontSize: opts.terminalFontSize,\n terminalFontFamily: opts.terminalFontFamily,\n terminalLineHeight: opts.terminalLineHeight,\n theme: opts.theme,\n ...metrics\n };\n let el;\n const dispose = render(() => {\n el = createComponent(Player, props);\n return el;\n }, elem);\n return {\n el: el,\n dispose: dispose\n };\n}\nfunction measureTerminal(fontFamily, lineHeight) {\n const cols = 80;\n const rows = 24;\n const playerDiv = document.createElement(\"div\");\n playerDiv.className = \"ap-default-term-ff\";\n playerDiv.style.height = \"0px\";\n playerDiv.style.overflow = \"hidden\";\n playerDiv.style.fontSize = \"15px\"; // must match font-size of div.asciinema-player in CSS\n\n if (fontFamily !== undefined) {\n playerDiv.style.setProperty(\"--term-font-family\", fontFamily);\n }\n const termDiv = document.createElement(\"div\");\n termDiv.className = \"ap-term\";\n termDiv.style.width = `${cols}ch`;\n termDiv.style.height = `${rows * (lineHeight ?? 1.3333333333)}em`;\n termDiv.style.fontSize = \"100%\";\n playerDiv.appendChild(termDiv);\n document.body.appendChild(playerDiv);\n const metrics = {\n charW: termDiv.clientWidth / cols,\n charH: termDiv.clientHeight / rows,\n bordersW: termDiv.offsetWidth - termDiv.clientWidth,\n bordersH: termDiv.offsetHeight - termDiv.clientHeight\n };\n document.body.removeChild(playerDiv);\n return metrics;\n}\n\nconst CORE_OPTS = ['audioUrl', 'autoPlay', 'autoplay', 'boldIsBright', 'cols', 'idleTimeLimit', 'loop', 'markers', 'pauseOnMarkers', 'poster', 'preload', 'rows', 'speed', 'startAt'];\nconst UI_OPTS = ['autoPlay', 'autoplay', 'cols', 'controls', 'fit', 'rows', 'terminalFontFamily', 'terminalFontSize', 'terminalLineHeight', 'theme'];\nfunction coreOpts(inputOpts) {\n let overrides = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const opts = Object.fromEntries(Object.entries(inputOpts).filter(_ref => {\n let [key] = _ref;\n return CORE_OPTS.includes(key);\n }));\n opts.autoPlay ??= opts.autoplay;\n opts.speed ??= 1.0;\n return {\n ...opts,\n ...overrides\n };\n}\nfunction uiOpts(inputOpts) {\n let overrides = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const opts = Object.fromEntries(Object.entries(inputOpts).filter(_ref2 => {\n let [key] = _ref2;\n return UI_OPTS.includes(key);\n }));\n opts.autoPlay ??= opts.autoplay;\n opts.controls ??= \"auto\";\n return {\n ...opts,\n ...overrides\n };\n}\n\nexport { coreOpts as c, mount as m, uiOpts as u };\n","import { C as Core } from './core-DnNOMtZn.js';\nimport { c as coreOpts, m as mount, u as uiOpts } from './opts-BtLxsM_6.js';\nimport { D as DummyLogger } from './logging--P0CsEu_.js';\n\nfunction create(src, elem) {\n let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n const logger = opts.logger ?? new DummyLogger();\n const core = new Core(src, coreOpts(opts, {\n logger\n }));\n const {\n el,\n dispose\n } = mount(core, elem, uiOpts(opts, {\n logger\n }));\n const ready = core.init();\n const player = {\n el,\n dispose,\n getCurrentTime: () => ready.then(core.getCurrentTime.bind(core)),\n getDuration: () => ready.then(core.getDuration.bind(core)),\n play: () => ready.then(core.play.bind(core)),\n pause: () => ready.then(core.pause.bind(core)),\n seek: pos => ready.then(() => core.seek(pos))\n };\n player.addEventListener = (name, callback) => {\n return core.addEventListener(name, callback.bind(player));\n };\n return player;\n}\n\nexport { create };\n","import { create } from \"asciinema-player\";\n\nimport \"asciinema-player/dist/bundle/asciinema-player.css\";\n\nimport { CSSProperties, FC, useEffect, useRef } from \"react\";\n\ninterface AsciinemaPlayerProps {\n id?: string;\n inputUrl: string;\n outputUrl: string;\n timingUrl: string;\n rows?: number;\n cols?: number;\n fit?: string;\n style?: CSSProperties;\n speed?: number;\n autoPlay?: boolean;\n loop?: boolean;\n theme?: string;\n idleTimeLimit?: number;\n className?: string;\n}\n\nconst AsciinemaPlayerImpl: FC<AsciinemaPlayerProps> = ({\n id,\n rows,\n cols,\n inputUrl,\n outputUrl,\n timingUrl,\n fit,\n speed,\n autoPlay,\n loop,\n theme,\n idleTimeLimit = 2,\n style,\n}) => {\n const playerContainerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!playerContainerRef.current) return;\n\n const player = create(\n {\n url: [timingUrl, outputUrl, inputUrl],\n parser: \"typescript\",\n },\n playerContainerRef.current,\n {\n rows,\n cols,\n autoPlay,\n loop,\n theme,\n speed,\n idleTimeLimit,\n fit,\n }\n );\n\n void player.play();\n\n return () => {\n player.dispose();\n };\n }, [\n timingUrl,\n outputUrl,\n inputUrl,\n rows,\n cols,\n autoPlay,\n loop,\n theme,\n speed,\n idleTimeLimit,\n fit,\n ]);\n\n return (\n <div\n id={`asciinema-player-${id || \"default\"}`}\n ref={playerContainerRef}\n style={{ ...style }}\n />\n );\n};\n\nexport default AsciinemaPlayerImpl;\nexport type { AsciinemaPlayerProps };\n"],"x_google_ignoreList":[0,1,2,3],"mappings":"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"}