@univerjs/engine-render 0.24.0 → 0.25.0-insiders.20260608-e4336f7

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 (180) hide show
  1. package/lib/cjs/index.js +1049 -256
  2. package/lib/es/index.js +1049 -256
  3. package/lib/types/basics/index.d.ts +1 -0
  4. package/lib/types/basics/tools.d.ts +1 -0
  5. package/lib/types/basics/transformer-config.d.ts +17 -0
  6. package/lib/types/basics/zoom.d.ts +17 -0
  7. package/lib/types/components/docs/doc-background.d.ts +6 -0
  8. package/lib/types/components/docs/doc-component.d.ts +4 -0
  9. package/lib/types/components/docs/document.d.ts +6 -0
  10. package/lib/types/components/docs/extensions/font-and-base-line.d.ts +10 -0
  11. package/lib/types/components/docs/layout/block/paragraph/language-ruler.d.ts +4 -0
  12. package/lib/types/components/docs/layout/model/page.d.ts +1 -0
  13. package/lib/types/components/docs/table-render-viewport.d.ts +23 -0
  14. package/lib/types/components/sheets/extensions/border.d.ts +2 -2
  15. package/lib/types/components/sheets/interfaces.d.ts +4 -4
  16. package/lib/types/index.d.ts +2 -0
  17. package/lib/types/render-manager/render-manager.service.d.ts +1 -0
  18. package/lib/types/render-manager/render-unit.d.ts +3 -1
  19. package/lib/types/scene.transformer.d.ts +20 -0
  20. package/lib/types/services/canvas-color.service.d.ts +1 -0
  21. package/lib/umd/index.js +2 -2
  22. package/package.json +5 -5
  23. package/LICENSE +0 -176
  24. package/lib/cjs/en-us-Br9JW6Nt.js +0 -45
  25. package/lib/cjs/en-us-DKyh_RpA.js +0 -3
  26. package/lib/es/en-us-ClVoWMyT.js +0 -57
  27. /package/lib/cjs/{af-Bsj1JSBP.js → af-B2UUzO69.js} +0 -0
  28. /package/lib/cjs/{as-s7lqjieq.js → as-DbZDYp6O.js} +0 -0
  29. /package/lib/cjs/{be-L5eMFm5U.js → be-BBx0lyG-.js} +0 -0
  30. /package/lib/cjs/{bg-DPu8oywG.js → bg-DeX16RKi.js} +0 -0
  31. /package/lib/cjs/{bn-CIWO--x0.js → bn-3fjitMC3.js} +0 -0
  32. /package/lib/cjs/{ca-C4gmkbL6.js → ca-BxC8Zblv.js} +0 -0
  33. /package/lib/cjs/{cop-BYQt2Eln.js → cop-TvdaSBlz.js} +0 -0
  34. /package/lib/cjs/{cs-psn0RDcR.js → cs-MSNfJH-L.js} +0 -0
  35. /package/lib/cjs/{cu-CI412h46.js → cu-7FYbjEBr.js} +0 -0
  36. /package/lib/cjs/{cy-u9h1j59b.js → cy-CPuxVqb_.js} +0 -0
  37. /package/lib/cjs/{da-BQ70NE2J.js → da-BWsE849b.js} +0 -0
  38. /package/lib/cjs/{de-1901-C5Xgq4-z.js → de-1901-BYSTp3Fp.js} +0 -0
  39. /package/lib/cjs/{de-1996-BmpXhD5R.js → de-1996-DWtCfm_A.js} +0 -0
  40. /package/lib/cjs/{de-ch-1901-mUpubovn.js → de-ch-1901-rWVcF3cs.js} +0 -0
  41. /package/lib/cjs/{el-monoton-1KLys64v.js → el-monoton-BEUGM9Fi.js} +0 -0
  42. /package/lib/cjs/{el-polyton-C8sv-vqz.js → el-polyton-Bvh6HAfD.js} +0 -0
  43. /package/lib/cjs/{en-gb-DidBtNJX.js → en-gb-Dcrai7kY.js} +0 -0
  44. /package/lib/cjs/{es-C1gCT0OW.js → es-CVNdGI0L.js} +0 -0
  45. /package/lib/cjs/{et-UwA1uq3o.js → et-7Rdfp2-O.js} +0 -0
  46. /package/lib/cjs/{eu-pizKbeo6.js → eu-DyEtVwHo.js} +0 -0
  47. /package/lib/cjs/{fi-bkmcjeIB.js → fi-DzRES2Ke.js} +0 -0
  48. /package/lib/cjs/{fr-DTRdyReV.js → fr-DJMVMLCz.js} +0 -0
  49. /package/lib/cjs/{fur-CzaEPYy4.js → fur-CzhK3vxZ.js} +0 -0
  50. /package/lib/cjs/{ga-DfpmmLL7.js → ga-HXzOFdlG.js} +0 -0
  51. /package/lib/cjs/{gl-BvPLj87g.js → gl-C5TM79ih.js} +0 -0
  52. /package/lib/cjs/{grc-CWjbj1rE.js → grc-CPQF-xFI.js} +0 -0
  53. /package/lib/cjs/{gu-B9b71pv0.js → gu-AqCkEYxo.js} +0 -0
  54. /package/lib/cjs/{hi-B0PM9Naw.js → hi-DugLLbv4.js} +0 -0
  55. /package/lib/cjs/{hr-hhdjugdi.js → hr-LSMYFsyP.js} +0 -0
  56. /package/lib/cjs/{hsb-CUC0Vhy0.js → hsb-BlnRYHkg.js} +0 -0
  57. /package/lib/cjs/{hu-DNqLSdxp.js → hu-Dwvtkpy7.js} +0 -0
  58. /package/lib/cjs/{hy-Cr37-HYR.js → hy-BsG06_IV.js} +0 -0
  59. /package/lib/cjs/{ia-_xcaTvlU.js → ia-BMOUZLGD.js} +0 -0
  60. /package/lib/cjs/{id-DTTt6JOe.js → id-DhSs0vqq.js} +0 -0
  61. /package/lib/cjs/{is-BlJOUdIf.js → is-iJhrS7Aw.js} +0 -0
  62. /package/lib/cjs/{it-1kO7pboy.js → it-Aam-BmsV.js} +0 -0
  63. /package/lib/cjs/{ka-06TLrBSU.js → ka-CfLSYpVb.js} +0 -0
  64. /package/lib/cjs/{kmr-CqLLMgB-.js → kmr-DYCscIsi.js} +0 -0
  65. /package/lib/cjs/{kn-DsgCykwv.js → kn-OCEDIM_O.js} +0 -0
  66. /package/lib/cjs/{la-BtfI1L1Y.js → la-DFS3RPxE.js} +0 -0
  67. /package/lib/cjs/{la-x-classic-Csxxqk4A.js → la-x-classic-BocVpbl6.js} +0 -0
  68. /package/lib/cjs/{la-x-liturgic-DP4lkHMh.js → la-x-liturgic-CpZYm3b6.js} +0 -0
  69. /package/lib/cjs/{lt-BLnhu8cj.js → lt-NC6HHzxn.js} +0 -0
  70. /package/lib/cjs/{lv-BWU1ykNC.js → lv-BMFTm6cB.js} +0 -0
  71. /package/lib/cjs/{ml-DCPEVUGQ.js → ml-DDWi25Fi.js} +0 -0
  72. /package/lib/cjs/{mn-cyrl-R4Uzk2PR.js → mn-cyrl-TCUeX7is.js} +0 -0
  73. /package/lib/cjs/{mn-cyrl-x-lmc-DcrbbdVO.js → mn-cyrl-x-lmc-BCmp3Ybn.js} +0 -0
  74. /package/lib/cjs/{mr-a95kT02n.js → mr-1gjg-u15.js} +0 -0
  75. /package/lib/cjs/{mul-ethi-Ha-646Ih.js → mul-ethi-B9a4BMM6.js} +0 -0
  76. /package/lib/cjs/{nb-DVDq5SId.js → nb-DS_J6lre.js} +0 -0
  77. /package/lib/cjs/{nl-xvtaATgd.js → nl-CBtSVLcv.js} +0 -0
  78. /package/lib/cjs/{nn-Dd3GYfsu.js → nn-DYJOn4Sh.js} +0 -0
  79. /package/lib/cjs/{no-Ccuz1dXv.js → no-C20NyT1P.js} +0 -0
  80. /package/lib/cjs/{oc-DMNrvVUu.js → oc-CrKqER_F.js} +0 -0
  81. /package/lib/cjs/{or-BBnbptii.js → or-ZqEtsnaq.js} +0 -0
  82. /package/lib/cjs/{pa-Bpqjl4TY.js → pa-BD3r0Teo.js} +0 -0
  83. /package/lib/cjs/{pi-Dw9S8R8a.js → pi-CQUwMUvz.js} +0 -0
  84. /package/lib/cjs/{pl-BxIw_3q_.js → pl-CawofTLo.js} +0 -0
  85. /package/lib/cjs/{pms-ts8oJNTo.js → pms-DMqDXwo-.js} +0 -0
  86. /package/lib/cjs/{pt-INYdw9le.js → pt-BIiUaINZ.js} +0 -0
  87. /package/lib/cjs/{rm-SrIsmyuH.js → rm-B_-8T7Y1.js} +0 -0
  88. /package/lib/cjs/{ro--lDLf93Z.js → ro-B2Xhfkgx.js} +0 -0
  89. /package/lib/cjs/{ru-CnviOn4F.js → ru-lj-rTTpe.js} +0 -0
  90. /package/lib/cjs/{sa--YzUfT9m.js → sa-D3h-cY2Z.js} +0 -0
  91. /package/lib/cjs/{sh-cyrl-C-Y7f9iS.js → sh-cyrl-0o7p_z-7.js} +0 -0
  92. /package/lib/cjs/{sh-latn-DE0Oa7St.js → sh-latn-BTi9p-0q.js} +0 -0
  93. /package/lib/cjs/{sk-CL5uDe3A.js → sk-D6mOX2KK.js} +0 -0
  94. /package/lib/cjs/{sl-D8ckCfPR.js → sl-Bzz3gkvn.js} +0 -0
  95. /package/lib/cjs/{sr-cyrl-CZdv8WGY.js → sr-cyrl-V07WO3rb.js} +0 -0
  96. /package/lib/cjs/{sv-DYQd48Sm.js → sv-CyQXUuzx.js} +0 -0
  97. /package/lib/cjs/{ta-DOa0x7zq.js → ta-Brwz0zYf.js} +0 -0
  98. /package/lib/cjs/{te-BtexCVtn.js → te-CgvirCa4.js} +0 -0
  99. /package/lib/cjs/{th-BJUX68-0.js → th-PlSNhaza.js} +0 -0
  100. /package/lib/cjs/{tk-CEs8UQxA.js → tk-O54r2ybT.js} +0 -0
  101. /package/lib/cjs/{tr-BMiKDMrF.js → tr-Dh1h3Dno.js} +0 -0
  102. /package/lib/cjs/{uk-B8pzUYbn.js → uk-E2mCrVCU.js} +0 -0
  103. /package/lib/cjs/{zh-latn-pinyin-s8_52NaR.js → zh-latn-pinyin-C2RfFfDl.js} +0 -0
  104. /package/lib/es/{af-I8XQee0A.js → af-DK_CjRn6.js} +0 -0
  105. /package/lib/es/{as-DPw4kbfa.js → as-BPtSu6VN.js} +0 -0
  106. /package/lib/es/{be-hSu5_2AE.js → be-CrQ0smca.js} +0 -0
  107. /package/lib/es/{bg-eIV91Ges.js → bg-CrQqGwni.js} +0 -0
  108. /package/lib/es/{bn-CF0YbkEW.js → bn-NCLZcWHi.js} +0 -0
  109. /package/lib/es/{ca-D0fayQwW.js → ca-SUf6Y2Om.js} +0 -0
  110. /package/lib/es/{cop-gnNw8zDV.js → cop-C3sk0IUo.js} +0 -0
  111. /package/lib/es/{cs-cUOdqXi9.js → cs-CmAteokq.js} +0 -0
  112. /package/lib/es/{cu-CJJk_6p3.js → cu-CBUlrW6Y.js} +0 -0
  113. /package/lib/es/{cy-he1_O-US.js → cy-BBPa6z2x.js} +0 -0
  114. /package/lib/es/{da-C_Tc6C75.js → da-CCDXfXtG.js} +0 -0
  115. /package/lib/es/{de-1901-D9yvXEO8.js → de-1901-CWoAOigE.js} +0 -0
  116. /package/lib/es/{de-1996-DIBM3qkD.js → de-1996-BL6awyxG.js} +0 -0
  117. /package/lib/es/{de-ch-1901-BEDgpl3-.js → de-ch-1901-hVThVHVb.js} +0 -0
  118. /package/lib/es/{el-monoton-BvjPOyvW.js → el-monoton-D3aKqTz2.js} +0 -0
  119. /package/lib/es/{el-polyton-DfJ9Eeih.js → el-polyton-ogVWcTzh.js} +0 -0
  120. /package/lib/es/{en-gb-DYXoK50H.js → en-gb-B7Al27b_.js} +0 -0
  121. /package/lib/es/{es-48latgZ8.js → es-DcaaHPU_.js} +0 -0
  122. /package/lib/es/{et-UzX1rSXY.js → et-B_spaleu.js} +0 -0
  123. /package/lib/es/{eu-ijD7H63T.js → eu-Ctv_kq9Z.js} +0 -0
  124. /package/lib/es/{fi-DDuxAHu5.js → fi-RW5VB8Yp.js} +0 -0
  125. /package/lib/es/{fr-6wTrAsbK.js → fr-BC2onEz9.js} +0 -0
  126. /package/lib/es/{fur-CcIOY8A9.js → fur-AC12wySk.js} +0 -0
  127. /package/lib/es/{ga-B4Qvh5qS.js → ga-Cn6LkudM.js} +0 -0
  128. /package/lib/es/{gl-D8H7uN6B.js → gl-DZGc-K_G.js} +0 -0
  129. /package/lib/es/{grc-DFNi6G6p.js → grc-DOlGgO8T.js} +0 -0
  130. /package/lib/es/{gu-0EahmEdu.js → gu-Bjl0l-cf.js} +0 -0
  131. /package/lib/es/{hi-C2ih9xmB.js → hi-DsAaTPCC.js} +0 -0
  132. /package/lib/es/{hr-CSbbBNUu.js → hr-DT1SBBes.js} +0 -0
  133. /package/lib/es/{hsb-hKsDwaW_.js → hsb-DC_ITc1e.js} +0 -0
  134. /package/lib/es/{hu-BPixuxjf.js → hu-DVk7Y_ka.js} +0 -0
  135. /package/lib/es/{hy-CTtThTdl.js → hy-e995ysyO.js} +0 -0
  136. /package/lib/es/{ia-CYCjbabb.js → ia-Cr4TJH0c.js} +0 -0
  137. /package/lib/es/{id-Cgsp-bEu.js → id-DifDyWg9.js} +0 -0
  138. /package/lib/es/{is-D_Awtowh.js → is-BT8UVRze.js} +0 -0
  139. /package/lib/es/{it-C2qJSkm3.js → it-Bt_Meacx.js} +0 -0
  140. /package/lib/es/{ka-DpGw5nvd.js → ka-jyoLzyDE.js} +0 -0
  141. /package/lib/es/{kmr-CCdNyB20.js → kmr-Cfwhwuff.js} +0 -0
  142. /package/lib/es/{kn-B4tAUtFU.js → kn-C6Lov-DP.js} +0 -0
  143. /package/lib/es/{la-DIUYl8Yo.js → la-DuvHjUWw.js} +0 -0
  144. /package/lib/es/{la-x-classic-DsbLrq-C.js → la-x-classic-yTyAOQEt.js} +0 -0
  145. /package/lib/es/{la-x-liturgic-Ggenbcb5.js → la-x-liturgic-CXeQb4FY.js} +0 -0
  146. /package/lib/es/{lt-BcizI7gZ.js → lt-BBe8DlDF.js} +0 -0
  147. /package/lib/es/{lv-BOgrbf6v.js → lv-Q2BBHnzp.js} +0 -0
  148. /package/lib/es/{ml-CTD7giel.js → ml-2xLVYkVY.js} +0 -0
  149. /package/lib/es/{mn-cyrl-CDxGttkw.js → mn-cyrl-lHM4n0oC.js} +0 -0
  150. /package/lib/es/{mn-cyrl-x-lmc-kjrnm3ii.js → mn-cyrl-x-lmc-3aetruI8.js} +0 -0
  151. /package/lib/es/{mr-DttMNydl.js → mr-CjWJPVmH.js} +0 -0
  152. /package/lib/es/{mul-ethi-mmW8ZEm0.js → mul-ethi-D_CMSMEq.js} +0 -0
  153. /package/lib/es/{nb-DCiD6jLz.js → nb-DI8u59ch.js} +0 -0
  154. /package/lib/es/{nl-BKWsn_4x.js → nl-BHQJ6Gvn.js} +0 -0
  155. /package/lib/es/{nn-b0W3mz5j.js → nn-ntZvarUK.js} +0 -0
  156. /package/lib/es/{no-B3l46gib.js → no-B8ItS0F3.js} +0 -0
  157. /package/lib/es/{oc-zkqkXjNo.js → oc-P_i3-xLA.js} +0 -0
  158. /package/lib/es/{or-DEnI_Cls.js → or-50rxpoq4.js} +0 -0
  159. /package/lib/es/{pa-Sh-QSMIs.js → pa-C54UG8eN.js} +0 -0
  160. /package/lib/es/{pi-DxMx4Uwd.js → pi-B9cgjyG1.js} +0 -0
  161. /package/lib/es/{pl-CISKU0vg.js → pl-9fg-ESVt.js} +0 -0
  162. /package/lib/es/{pms-DUga94hR.js → pms-BRGfm5gS.js} +0 -0
  163. /package/lib/es/{pt-CzW61i2q.js → pt-Cum2_NUC.js} +0 -0
  164. /package/lib/es/{rm-C1U6i4AB.js → rm-C0MIK9N4.js} +0 -0
  165. /package/lib/es/{ro-DSU53KfM.js → ro-0fmdH0HA.js} +0 -0
  166. /package/lib/es/{ru-gduZDLhv.js → ru-v4l-ayaq.js} +0 -0
  167. /package/lib/es/{sa-Bney0xbB.js → sa-CKY9c_Vq.js} +0 -0
  168. /package/lib/es/{sh-cyrl-CCByyO89.js → sh-cyrl-BpCRFOmq.js} +0 -0
  169. /package/lib/es/{sh-latn-CTIiTfzt.js → sh-latn-sRy4Tuaj.js} +0 -0
  170. /package/lib/es/{sk-DK-iy-nO.js → sk-_iOeDNrQ.js} +0 -0
  171. /package/lib/es/{sl-BvzIjkCq.js → sl-DpiklF-D.js} +0 -0
  172. /package/lib/es/{sr-cyrl-7T4T5Th1.js → sr-cyrl-Dpzrbd0W.js} +0 -0
  173. /package/lib/es/{sv-BynygC4t.js → sv-CFm5y56M.js} +0 -0
  174. /package/lib/es/{ta-CglfOvwm.js → ta-BcghgTbD.js} +0 -0
  175. /package/lib/es/{te-Bec4xJud.js → te-B5Spl2Jk.js} +0 -0
  176. /package/lib/es/{th-B67OcLue.js → th-DWX5iPSo.js} +0 -0
  177. /package/lib/es/{tk-CYfVPVLR.js → tk-BMbKB10q.js} +0 -0
  178. /package/lib/es/{tr-BxhGLs2f.js → tr-CIHIuzqc.js} +0 -0
  179. /package/lib/es/{uk-CnWqKnI0.js → uk-Dir3oxLs.js} +0 -0
  180. /package/lib/es/{zh-latn-pinyin-CKxTJrac.js → zh-latn-pinyin-BdYb-Ey_.js} +0 -0
package/lib/es/index.js CHANGED
@@ -1,5 +1,4 @@
1
- import { t as EnUs } from "./en-us-ClVoWMyT.js";
2
- import { AlignTypeH, AlignTypeV, BaselineOffset, BooleanNumber, BorderStyleTypes, BulletAlignment, COLORS, CellValueType, ColorKit, ColumnSeparatorType, CustomDecorationType, CustomRangeType, DEFAULT_EMPTY_DOCUMENT_VALUE, DEFAULT_STYLES, DataStreamTreeNodeType, DataStreamTreeTokenType, Disposable, DisposableCollection, DocumentDataModel, DocumentFlavor, EventSubject, FontStyleType, GridType, HorizontalAlign, IConfigService, IContextService, IUniverInstanceService, Inject, Injector, ListGlyphType, LocaleService, MOVE_BUFFER_VALUE, NAMED_STYLE_MAP, NAMED_STYLE_SPACE_MAP, NumberUnitType, ObjectMatrix, ObjectRelativeFromH, ObjectRelativeFromV, PRESET_LIST_TYPE, PageOrientType, Plugin, PositionedObjectLayoutType, Range, Rectangle, Registry, SectionType, SheetSkeleton, Skeleton, SpacingRule, TableAlignmentType, TableRowHeightRule, TableTextWrapType, TextDecoration, ThemeService, Tools, UniverInstanceType, VerticalAlign, VerticalAlignmentType, WrapStrategy, WrapTextType, addLinkToDocumentModel, checkParagraphHasIndentByStyle, createIdentifier, deleteContent, extractPureTextFromCell, getCellInfoInMergeData, getColorStyle, getDisplayValueFromCell, horizontalLineSegmentsSubtraction, insertTextToContent, invertColorByMatrix, isClassDependencyItem, isNullCell, isWhiteColor, merge, mergeWith, noop, numberToABC, numberToListABC, registerDependencies, remove, requestImmediateMacroTask, searchArray, sortRules, sortRulesByDesc, toDisposable } from "@univerjs/core";
1
+ import { AlignTypeH, AlignTypeV, BaselineOffset, BooleanNumber, BorderStyleTypes, BulletAlignment, COLORS, CellValueType, ColorKit, ColumnSeparatorType, CustomDecorationType, CustomRangeType, DEFAULT_DOCUMENT_PARAGRAPH_LINE_SPACING, DEFAULT_DOCUMENT_PARAGRAPH_SPACE_ABOVE, DEFAULT_DOCUMENT_PARAGRAPH_SPACE_BELOW, DEFAULT_EMPTY_DOCUMENT_VALUE, DEFAULT_STYLES, DashStyleType, DataStreamTreeNodeType, DataStreamTreeTokenType, Disposable, DisposableCollection, DocumentBlockRangeType, DocumentDataModel, DocumentFlavor, EventSubject, FontStyleType, GridType, HorizontalAlign, IConfigService, IContextService, IUniverInstanceService, Inject, Injector, ListGlyphType, LocaleService, MODERN_DOCUMENT_DEFAULT_MARGIN, MODERN_DOCUMENT_WIDTH, MOVE_BUFFER_VALUE, ModernDocumentWidthMode, NAMED_STYLE_MAP, NAMED_STYLE_SPACE_MAP, NumberUnitType, ObjectMatrix, ObjectRelativeFromH, ObjectRelativeFromV, PRESET_LIST_TYPE, PageOrientType, Plugin, PositionedObjectLayoutType, Range, Rectangle, Registry, SectionType, SheetSkeleton, Skeleton, SpacingRule, TableAlignmentType, TableRowHeightRule, TableTextWrapType, TextDecoration, ThemeService, Tools, UniverInstanceType, VerticalAlign, VerticalAlignmentType, WrapStrategy, WrapTextType, addLinkToDocumentModel, checkParagraphHasIndentByStyle, createIdentifier, deleteContent, extractPureTextFromCell, getCellInfoInMergeData, getColorStyle, getDisplayValueFromCell, horizontalLineSegmentsSubtraction, insertTextToContent, invertColorByMatrix, isClassDependencyItem, isNullCell, isWhiteColor, merge, mergeWith, noop, numberToABC, numberToListABC, registerDependencies, remove, requestImmediateMacroTask, searchArray, sortRules, sortRulesByDesc, toDisposable } from "@univerjs/core";
3
2
  import * as cjk from "cjk-regex";
4
3
  import { BehaviorSubject, Observable, Subject, Subscription, debounceTime, distinctUntilChanged, shareReplay, startWith } from "rxjs";
5
4
  import { parse } from "opentype.js";
@@ -8,6 +7,23 @@ import { getOverflowAncestors } from "@floating-ui/dom";
8
7
  import { floor, max, min } from "@floating-ui/utils";
9
8
  import { getDocumentElement } from "@floating-ui/utils/dom";
10
9
 
10
+ //#region \0rolldown/runtime.js
11
+ var __defProp = Object.defineProperty;
12
+ var __exportAll = (all, no_symbols) => {
13
+ let target = {};
14
+ for (var name in all) {
15
+ __defProp(target, name, {
16
+ get: all[name],
17
+ enumerable: true
18
+ });
19
+ }
20
+ if (!no_symbols) {
21
+ __defProp(target, Symbol.toStringTag, { value: "Module" });
22
+ }
23
+ return target;
24
+ };
25
+
26
+ //#endregion
11
27
  //#region src/basics/const.ts
12
28
  /**
13
29
  * Copyright 2023-present DreamNum Co., Ltd.
@@ -280,14 +296,7 @@ function getFontStyleString(textStyle) {
280
296
  let originFontSize = defaultFontSize;
281
297
  if (textStyle.fs) originFontSize = Math.ceil(textStyle.fs);
282
298
  let fontSize = originFontSize;
283
- let fontFamilyResult = defaultFont;
284
- if (textStyle.ff) {
285
- let fontFamily = textStyle.ff;
286
- fontFamily = fontFamily.replace(/"/g, "").replace(/'/g, "");
287
- if (fontFamily.indexOf(" ") > -1) fontFamily = `"${fontFamily}"`;
288
- if (fontFamily == null) fontFamily = defaultFont;
289
- fontFamilyResult = fontFamily;
290
- }
299
+ const fontFamilyResult = normalizeFontFamily(textStyle.ff, defaultFont);
291
300
  const { va: baselineOffset } = textStyle;
292
301
  if (baselineOffset === BaselineOffset.SUBSCRIPT || baselineOffset === BaselineOffset.SUPERSCRIPT) {
293
302
  const { sbr, spr } = FontCache.getBaselineOffsetInfo(fontFamilyResult, fontSize);
@@ -302,6 +311,13 @@ function getFontStyleString(textStyle) {
302
311
  fontFamily: fontFamilyResult
303
312
  };
304
313
  }
314
+ function normalizeFontFamily(fontFamily, defaultFont) {
315
+ if (!(fontFamily === null || fontFamily === void 0 ? void 0 : fontFamily.trim())) return defaultFont;
316
+ return fontFamily.split(",").map((item) => {
317
+ const family = item.trim().replace(/^['"]|['"]$/g, "");
318
+ return family.includes(" ") ? `"${family}"` : family;
319
+ }).filter(Boolean).join(", ");
320
+ }
305
321
  const CJK_LETTER_REG = cjk.letters().toRegExp();
306
322
  function hasCJKText(text) {
307
323
  return CJK_LETTER_REG.test(text);
@@ -355,6 +371,9 @@ function hasArabic(text) {
355
371
  function hasTibetan(text) {
356
372
  return /[\u0180-\u024F]/gi.test(text);
357
373
  }
374
+ function hasThai(text) {
375
+ return /[\u0E00-\u0E7F]/.test(text);
376
+ }
358
377
  function hasSpace(text) {
359
378
  return /\s+/g.test(text);
360
379
  }
@@ -621,7 +640,7 @@ function getSystemHighlightColor() {
621
640
  }
622
641
 
623
642
  //#endregion
624
- //#region \0@oxc-project+runtime@0.129.0/helpers/typeof.js
643
+ //#region \0@oxc-project+runtime@0.134.0/helpers/esm/typeof.js
625
644
  function _typeof(o) {
626
645
  "@babel/helpers - typeof";
627
646
  return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(o) {
@@ -632,7 +651,7 @@ function _typeof(o) {
632
651
  }
633
652
 
634
653
  //#endregion
635
- //#region \0@oxc-project+runtime@0.129.0/helpers/toPrimitive.js
654
+ //#region \0@oxc-project+runtime@0.134.0/helpers/esm/toPrimitive.js
636
655
  function toPrimitive(t, r) {
637
656
  if ("object" != _typeof(t) || !t) return t;
638
657
  var e = t[Symbol.toPrimitive];
@@ -645,14 +664,14 @@ function toPrimitive(t, r) {
645
664
  }
646
665
 
647
666
  //#endregion
648
- //#region \0@oxc-project+runtime@0.129.0/helpers/toPropertyKey.js
667
+ //#region \0@oxc-project+runtime@0.134.0/helpers/esm/toPropertyKey.js
649
668
  function toPropertyKey(t) {
650
669
  var i = toPrimitive(t, "string");
651
670
  return "symbol" == _typeof(i) ? i : i + "";
652
671
  }
653
672
 
654
673
  //#endregion
655
- //#region \0@oxc-project+runtime@0.129.0/helpers/defineProperty.js
674
+ //#region \0@oxc-project+runtime@0.134.0/helpers/esm/defineProperty.js
656
675
  function _defineProperty(e, r, t) {
657
676
  return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
658
677
  value: t,
@@ -1668,7 +1687,9 @@ var Vector2 = class Vector2 {
1668
1687
  function getDevicePixelRatio() {
1669
1688
  let _pixelRatio = 1;
1670
1689
  const context = createCanvasElement().getContext("2d");
1671
- _pixelRatio = (window.devicePixelRatio || 1) / (context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRatio || 1);
1690
+ _pixelRatio = (() => {
1691
+ return (window.devicePixelRatio || 1) / (context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRatio || 1);
1692
+ })();
1672
1693
  if (_pixelRatio < 1) return 1;
1673
1694
  return _pixelRatio;
1674
1695
  }
@@ -2923,6 +2944,37 @@ var Transform = class Transform {
2923
2944
  }
2924
2945
  };
2925
2946
 
2947
+ //#endregion
2948
+ //#region src/basics/zoom.ts
2949
+ const MIN_ZOOM_RATIO = .1;
2950
+ const MAX_ZOOM_RATIO = 4;
2951
+ const PIXEL_DELTA_TO_ZOOM_RATIO = .008;
2952
+ const MAX_WHEEL_ZOOM_STEP = .14;
2953
+ const MAX_WHEEL_ZOOM_STEP_BELOW_ONE = .07;
2954
+ const LINE_DELTA_PIXEL_SIZE = 16;
2955
+ const PAGE_DELTA_PIXEL_SIZE = 800;
2956
+ const ZOOM_RATIO_PRECISION = 100;
2957
+ function clamp(value, min, max) {
2958
+ return Math.min(max, Math.max(min, value));
2959
+ }
2960
+ function normalizeWheelDelta(event) {
2961
+ const deltaY = Number.isFinite(event.deltaY) ? event.deltaY : 0;
2962
+ const deltaX = Number.isFinite(event.deltaX) ? event.deltaX : 0;
2963
+ let delta = Math.abs(deltaY) >= Math.abs(deltaX) ? deltaY : deltaX;
2964
+ if (delta === 0 && typeof event.wheelDelta === "number") delta = -event.wheelDelta / 3;
2965
+ if (event.deltaMode === EventConstants.DOM_DELTA_LINE) delta *= LINE_DELTA_PIXEL_SIZE;
2966
+ else if (event.deltaMode === EventConstants.DOM_DELTA_PAGE) delta *= PAGE_DELTA_PIXEL_SIZE;
2967
+ return delta;
2968
+ }
2969
+ function getNextWheelZoomRatio(currentRatio, event) {
2970
+ const validCurrentRatio = Number.isFinite(currentRatio) ? currentRatio : 1;
2971
+ const normalizedDelta = normalizeWheelDelta(event);
2972
+ if (normalizedDelta === 0) return clamp(validCurrentRatio, MIN_ZOOM_RATIO, MAX_ZOOM_RATIO);
2973
+ const maxStep = validCurrentRatio < 1 ? MAX_WHEEL_ZOOM_STEP_BELOW_ONE : MAX_WHEEL_ZOOM_STEP;
2974
+ const ratioDelta = clamp(-normalizedDelta * PIXEL_DELTA_TO_ZOOM_RATIO, -maxStep, maxStep);
2975
+ return clamp(Math.round((validCurrentRatio + ratioDelta) * ZOOM_RATIO_PRECISION) / ZOOM_RATIO_PRECISION, MIN_ZOOM_RATIO, MAX_ZOOM_RATIO);
2976
+ }
2977
+
2926
2978
  //#endregion
2927
2979
  //#region src/base-object.ts
2928
2980
  const BASE_OBJECT_ARRAY = [
@@ -11054,12 +11106,12 @@ length_base[28] = 258;
11054
11106
  const SHIFT_1 = 11;
11055
11107
  const SHIFT_2 = 5;
11056
11108
  const SHIFT_1_2 = SHIFT_1 - SHIFT_2;
11057
- const OMITTED_BMP_INDEX_1_LENGTH = 65536 >> SHIFT_1;
11109
+ const OMITTED_BMP_INDEX_1_LENGTH = 32;
11058
11110
  const INDEX_2_MASK = (1 << SHIFT_1_2) - 1;
11059
11111
  const INDEX_SHIFT = 2;
11060
11112
  const DATA_MASK = (1 << SHIFT_2) - 1;
11061
- const LSCP_INDEX_2_OFFSET = 65536 >> SHIFT_2;
11062
- const INDEX_1_OFFSET = LSCP_INDEX_2_OFFSET + (1024 >> SHIFT_2) + 32;
11113
+ const LSCP_INDEX_2_OFFSET = 2048;
11114
+ const INDEX_1_OFFSET = 2112;
11063
11115
  const DATA_GRANULARITY = 1 << INDEX_SHIFT;
11064
11116
  var UnicodeTrie = class {
11065
11117
  constructor(data) {
@@ -12024,6 +12076,17 @@ var Liquid = class {
12024
12076
  }
12025
12077
  };
12026
12078
 
12079
+ //#endregion
12080
+ //#region src/components/docs/table-render-viewport.ts
12081
+ let docsTableRenderViewportProvider = null;
12082
+ function setDocsTableRenderViewportProvider(provider) {
12083
+ docsTableRenderViewportProvider = provider;
12084
+ }
12085
+ function getDocsTableRenderViewport(unitId, tableId) {
12086
+ var _docsTableRenderViewp;
12087
+ return (_docsTableRenderViewp = docsTableRenderViewportProvider === null || docsTableRenderViewportProvider === void 0 ? void 0 : docsTableRenderViewportProvider(unitId, tableId)) !== null && _docsTableRenderViewp !== void 0 ? _docsTableRenderViewp : null;
12088
+ }
12089
+
12027
12090
  //#endregion
12028
12091
  //#region src/components/docs/view-model/data-stream-tree-node.ts
12029
12092
  var DataStreamTreeNode = class DataStreamTreeNode {
@@ -12192,6 +12255,17 @@ function parseDataStreamToTree(dataStream, tables) {
12192
12255
  const tableRowList = [];
12193
12256
  const tableCellList = [];
12194
12257
  const currentBlocks = [];
12258
+ const getParagraphList = () => tableCellList.length > 0 ? cellParagraphList : paragraphList;
12259
+ const appendToPreviousParagraph = (char) => {
12260
+ const tempParagraphList = getParagraphList();
12261
+ const lastParagraph = tempParagraphList[tempParagraphList.length - 1];
12262
+ if (lastParagraph) {
12263
+ var _lastParagraph$conten;
12264
+ lastParagraph.content = `${(_lastParagraph$conten = lastParagraph.content) !== null && _lastParagraph$conten !== void 0 ? _lastParagraph$conten : ""}${char}`;
12265
+ return true;
12266
+ }
12267
+ return false;
12268
+ };
12195
12269
  for (let i = 0; i < dataStreamLen; i++) {
12196
12270
  const char = dataStream[i];
12197
12271
  if (char === DataStreamTreeTokenType.PARAGRAPH) {
@@ -12252,6 +12326,9 @@ function parseDataStreamToTree(dataStream, tables) {
12252
12326
  const cellNode = tableCellList.pop();
12253
12327
  const lastRow = tableRowList[tableRowList.length - 1];
12254
12328
  batchParent(lastRow, [cellNode], DataStreamTreeNodeType.TABLE_ROW);
12329
+ } else if (char === DataStreamTreeTokenType.BLOCK_START) content += char;
12330
+ else if (char === DataStreamTreeTokenType.BLOCK_END) {
12331
+ if (content.length > 0 || !appendToPreviousParagraph(char)) content += char;
12255
12332
  } else if (char === DataStreamTreeTokenType.CUSTOM_BLOCK) {
12256
12333
  currentBlocks.push(i);
12257
12334
  content += char;
@@ -12568,6 +12645,8 @@ function _createSkeletonWordOrLetter(glyphType, content, config, glyphWidth, gly
12568
12645
  DataStreamTreeTokenType.TABLE_ROW_END,
12569
12646
  DataStreamTreeTokenType.TABLE_CELL_START,
12570
12647
  DataStreamTreeTokenType.TABLE_CELL_END,
12648
+ DataStreamTreeTokenType.BLOCK_START,
12649
+ DataStreamTreeTokenType.BLOCK_END,
12571
12650
  DataStreamTreeTokenType.CUSTOM_RANGE_START,
12572
12651
  DataStreamTreeTokenType.CUSTOM_RANGE_END,
12573
12652
  DataStreamTreeTokenType.COLUMN_BREAK,
@@ -13077,7 +13156,16 @@ function createTableSkeleton(ctx, curPage, viewModel, tableNode, sectionBreakCon
13077
13156
  let left = 0;
13078
13157
  let rowHeight = 0;
13079
13158
  for (const cellNode of cellNodes) {
13080
- const cellPageSkeleton = createSkeletonCellPages(ctx, viewModel, cellNode, sectionBreakConfig, table, row, cellNodes.indexOf(cellNode))[0];
13159
+ const col = cellNodes.indexOf(cellNode);
13160
+ const cellConfig = rowSource.tableCells[col];
13161
+ if (isCoveredTableCell(cellConfig)) {
13162
+ const cellPageSkeleton = createMergedCoveredCellPage(ctx, sectionBreakConfig, table, row, col, rowSkeleton);
13163
+ cellPageSkeleton.left = left;
13164
+ if (shouldAdvanceTableCellLeft(table, row, col)) left += cellPageSkeleton.pageWidth;
13165
+ rowSkeleton.cells.push(cellPageSkeleton);
13166
+ continue;
13167
+ }
13168
+ const cellPageSkeleton = createSkeletonCellPages(ctx, viewModel, cellNode, sectionBreakConfig, table, row, col)[0];
13081
13169
  const { marginTop = 0, marginBottom = 0 } = cellPageSkeleton;
13082
13170
  const pageHeight = cellPageSkeleton.height + marginTop + marginBottom;
13083
13171
  cellPageSkeleton.left = left;
@@ -13087,7 +13175,7 @@ function createTableSkeleton(ctx, curPage, viewModel, tableNode, sectionBreakCon
13087
13175
  rowHeight = Math.max(rowHeight, pageHeight);
13088
13176
  }
13089
13177
  if (hRule === TableRowHeightRule.AT_LEAST) rowHeight = Math.max(rowHeight, val.v);
13090
- else if (hRule === TableRowHeightRule.EXACT) rowHeight = val.v;
13178
+ else if (hRule === TableRowHeightRule.EXACT) rowHeight = Math.max(rowHeight, val.v);
13091
13179
  for (const cellPageSkeleton of rowSkeleton.cells) cellPageSkeleton.pageHeight = rowHeight;
13092
13180
  const rowConfig = table.tableRows[row];
13093
13181
  for (let i = 0; i < rowConfig.tableCells.length; i++) {
@@ -13118,6 +13206,7 @@ function createTableSkeleton(ctx, curPage, viewModel, tableNode, sectionBreakCon
13118
13206
  }
13119
13207
  tableSkeleton.width = tableWidth;
13120
13208
  tableSkeleton.height = rowTop;
13209
+ applyMergedCellSpanHeights(tableSkeleton);
13121
13210
  const { pageWidth, marginLeft = 0, marginRight = 0 } = curPage;
13122
13211
  tableSkeleton.left = _getTableLeft(pageWidth - marginLeft - marginRight, tableWidth, table.align, table.indent);
13123
13212
  return tableSkeleton;
@@ -13141,14 +13230,14 @@ function createTableSkeletons(ctx, curPage, viewModel, tableNode, sectionBreakCo
13141
13230
  fromCurrentPage: false
13142
13231
  };
13143
13232
  }
13144
- const needRepeatHeader = table.tableRows[0].repeatHeaderRow === BooleanNumber.TRUE;
13233
+ const repeatRows = getLeadingRepeatHeaderRows(table, rowNodes);
13145
13234
  const curTableSkeleton = getNullTableSkeleton(startIndex, endIndex, table);
13146
13235
  const createCache = {
13147
13236
  rowTop: 0,
13148
13237
  tableWidth: 0,
13149
13238
  remainHeight: availableHeight,
13150
- repeatRow: needRepeatHeader ? rowNodes[0] : null,
13151
- repeatRowHeight: 0
13239
+ repeatRows,
13240
+ repeatRowsHeight: 0
13152
13241
  };
13153
13242
  skeTables.push(curTableSkeleton);
13154
13243
  for (const rowNode of rowNodes) dealWithTableRow(ctx, curPage, skeTables, viewModel, sectionBreakConfig, rowNode, rowNodes.indexOf(rowNode), table, createCache);
@@ -13164,6 +13253,7 @@ function updateTableSkeletonsPosition(cache, curPage, skeTables, table) {
13164
13253
  const tableLeft = _getTableLeft(pageWidth - marginLeft - marginRight, tableWidth, table.align, table.indent);
13165
13254
  let tableIndex = 0;
13166
13255
  for (const tableSkeleton of skeTables) {
13256
+ applyMergedCellSpanHeights(tableSkeleton);
13167
13257
  tableSkeleton.width = tableWidth;
13168
13258
  tableSkeleton.left = tableLeft;
13169
13259
  tableSkeleton.st = tableSkeleton.rows[0].st - 1;
@@ -13180,7 +13270,7 @@ function getCurTableSkeleton(skeTables) {
13180
13270
  function getAvailableHeight(curPage, cache, hasRepeatHeader) {
13181
13271
  const { marginTop, marginBottom, pageHeight } = curPage;
13182
13272
  let pageContentHeight = pageHeight - marginTop - marginBottom;
13183
- if (hasRepeatHeader) pageContentHeight -= cache.repeatRowHeight;
13273
+ if (hasRepeatHeader) pageContentHeight -= cache.repeatRowsHeight;
13184
13274
  return pageContentHeight;
13185
13275
  }
13186
13276
  function dealWithTableRow(ctx, curPage, skeTables, viewModel, sectionBreakConfig, rowNode, row, table, cache, isRepeatRow = false) {
@@ -13198,17 +13288,13 @@ function dealWithTableRow(ctx, curPage, skeTables, viewModel, sectionBreakConfig
13198
13288
  const rowHeights = [0];
13199
13289
  for (const cellNode of cellNodes) {
13200
13290
  const col = cellNodes.indexOf(cellNode);
13201
- const cellPageSkeletons = createSkeletonCellPages(ctx, viewModel, cellNode, sectionBreakConfig, table, row, col, canRowSplit && !needOpenNewTable ? cache.remainHeight : availableHeight, pageContentHeight);
13202
- while (rowSkeletons.length < cellPageSkeletons.length) {
13203
- const rowSkeleton = _getNullTableRowSkeleton(startIndex, endIndex, row, rowSource, isRepeatRow);
13204
- const colCount = cellNodes.length;
13205
- rowSkeleton.cells = [...new Array(colCount)].map((_, i) => {
13206
- const cellSkeleton = createNullCellPage(ctx, sectionBreakConfig, table, row, i).page;
13207
- cellSkeleton.parent = rowSkeleton;
13208
- return cellSkeleton;
13209
- });
13210
- rowSkeletons.push(rowSkeleton);
13291
+ const cellConfig = rowSource.tableCells[col];
13292
+ if (isCoveredTableCell(cellConfig)) {
13293
+ if (rowSkeletons.length === 0) rowSkeletons.push(createNullRowSkeletonWithCells(ctx, sectionBreakConfig, table, row, startIndex, endIndex, rowSource, isRepeatRow));
13294
+ continue;
13211
13295
  }
13296
+ const cellPageSkeletons = createSkeletonCellPages(ctx, viewModel, cellNode, sectionBreakConfig, table, row, col, canRowSplit && !needOpenNewTable ? cache.remainHeight : availableHeight, pageContentHeight);
13297
+ while (rowSkeletons.length < cellPageSkeletons.length) rowSkeletons.push(createNullRowSkeletonWithCells(ctx, sectionBreakConfig, table, row, startIndex, endIndex, rowSource, isRepeatRow));
13212
13298
  while (rowHeights.length < cellPageSkeletons.length) rowHeights.push(0);
13213
13299
  for (const cellPageSkeleton of cellPageSkeletons) {
13214
13300
  const { marginTop: cellMarginTop = 0, marginBottom: cellMarginBottom = 0 } = cellPageSkeleton;
@@ -13223,18 +13309,20 @@ function dealWithTableRow(ctx, curPage, skeTables, viewModel, sectionBreakConfig
13223
13309
  for (const rowSke of rowSkeletons) {
13224
13310
  const rowIndex = rowSkeletons.indexOf(rowSke);
13225
13311
  if (hRule === TableRowHeightRule.AT_LEAST) rowHeights[rowIndex] = Math.max(rowHeights[rowIndex], val.v);
13226
- else if (hRule === TableRowHeightRule.EXACT) rowHeights[rowIndex] = val.v;
13312
+ else if (hRule === TableRowHeightRule.EXACT) rowHeights[rowIndex] = Math.max(rowHeights[rowIndex], val.v);
13227
13313
  rowHeights[rowIndex] = Math.min(rowHeights[rowIndex], pageContentHeight);
13228
13314
  let left = 0;
13229
- for (const cellPageSkeleton of rowSke.cells) {
13315
+ for (let col = 0; col < rowSke.cells.length; col++) {
13316
+ const cellPageSkeleton = rowSke.cells[col];
13317
+ if (cellPageSkeleton == null) continue;
13230
13318
  cellPageSkeleton.left = left;
13231
13319
  cellPageSkeleton.pageHeight = rowHeights[rowIndex];
13232
- left += cellPageSkeleton.pageWidth;
13320
+ if (shouldAdvanceTableCellLeft(table, rowSke.index, col)) left += cellPageSkeleton.pageWidth;
13233
13321
  cache.tableWidth = Math.max(cache.tableWidth, left);
13234
13322
  }
13235
13323
  rowSke.height = rowHeights[rowIndex];
13236
13324
  }
13237
- if (row === 0 && cache.repeatRow) cache.repeatRowHeight = rowHeights[rowHeights.length - 1];
13325
+ if (!isRepeatRow && row < cache.repeatRows.length) cache.repeatRowsHeight += rowHeights.reduce((total, height) => total + height, 0);
13238
13326
  for (const rowSkeleton of rowSkeletons) _verticalAlignInCell(rowSkeleton, rowSource);
13239
13327
  while (rowSkeletons.length > 0) {
13240
13328
  const rowSkeleton = rowSkeletons.shift();
@@ -13245,10 +13333,11 @@ function dealWithTableRow(ctx, curPage, skeTables, viewModel, sectionBreakConfig
13245
13333
  if (curTableSkeleton.rows.length > 0) {
13246
13334
  curTableSkeleton = getNullTableSkeleton(startIndex, endIndex, table);
13247
13335
  skeTables.push(curTableSkeleton);
13248
- if (cache.repeatRow && isRepeatRow === false && row !== 0 && rowSkeleton.index !== lastRow.index) {
13249
- const FIRST_ROW_INDEX = 0;
13336
+ if (cache.repeatRows.length > 0 && isRepeatRow === false && row >= cache.repeatRows.length && rowSkeleton.index !== lastRow.index) {
13250
13337
  cache.remainHeight = getAvailableHeight(curPage, cache, false);
13251
- dealWithTableRow(ctx, curPage, skeTables, viewModel, sectionBreakConfig, cache.repeatRow, FIRST_ROW_INDEX, table, cache, true);
13338
+ cache.repeatRows.forEach((repeatRow, repeatRowIndex) => {
13339
+ dealWithTableRow(ctx, curPage, skeTables, viewModel, sectionBreakConfig, repeatRow, repeatRowIndex, table, cache, true);
13340
+ });
13252
13341
  }
13253
13342
  }
13254
13343
  }
@@ -13261,6 +13350,15 @@ function dealWithTableRow(ctx, curPage, skeTables, viewModel, sectionBreakConfig
13261
13350
  cache.rowTop += rowSkeleton.height;
13262
13351
  }
13263
13352
  }
13353
+ function getLeadingRepeatHeaderRows(table, rowNodes) {
13354
+ const repeatRows = [];
13355
+ for (let index = 0; index < rowNodes.length; index++) {
13356
+ var _table$tableRows$inde;
13357
+ if (((_table$tableRows$inde = table.tableRows[index]) === null || _table$tableRows$inde === void 0 ? void 0 : _table$tableRows$inde.repeatHeaderRow) !== BooleanNumber.TRUE) break;
13358
+ repeatRows.push(rowNodes[index]);
13359
+ }
13360
+ return repeatRows;
13361
+ }
13264
13362
  function _verticalAlignInCell(rowSkeleton, rowSource) {
13265
13363
  for (let i = 0; i < rowSource.tableCells.length; i++) {
13266
13364
  const cellConfig = rowSource.tableCells[i];
@@ -13285,6 +13383,75 @@ function _verticalAlignInCell(rowSkeleton, rowSource) {
13285
13383
  cellPageSkeleton.marginTop = marginTop;
13286
13384
  }
13287
13385
  }
13386
+ function createNullRowSkeletonWithCells(ctx, sectionBreakConfig, table, row, startIndex, endIndex, rowSource, isRepeatRow = false) {
13387
+ const rowSkeleton = _getNullTableRowSkeleton(startIndex, endIndex, row, rowSource, isRepeatRow);
13388
+ const colCount = rowSource.tableCells.length;
13389
+ rowSkeleton.cells = Array.from({ length: colCount }, (_, col) => createMergedAwareNullCellPage(ctx, sectionBreakConfig, table, row, col, rowSkeleton));
13390
+ return rowSkeleton;
13391
+ }
13392
+ function createMergedCoveredCellPage(ctx, sectionBreakConfig, table, row, col, rowSkeleton) {
13393
+ return createMergedAwareNullCellPage(ctx, sectionBreakConfig, table, row, col, rowSkeleton);
13394
+ }
13395
+ function applyMergedCellSpanHeights(tableSkeleton) {
13396
+ var _tableSkeleton$tableS, _tableSkeleton$tableS2;
13397
+ const tableRows = (_tableSkeleton$tableS = (_tableSkeleton$tableS2 = tableSkeleton.tableSource) === null || _tableSkeleton$tableS2 === void 0 ? void 0 : _tableSkeleton$tableS2.tableRows) !== null && _tableSkeleton$tableS !== void 0 ? _tableSkeleton$tableS : [];
13398
+ if (tableRows.length === 0) return;
13399
+ const skeletonRowsByIndex = new Map(tableSkeleton.rows.map((row) => [row.index, row]));
13400
+ tableRows.forEach((rowSource, rowIndex) => {
13401
+ rowSource.tableCells.forEach((cellConfig, columnIndex) => {
13402
+ var _cellConfig$rowSpan, _cellConfig$columnSpa;
13403
+ const rowSpan = (_cellConfig$rowSpan = cellConfig.rowSpan) !== null && _cellConfig$rowSpan !== void 0 ? _cellConfig$rowSpan : 1;
13404
+ const columnSpan = (_cellConfig$columnSpa = cellConfig.columnSpan) !== null && _cellConfig$columnSpa !== void 0 ? _cellConfig$columnSpa : 1;
13405
+ if (rowSpan <= 1 && columnSpan <= 1) return;
13406
+ const masterRow = skeletonRowsByIndex.get(rowIndex);
13407
+ const masterCell = masterRow === null || masterRow === void 0 ? void 0 : masterRow.cells[columnIndex];
13408
+ if (!masterCell || masterCell.isMergedCellCovered) return;
13409
+ let pageHeight = 0;
13410
+ for (let row = rowIndex; row < rowIndex + rowSpan; row++) {
13411
+ var _skeletonRowsByIndex$, _skeletonRowsByIndex$2;
13412
+ pageHeight += (_skeletonRowsByIndex$ = (_skeletonRowsByIndex$2 = skeletonRowsByIndex.get(row)) === null || _skeletonRowsByIndex$2 === void 0 ? void 0 : _skeletonRowsByIndex$2.height) !== null && _skeletonRowsByIndex$ !== void 0 ? _skeletonRowsByIndex$ : 0;
13413
+ }
13414
+ if (pageHeight > 0) masterCell.pageHeight = pageHeight;
13415
+ });
13416
+ });
13417
+ }
13418
+ function createMergedAwareNullCellPage(ctx, sectionBreakConfig, table, row, col, rowSkeleton) {
13419
+ const cellSkeleton = createNullCellPage(ctx, sectionBreakConfig, table, row, col).page;
13420
+ cellSkeleton.parent = rowSkeleton;
13421
+ if (isCoveredTableCell(table.tableRows[row].tableCells[col])) Object.assign(cellSkeleton, { isMergedCellCovered: true });
13422
+ return cellSkeleton;
13423
+ }
13424
+ function shouldAdvanceTableCellLeft(table, row, col) {
13425
+ var _table$tableRows$row;
13426
+ if (!isCoveredTableCell((_table$tableRows$row = table.tableRows[row]) === null || _table$tableRows$row === void 0 ? void 0 : _table$tableRows$row.tableCells[col])) return true;
13427
+ const masterCell = findMergedMasterCell(table, row, col);
13428
+ if (masterCell == null) return true;
13429
+ return masterCell.row !== row;
13430
+ }
13431
+ function findMergedMasterCell(table, row, col) {
13432
+ for (let rowIndex = 0; rowIndex <= row; rowIndex++) {
13433
+ const rowSource = table.tableRows[rowIndex];
13434
+ if (rowSource == null) continue;
13435
+ for (let columnIndex = 0; columnIndex < rowSource.tableCells.length; columnIndex++) {
13436
+ var _cellConfig$rowSpan2, _cellConfig$columnSpa2;
13437
+ const cellConfig = rowSource.tableCells[columnIndex];
13438
+ if (isCoveredTableCell(cellConfig)) continue;
13439
+ const rowSpan = Math.max(1, (_cellConfig$rowSpan2 = cellConfig.rowSpan) !== null && _cellConfig$rowSpan2 !== void 0 ? _cellConfig$rowSpan2 : 1);
13440
+ const columnSpan = Math.max(1, (_cellConfig$columnSpa2 = cellConfig.columnSpan) !== null && _cellConfig$columnSpa2 !== void 0 ? _cellConfig$columnSpa2 : 1);
13441
+ if (rowSpan <= 1 && columnSpan <= 1) continue;
13442
+ const containsRow = row >= rowIndex && row < rowIndex + rowSpan;
13443
+ const containsColumn = col >= columnIndex && col < columnIndex + columnSpan;
13444
+ if (containsRow && containsColumn) return {
13445
+ row: rowIndex,
13446
+ col: columnIndex
13447
+ };
13448
+ }
13449
+ }
13450
+ return null;
13451
+ }
13452
+ function isCoveredTableCell(cellConfig) {
13453
+ return (cellConfig === null || cellConfig === void 0 ? void 0 : cellConfig.rowSpan) === 0 || (cellConfig === null || cellConfig === void 0 ? void 0 : cellConfig.columnSpan) === 0;
13454
+ }
13288
13455
  function _getTableLeft(pageWidth, tableWidth, align, indent = { v: 0 }) {
13289
13456
  switch (align) {
13290
13457
  case TableAlignmentType.START: return indent.v;
@@ -14390,13 +14557,13 @@ const DEFAULT_PAGE_SIZE = {
14390
14557
  const DEFAULT_MODERN_DOCUMENT_STYLE = {
14391
14558
  pageNumberStart: 1,
14392
14559
  pageSize: {
14393
- width: ptToPixel(595),
14560
+ width: MODERN_DOCUMENT_WIDTH[ModernDocumentWidthMode.MEDIUM],
14394
14561
  height: Number.POSITIVE_INFINITY
14395
14562
  },
14396
- marginTop: ptToPixel(50),
14397
- marginBottom: ptToPixel(50),
14398
- marginRight: ptToPixel(50),
14399
- marginLeft: ptToPixel(50),
14563
+ marginTop: MODERN_DOCUMENT_DEFAULT_MARGIN,
14564
+ marginBottom: MODERN_DOCUMENT_DEFAULT_MARGIN,
14565
+ marginRight: MODERN_DOCUMENT_DEFAULT_MARGIN,
14566
+ marginLeft: MODERN_DOCUMENT_DEFAULT_MARGIN,
14400
14567
  renderConfig: {
14401
14568
  vertexAngle: 0,
14402
14569
  centerAngle: 0,
@@ -14426,8 +14593,13 @@ function prepareSectionBreakConfig(ctx, nodeIndex) {
14426
14593
  const { documentFlavor } = documentStyle;
14427
14594
  let sectionBreak = viewModel.getSectionBreak(sectionNode.endIndex) || DEFAULT_SECTION_BREAK;
14428
14595
  if (documentFlavor === DocumentFlavor.MODERN) {
14596
+ var _documentStyle$pageSi, _documentStyle$pageSi2;
14597
+ const modernPageWidth = (_documentStyle$pageSi = (_documentStyle$pageSi2 = documentStyle.pageSize) === null || _documentStyle$pageSi2 === void 0 ? void 0 : _documentStyle$pageSi2.width) !== null && _documentStyle$pageSi !== void 0 ? _documentStyle$pageSi : DEFAULT_MODERN_DOCUMENT_STYLE.pageSize.width;
14429
14598
  sectionBreak = Object.assign({}, sectionBreak, DEFAULT_MODERN_SECTION_BREAK);
14430
- documentStyle = Object.assign({}, documentStyle, DEFAULT_MODERN_DOCUMENT_STYLE);
14599
+ documentStyle = Object.assign({}, documentStyle, DEFAULT_MODERN_DOCUMENT_STYLE, { pageSize: {
14600
+ ...DEFAULT_MODERN_DOCUMENT_STYLE.pageSize,
14601
+ width: modernPageWidth
14602
+ } });
14431
14603
  }
14432
14604
  const { pageNumberStart: global_pageNumberStart = 1, pageSize: global_pageSize = DEFAULT_PAGE_SIZE, pageOrient: global_pageOrient = PageOrientType.PORTRAIT, defaultHeaderId: global_defaultHeaderId, defaultFooterId: global_defaultFooterId, evenPageHeaderId: global_evenPageHeaderId, evenPageFooterId: global_evenPageFooterId, firstPageHeaderId: global_firstPageHeaderId, firstPageFooterId: global_firstPageFooterId, useFirstPageHeaderFooter: global_useFirstPageHeaderFooter, evenAndOddHeaders: global_evenAndOddHeaders, marginTop: global_marginTop = 0, marginBottom: global_marginBottom = 0, marginRight: global_marginRight = 0, marginLeft: global_marginLeft = 0, marginHeader: global_marginHeader = 0, marginFooter: global_marginFooter = 0, autoHyphenation = BooleanNumber.FALSE, doNotHyphenateCaps = BooleanNumber.FALSE, consecutiveHyphenLimit = Number.POSITIVE_INFINITY, hyphenationZone, renderConfig: global_renderConfig = {
14433
14605
  horizontalAlign: HorizontalAlign.LEFT,
@@ -14664,12 +14836,14 @@ function _createSkeletonHeaderFooter(ctx, headerOrFooterViewModel, sectionBreakC
14664
14836
  return page;
14665
14837
  }
14666
14838
  function createNullCellPage(ctx, sectionBreakConfig, tableConfig, row, col, availableHeight = Number.POSITIVE_INFINITY, maxCellPageHeight = Number.POSITIVE_INFINITY) {
14667
- var _ref, _cellConfig$margin;
14839
+ var _ref, _cellConfig$margin, _cellConfig$columnSpa;
14668
14840
  const { lists, footerTreeMap, headerTreeMap, localeService, drawings } = sectionBreakConfig;
14669
14841
  const { skeletonResourceReference } = ctx;
14670
14842
  const { cellMargin, tableRows, tableColumns, tableId } = tableConfig;
14671
- const { start = { v: 10 }, end = { v: 10 }, top = { v: 5 }, bottom = { v: 5 } } = (_ref = (_cellConfig$margin = tableRows[row].tableCells[col].margin) !== null && _cellConfig$margin !== void 0 ? _cellConfig$margin : cellMargin) !== null && _ref !== void 0 ? _ref : {};
14672
- const pageWidth = tableColumns[col].size.width.v;
14843
+ const cellConfig = tableRows[row].tableCells[col];
14844
+ const { start = { v: 10 }, end = { v: 10 }, top = { v: 5 }, bottom = { v: 5 } } = (_ref = (_cellConfig$margin = cellConfig.margin) !== null && _cellConfig$margin !== void 0 ? _cellConfig$margin : cellMargin) !== null && _ref !== void 0 ? _ref : {};
14845
+ const columnSpan = Math.max(1, (_cellConfig$columnSpa = cellConfig.columnSpan) !== null && _cellConfig$columnSpa !== void 0 ? _cellConfig$columnSpa : 1);
14846
+ const pageWidth = tableColumns.slice(col, col + columnSpan).reduce((sum, column) => sum + column.size.width.v, 0);
14673
14847
  const pageHeight = maxCellPageHeight;
14674
14848
  const cellSectionBreakConfig = {
14675
14849
  lists,
@@ -14698,6 +14872,7 @@ function createNullCellPage(ctx, sectionBreakConfig, tableConfig, row, col, avai
14698
14872
  };
14699
14873
  }
14700
14874
  function createSkeletonCellPages(ctx, viewModel, cellNode, sectionBreakConfig, tableConfig, row, col, availableHeight = Number.POSITIVE_INFINITY, maxCellPageHeight = Number.POSITIVE_INFINITY) {
14875
+ var _ctx$dataModel, _ctx$dataModel$getBod;
14701
14876
  const sectionNode = cellNode.children[0];
14702
14877
  const { page: areaPage, sectionBreakConfig: cellSectionBreakConfig } = createNullCellPage(ctx, sectionBreakConfig, tableConfig, row, col, availableHeight, maxCellPageHeight);
14703
14878
  const { pages } = dealWithSection(ctx, viewModel, sectionNode, areaPage, cellSectionBreakConfig);
@@ -14706,9 +14881,36 @@ function createSkeletonCellPages(ctx, viewModel, cellNode, sectionBreakConfig, t
14706
14881
  p.segmentId = tableConfig.tableId;
14707
14882
  }
14708
14883
  updateBlockIndex(pages, cellNode.startIndex);
14884
+ applyTrailingCellBlockRangeSpaceBelow(pages, (_ctx$dataModel = ctx.dataModel) === null || _ctx$dataModel === void 0 || (_ctx$dataModel$getBod = _ctx$dataModel.getBody) === null || _ctx$dataModel$getBod === void 0 ? void 0 : _ctx$dataModel$getBod.call(_ctx$dataModel), cellNode.endIndex);
14709
14885
  updateInlineDrawingCoordsAndBorder(ctx, pages);
14886
+ expandCellPageHeightForInlineDrawings(pages);
14710
14887
  return pages;
14711
14888
  }
14889
+ function expandCellPageHeightForInlineDrawings(pages) {
14890
+ for (const page of pages) {
14891
+ var _page$skeDrawings;
14892
+ (_page$skeDrawings = page.skeDrawings) === null || _page$skeDrawings === void 0 || _page$skeDrawings.forEach((drawing) => {
14893
+ var _drawing$drawingOrigi, _drawing$aTop, _drawing$height;
14894
+ if (((_drawing$drawingOrigi = drawing.drawingOrigin) === null || _drawing$drawingOrigi === void 0 ? void 0 : _drawing$drawingOrigi.layoutType) !== PositionedObjectLayoutType.INLINE) return;
14895
+ const drawingBottom = ((_drawing$aTop = drawing.aTop) !== null && _drawing$aTop !== void 0 ? _drawing$aTop : 0) + ((_drawing$height = drawing.height) !== null && _drawing$height !== void 0 ? _drawing$height : 0);
14896
+ if (drawingBottom > page.height) page.height = drawingBottom;
14897
+ });
14898
+ }
14899
+ }
14900
+ function applyTrailingCellBlockRangeSpaceBelow(pages, body, cellEndIndex) {
14901
+ const blockRanges = body === null || body === void 0 ? void 0 : body.blockRanges;
14902
+ const trailingBlockRangeSpace = 28;
14903
+ if (!(blockRanges === null || blockRanges === void 0 ? void 0 : blockRanges.length)) return;
14904
+ for (const page of pages) {
14905
+ var _page$sections$at, _body$paragraphs;
14906
+ const lastLine = (_page$sections$at = page.sections.at(-1)) === null || _page$sections$at === void 0 || (_page$sections$at = _page$sections$at.columns.at(-1)) === null || _page$sections$at === void 0 ? void 0 : _page$sections$at.lines.at(-1);
14907
+ if (!lastLine) continue;
14908
+ const paragraphIndex = lastLine.paragraphIndex;
14909
+ if (!blockRanges.some((range) => range.startIndex < paragraphIndex && paragraphIndex < range.endIndex)) continue;
14910
+ if (body === null || body === void 0 || (_body$paragraphs = body.paragraphs) === null || _body$paragraphs === void 0 ? void 0 : _body$paragraphs.some((paragraph) => paragraph.startIndex > paragraphIndex && paragraph.startIndex < cellEndIndex)) continue;
14911
+ page.height += lastLine.spaceBelowApply || trailingBlockRangeSpace;
14912
+ }
14913
+ }
14712
14914
  function _getVerticalMargin(marginTB, headerOrFooter, pageHeight) {
14713
14915
  if (!headerOrFooter || headerOrFooter.sections[0].columns[0].lines.length === 0) return marginTB;
14714
14916
  const HeaderFooterPageHeight = headerOrFooter.height + headerOrFooter.marginTop + headerOrFooter.marginBottom;
@@ -15115,6 +15317,11 @@ function ___getLevelAndSuffix(levelAndSuffixPre) {
15115
15317
 
15116
15318
  //#endregion
15117
15319
  //#region src/components/docs/layout/block/paragraph/linebreaking.ts
15320
+ const BLOCK_LAYOUT_OUTER_SPACING_MAP = new Map([
15321
+ [DocumentBlockRangeType.CALLOUT, 34],
15322
+ [DocumentBlockRangeType.CODE, 32],
15323
+ [DocumentBlockRangeType.QUOTE, 24]
15324
+ ]);
15118
15325
  function _getListLevelAncestors(bullet, listLevel) {
15119
15326
  if (!bullet || !listLevel) return;
15120
15327
  const { listId, nestingLevel } = bullet;
@@ -15141,6 +15348,57 @@ function _updateListLevelAncestors(paragraph, bullet, bulletSkeleton, listLevel)
15141
15348
  cacheItem.splice(nestingLevel + 1);
15142
15349
  listLevel === null || listLevel === void 0 || listLevel.set(listId, cacheItem);
15143
15350
  }
15351
+ function _withMinSpacing(style, key, value) {
15352
+ var _current$v;
15353
+ const current = style[key];
15354
+ const nextValue = Math.max((_current$v = current === null || current === void 0 ? void 0 : current.v) !== null && _current$v !== void 0 ? _current$v : 0, value);
15355
+ style[key] = {
15356
+ ...current,
15357
+ v: nextValue
15358
+ };
15359
+ }
15360
+ function _getNextAdjacentBlockRange(blockRanges, blockRange) {
15361
+ return blockRanges === null || blockRanges === void 0 ? void 0 : blockRanges.filter((range) => range.startIndex > blockRange.endIndex).sort((left, right) => left.startIndex - right.startIndex)[0];
15362
+ }
15363
+ function _hasNextAdjacentLayoutBlockRange(blockRanges, blockRange) {
15364
+ const nextBlockRange = _getNextAdjacentBlockRange(blockRanges, blockRange);
15365
+ return nextBlockRange != null && BLOCK_LAYOUT_OUTER_SPACING_MAP.has(nextBlockRange.blockType) && nextBlockRange.startIndex === blockRange.endIndex + 1;
15366
+ }
15367
+ function _applyDefaultLayoutParagraphStyle(style, hasBlockRange) {
15368
+ if (style.lineSpacing == null) style.lineSpacing = DEFAULT_DOCUMENT_PARAGRAPH_LINE_SPACING;
15369
+ if (hasBlockRange) return;
15370
+ if (style.spaceAbove == null) style.spaceAbove = { v: DEFAULT_DOCUMENT_PARAGRAPH_SPACE_ABOVE };
15371
+ if (style.spaceBelow == null) style.spaceBelow = { v: DEFAULT_DOCUMENT_PARAGRAPH_SPACE_BELOW };
15372
+ }
15373
+ function _applyBlockRangeLayoutParagraphStyle(body, paragraph, paragraphStyle, shouldApplyDocumentDefaults) {
15374
+ var _body$paragraphs, _BLOCK_LAYOUT_OUTER_S;
15375
+ const style = Tools.deepClone(paragraphStyle);
15376
+ const blockRanges = body === null || body === void 0 ? void 0 : body.blockRanges;
15377
+ if (!(blockRanges === null || blockRanges === void 0 ? void 0 : blockRanges.length)) {
15378
+ if (shouldApplyDocumentDefaults) _applyDefaultLayoutParagraphStyle(style, false);
15379
+ return style;
15380
+ }
15381
+ const blockRange = blockRanges.find((range) => BLOCK_LAYOUT_OUTER_SPACING_MAP.has(range.blockType) && paragraph.startIndex > range.startIndex && paragraph.startIndex < range.endIndex);
15382
+ if (!blockRange) {
15383
+ if (shouldApplyDocumentDefaults) _applyDefaultLayoutParagraphStyle(style, false);
15384
+ return style;
15385
+ }
15386
+ _applyDefaultLayoutParagraphStyle(style, true);
15387
+ const blockParagraphs = ((_body$paragraphs = body === null || body === void 0 ? void 0 : body.paragraphs) !== null && _body$paragraphs !== void 0 ? _body$paragraphs : []).filter((item) => item.startIndex > blockRange.startIndex && item.startIndex < blockRange.endIndex).sort((left, right) => left.startIndex - right.startIndex);
15388
+ const firstParagraph = blockParagraphs[0];
15389
+ const lastParagraph = blockParagraphs[blockParagraphs.length - 1];
15390
+ const outerSpacing = (_BLOCK_LAYOUT_OUTER_S = BLOCK_LAYOUT_OUTER_SPACING_MAP.get(blockRange.blockType)) !== null && _BLOCK_LAYOUT_OUTER_S !== void 0 ? _BLOCK_LAYOUT_OUTER_S : 0;
15391
+ if ((firstParagraph === null || firstParagraph === void 0 ? void 0 : firstParagraph.startIndex) === paragraph.startIndex) _withMinSpacing(style, "spaceAbove", outerSpacing);
15392
+ if ((lastParagraph === null || lastParagraph === void 0 ? void 0 : lastParagraph.startIndex) === paragraph.startIndex && !_hasNextAdjacentLayoutBlockRange(blockRanges, blockRange)) _withMinSpacing(style, "spaceBelow", outerSpacing);
15393
+ return style;
15394
+ }
15395
+ function _shouldApplyDocumentDefaultParagraphStyle(viewModel) {
15396
+ var _viewModel$getSnapsho;
15397
+ const snapshot = (_viewModel$getSnapsho = viewModel.getSnapshot) === null || _viewModel$getSnapsho === void 0 ? void 0 : _viewModel$getSnapsho.call(viewModel);
15398
+ const documentFlavor = snapshot === null || snapshot === void 0 ? void 0 : snapshot.documentStyle.documentFlavor;
15399
+ if (snapshot == null) return true;
15400
+ return documentFlavor != null && documentFlavor !== DocumentFlavor.UNSPECIFIED;
15401
+ }
15144
15402
  function _getDrawingSkeletonFormat(drawingOrigin) {
15145
15403
  const { drawingId } = drawingOrigin;
15146
15404
  return {
@@ -15163,6 +15421,7 @@ function _getNextPageNumber(lastPage) {
15163
15421
  return lastPage.pageNumber + 1;
15164
15422
  }
15165
15423
  function lineBreaking(ctx, viewModel, shapedTextList, curPage, paragraphNode, sectionBreakConfig, tableSkeleton) {
15424
+ var _viewModel$getBody, _viewModel$getBody2;
15166
15425
  const { skeletonResourceReference } = ctx;
15167
15426
  const { lists, drawings = {}, localeService } = sectionBreakConfig;
15168
15427
  const { endIndex, blocks = [], children } = paragraphNode;
@@ -15179,7 +15438,7 @@ function lineBreaking(ctx, viewModel, shapedTextList, curPage, paragraphNode, se
15179
15438
  }
15180
15439
  const paragraphConfig = {
15181
15440
  paragraphIndex: endIndex,
15182
- paragraphStyle: Tools.deepClone(paragraphStyle),
15441
+ paragraphStyle: _applyBlockRangeLayoutParagraphStyle((_viewModel$getBody = (_viewModel$getBody2 = viewModel.getBody) === null || _viewModel$getBody2 === void 0 ? void 0 : _viewModel$getBody2.call(viewModel)) !== null && _viewModel$getBody !== void 0 ? _viewModel$getBody : null, paragraph, paragraphStyle, _shouldApplyDocumentDefaultParagraphStyle(viewModel)),
15183
15442
  paragraphNonInlineSkeDrawings,
15184
15443
  paragraphInlineSkeDrawings,
15185
15444
  skeTablesInParagraph: tableSkeleton ? [{
@@ -15739,6 +15998,22 @@ function TibetanHandler(index, charArray, viewModel, paragraphNode, sectionBreak
15739
15998
  glyphGroup: [createSkeletonWordGlyph(glyph.join(""), config)]
15740
15999
  };
15741
16000
  }
16001
+ function ThaiHandler(index, charArray, viewModel, paragraphNode, sectionBreakConfig, paragraph) {
16002
+ const config = getFontCreateConfig(index, viewModel, paragraphNode, sectionBreakConfig, paragraph);
16003
+ const glyph = [];
16004
+ let step = 0;
16005
+ for (let i = 0; i < charArray.length; i++) {
16006
+ const newChar = charArray[i];
16007
+ if (hasThai(newChar)) {
16008
+ glyph.push(newChar);
16009
+ step++;
16010
+ } else break;
16011
+ }
16012
+ return {
16013
+ step,
16014
+ glyphGroup: [createSkeletonWordGlyph(glyph.join(""), config)]
16015
+ };
16016
+ }
15742
16017
 
15743
16018
  //#endregion
15744
16019
  //#region src/components/docs/layout/block/paragraph/shaping.ts
@@ -15884,6 +16159,11 @@ function shaping(ctx, content, viewModel, paragraphNode, sectionBreakConfig, use
15884
16159
  shapedGlyphs.push(...glyphGroup);
15885
16160
  i += step;
15886
16161
  src = src.substring(step);
16162
+ } else if (hasThai(char)) {
16163
+ const { step, glyphGroup } = ThaiHandler(i, src, viewModel, paragraphNode, sectionBreakConfig, paragraph);
16164
+ shapedGlyphs.push(...glyphGroup);
16165
+ i += step;
16166
+ src = src.substring(step);
15887
16167
  } else {
15888
16168
  const { step, glyphGroup } = otherHandler(i, src, viewModel, paragraphNode, sectionBreakConfig, paragraph);
15889
16169
  shapedGlyphs.push(...glyphGroup);
@@ -16007,86 +16287,125 @@ function _pushPage(allCurrentSkeletonPages, blockSkeletonPages) {
16007
16287
  //#endregion
16008
16288
  //#region src/components/docs/layout/hyphenation/pattern-loaders.gen.ts
16009
16289
  const PATTERN_LOADERS = {
16010
- ["af"]: () => import("./af-I8XQee0A.js"),
16011
- ["as"]: () => import("./as-DPw4kbfa.js"),
16012
- ["be"]: () => import("./be-hSu5_2AE.js"),
16013
- ["bg"]: () => import("./bg-eIV91Ges.js"),
16014
- ["bn"]: () => import("./bn-CF0YbkEW.js"),
16015
- ["ca"]: () => import("./ca-D0fayQwW.js"),
16016
- ["cop"]: () => import("./cop-gnNw8zDV.js"),
16017
- ["cs"]: () => import("./cs-cUOdqXi9.js"),
16018
- ["cu"]: () => import("./cu-CJJk_6p3.js"),
16019
- ["cy"]: () => import("./cy-he1_O-US.js"),
16020
- ["da"]: () => import("./da-C_Tc6C75.js"),
16021
- ["de-1901"]: () => import("./de-1901-D9yvXEO8.js"),
16022
- ["de-1996"]: () => import("./de-1996-DIBM3qkD.js"),
16023
- ["de-ch-1901"]: () => import("./de-ch-1901-BEDgpl3-.js"),
16024
- ["el-monoton"]: () => import("./el-monoton-BvjPOyvW.js"),
16025
- ["el-polyton"]: () => import("./el-polyton-DfJ9Eeih.js"),
16026
- ["en-gb"]: () => import("./en-gb-DYXoK50H.js"),
16027
- ["en-us"]: () => import("./en-us-ClVoWMyT.js").then((n) => n.n),
16028
- ["es"]: () => import("./es-48latgZ8.js"),
16029
- ["et"]: () => import("./et-UzX1rSXY.js"),
16030
- ["eu"]: () => import("./eu-ijD7H63T.js"),
16031
- ["fi"]: () => import("./fi-DDuxAHu5.js"),
16032
- ["fr"]: () => import("./fr-6wTrAsbK.js"),
16033
- ["fur"]: () => import("./fur-CcIOY8A9.js"),
16034
- ["ga"]: () => import("./ga-B4Qvh5qS.js"),
16035
- ["gl"]: () => import("./gl-D8H7uN6B.js"),
16036
- ["grc"]: () => import("./grc-DFNi6G6p.js"),
16037
- ["gu"]: () => import("./gu-0EahmEdu.js"),
16038
- ["hi"]: () => import("./hi-C2ih9xmB.js"),
16039
- ["hr"]: () => import("./hr-CSbbBNUu.js"),
16040
- ["hsb"]: () => import("./hsb-hKsDwaW_.js"),
16041
- ["hu"]: () => import("./hu-BPixuxjf.js"),
16042
- ["hy"]: () => import("./hy-CTtThTdl.js"),
16043
- ["ia"]: () => import("./ia-CYCjbabb.js"),
16044
- ["id"]: () => import("./id-Cgsp-bEu.js"),
16045
- ["is"]: () => import("./is-D_Awtowh.js"),
16046
- ["it"]: () => import("./it-C2qJSkm3.js"),
16047
- ["ka"]: () => import("./ka-DpGw5nvd.js"),
16048
- ["kmr"]: () => import("./kmr-CCdNyB20.js"),
16049
- ["kn"]: () => import("./kn-B4tAUtFU.js"),
16050
- ["la"]: () => import("./la-DIUYl8Yo.js"),
16051
- ["la-x-classic"]: () => import("./la-x-classic-DsbLrq-C.js"),
16052
- ["la-x-liturgic"]: () => import("./la-x-liturgic-Ggenbcb5.js"),
16053
- ["lt"]: () => import("./lt-BcizI7gZ.js"),
16054
- ["lv"]: () => import("./lv-BOgrbf6v.js"),
16055
- ["ml"]: () => import("./ml-CTD7giel.js"),
16056
- ["mn-cyrl"]: () => import("./mn-cyrl-CDxGttkw.js"),
16057
- ["mn-cyrl-x-lmc"]: () => import("./mn-cyrl-x-lmc-kjrnm3ii.js"),
16058
- ["mr"]: () => import("./mr-DttMNydl.js"),
16059
- ["mul-ethi"]: () => import("./mul-ethi-mmW8ZEm0.js"),
16060
- ["nb"]: () => import("./nb-DCiD6jLz.js"),
16061
- ["nl"]: () => import("./nl-BKWsn_4x.js"),
16062
- ["nn"]: () => import("./nn-b0W3mz5j.js"),
16063
- ["no"]: () => import("./no-B3l46gib.js"),
16064
- ["oc"]: () => import("./oc-zkqkXjNo.js"),
16065
- ["or"]: () => import("./or-DEnI_Cls.js"),
16066
- ["pa"]: () => import("./pa-Sh-QSMIs.js"),
16067
- ["pi"]: () => import("./pi-DxMx4Uwd.js"),
16068
- ["pl"]: () => import("./pl-CISKU0vg.js"),
16069
- ["pms"]: () => import("./pms-DUga94hR.js"),
16070
- ["pt"]: () => import("./pt-CzW61i2q.js"),
16071
- ["rm"]: () => import("./rm-C1U6i4AB.js"),
16072
- ["ro"]: () => import("./ro-DSU53KfM.js"),
16073
- ["ru"]: () => import("./ru-gduZDLhv.js"),
16074
- ["sa"]: () => import("./sa-Bney0xbB.js"),
16075
- ["sh-cyrl"]: () => import("./sh-cyrl-CCByyO89.js"),
16076
- ["sh-latn"]: () => import("./sh-latn-CTIiTfzt.js"),
16077
- ["sk"]: () => import("./sk-DK-iy-nO.js"),
16078
- ["sl"]: () => import("./sl-BvzIjkCq.js"),
16079
- ["sr-cyrl"]: () => import("./sr-cyrl-7T4T5Th1.js"),
16080
- ["sv"]: () => import("./sv-BynygC4t.js"),
16081
- ["ta"]: () => import("./ta-CglfOvwm.js"),
16082
- ["te"]: () => import("./te-Bec4xJud.js"),
16083
- ["th"]: () => import("./th-B67OcLue.js"),
16084
- ["tk"]: () => import("./tk-CYfVPVLR.js"),
16085
- ["tr"]: () => import("./tr-BxhGLs2f.js"),
16086
- ["uk"]: () => import("./uk-CnWqKnI0.js"),
16087
- ["zh-latn-pinyin"]: () => import("./zh-latn-pinyin-CKxTJrac.js")
16290
+ ["af"]: () => import("./af-DK_CjRn6.js"),
16291
+ ["as"]: () => import("./as-BPtSu6VN.js"),
16292
+ ["be"]: () => import("./be-CrQ0smca.js"),
16293
+ ["bg"]: () => import("./bg-CrQqGwni.js"),
16294
+ ["bn"]: () => import("./bn-NCLZcWHi.js"),
16295
+ ["ca"]: () => import("./ca-SUf6Y2Om.js"),
16296
+ ["cop"]: () => import("./cop-C3sk0IUo.js"),
16297
+ ["cs"]: () => import("./cs-CmAteokq.js"),
16298
+ ["cu"]: () => import("./cu-CBUlrW6Y.js"),
16299
+ ["cy"]: () => import("./cy-BBPa6z2x.js"),
16300
+ ["da"]: () => import("./da-CCDXfXtG.js"),
16301
+ ["de-1901"]: () => import("./de-1901-CWoAOigE.js"),
16302
+ ["de-1996"]: () => import("./de-1996-BL6awyxG.js"),
16303
+ ["de-ch-1901"]: () => import("./de-ch-1901-hVThVHVb.js"),
16304
+ ["el-monoton"]: () => import("./el-monoton-D3aKqTz2.js"),
16305
+ ["el-polyton"]: () => import("./el-polyton-ogVWcTzh.js"),
16306
+ ["en-gb"]: () => import("./en-gb-B7Al27b_.js"),
16307
+ ["en-us"]: () => Promise.resolve().then(() => en_us_exports),
16308
+ ["es"]: () => import("./es-DcaaHPU_.js"),
16309
+ ["et"]: () => import("./et-B_spaleu.js"),
16310
+ ["eu"]: () => import("./eu-Ctv_kq9Z.js"),
16311
+ ["fi"]: () => import("./fi-RW5VB8Yp.js"),
16312
+ ["fr"]: () => import("./fr-BC2onEz9.js"),
16313
+ ["fur"]: () => import("./fur-AC12wySk.js"),
16314
+ ["ga"]: () => import("./ga-Cn6LkudM.js"),
16315
+ ["gl"]: () => import("./gl-DZGc-K_G.js"),
16316
+ ["grc"]: () => import("./grc-DOlGgO8T.js"),
16317
+ ["gu"]: () => import("./gu-Bjl0l-cf.js"),
16318
+ ["hi"]: () => import("./hi-DsAaTPCC.js"),
16319
+ ["hr"]: () => import("./hr-DT1SBBes.js"),
16320
+ ["hsb"]: () => import("./hsb-DC_ITc1e.js"),
16321
+ ["hu"]: () => import("./hu-DVk7Y_ka.js"),
16322
+ ["hy"]: () => import("./hy-e995ysyO.js"),
16323
+ ["ia"]: () => import("./ia-Cr4TJH0c.js"),
16324
+ ["id"]: () => import("./id-DifDyWg9.js"),
16325
+ ["is"]: () => import("./is-BT8UVRze.js"),
16326
+ ["it"]: () => import("./it-Bt_Meacx.js"),
16327
+ ["ka"]: () => import("./ka-jyoLzyDE.js"),
16328
+ ["kmr"]: () => import("./kmr-Cfwhwuff.js"),
16329
+ ["kn"]: () => import("./kn-C6Lov-DP.js"),
16330
+ ["la"]: () => import("./la-DuvHjUWw.js"),
16331
+ ["la-x-classic"]: () => import("./la-x-classic-yTyAOQEt.js"),
16332
+ ["la-x-liturgic"]: () => import("./la-x-liturgic-CXeQb4FY.js"),
16333
+ ["lt"]: () => import("./lt-BBe8DlDF.js"),
16334
+ ["lv"]: () => import("./lv-Q2BBHnzp.js"),
16335
+ ["ml"]: () => import("./ml-2xLVYkVY.js"),
16336
+ ["mn-cyrl"]: () => import("./mn-cyrl-lHM4n0oC.js"),
16337
+ ["mn-cyrl-x-lmc"]: () => import("./mn-cyrl-x-lmc-3aetruI8.js"),
16338
+ ["mr"]: () => import("./mr-CjWJPVmH.js"),
16339
+ ["mul-ethi"]: () => import("./mul-ethi-D_CMSMEq.js"),
16340
+ ["nb"]: () => import("./nb-DI8u59ch.js"),
16341
+ ["nl"]: () => import("./nl-BHQJ6Gvn.js"),
16342
+ ["nn"]: () => import("./nn-ntZvarUK.js"),
16343
+ ["no"]: () => import("./no-B8ItS0F3.js"),
16344
+ ["oc"]: () => import("./oc-P_i3-xLA.js"),
16345
+ ["or"]: () => import("./or-50rxpoq4.js"),
16346
+ ["pa"]: () => import("./pa-C54UG8eN.js"),
16347
+ ["pi"]: () => import("./pi-B9cgjyG1.js"),
16348
+ ["pl"]: () => import("./pl-9fg-ESVt.js"),
16349
+ ["pms"]: () => import("./pms-BRGfm5gS.js"),
16350
+ ["pt"]: () => import("./pt-Cum2_NUC.js"),
16351
+ ["rm"]: () => import("./rm-C0MIK9N4.js"),
16352
+ ["ro"]: () => import("./ro-0fmdH0HA.js"),
16353
+ ["ru"]: () => import("./ru-v4l-ayaq.js"),
16354
+ ["sa"]: () => import("./sa-CKY9c_Vq.js"),
16355
+ ["sh-cyrl"]: () => import("./sh-cyrl-BpCRFOmq.js"),
16356
+ ["sh-latn"]: () => import("./sh-latn-sRy4Tuaj.js"),
16357
+ ["sk"]: () => import("./sk-_iOeDNrQ.js"),
16358
+ ["sl"]: () => import("./sl-DpiklF-D.js"),
16359
+ ["sr-cyrl"]: () => import("./sr-cyrl-Dpzrbd0W.js"),
16360
+ ["sv"]: () => import("./sv-CFm5y56M.js"),
16361
+ ["ta"]: () => import("./ta-BcghgTbD.js"),
16362
+ ["te"]: () => import("./te-B5Spl2Jk.js"),
16363
+ ["th"]: () => import("./th-DWX5iPSo.js"),
16364
+ ["tk"]: () => import("./tk-BMbKB10q.js"),
16365
+ ["tr"]: () => import("./tr-CIHIuzqc.js"),
16366
+ ["uk"]: () => import("./uk-Dir3oxLs.js"),
16367
+ ["zh-latn-pinyin"]: () => import("./zh-latn-pinyin-BdYb-Ey_.js")
16088
16368
  };
16089
16369
 
16370
+ //#endregion
16371
+ //#region src/components/docs/layout/hyphenation/patterns/en-us.ts
16372
+ var en_us_exports = /* @__PURE__ */ __exportAll({ EnUs: () => EnUs });
16373
+ /**
16374
+ * Copyright 2023-present DreamNum Co., Ltd.
16375
+ *
16376
+ * Licensed under the Apache License, Version 2.0 (the "License");
16377
+ * you may not use this file except in compliance with the License.
16378
+ * You may obtain a copy of the License at
16379
+ *
16380
+ * http://www.apache.org/licenses/LICENSE-2.0
16381
+ *
16382
+ * Unless required by applicable law or agreed to in writing, software
16383
+ * distributed under the License is distributed on an "AS IS" BASIS,
16384
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16385
+ * See the License for the specific language governing permissions and
16386
+ * limitations under the License.
16387
+ */
16388
+ const EnUs = [
16389
+ "0004,004,001,003,005,0005,00005,000005,0002,002,0000005,0003,00003,00505,00034,0001,00055,00004,4,05,0055,04,42,03,02,2,404,3,044,01,0505,55,5,045,041,0033,000004,22,00504,5504,0042,1,21,41,402,405,4004,43,23,000054,303,3005,022,5004,000003,252,45,25,2004,000505,054,403,401,3002,0025,144,432,00054,34,12,234,0022,014,0304,012,143,503,0403,101,052,414,212,011,043,00002,0041,0024,05005,03003,00102,0404,04303,01004,0034,025,0044,00404,00025,0103,042,0205,412,104,54,344,433,5005,253,055,0402,3004,0043,204,505,454,0000004,00303,04004,552,201,4005,0255,52,444,14,44,02004,033,05004,00045,00013,0021,0405,00044,0054,50055,000303,00001,304,0204,11,301,232,122,00305,504,000043,0104,00052,000045,50004,0023,00033,00032,00202,5003,202,0401,0000505,214,102,032,000161,004101,00501,00301,0036,0052,00023,006101,006,00401,000521,0014,0063,00012,000501,000006,000604,000601,005001,005005,0010305,00006,003012,003005,0003011,0061,013,000021,000022,000105,00211,00062,00051,000112,006013,000011,0200306,1021,0050001,003003,2102,305,000015,01030005,000035,001011,00021,16330001,0234,030006,5020001,000001,00016,0031,021,21431,002305,0350014,0000012,000063,00101,106,105,00435,00063,0300061,00041,100306,003602,023,0503,0010011,10003,1005,30011,00031,0001001,0000061,0030003,30305,001201,0301,5000101,500101,00015,000401,000065,000016,0000402,0500002,000205,030201,500301,00014,5001,000002,00030011,01034,0300006,030213,00400304,050001,05003,000311,0634,00061,0006,00000604,00050013,00213,0030001,100003,000033,30002,00003632,0003004,050003,0000021,006303,0000006,00005005,30451,03001,00231,00056,00011,6,001001,00500001,03005,503005,0000010001,1002,003001,001065,300001,32011,32,0000003,0213001,0500053,021005,10001,0000011,0001041,0020016,100032,50011,0606,5002,3001,03002,0015001,0102,00003001,000000033,0000001,300101,300015,0101003,00000101,0100501,0101,0010033,00000362,000014,0005001,031",
16390
+ "{\".\":[{\"a\":[{\"c\":[{\"h\":0}],\"d\":[{\"d\":[{\"e\":[{\"r\":1}]}]}],\"f\":[{\"t\":2}],\"l\":[{\"t\":3}],\"m\":[{\"a\":[{\"t\":4}]}],\"n\":[{\"c\":4,\"g\":0,\"i\":[{\"m\":5}],\"t\":[{\"e\":3,\"i\":[{\"s\":6}]},0]}],\"r\":[{\"s\":4,\"t\":[{\"i\":[{\"e\":1}],\"y\":1}]}],\"s\":[{\"c\":3,\"p\":2,\"s\":2,\"t\":[{\"e\":[{\"r\":7}]}]}],\"t\":[{\"o\":[{\"m\":6}]}],\"u\":[{\"d\":2}],\"v\":[{\"i\":1}],\"w\":[{\"n\":0}]}],\"b\":[{\"a\":[{\"g\":1,\"n\":[{\"a\":4}],\"s\":[{\"e\":0}]}],\"e\":[{\"r\":[{\"a\":4},0],\"s\":[{\"m\":3,\"t\":[{\"o\":4}]}]}],\"r\":[{\"i\":8}],\"u\":[{\"t\":[{\"t\":[{\"i\":0}]}]}]}],\"c\":[{\"a\":[{\"m\":[{\"p\":[{\"e\":0}]}],\"n\":[{\"c\":5}],\"p\":[{\"a\":[{\"b\":6}]}],\"r\":[{\"o\":[{\"l\":5}]}],\"t\":1}],\"e\":[{\"l\":[{\"a\":1}]}],\"h\":[{\"i\":[{\"l\":[{\"l\":[{\"i\":7}]}]}]},1],\"i\":[{\"t\":[{\"r\":5}]},9],\"o\":[{\"e\":3,\"r\":[{\"n\":[{\"e\":[{\"r\":5}]}]},1],\"n\":[{\"g\":[{\"r\":5}]}]}]}],\"d\":[{\"e\":[{\"m\":[{\"o\":[{\"i\":1}]}],\"o\":3,\"r\":[{\"a\":3,\"i\":[{\"v\":[{\"a\":4}]},3]}],\"s\":[{\"c\":0}]}],\"i\":[{\"c\":[{\"t\":[{\"i\":[{\"o\":10}]}]}]}],\"o\":[{\"t\":1}],\"u\":[{\"c\":1,\"m\":[{\"b\":6}]}],\"r\":[{\"i\":[{\"v\":67}]}]}],\"e\":[{\"a\":[{\"r\":[{\"t\":[{\"h\":7}]}],\"s\":[{\"i\":11}]}],\"b\":1,\"e\":[{\"r\":0}],\"g\":9,\"l\":[{\"d\":4,\"e\":[{\"m\":3}]}],\"n\":[{\"a\":[{\"m\":12}],\"g\":3,\"s\":3}],\"q\":[{\"u\":[{\"i\":[{\"t\":13}]}]}],\"r\":[{\"r\":[{\"i\":1}]}],\"s\":3,\"u\":[{\"l\":[{\"e\":[{\"r\":1}]}]},3],\"y\":[{\"e\":5}],\"t\":[{\"h\":[{\"y\":[{\"l\":162}]}]}],\"v\":[{\"e\":[{\"r\":[{\"s\":[{\"i\":[{\"b\":158}]}]}]}]},9]}],\"f\":[{\"e\":[{\"s\":11}],\"o\":[{\"r\":[{\"m\":[{\"e\":[{\"r\":5}]}]}]}]}],\"g\":[{\"a\":[{\"s\":[{\"o\":[{\"m\":163}]}]},9],\"e\":[{\"n\":[{\"t\":14}],\"o\":[{\"g\":4,\"m\":[{\"e\":1}],\"t\":164}]},9],\"i\":[{\"a\":4,\"b\":1}],\"o\":[{\"r\":1}]}],\"h\":[{\"a\":[{\"n\":[{\"d\":[{\"i\":6}],\"k\":5}]}],\"e\":[{\"r\":[{\"o\":[{\"i\":6,\"e\":3}]}],\"s\":11,\"t\":11,\"m\":[{\"o\":165}],\"p\":[{\"a\":166}]},9],\"i\":[{\"b\":3,\"e\":[{\"r\":3}]}],\"o\":[{\"n\":[{\"e\":[{\"y\":5}],\"o\":11}],\"v\":5}]}],\"i\":[{\"d\":[{\"l\":1,\"o\":[{\"l\":12}]}],\"m\":[{\"m\":3,\"p\":[{\"i\":[{\"n\":4}]}]}],\"n\":[{\"c\":[{\"i\":3}],\"e\":8,\"k\":9,\"s\":3,\"u\":[{\"t\":167}]},2],\"r\":[{\"r\":4}],\"s\":[{\"i\":1}]}],\"j\":[{\"u\":[{\"r\":3}]}],\"l\":[{\"a\":[{\"c\":[{\"y\":1}],\"m\":1,\"t\":[{\"e\":[{\"r\":5}],\"h\":6}]}],\"e\":[{\"g\":[{\"e\":5}],\"n\":0,\"p\":5,\"v\":15,\"i\":[{\"c\":[{\"e\":[{\"s\":170}]}]}]},9],\"i\":[{\"g\":[{\"a\":5},1],\"n\":9,\"o\":3,\"t\":1}]}],\"m\":[{\"a\":[{\"g\":[{\"a\":16}],\"l\":[{\"o\":5}],\"n\":[{\"a\":5}],\"r\":[{\"t\":[{\"i\":5}]}]}],\"e\":[{\"r\":[{\"c\":11}],\"t\":[{\"e\":[{\"r\":4}],\"a\":[{\"l\":[{\"a\":0}]}]}],\"g\":[{\"a\":[{\"l\":171}]}]},9],\"i\":[{\"s\":[{\"t\":[{\"i\":6}],\"e\":[{\"r\":[{\"s\":173}]}]},15],\"m\":[{\"i\":[{\"c\":172}]}]}],\"o\":[{\"n\":[{\"e\":11}],\"r\":[{\"o\":3}]}],\"u\":[{\"t\":[{\"a\":[{\"b\":6},4]}]}]}],\"n\":[{\"i\":[{\"c\":1}],\"e\":[{\"o\":[{\"f\":174}]}],\"o\":[{\"e\":[{\"t\":[{\"h\":15}]}],\"n\":[{\"e\":[{\"m\":175}]}]}]}],\"o\":[{\"d\":[{\"d\":5},9],\"f\":[{\"t\":[{\"e\":4}]}],\"r\":[{\"a\":[{\"t\":[{\"o\":4}]}],\"c\":3,\"d\":2,\"t\":3}],\"s\":[{\"t\":[{\"l\":1}]},3],\"t\":[{\"h\":11}],\"u\":[{\"t\":11}]}],\"p\":[{\"e\":[{\"d\":[{\"a\":[{\"l\":5}]}],\"t\":[{\"e\":4,\"i\":[{\"t\":4}]}]}],\"i\":[{\"e\":1,\"o\":[{\"n\":5}],\"t\":9}],\"r\":[{\"e\":[{\"m\":11,\"a\":[{\"m\":15}]}]}],\"o\":[{\"l\":[{\"y\":[{\"s\":137}]}],\"s\":[{\"t\":[{\"a\":[{\"m\":137}]}]}]}]}],\"r\":[{\"a\":[{\"c\":1,\"n\":[{\"t\":0}],\"t\":[{\"i\":[{\"o\":[{\"n\":[{\"a\":7}]}]}]}],\"v\":[{\"e\":[{\"n\":[{\"o\":176}]}]}]}],\"e\":[{\"e\":[{\"c\":173},8],\"m\":[{\"i\":[{\"t\":4}]}],\"s\":[{\"t\":[{\"a\":[{\"t\":4}]}]},8]}],\"i\":[{\"g\":1,\"t\":[{\"u\":5}]}],\"o\":[{\"q\":1,\"s\":[{\"t\":5}],\"w\":[{\"d\":5}]}],\"u\":[{\"d\":1}]}],\"s\":[{\"c\":[{\"i\":[{\"e\":11}]}],\"e\":[{\"l\":[{\"f\":6,\"l\":6}],\"n\":9,\"r\":[{\"i\":[{\"e\":4}]}],\"m\":[{\"i\":[{\"c\":0,\"d\":177,\"p\":36,\"r\":36,\"s\":178,\"v\":36},6]}]}],\"h\":9,\"i\":[{\"n\":[{\"g\":17}]},9],\"t\":[{\"a\":[{\"b\":[{\"l\":5}]}]},1],\"y\":9,\"p\":[{\"h\":[{\"i\":[{\"n\":179}]}],\"i\":[{\"n\":[{\"o\":137}]}]}]}],\"t\":[{\"a\":[{\"p\":[{\"e\":[{\"s\":[{\"t\":[{\"r\":180}]}]}]}]},1],\"e\":[{\"n\":[{\"a\":[{\"n\":5}]}],\"l\":[{\"e\":[{\"g\":[{\"r\":3}]}]}]},1],\"h\":9,\"i\":[{\"l\":0,\"m\":[{\"o\":16}],\"n\":[{\"g\":17,\"k\":5}]},9],\"o\":[{\"n\":[{\"a\":0}],\"p\":[{\"i\":5,\"o\":[{\"g\":170}]},1],\"u\":[{\"s\":5}],\"q\":9}],\"r\":[{\"i\":[{\"b\":[{\"u\":[{\"t\":6}]}]}]}]}],\"u\":[{\"n\":[{\"a\":[{\"t\":[{\"t\":144}]},2],\"c\":[{\"e\":3}],\"d\":[{\"e\":[{\"r\":7}]}],\"e\":[{\"r\":[{\"r\":181}]},2],\"k\":4,\"o\":4,\"u\":3}],\"p\":3,\"r\":[{\"e\":11}],\"s\":[{\"a\":4}]}],\"v\":[{\"e\":[{\"n\":[{\"d\":[{\"e\":0}]}],\"r\":[{\"a\":4}]}],\"i\":[{\"c\":[{\"a\":[{\"r\":151}]}]}]}],\"w\":[{\"i\":[{\"l\":[{\"i\":5}]}],\"e\":[{\"b\":[{\"l\":131}]}]}],\"y\":[{\"e\":1}],\"k\":[{\"i\":[{\"l\":[{\"n\":[{\"i\":168}]}]}],\"o\":[{\"r\":[{\"t\":[{\"e\":169}]}]}]}]}],\"a\":[{\"b\":[{\".\":18,\"a\":[{\"l\":19,\"n\":19}],\"e\":[{\"r\":[{\"d\":4}]},8],\"i\":[{\"a\":5,\"t\":[{\"a\":[{\"b\":13}]}]}],\"l\":[{\"a\":[{\"t\":4}]}],\"o\":[{\"l\":[{\"i\":[{\"z\":20,\"c\":19}]}]}],\"r\":[{\"o\":[{\"g\":4}]},18],\"u\":[{\"l\":3}]}],\"c\":[{\"a\":[{\"r\":[{\"d\":4,\"o\":4},21],\"b\":[{\"l\":24}]}],\"e\":[{\"o\":[{\"u\":19}],\"r\":2}],\"h\":[{\"e\":[{\"t\":19}]}],\"i\":[{\"e\":23,\"n\":2,\"o\":23},22],\"r\":[{\"o\":[{\"b\":4}]}],\"t\":[{\"i\":[{\"f\":5}]}],\"u\":[{\"l\":3,\"m\":1}]}],\"d\":[{\"d\":[{\"i\":[{\"n\":1}]}],\"e\":[{\"r\":[{\".\":4}]}],\"i\":[{\"a\":23,\"c\":[{\"a\":3}],\"e\":[{\"r\":0}],\"o\":23,\"t\":23,\"u\":19},25],\"l\":[{\"e\":1}],\"o\":[{\"w\":3}],\"r\":[{\"a\":[{\"n\":4}]}],\"s\":[{\"u\":1}],\"u\":[{\"c\":23,\"m\":4},18]},24],\"e\":[{\"r\":[{\"i\":[{\"e\":17}]},1]}],\"f\":[{\"f\":[{\"i\":[{\"s\":[{\"h\":170}]}]},0]},24],\"g\":[{\"a\":[{\"b\":21,\"n\":0}],\"e\":[{\"l\":[{\"l\":4}],\"o\":0,\"u\":18}],\"i\":2,\"l\":26,\"n\":2,\"o\":[{\"g\":27,\"n\":[{\"i\":3}]},24],\"u\":[{\"e\":[{\"r\":19}],\"l\":4}],\"y\":21}],\"h\":[{\"a\":23,\"e\":23,\"l\":1,\"o\":23}],\"i\":[{\"a\":19,\"c\":[{\".\":23}],\"l\":[{\"y\":4}],\"n\":[{\"i\":[{\"n\":5}],\"o\":5},28],\"t\":[{\"e\":[{\"n\":5}]}]},9],\"j\":29,\"k\":[{\"e\":[{\"n\":2}]}],\"l\":[{\"a\":[{\"b\":4,\"d\":3,\"r\":21}],\"d\":[{\"i\":18}],\"e\":[{\"n\":[{\"d\":3,\"t\":[{\"i\":21}]}],\"o\":30},25],\"i\":[{\"a\":[{\".\":1}],\"e\":0},2],\"l\":[{\"e\":[{\"v\":4}],\"i\":[{\"c\":18}]}],\"m\":18,\"o\":[{\"g\":[{\".\":19}]}],\"y\":[{\".\":21,\"s\":[{\"t\":31},18],\"t\":32,\"z\":27}]}],\"m\":[{\"a\":[{\"b\":4,\"g\":3,\"r\":[{\"a\":5}],\"s\":[{\"c\":4}],\"t\":[{\"i\":[{\"s\":21}],\"o\":33}]},18],\"e\":[{\"r\":[{\"a\":4}],\"n\":[{\"t\":[{\"a\":[{\"b\":182}]}]}]}],\"i\":[{\"c\":3,\"f\":4,\"l\":[{\"y\":4}],\"n\":[{\"o\":0},2]}],\"o\":[{\"n\":19,\"r\":[{\"i\":6}]},24],\"p\":[{\"e\":[{\"n\":5}]}]}],\"n\":[{\"a\":[{\"g\":[{\"e\":3}],\"l\":[{\"y\":[{\"s\":183},27]}],\"r\":[{\"c\":3,\"i\":17},23],\"t\":[{\"i\":23}]}],\"d\":[{\"e\":[{\"s\":17}],\"i\":[{\"s\":3}],\"l\":2,\"o\":[{\"w\":1}]},18],\"e\":[{\"e\":19,\"n\":23,\"s\":[{\"t\":[{\".\":4}]}],\"u\":23}],\"g\":[{\"i\":[{\"e\":5}],\"l\":2},25],\"i\":[{\"c\":34,\"e\":[{\"s\":23}],\"f\":35,\"m\":[{\"e\":1,\"i\":19}],\"n\":[{\"e\":19}],\"o\":3,\"p\":23,\"s\":[{\"h\":3}],\"t\":3,\"u\":23}],\"k\":[{\"l\":[{\"i\":1}]}],\"n\":[{\"i\":[{\"z\":32}]}],\"o\":[{\"t\":[{\"h\":7},4],\"a\":[{\"c\":148}]},0],\"s\":[{\"a\":9,\"c\":[{\"o\":1}],\"n\":1,\"p\":[{\"o\":11},9],\"t\":1,\"u\":[{\"r\":1}],\"g\":[{\"r\":5}],\"v\":11}],\"t\":[{\"a\":[{\"l\":36}],\"i\":[{\"e\":1,\"d\":137,\"n\":184,\"r\":[{\"e\":137}]}],\"o\":18,\"r\":9,\"w\":1}],\"u\":[{\"a\":3,\"l\":3,\"r\":19}]},24],\"o\":18,\"p\":[{\"a\":[{\"r\":17,\"t\":4}],\"e\":[{\"r\":[{\"o\":4}],\"a\":[{\"b\":[{\"l\":[{\"e\":132}]}]}]}],\"h\":[{\"e\":[{\"r\":23}],\"i\":18}],\"i\":[{\"l\":[{\"l\":[{\"a\":[{\"r\":4},21]}]}],\"n\":3,\"t\":[{\"a\":3,\"u\":23}]}],\"l\":24,\"o\":[{\"c\":6,\"l\":[{\"a\":4}],\"r\":[{\"i\":6}],\"s\":[{\"t\":12}]}],\"s\":[{\"e\":[{\"s\":5}]}],\"u\":23}],\"q\":[{\"u\":[{\"e\":6}]}],\"r\":[{\"a\":[{\"c\":[{\"t\":3}],\"d\":[{\"e\":19,\"i\":[{\"s\":4}]}],\"l\":3,\"m\":[{\"e\":[{\"t\":[{\"e\":19}]}]}],\"n\":[{\"g\":17}],\"p\":11,\"t\":[{\"i\":[{\"o\":19,\"v\":4}]},1],\"u\":19,\"v\":38,\"w\":17}],\"b\":[{\"a\":[{\"l\":36}]}],\"c\":[{\"h\":[{\"a\":[{\"n\":1}],\"e\":[{\"t\":185}]}]}],\"d\":[{\"i\":[{\"n\":[{\"e\":4}]}],\"r\":1}],\"e\":[{\"a\":[{\"s\":4}],\"e\":23,\"n\":[{\"t\":3}],\"s\":[{\"s\":19}]}],\"f\":[{\"i\":1,\"l\":1}],\"i\":[{\"a\":[{\"l\":4,\"n\":3}],\"e\":[{\"t\":23}],\"m\":1,\"n\":[{\"a\":[{\"t\":4}]}],\"o\":3,\"z\":9},2],\"m\":[{\"i\":9}],\"o\":[{\"d\":20,\"n\":[{\"i\":19}],\"o\":23}],\"p\":9,\"q\":3,\"r\":[{\"e\":17,\"a\":[{\"n\":[{\"g\":[{\"e\":9}]}]}]}],\"s\":[{\"a\":1,\"h\":9}]},37],\"s\":[{\".\":18,\"a\":[{\"b\":1,\"n\":[{\"t\":3}]}],\"h\":[{\"i\":17}],\"i\":[{\"a\":[{\".\":19}],\"b\":23,\"c\":23,\"t\":39}],\"k\":[{\"i\":11}],\"l\":1,\"o\":[{\"c\":21}],\"p\":[{\"h\":4}],\"s\":[{\"h\":1}],\"t\":[{\"e\":[{\"n\":3}],\"r\":2}],\"u\":[{\"r\":[{\"a\":6}]}],\"y\":[{\"m\":[{\"p\":[{\"t\":[{\"o\":[{\"t\":4}]}]}]}]}]}],\"t\":[{\"a\":[{\"b\":[{\"l\":3}],\"c\":4,\"l\":[{\"o\":3}],\"p\":4},24],\"e\":[{\"c\":[{\"h\":4},5],\"g\":[{\"o\":3}],\"n\":[{\".\":3}],\"r\":[{\"a\":3,\"n\":[{\"a\":19},6]}],\"s\":[{\"t\":3}],\"v\":4}],\"h\":[{\"e\":[{\"m\":5,\"n\":19,\"r\":[{\"o\":[{\"s\":186}]}]}],\"o\":[{\"m\":5},1]},18],\"i\":[{\".\":18,\"a\":19,\"b\":20,\"c\":2,\"f\":3,\"o\":[{\"n\":[{\"a\":[{\"r\":7}]}]}],\"t\":[{\"u\":3}]}],\"o\":[{\"g\":21,\"m\":[{\"i\":[{\"z\":4}]},24],\"p\":21,\"s\":21}],\"r\":[{\"o\":[{\"p\":4}]},29],\"s\":[{\"k\":1}],\"t\":[{\"a\":[{\"g\":1}],\"e\":[{\"s\":[{\".\":170}]},4],\"h\":1}],\"u\":[{\"a\":4,\"e\":4,\"l\":3,\"r\":[{\"a\":3}]},24],\"y\":24}],\"u\":[{\"b\":1,\"g\":[{\"h\":[{\"t\":[{\"l\":17}]},12],\"u\":3}],\"l\":[{\"i\":[{\"f\":13}]},40],\"n\":[{\"d\":5}],\"r\":3,\"s\":[{\"i\":[{\"b\":4}]}],\"t\":[{\"e\":[{\"n\":5}],\"h\":2}]}],\"v\":[{\"a\":[{\"g\":3,\"n\":19},24],\"e\":[{\"n\":[{\"o\":0}],\"r\":[{\"a\":3,\"n\":4,\"y\":4}]}],\"i\":[{\"e\":[{\"r\":0}],\"g\":3,\"o\":[{\"u\":3}]},2],\"o\":[{\"c\":4,\"r\":29}]}],\"w\":[{\"a\":[{\"y\":27}],\"i\":3,\"l\":[{\"y\":1}],\"s\":0}],\"x\":[{\"i\":[{\"c\":1,\"d\":1}]}],\"y\":[{\"a\":[{\"l\":4}],\"e\":0,\"s\":0}],\"z\":[{\"i\":[{\"e\":[{\"r\":0}]}],\"z\":[{\"i\":5}]}]}],\"b\":[{\"a\":[{\".\":32,\"d\":[{\"g\":[{\"e\":[{\"r\":5}]}]}],\"g\":[{\"e\":1}],\"l\":[{\"a\":15}],\"n\":[{\"d\":[{\"a\":[{\"g\":5}]}],\"e\":0,\"i\":11}],\"r\":[{\"b\":[{\"i\":7}],\"i\":[{\"a\":17}],\"o\":[{\"n\":[{\"i\":[{\"e\":187}]}]}]}],\"s\":[{\"s\":[{\"i\":0}]}],\"t\":[{\"h\":[{\"y\":2}]},41],\"z\":1,\"c\":[{\"k\":[{\"e\":[{\"r\":[{\".\":84}]}]}]}]}],\"b\":[{\"e\":[{\"r\":23},24],\"i\":[{\"n\":[{\"a\":0}],\"t\":0}]},42],\"d\":43,\"e\":[{\".\":18,\"a\":[{\"k\":17,\"t\":12}],\"d\":[{\"a\":3,\"e\":3,\"i\":3},44],\"g\":[{\"i\":3,\"u\":4}],\"l\":[{\"i\":2,\"o\":3},41],\"m\":45,\"n\":[{\"i\":[{\"g\":4}],\"u\":4}],\"s\":[{\"p\":3,\"t\":[{\"r\":4}]},46],\"t\":[{\"i\":[{\"z\":5}],\"r\":4,\"w\":3},27],\"w\":3,\"y\":[{\"o\":4}],\"v\":[{\"i\":[{\"e\":9}]}]}],\"f\":25,\"h\":47,\"i\":[{\"b\":9,\"d\":[{\"i\":[{\"f\":167}]},1],\"e\":[{\"n\":4,\"r\":1},27],\"f\":48,\"l\":[{\"i\":[{\"z\":3}],\"l\":[{\"a\":[{\"b\":8}]}]},41],\"n\":[{\"a\":[{\"r\":49}],\"d\":0,\"e\":[{\"t\":4}]}],\"o\":[{\"g\":[{\"r\":3}],\"u\":4,\"m\":5,\"r\":[{\"b\":2,\"h\":15}]}],\"t\":[{\"i\":[{\"o\":50,\"v\":[{\"e\":188}]}],\"r\":3,\"u\":[{\"a\":51}],\"z\":19},9]}],\"j\":29,\"k\":1,\"l\":[{\"a\":[{\"t\":[{\"h\":7}],\"n\":[{\"d\":189}]}],\"e\":[{\".\":21,\"n\":17,\"s\":[{\"p\":32}]}],\"i\":[{\"s\":23,\"n\":[{\"d\":189}]}],\"o\":[{\"n\":[{\"d\":190}]},21],\"u\":[{\"n\":[{\"t\":17}]}]},52],\"m\":43,\"n\":[{\"e\":[{\"g\":5}]},47],\"o\":[{\"d\":[{\"i\":11},27],\"e\":1,\"l\":[{\"i\":[{\"c\":11}]}],\"m\":[{\"b\":[{\"i\":0}]}],\"n\":[{\"a\":[{\"t\":5},0]}],\"o\":27,\"r\":[{\".\":32,\"a\":43,\"d\":5,\"e\":32,\"i\":32,\"n\":[{\"o\":191}]}],\"s\":53,\"t\":[{\"a\":19,\"h\":6,\"o\":1,\"u\":[{\"l\":192}]}],\"u\":[{\"n\":[{\"d\":54}]}]}],\"p\":18,\"r\":[{\"i\":[{\"t\":18}],\"o\":[{\"t\":[{\"h\":54}]}],\"u\":[{\"s\":[{\"q\":17}]}]}],\"s\":[{\"o\":[{\"r\":17}]},55],\"t\":[{\"l\":1,\"o\":21,\"r\":23},25],\"u\":[{\"f\":[{\"f\":[{\"e\":[{\"r\":0}]}]}],\"g\":[{\"a\":1}],\"l\":[{\"i\":3}],\"m\":[{\"i\":17}],\"n\":[{\"t\":[{\"i\":17}]},1],\"r\":[{\"e\":3}],\"s\":[{\"i\":[{\"e\":[{\"r\":193,\"s\":193},5]}],\"s\":[{\"e\":17,\"i\":[{\"n\":[{\"g\":17}]}]}],\"t\":32}],\"t\":[{\"a\":18,\"i\":[{\"o\":27}],\"o\":19,\"e\":[{\"d\":[{\".\":8}]}],\"t\":[{\"e\":[{\"d\":0}]}]}]}],\"v\":29,\"w\":56,\"y\":[{\".\":32,\"s\":0}]}],\"c\":[{\"a\":[{\"b\":[{\"i\":[{\"n\":11}],\"l\":2}],\"c\":[{\"h\":17}],\"d\":[{\"e\":[{\"n\":4,\"m\":194}]}],\"g\":46,\"h\":57,\"l\":[{\"a\":[{\"t\":3}],\"l\":[{\"a\":0,\"i\":[{\"n\":6}]}],\"o\":18}],\"n\":[{\"d\":5,\"e\":0,\"i\":[{\"c\":0,\"s\":5,\"z\":11}],\"t\":[{\"y\":0}],\"y\":17}],\"p\":[{\"e\":[{\"r\":4}]}],\"r\":[{\"o\":[{\"m\":5}]}],\"s\":[{\"t\":[{\"e\":[{\"r\":6}],\"i\":[{\"g\":5}]}],\"y\":18}],\"t\":[{\"h\":1,\"i\":[{\"v\":18}],\"a\":[{\"s\":195}]}],\"v\":[{\"a\":[{\"l\":5}]}]},41],\"c\":[{\"h\":[{\"a\":6}],\"i\":[{\"a\":0}],\"o\":[{\"m\":[{\"p\":[{\"a\":10}]}],\"n\":17,\"u\":[{\"t\":12}]}]},23],\"e\":[{\".\":25,\"d\":[{\".\":18,\"e\":[{\"n\":18}]}],\"i\":27,\"l\":[{\".\":32,\"l\":27}],\"n\":[{\"c\":27,\"e\":58,\"i\":18,\"t\":27},41],\"p\":27,\"r\":[{\"a\":[{\"m\":4}]}],\"s\":[{\"a\":18,\"s\":[{\"i\":[{\"b\":59},27]}],\"t\":5}],\"t\":[{\"a\":60},0],\"w\":0}],\"h\":[{\".\":18,\"a\":[{\"b\":61,\"n\":[{\"i\":[{\"c\":32,\"s\":20}]}]}],\"e\":[{\"a\":[{\"p\":54}],\"d\":18,\"l\":[{\"o\":5}],\"m\":[{\"i\":27}],\"n\":[{\"e\":4}],\"r\":[{\".\":3,\"s\":3}]},8],\"i\":[{\"n\":[{\"e\":[{\".\":32,\"s\":[{\"s\":4}]}],\"i\":32},62],\"o\":32,\"t\":27,\"z\":8,\"e\":[{\"v\":[{\"o\":6}]}]}],\"o\":63,\"t\":[{\"i\":1}],\"s\":[{\".\":18,\"h\":[{\"u\":11}]}]},25],\"i\":[{\"a\":[{\"b\":64,\"r\":5},27],\"c\":4,\"e\":[{\"r\":18}],\"f\":[{\"i\":[{\"c\":[{\".\":32}]}]}],\"i\":18,\"l\":[{\"a\":1,\"i\":27}],\"m\":25,\"n\":[{\"a\":[{\"t\":27},21],\"e\":[{\"m\":11}],\"g\":[{\".\":19},29],\"o\":32,\"q\":8},25],\"o\":[{\"n\":17}],\"p\":[{\"e\":18,\"h\":3,\"i\":[{\"c\":18}]}],\"s\":[{\"t\":[{\"a\":18,\"i\":18}]}],\"t\":[{\"i\":[{\"z\":11}]},42],\"z\":32,\"g\":[{\"a\":[{\"r\":152}]}]},41],\"k\":[{\"i\":3},2],\"l\":[{\"a\":[{\"r\":[{\"a\":[{\"t\":[{\"i\":[{\"o\":19}]}]}],\"e\":32},18]}],\"e\":[{\"m\":0,\"a\":[{\"r\":0}]}],\"i\":[{\"c\":18,\"m\":17}],\"y\":0},65],\"n\":19,\"o\":[{\"a\":[{\"g\":4}],\"e\":8,\"g\":[{\"r\":1},25],\"i\":[{\"n\":[{\"c\":3}]},0],\"l\":[{\"i\":5,\"o\":[{\"r\":11},32]}],\"m\":[{\"e\":[{\"r\":5}]}],\"n\":[{\"a\":0,\"e\":21,\"g\":11,\"t\":5}],\"p\":[{\"a\":3,\"i\":[{\"c\":11}],\"l\":1,\"h\":[{\"o\":[{\"n\":196}]}]}],\"r\":[{\"b\":18,\"o\":[{\"n\":12}]}],\"s\":[{\"e\":0}],\"v\":[{\"e\":17},15],\"w\":[{\"a\":5}],\"z\":[{\"e\":5,\"i\":4}],\"u\":[{\"s\":[{\"t\":[{\"i\":84}]}]}]},41],\"q\":29,\"r\":[{\"a\":[{\"s\":[{\"t\":6}],\"t\":[{\".\":32,\"i\":[{\"c\":32}]}]}],\"e\":[{\"a\":[{\"t\":11}],\"d\":32,\"t\":[{\"a\":47}],\"v\":0}],\"i\":[{\"f\":5,\"n\":21,\"s\":17,\"t\":[{\"i\":[{\"e\":11},32]}]},8],\"o\":[{\"p\":[{\"l\":0,\"o\":6}],\"s\":[{\"e\":17}],\"c\":[{\"o\":[{\"d\":197}]}],\"e\":[{\"c\":[{\"o\":148}]}]}],\"u\":[{\"d\":0}]}],\"s\":66,\"t\":[{\"a\":[{\"b\":0,\"n\":[{\"g\":4,\"t\":19}]}],\"e\":[{\"r\":23},24],\"i\":[{\"c\":[{\"u\":21}],\"m\":[{\"i\":12}]}],\"u\":[{\"r\":0}],\"w\":21,\"r\":[{\"o\":[{\"m\":[{\"e\":[{\"c\":198}]}]}]}]},42],\"u\":[{\"d\":5,\"f\":21,\"i\":[{\"t\":[{\"y\":4}]},21],\"l\":[{\"i\":32,\"t\":[{\"i\":[{\"s\":0}],\"u\":27}]}],\"m\":[{\"a\":9,\"e\":23,\"i\":1}],\"n\":27,\"p\":[{\"i\":3,\"y\":4}],\"r\":[{\"a\":[{\"b\":67,\"n\":[{\"c\":[{\"e\":199}]}]}],\"i\":[{\"a\":4}]}],\"s\":[{\"s\":[{\"i\":17}]},41],\"t\":[{\"i\":[{\"e\":1,\"v\":56}],\"r\":18},68]}],\"y\":41,\"z\":[{\"e\":0}]}],\"d\":[{\"a\":[{\".\":32,\"b\":70,\"c\":[{\"h\":17}],\"f\":18,\"g\":25,\"m\":71,\"n\":[{\"g\":11}],\"r\":[{\"d\":6,\"k\":6,\"y\":18}],\"t\":[{\"i\":[{\"v\":18}],\"o\":18,\"a\":[{\"b\":137}]},27],\"v\":[{\"e\":5},53],\"y\":32,\"l\":[{\"o\":[{\"n\":[{\"e\":48}]}]}]},69],\"b\":29,\"c\":19,\"d\":[{\"a\":[{\"b\":20}],\"i\":[{\"b\":94}]},72],\"e\":[{\".\":25,\"a\":[{\"f\":6,\"l\":[{\"s\":[{\".\":1}]}]}],\"b\":[{\"i\":[{\"t\":5}],\"o\":[{\"n\":1}]}],\"c\":[{\"a\":[{\"n\":36}],\"i\":[{\"l\":1}],\"o\":[{\"m\":4}],\"l\":[{\"a\":[{\"r\":200}],\"i\":[{\"n\":[{\"a\":64}]}]}]}],\"d\":42,\"e\":[{\".\":18}],\"i\":[{\"f\":4}],\"l\":[{\"i\":[{\"e\":17,\"q\":16}],\"o\":4}],\"m\":[{\".\":32,\"i\":[{\"c\":[{\".\":5},27],\"l\":4}],\"o\":[{\"n\":[{\"s\":1}],\"r\":7,\"s\":9}]},21],\"n\":[{\"a\":[{\"r\":1}],\"o\":3,\"t\":[{\"i\":[{\"f\":7}]}],\"u\":3},41],\"p\":[{\"a\":3,\"i\":17,\"u\":9},2],\"q\":23,\"r\":[{\"h\":21,\"m\":32,\"n\":[{\"i\":[{\"z\":6}]}],\"s\":5}],\"s\":[{\".\":24,\"c\":2,\"o\":64,\"t\":[{\"i\":11,\"r\":3}],\"u\":1,\"i\":[{\"c\":11}]},8],\"t\":[{\"o\":9,\"i\":[{\"c\":9}]},2],\"v\":[{\"i\":[{\"l\":11}]},2],\"y\":18,\"f\":[{\"i\":[{\"n\":[{\"i\":[{\"t\":[{\"i\":201}]}]}]}]}]}],\"f\":43,\"g\":[{\"a\":21,\"e\":[{\"t\":73}],\"i\":2,\"y\":24}],\"h\":74,\"i\":[{\".\":32,\"a\":[{\"b\":5},75],\"c\":[{\"a\":[{\"m\":1,\"i\":[{\"d\":15}]}],\"e\":21,\"t\":27}],\"d\":27,\"e\":[{\"n\":76}],\"f\":[{\"f\":[{\"r\":[{\"a\":5}]}]},29],\"g\":[{\"e\":3}],\"l\":[{\"a\":[{\"t\":[{\"o\":1}]}]}],\"n\":[{\"a\":41,\"e\":[{\".\":27}],\"i\":[{\"z\":4},32]},29],\"o\":[{\"g\":5},41],\"p\":[{\"l\":1}],\"r\":[{\"e\":[{\"n\":9,\"r\":9},2],\"t\":[{\"i\":6}]},8],\"s\":[{\"i\":32,\"t\":77},15],\"t\":[{\"i\":24}],\"v\":78,\"m\":[{\"e\":[{\"t\":[{\"h\":[{\"y\":141}]}]}]}]}],\"j\":29,\"k\":79,\"l\":[{\"a\":56,\"e\":[{\".\":27,\"d\":27,\"s\":[{\".\":27,\"s\":18}],\"a\":[{\"d\":42}]}],\"o\":48,\"u\":56,\"y\":25,\"i\":[{\"e\":202}]}],\"m\":29,\"n\":80,\"o\":[{\".\":27,\"d\":[{\"e\":4}],\"e\":32,\"f\":57,\"g\":21,\"l\":[{\"a\":1,\"i\":17,\"o\":[{\"r\":4}]}],\"m\":[{\"i\":[{\"z\":5}]}],\"n\":[{\"a\":[{\"t\":3}],\"i\":17}],\"o\":[{\"d\":11}],\"p\":[{\"p\":0}],\"r\":21,\"s\":27,\"u\":[{\"t\":56}],\"v\":1,\"x\":27,\"w\":[{\"o\":[{\"r\":[{\"d\":203}]}]}]},41],\"p\":29,\"r\":[{\"a\":[{\"g\":[{\"o\":[{\"n\":6}]}],\"i\":18}],\"e\":[{\"a\":[{\"r\":6}],\"n\":[{\"a\":[{\"l\":204}]},32]},0],\"i\":[{\"b\":0,\"l\":17,\"f\":[{\"t\":[{\"a\":189}]}],\"p\":[{\"l\":[{\"e\":[{\"g\":205}]}]}]}],\"o\":[{\"p\":0,\"w\":18,\"m\":[{\"e\":[{\"d\":206}]}]}],\"u\":[{\"p\":[{\"l\":[{\"i\":32}]}]}],\"y\":18},41],\"s\":[{\"p\":1,\"w\":21,\"y\":21},81],\"t\":[{\"h\":24,\"a\":[{\"b\":23}]}],\"u\":[{\"a\":[{\"l\":[{\".\":9}]},82],\"c\":[{\"a\":29,\"e\":[{\"r\":5}],\"t\":[{\".\":18,\"s\":18}]},9],\"e\":[{\"l\":4}],\"g\":1,\"l\":[{\"e\":23}],\"m\":[{\"b\":[{\"e\":0}]}],\"n\":1,\"p\":[{\"e\":1},18],\"o\":[{\"p\":[{\"o\":[{\"l\":207}]}]}]},41],\"v\":29,\"w\":29,\"y\":[{\"n\":32,\"s\":[{\"e\":1,\"p\":5}]},24]}],\"e\":[{\"a\":[{\"b\":72,\"c\":[{\"t\":23}],\"d\":[{\"i\":[{\"e\":5}]},15],\"g\":[{\"e\":[{\"r\":4},1]}],\"l\":[{\"e\":[{\"r\":5}],\"o\":[{\"u\":11}]},1],\"m\":[{\"e\":[{\"r\":11}]}],\"n\":[{\"d\":19,\"i\":[{\"e\":[{\"s\":111}]}]}],\"r\":[{\"a\":11,\"c\":0,\"e\":[{\"s\":5}],\"i\":[{\"c\":0,\"l\":0}],\"k\":5,\"t\":[{\"e\":12},8]}],\"s\":[{\"p\":4,\"s\":23,\"t\":12}],\"t\":[{\"e\":[{\"n\":5}],\"h\":[{\"i\":12}],\"i\":[{\"f\":19}],\"u\":83},9],\"v\":[{\"e\":[{\"n\":11}],\"i\":5,\"o\":5},9]}],\"b\":[{\"e\":[{\"l\":[{\".\":21,\"s\":21}],\"n\":21}],\"i\":[{\"t\":21}],\"r\":23},42],\"c\":[{\"a\":[{\"d\":21,\"n\":[{\"c\":6}]}],\"c\":[{\"a\":6}],\"e\":[{\"s\":[{\"s\":[{\"a\":4}]}]},29],\"i\":[{\"b\":21,\"f\":[{\"i\":[{\"c\":[{\"a\":[{\"t\":4}]}],\"e\":4}],\"y\":4}],\"m\":3,\"t\":[{\"e\":19},0]},9],\"l\":[{\"a\":[{\"m\":21}],\"u\":[{\"s\":21}]}],\"o\":[{\"l\":24,\"m\":[{\"m\":21,\"p\":[{\"e\":21}]}],\"n\":[{\"c\":21}],\"r\":[{\"a\":3,\"o\":5},24]}],\"r\":[{\"e\":[{\"m\":21}]},29],\"t\":[{\"a\":[{\"n\":1}],\"e\":1}],\"u\":[{\"l\":[{\"a\":3},21]},29],\"h\":[{\"a\":[{\"s\":23}]}]}],\"d\":[{\"a\":37,\"d\":61,\"e\":[{\"r\":34,\"s\":0}],\"i\":[{\"a\":23,\"b\":3,\"c\":[{\"a\":3}],\"m\":3,\"t\":2,\"z\":5},18],\"o\":[{\"l\":21,\"n\":84},18],\"r\":[{\"i\":21}],\"u\":[{\"l\":[{\"o\":4,\"i\":[{\"n\":[{\"g\":2}]}]},21]}],\"g\":[{\"l\":15}]}],\"e\":[{\"c\":9,\"d\":[{\"i\":11}],\"f\":9,\"l\":[{\"i\":11,\"y\":1}],\"m\":9,\"n\":[{\"a\":1}],\"p\":85,\"s\":[{\"t\":17},86],\"t\":[{\"y\":1}],\"x\":19}],\"f\":[{\"e\":[{\"r\":[{\"e\":83}]}],\"f\":41,\"i\":[{\"c\":[{\"i\":32},21],\"l\":17,\"n\":[{\"e\":23,\"i\":[{\"t\":[{\"e\":20}]}]}],\"t\":27}],\"o\":[{\"r\":[{\"e\":[{\"s\":6}]}]}],\"u\":[{\"s\":[{\"e\":[{\".\":21}]}]}]},29],\"g\":[{\"a\":[{\"l\":18}],\"e\":[{\"r\":17}],\"i\":[{\"b\":4,\"c\":1,\"n\":[{\"g\":4}],\"t\":87}],\"n\":4,\"o\":[{\".\":21,\"s\":21}],\"u\":[{\"l\":2,\"r\":19}],\"y\":32}],\"h\":[{\"e\":[{\"r\":17}]},72],\"i\":[{\"c\":19,\"d\":4,\"g\":[{\"l\":4},8],\"m\":[{\"b\":23}],\"n\":[{\"f\":23,\"g\":29,\"s\":[{\"t\":19}]}],\"r\":[{\"d\":0}],\"t\":[{\"e\":11,\"h\":3,\"y\":19}]},9],\"j\":[{\"u\":[{\"d\":[{\"i\":4},21]}]},29],\"k\":[{\"i\":[{\"n\":0}],\"l\":[{\"a\":1}]}],\"l\":[{\"a\":[{\".\":21,\"c\":21,\"n\":[{\"d\":17}],\"t\":[{\"i\":[{\"v\":4}]}],\"w\":21,\"x\":[{\"a\":36}]},29],\"e\":[{\"a\":23,\"b\":[{\"r\":[{\"a\":4}]}],\"c\":32,\"d\":21,\"g\":[{\"a\":3}],\"n\":19,\"r\":34,\"s\":29}],\"f\":9,\"i\":[{\"b\":[{\"e\":23}],\"c\":[{\".\":33,\"a\":3}],\"e\":[{\"r\":23}],\"g\":[{\"i\":[{\"b\":4}]}],\"m\":19,\"n\":[{\"g\":83}],\"o\":23,\"s\":[{\"h\":4},24],\"v\":88,\"t\":[{\"i\":[{\"s\":208}]}]},9],\"l\":[{\"a\":[{\"b\":1},18],\"o\":17}],\"o\":[{\"c\":19,\"g\":4,\"p\":[{\".\":3}],\"a\":29}],\"s\":[{\"h\":9}],\"t\":[{\"a\":1}],\"u\":[{\"d\":19,\"g\":4}]}],\"m\":[{\"a\":[{\"c\":21,\"g\":21,\"n\":[{\"a\":4},19]}],\"b\":4,\"e\":[{\"l\":24,\"t\":21},29],\"i\":[{\"c\":[{\"a\":3}],\"e\":0,\"g\":[{\"r\":[{\"a\":4}]}],\"n\":[{\"e\":4,\"i\":35},89],\"s\":[{\"h\":4,\"s\":19},21],\"z\":3}],\"n\":[{\"i\":[{\"z\":32}]}],\"o\":[{\"g\":0,\"n\":[{\"i\":[{\"o\":7}]}]}],\"p\":[{\"i\":3}],\"u\":[{\"l\":[{\"a\":4},21],\"n\":11}],\"y\":23}],\"n\":[{\"a\":[{\"m\":[{\"o\":4}],\"n\":[{\"t\":21}]}],\"c\":[{\"h\":[{\"e\":[{\"r\":17}]}]}],\"d\":[{\"i\":[{\"c\":3,\"x\":2}]}],\"e\":[{\"a\":19,\"e\":19,\"m\":3,\"r\":[{\"o\":4}],\"s\":[{\"i\":4,\"t\":4}],\"t\":[{\"r\":3}],\"w\":23}],\"i\":[{\"c\":[{\"s\":4}],\"e\":19,\"l\":19,\"o\":23,\"s\":[{\"h\":3}],\"t\":3,\"u\":19,\"z\":32}],\"n\":18,\"o\":[{\"g\":0,\"s\":21,\"v\":3},18],\"s\":[{\"w\":1}],\"t\":[{\"a\":[{\"g\":[{\"e\":5}]}],\"h\":[{\"e\":[{\"s\":18}]}]}],\"u\":[{\"a\":3,\"f\":4}],\"y\":[{\".\":23}],\"z\":61}],\"o\":[{\"f\":19,\"g\":[{\"r\":[{\"a\":[{\"p\":3}]}]},9],\"i\":90,\"l\":23,\"p\":[{\"a\":[{\"r\":11}]}],\"r\":[{\"e\":3,\"o\":[{\"l\":4}]},29],\"s\":0,\"t\":[{\"o\":1},21],\"u\":[{\"t\":19}],\"w\":19}],\"p\":[{\"a\":[{\"i\":23,\"n\":[{\"c\":4}]},24],\"e\":[{\"l\":19,\"n\":[{\"t\":23}],\"t\":[{\"i\":[{\"t\":[{\"i\":[{\"o\":4}]}]}]}]}],\"h\":[{\"e\":17}],\"l\":[{\"i\":21}],\"o\":29,\"r\":[{\"e\":[{\"c\":[{\"a\":4},21],\"d\":21,\"h\":3}],\"o\":[{\"b\":21},23]}],\"s\":[{\"h\":1}],\"t\":[{\"i\":[{\"b\":13}]}],\"u\":[{\"t\":[{\"a\":4},21]}],\"i\":[{\"n\":[{\"e\":[{\"p\":[{\"h\":209}]}]}]}]}],\"q\":[{\"u\":[{\"i\":[{\"l\":12,\"s\":91}]}]},29],\"r\":[{\"a\":[{\"b\":0,\"n\":[{\"d\":18}],\"r\":3,\"t\":[{\"i\":[{\".\":18}]}]},2],\"b\":[{\"l\":1},25],\"c\":[{\"h\":[{\"e\":1},3]}],\"e\":[{\".\":25,\"a\":[{\"l\":23}],\"c\":[{\"o\":5}],\"i\":[{\"n\":11}],\"l\":[{\".\":4}],\"m\":[{\"o\":3}],\"n\":[{\"a\":4,\"c\":[{\"e\":4}],\"e\":18,\"t\":3}],\"q\":0,\"s\":[{\"s\":4,\"t\":3}],\"t\":17}],\"h\":2,\"i\":[{\"a\":[{\"n\":[{\".\":210}]},92],\"c\":[{\"k\":32}],\"e\":[{\"n\":23,\"r\":0}],\"n\":[{\"e\":3}],\"o\":29,\"t\":18,\"u\":1,\"v\":[{\"a\":21},0]},2],\"m\":93,\"n\":[{\"i\":[{\"s\":1,\"t\":18,\"z\":32}],\"o\":3}],\"o\":[{\"b\":4,\"c\":19,\"r\":0,\"u\":2},25],\"s\":[{\"e\":[{\"t\":3}]},2],\"t\":[{\"e\":[{\"r\":11}],\"l\":18,\"w\":3}],\"u\":[{\"t\":0},18],\"w\":[{\"a\":[{\"u\":32}]}]}],\"s\":[{\"a\":[{\"g\":[{\"e\":[{\".\":21,\"s\":21}]}]},72],\"c\":[{\"a\":[{\"n\":4},24],\"r\":23,\"u\":4},9],\"e\":[{\"c\":[{\"r\":4},24],\"n\":[{\"c\":4}],\"r\":[{\"t\":[{\".\":21,\"s\":21}],\"v\":[{\"a\":21}]}]},74],\"h\":[{\"a\":23,\"e\":[{\"n\":5}]},18],\"i\":[{\"c\":24,\"d\":[{\"e\":[{\"n\":4}]},24],\"g\":[{\"n\":[{\"a\":4}]}],\"m\":94,\"n\":95,\"s\":[{\"t\":[{\"e\":17}]}],\"u\":0},29],\"k\":[{\"i\":[{\"n\":19}]}],\"m\":[{\"i\":1}],\"o\":[{\"l\":[{\"u\":3},24],\"n\":[{\"a\":4},24]}],\"p\":[{\"e\":[{\"r\":3}],\"i\":[{\"r\":[{\"a\":4}]}],\"r\":[{\"e\":1}],\"a\":[{\"c\":[{\"i\":211}]}]},29],\"s\":[{\"i\":[{\"b\":96}]},25],\"t\":[{\"a\":[{\"n\":36}],\"i\":[{\"g\":3,\"m\":4}],\"o\":[{\"n\":23},44],\"r\":[{\"o\":19,\"u\":[{\"c\":10}]},25]}],\"u\":[{\"r\":[{\"r\":4},24]}],\"w\":1}],\"t\":[{\"a\":[{\"b\":0}],\"e\":[{\"n\":[{\"d\":17}],\"o\":23}],\"h\":[{\"o\":[{\"d\":54}],\"y\":[{\"l\":[{\"e\":[{\"n\":[{\"e\":162}]}]}]}]}],\"i\":[{\"c\":2,\"d\":[{\"e\":19}],\"n\":[{\"o\":0},17],\"r\":19,\"t\":[{\"i\":[{\"o\":19,\"v\":4}]}]}],\"n\":18,\"o\":[{\"n\":[{\"a\":4}]}],\"r\":[{\"a\":23,\"e\":23,\"i\":[{\"c\":3,\"f\":4}],\"o\":[{\"g\":3,\"s\":4}]}],\"u\":[{\"a\":3}],\"y\":[{\"m\":4}],\"z\":4}],\"u\":[{\"n\":19,\"p\":23,\"r\":[{\"o\":3}],\"s\":0,\"t\":[{\"e\":17,\"i\":[{\"l\":6}],\"r\":4}],\"c\":[{\"l\":[{\"i\":[{\"d\":212}]}]}]},18],\"v\":[{\"a\":[{\"p\":97,\"s\":[{\"t\":4},24]}],\"e\":[{\"a\":19,\"l\":[{\"l\":3,\"o\":12}],\"n\":[{\"g\":19,\"i\":17}],\"r\":[{\"b\":19},2]}],\"i\":[{\"d\":3,\"l\":0,\"n\":21,\"v\":0},29],\"o\":[{\"c\":19}],\"u\":19}],\"w\":[{\"a\":[{\"g\":21},29],\"e\":[{\"e\":19}],\"h\":23,\"i\":[{\"l\":6,\"n\":[{\"g\":3}],\"t\":23}]}],\"x\":[{\"p\":41}],\"y\":[{\"c\":32,\"e\":[{\".\":32}],\"s\":0}]}],\"f\":[{\"a\":[{\"b\":[{\"l\":3,\"r\":11}],\"c\":[{\"e\":1}],\"g\":18,\"i\":[{\"n\":17}],\"l\":[{\"l\":[{\"e\":6}]}],\"m\":[{\"a\":26,\"i\":[{\"s\":5}]}],\"r\":[{\"t\":[{\"h\":5}]},32],\"t\":[{\"a\":3,\"h\":[{\"e\":3}],\"o\":18}],\"u\":[{\"l\":[{\"t\":7}]}]},41],\"b\":56,\"d\":18,\"e\":[{\".\":18,\"a\":[{\"s\":17,\"t\":[{\"h\":54}]}],\"b\":[{\"r\":[{\"u\":[{\"a\":15}]}]},1],\"c\":[{\"a\":18,\"t\":32}],\"d\":25,\"l\":[{\"i\":3}],\"m\":[{\"o\":1}],\"n\":[{\"d\":[{\"e\":6},8]}],\"r\":[{\"r\":32,\"m\":[{\"i\":[{\"o\":213}]}]},15],\"v\":0}],\"f\":[{\"e\":[{\"s\":21}],\"i\":[{\"e\":21,\"n\":[{\".\":19}],\"s\":94}],\"l\":[{\"y\":21}],\"y\":24},43],\"h\":18,\"i\":[{\"a\":3,\"c\":[{\".\":48,\"a\":[{\"l\":47,\"n\":23,\"t\":[{\"e\":18}]}],\"e\":[{\"n\":23,\"r\":3}],\"i\":[{\"a\":32,\"e\":32},0],\"s\":18,\"u\":3,\"h\":27}],\"d\":[{\"e\":[{\"l\":4}]}],\"g\":[{\"h\":[{\"t\":7}]}],\"l\":[{\"i\":5,\"l\":[{\"i\":[{\"n\":6}]}],\"y\":18}],\"n\":[{\"a\":32,\"d\":97,\"e\":9,\"g\":98,\"n\":0},25],\"s\":[{\"t\":[{\"i\":0}]}],\"t\":[{\"t\":[{\"e\":[{\"d\":[{\".\":5}]}]}]}]},41],\"l\":[{\"e\":[{\"s\":[{\"s\":19}]}],\"i\":[{\"n\":17}],\"o\":[{\"r\":[{\"e\":11}],\"w\":[{\"e\":[{\"r\":[{\".\":84}]}]}]}],\"y\":100,\"a\":[{\"g\":[{\"e\":[{\"l\":214}]}]}],\"u\":[{\"o\":[{\"r\":27}]}]},99],\"m\":18,\"n\":18,\"o\":[{\"n\":[{\"d\":[{\"e\":0}],\"t\":0},32],\"r\":[{\"a\":[{\"t\":4,\"y\":5}],\"e\":[{\"t\":6}],\"i\":0,\"t\":[{\"a\":6}]},9],\"s\":5},41],\"p\":56,\"r\":[{\"a\":[{\"t\":0}],\"e\":[{\"a\":19,\"s\":[{\"c\":6}]}],\"i\":[{\"l\":17},8],\"o\":[{\"l\":6}]}],\"s\":48,\"t\":[{\"o\":21,\"y\":24},25],\"u\":[{\"e\":[{\"l\":4}],\"g\":18,\"m\":[{\"i\":[{\"n\":1}]}],\"n\":[{\"e\":4}],\"r\":[{\"i\":3}],\"s\":[{\"i\":17,\"s\":0}],\"t\":[{\"a\":18}]},27],\"y\":41}],\"g\":[{\"a\":[{\"f\":0,\"l\":[{\".\":32,\"i\":27,\"o\":3}],\"m\":[{\"e\":[{\"t\":4}],\"o\":19},25],\"n\":[{\"i\":[{\"s\":5,\"z\":[{\"a\":6},3]}],\"o\":18}],\"r\":[{\"n\":67}],\"s\":[{\"s\":17}],\"t\":[{\"h\":12,\"i\":[{\"v\":18}]}],\"z\":18},41],\"b\":23,\"d\":1,\"e\":[{\".\":25,\"d\":25,\"e\":[{\"z\":17}],\"l\":[{\"i\":[{\"n\":0,\"s\":4,\"z\":4}],\"y\":18}],\"n\":[{\"a\":[{\"t\":1}],\"i\":[{\"z\":4}],\"o\":18,\"y\":18,\"c\":[{\"y\":[{\".\":8}]}]},41],\"o\":[{\"m\":3,\"d\":215},41],\"r\":[{\"y\":21}],\"s\":[{\"i\":32}],\"t\":[{\"h\":6,\"o\":18,\"y\":1,\"i\":[{\"c\":[{\".\":8}]}]}],\"v\":1}],\"g\":[{\"e\":[{\"r\":23},24],\"l\":[{\"u\":6}],\"o\":0},101],\"h\":[{\"i\":[{\"n\":3}],\"o\":[{\"u\":[{\"t\":4}]}],\"t\":[{\"o\":1,\"w\":[{\"e\":15}]}]}],\"i\":[{\".\":32,\"a\":[{\"r\":5},102],\"c\":[{\"i\":[{\"a\":32}],\"o\":21},29],\"e\":[{\"n\":6,\"s\":[{\".\":32}]}],\"l\":0,\"m\":[{\"e\":[{\"n\":23}]}],\"n\":[{\".\":68,\"g\":[{\"e\":5}],\"s\":103}],\"o\":32,\"r\":[{\"l\":0},27],\"s\":[{\"l\":23}],\"u\":1,\"v\":32,\"z\":27}],\"l\":[{\"a\":[{\"d\":[{\"i\":6}],\"s\":32},0],\"e\":[{\"a\":[{\"d\":29}]},41],\"i\":[{\"b\":0,\"g\":23,\"s\":[{\"h\":43}]}],\"o\":[{\"r\":11,\"b\":[{\"i\":[{\"n\":106}]}]},27]},9],\"m\":[{\"y\":21},29],\"n\":[{\"a\":[{\".\":21,\"c\":69},1],\"e\":[{\"t\":[{\"t\":17,\"i\":[{\"s\":[{\"m\":137}]}]}]}],\"i\":[{\"n\":24,\"o\":21},29],\"o\":[{\"n\":21,\"m\":[{\"o\":5}],\"r\":[{\".\":216,\"e\":[{\"s\":[{\"p\":24}]}]}]},29]}],\"o\":[{\".\":27,\"b\":5,\"e\":32,\"g\":104,\"i\":[{\"s\":3}],\"n\":[{\"a\":105,\"d\":[{\"o\":7}],\"i\":[{\"z\":[{\"a\":217}]},3]},8],\"o\":32,\"r\":[{\"i\":[{\"z\":4}],\"o\":[{\"u\":5}]}],\"s\":[{\".\":32}],\"v\":15},41],\"p\":23,\"r\":[{\"a\":[{\"d\":[{\"a\":18}],\"i\":21,\"n\":84,\"p\":[{\"h\":[{\".\":32,\"e\":[{\"r\":[{\".\":7},19]}],\"i\":[{\"c\":32}],\"y\":18}]}],\"y\":18}],\"e\":[{\"n\":0,\"s\":[{\"s\":[{\".\":18}]}]}],\"i\":[{\"t\":18,\"e\":[{\"v\":213}]}],\"o\":21,\"u\":[{\"f\":17}]},41],\"s\":[{\"t\":[{\"e\":19}]},9],\"t\":[{\"h\":11}],\"u\":[{\"a\":[{\"r\":[{\"d\":27}]},1],\"e\":25,\"i\":[{\"t\":106}],\"n\":27,\"s\":27,\"t\":[{\"a\":[{\"n\":29}]},26]}],\"w\":23,\"y\":[{\"n\":107,\"r\":[{\"a\":4}]},41]}],\"h\":[{\"a\":[{\"b\":[{\"l\":73}],\"c\":[{\"h\":17}],\"e\":[{\"m\":0,\"t\":0}],\"g\":[{\"u\":19}],\"l\":[{\"a\":[{\"m\":12},3]}],\"m\":1,\"n\":[{\"c\":[{\"i\":0,\"y\":0}],\"d\":[{\".\":32}],\"g\":[{\"e\":[{\"r\":6}],\"o\":6},0],\"i\":[{\"z\":108}],\"k\":0,\"t\":[{\"e\":0}]}],\"p\":[{\"l\":11,\"t\":5,\"a\":[{\"r\":[{\"r\":218}]}]}],\"r\":[{\"a\":[{\"n\":3,\"s\":4}],\"d\":[{\"e\":12},8],\"l\":[{\"e\":0}],\"p\":[{\"e\":[{\"n\":6}]}],\"t\":[{\"e\":[{\"r\":5}]}]}],\"s\":[{\"s\":5}],\"u\":[{\"n\":17}],\"z\":[{\"a\":11},32],\"i\":[{\"r\":[{\"s\":137}]}],\"t\":[{\"c\":[{\"h\":213}]}]}],\"b\":29,\"e\":[{\"a\":[{\"d\":41,\"r\":27}],\"c\":[{\"a\":[{\"n\":1,\"t\":19}]}],\"d\":[{\"o\":13},21],\"l\":[{\"i\":93,\"l\":[{\"i\":[{\"s\":0}],\"y\":0}],\"o\":19}],\"m\":[{\"p\":0}],\"n\":[{\"a\":[{\"t\":5},17]},9],\"o\":[{\"r\":5}],\"p\":5,\"r\":[{\"a\":[{\"p\":12},21],\"b\":[{\"a\":0}],\"e\":[{\"a\":6}],\"n\":23,\"o\":[{\"u\":19}],\"y\":23}],\"s\":[{\"p\":64},29],\"t\":[{\"e\":[{\"d\":0}]},1],\"u\":0,\"x\":[{\"a\":168}]}],\"f\":29,\"h\":29,\"i\":[{\"a\":[{\"n\":4}],\"c\":[{\"o\":1}],\"g\":[{\"h\":6}],\"l\":109,\"m\":[{\"e\":[{\"r\":36}]}],\"n\":[{\"a\":21}],\"o\":[{\"n\":[{\"e\":17}]}],\"p\":[{\"e\":[{\"l\":[{\"a\":219}]}]},1],\"r\":[{\"l\":0,\"o\":3,\"p\":0,\"r\":0}],\"s\":[{\"e\":[{\"l\":11}],\"s\":0}],\"t\":[{\"h\":[{\"e\":[{\"r\":6}]}],\"e\":[{\"s\":[{\"i\":[{\"d\":12}]}]}]}],\"v\":9}],\"k\":18,\"l\":[{\"a\":[{\"n\":17}],\"o\":[{\"r\":[{\"i\":11}]},24]},80],\"m\":[{\"e\":[{\"t\":17}]},43],\"n\":[{\"a\":[{\"u\":[{\"z\":12}]}]},42],\"o\":[{\"d\":[{\"i\":[{\"z\":19}],\"s\":19}],\"g\":[{\"e\":17},1],\"l\":[{\"a\":[{\"r\":5}],\"e\":110}],\"m\":[{\"a\":1,\"e\":12}],\"n\":[{\"a\":0,\"y\":4}],\"o\":[{\"d\":27,\"n\":17}],\"r\":[{\"a\":[{\"t\":5}],\"i\":[{\"s\":4,\"c\":[{\".\":187}]}],\"t\":[{\"e\":12}],\"u\":4}],\"s\":[{\"e\":[{\"n\":4},0],\"p\":15}],\"u\":[{\"s\":[{\"e\":54},41]}],\"v\":[{\"e\":[{\"l\":5}]}]}],\"p\":56,\"r\":[{\"e\":[{\"e\":6}],\"o\":[{\"n\":[{\"i\":[{\"z\":5}]}],\"p\":[{\"o\":11}]}]},26],\"s\":[{\"h\":21},101],\"t\":[{\"a\":[{\"r\":21}],\"e\":[{\"n\":2,\"s\":4,\"o\":[{\"u\":216}]}],\"y\":21}],\"u\":[{\"g\":1,\"m\":[{\"i\":[{\"n\":1}]}],\"n\":[{\"k\":[{\"e\":5}],\"t\":0}],\"s\":[{\"t\":14}],\"t\":1}],\"w\":[{\"a\":[{\"r\":[{\"t\":21}]}]},29],\"y\":[{\"p\":[{\"e\":3,\"h\":3,\"o\":[{\"t\":[{\"h\":[{\"a\":137}]}]}]}],\"s\":9}]}],\"i\":[{\"a\":[{\"l\":24,\"m\":[{\"e\":[{\"t\":[{\"e\":5}]}]},0],\"n\":[{\"c\":18,\"i\":11,\"t\":46},24],\"p\":[{\"e\":4}],\"s\":[{\"s\":17}],\"t\":[{\"i\":[{\"v\":21}],\"r\":[{\"i\":[{\"c\":1}]}],\"u\":21}]},42],\"b\":[{\"e\":[{\"r\":[{\"a\":3,\"t\":4}]},0],\"i\":[{\"a\":4,\"n\":3,\"t\":[{\".\":4,\"e\":4}]}],\"l\":[{\"i\":3},29],\"o\":19,\"r\":[{\"i\":94},29],\"u\":[{\"n\":19}]}],\"c\":[{\"a\":[{\"m\":18,\"p\":32,\"r\":[{\".\":21,\"a\":21},18],\"s\":6,\"y\":21}],\"c\":[{\"u\":17}],\"e\":[{\"o\":18}],\"h\":18,\"i\":[{\"d\":19,\"n\":[{\"a\":4}],\"p\":[{\"a\":3},24]},25],\"l\":[{\"y\":21}],\"o\":[{\"c\":94}],\"r\":[{\"a\":32,\"y\":21},43],\"t\":[{\"e\":1,\"u\":[{\"a\":111},84]}],\"u\":[{\"l\":[{\"a\":3}],\"m\":1,\"o\":4,\"r\":23}]}],\"d\":[{\"a\":[{\"i\":21,\"n\":[{\"c\":4}]}],\"d\":4,\"e\":[{\"a\":[{\"l\":11}],\"s\":0}],\"i\":[{\"a\":[{\"n\":4,\"r\":0}],\"e\":19,\"o\":[{\"u\":5,\"s\":1},3],\"t\":2,\"u\":4},24],\"l\":[{\"e\":23}],\"o\":[{\"m\":21,\"w\":3}],\"r\":21,\"u\":[{\"o\":4},24]},25],\"e\":[{\"d\":[{\"e\":0}],\"g\":[{\"a\":113}],\"l\":[{\"d\":12}],\"n\":[{\"a\":67,\"e\":0,\"n\":19,\"t\":[{\"i\":23}]}],\"r\":[{\".\":29}],\"s\":[{\"c\":23,\"t\":29}],\"t\":23},112],\"f\":[{\".\":18,\"e\":[{\"r\":[{\"o\":4}]}],\"f\":[{\"e\":[{\"n\":5}],\"r\":1}],\"i\":[{\"c\":[{\".\":18}],\"e\":23}],\"l\":23,\"t\":18,\"a\":[{\"c\":[{\"e\":[{\"t\":137}]}]}]}],\"g\":[{\"a\":[{\"b\":5}],\"e\":[{\"r\":[{\"a\":3}]}],\"h\":[{\"t\":[{\"i\":12}]}],\"i\":[{\"b\":23,\"l\":3,\"n\":3,\"t\":3},18],\"l\":28,\"o\":[{\"r\":3,\"t\":4},24],\"r\":[{\"e\":19}],\"u\":[{\"i\":5,\"r\":2}],\"n\":[{\"i\":[{\"t\":[{\"e\":[{\"r\":213}]},0]}]}]},25],\"h\":23,\"i\":114,\"j\":[{\"k\":21},23],\"k\":18,\"l\":[{\"a\":[{\"b\":93,\"d\":[{\"e\":21}],\"m\":94,\"r\":[{\"a\":5}]},29],\"e\":[{\"g\":23,\"r\":2,\"v\":17}],\"f\":4,\"i\":[{\"a\":3,\"b\":9,\"o\":3,\"s\":[{\"t\":1}],\"t\":25,\"z\":9},2],\"l\":[{\"a\":[{\"b\":5}]}],\"n\":18,\"o\":[{\"q\":3}],\"t\":[{\"y\":1}],\"u\":[{\"r\":4}],\"v\":3}],\"m\":[{\"a\":[{\"g\":[{\"e\":3},21],\"r\":[{\"y\":5}]}],\"e\":[{\"n\":[{\"t\":[{\"a\":[{\"r\":10}]}]}],\"t\":18}],\"i\":[{\"d\":[{\"a\":4}],\"l\":[{\"e\":5}],\"n\":[{\"i\":19}],\"t\":18},2],\"n\":[{\"i\":1}],\"o\":[{\"n\":23}],\"u\":[{\"l\":[{\"a\":3}]},24],\"p\":[{\"e\":[{\"d\":[{\"a\":201}]}]}]}],\"n\":[{\".\":25,\"a\":[{\"u\":83,\"v\":18}],\"c\":[{\"e\":[{\"l\":36,\"r\":3}]}],\"d\":[{\"l\":[{\"i\":[{\"n\":[{\"g\":4}]}]}]},18],\"e\":[{\"e\":23,\"r\":[{\"a\":[{\"r\":17}]}],\"s\":[{\"s\":19}]},25],\"g\":[{\"a\":18,\"e\":[{\"n\":4},18],\"i\":18,\"l\":[{\"i\":[{\"n\":[{\"g\":4}]}]}],\"o\":18,\"u\":18}],\"i\":[{\".\":19,\"a\":21,\"o\":3,\"s\":2,\"t\":[{\"e\":[{\".\":19,\"l\":[{\"y\":[{\".\":19}]}]}],\"i\":[{\"o\":32}],\"y\":3}]},25],\"k\":18,\"l\":18,\"n\":25,\"o\":[{\"c\":90,\"s\":0,\"t\":21},42],\"s\":[{\"e\":3,\"u\":[{\"r\":[{\"a\":7}]}]},25],\"t\":[{\".\":25,\"h\":112}],\"u\":[{\"s\":19},2],\"y\":18,\"f\":[{\"r\":[{\"a\":[{\"s\":220}]}]}]}],\"o\":[{\".\":18,\"g\":[{\"e\":17,\"r\":9}],\"l\":29,\"m\":1,\"n\":[{\"a\":[{\"t\":11}],\"e\":[{\"r\":[{\"y\":0}]}],\"i\":11}],\"p\":[{\"h\":4}],\"r\":[{\"i\":11}],\"s\":21,\"t\":[{\"h\":4,\"i\":19,\"o\":1}],\"u\":[{\"r\":21}]},25],\"p\":[{\"e\":0,\"h\":[{\"r\":[{\"a\":[{\"s\":115}]}]}],\"i\":[{\"c\":1},3],\"r\":[{\"e\":96}],\"u\":[{\"l\":3}]},25],\"q\":[{\"u\":[{\"a\":23,\"e\":[{\"f\":4}],\"i\":[{\"d\":3,\"t\":116}]}]}],\"r\":[{\"a\":[{\"b\":0,\"c\":21},29],\"d\":[{\"e\":5}],\"e\":[{\"d\":[{\"e\":0}],\"f\":21,\"l\":117,\"s\":21}],\"g\":[{\"i\":4}],\"i\":[{\"d\":[{\"e\":5}],\"s\":1,\"t\":[{\"u\":11}],\"z\":118},2],\"m\":[{\"i\":[{\"n\":1}]}],\"o\":[{\"g\":0,\"n\":[{\".\":32}]}],\"u\":[{\"l\":4}],\"r\":[{\"e\":[{\"v\":[{\"o\":[{\"c\":221}]}]}]}]},18],\"s\":[{\".\":25,\"a\":[{\"g\":4,\"r\":3,\"s\":6}],\"c\":[{\"h\":3},119],\"e\":[{\"r\":3},18],\"f\":27,\"h\":[{\"a\":[{\"n\":4}],\"o\":[{\"n\":3,\"p\":5}]}],\"i\":[{\"b\":3,\"d\":0,\"s\":19,\"t\":[{\"i\":[{\"v\":4}]}]}],\"k\":26,\"l\":[{\"a\":[{\"n\":36}]}],\"m\":[{\"s\":18}],\"o\":[{\"m\":[{\"e\":[{\"r\":5}]}]},24],\"p\":[{\"i\":9,\"y\":1},2],\"s\":[{\"a\":[{\"l\":1}],\"e\":[{\"n\":36,\"s\":1}]},62],\"t\":[{\"a\":[{\".\":1}],\"e\":2,\"i\":2,\"l\":[{\"y\":0}],\"r\":[{\"a\":[{\"l\":18}]}]}],\"u\":[{\"s\":4},24]}],\"t\":[{\"a\":[{\".\":18,\"b\":[{\"i\":0}],\"g\":21,\"m\":120,\"n\":23,\"t\":23}],\"e\":[{\"r\":[{\"a\":3,\"i\":19}],\"s\":[{\"i\":[{\"m\":[{\"a\":29}]}]},1]},25],\"h\":[{\"i\":[{\"l\":148}]},25],\"i\":[{\"a\":18,\"c\":[{\"a\":3,\"k\":31},22],\"g\":3,\"l\":[{\"l\":4}],\"m\":24,\"o\":25,\"s\":[{\"m\":21},18],\"n\":[{\"e\":[{\"r\":[{\"a\":[{\"r\":158}]}]}]}]},29],\"o\":[{\"m\":121,\"n\":18}],\"r\":[{\"a\":[{\"m\":21}],\"y\":4}],\"t\":18,\"u\":[{\"a\":[{\"t\":3}],\"d\":19,\"l\":3}],\"z\":[{\".\":18}]}],\"u\":29,\"v\":[{\"e\":[{\"l\":[{\"l\":3}],\"n\":[{\".\":3}],\"r\":[{\".\":83,\"s\":[{\".\":21}]}]}],\"i\":[{\"l\":[{\".\":4}],\"o\":4,\"t\":2}],\"o\":[{\"r\":[{\"e\":19,\"o\":35}],\"t\":83}]},25],\"w\":56,\"x\":[{\"o\":1}],\"y\":18,\"z\":[{\"a\":[{\"r\":18}],\"i\":0,\"o\":[{\"n\":[{\"t\":32}]}]}]}],\"j\":[{\"a\":[{\"c\":[{\"q\":0}],\"p\":[{\"a\":[{\"n\":[{\"e\":[{\"s\":220}]}]}]},1],\"n\":[{\"u\":[{\"a\":12}]}]},32],\"e\":[{\"r\":[{\"s\":5,\"e\":[{\"m\":222}]}],\"s\":[{\"t\":[{\"i\":[{\"e\":18}],\"y\":18}]}],\"w\":11},41],\"o\":[{\"p\":1}],\"u\":[{\"d\":[{\"g\":32}]}]}],\"k\":[{\"a\":[{\".\":27,\"b\":23,\"g\":19,\"i\":[{\"s\":17}],\"l\":0}],\"b\":29,\"e\":[{\"d\":24,\"e\":41,\"g\":1,\"l\":[{\"i\":[{\"n\":[{\"g\":223}]},4]}],\"n\":[{\"d\":73}],\"r\":29,\"s\":[{\"t\":[{\".\":23}]},0],\"t\":[{\"y\":1}]}],\"f\":23,\"h\":1,\"i\":[{\".\":32,\"c\":122,\"l\":[{\"l\":21,\"o\":6}],\"m\":21,\"n\":[{\".\":21,\"d\":[{\"e\":0}],\"e\":[{\"s\":[{\"s\":19}],\"t\":[{\"i\":[{\"c\":224}]}]}],\"g\":0}],\"p\":1,\"s\":[{\"h\":19},0]},29],\"k\":1,\"l\":[{\"e\":[{\"y\":18}],\"y\":18},29],\"m\":29,\"n\":[{\"e\":[{\"s\":19}],\"o\":69}],\"o\":[{\"r\":4,\"s\":[{\"h\":17}],\"u\":23,\"v\":[{\"i\":[{\"a\":[{\"n\":41}]}]}]}],\"r\":[{\"o\":[{\"n\":5}]}],\"s\":[{\"c\":21,\"l\":1,\"y\":21,\"h\":[{\"a\":23}]},101],\"t\":19,\"w\":29}],\"l\":[{\"a\":[{\"b\":[{\"i\":[{\"c\":11}],\"o\":21}],\"c\":[{\"i\":[{\"e\":225},17]}],\"d\":[{\"e\":21,\"y\":3}],\"g\":[{\"n\":0}],\"m\":[{\"o\":11}],\"n\":[{\"d\":[{\"l\":0},27],\"e\":[{\"t\":5}],\"t\":[{\"e\":0}]}],\"r\":[{\"g\":0,\"i\":11,\"c\":[{\"e\":[{\"n\":176}]}]}],\"s\":[{\"e\":0}],\"t\":[{\"a\":[{\"n\":4}],\"e\":[{\"l\":[{\"i\":18}]}],\"i\":[{\"v\":18}]}],\"v\":[{\"a\":95},18],\"i\":[{\"n\":[{\"e\":[{\"s\":[{\"s\":226}]}]}]}]}],\"b\":[{\"i\":[{\"n\":17}]},42],\"c\":[{\"e\":0,\"i\":23,\"h\":[{\"a\":[{\"i\":23}],\"i\":[{\"l\":[{\"d\":227}]}]}]},101],\"d\":[{\"e\":[{\"r\":[{\"e\":1,\"i\":1}]},24],\"i\":[{\"s\":4},0],\"r\":[{\"i\":21},23]},25],\"e\":[{\"a\":[{\"d\":[{\"e\":[{\"r\":[{\".\":183}]}]}],\"s\":[{\"a\":228}]},9],\"b\":[{\"i\":1}],\"f\":[{\"t\":6}],\"g\":[{\".\":32,\"g\":32,\"e\":[{\"n\":[{\"d\":[{\"r\":[{\"e\":230}]}]}]}]}],\"m\":[{\"a\":[{\"t\":[{\"i\":[{\"c\":5}]},1]}]}],\"n\":[{\".\":18,\"c\":27,\"e\":[{\".\":32}],\"t\":41,\"o\":[{\"i\":[{\"d\":78}]}]}],\"p\":[{\"h\":3,\"r\":1}],\"r\":[{\"a\":[{\"b\":6}],\"e\":0,\"g\":27,\"i\":68,\"o\":21}],\"s\":[{\"c\":[{\"o\":4}],\"q\":32,\"s\":[{\".\":32},27]},8],\"v\":[{\"a\":23,\"e\":[{\"r\":[{\".\":0,\"a\":0,\"s\":0}]}]}],\"y\":[{\"e\":18},27],\"c\":[{\"t\":[{\"a\":[{\"b\":229}]}]}]}],\"f\":[{\"r\":19},25],\"g\":[{\"a\":[{\"r\":12},19],\"e\":[{\"s\":21}],\"o\":11},80],\"h\":48,\"i\":[{\"a\":[{\"g\":1,\"m\":9,\"r\":[{\"i\":[{\"z\":6}]}],\"s\":1,\"t\":[{\"o\":1}]}],\"b\":[{\"i\":4}],\"c\":[{\"i\":[{\"o\":32}],\"o\":[{\"r\":1}],\"s\":18,\"t\":[{\".\":18}],\"u\":21,\"y\":23}],\"d\":[{\"a\":23,\"e\":[{\"r\":5}],\"i\":27}],\"f\":[{\"e\":[{\"r\":11}],\"f\":21,\"l\":1}],\"g\":[{\"a\":[{\"t\":[{\"e\":32}]}],\"h\":27,\"r\":[{\"a\":1}]}],\"k\":27,\"l\":123,\"m\":[{\"b\":[{\"l\":0}],\"i\":11,\"o\":1,\"p\":90}],\"n\":[{\"a\":21,\"e\":[{\"a\":11},124],\"i\":11,\"k\":[{\"e\":[{\"r\":6}]}]}],\"o\":[{\"g\":4}],\"q\":125,\"s\":[{\"p\":0}],\"t\":[{\".\":24,\"i\":[{\"c\":[{\"a\":32,\"s\":108}]}],\"h\":[{\"o\":[{\"g\":204}]}]},29],\"v\":[{\"e\":[{\"r\":11}]}],\"z\":29}],\"j\":18,\"k\":[{\"a\":[{\"l\":23,\"t\":0},11]}],\"l\":[{\"a\":[{\"w\":21}],\"e\":[{\"a\":19,\"c\":23,\"g\":23,\"l\":23,\"n\":73,\"t\":73},24],\"i\":[{\"n\":[{\"a\":19},126],\"s\":[{\"h\":231}]},9],\"o\":[{\"q\":[{\"u\":[{\"i\":10}]}],\"u\":[{\"t\":4}],\"w\":19},1],\"f\":[{\"l\":2}]},29],\"m\":[{\"e\":[{\"t\":19}],\"i\":[{\"n\":[{\"g\":3}]}],\"o\":[{\"d\":21,\"n\":[{\"e\":[{\"l\":[{\"l\":232}]}]},17]}]},25],\"n\":81,\"o\":[{\".\":27,\"b\":[{\"a\":[{\"l\":5}],\"o\":[{\"t\":[{\"o\":233}]}]}],\"c\":[{\"i\":1}],\"f\":18,\"g\":[{\"i\":[{\"c\":27}],\"o\":19,\"u\":27,\"e\":[{\"s\":[{\".\":9}]}]}],\"m\":[{\"e\":[{\"r\":11}]}],\"n\":[{\"g\":32,\"i\":[{\"z\":127},0]}],\"o\":[{\"d\":6}],\"p\":[{\"e\":[{\".\":32}],\"i\":11,\"m\":23}],\"r\":[{\"a\":[{\"t\":[{\"o\":1}]},17],\"i\":[{\"e\":4}],\"o\":[{\"u\":5}]}],\"s\":[{\".\":32,\"e\":[{\"t\":5}],\"o\":[{\"p\":[{\"h\":[{\"i\":[{\"z\":32}],\"y\":32}]}]}],\"t\":0}],\"t\":[{\"a\":1}],\"u\":[{\"n\":[{\"d\":6}],\"t\":25}],\"v\":18,\"a\":[{\"d\":[{\"e\":[{\"d\":[{\".\":17}],\"r\":[{\".\":183}]}]}]}]}],\"p\":[{\"a\":[{\"b\":5}],\"h\":[{\"a\":23,\"i\":19}],\"i\":[{\"n\":[{\"g\":4}],\"t\":23}],\"l\":21,\"r\":19},25],\"r\":43,\"s\":[{\"c\":21,\"e\":24,\"i\":[{\"e\":21}]},81],\"t\":[{\"a\":[{\"g\":4,\"n\":[{\"e\":7}]}],\"e\":[{\"n\":17,\"r\":[{\"a\":36}],\"a\":23},29],\"h\":[{\"i\":[{\"l\":[{\"y\":148}]},11]}],\"i\":[{\"e\":[{\"s\":[{\".\":19}]}],\"s\":17}],\"r\":29,\"u\":[{\"r\":[{\"a\":12}]},8]},18],\"u\":[{\"a\":4,\"b\":[{\"r\":3}],\"c\":[{\"h\":17,\"i\":3}],\"e\":[{\"n\":3,\"p\":15}],\"f\":0,\"i\":[{\"d\":4}],\"m\":[{\"a\":1,\"i\":32,\"n\":[{\".\":19,\"i\":[{\"a\":32}]}],\"b\":[{\"i\":[{\"a\":[{\".\":235}]}]}]}],\"o\":[{\"r\":11},3],\"p\":18,\"s\":[{\"s\":17,\"t\":[{\"e\":11}]}],\"t\":41,\"n\":[{\"k\":[{\"e\":[{\"r\":234}]}]}]}],\"v\":[{\"e\":[{\"n\":19,\"t\":128}]}],\"w\":42,\"y\":[{\"a\":18,\"b\":18,\"m\":[{\"e\":4}],\"n\":[{\"o\":3}],\"s\":[{\"e\":19,\"t\":[{\"y\":[{\"r\":4}]}]},58],\"g\":[{\"a\":[{\"m\":[{\"i\":236}]}]}]},41]}],\"m\":[{\"a\":[{\"b\":25,\"c\":[{\"a\":9,\"h\":[{\"i\":[{\"n\":[{\"e\":4}]}]}],\"l\":1}],\"g\":[{\"i\":[{\"n\":5}],\"n\":32}],\"h\":25,\"i\":[{\"d\":6}],\"l\":[{\"d\":18,\"i\":[{\"g\":3,\"n\":4}],\"l\":[{\"i\":0}],\"t\":[{\"y\":0}],\"a\":[{\"p\":222}]}],\"n\":[{\"i\":[{\"a\":32,\"s\":5,\"z\":11}],\".\":24,\"u\":[{\"s\":[{\"c\":237}]}]}],\"p\":[{\"h\":[{\"r\":[{\"o\":244}]}]},18],\"r\":[{\"i\":[{\"n\":[{\"e\":[{\".\":4}]}],\"z\":4}],\"l\":[{\"y\":0}],\"v\":11,\"g\":[{\"i\":[{\"n\":238}]}]}],\"s\":[{\"c\":[{\"e\":4}],\"e\":0,\"t\":15}],\"t\":[{\"e\":32,\"h\":12,\"i\":[{\"s\":3,\"z\":[{\"a\":18}]}]}]},41],\"b\":[{\"a\":[{\"t\":129}],\"i\":[{\"l\":19,\"n\":[{\"g\":83}],\"v\":0}]},43],\"c\":56,\"e\":[{\".\":18,\"d\":[{\".\":18,\"i\":[{\"a\":32,\"e\":3,\"c\":[{\"i\":[{\"n\":152}]},84],\"o\":[{\"c\":239}]}],\"y\":108},25],\"g\":[{\"r\":[{\"a\":[{\"n\":240}]}]},9],\"l\":[{\"o\":[{\"n\":5}],\"t\":0}],\"m\":[{\"o\":130},9],\"n\":[{\"a\":[{\"c\":5},0],\"d\":[{\"e\":0}],\"e\":18,\"i\":0,\"s\":[{\"u\":7},17],\"t\":[{\"e\":0},27],\".\":24},41],\"o\":[{\"n\":4}],\"r\":[{\"s\":[{\"a\":19}]}],\"s\":[{\"t\":[{\"i\":27}]},25],\"t\":[{\"a\":[{\"l\":11},1],\"e\":2,\"h\":[{\"i\":4}],\"r\":[{\"i\":[{\"c\":32,\"e\":4}],\"y\":3},21]}],\"v\":1}],\"f\":43,\"h\":25,\"i\":[{\".\":32,\"a\":3,\"d\":[{\"a\":[{\"b\":241},0],\"g\":0}],\"g\":0,\"l\":[{\"i\":[{\"a\":27,\"e\":108,\"t\":[{\"a\":27}]}],\"l\":[{\"a\":[{\"g\":208}],\"i\":[{\"l\":[{\"i\":59}]}]},21]}],\"n\":[{\"a\":0,\"d\":27,\"e\":[{\"e\":19}],\"g\":[{\"l\":[{\"i\":5,\"y\":19},21]}],\"t\":0,\"u\":[{\"t\":[{\"e\":[{\"r\":242,\"s\":[{\"t\":242}]}]}]},21],\"i\":[{\"s\":[{\".\":174}]}]}],\"o\":[{\"t\":17}],\"s\":[{\"e\":[{\"r\":[{\".\":0}]}],\"l\":5,\"t\":[{\"i\":0,\"r\":[{\"y\":19}]}]},24],\"t\":[{\"h\":18}],\"z\":24}],\"k\":18,\"l\":43,\"m\":[{\"a\":[{\"r\":[{\"y\":5}],\"b\":243}]},29],\"n\":[{\"a\":1,\"i\":[{\"n\":21}],\"o\":1},43],\"o\":[{\"c\":[{\"r\":[{\"a\":[{\"t\":[{\"i\":[{\"z\":32}]},245]}]},18]}],\"d\":131,\"g\":[{\"o\":1}],\"i\":[{\"s\":[{\"e\":5},84]}],\"k\":18,\"l\":[{\"e\":[{\"s\":[{\"t\":4}],\"c\":246}]}],\"m\":[{\"e\":3}],\"n\":[{\"e\":[{\"t\":5,\"y\":[{\"l\":247}]}],\"g\":[{\"e\":5}],\"i\":[{\"a\":12,\"s\":[{\"m\":0,\"t\":0}],\"z\":3}],\"o\":[{\"l\":36,\"c\":[{\"h\":12}],\"e\":[{\"n\":171}],\"s\":249}],\"y\":[{\".\":3}]}],\"r\":[{\"a\":[{\".\":18}],\"o\":[{\"n\":[{\"i\":[{\"s\":248}]}]}]},9],\"s\":[{\"e\":[{\"y\":4}],\"p\":3},8],\"t\":[{\"h\":[{\"e\":[{\"t\":250}]},12]}],\"u\":[{\"f\":19,\"s\":[{\"i\":[{\"n\":98}]},27]}],\"v\":9,\"e\":[{\"l\":[{\"a\":[{\"s\":167}]}]}]},41],\"p\":[{\"a\":[{\"r\":[{\"a\":[{\"b\":5},7],\"i\":6}]}],\"e\":[{\"t\":23}],\"h\":[{\"a\":[{\"s\":36}]}],\"i\":[{\"a\":0,\"e\":[{\"s\":4}],\"n\":34,\"r\":19,\"s\":4},24],\"o\":[{\"r\":[{\"i\":11}],\"s\":[{\"i\":[{\"t\":[{\"e\":6}]}]}],\"u\":[{\"s\":21}],\"v\":6}],\"t\":[{\"r\":1}],\"y\":24},43],\"r\":47,\"s\":[{\"h\":[{\"a\":[{\"c\":[{\"k\":251}]}]},21],\"i\":19},101],\"t\":18,\"u\":[{\"l\":[{\"a\":[{\"r\":49}],\"t\":[{\"i\":[{\"u\":252},54]},32]}],\"m\":27,\"n\":8,\"p\":18,\"u\":1,\"d\":[{\"r\":[{\"o\":9}]}]},41],\"w\":18}],\"n\":[{\"a\":[{\"b\":[{\"u\":21},81],\"c\":[{\".\":18,\"a\":1,\"t\":19}],\"g\":[{\"e\":[{\"r\":[{\".\":5}]}]}],\"k\":0,\"l\":[{\"i\":[{\"a\":4},1],\"t\":18}],\"m\":[{\"i\":[{\"t\":4}]}],\"n\":[{\"c\":[{\"i\":36}],\"i\":[{\"t\":0}],\"k\":17},24],\"r\":[{\"c\":[{\"h\":[{\"s\":[{\".\":73}]}]},11],\"e\":18,\"i\":11,\"l\":0,\"m\":19}],\"s\":[{\"c\":0,\"t\":[{\"i\":5}]},21],\"t\":[{\"a\":[{\"l\":3}],\"o\":[{\"m\":[{\"i\":[{\"z\":6}]}]}]},24],\"u\":[{\"s\":[{\"e\":11}],\"t\":27},24],\"v\":[{\"e\":0}]},41],\"b\":80,\"c\":[{\"a\":[{\"r\":6}],\"e\":[{\"s\":[{\".\":21}]}],\"h\":[{\"a\":23,\"e\":[{\"o\":19,\"s\":[{\"t\":253}]}],\"i\":[{\"l\":19,\"s\":23}]}],\"i\":[{\"n\":2,\"t\":1}],\"o\":[{\"u\":[{\"r\":[{\"a\":7}]}]}],\"r\":29,\"u\":29}],\"d\":[{\"a\":[{\"i\":21,\"n\":19}],\"e\":[{\"s\":[{\"t\":[{\".\":4}]}]},29],\"i\":[{\"b\":0,\"f\":79,\"t\":29,\"z\":23,\"e\":[{\"c\":[{\"k\":29}]}]}],\"u\":[{\"c\":19,\"r\":0}],\"w\":[{\"e\":9}],\"t\":[{\"h\":[{\"r\":3}]}]}],\"e\":[{\".\":25,\"a\":[{\"r\":23}],\"b\":[{\"u\":11,\"a\":[{\"c\":[{\"k\":3}]}]},9],\"c\":[{\"k\":32},9],\"d\":25,\"g\":[{\"a\":[{\"t\":[{\"i\":[{\"v\":5}]},1]}],\"e\":32}],\"l\":[{\"a\":1,\"i\":[{\"z\":5}]}],\"m\":[{\"i\":4,\"o\":1}],\"n\":[{\"e\":18},41],\"o\":27,\"p\":[{\"o\":1}],\"q\":9,\"r\":[{\"a\":[{\"b\":6,\"r\":21}],\"e\":24,\"i\":132,\"r\":0},29],\"s\":[{\".\":25,\"p\":18,\"t\":25,\"w\":18,\"k\":[{\"i\":119}]},41],\"t\":[{\"i\":[{\"c\":27}]}],\"v\":[{\"e\":19},1],\"w\":1}],\"f\":[{\"i\":[{\"n\":[{\"i\":[{\"t\":[{\"e\":[{\"s\":226}]}]}]}]}]},23],\"g\":[{\"a\":[{\"b\":21}],\"e\":[{\"l\":23,\"n\":[{\"e\":[{\"s\":5},133]}],\"r\":[{\"e\":19,\"i\":23}]}],\"h\":[{\"a\":4,\"o\":2}],\"i\":[{\"b\":23,\"n\":2,\"t\":19}],\"l\":[{\"a\":21}],\"o\":[{\"v\":17}],\"s\":[{\"h\":4,\"p\":[{\"r\":2}]}],\"u\":[{\"m\":21},29],\"y\":24}],\"h\":[{\"a\":[{\"b\":12},0],\"e\":0},80],\"i\":[{\"a\":[{\"n\":[{\".\":114},3],\"p\":1},68],\"b\":[{\"a\":3,\"l\":1}],\"d\":[{\"i\":4},1],\"e\":[{\"r\":1}],\"f\":[{\"i\":[{\"c\":[{\"a\":[{\"t\":4}]}]},9]}],\"g\":[{\"r\":19}],\"k\":0,\"m\":[{\"i\":[{\"z\":3}]},29],\"n\":[{\"e\":[{\".\":32}],\"g\":0},29],\"o\":1,\"s\":[{\".\":32,\"t\":[{\"a\":0}]}],\"t\":[{\"h\":21,\"i\":[{\"o\":27}],\"o\":[{\"r\":23}],\"r\":3},24]}],\"j\":29,\"k\":[{\"e\":[{\"r\":[{\"o\":19}],\"t\":23}],\"i\":[{\"n\":3}],\"l\":29,\"r\":[{\"u\":[{\"p\":3}]}]},44],\"l\":[{\"e\":[{\"s\":[{\"s\":19}]}]},43],\"m\":[{\"e\":[{\"t\":17},0]},19],\"n\":[{\"e\":0,\"i\":[{\"a\":[{\"l\":11}],\"v\":0}]},101],\"o\":[{\"b\":[{\"l\":[{\"e\":3},0]}],\"c\":[{\"l\":19,\"e\":[{\"r\":[{\"o\":[{\"s\":254}]}]}]}],\"d\":66,\"e\":27,\"g\":[{\"e\":17},18],\"i\":[{\"s\":[{\"i\":6}]}],\"l\":[{\"i\":134,\"o\":[{\"g\":[{\"i\":[{\"s\":32}]}]}]}],\"m\":[{\"i\":[{\"c\":27,\"z\":108,\"s\":[{\"t\":82}]}],\"o\":1,\"y\":3,\"a\":[{\"l\":214}],\"e\":[{\"n\":[{\"o\":194}]}]}],\"n\":[{\"a\":[{\"g\":0}],\"i\":[{\"z\":19,\"s\":[{\"o\":255}]},5],\"e\":[{\"q\":15}]},1],\"p\":[{\"o\":[{\"l\":[{\"i\":135,\"y\":[{\".\":256}]}]}]},18],\"r\":[{\"a\":[{\"b\":5,\"r\":[{\"y\":1}]}]}],\"s\":[{\"c\":18,\"e\":0,\"t\":5}],\"t\":[{\"a\":4}],\"u\":[{\"n\":27},41],\"v\":[{\"e\":[{\"l\":136,\"m\":[{\"b\":2}]}]}],\"w\":[{\"l\":12}]}],\"p\":[{\"i\":0,\"r\":[{\"e\":[{\"c\":17}]}]},72],\"q\":29,\"r\":[{\"u\":0},29],\"s\":[{\"a\":[{\"b\":4,\"t\":[{\"i\":36}]}],\"c\":[{\"e\":[{\"i\":[{\"v\":4}]}]},1],\"e\":[{\"s\":83},24],\"i\":[{\"d\":137,\"g\":17}],\"l\":24,\"m\":[{\"o\":[{\"o\":1}]},3],\"o\":[{\"c\":21}],\"p\":[{\"e\":1,\"i\":19}],\"t\":[{\"a\":[{\"b\":[{\"l\":6}]}]}]},81],\"t\":[{\"a\":[{\"b\":0}],\"e\":[{\"r\":[{\"s\":12}]}],\"i\":[{\"b\":19,\"e\":[{\"r\":0}],\"f\":8,\"n\":[{\"e\":23,\"g\":83}],\"p\":0},9],\"r\":[{\"o\":[{\"l\":[{\"l\":[{\"i\":7}]}]}],\"e\":[{\"p\":137}]}],\"s\":1,\"u\":[{\"m\":[{\"e\":11}]}]},29],\"u\":[{\"a\":2,\"d\":1,\"e\":[{\"n\":4}],\"f\":[{\"f\":[{\"e\":0}]}],\"i\":[{\"n\":23,\"t\":50}],\"m\":[{\"e\":2,\"i\":19},21],\"n\":138,\"o\":23,\"t\":[{\"r\":3}]}],\"v\":74,\"w\":72,\"y\":[{\"m\":0,\"p\":0}],\"z\":[{\"a\":23},18]}],\"o\":[{\"a\":[{\"d\":11,\"l\":[{\"e\":[{\"s\":108}]}],\"r\":[{\"d\":12}],\"s\":[{\"e\":0,\"t\":[{\"e\":6}]}],\"t\":[{\"i\":5}]},18],\"b\":[{\"a\":[{\"b\":35,\"r\":19}],\"e\":[{\"l\":0}],\"i\":[{\"n\":[{\"g\":4},24]},29],\"r\":23,\"u\":[{\"l\":3}],\"l\":[{\"i\":[{\"g\":189}]}]}],\"c\":[{\"e\":29,\"h\":[{\"e\":[{\"t\":23}],\"a\":[{\"s\":23}]},0],\"i\":[{\"f\":12,\"l\":21}],\"l\":[{\"a\":[{\"m\":21}]}],\"o\":[{\"d\":21}],\"r\":[{\"a\":[{\"c\":3,\"t\":[{\"i\":[{\"z\":4}]}]}],\"e\":12,\"i\":[{\"t\":32}]}],\"t\":[{\"o\":[{\"r\":[{\"a\":7}]}]}],\"u\":[{\"l\":[{\"a\":3}],\"r\":[{\"e\":19}]}]}],\"d\":[{\"d\":[{\"e\":[{\"d\":4}]}],\"i\":[{\"c\":3,\"o\":11,\"t\":[{\"i\":[{\"c\":137}]}]}],\"o\":[{\"r\":12},139],\"u\":[{\"c\":[{\"t\":[{\".\":4,\"s\":4}]}]}],\"e\":[{\"l\":[{\"l\":[{\"i\":12}]}]}]}],\"e\":[{\"l\":21,\"n\":[{\"g\":19}],\"r\":[{\"s\":[{\"t\":257}]},23],\"t\":[{\"a\":1}],\"v\":23}],\"f\":[{\"i\":[{\"t\":[{\"e\":4,\"t\":17}]},24]}],\"g\":[{\"a\":[{\"r\":121,\"t\":[{\"i\":[{\"v\":4}],\"o\":21}]}],\"e\":[{\"n\":[{\"e\":19}],\"o\":19,\"r\":21},29],\"i\":[{\"e\":23,\"s\":140,\"t\":3}],\"l\":[{\"y\":79},21],\"n\":[{\"i\":[{\"z\":27}]}],\"r\":[{\"o\":21}],\"u\":[{\"i\":5}],\"y\":[{\"n\":25},41]}],\"h\":[{\"a\":[{\"b\":6}]},74],\"i\":[{\"c\":[{\"e\":[{\"s\":11}]}],\"d\":[{\"e\":[{\"r\":3}]}],\"f\":[{\"f\":17}],\"g\":0,\"l\":[{\"e\":[{\"t\":4}]}],\"n\":[{\"g\":23,\"t\":[{\"e\":[{\"r\":6}]}]}],\"s\":[{\"m\":19,\"o\":[{\"n\":4}],\"t\":[{\"e\":[{\"n\":6}]}]}],\"t\":[{\"e\":[{\"r\":3}]}]},9],\"j\":19,\"k\":[{\"e\":[{\"n\":23,\"s\":[{\"t\":15}]}],\"i\":[{\"e\":4}]},25],\"l\":[{\"a\":[{\"n\":21,\"s\":[{\"s\":36}]},29],\"d\":[{\"e\":15},9],\"e\":[{\"r\":3,\"s\":[{\"c\":23,\"t\":[{\"e\":[{\"r\":88}]}]}],\"t\":23}],\"f\":[{\"i\":1}],\"i\":[{\"a\":23,\"c\":[{\"e\":23}],\"d\":[{\".\":4}],\"f\":73,\"l\":19,\"n\":[{\"g\":3}],\"o\":19,\"s\":[{\".\":19,\"h\":3}],\"t\":[{\"e\":19,\"i\":[{\"o\":19}]}],\"v\":19,\"g\":[{\"o\":[{\"p\":[{\"o\":258}]}]}]},9],\"l\":[{\"i\":[{\"e\":17}]}],\"o\":[{\"g\":[{\"i\":[{\"z\":4}]}],\"r\":0,\"n\":[{\"o\":[{\"m\":259}]}]}],\"p\":[{\"l\":4}],\"t\":9,\"u\":[{\"b\":3,\"m\":[{\"e\":3}],\"n\":3,\"s\":19}],\"v\":9,\"y\":24}],\"m\":[{\"a\":[{\"h\":4,\"l\":5,\"t\":[{\"i\":[{\"z\":4}]}]}],\"b\":[{\"e\":9,\"l\":1}],\"e\":[{\"n\":[{\"a\":3}],\"r\":[{\"s\":[{\"e\":4}]}],\"t\":[{\"r\":[{\"y\":4}]},21],\"c\":[{\"h\":[{\"a\":260}]}]},24],\"i\":[{\"a\":23,\"c\":[{\".\":3,\"a\":3}],\"d\":19,\"n\":[{\"i\":19},2]}],\"m\":[{\"e\":[{\"n\":[{\"d\":32}]}]}],\"o\":[{\"g\":[{\"e\":0}],\"n\":21}],\"p\":[{\"i\":3,\"r\":[{\"o\":7}]}]}],\"n\":[{\"a\":[{\"c\":1,\"n\":23},2],\"c\":[{\"i\":[{\"l\":27}]},2],\"d\":[{\"o\":4},25],\"e\":[{\"n\":23,\"s\":[{\"t\":4}]}],\"g\":[{\"u\":1}],\"i\":[{\"c\":2,\"o\":23,\"s\":2,\"u\":19}],\"k\":[{\"e\":[{\"y\":3}]}],\"o\":[{\"d\":[{\"i\":1}],\"m\":[{\"y\":3,\"i\":[{\"c\":137}]}],\"r\":[{\"m\":[{\"a\":23}]}],\"t\":[{\"o\":[{\"n\":261}]}],\"u\":23}],\"s\":[{\"p\":[{\"i\":[{\"r\":[{\"a\":10}]},36]}],\"u\":17},3],\"t\":[{\"e\":[{\"n\":36}],\"i\":[{\"f\":7},93]}],\"u\":[{\"m\":4}],\"v\":[{\"a\":6}]},24],\"o\":[{\"d\":[{\"e\":5,\"i\":5}],\"k\":1,\"p\":[{\"i\":11}],\"r\":[{\"d\":23}],\"s\":[{\"t\":6}]},9],\"p\":[{\"a\":24,\"e\":[{\"d\":5,\"r\":[{\"a\":[{\"g\":18},27]},2]}],\"h\":[{\"a\":[{\"n\":19}],\"e\":[{\"r\":19}]},25],\"i\":[{\"n\":[{\"g\":3}],\"t\":23,\"s\":[{\"m\":[{\".\":2}]}]}],\"o\":[{\"n\":19,\"s\":[{\"i\":21}]}],\"r\":29,\"u\":2,\"y\":5}],\"q\":29,\"r\":[{\"a\":[{\".\":19,\"g\":83,\"l\":[{\"i\":[{\"z\":4}]}],\"n\":[{\"g\":[{\"e\":4}]}]},29],\"e\":[{\"a\":[{\"l\":19},5],\"i\":3,\"s\":[{\"h\":5,\"t\":[{\".\":4}]}],\"w\":17}],\"g\":[{\"u\":1}],\"i\":[{\"a\":56,\"c\":[{\"a\":3}],\"l\":19,\"n\":2,\"o\":29,\"t\":[{\"y\":3}],\"u\":23}],\"m\":[{\"i\":9}],\"n\":[{\"e\":8}],\"o\":[{\"f\":19,\"u\":[{\"g\":3}]}],\"p\":[{\"e\":4}],\"r\":[{\"h\":27}],\"s\":[{\"e\":[{\"n\":5},1],\"t\":17}],\"t\":[{\"h\":[{\"i\":3,\"y\":3,\"o\":[{\"n\":[{\"i\":[{\"t\":262}]}]}],\"r\":[{\"i\":137}]}],\"y\":1,\"i\":[{\"v\":[{\"e\":[{\"l\":[{\"y\":4}]}]}]}]}],\"u\":[{\"m\":19}],\"y\":29}],\"s\":[{\"a\":[{\"l\":3}],\"c\":[{\"e\":1,\"o\":[{\"p\":[{\"i\":18},23]}],\"r\":19},9],\"i\":[{\"e\":95,\"t\":[{\"i\":[{\"v\":4}],\"o\":3,\"y\":3}],\"u\":0}],\"l\":1,\"o\":24,\"p\":[{\"a\":1,\"o\":1,\"h\":[{\"e\":[{\"r\":83}]}]}],\"t\":[{\"a\":[{\"t\":[{\"i\":19}]},9],\"i\":[{\"l\":4,\"t\":4}]}]}],\"t\":[{\"a\":[{\"n\":21}],\"e\":[{\"l\":[{\"e\":[{\"g\":36}]}],\"r\":[{\".\":3,\"s\":4}],\"s\":[{\"t\":[{\"e\":[{\"r\":263}],\"o\":[{\"r\":264}]}]},21]}],\"h\":[{\"e\":[{\"s\":[{\"i\":5}],\"o\":[{\"s\":265}]}],\"i\":14},18],\"i\":[{\"c\":[{\".\":3,\"a\":4,\"e\":23}],\"f\":23,\"s\":23}],\"o\":[{\"s\":5}]}],\"u\":[{\"b\":[{\"l\":3,\"a\":[{\"d\":[{\"o\":116}]}]}],\"c\":[{\"h\":[{\"i\":6}]}],\"e\":[{\"t\":4}],\"l\":1,\"n\":[{\"c\":[{\"e\":[{\"r\":6}]}],\"d\":8}],\"v\":4},9],\"v\":[{\"e\":[{\"n\":1,\"r\":[{\"n\":[{\"e\":17}],\"s\":12,\"t\":1}]}],\"i\":[{\"s\":23,\"t\":[{\"i\":36}],\"a\":[{\"n\":[{\".\":266}]}]}],\"o\":[{\"l\":60}]}],\"w\":[{\"d\":[{\"e\":[{\"r\":3}]}],\"e\":[{\"l\":3,\"s\":[{\"t\":4}]}],\"i\":2,\"n\":[{\"i\":5}],\"o\":21}],\"y\":[{\"a\":2}],\"x\":[{\"i\":[{\"d\":[{\"i\":[{\"c\":267}]}]}]}]}],\"p\":[{\"a\":[{\"c\":[{\"a\":1,\"e\":1,\"t\":0}],\"d\":21,\"g\":[{\"a\":[{\"n\":32,\"t\":23}]}],\"i\":[{\"n\":17},21],\"l\":[{\"m\":[{\"a\":[{\"t\":268}]}]},21],\"n\":[{\"a\":0,\"e\":[{\"l\":11}],\"t\":[{\"y\":0}],\"y\":3}],\"p\":[{\"u\":1},2],\"r\":[{\"a\":[{\"b\":[{\"l\":6}],\"g\":[{\"e\":5,\"r\":[{\"a\":269}]}],\"l\":[{\"e\":228}],\"m\":[{\"e\":12},36]}],\"d\":[{\"i\":5}],\"e\":[{\"l\":5},27],\"i\":[{\"s\":0},28]}],\"t\":[{\"e\":[{\"r\":4},9],\"h\":[{\"i\":[{\"c\":32}],\"y\":4}],\"r\":[{\"i\":[{\"c\":1}]}]}],\"v\":0,\"y\":27},41],\"b\":43,\"d\":1,\"e\":[{\".\":18,\"a\":[{\"r\":[{\"l\":17}]},138],\"c\":9,\"d\":[{\"e\":27,\"i\":[{\"a\":36,\"c\":0},27]},37],\"e\":[{\"d\":0,\"v\":208},21],\"k\":0,\"l\":[{\"a\":1,\"i\":[{\"e\":17}]}],\"n\":[{\"a\":[{\"n\":1}],\"c\":21,\"t\":[{\"h\":0}]}],\"o\":[{\"n\":4}],\"r\":[{\"a\":[{\".\":21,\"b\":[{\"l\":6}],\"g\":21}],\"i\":[{\"s\":[{\"t\":6}]},21],\"m\":[{\"a\":[{\"l\":0}],\"e\":7}],\"n\":21,\"o\":11,\"t\":[{\"i\":11}],\"u\":4,\"v\":15}],\"t\":[{\"e\":[{\"n\":4}],\"i\":[{\"z\":4}]},9]}],\"f\":18,\"g\":18,\"h\":[{\".\":18,\"a\":[{\"r\":[{\"i\":6}]}],\"e\":[{\"n\":[{\"o\":11}],\"r\":1,\"s\":[{\".\":1}]}],\"i\":[{\"c\":2,\"e\":32,\"n\":[{\"g\":4}],\"s\":[{\"t\":[{\"i\":32}]}],\"z\":27,\"l\":[{\"a\":[{\"n\":[{\"t\":168}],\"t\":[{\"e\":[{\"l\":270}]}]}]}]}],\"l\":9,\"o\":[{\"b\":27,\"n\":[{\"e\":27,\"i\":32}],\"r\":0}],\"s\":18,\"t\":3,\"u\":32,\"y\":41}],\"i\":[{\"a\":[{\"n\":17},3],\"c\":[{\"i\":[{\"e\":1}],\"y\":1,\"a\":[{\"d\":271}]}],\"d\":[{\"a\":19,\"e\":3,\"i\":32},21],\"e\":[{\"c\":27,\"n\":3}],\"g\":[{\"r\":[{\"a\":[{\"p\":1}]}]}],\"l\":[{\"o\":3}],\"n\":[{\".\":21,\"d\":17,\"o\":21},9],\"o\":[{\"n\":17},141],\"t\":[{\"h\":[{\"a\":4},23],\"u\":9}]}],\"k\":142,\"l\":[{\"a\":[{\"n\":27,\"s\":[{\"t\":6}]}],\"i\":[{\"a\":11,\"e\":[{\"r\":5}],\"g\":18,\"n\":[{\"a\":[{\"r\":5}]},0],\"c\":[{\"a\":[{\"b\":208}]}]}],\"o\":[{\"i\":17}],\"u\":[{\"m\":[{\"b\":17},0]}]},143],\"m\":43,\"n\":48,\"o\":[{\"c\":1,\"d\":[{\".\":32}],\"e\":[{\"m\":4,\"t\":144}],\"g\":145,\"i\":[{\"n\":[{\"t\":32,\"c\":[{\"a\":12}]},84]}],\"l\":[{\"y\":[{\"t\":6,\"e\":137,\"p\":[{\"h\":[{\"o\":[{\"n\":[{\"o\":272}]}]}]}]}],\"e\":[{\".\":41}]}],\"n\":[{\"i\":1}],\"p\":1,\"r\":[{\"y\":1},124],\"s\":[{\"s\":15},41],\"t\":[{\"a\":1},21],\"u\":[{\"n\":32}]}],\"p\":[{\"a\":[{\"r\":[{\"a\":5}]}],\"e\":[{\"d\":21,\"l\":19,\"n\":23,\"r\":23,\"t\":23},24],\"o\":[{\"s\":[{\"i\":[{\"t\":[{\"e\":5}]}]}]}]},43],\"r\":[{\"a\":[{\"y\":[{\"e\":17}]}],\"e\":[{\"c\":[{\"i\":32,\"o\":5}],\"e\":[{\"m\":11}],\"f\":[{\"a\":[{\"c\":6}]}],\"l\":[{\"a\":0}],\"r\":11,\"s\":[{\"e\":23,\"s\":27,\"p\":[{\"l\":[{\"i\":84}]}]}],\"t\":[{\"e\":[{\"n\":5}]}],\"v\":11,\"m\":[{\"a\":[{\"c\":273}]}],\"n\":[{\"e\":[{\"u\":15}]}]}],\"i\":[{\"e\":53,\"n\":[{\"t\":146}],\"s\":[{\"o\":12},0]}],\"o\":[{\"c\":[{\"a\":23,\"e\":[{\"s\":[{\"s\":8}]}],\"i\":[{\"t\":[{\"y\":[{\".\":274}]}]}]}],\"f\":[{\"i\":[{\"t\":6}]}],\"l\":11,\"s\":[{\"e\":12}],\"t\":15,\"g\":[{\"e\":208}]}]},9],\"s\":[{\"e\":[{\"u\":[{\"d\":[{\"o\":[{\"d\":276,\"f\":276}]},275]}]},24],\"h\":1,\"i\":[{\"b\":21}]},81],\"t\":[{\"a\":[{\"b\":134}],\"e\":24,\"h\":24,\"i\":[{\"m\":11}],\"u\":[{\"r\":0}],\"w\":21,\"o\":[{\"m\":[{\"a\":[{\"t\":277}]}]}],\"r\":[{\"o\":[{\"l\":278}]}]},42],\"u\":[{\"b\":[{\"e\":[{\"s\":[{\"c\":181}]}]},11],\"e\":0,\"f\":0,\"l\":[{\"c\":11}],\"m\":1,\"n\":9,\"r\":[{\"r\":0}],\"s\":32,\"t\":[{\"e\":[{\"r\":11},32],\"r\":3,\"t\":[{\"e\":[{\"d\":0}],\"i\":[{\"n\":0}]}]},9]}],\"w\":23}],\"q\":[{\"u\":[{\"a\":[{\"v\":5,\"i\":[{\"n\":[{\"t\":[{\"e\":279}]}]}],\"s\":[{\"i\":[{\"r\":281,\"s\":281},280]}]}],\"e\":[{\".\":25,\"r\":27,\"t\":27}],\"i\":[{\"n\":[{\"t\":[{\"e\":[{\"s\":[{\"s\":282}]}]}]}],\"v\":[{\"a\":[{\"r\":14}]}]}]},9]}],\"r\":[{\"a\":[{\"b\":[{\"i\":3,\"o\":[{\"l\":[{\"i\":[{\"c\":29}],\"o\":[{\"i\":236}]}]}]},25],\"c\":[{\"h\":[{\"e\":17,\"u\":3}],\"l\":19}],\"f\":[{\"f\":[{\"i\":5}],\"t\":0}],\"i\":24,\"l\":[{\"o\":1}],\"m\":[{\"e\":[{\"t\":[{\"r\":[{\"i\":[{\"z\":283}]}]},11],\"n\":24}],\"i\":24,\"o\":[{\"u\":3}]}],\"n\":[{\"e\":[{\"o\":6}],\"g\":[{\"e\":0}],\"i\":21,\"o\":4,\"h\":[{\"a\":[{\"s\":167}]}]}],\"p\":[{\"e\":[{\"r\":11}],\"h\":[{\"y\":27}]}],\"r\":[{\"c\":5,\"e\":[{\"f\":5},17],\"i\":[{\"l\":18}]}],\"s\":24,\"t\":[{\"i\":[{\"o\":[{\"n\":115}]}]}],\"u\":[{\"t\":0}],\"v\":[{\"a\":[{\"i\":4}],\"e\":[{\"l\":11}]}],\"z\":[{\"i\":[{\"e\":4}]}],\"d\":[{\"i\":[{\"g\":127,\"o\":[{\"g\":249}]}]}],\"o\":[{\"r\":2}]}],\"b\":[{\"a\":[{\"b\":21,\"g\":21}],\"i\":[{\"f\":0,\"n\":[{\"e\":19,\"g\":[{\".\":4,\"e\":284}]},24]},8],\"o\":1},29],\"c\":[{\"e\":[{\"n\":17},24],\"h\":[{\"a\":23,\"e\":[{\"r\":0}]}],\"i\":[{\"b\":90,\"t\":1}],\"u\":[{\"m\":12}]},29],\"d\":[{\"a\":[{\"l\":21}],\"i\":[{\"a\":0,\"e\":[{\"r\":0}],\"n\":[{\"g\":3},17]},9]}],\"e\":[{\".\":25,\"a\":[{\"l\":2,\"n\":3,\"r\":[{\"r\":4}],\"v\":32,\"w\":1}],\"b\":[{\"r\":[{\"a\":[{\"t\":19}]}]}],\"c\":[{\"o\":[{\"l\":[{\"l\":5}],\"m\":[{\"p\":[{\"e\":5}]}]}],\"r\":[{\"e\":1}],\"i\":[{\"p\":[{\"r\":285}]}],\"t\":[{\"a\":[{\"n\":[{\"g\":286}]}]}]}],\"d\":[{\"e\":2,\"i\":[{\"s\":3,\"t\":5}]},37],\"f\":[{\"a\":[{\"c\":1}],\"e\":[{\"r\":[{\".\":4}]},9],\"i\":3,\"y\":1}],\"g\":[{\"i\":[{\"s\":11}]}],\"i\":[{\"t\":4}],\"l\":[{\"i\":2,\"u\":4}],\"n\":[{\"t\":[{\"a\":90,\"e\":0}]}],\"o\":2,\"p\":[{\"i\":[{\"n\":4}],\"o\":[{\"s\":[{\"i\":1}]}],\"u\":2}],\"r\":[{\"i\":21,\"o\":17,\"u\":4},147],\"s\":[{\".\":21,\"p\":[{\"i\":1}],\"s\":[{\"i\":[{\"b\":6}]}],\"t\":[{\"a\":[{\"l\":4}],\"r\":3},8]}],\"t\":[{\"e\":[{\"r\":1}],\"i\":[{\"z\":96}],\"r\":[{\"i\":[{\"b\":[{\"u\":85}]},3]}]}],\"u\":[{\"t\":[{\"i\":4}]},8],\"v\":[{\"a\":[{\"l\":1}],\"e\":[{\"l\":11,\"r\":[{\".\":30,\"s\":4,\"t\":4}]}],\"i\":[{\"l\":4}],\"o\":[{\"l\":[{\"u\":5}]}]},8],\"w\":[{\"h\":1}]}],\"f\":[{\"u\":0,\"y\":21},29],\"g\":[{\"e\":[{\"r\":3,\"t\":23}],\"i\":[{\"c\":23,\"n\":[{\"g\":3},0],\"s\":19,\"t\":19}],\"l\":29,\"o\":[{\"n\":0}],\"u\":23},9],\"h\":[{\".\":18,\"a\":[{\"l\":18}]},1],\"i\":[{\"a\":[{\"b\":0,\"g\":1,\"l\":[{\".\":23}]},3],\"b\":[{\"a\":11},21],\"c\":[{\"a\":[{\"s\":5}],\"e\":21,\"i\":[{\"d\":32,\"e\":1},18],\"o\":21}],\"d\":[{\"e\":[{\"r\":5}]}],\"e\":[{\"n\":[{\"c\":3,\"t\":3}],\"r\":2,\"t\":4}],\"g\":[{\"a\":[{\"n\":5}],\"i\":32}],\"l\":[{\"i\":[{\"z\":11}]}],\"m\":[{\"a\":[{\"n\":32}],\"i\":5,\"o\":27,\"p\":[{\"e\":0}]}],\"n\":[{\"a\":[{\".\":32},24],\"d\":0,\"e\":0,\"g\":0}],\"o\":2,\"p\":[{\"h\":[{\"e\":6},32],\"l\":[{\"i\":[{\"c\":5}]},9]}],\"q\":21,\"s\":[{\".\":21,\"c\":0,\"h\":23,\"p\":0},24],\"t\":[{\"a\":[{\"b\":116}],\"e\":[{\"d\":[{\".\":19}],\"r\":[{\".\":5,\"s\":5}]}],\"i\":[{\"c\":11}],\"u\":[{\"r\":5},9]}],\"v\":[{\"e\":[{\"l\":5,\"t\":11}],\"i\":11,\"o\":[{\"l\":287}]}]}],\"j\":23,\"k\":[{\"e\":[{\"t\":23}],\"l\":[{\"e\":1,\"i\":[{\"n\":1}]}],\".\":288,\"h\":[{\"o\":2}],\"r\":[{\"a\":[{\"u\":29}]}],\"s\":[{\".\":288}]}],\"l\":[{\"e\":[{\"d\":24,\"q\":[{\"u\":30}]},0],\"i\":[{\"g\":21,\"s\":[{\"h\":4},21]}],\"o\":73},29],\"m\":[{\"a\":[{\"c\":5}],\"e\":[{\"n\":23,\"r\":[{\"s\":4}]},24],\"i\":[{\"n\":[{\"g\":[{\".\":21},3]}],\"o\":21,\"t\":23}],\"y\":21},29],\"n\":[{\"a\":[{\"r\":21}],\"e\":[{\"l\":23,\"r\":21,\"t\":19,\"y\":23}],\"i\":[{\"c\":19,\"s\":92,\"t\":23,\"v\":23}],\"o\":[{\"u\":21},0],\"u\":23}],\"o\":[{\"b\":[{\"l\":11,\"o\":[{\"t\":289}]}],\"c\":[{\"r\":3},24],\"e\":[{\"l\":[{\"a\":[{\"s\":167}]}],\"p\":[{\"i\":[{\"d\":[{\"e\":290}]}]}]},1],\"f\":[{\"e\":2,\"i\":[{\"l\":4}]}],\"k\":[{\"e\":[{\"r\":4}]},8],\"l\":[{\"e\":[{\".\":32}]}],\"m\":[{\"e\":[{\"t\":[{\"e\":5}],\"s\":[{\"h\":3}]}],\"i\":0,\"p\":0}],\"n\":[{\"a\":[{\"l\":0}],\"e\":0,\"i\":[{\"s\":134}],\"t\":[{\"a\":0}]}],\"o\":[{\"m\":41,\"t\":32}],\"p\":[{\"e\":[{\"l\":3}],\"i\":[{\"c\":11}]}],\"r\":[{\"i\":11,\"o\":4}],\"s\":[{\"p\":[{\"e\":[{\"r\":5}]}],\"s\":0}],\"t\":[{\"h\":[{\"e\":1}],\"y\":1,\"r\":[{\"o\":[{\"n\":2}]}]}],\"v\":[{\"a\":1,\"e\":[{\"l\":5}]}],\"x\":5}],\"p\":[{\"e\":[{\"a\":21,\"n\":[{\"t\":19}],\"r\":[{\".\":4}],\"t\":23}],\"h\":95,\"i\":[{\"n\":[{\"g\":3}]}],\"o\":23,\"a\":[{\"u\":[{\"l\":[{\"i\":291}]}]}]},29],\"r\":[{\"e\":[{\"c\":0,\"f\":0,\"o\":21,\"s\":[{\"t\":0}]}],\"i\":[{\"o\":0,\"v\":0}],\"o\":[{\"n\":17,\"s\":17}],\"y\":[{\"s\":17}]},72],\"s\":[{\"a\":[{\"t\":[{\"i\":5}]},29],\"c\":1,\"e\":[{\"c\":[{\"r\":0},23],\"r\":[{\".\":4,\"a\":[{\"d\":[{\"i\":238}]}]}],\"s\":3,\"v\":148},24],\"h\":[{\"a\":19},29],\"i\":[{\"b\":90},29],\"o\":[{\"n\":12}],\"p\":29,\"w\":19},44],\"t\":[{\"a\":[{\"c\":[{\"h\":36}],\"g\":21}],\"e\":[{\"b\":23,\"n\":[{\"d\":17}],\"o\":5}],\"i\":[{\"b\":4,\"d\":0,\"e\":[{\"r\":21}],\"g\":23,\"l\":[{\"i\":12,\"l\":17,\"y\":21}],\"s\":[{\"t\":21}],\"v\":21},29],\"r\":[{\"i\":23,\"o\":[{\"p\":[{\"h\":115}]}],\"e\":[{\"u\":29}]}],\"s\":[{\"h\":1}],\"h\":[{\"o\":[{\"u\":29}]}]}],\"u\":[{\"a\":3,\"e\":[{\"l\":93,\"n\":3}],\"g\":[{\"l\":1}],\"i\":[{\"n\":3}],\"m\":[{\"p\":[{\"l\":11}]}],\"n\":[{\"k\":6,\"t\":[{\"y\":0}]},9],\"s\":[{\"c\":19}],\"t\":[{\"i\":[{\"n\":6}]}]}],\"v\":[{\"e\":[{\"l\":[{\"i\":17}],\"n\":23,\"r\":[{\".\":4}],\"s\":[{\"t\":19}],\"y\":23,\"i\":[{\"l\":29}]},1],\"i\":[{\"c\":23,\"v\":0}],\"o\":23}],\"w\":29,\"y\":[{\"c\":1,\"n\":[{\"g\":[{\"e\":32}]}],\"t\":3}],\"z\":[{\"s\":[{\"c\":2}]}]}],\"s\":[{\"a\":[{\"b\":42,\"c\":[{\"k\":32,\"r\":[{\"i\":11}],\"t\":23}],\"i\":32,\"l\":[{\"a\":[{\"r\":36}],\"m\":0,\"o\":4,\"t\":0,\"e\":[{\"s\":[{\"c\":54,\"w\":7}]}]}],\"n\":[{\"c\":27,\"d\":[{\"e\":0}]}],\"p\":[{\"a\":[{\"r\":[{\"i\":[{\"l\":292}]}]}]},29],\"t\":[{\"a\":4,\"i\":[{\"o\":76}],\"u\":11}],\"u\":0,\"v\":[{\"o\":[{\"r\":4}]}],\"w\":32},9],\"b\":56,\"c\":[{\"a\":[{\"n\":[{\"t\":149}],\"p\":[{\"e\":[{\"r\":267}]},0],\"v\":6,\"t\":[{\"o\":[{\"l\":208}]}]}],\"e\":[{\"d\":21,\"i\":18,\"s\":21}],\"h\":[{\"o\":21,\"i\":[{\"t\":[{\"z\":21}]}],\"r\":[{\"o\":[{\"d\":[{\"i\":[{\"n\":[{\"g\":293}]}]}]}]}]},8],\"i\":[{\"e\":68,\"n\":[{\"d\":150}],\"u\":[{\"t\":[{\"t\":294}]}]}],\"l\":[{\"e\":6,\"i\":21}],\"o\":[{\"f\":17,\"p\":[{\"y\":18}],\"u\":[{\"r\":[{\"a\":7}]}]}],\"u\":29,\"r\":[{\"a\":[{\"p\":[{\"e\":[{\"r\":[{\".\":36}]}]}]}]}],\"y\":[{\"t\":[{\"h\":247}]}]}],\"d\":56,\"e\":[{\".\":18,\"a\":[{\"s\":17,\"w\":5},1],\"c\":[{\"o\":151,\"t\":27}],\"d\":[{\"e\":95,\"l\":19},125],\"g\":[{\"r\":11},9],\"i\":32,\"l\":[{\"e\":2,\"f\":32,\"v\":32}],\"m\":[{\"e\":[{\"s\":[{\"t\":295}]},18],\"o\":[{\"l\":1}],\"a\":[{\"p\":[{\"h\":287}]}],\"i\":[{\"t\":[{\"i\":[{\"c\":296}]}]}]}],\"n\":[{\"a\":[{\"t\":5}],\"c\":18,\"d\":0,\"e\":[{\"d\":19}],\"g\":5,\"i\":[{\"n\":19}],\"t\":[{\"d\":18,\"l\":18}]}],\"p\":[{\"a\":152,\"t\":[{\"e\":[{\"m\":[{\"b\":11}]}]}]}],\"r\":[{\".\":43,\"l\":21,\"o\":0,\"v\":[{\"o\":18}]}],\"s\":[{\"h\":4,\"t\":5},72],\"u\":[{\"m\":113}],\"v\":[{\"e\":[{\"n\":11}]},32],\"w\":[{\"i\":0}],\"x\":32}],\"f\":47,\"g\":48,\"h\":[{\".\":25,\"e\":[{\"r\":2,\"v\":32}],\"i\":[{\"n\":2,\"o\":3,\"p\":27,\"v\":6}],\"o\":[{\"l\":[{\"d\":4}],\"n\":12,\"r\":[{\"t\":7},17],\"e\":[{\"s\":[{\"t\":137}]}]},0],\"w\":18},24],\"i\":[{\"b\":2,\"c\":[{\"c\":19}],\"d\":[{\"e\":[{\".\":27,\"s\":[{\"t\":6,\"w\":6},32],\"d\":[{\".\":8}]}],\"i\":[{\"z\":4},32]}],\"g\":[{\"n\":[{\"a\":18}]}],\"l\":[{\"e\":0,\"y\":18}],\"n\":[{\"a\":24,\"e\":[{\".\":32}],\"g\":23},42],\"o\":[{\"n\":[{\"a\":6},32]},41],\"r\":[{\"a\":5,\"e\":[{\"s\":[{\"i\":[{\"d\":4}]}]}]},9],\"s\":41,\"t\":[{\"i\":[{\"o\":27}]}],\"u\":32,\"v\":41,\"z\":32}],\"k\":[{\"e\":[{\"t\":23},18],\"i\":[{\"n\":[{\"e\":4,\"g\":4}]}],\"y\":[{\"s\":[{\"c\":15}]}]},9],\"l\":[{\"a\":[{\"t\":23}],\"e\":24,\"i\":[{\"t\":[{\"h\":7}]}],\"o\":[{\"v\":[{\"a\":[{\"k\":[{\"i\":[{\"a\":297}]}]}]}]}]},74],\"m\":[{\"a\":[{\"l\":[{\"l\":54}],\"n\":12},23],\"e\":[{\"l\":17,\"n\":19}],\"i\":[{\"t\":[{\"h\":32}]}],\"o\":[{\"l\":[{\"d\":49}]}]},42],\"n\":72,\"o\":[{\"c\":[{\"e\":1}],\"f\":[{\"t\":12}],\"l\":[{\"a\":[{\"b\":1}],\"d\":153,\"i\":[{\"c\":3}],\"v\":32,\"u\":[{\"t\":[{\"e\":9}]}]}],\"m\":27,\"n\":[{\".\":68,\"a\":17,\"g\":0}],\"p\":[{\"h\":[{\"i\":[{\"c\":32,\"z\":19}],\"y\":19}]},21],\"r\":[{\"c\":5,\"d\":5}],\"v\":[{\"i\":4},18],\"g\":[{\"a\":[{\"m\":[{\"y\":298}]}]}]},41],\"p\":[{\"a\":[{\"i\":32,\"n\":0,\"c\":[{\"e\":299,\"i\":[{\"n\":69}]}]},25],\"e\":[{\"n\":[{\"d\":17}],\"o\":57,\"r\":25,\"c\":[{\"i\":[{\"o\":11}]}]}],\"h\":[{\"e\":[{\"r\":[{\"o\":213},27]},24],\"o\":6}],\"i\":[{\"l\":17,\"n\":[{\"g\":4}],\"o\":18,\"c\":[{\"i\":[{\"l\":208}]}]}],\"l\":[{\"y\":21}],\"o\":[{\"n\":21,\"r\":[{\"t\":[{\"s\":[{\"c\":300,\"w\":300}]}]},17],\"t\":18,\"k\":[{\"e\":[{\"s\":[{\"w\":10}]}]}]}]}],\"q\":[{\"u\":[{\"a\":[{\"l\":[{\"l\":36}]}],\"i\":[{\"t\":[{\"o\":88}]}]}]}],\"r\":29,\"s\":[{\"a\":[{\"s\":12,\"c\":[{\"h\":[{\"u\":301}]}]},29],\"c\":94,\"e\":[{\"l\":23,\"n\":[{\"g\":19}],\"s\":[{\".\":21}],\"t\":19}],\"i\":[{\"e\":[{\"r\":0},21],\"l\":[{\"y\":4}],\"a\":[{\"n\":[{\".\":210}]}],\"g\":[{\"n\":[{\"a\":[{\"b\":302}]}]}]},29],\"l\":[{\"i\":1},21],\"n\":21,\"p\":[{\"e\":[{\"n\":[{\"d\":115}]}]}],\"t\":9,\"u\":[{\"r\":[{\"a\":6}]}],\"w\":4,\"h\":[{\"a\":[{\"t\":3}]}]},25],\"t\":[{\".\":25,\"a\":[{\"g\":24,\"l\":24,\"m\":[{\"i\":17,\"p\":69}],\"n\":[{\"d\":32,\"t\":[{\"s\":[{\"h\":[{\"i\":303}]}]}]}],\"p\":90,\"t\":[{\".\":32,\"i\":15}],\"r\":[{\"t\":[{\"l\":[{\"i\":12}]}]}]}],\"e\":[{\"d\":21,\"r\":[{\"n\":[{\"i\":7}],\"o\":19}],\"w\":[{\"a\":6},8]}],\"h\":[{\"e\":23}],\"i\":[{\".\":21,\"a\":19,\"c\":[{\"k\":32},29],\"e\":21,\"f\":23,\"n\":[{\"g\":3}],\"r\":32},9],\"l\":[{\"e\":29}],\"o\":[{\"c\":[{\"k\":32}],\"m\":[{\"a\":12}],\"n\":[{\"e\":32}],\"p\":21,\"r\":[{\"e\":27,\"a\":[{\"b\":304}]}]}],\"r\":[{\"a\":[{\"d\":21,\"t\":[{\"u\":32,\"a\":[{\"g\":305}]}],\"y\":21}],\"i\":[{\"d\":21,\"b\":[{\"u\":[{\"t\":7}]}]}],\"y\":18},1],\"w\":61,\"y\":[{\"l\":[{\"i\":[{\"s\":137}]}]},24],\"b\":4,\"s\":[{\"c\":[{\"r\":4}]}],\"u\":[{\"p\":[{\"i\":[{\"d\":306}]}]}]}],\"u\":[{\"a\":[{\"l\":2}],\"b\":111,\"g\":151,\"i\":[{\"s\":4,\"t\":12}],\"l\":21,\"m\":[{\"i\":11},9],\"n\":9,\"r\":9,\"p\":[{\"e\":[{\"r\":[{\"e\":307}]}]}]},41],\"v\":18,\"w\":[{\"o\":18,\"i\":[{\"m\":[{\"m\":177}]}]},9],\"y\":[{\"c\":18,\"l\":27,\"n\":[{\"o\":5,\"c\":41}],\"r\":[{\"i\":[{\"n\":4}]}],\"t\":[{\"h\":[{\"i\":308}]}]},21]}],\"t\":[{\"a\":[{\".\":27,\"b\":[{\"l\":[{\"e\":[{\"s\":4}]}],\"o\":[{\"l\":[{\"i\":[{\"z\":32,\"s\":[{\"m\":309}]}]}]}]},25],\"c\":[{\"i\":18}],\"d\":[{\"o\":4}],\"f\":46,\"i\":[{\"l\":[{\"o\":5}]}],\"l\":[{\"a\":4,\"e\":[{\"n\":5}],\"i\":11,\"k\":[{\"a\":204},18],\"l\":[{\"i\":[{\"s\":0}]}],\"o\":[{\"g\":4}]},9],\"m\":[{\"o\":4,\"i\":[{\"n\":82}]}],\"n\":[{\"d\":[{\"e\":0}],\"t\":[{\"a\":54}]}],\"p\":[{\"e\":[{\"r\":4}],\"l\":4,\"a\":[{\"t\":[{\"h\":310}]}]}],\"r\":[{\"a\":0,\"c\":18,\"e\":18,\"i\":[{\"z\":3}],\"r\":[{\"h\":311}]}],\"s\":[{\"e\":0,\"y\":4}],\"t\":[{\"i\":[{\"c\":18}],\"u\":[{\"r\":1}]}],\"u\":[{\"n\":17}],\"v\":0,\"w\":25,\"x\":[{\"i\":[{\"s\":0}]}],\"g\":[{\"o\":[{\"n\":[{\".\":3}]}]}]},41],\"b\":42,\"c\":[{\"h\":[{\"e\":[{\"t\":5}],\"c\":15,\"i\":[{\"e\":[{\"r\":237}]}]},21],\"r\":29},18],\"d\":43,\"e\":[{\".\":18,\"a\":[{\"d\":[{\"i\":17}],\"t\":18,\"c\":[{\"h\":[{\"e\":[{\"r\":[{\".\":36}]}]}]}]}],\"c\":[{\"e\":17,\"t\":32}],\"d\":[{\"i\":4},42],\"e\":41,\"g\":[{\"e\":[{\"r\":4}],\"i\":4},0],\"l\":[{\".\":27,\"i\":17,\"s\":32,\"e\":[{\"g\":84,\"r\":[{\"o\":249}]}]}],\"m\":[{\"a\":[{\"t\":11},154]}],\"n\":[{\"a\":[{\"n\":27}],\"c\":27,\"d\":27,\"e\":[{\"s\":18}],\"t\":[{\"a\":[{\"g\":0}]},41]}],\"o\":41,\"p\":[{\"e\":4},1],\"r\":[{\"c\":11,\"d\":155,\"i\":[{\"e\":[{\"s\":5}],\"s\":11,\"z\":[{\"a\":6}],\"c\":[{\".\":8}]},41],\"n\":[{\"i\":[{\"t\":32}]}],\"v\":5,\"g\":[{\"e\":[{\"i\":312}]}]}],\"s\":[{\".\":18,\"s\":[{\".\":23,\"e\":[{\"s\":313}]},18]}],\"t\":[{\"h\":[{\"e\":6}]}],\"u\":27,\"x\":27,\"y\":18}],\"f\":42,\"g\":43,\"h\":[{\".\":25,\"a\":[{\"n\":17,\"l\":[{\"a\":[{\"m\":228}]}]}],\"e\":[{\"a\":[{\"s\":3,\"t\":5},18],\"i\":[{\"s\":11}],\"t\":27},9],\"i\":[{\"c\":[{\".\":4,\"a\":4}],\"l\":18,\"n\":[{\"k\":32}]}],\"l\":18,\"o\":[{\"d\":[{\"e\":4,\"i\":[{\"c\":32}],\"o\":[{\"n\":11}]}],\"o\":18,\"r\":[{\"i\":[{\"t\":6,\"z\":5}]}],\"g\":[{\"e\":[{\"n\":[{\"i\":314}]}]}],\"k\":[{\"e\":[{\"r\":175}]}]}],\"s\":25,\"y\":[{\"l\":[{\"a\":[{\"n\":228}]}],\"s\":[{\"c\":11}]}]}],\"i\":[{\"a\":[{\"b\":1,\"t\":[{\"o\":1}],\"n\":[{\".\":70}]},41],\"b\":156,\"c\":[{\"k\":18,\"o\":21,\"u\":157}],\"d\":[{\"i\":32}],\"e\":[{\"n\":27}],\"f\":[{\"y\":4},8],\"g\":[{\"u\":32},25],\"l\":[{\"l\":[{\"i\":[{\"n\":6}]}]}],\"m\":[{\"p\":18,\"u\":[{\"l\":5}]},41],\"n\":[{\"a\":24,\"e\":[{\".\":27}],\"i\":27,\"o\":[{\"m\":285}]},42],\"o\":[{\"c\":4,\"n\":[{\"e\":[{\"e\":6}]}]},41],\"q\":32,\"s\":[{\"a\":3,\"e\":27,\"m\":0,\"o\":4,\"p\":0,\"t\":[{\"i\":[{\"c\":[{\"a\":32}]}]}]}],\"t\":[{\"l\":3}],\"u\":1,\"v\":[{\"a\":0},41],\"z\":[{\"a\":3,\"e\":[{\"n\":3}]},41]}],\"l\":[{\"a\":[{\"n\":17},19],\"e\":[{\".\":27,\"d\":27,\"s\":[{\".\":27}],\"t\":[{\".\":19}]}],\"o\":19,\"i\":[{\"e\":[{\"r\":315}]}]},25],\"m\":[{\"e\":0},43],\"n\":81,\"o\":[{\"b\":3,\"c\":[{\"r\":[{\"a\":[{\"t\":4}]}]}],\"d\":[{\"o\":18}],\"f\":25,\"g\":[{\"r\":9}],\"i\":[{\"c\":4}],\"m\":[{\"a\":9,\"b\":0,\"y\":3}],\"n\":[{\"a\":[{\"l\":[{\"i\":0}],\"t\":3}],\"o\":18,\"y\":18}],\"r\":[{\"a\":9,\"i\":[{\"e\":3,\"z\":5}]}],\"s\":8,\"u\":[{\"r\":32,\"t\":18}],\"w\":[{\"a\":[{\"r\":3}]}],\"l\":[{\"o\":[{\"g\":[{\"y\":84}]}]}],\"t\":[{\"i\":[{\"c\":11}]}]},41],\"p\":43,\"r\":[{\"a\":[{\"b\":11,\"c\":[{\"h\":5,\"i\":[{\"t\":17},36],\"t\":[{\"e\":17}]}],\"s\":17,\"v\":[{\"e\":[{\"n\":5,\"s\":158,\"r\":[{\"s\":[{\"a\":[{\"b\":317}]},15]}]}]}],\"i\":[{\"t\":[{\"o\":[{\"r\":316}]}]}]},41],\"e\":[{\"f\":5,\"m\":[{\"i\":6},0],\"a\":[{\"c\":[{\"h\":[{\"e\":318}]}]}]}],\"i\":[{\"a\":[{\"l\":[{\".\":1}]},32],\"c\":[{\"e\":[{\"s\":5}],\"i\":[{\"a\":32}],\"s\":18}],\"m\":25,\"v\":0}],\"o\":[{\"m\":[{\"i\":5}],\"n\":[{\"i\":6,\"y\":18}],\"p\":[{\"h\":[{\"e\":5}],\"i\":[{\"s\":175}],\"o\":[{\"l\":[{\"e\":[{\"s\":320}],\"i\":[{\"s\":320,\"t\":321}]}]}]}],\"s\":[{\"p\":11}],\"v\":11,\"l\":[{\"e\":[{\"u\":[{\"m\":319}]}]}],\"f\":[{\"i\":[{\"c\":[{\".\":17}],\"t\":11}]}]}],\"u\":[{\"i\":5,\"s\":17}]}],\"s\":[{\"c\":[{\"h\":[{\"i\":[{\"e\":12}]}]},21],\"h\":0,\"w\":21},101],\"t\":[{\"e\":[{\"s\":21}],\"o\":19,\"u\":0,\"r\":[{\"i\":[{\"b\":[{\"u\":[{\"t\":322}]}]}]}]},66],\"u\":[{\"a\":[{\"r\":3},2],\"b\":[{\"i\":1}],\"d\":8,\"e\":18,\"f\":46,\"i\":76,\"m\":27,\"n\":[{\"i\":[{\"s\":1}]}],\"p\":[{\".\":48}],\"r\":[{\"e\":27,\"i\":[{\"s\":11},32],\"o\":5,\"y\":4,\"n\":[{\"a\":[{\"r\":12}]}]}],\"s\":27},41],\"v\":18,\"w\":[{\"a\":43,\"i\":[{\"s\":17}],\"o\":18,\"h\":29},1],\"y\":[{\"a\":18,\"l\":25,\"p\":[{\"e\":12,\"h\":4,\"a\":[{\"l\":64}]}]},41],\"z\":[{\"e\":1},18]}],\"u\":[{\"a\":[{\"b\":18,\"c\":0,\"n\":[{\"a\":4,\"i\":0}],\"r\":[{\"a\":[{\"n\":[{\"t\":5}]}],\"d\":8,\"i\":11,\"t\":11}],\"t\":29,\"v\":0,\"d\":[{\"r\":[{\"a\":[{\"t\":[{\"i\":3,\"u\":15}]}]}]}]}],\"b\":[{\"e\":[{\"l\":21,\"r\":[{\"o\":21},23]},1],\"i\":[{\"n\":[{\"g\":33}]},72],\"l\":[{\"e\":[{\".\":23}]}]}],\"c\":[{\"a\":23,\"i\":[{\"b\":0,\"t\":1}],\"l\":[{\"e\":12}],\"r\":23,\"u\":23,\"y\":21}],\"d\":[{\"d\":4,\"e\":[{\"r\":3,\"s\":[{\"t\":4}],\"v\":17}],\"i\":[{\"c\":29,\"e\":[{\"d\":3,\"s\":3}],\"s\":4,\"t\":19}],\"o\":[{\"n\":[{\"y\":232},21]}],\"s\":[{\"i\":1}],\"u\":21}],\"e\":[{\"n\":[{\"e\":21,\"s\":17,\"t\":[{\"e\":0}]}],\"r\":[{\"i\":[{\"l\":0}]}],\"a\":[{\"m\":15}]}],\"f\":[{\"a\":27,\"l\":23}],\"g\":[{\"h\":[{\"e\":[{\"n\":11}]}],\"i\":[{\"n\":4}]}],\"i\":[{\"l\":[{\"i\":[{\"z\":5}]}],\"n\":[{\"g\":29},1],\"r\":[{\"m\":0}],\"t\":[{\"a\":17}],\"v\":[{\"e\":[{\"r\":[{\".\":0}]}]},11]},156],\"j\":19,\"k\":18,\"l\":[{\"a\":[{\"b\":5,\"t\":[{\"i\":19}]},29],\"c\":[{\"h\":[{\"e\":32},17]}],\"d\":[{\"e\":[{\"r\":3}]}],\"e\":[{\"n\":29},1],\"g\":[{\"i\":1}],\"i\":[{\"a\":19,\"n\":[{\"g\":3}],\"s\":[{\"h\":4}]},9],\"l\":[{\"a\":[{\"r\":1}],\"i\":[{\"b\":96,\"s\":1}]}],\"m\":61,\"o\":72,\"s\":[{\"e\":[{\"s\":5}]},18],\"t\":[{\"i\":2,\"r\":[{\"a\":54}],\"u\":18}],\"u\":[{\"l\":4},23],\"v\":4}],\"m\":[{\"a\":[{\"b\":4}],\"b\":[{\"i\":1,\"l\":[{\"y\":1}]}],\"i\":[{\"n\":[{\"g\":83}]},29],\"o\":[{\"r\":[{\"o\":6}]}],\"p\":9}],\"n\":[{\"a\":[{\"t\":17}],\"e\":[{\"r\":1},24],\"i\":[{\"m\":1,\"n\":24,\"s\":[{\"h\":4}],\"v\":11},29],\"s\":[{\"w\":1},93],\"t\":[{\"a\":[{\"b\":11}],\"e\":[{\"r\":[{\".\":1}],\"s\":1}]}],\"u\":0,\"y\":4,\"z\":4}],\"o\":[{\"r\":[{\"s\":21}],\"s\":19,\"u\":29}],\"p\":[{\"e\":[{\"r\":[{\"s\":6}]},29],\"i\":[{\"a\":19,\"n\":[{\"g\":3}]}],\"l\":23,\"p\":[{\"o\":[{\"r\":[{\"t\":10}]}]},3],\"t\":[{\"i\":[{\"b\":5}],\"u\":17}]}],\"r\":[{\"a\":[{\".\":18,\"g\":21,\"s\":21,\"l\":[{\".\":216}]},29],\"b\":[{\"e\":1}],\"c\":0,\"d\":2,\"e\":[{\"a\":[{\"t\":5}]}],\"f\":[{\"e\":[{\"r\":1}],\"r\":1}],\"i\":[{\"f\":[{\"i\":[{\"c\":0}]},23],\"n\":2,\"o\":23,\"t\":29,\"z\":3,\"a\":[{\"l\":[{\".\":0}]}]}],\"l\":[{\"i\":[{\"n\":[{\"g\":[{\".\":5}]}]}]},9],\"n\":[{\"o\":1}],\"o\":[{\"s\":17}],\"p\":[{\"e\":1,\"i\":1}],\"s\":[{\"e\":[{\"r\":5}]}],\"t\":[{\"e\":[{\"s\":4}],\"h\":[{\"e\":3}],\"i\":[{\"e\":1},17]}],\"u\":23}],\"s\":[{\"a\":[{\"d\":19,\"n\":19,\"p\":1}],\"c\":[{\"i\":3},8],\"e\":[{\"a\":5,\"r\":[{\".\":9}]}],\"i\":[{\"a\":19,\"c\":23}],\"l\":[{\"i\":[{\"n\":1}]}],\"p\":2,\"s\":[{\"l\":4}],\"t\":[{\"e\":[{\"r\":[{\"e\":4}]}],\"r\":2}],\"u\":[{\"r\":17},24]},25],\"t\":[{\"a\":[{\"b\":0,\"t\":23}],\"e\":[{\".\":18,\"l\":18,\"n\":[{\"i\":17},18]}],\"i\":[{\"l\":[{\"i\":[{\"z\":5}]}],\"n\":[{\"e\":23,\"g\":3}],\"o\":[{\"n\":[{\"a\":7}]}],\"s\":21,\"z\":31},101],\"l\":34,\"o\":[{\"f\":4,\"g\":5,\"m\":[{\"a\":[{\"t\":[{\"i\":[{\"c\":5}]}]}]}],\"n\":19,\"u\":21}],\"s\":0}],\"u\":[{\"m\":1},23],\"v\":74,\"x\":[{\"u\":11}],\"z\":[{\"e\":1}]}],\"v\":[{\"a\":[{\".\":32,\"b\":159,\"c\":[{\"i\":[{\"l\":5}],\"u\":11}],\"g\":[{\"e\":1,\"u\":[{\"e\":[{\"r\":170}]}]},0],\"l\":[{\"i\":[{\"e\":4}],\"o\":5,\"u\":15}],\"m\":[{\"o\":4}],\"n\":[{\"i\":[{\"z\":4}]}],\"p\":[{\"i\":4}],\"r\":[{\"i\":[{\"e\":[{\"d\":5}]}]}],\"t\":[{\"i\":[{\"v\":29}]},27],\"u\":[{\"d\":[{\"e\":[{\"v\":54}]}]}]},41],\"e\":[{\".\":18,\"d\":18,\"g\":11,\"l\":[{\".\":23,\"l\":[{\"i\":11}],\"o\":1,\"y\":21}],\"n\":[{\"o\":[{\"m\":11}],\"u\":[{\"e\":19}]}],\"r\":[{\"d\":21,\"e\":[{\".\":32,\"l\":[{\"y\":[{\".\":41}]},21],\"n\":[{\"c\":5},23],\"s\":21,\"i\":[{\"g\":324}]}],\"i\":[{\"e\":11}],\"m\":[{\"i\":[{\"n\":36}]}],\"s\":[{\"e\":27}],\"t\":[{\"h\":11}]}],\"s\":[{\".\":18,\"t\":[{\"e\":0,\"i\":[{\"t\":[{\"e\":15}]}]}]},99],\"t\":[{\"e\":[{\"r\":11},1],\"y\":1}]}],\"i\":[{\"a\":[{\"l\":[{\"i\":4}],\"n\":32}],\"d\":[{\"e\":[{\".\":32,\"d\":32,\"n\":47,\"s\":32}],\"i\":32}],\"f\":23,\"g\":[{\"n\":4}],\"k\":0,\"l\":[{\"i\":[{\"t\":32,\"z\":127}]},25],\"n\":[{\"a\":26,\"c\":24,\"d\":5,\"g\":18},29],\"o\":[{\"l\":11,\"r\":73,\"u\":2}],\"p\":1,\"r\":[{\"o\":4}],\"s\":[{\"i\":[{\"t\":11}],\"o\":3,\"u\":3}],\"t\":[{\"i\":18,\"r\":11,\"y\":18}],\"v\":[{\"i\":[{\"p\":[{\"a\":[{\"r\":325}]}]}]},27]}],\"o\":[{\".\":32,\"i\":[{\"r\":[{\"d\":[{\"u\":323}]}],\"c\":[{\"e\":[{\"p\":213}]}]},0],\"k\":27,\"l\":[{\"a\":1,\"e\":19,\"t\":32,\"v\":27}],\"m\":[{\"i\":5}],\"r\":[{\"a\":[{\"b\":5}],\"i\":17,\"y\":1}],\"t\":[{\"a\":1,\"e\":[{\"e\":18}]}]}],\"v\":26,\"y\":21}],\"w\":[{\"a\":[{\"b\":[{\"l\":19}],\"c\":25,\"g\":[{\"e\":[{\"r\":4}],\"o\":5}],\"i\":[{\"t\":6}],\"l\":[{\".\":19}],\"m\":0,\"r\":[{\"t\":0}],\"s\":[{\"t\":[{\"e\":[{\"w\":[{\"a\":326}]}]},0]}],\"t\":[{\"e\":2}],\"v\":[{\"e\":[{\"r\":4,\"g\":327}]}]}],\"b\":29,\"e\":[{\"a\":[{\"r\":[{\"i\":[{\"e\":5}]}],\"t\":[{\"h\":54}]}],\"d\":[{\"n\":0}],\"e\":[{\"t\":12,\"v\":5,\"k\":[{\"n\":137}]}],\"l\":[{\"l\":0}],\"r\":29,\"s\":[{\"t\":12}],\"v\":23}],\"h\":[{\"i\":0}],\"i\":[{\"l\":[{\"l\":[{\"i\":[{\"n\":6}]}]},8],\"n\":[{\"d\":[{\"e\":0}],\"g\":0}],\"r\":0,\"s\":[{\"e\":27}],\"t\":[{\"h\":12}],\"z\":5,\"d\":[{\"e\":[{\"s\":[{\"p\":6}]}]}]},9],\"k\":21,\"l\":[{\"e\":[{\"s\":1}],\"i\":[{\"n\":3}]}],\"n\":[{\"o\":21}],\"o\":[{\"m\":15,\"v\":[{\"e\":[{\"n\":4}]}],\"k\":[{\"e\":[{\"n\":85}]}]},160],\"p\":19,\"r\":[{\"a\":[{\"p\":[{\"a\":[{\"r\":[{\"o\":12}]}]}]},0],\"i\":[{\"t\":[{\"a\":36,\"e\":[{\"r\":[{\".\":183}]}]}]},0]}],\"s\":[{\"h\":23,\"l\":1,\"p\":[{\"e\":1}],\"t\":60}],\"t\":18,\"y\":1,\"c\":23}],\"x\":[{\"a\":[{\"c\":[{\"e\":5}],\"g\":[{\"o\":21}],\"m\":11,\"p\":21,\"s\":5},29],\"c\":161,\"e\":[{\"c\":[{\"u\":[{\"t\":[{\"o\":1}]}]}],\"d\":24,\"r\":[{\"i\":0,\"o\":4}]},29],\"h\":[{\"i\":[{\"l\":6},8],\"u\":0},29],\"i\":[{\"a\":4,\"c\":4,\"d\":[{\"i\":4}],\"m\":[{\"e\":21,\"i\":[{\"z\":4}]}]},23],\"o\":[{\"b\":21},23],\"p\":[{\"a\":[{\"n\":[{\"d\":17}]}],\"e\":[{\"c\":[{\"t\":[{\"o\":10}]}],\"d\":11}]},23],\"t\":[{\"i\":23},74],\"u\":[{\"a\":3},29],\"x\":1,\"q\":[{\"u\":[{\"i\":[{\"s\":54}]}]},29]}],\"y\":[{\"a\":[{\"c\":19,\"r\":110,\"t\":19}],\"b\":29,\"c\":[{\"e\":[{\"r\":4},24],\"h\":[{\"e\":[{\"d\":264},0]},23],\"o\":[{\"m\":17,\"t\":17}]},29],\"d\":29,\"e\":[{\"e\":19,\"r\":[{\"f\":21},29],\"s\":[{\"t\":[{\"e\":[{\"r\":[{\"y\":328}]}]}]},0],\"t\":1}],\"g\":[{\"i\":19}],\"h\":47,\"i\":29,\"l\":[{\"a\":23,\"l\":[{\"a\":[{\"b\":[{\"l\":6}]}]}],\"o\":23,\"u\":19}],\"m\":[{\"b\":[{\"o\":[{\"l\":7}]}],\"e\":[{\"t\":[{\"r\":[{\"y\":20}]}]},0],\"p\":[{\"a\":12}]}],\"n\":[{\"c\":[{\"h\":[{\"r\":3}]}],\"d\":4,\"g\":4,\"i\":[{\"c\":4}],\"x\":32}],\"o\":[{\"d\":4,\"g\":33,\"m\":0,\"n\":[{\"e\":[{\"t\":4}],\"s\":21}],\"s\":21},72],\"p\":[{\"e\":[{\"d\":21,\"r\":6}],\"i\":3,\"o\":[{\"c\":21},23],\"t\":[{\"a\":9}],\"u\":19}],\"r\":[{\"a\":[{\"m\":5}],\"i\":[{\"a\":4}],\"o\":23,\"r\":1}],\"s\":[{\"c\":1,\"e\":161,\"i\":[{\"c\":[{\"a\":3}],\"o\":3,\"s\":27}],\"o\":21,\"s\":0,\"t\":[{\"a\":3,\"r\":[{\"o\":29}]},2],\"u\":[{\"r\":17}]}],\"t\":[{\"h\":[{\"i\":[{\"n\":23}]}],\"i\":[{\"c\":3}]}],\"w\":29}],\"z\":[{\"a\":[{\"b\":79,\"r\":8},2],\"b\":18,\"e\":[{\"n\":1,\"p\":1,\"r\":[{\"o\":3},29],\"t\":0},25],\"i\":[{\"l\":21,\"s\":21,\"a\":[{\"n\":[{\".\":23}]}]},42],\"l\":32,\"m\":18,\"o\":[{\"m\":1,\"o\":[{\"l\":4}],\"p\":[{\"h\":[{\"r\":329}]}]},41],\"t\":[{\"e\":0}],\"z\":[{\"y\":21,\"w\":231},101]}]}",
16391
+ [
16392
+ "as-so-ciate",
16393
+ "as-so-ciates",
16394
+ "dec-li-na-tion",
16395
+ "oblig-a-tory",
16396
+ "phil-an-thropic",
16397
+ "present",
16398
+ "presents",
16399
+ "project",
16400
+ "projects",
16401
+ "reci-procity",
16402
+ "re-cog-ni-zance",
16403
+ "ref-or-ma-tion",
16404
+ "ret-ri-bu-tion",
16405
+ "ta-ble"
16406
+ ]
16407
+ ];
16408
+
16090
16409
  //#endregion
16091
16410
  //#region src/components/docs/layout/hyphenation/tools.ts
16092
16411
  function parsePattern(pattern) {
@@ -16739,28 +17058,45 @@ var DocumentSkeleton = class DocumentSkeleton extends Skeleton {
16739
17058
  }
16740
17059
  }
16741
17060
  let exactMatch = null;
16742
- if (skeTables.size > 0) for (const table of skeTables.values()) {
16743
- var _this$_findLiquid, _this$_findLiquid2, _this$_findLiquid9;
16744
- const { top: tableTop, left: tableLeft, rows } = table;
16745
- (_this$_findLiquid = this._findLiquid) === null || _this$_findLiquid === void 0 || _this$_findLiquid.translateSave();
16746
- (_this$_findLiquid2 = this._findLiquid) === null || _this$_findLiquid2 === void 0 || _this$_findLiquid2.translate(tableLeft, tableTop);
16747
- for (const row of rows) {
16748
- var _this$_findLiquid3, _this$_findLiquid4, _this$_findLiquid8;
16749
- const { top: rowTop, cells, isRepeatRow } = row;
16750
- if (isRepeatRow) continue;
16751
- (_this$_findLiquid3 = this._findLiquid) === null || _this$_findLiquid3 === void 0 || _this$_findLiquid3.translateSave();
16752
- (_this$_findLiquid4 = this._findLiquid) === null || _this$_findLiquid4 === void 0 || _this$_findLiquid4.translate(0, rowTop);
16753
- for (const cell of cells) {
16754
- var _this$_findLiquid5, _this$_findLiquid6, _exactMatch3, _this$_findLiquid7;
16755
- const { left: cellLeft } = cell;
17061
+ if (skeTables.size > 0) {
17062
+ var _this$_docViewModel$g, _this$_docViewModel$g2, _this$_docViewModel$g3;
17063
+ const unitId = (_this$_docViewModel$g = (_this$_docViewModel$g2 = (_this$_docViewModel$g3 = this._docViewModel.getDataModel()).getUnitId) === null || _this$_docViewModel$g2 === void 0 ? void 0 : _this$_docViewModel$g2.call(_this$_docViewModel$g3)) !== null && _this$_docViewModel$g !== void 0 ? _this$_docViewModel$g : "";
17064
+ for (const table of skeTables.values()) {
17065
+ var _this$_findLiquid, _this$_findLiquid2, _this$_findLiquid11;
17066
+ const { top: tableTop, left: tableLeft, rows } = table;
17067
+ const sourceTableId = getTableIdAndSliceIndex(table.tableId).tableId;
17068
+ const viewport = getDocsTableRenderViewport(unitId, sourceTableId);
17069
+ (_this$_findLiquid = this._findLiquid) === null || _this$_findLiquid === void 0 || _this$_findLiquid.translateSave();
17070
+ (_this$_findLiquid2 = this._findLiquid) === null || _this$_findLiquid2 === void 0 || _this$_findLiquid2.translate(tableLeft, tableTop);
17071
+ if (viewport && viewport.contentWidth > viewport.viewportWidth) {
17072
+ var _this$_findLiquid4;
17073
+ const visibleLeft = this._findLiquid.x;
17074
+ const visibleRight = visibleLeft + viewport.viewportWidth;
17075
+ if (x < visibleLeft || x > visibleRight) {
17076
+ var _this$_findLiquid3;
17077
+ (_this$_findLiquid3 = this._findLiquid) === null || _this$_findLiquid3 === void 0 || _this$_findLiquid3.translateRestore();
17078
+ continue;
17079
+ }
17080
+ (_this$_findLiquid4 = this._findLiquid) === null || _this$_findLiquid4 === void 0 || _this$_findLiquid4.translate(-viewport.scrollLeft, 0);
17081
+ }
17082
+ for (const row of rows) {
17083
+ var _this$_findLiquid5, _this$_findLiquid6, _this$_findLiquid10;
17084
+ const { top: rowTop, cells, isRepeatRow } = row;
17085
+ if (isRepeatRow) continue;
16756
17086
  (_this$_findLiquid5 = this._findLiquid) === null || _this$_findLiquid5 === void 0 || _this$_findLiquid5.translateSave();
16757
- (_this$_findLiquid6 = this._findLiquid) === null || _this$_findLiquid6 === void 0 || _this$_findLiquid6.translate(cellLeft, 0);
16758
- exactMatch = (_exactMatch3 = exactMatch) !== null && _exactMatch3 !== void 0 ? _exactMatch3 : this._collectNearestNode(cell, 3, cell, segmentId, pi, cache, x, y, pageLength, nestLevel + 1);
16759
- (_this$_findLiquid7 = this._findLiquid) === null || _this$_findLiquid7 === void 0 || _this$_findLiquid7.translateRestore();
17087
+ (_this$_findLiquid6 = this._findLiquid) === null || _this$_findLiquid6 === void 0 || _this$_findLiquid6.translate(0, rowTop);
17088
+ for (const cell of cells) {
17089
+ var _this$_findLiquid7, _this$_findLiquid8, _exactMatch3, _this$_findLiquid9;
17090
+ const { left: cellLeft } = cell;
17091
+ (_this$_findLiquid7 = this._findLiquid) === null || _this$_findLiquid7 === void 0 || _this$_findLiquid7.translateSave();
17092
+ (_this$_findLiquid8 = this._findLiquid) === null || _this$_findLiquid8 === void 0 || _this$_findLiquid8.translate(cellLeft, 0);
17093
+ exactMatch = (_exactMatch3 = exactMatch) !== null && _exactMatch3 !== void 0 ? _exactMatch3 : this._collectNearestNode(cell, 3, cell, segmentId, pi, cache, x, y, pageLength, nestLevel + 1);
17094
+ (_this$_findLiquid9 = this._findLiquid) === null || _this$_findLiquid9 === void 0 || _this$_findLiquid9.translateRestore();
17095
+ }
17096
+ (_this$_findLiquid10 = this._findLiquid) === null || _this$_findLiquid10 === void 0 || _this$_findLiquid10.translateRestore();
16760
17097
  }
16761
- (_this$_findLiquid8 = this._findLiquid) === null || _this$_findLiquid8 === void 0 || _this$_findLiquid8.translateRestore();
17098
+ (_this$_findLiquid11 = this._findLiquid) === null || _this$_findLiquid11 === void 0 || _this$_findLiquid11.translateRestore();
16762
17099
  }
16763
- (_this$_findLiquid9 = this._findLiquid) === null || _this$_findLiquid9 === void 0 || _this$_findLiquid9.translateRestore();
16764
17100
  }
16765
17101
  if (exactMatch) {
16766
17102
  this._findLiquid.translateRestore();
@@ -17045,10 +17381,12 @@ function createDocumentModelWithStyle(content, textStyle, config = {}) {
17045
17381
  width: Number.POSITIVE_INFINITY,
17046
17382
  height: Number.POSITIVE_INFINITY
17047
17383
  },
17384
+ documentFlavor: DocumentFlavor.UNSPECIFIED,
17048
17385
  marginTop,
17049
17386
  marginBottom,
17050
17387
  marginRight,
17051
17388
  marginLeft,
17389
+ paragraphLineGapDefault: 0,
17052
17390
  renderConfig: {
17053
17391
  horizontalAlign,
17054
17392
  verticalAlign,
@@ -17090,7 +17428,7 @@ function getFontFormat(format) {
17090
17428
  }
17091
17429
 
17092
17430
  //#endregion
17093
- //#region \0@oxc-project+runtime@0.129.0/helpers/decorateParam.js
17431
+ //#region \0@oxc-project+runtime@0.134.0/helpers/esm/decorateParam.js
17094
17432
  function __decorateParam(paramIndex, decorator) {
17095
17433
  return function(target, key) {
17096
17434
  decorator(target, key, paramIndex);
@@ -17098,7 +17436,7 @@ function __decorateParam(paramIndex, decorator) {
17098
17436
  }
17099
17437
 
17100
17438
  //#endregion
17101
- //#region \0@oxc-project+runtime@0.129.0/helpers/decorate.js
17439
+ //#region \0@oxc-project+runtime@0.134.0/helpers/esm/decorate.js
17102
17440
  function __decorate(decorators, target, key, desc) {
17103
17441
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17104
17442
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -21262,6 +21600,7 @@ var FontAndBaseLine = class extends docExtension {
21262
21600
  "actualFontMap",
21263
21601
  {}
21264
21602
  );
21603
+ _defineProperty(this, "_textFillImageCache", /* @__PURE__ */ new Map());
21265
21604
  }
21266
21605
  draw(ctx, _parentScale, glyph, _, _more) {
21267
21606
  var _glyph$parent;
@@ -21280,13 +21619,162 @@ var FontAndBaseLine = class extends docExtension {
21280
21619
  this.actualFontMap[fontStringPxStr] = ctx.font;
21281
21620
  }
21282
21621
  }
21283
- const { cl: colorStyle, va: baselineOffset } = textStyle;
21622
+ const { cl: colorStyle, va: baselineOffset, textFill } = textStyle;
21284
21623
  const fontColor = getColorStyle(colorStyle) || "rgb(0,0,0)";
21285
- if (fontColor && this._preFontColor !== fontColor) ctx.fillStyle = fontColor;
21286
21624
  if (baselineOffset === BaselineOffset.SUPERSCRIPT) spanPointWithFont.y += -bBox.spo;
21287
21625
  else if (baselineOffset === BaselineOffset.SUBSCRIPT) spanPointWithFont.y += bBox.sbo;
21626
+ if (this._fillTextWithTextFill(ctx, glyph, spanPointWithFont, textFill, fontColor)) return;
21627
+ if (fontColor && this._preFontColor !== fontColor) ctx.fillStyle = fontColor;
21288
21628
  this._fillText(ctx, glyph, spanPointWithFont);
21289
21629
  }
21630
+ _fillTextWithTextFill(ctx, glyph, spanPointWithFont, textFill, fallbackColor) {
21631
+ if (!textFill || textFill.type === "none") return (textFill === null || textFill === void 0 ? void 0 : textFill.type) === "none";
21632
+ const { content, glyphType } = glyph;
21633
+ if (content == null || glyphType === 2) return false;
21634
+ const { renderConfig } = this.extensionOffset;
21635
+ const { vertexAngle, centerAngle } = renderConfig !== null && renderConfig !== void 0 ? renderConfig : {};
21636
+ const VERTICAL_DEG = 90;
21637
+ if (vertexAngle === VERTICAL_DEG && centerAngle === VERTICAL_DEG) return false;
21638
+ const bounds = this._getGlyphPaintBounds(glyph, spanPointWithFont);
21639
+ if (bounds.width <= 0 || bounds.height <= 0) return false;
21640
+ const color = this._colorWithOpacity(textFill.color || fallbackColor, textFill.opacity);
21641
+ if (textFill.type === "solid") {
21642
+ ctx.fillStyle = color;
21643
+ this._fillText(ctx, glyph, spanPointWithFont);
21644
+ return true;
21645
+ }
21646
+ if (textFill.type === "gradient") {
21647
+ const gradient = this._createTextGradient(ctx, bounds, textFill, fallbackColor);
21648
+ if (!gradient) return false;
21649
+ ctx.fillStyle = gradient;
21650
+ this._fillText(ctx, glyph, spanPointWithFont);
21651
+ return true;
21652
+ }
21653
+ if (textFill.type === "picture") {
21654
+ const pattern = this._createTextPicturePattern(ctx, bounds, textFill);
21655
+ if (!pattern) return false;
21656
+ ctx.fillStyle = pattern;
21657
+ this._fillText(ctx, glyph, spanPointWithFont);
21658
+ return true;
21659
+ }
21660
+ return false;
21661
+ }
21662
+ _getGlyphPaintBounds(glyph, spanPointWithFont) {
21663
+ const { width, bBox } = glyph;
21664
+ const textWidth = Math.max(width, bBox.width, 1);
21665
+ const textHeight = Math.max(bBox.aba + bBox.abd, 1);
21666
+ return {
21667
+ left: spanPointWithFont.x,
21668
+ top: spanPointWithFont.y - bBox.aba,
21669
+ width: textWidth,
21670
+ height: textHeight
21671
+ };
21672
+ }
21673
+ _createTextGradient(ctx, bounds, textFill, fallbackColor) {
21674
+ var _gradient$type, _gradient$angle, _context;
21675
+ const gradient = textFill.gradient;
21676
+ const type = (_gradient$type = gradient === null || gradient === void 0 ? void 0 : gradient.type) !== null && _gradient$type !== void 0 ? _gradient$type : "linear";
21677
+ const angle = (_gradient$angle = gradient === null || gradient === void 0 ? void 0 : gradient.angle) !== null && _gradient$angle !== void 0 ? _gradient$angle : 0;
21678
+ const stops = this._normalizeGradientStops(gradient === null || gradient === void 0 ? void 0 : gradient.stops, textFill.color || fallbackColor);
21679
+ const centerX = bounds.left + bounds.width / 2;
21680
+ const centerY = bounds.top + bounds.height / 2;
21681
+ let canvasGradient;
21682
+ if (type === "radial") {
21683
+ const radius = Math.max(bounds.width, bounds.height) / 2;
21684
+ canvasGradient = ctx.createRadialGradient(centerX, centerY, 0, centerX, centerY, radius);
21685
+ } else if (type === "angular" && "createConicGradient" in ((_context = ctx._context) !== null && _context !== void 0 ? _context : ctx)) {
21686
+ var _context2;
21687
+ canvasGradient = ((_context2 = ctx._context) !== null && _context2 !== void 0 ? _context2 : ctx).createConicGradient((angle - 90) * Math.PI / 180, centerX, centerY);
21688
+ } else if (type === "diamond") {
21689
+ const radius = Math.max(bounds.width, bounds.height) / 2;
21690
+ canvasGradient = ctx.createRadialGradient(centerX, centerY, 0, centerX, centerY, radius);
21691
+ } else {
21692
+ const line = this._getLinearGradientLine(bounds, angle);
21693
+ canvasGradient = ctx.createLinearGradient(line.x0, line.y0, line.x1, line.y1);
21694
+ }
21695
+ for (const stop of stops) {
21696
+ var _textFill$opacity, _stop$opacity;
21697
+ const opacity = ((_textFill$opacity = textFill.opacity) !== null && _textFill$opacity !== void 0 ? _textFill$opacity : 1) * ((_stop$opacity = stop.opacity) !== null && _stop$opacity !== void 0 ? _stop$opacity : 1);
21698
+ canvasGradient.addColorStop(stop.offset, this._colorWithOpacity(stop.color, opacity));
21699
+ }
21700
+ return canvasGradient;
21701
+ }
21702
+ _createTextPicturePattern(ctx, bounds, textFill) {
21703
+ var _textFill$picture, _ref, _textFill$picture$opa, _textFill$picture2, _textFill$picture3, _pattern$setTransform;
21704
+ const source = (_textFill$picture = textFill.picture) === null || _textFill$picture === void 0 ? void 0 : _textFill$picture.source;
21705
+ if (!source) return null;
21706
+ const image = this._getTextFillImage(source);
21707
+ if (!image || !image.complete || !(image.naturalWidth || image.width)) return null;
21708
+ const canvas = document.createElement("canvas");
21709
+ canvas.width = Math.max(1, Math.ceil(bounds.width));
21710
+ canvas.height = Math.max(1, Math.ceil(bounds.height));
21711
+ const canvasContext = canvas.getContext("2d");
21712
+ if (!canvasContext) return null;
21713
+ canvasContext.globalAlpha = this._clamp((_ref = (_textFill$picture$opa = (_textFill$picture2 = textFill.picture) === null || _textFill$picture2 === void 0 ? void 0 : _textFill$picture2.opacity) !== null && _textFill$picture$opa !== void 0 ? _textFill$picture$opa : textFill.opacity) !== null && _ref !== void 0 ? _ref : 1, 0, 1);
21714
+ if (((_textFill$picture3 = textFill.picture) === null || _textFill$picture3 === void 0 ? void 0 : _textFill$picture3.mode) === "tile") {
21715
+ var _textFill$picture$sca, _textFill$picture$sca2, _textFill$picture$off, _textFill$picture$off2;
21716
+ const scaleX = (_textFill$picture$sca = textFill.picture.scaleX) !== null && _textFill$picture$sca !== void 0 ? _textFill$picture$sca : 1;
21717
+ const scaleY = (_textFill$picture$sca2 = textFill.picture.scaleY) !== null && _textFill$picture$sca2 !== void 0 ? _textFill$picture$sca2 : 1;
21718
+ const cellWidth = Math.max(1, (image.naturalWidth || image.width) * scaleX);
21719
+ const cellHeight = Math.max(1, (image.naturalHeight || image.height) * scaleY);
21720
+ const offsetX = (_textFill$picture$off = textFill.picture.offsetX) !== null && _textFill$picture$off !== void 0 ? _textFill$picture$off : 0;
21721
+ const offsetY = (_textFill$picture$off2 = textFill.picture.offsetY) !== null && _textFill$picture$off2 !== void 0 ? _textFill$picture$off2 : 0;
21722
+ for (let x = (offsetX % cellWidth + cellWidth) % cellWidth - cellWidth; x < canvas.width; x += cellWidth) for (let y = (offsetY % cellHeight + cellHeight) % cellHeight - cellHeight; y < canvas.height; y += cellHeight) canvasContext.drawImage(image, x, y, cellWidth, cellHeight);
21723
+ } else canvasContext.drawImage(image, 0, 0, canvas.width, canvas.height);
21724
+ const pattern = ctx.createPattern(canvas, "no-repeat");
21725
+ pattern === null || pattern === void 0 || (_pattern$setTransform = pattern.setTransform) === null || _pattern$setTransform === void 0 || _pattern$setTransform.call(pattern, new DOMMatrix().translate(bounds.left, bounds.top));
21726
+ return pattern;
21727
+ }
21728
+ _getTextFillImage(source) {
21729
+ const cached = this._textFillImageCache.get(source);
21730
+ if (cached) return cached;
21731
+ const image = new Image();
21732
+ image.crossOrigin = "anonymous";
21733
+ image.src = source;
21734
+ this._textFillImageCache.set(source, image);
21735
+ return image.complete ? image : null;
21736
+ }
21737
+ _normalizeGradientStops(stops, fallbackColor) {
21738
+ return (stops && stops.length >= 2 ? stops : [{
21739
+ offset: 0,
21740
+ color: fallbackColor
21741
+ }, {
21742
+ offset: 100,
21743
+ color: "#ffffff"
21744
+ }]).map((stop) => ({
21745
+ color: stop.color,
21746
+ offset: this._clamp(stop.offset > 1 ? stop.offset / 100 : stop.offset, 0, 1),
21747
+ opacity: stop.opacity
21748
+ }));
21749
+ }
21750
+ _getLinearGradientLine(bounds, angle) {
21751
+ const angleRad = angle * Math.PI / 180;
21752
+ const centerX = bounds.left + bounds.width / 2;
21753
+ const centerY = bounds.top + bounds.height / 2;
21754
+ const cos = Math.cos(angleRad);
21755
+ const sin = Math.sin(angleRad);
21756
+ const halfDiagonal = (Math.abs(bounds.width * cos) + Math.abs(bounds.height * sin)) / 2;
21757
+ return {
21758
+ x0: centerX - cos * halfDiagonal,
21759
+ y0: centerY - sin * halfDiagonal,
21760
+ x1: centerX + cos * halfDiagonal,
21761
+ y1: centerY + sin * halfDiagonal
21762
+ };
21763
+ }
21764
+ _colorWithOpacity(color, opacity) {
21765
+ if (opacity === void 0 || opacity >= 1) return color;
21766
+ const alpha = this._clamp(opacity, 0, 1);
21767
+ const hex = color.trim();
21768
+ if (/^#[0-9a-f]{3}$/i.test(hex)) {
21769
+ const [, r, g, b] = hex;
21770
+ return `rgba(${Number.parseInt(r + r, 16)}, ${Number.parseInt(g + g, 16)}, ${Number.parseInt(b + b, 16)}, ${alpha})`;
21771
+ }
21772
+ if (/^#[0-9a-f]{6}$/i.test(hex)) return `rgba(${Number.parseInt(hex.slice(1, 3), 16)}, ${Number.parseInt(hex.slice(3, 5), 16)}, ${Number.parseInt(hex.slice(5, 7), 16)}, ${alpha})`;
21773
+ return color;
21774
+ }
21775
+ _clamp(value, min, max) {
21776
+ return Math.max(min, Math.min(max, value));
21777
+ }
21290
21778
  _fillText(ctx, glyph, spanPointWithFont) {
21291
21779
  const { renderConfig, spanStartPoint, centerPoint } = this.extensionOffset;
21292
21780
  const { content, width, bBox } = glyph;
@@ -21514,7 +22002,8 @@ DocumentsSpanAndLineExtensionRegistry.add(new Line());
21514
22002
 
21515
22003
  //#endregion
21516
22004
  //#region src/components/docs/document.ts
21517
- const DEFAULT_BORDER_COLOR = { color: { rgb: "#dee0e3" } };
22005
+ const DEFAULT_BORDER_COLOR = { color: { rgb: "#c7c9cc" } };
22006
+ const TABLE_VIEWPORT_BORDER_CLIP_PADDING = 2;
21518
22007
  var Documents = class Documents extends DocComponent {
21519
22008
  constructor(oKey, documentSkeleton, config) {
21520
22009
  super(oKey, documentSkeleton, config);
@@ -21697,29 +22186,62 @@ var Documents = class Documents extends DocComponent {
21697
22186
  }
21698
22187
  }
21699
22188
  _drawTable(ctx, page, skeTables, extensions, backgroundExtension, glyphExtensionsExcludeBackground, alignOffsetNoAngle, centerAngle, vertexAngle, renderConfig, parentScale) {
21700
- for (const [_tableId, tableSkeleton] of skeTables) {
21701
- var _this$_drawLiquid, _this$_drawLiquid2, _this$_drawLiquid9;
22189
+ const drawLiquid = this._drawLiquid;
22190
+ if (drawLiquid == null) return;
22191
+ const renderUnitId = this._getRenderUnitId();
22192
+ for (const [tableId, tableSkeleton] of skeTables) {
21702
22193
  const { top: tableTop, left: tableLeft, rows } = tableSkeleton;
21703
- (_this$_drawLiquid = this._drawLiquid) === null || _this$_drawLiquid === void 0 || _this$_drawLiquid.translateSave();
21704
- (_this$_drawLiquid2 = this._drawLiquid) === null || _this$_drawLiquid2 === void 0 || _this$_drawLiquid2.translate(tableLeft, tableTop);
22194
+ const sourceTableId = getTableIdAndSliceIndex(tableId).tableId;
22195
+ const viewport = this._getTableViewport(page, tableSkeleton, renderUnitId, sourceTableId);
22196
+ drawLiquid.translateSave();
22197
+ drawLiquid.translate(tableLeft, tableTop);
22198
+ if (viewport && viewport.contentWidth > viewport.viewportWidth) {
22199
+ const { x, y } = drawLiquid;
22200
+ ctx.save();
22201
+ ctx.beginPath();
22202
+ ctx.rectByPrecision(x + page.marginLeft - TABLE_VIEWPORT_BORDER_CLIP_PADDING, y + page.marginTop - TABLE_VIEWPORT_BORDER_CLIP_PADDING, viewport.viewportWidth + TABLE_VIEWPORT_BORDER_CLIP_PADDING * 2, tableSkeleton.height + TABLE_VIEWPORT_BORDER_CLIP_PADDING * 2);
22203
+ ctx.closePath();
22204
+ ctx.clip();
22205
+ drawLiquid.translate(-viewport.scrollLeft, 0);
22206
+ }
21705
22207
  for (const row of rows) {
21706
- var _this$_drawLiquid3, _this$_drawLiquid4, _this$_drawLiquid8;
21707
22208
  const { top: rowTop, cells } = row;
21708
- (_this$_drawLiquid3 = this._drawLiquid) === null || _this$_drawLiquid3 === void 0 || _this$_drawLiquid3.translateSave();
21709
- (_this$_drawLiquid4 = this._drawLiquid) === null || _this$_drawLiquid4 === void 0 || _this$_drawLiquid4.translate(0, rowTop);
22209
+ drawLiquid.translateSave();
22210
+ drawLiquid.translate(0, rowTop);
21710
22211
  for (const cell of cells) {
21711
- var _this$_drawLiquid5, _this$_drawLiquid6, _this$_drawLiquid7;
22212
+ if (cell.isMergedCellCovered) continue;
21712
22213
  const { left: cellLeft } = cell;
21713
- (_this$_drawLiquid5 = this._drawLiquid) === null || _this$_drawLiquid5 === void 0 || _this$_drawLiquid5.translateSave();
21714
- (_this$_drawLiquid6 = this._drawLiquid) === null || _this$_drawLiquid6 === void 0 || _this$_drawLiquid6.translate(cellLeft, 0);
22214
+ drawLiquid.translateSave();
22215
+ drawLiquid.translate(cellLeft, 0);
21715
22216
  this._drawTableCell(ctx, page, cell, extensions, backgroundExtension, glyphExtensionsExcludeBackground, alignOffsetNoAngle, centerAngle, vertexAngle, renderConfig, parentScale);
21716
- (_this$_drawLiquid7 = this._drawLiquid) === null || _this$_drawLiquid7 === void 0 || _this$_drawLiquid7.translateRestore();
22217
+ drawLiquid.translateRestore();
21717
22218
  }
21718
- (_this$_drawLiquid8 = this._drawLiquid) === null || _this$_drawLiquid8 === void 0 || _this$_drawLiquid8.translateRestore();
22219
+ drawLiquid.translateRestore();
21719
22220
  }
21720
- (_this$_drawLiquid9 = this._drawLiquid) === null || _this$_drawLiquid9 === void 0 || _this$_drawLiquid9.translateRestore();
22221
+ if (viewport && viewport.contentWidth > viewport.viewportWidth) ctx.restore();
22222
+ drawLiquid.translateRestore();
21721
22223
  }
21722
22224
  }
22225
+ _getTableViewport(page, tableSkeleton, unitId, tableId) {
22226
+ const viewport = getDocsTableRenderViewport(unitId, tableId);
22227
+ if (viewport) return viewport;
22228
+ const { pageWidth, marginLeft = 0, marginRight = 0 } = page;
22229
+ if (!Number.isFinite(pageWidth)) return null;
22230
+ const viewportWidth = Math.max(0, pageWidth - marginLeft - marginRight - tableSkeleton.left);
22231
+ if (viewportWidth <= 0 || tableSkeleton.width <= viewportWidth) return null;
22232
+ return {
22233
+ contentWidth: tableSkeleton.width,
22234
+ scrollLeft: 0,
22235
+ viewportWidth
22236
+ };
22237
+ }
22238
+ _getRenderUnitId() {
22239
+ var _skeleton$getViewMode, _viewModel$getDataMod, _dataModel$getUnitId, _dataModel$getUnitId2;
22240
+ const skeleton = this.getSkeleton();
22241
+ const viewModel = skeleton === null || skeleton === void 0 || (_skeleton$getViewMode = skeleton.getViewModel) === null || _skeleton$getViewMode === void 0 ? void 0 : _skeleton$getViewMode.call(skeleton);
22242
+ const dataModel = viewModel === null || viewModel === void 0 || (_viewModel$getDataMod = viewModel.getDataModel) === null || _viewModel$getDataMod === void 0 ? void 0 : _viewModel$getDataMod.call(viewModel);
22243
+ return (_dataModel$getUnitId = dataModel === null || dataModel === void 0 || (_dataModel$getUnitId2 = dataModel.getUnitId) === null || _dataModel$getUnitId2 === void 0 ? void 0 : _dataModel$getUnitId2.call(dataModel)) !== null && _dataModel$getUnitId !== void 0 ? _dataModel$getUnitId : this.oKey;
22244
+ }
21723
22245
  _drawBorderBottom(ctx, page, line, left = 0, top = 0) {
21724
22246
  var _line$borderBottom$pa, _line$borderBottom, _line$borderBottom$co, _line$borderBottom2;
21725
22247
  if (this._drawLiquid == null) return;
@@ -21829,60 +22351,68 @@ var Documents = class Documents extends DocComponent {
21829
22351
  ctx.restore();
21830
22352
  }
21831
22353
  _drawTableCellBordersAndBg(ctx, page, cell) {
21832
- var _borderLeft$color$rgb, _borderTop$color$rgb, _borderRight$color$rg, _borderBottom$color$r;
22354
+ var _rowSke$index, _cellSource$backgroun;
21833
22355
  const { marginLeft, marginTop } = page;
21834
22356
  const { pageWidth, pageHeight } = cell;
21835
22357
  const rowSke = cell.parent;
21836
22358
  const index = rowSke.cells.indexOf(cell);
21837
- const { borderTop = DEFAULT_BORDER_COLOR, borderBottom = DEFAULT_BORDER_COLOR, borderLeft = DEFAULT_BORDER_COLOR, borderRight = DEFAULT_BORDER_COLOR, backgroundColor } = rowSke.rowSource.tableCells[index];
22359
+ if (index < 0) return;
22360
+ const cellSource = rowSke.rowSource.tableCells[index];
22361
+ const tableSke = rowSke.parent;
22362
+ const rowIndexInTable = tableSke === null || tableSke === void 0 ? void 0 : tableSke.rows.indexOf(rowSke);
22363
+ const rowIndex = rowIndexInTable == null || rowIndexInTable < 0 ? (_rowSke$index = rowSke.index) !== null && _rowSke$index !== void 0 ? _rowSke$index : 0 : rowIndexInTable;
22364
+ if (!cellSource || cellSource.rowSpan === 0 || cellSource.columnSpan === 0) return;
21838
22365
  if (this._drawLiquid == null) return;
21839
22366
  let { x, y } = this._drawLiquid;
21840
22367
  x += marginLeft;
21841
22368
  y += marginTop;
21842
- if (backgroundColor && backgroundColor.rgb) {
22369
+ if ((_cellSource$backgroun = cellSource.backgroundColor) === null || _cellSource$backgroun === void 0 ? void 0 : _cellSource$backgroun.rgb) {
21843
22370
  ctx.save();
21844
- ctx.fillStyle = backgroundColor.rgb;
22371
+ ctx.fillStyle = cellSource.backgroundColor.rgb;
21845
22372
  ctx.fillRectByPrecision(x, y, pageWidth, pageHeight);
21846
22373
  ctx.restore();
21847
22374
  }
21848
- ctx.save();
21849
- ctx.setLineWidthByPrecision(1);
21850
- ctx.save();
21851
- ctx.strokeStyle = (_borderLeft$color$rgb = borderLeft.color.rgb) !== null && _borderLeft$color$rgb !== void 0 ? _borderLeft$color$rgb : DEFAULT_BORDER_COLOR.color.rgb;
21852
- drawLineByBorderType(ctx, "l", 0, {
21853
- startX: x,
21854
- startY: y,
21855
- endX: x + pageWidth,
21856
- endY: y + pageHeight
21857
- });
21858
- ctx.restore();
21859
- ctx.save();
21860
- ctx.strokeStyle = (_borderTop$color$rgb = borderTop.color.rgb) !== null && _borderTop$color$rgb !== void 0 ? _borderTop$color$rgb : DEFAULT_BORDER_COLOR.color.rgb;
21861
- drawLineByBorderType(ctx, "t", 0, {
22375
+ const position = {
21862
22376
  startX: x,
21863
22377
  startY: y,
21864
22378
  endX: x + pageWidth,
21865
22379
  endY: y + pageHeight
21866
- });
21867
- ctx.restore();
21868
- ctx.save();
21869
- ctx.strokeStyle = (_borderRight$color$rg = borderRight.color.rgb) !== null && _borderRight$color$rg !== void 0 ? _borderRight$color$rg : DEFAULT_BORDER_COLOR.color.rgb;
21870
- drawLineByBorderType(ctx, "r", 0, {
21871
- startX: x,
21872
- startY: y,
21873
- endX: x + pageWidth,
21874
- endY: y + pageHeight
21875
- });
21876
- ctx.restore();
22380
+ };
22381
+ const rightCellSource = this._getTableCellSource(rowSke, index + 1);
22382
+ const bottomCellSource = tableSke ? this._getTableCellSource(tableSke.rows[rowIndex + 1], index) : void 0;
22383
+ this._drawTableCellBorder(ctx, this._resolveTableCellBorder(cellSource.borderRight, rightCellSource === null || rightCellSource === void 0 ? void 0 : rightCellSource.borderLeft), "r", position);
22384
+ this._drawTableCellBorder(ctx, this._resolveTableCellBorder(cellSource.borderBottom, bottomCellSource === null || bottomCellSource === void 0 ? void 0 : bottomCellSource.borderTop), "b", position);
22385
+ if (rowIndex <= 0) this._drawTableCellBorder(ctx, this._resolveTableCellBorder(cellSource.borderTop), "t", position);
22386
+ if (index <= 0) this._drawTableCellBorder(ctx, this._resolveTableCellBorder(cellSource.borderLeft), "l", position);
22387
+ }
22388
+ _getTableCellSource(row, column) {
22389
+ var _row$rowSource$tableC;
22390
+ return (_row$rowSource$tableC = row === null || row === void 0 ? void 0 : row.rowSource.tableCells[column]) !== null && _row$rowSource$tableC !== void 0 ? _row$rowSource$tableC : null;
22391
+ }
22392
+ _resolveTableCellBorder(primary, secondary) {
22393
+ if (this._isDrawableTableCellBorder(primary)) return primary;
22394
+ if (this._isDrawableTableCellBorder(secondary)) return secondary;
22395
+ if (primary || secondary) return null;
22396
+ return DEFAULT_BORDER_COLOR;
22397
+ }
22398
+ _isDrawableTableCellBorder(border) {
22399
+ var _border$width$v, _border$width, _border$color$rgb, _border$color;
22400
+ if (!border) return false;
22401
+ const lineWidth = (_border$width$v = (_border$width = border.width) === null || _border$width === void 0 ? void 0 : _border$width.v) !== null && _border$width$v !== void 0 ? _border$width$v : 1;
22402
+ const color = (_border$color$rgb = (_border$color = border.color) === null || _border$color === void 0 ? void 0 : _border$color.rgb) !== null && _border$color$rgb !== void 0 ? _border$color$rgb : DEFAULT_BORDER_COLOR.color.rgb;
22403
+ return lineWidth > 0 && color !== "transparent";
22404
+ }
22405
+ _drawTableCellBorder(ctx, border, type, position) {
22406
+ var _border$width$v2, _border$width2, _border$color$rgb2, _border$color2;
22407
+ if (!border) return;
22408
+ const lineWidth = (_border$width$v2 = (_border$width2 = border.width) === null || _border$width2 === void 0 ? void 0 : _border$width2.v) !== null && _border$width$v2 !== void 0 ? _border$width$v2 : 1;
22409
+ const color = (_border$color$rgb2 = (_border$color2 = border.color) === null || _border$color2 === void 0 ? void 0 : _border$color2.rgb) !== null && _border$color$rgb2 !== void 0 ? _border$color$rgb2 : DEFAULT_BORDER_COLOR.color.rgb;
22410
+ if (lineWidth <= 0 || color === "transparent") return;
21877
22411
  ctx.save();
21878
- ctx.strokeStyle = (_borderBottom$color$r = borderBottom.color.rgb) !== null && _borderBottom$color$r !== void 0 ? _borderBottom$color$r : DEFAULT_BORDER_COLOR.color.rgb;
21879
- drawLineByBorderType(ctx, "b", 0, {
21880
- startX: x,
21881
- startY: y,
21882
- endX: x + pageWidth,
21883
- endY: y + pageHeight
21884
- });
21885
- ctx.restore();
22412
+ ctx.setLineWidthByPrecision(lineWidth);
22413
+ setTableCellBorderDash(ctx, border.dashStyle);
22414
+ ctx.strokeStyle = color;
22415
+ drawLineByBorderType(ctx, type, 0, position);
21886
22416
  ctx.restore();
21887
22417
  }
21888
22418
  _drawHeaderFooter(page, ctx, extensions, backgroundExtension, glyphExtensionsExcludeBackground, alignOffsetNoAngle, centerAngle, vertexAngle, renderConfig, parentScale, parentPage, isHeader = true) {
@@ -22013,6 +22543,17 @@ var Documents = class Documents extends DocComponent {
22013
22543
  });
22014
22544
  }
22015
22545
  };
22546
+ function setTableCellBorderDash(ctx, dashStyle) {
22547
+ if (dashStyle === DashStyleType.DOT) {
22548
+ ctx.setLineDash([2]);
22549
+ return;
22550
+ }
22551
+ if (dashStyle === DashStyleType.DASH) {
22552
+ ctx.setLineDash([6]);
22553
+ return;
22554
+ }
22555
+ ctx.setLineDash([0]);
22556
+ }
22016
22557
 
22017
22558
  //#endregion
22018
22559
  //#region src/components/sheets/spreadsheet.ts
@@ -22196,8 +22737,10 @@ var Spreadsheet = class extends SheetComponent {
22196
22737
  cacheCtx.save();
22197
22738
  const isForceDirty = isViewportForceDirty || this.isForceDirty();
22198
22739
  const isDirty = isViewportDirty || this.isDirty();
22199
- if (diffBounds.length === 0 || diffX === 0 && diffY === 0 || isForceDirty || isDirty) {
22200
- if (isDirty || isForceDirty) {
22740
+ const isScrollJumpOutsideCache = Math.abs(diffX) * scaleX >= cacheCanvas.getWidth() || Math.abs(diffY) * scaleY >= cacheCanvas.getHeight();
22741
+ const shouldRefreshCache = isDirty || isForceDirty || isScrollJumpOutsideCache;
22742
+ if (diffBounds.length === 0 || diffX === 0 && diffY === 0 || shouldRefreshCache) {
22743
+ if (shouldRefreshCache) {
22201
22744
  this.addRenderTagToScene("scrolling", false);
22202
22745
  this.refreshCacheCanvas(viewportInfo, {
22203
22746
  cacheCanvas,
@@ -23213,29 +23756,49 @@ var Slide = class extends SceneViewer {
23213
23756
  //#region src/components/docs/doc-background.ts
23214
23757
  const PAGE_STROKE_COLOR = "rgba(198, 198, 198, 1)";
23215
23758
  const PAGE_FILL_COLOR = "rgba(255, 255, 255, 1)";
23759
+ const DOCS_WORKSPACE_FILL_COLOR = "#fafafa";
23216
23760
  const MARGIN_STROKE_COLOR = "rgba(158, 158, 158, 1)";
23217
23761
  var DocBackground = class DocBackground extends DocComponent {
23218
23762
  constructor(oKey, documentSkeleton, config) {
23219
23763
  super(oKey, documentSkeleton, config);
23220
23764
  _defineProperty(this, "_drawLiquid", void 0);
23765
+ _defineProperty(this, "_backgroundFillColor", void 0);
23766
+ _defineProperty(this, "_pageFillColor", void 0);
23767
+ _defineProperty(this, "_pageStrokeColor", void 0);
23768
+ _defineProperty(this, "_marginStrokeColor", void 0);
23221
23769
  this._drawLiquid = new Liquid();
23770
+ this._backgroundFillColor = config === null || config === void 0 ? void 0 : config.backgroundFillColor;
23771
+ this._pageFillColor = config === null || config === void 0 ? void 0 : config.pageFillColor;
23772
+ this._pageStrokeColor = config === null || config === void 0 ? void 0 : config.pageStrokeColor;
23773
+ this._marginStrokeColor = config === null || config === void 0 ? void 0 : config.marginStrokeColor;
23222
23774
  this.makeDirty(true);
23223
23775
  }
23224
23776
  static create(oKey, documentSkeleton, config) {
23225
23777
  return new DocBackground(oKey, documentSkeleton, config);
23226
23778
  }
23779
+ setFillColors(backgroundFillColor, pageFillColor, pageStrokeColor, marginStrokeColor) {
23780
+ if (this._backgroundFillColor === backgroundFillColor && this._pageFillColor === pageFillColor && this._pageStrokeColor === pageStrokeColor && this._marginStrokeColor === marginStrokeColor) return;
23781
+ this._backgroundFillColor = backgroundFillColor;
23782
+ this._pageFillColor = pageFillColor;
23783
+ this._pageStrokeColor = pageStrokeColor;
23784
+ this._marginStrokeColor = marginStrokeColor;
23785
+ this.makeDirty(true);
23786
+ }
23227
23787
  draw(ctx, bounds) {
23228
- var _this$getSkeleton, _this$getSkeleton2;
23788
+ var _this$getSkeleton, _this$getSkeleton2, _this$_backgroundFill;
23229
23789
  const skeletonData = (_this$getSkeleton = this.getSkeleton()) === null || _this$getSkeleton === void 0 ? void 0 : _this$getSkeleton.getSkeletonData();
23230
23790
  const docDataModel = (_this$getSkeleton2 = this.getSkeleton()) === null || _this$getSkeleton2 === void 0 ? void 0 : _this$getSkeleton2.getViewModel().getDataModel();
23231
23791
  if (skeletonData == null || docDataModel == null) return;
23232
23792
  const { documentFlavor } = docDataModel.getSnapshot().documentStyle;
23233
- if (documentFlavor !== DocumentFlavor.TRADITIONAL) return;
23793
+ const workspaceFill = (_this$_backgroundFill = this._backgroundFillColor) !== null && _this$_backgroundFill !== void 0 ? _this$_backgroundFill : documentFlavor === DocumentFlavor.MODERN ? PAGE_FILL_COLOR : DOCS_WORKSPACE_FILL_COLOR;
23794
+ this._drawWorkspaceBackground(ctx, workspaceFill, bounds);
23795
+ if (documentFlavor === DocumentFlavor.MODERN) return;
23234
23796
  this._drawLiquid.reset();
23235
23797
  const { pages } = skeletonData;
23236
23798
  let pageTop = 0;
23237
23799
  let pageLeft = 0;
23238
23800
  for (let i = 0, len = pages.length; i < len; i++) {
23801
+ var _this$_pageStrokeColo, _this$_pageFillColor, _this$_marginStrokeCo;
23239
23802
  const page = pages[i];
23240
23803
  if (this.isSkipByDiffBounds(page, pageTop, pageLeft, bounds)) {
23241
23804
  const { x, y } = this._drawLiquid.translatePage(page, this.pageLayoutType, this.pageMarginLeft, this.pageMarginTop);
@@ -23250,8 +23813,8 @@ var DocBackground = class DocBackground extends DocComponent {
23250
23813
  width: pageWidth !== null && pageWidth !== void 0 ? pageWidth : width,
23251
23814
  height: pageHeight !== null && pageHeight !== void 0 ? pageHeight : height,
23252
23815
  strokeWidth: 1,
23253
- stroke: PAGE_STROKE_COLOR,
23254
- fill: PAGE_FILL_COLOR,
23816
+ stroke: (_this$_pageStrokeColo = this._pageStrokeColor) !== null && _this$_pageStrokeColo !== void 0 ? _this$_pageStrokeColo : PAGE_STROKE_COLOR,
23817
+ fill: (_this$_pageFillColor = this._pageFillColor) !== null && _this$_pageFillColor !== void 0 ? _this$_pageFillColor : PAGE_FILL_COLOR,
23255
23818
  zIndex: 3
23256
23819
  };
23257
23820
  Rect.drawWith(ctx, backgroundOptions);
@@ -23308,7 +23871,7 @@ var DocBackground = class DocBackground extends DocComponent {
23308
23871
  }
23309
23872
  ],
23310
23873
  strokeWidth: 1.5,
23311
- stroke: MARGIN_STROKE_COLOR
23874
+ stroke: (_this$_marginStrokeCo = this._marginStrokeColor) !== null && _this$_marginStrokeCo !== void 0 ? _this$_marginStrokeCo : MARGIN_STROKE_COLOR
23312
23875
  };
23313
23876
  Path.drawWith(ctx, marginIdentification);
23314
23877
  ctx.restore();
@@ -23317,6 +23880,24 @@ var DocBackground = class DocBackground extends DocComponent {
23317
23880
  pageTop += y;
23318
23881
  }
23319
23882
  }
23883
+ _drawWorkspaceBackground(ctx, fill, bounds) {
23884
+ var _bounds$cacheBound, _visibleBound$left, _visibleBound$top;
23885
+ const visibleBound = (_bounds$cacheBound = bounds === null || bounds === void 0 ? void 0 : bounds.cacheBound) !== null && _bounds$cacheBound !== void 0 ? _bounds$cacheBound : bounds === null || bounds === void 0 ? void 0 : bounds.viewBound;
23886
+ const left = (_visibleBound$left = visibleBound === null || visibleBound === void 0 ? void 0 : visibleBound.left) !== null && _visibleBound$left !== void 0 ? _visibleBound$left : 0;
23887
+ const top = (_visibleBound$top = visibleBound === null || visibleBound === void 0 ? void 0 : visibleBound.top) !== null && _visibleBound$top !== void 0 ? _visibleBound$top : 0;
23888
+ const width = visibleBound == null ? this.width : visibleBound.right - visibleBound.left;
23889
+ const height = visibleBound == null ? this.height : visibleBound.bottom - visibleBound.top;
23890
+ if (width <= 0 || height <= 0) return;
23891
+ ctx.save();
23892
+ ctx.translate(left, top);
23893
+ Rect.drawWith(ctx, {
23894
+ width,
23895
+ height,
23896
+ fill,
23897
+ zIndex: 0
23898
+ });
23899
+ ctx.restore();
23900
+ }
23320
23901
  changeSkeleton(newSkeleton) {
23321
23902
  this.setSkeleton(newSkeleton);
23322
23903
  return this;
@@ -23753,6 +24334,42 @@ var DumbCanvasColorService = class {
23753
24334
  return color;
23754
24335
  }
23755
24336
  };
24337
+ const DARK_RENDER_COLOR_OVERRIDES = {
24338
+ "#17212b": "#e2e8f0",
24339
+ "#64748b": "#94a3b8",
24340
+ "#d9e0e7": "#253044",
24341
+ "#edf1f5": "#1b2535",
24342
+ "#eef2f6": "#1b2535",
24343
+ "#f2f5f8": "#101827",
24344
+ "#f3f6fa": "#18243a",
24345
+ "#f4f8ff": "#172a46",
24346
+ "#f5f9ff": "#12233a",
24347
+ "#f7f9fb": "#0d1422",
24348
+ "#f7f9fc": "#0d1422",
24349
+ "#f8fafc": "#0f172a",
24350
+ "#fbfcfd": "#07111f",
24351
+ "#fcfdff": "#050914",
24352
+ "#e8f1ff": "#173a69",
24353
+ "#eaf5ff": "#12315a",
24354
+ "#dbeafe": "#1e3a8a",
24355
+ "#bfdbfe": "#60a5fa",
24356
+ "#93c5fd": "#60a5fa",
24357
+ "#8eb6f5": "#60a5fa",
24358
+ "#60a5fa": "#60a5fa",
24359
+ "#2563eb": "#60a5fa",
24360
+ "#1d64d8": "#93c5fd",
24361
+ "#1d5cff": "#60a5fa",
24362
+ "#0f766e": "#2dd4bf",
24363
+ "#d7f4ef": "#134e4a",
24364
+ "rgba(37,99,235,0.05)": "rgba(96,165,250,0.16)",
24365
+ "rgba(37,99,235,0.06)": "rgba(96,165,250,0.18)",
24366
+ "rgba(37,99,235,0.08)": "rgba(96,165,250,0.22)",
24367
+ "rgba(37,99,235,0.12)": "rgba(96,165,250,0.26)",
24368
+ "rgba(37,99,235,0.18)": "rgba(96,165,250,0.30)",
24369
+ "rgba(37,99,235,0.28)": "rgba(96,165,250,0.38)",
24370
+ "rgba(239,246,255,0.88)": "rgba(30,64,175,0.72)",
24371
+ "rgba(148,163,184,0.45)": "rgba(148,163,184,0.52)"
24372
+ };
23756
24373
  let CanvasColorService = class CanvasColorService extends Disposable {
23757
24374
  constructor(_themeService) {
23758
24375
  super();
@@ -23764,7 +24381,9 @@ let CanvasColorService = class CanvasColorService extends Disposable {
23764
24381
  if (!this._themeService.darkMode) return color;
23765
24382
  if (this._cache.has(color)) return this._cache.get(color);
23766
24383
  let cachedColor = "";
23767
- if (color.startsWith("#")) {
24384
+ const mappedColor = getDarkRenderColorOverride(color);
24385
+ if (mappedColor) cachedColor = mappedColor;
24386
+ else if (color.startsWith("#")) {
23768
24387
  cachedColor = rgbToHex(this._invertAlgo(hexToRgb(color)));
23769
24388
  if (color.length === 5) {
23770
24389
  const alpha = color.charAt(4);
@@ -23796,6 +24415,15 @@ let CanvasColorService = class CanvasColorService extends Disposable {
23796
24415
  }
23797
24416
  };
23798
24417
  CanvasColorService = __decorate([__decorateParam(0, Inject(ThemeService))], CanvasColorService);
24418
+ function getDarkRenderColorOverride(color) {
24419
+ var _DARK_RENDER_COLOR_OV;
24420
+ return (_DARK_RENDER_COLOR_OV = DARK_RENDER_COLOR_OVERRIDES[normalizeRenderColor(color)]) !== null && _DARK_RENDER_COLOR_OV !== void 0 ? _DARK_RENDER_COLOR_OV : null;
24421
+ }
24422
+ function normalizeRenderColor(color) {
24423
+ const trimmed = color.trim().toLowerCase();
24424
+ if (trimmed.startsWith("rgb")) return trimmed.replace(/\s+/g, "");
24425
+ return trimmed;
24426
+ }
23799
24427
  function hexToRgb(_hex) {
23800
24428
  const hex = _hex.replace(/^#/, "");
23801
24429
  let r;
@@ -23834,7 +24462,10 @@ let Engine = class Engine extends Disposable {
23834
24462
  sub.unsubscribe();
23835
24463
  this._rect$ = null;
23836
24464
  };
23837
- })).pipe(shareReplay(1));
24465
+ })).pipe(shareReplay({
24466
+ bufferSize: 1,
24467
+ refCount: true
24468
+ }));
23838
24469
  }
23839
24470
  get unitId() {
23840
24471
  return this._unitId;
@@ -24466,7 +25097,7 @@ Engine = __decorate([__decorateParam(2, ICanvasColorService)], Engine);
24466
25097
  //#endregion
24467
25098
  //#region package.json
24468
25099
  var name = "@univerjs/engine-render";
24469
- var version = "0.24.0";
25100
+ var version = "0.25.0-insiders.20260608-e4336f7";
24470
25101
 
24471
25102
  //#endregion
24472
25103
  //#region src/config/config.ts
@@ -24939,6 +25570,46 @@ const MINI_WIDTH_LIMIT = 20;
24939
25570
  const MINI_HEIGHT_LIMIT = 20;
24940
25571
  const DEFAULT_CONTROL_PLUS_INDEX = 5e3;
24941
25572
  const SINGLE_ACTIVE_OBJECT_TYPE_MAP = new Set([6]);
25573
+ const ROTATE_ICON_SIZE = 14;
25574
+ var TransformerRotateIcon = class extends Rect {
25575
+ _draw(ctx) {
25576
+ const iconWidth = this.width || ROTATE_ICON_SIZE;
25577
+ const iconHeight = this.height || ROTATE_ICON_SIZE;
25578
+ const scaleX = iconWidth / 24;
25579
+ const scaleY = iconHeight / 24;
25580
+ ctx.save();
25581
+ ctx.scale(scaleX, scaleY);
25582
+ ctx.beginPath();
25583
+ ctx.lineWidth = (this.strokeWidth || 2) / Math.max(scaleX, scaleY);
25584
+ ctx.lineCap = "round";
25585
+ ctx.lineJoin = "round";
25586
+ ctx.strokeStyle = this.stroke || "currentColor";
25587
+ ctx.moveTo(21, 12);
25588
+ ctx.arc(12, 12, 9, 0, Math.PI * 1.5, false);
25589
+ ctx.bezierCurveTo(14.52, 3, 16.93, 4, 18.74, 5.74);
25590
+ ctx.lineTo(21, 8);
25591
+ ctx.moveTo(21, 3);
25592
+ ctx.lineTo(21, 8);
25593
+ ctx.lineTo(16, 8);
25594
+ ctx.stroke();
25595
+ ctx.restore();
25596
+ }
25597
+ };
25598
+ var TransformerAnchor = class extends Rect {
25599
+ _draw(ctx) {
25600
+ if (!this.shadowColor || !this.shadowBlur && !this.shadowOffsetX && !this.shadowOffsetY) {
25601
+ Rect.drawWith(ctx, this);
25602
+ return;
25603
+ }
25604
+ ctx.save();
25605
+ ctx.shadowColor = this.shadowColor;
25606
+ ctx.shadowBlur = this.shadowBlur;
25607
+ ctx.shadowOffsetX = this.shadowOffsetX;
25608
+ ctx.shadowOffsetY = this.shadowOffsetY;
25609
+ Rect.drawWith(ctx, this);
25610
+ ctx.restore();
25611
+ }
25612
+ };
24942
25613
  /**
24943
25614
  * Transformer constructor. Transformer is a special type of group that allow you transform
24944
25615
  * primitives and shapes. Transforming tool is not changing `width` and `height` properties of nodes
@@ -24957,8 +25628,16 @@ var Transformer = class extends Disposable {
24957
25628
  _defineProperty(this, "rotationSnaps", []);
24958
25629
  _defineProperty(this, "rotationSnapTolerance", 5);
24959
25630
  _defineProperty(this, "rotateAnchorOffset", 50);
25631
+ _defineProperty(this, "rotateAnchorPosition", "top");
25632
+ _defineProperty(this, "rotateLineEnabled", true);
24960
25633
  _defineProperty(this, "rotateSize", 10);
24961
25634
  _defineProperty(this, "rotateCornerRadius", 10);
25635
+ _defineProperty(this, "rotateFill", void 0);
25636
+ _defineProperty(this, "rotateStroke", void 0);
25637
+ _defineProperty(this, "rotateStrokeWidth", void 0);
25638
+ _defineProperty(this, "rotateIconEnabled", false);
25639
+ _defineProperty(this, "rotateIconStroke", void 0);
25640
+ _defineProperty(this, "rotateIconStrokeWidth", 1.5);
24962
25641
  _defineProperty(this, "borderEnabled", true);
24963
25642
  _defineProperty(this, "borderStroke", "rgb(97, 97, 97)");
24964
25643
  _defineProperty(this, "borderStrokeWidth", 1);
@@ -24969,10 +25648,19 @@ var Transformer = class extends Disposable {
24969
25648
  _defineProperty(this, "anchorStrokeWidth", 1);
24970
25649
  _defineProperty(this, "anchorSize", 10);
24971
25650
  _defineProperty(this, "anchorCornerRadius", 10);
25651
+ _defineProperty(this, "anchorStyle", "default");
25652
+ _defineProperty(this, "anchorSideLongSize", 16);
25653
+ _defineProperty(this, "anchorSideShortSize", 5);
25654
+ _defineProperty(this, "anchorSideCornerRadius", 2.5);
25655
+ _defineProperty(this, "anchorShadowColor", void 0);
25656
+ _defineProperty(this, "anchorShadowBlur", 0);
25657
+ _defineProperty(this, "anchorShadowOffsetX", 0);
25658
+ _defineProperty(this, "anchorShadowOffsetY", 0);
24972
25659
  _defineProperty(this, "keepRatio", true);
24973
25660
  _defineProperty(this, "centeredScaling", false);
24974
25661
  _defineProperty(this, "zeroLeft", 0);
24975
25662
  _defineProperty(this, "zeroTop", 0);
25663
+ _defineProperty(this, "moveBoundaryEnabled", true);
24976
25664
  _defineProperty(
24977
25665
  this,
24978
25666
  /**
@@ -25086,9 +25774,9 @@ var Transformer = class extends Disposable {
25086
25774
  }
25087
25775
  _getConfig(applyObject) {
25088
25776
  const objectTransformerConfig = applyObject.transformerConfig;
25089
- let { isCropper, hoverEnabled, hoverEnterFunc, hoverLeaveFunc, resizeEnabled, rotateEnabled, rotationSnaps, rotationSnapTolerance, rotateAnchorOffset, rotateSize, rotateCornerRadius, borderEnabled, borderStroke, borderStrokeWidth, borderDash, borderSpacing, anchorFill, anchorStroke, anchorStrokeWidth, anchorSize, anchorCornerRadius, keepRatio, centeredScaling, enabledAnchors, flipEnabled, ignoreStroke, boundBoxFunc, useSingleNodeRotation, shouldOverdrawWholeArea } = this;
25777
+ let { isCropper, hoverEnabled, hoverEnterFunc, hoverLeaveFunc, resizeEnabled, rotateEnabled, rotationSnaps, rotationSnapTolerance, rotateAnchorOffset, rotateAnchorPosition, rotateLineEnabled, rotateSize, rotateCornerRadius, rotateFill, rotateStroke, rotateStrokeWidth, rotateIconEnabled, rotateIconStroke, rotateIconStrokeWidth, borderEnabled, borderStroke, borderStrokeWidth, borderDash, borderSpacing, anchorFill, anchorStroke, anchorStrokeWidth, anchorSize, anchorCornerRadius, anchorStyle, anchorSideLongSize, anchorSideShortSize, anchorSideCornerRadius, anchorShadowColor, anchorShadowBlur, anchorShadowOffsetX, anchorShadowOffsetY, keepRatio, centeredScaling, enabledAnchors, flipEnabled, ignoreStroke, boundBoxFunc, useSingleNodeRotation, shouldOverdrawWholeArea, moveBoundaryEnabled } = this;
25090
25778
  if (objectTransformerConfig != null) {
25091
- var _objectTransformerCon, _objectTransformerCon2, _objectTransformerCon3, _objectTransformerCon4, _objectTransformerCon5, _objectTransformerCon6, _objectTransformerCon7, _objectTransformerCon8, _objectTransformerCon9, _objectTransformerCon10, _objectTransformerCon11, _objectTransformerCon12, _objectTransformerCon13, _objectTransformerCon14, _objectTransformerCon15, _objectTransformerCon16, _objectTransformerCon17, _objectTransformerCon18, _objectTransformerCon19, _objectTransformerCon20, _objectTransformerCon21, _objectTransformerCon22, _objectTransformerCon23, _objectTransformerCon24, _objectTransformerCon25, _objectTransformerCon26, _objectTransformerCon27, _objectTransformerCon28, _objectTransformerCon29;
25779
+ var _objectTransformerCon, _objectTransformerCon2, _objectTransformerCon3, _objectTransformerCon4, _objectTransformerCon5, _objectTransformerCon6, _objectTransformerCon7, _objectTransformerCon8, _objectTransformerCon9, _objectTransformerCon10, _objectTransformerCon11, _objectTransformerCon12, _objectTransformerCon13, _objectTransformerCon14, _objectTransformerCon15, _objectTransformerCon16, _objectTransformerCon17, _objectTransformerCon18, _objectTransformerCon19, _objectTransformerCon20, _objectTransformerCon21, _objectTransformerCon22, _objectTransformerCon23, _objectTransformerCon24, _objectTransformerCon25, _objectTransformerCon26, _objectTransformerCon27, _objectTransformerCon28, _objectTransformerCon29, _objectTransformerCon30, _objectTransformerCon31, _objectTransformerCon32, _objectTransformerCon33, _objectTransformerCon34, _objectTransformerCon35, _objectTransformerCon36, _objectTransformerCon37, _objectTransformerCon38, _objectTransformerCon39, _objectTransformerCon40, _objectTransformerCon41, _objectTransformerCon42, _objectTransformerCon43, _objectTransformerCon44, _objectTransformerCon45, _objectTransformerCon46;
25092
25780
  isCropper = (_objectTransformerCon = objectTransformerConfig.isCropper) !== null && _objectTransformerCon !== void 0 ? _objectTransformerCon : isCropper;
25093
25781
  hoverEnabled = (_objectTransformerCon2 = objectTransformerConfig.hoverEnabled) !== null && _objectTransformerCon2 !== void 0 ? _objectTransformerCon2 : hoverEnabled;
25094
25782
  hoverEnterFunc = (_objectTransformerCon3 = objectTransformerConfig.hoverEnterFunc) !== null && _objectTransformerCon3 !== void 0 ? _objectTransformerCon3 : hoverEnterFunc;
@@ -25098,26 +25786,43 @@ var Transformer = class extends Disposable {
25098
25786
  rotationSnaps = (_objectTransformerCon7 = objectTransformerConfig.rotationSnaps) !== null && _objectTransformerCon7 !== void 0 ? _objectTransformerCon7 : rotationSnaps;
25099
25787
  rotationSnapTolerance = (_objectTransformerCon8 = objectTransformerConfig.rotationSnapTolerance) !== null && _objectTransformerCon8 !== void 0 ? _objectTransformerCon8 : rotationSnapTolerance;
25100
25788
  rotateAnchorOffset = (_objectTransformerCon9 = objectTransformerConfig.rotateAnchorOffset) !== null && _objectTransformerCon9 !== void 0 ? _objectTransformerCon9 : rotateAnchorOffset;
25101
- rotateSize = (_objectTransformerCon10 = objectTransformerConfig.rotateSize) !== null && _objectTransformerCon10 !== void 0 ? _objectTransformerCon10 : rotateSize;
25102
- rotateCornerRadius = (_objectTransformerCon11 = objectTransformerConfig.rotateCornerRadius) !== null && _objectTransformerCon11 !== void 0 ? _objectTransformerCon11 : rotateCornerRadius;
25103
- borderEnabled = (_objectTransformerCon12 = objectTransformerConfig.borderEnabled) !== null && _objectTransformerCon12 !== void 0 ? _objectTransformerCon12 : borderEnabled;
25104
- borderStroke = (_objectTransformerCon13 = objectTransformerConfig.borderStroke) !== null && _objectTransformerCon13 !== void 0 ? _objectTransformerCon13 : borderStroke;
25105
- borderStrokeWidth = (_objectTransformerCon14 = objectTransformerConfig.borderStrokeWidth) !== null && _objectTransformerCon14 !== void 0 ? _objectTransformerCon14 : borderStrokeWidth;
25106
- borderDash = (_objectTransformerCon15 = objectTransformerConfig.borderDash) !== null && _objectTransformerCon15 !== void 0 ? _objectTransformerCon15 : borderDash;
25107
- borderSpacing = (_objectTransformerCon16 = objectTransformerConfig.borderSpacing) !== null && _objectTransformerCon16 !== void 0 ? _objectTransformerCon16 : borderSpacing;
25108
- anchorFill = (_objectTransformerCon17 = objectTransformerConfig.anchorFill) !== null && _objectTransformerCon17 !== void 0 ? _objectTransformerCon17 : anchorFill;
25109
- anchorStroke = (_objectTransformerCon18 = objectTransformerConfig.anchorStroke) !== null && _objectTransformerCon18 !== void 0 ? _objectTransformerCon18 : anchorStroke;
25110
- anchorStrokeWidth = (_objectTransformerCon19 = objectTransformerConfig.anchorStrokeWidth) !== null && _objectTransformerCon19 !== void 0 ? _objectTransformerCon19 : anchorStrokeWidth;
25111
- anchorSize = (_objectTransformerCon20 = objectTransformerConfig.anchorSize) !== null && _objectTransformerCon20 !== void 0 ? _objectTransformerCon20 : anchorSize;
25112
- anchorCornerRadius = (_objectTransformerCon21 = objectTransformerConfig.anchorCornerRadius) !== null && _objectTransformerCon21 !== void 0 ? _objectTransformerCon21 : anchorCornerRadius;
25113
- keepRatio = (_objectTransformerCon22 = objectTransformerConfig.keepRatio) !== null && _objectTransformerCon22 !== void 0 ? _objectTransformerCon22 : keepRatio;
25114
- centeredScaling = (_objectTransformerCon23 = objectTransformerConfig.centeredScaling) !== null && _objectTransformerCon23 !== void 0 ? _objectTransformerCon23 : centeredScaling;
25115
- enabledAnchors = (_objectTransformerCon24 = objectTransformerConfig.enabledAnchors) !== null && _objectTransformerCon24 !== void 0 ? _objectTransformerCon24 : enabledAnchors;
25116
- flipEnabled = (_objectTransformerCon25 = objectTransformerConfig.flipEnabled) !== null && _objectTransformerCon25 !== void 0 ? _objectTransformerCon25 : flipEnabled;
25117
- ignoreStroke = (_objectTransformerCon26 = objectTransformerConfig.ignoreStroke) !== null && _objectTransformerCon26 !== void 0 ? _objectTransformerCon26 : ignoreStroke;
25118
- boundBoxFunc = (_objectTransformerCon27 = objectTransformerConfig.boundBoxFunc) !== null && _objectTransformerCon27 !== void 0 ? _objectTransformerCon27 : boundBoxFunc;
25119
- useSingleNodeRotation = (_objectTransformerCon28 = objectTransformerConfig.useSingleNodeRotation) !== null && _objectTransformerCon28 !== void 0 ? _objectTransformerCon28 : useSingleNodeRotation;
25120
- shouldOverdrawWholeArea = (_objectTransformerCon29 = objectTransformerConfig.shouldOverdrawWholeArea) !== null && _objectTransformerCon29 !== void 0 ? _objectTransformerCon29 : shouldOverdrawWholeArea;
25789
+ rotateAnchorPosition = (_objectTransformerCon10 = objectTransformerConfig.rotateAnchorPosition) !== null && _objectTransformerCon10 !== void 0 ? _objectTransformerCon10 : rotateAnchorPosition;
25790
+ rotateLineEnabled = (_objectTransformerCon11 = objectTransformerConfig.rotateLineEnabled) !== null && _objectTransformerCon11 !== void 0 ? _objectTransformerCon11 : rotateLineEnabled;
25791
+ rotateSize = (_objectTransformerCon12 = objectTransformerConfig.rotateSize) !== null && _objectTransformerCon12 !== void 0 ? _objectTransformerCon12 : rotateSize;
25792
+ rotateCornerRadius = (_objectTransformerCon13 = objectTransformerConfig.rotateCornerRadius) !== null && _objectTransformerCon13 !== void 0 ? _objectTransformerCon13 : rotateCornerRadius;
25793
+ rotateFill = (_objectTransformerCon14 = objectTransformerConfig.rotateFill) !== null && _objectTransformerCon14 !== void 0 ? _objectTransformerCon14 : rotateFill;
25794
+ rotateStroke = (_objectTransformerCon15 = objectTransformerConfig.rotateStroke) !== null && _objectTransformerCon15 !== void 0 ? _objectTransformerCon15 : rotateStroke;
25795
+ rotateStrokeWidth = (_objectTransformerCon16 = objectTransformerConfig.rotateStrokeWidth) !== null && _objectTransformerCon16 !== void 0 ? _objectTransformerCon16 : rotateStrokeWidth;
25796
+ rotateIconEnabled = (_objectTransformerCon17 = objectTransformerConfig.rotateIconEnabled) !== null && _objectTransformerCon17 !== void 0 ? _objectTransformerCon17 : rotateIconEnabled;
25797
+ rotateIconStroke = (_objectTransformerCon18 = objectTransformerConfig.rotateIconStroke) !== null && _objectTransformerCon18 !== void 0 ? _objectTransformerCon18 : rotateIconStroke;
25798
+ rotateIconStrokeWidth = (_objectTransformerCon19 = objectTransformerConfig.rotateIconStrokeWidth) !== null && _objectTransformerCon19 !== void 0 ? _objectTransformerCon19 : rotateIconStrokeWidth;
25799
+ borderEnabled = (_objectTransformerCon20 = objectTransformerConfig.borderEnabled) !== null && _objectTransformerCon20 !== void 0 ? _objectTransformerCon20 : borderEnabled;
25800
+ borderStroke = (_objectTransformerCon21 = objectTransformerConfig.borderStroke) !== null && _objectTransformerCon21 !== void 0 ? _objectTransformerCon21 : borderStroke;
25801
+ borderStrokeWidth = (_objectTransformerCon22 = objectTransformerConfig.borderStrokeWidth) !== null && _objectTransformerCon22 !== void 0 ? _objectTransformerCon22 : borderStrokeWidth;
25802
+ borderDash = (_objectTransformerCon23 = objectTransformerConfig.borderDash) !== null && _objectTransformerCon23 !== void 0 ? _objectTransformerCon23 : borderDash;
25803
+ borderSpacing = (_objectTransformerCon24 = objectTransformerConfig.borderSpacing) !== null && _objectTransformerCon24 !== void 0 ? _objectTransformerCon24 : borderSpacing;
25804
+ anchorFill = (_objectTransformerCon25 = objectTransformerConfig.anchorFill) !== null && _objectTransformerCon25 !== void 0 ? _objectTransformerCon25 : anchorFill;
25805
+ anchorStroke = (_objectTransformerCon26 = objectTransformerConfig.anchorStroke) !== null && _objectTransformerCon26 !== void 0 ? _objectTransformerCon26 : anchorStroke;
25806
+ anchorStrokeWidth = (_objectTransformerCon27 = objectTransformerConfig.anchorStrokeWidth) !== null && _objectTransformerCon27 !== void 0 ? _objectTransformerCon27 : anchorStrokeWidth;
25807
+ anchorSize = (_objectTransformerCon28 = objectTransformerConfig.anchorSize) !== null && _objectTransformerCon28 !== void 0 ? _objectTransformerCon28 : anchorSize;
25808
+ anchorCornerRadius = (_objectTransformerCon29 = objectTransformerConfig.anchorCornerRadius) !== null && _objectTransformerCon29 !== void 0 ? _objectTransformerCon29 : anchorCornerRadius;
25809
+ anchorStyle = (_objectTransformerCon30 = objectTransformerConfig.anchorStyle) !== null && _objectTransformerCon30 !== void 0 ? _objectTransformerCon30 : anchorStyle;
25810
+ anchorSideLongSize = (_objectTransformerCon31 = objectTransformerConfig.anchorSideLongSize) !== null && _objectTransformerCon31 !== void 0 ? _objectTransformerCon31 : anchorSideLongSize;
25811
+ anchorSideShortSize = (_objectTransformerCon32 = objectTransformerConfig.anchorSideShortSize) !== null && _objectTransformerCon32 !== void 0 ? _objectTransformerCon32 : anchorSideShortSize;
25812
+ anchorSideCornerRadius = (_objectTransformerCon33 = objectTransformerConfig.anchorSideCornerRadius) !== null && _objectTransformerCon33 !== void 0 ? _objectTransformerCon33 : anchorSideCornerRadius;
25813
+ anchorShadowColor = (_objectTransformerCon34 = objectTransformerConfig.anchorShadowColor) !== null && _objectTransformerCon34 !== void 0 ? _objectTransformerCon34 : anchorShadowColor;
25814
+ anchorShadowBlur = (_objectTransformerCon35 = objectTransformerConfig.anchorShadowBlur) !== null && _objectTransformerCon35 !== void 0 ? _objectTransformerCon35 : anchorShadowBlur;
25815
+ anchorShadowOffsetX = (_objectTransformerCon36 = objectTransformerConfig.anchorShadowOffsetX) !== null && _objectTransformerCon36 !== void 0 ? _objectTransformerCon36 : anchorShadowOffsetX;
25816
+ anchorShadowOffsetY = (_objectTransformerCon37 = objectTransformerConfig.anchorShadowOffsetY) !== null && _objectTransformerCon37 !== void 0 ? _objectTransformerCon37 : anchorShadowOffsetY;
25817
+ keepRatio = (_objectTransformerCon38 = objectTransformerConfig.keepRatio) !== null && _objectTransformerCon38 !== void 0 ? _objectTransformerCon38 : keepRatio;
25818
+ centeredScaling = (_objectTransformerCon39 = objectTransformerConfig.centeredScaling) !== null && _objectTransformerCon39 !== void 0 ? _objectTransformerCon39 : centeredScaling;
25819
+ enabledAnchors = (_objectTransformerCon40 = objectTransformerConfig.enabledAnchors) !== null && _objectTransformerCon40 !== void 0 ? _objectTransformerCon40 : enabledAnchors;
25820
+ flipEnabled = (_objectTransformerCon41 = objectTransformerConfig.flipEnabled) !== null && _objectTransformerCon41 !== void 0 ? _objectTransformerCon41 : flipEnabled;
25821
+ ignoreStroke = (_objectTransformerCon42 = objectTransformerConfig.ignoreStroke) !== null && _objectTransformerCon42 !== void 0 ? _objectTransformerCon42 : ignoreStroke;
25822
+ boundBoxFunc = (_objectTransformerCon43 = objectTransformerConfig.boundBoxFunc) !== null && _objectTransformerCon43 !== void 0 ? _objectTransformerCon43 : boundBoxFunc;
25823
+ useSingleNodeRotation = (_objectTransformerCon44 = objectTransformerConfig.useSingleNodeRotation) !== null && _objectTransformerCon44 !== void 0 ? _objectTransformerCon44 : useSingleNodeRotation;
25824
+ shouldOverdrawWholeArea = (_objectTransformerCon45 = objectTransformerConfig.shouldOverdrawWholeArea) !== null && _objectTransformerCon45 !== void 0 ? _objectTransformerCon45 : shouldOverdrawWholeArea;
25825
+ moveBoundaryEnabled = (_objectTransformerCon46 = objectTransformerConfig.moveBoundaryEnabled) !== null && _objectTransformerCon46 !== void 0 ? _objectTransformerCon46 : moveBoundaryEnabled;
25121
25826
  }
25122
25827
  return {
25123
25828
  isCropper,
@@ -25129,8 +25834,16 @@ var Transformer = class extends Disposable {
25129
25834
  rotationSnaps,
25130
25835
  rotationSnapTolerance,
25131
25836
  rotateAnchorOffset,
25837
+ rotateAnchorPosition,
25838
+ rotateLineEnabled,
25132
25839
  rotateSize,
25133
25840
  rotateCornerRadius,
25841
+ rotateFill,
25842
+ rotateStroke,
25843
+ rotateStrokeWidth,
25844
+ rotateIconEnabled,
25845
+ rotateIconStroke,
25846
+ rotateIconStrokeWidth,
25134
25847
  borderEnabled,
25135
25848
  borderStroke,
25136
25849
  borderStrokeWidth,
@@ -25141,6 +25854,14 @@ var Transformer = class extends Disposable {
25141
25854
  anchorStrokeWidth,
25142
25855
  anchorSize,
25143
25856
  anchorCornerRadius,
25857
+ anchorStyle,
25858
+ anchorSideLongSize,
25859
+ anchorSideShortSize,
25860
+ anchorSideCornerRadius,
25861
+ anchorShadowColor,
25862
+ anchorShadowBlur,
25863
+ anchorShadowOffsetX,
25864
+ anchorShadowOffsetY,
25144
25865
  keepRatio,
25145
25866
  centeredScaling,
25146
25867
  enabledAnchors,
@@ -25148,7 +25869,8 @@ var Transformer = class extends Disposable {
25148
25869
  ignoreStroke,
25149
25870
  boundBoxFunc,
25150
25871
  useSingleNodeRotation,
25151
- shouldOverdrawWholeArea
25872
+ shouldOverdrawWholeArea,
25873
+ moveBoundaryEnabled
25152
25874
  };
25153
25875
  }
25154
25876
  attachTo(applyObject) {
@@ -25257,6 +25979,10 @@ var Transformer = class extends Disposable {
25257
25979
  });
25258
25980
  }
25259
25981
  _checkMoveBoundary(moveObject, moveLeft, moveTop, ancestorLeft, ancestorTop, topSceneWidth, topSceneHeight) {
25982
+ if (this._getConfig(moveObject).moveBoundaryEnabled === false) return {
25983
+ moveLeft,
25984
+ moveTop
25985
+ };
25260
25986
  const { left, top, width, height } = moveObject;
25261
25987
  let resultMoveLeft = moveLeft;
25262
25988
  let resultMoveTop = moveTop;
@@ -25704,7 +26430,11 @@ var Transformer = class extends Disposable {
25704
26430
  _rotateMoving(moveOffsetX, moveOffsetY, centerX, centerY, agentOrigin) {
25705
26431
  const { ancestorScaleX, ancestorScaleY } = this._scene;
25706
26432
  if (this._moveBufferBlocker(moveOffsetX, moveOffsetY)) return;
25707
- let angle = agentOrigin + radToDeg(Math.atan2((moveOffsetY - centerY) / ancestorScaleY + this._viewportScrollY, (moveOffsetX - centerX) / ancestorScaleX + this._viewportScrollX) - Math.atan2((this._startOffsetY - centerY) / ancestorScaleY + this._viewportScrollY, (this._startOffsetX - centerX) / ancestorScaleX + this._viewportScrollX));
26433
+ const moveSceneX = moveOffsetX / ancestorScaleX + this._viewportScrollX;
26434
+ const moveSceneY = moveOffsetY / ancestorScaleY + this._viewportScrollY;
26435
+ const startSceneX = this._startOffsetX / ancestorScaleX + this._viewportScrollX;
26436
+ const startSceneY = this._startOffsetY / ancestorScaleY + this._viewportScrollY;
26437
+ let angle = agentOrigin + radToDeg(Math.atan2(moveSceneY - centerY, moveSceneX - centerX) - Math.atan2(startSceneY - centerY, startSceneX - centerX));
25708
26438
  if (angle < 0) angle = 360 + angle;
25709
26439
  angle %= 360;
25710
26440
  angle = this._smoothAccuracy(angle);
@@ -25761,6 +26491,23 @@ var Transformer = class extends Disposable {
25761
26491
  }
25762
26492
  return cursor;
25763
26493
  }
26494
+ _createRotateIcon(applyObject, zIndex, left, top) {
26495
+ const { rotateSize, rotateIconStroke, rotateIconStrokeWidth, borderStroke } = this._getConfig(applyObject);
26496
+ const iconOffset = (rotateSize - ROTATE_ICON_SIZE) / 2;
26497
+ return new TransformerRotateIcon(`__SpreadsheetTransformerRotate___ICON_${zIndex}`, {
26498
+ zIndex,
26499
+ evented: false,
26500
+ left: left + iconOffset,
26501
+ top: top + iconOffset,
26502
+ width: ROTATE_ICON_SIZE,
26503
+ height: ROTATE_ICON_SIZE,
26504
+ fill: null,
26505
+ stroke: rotateIconStroke !== null && rotateIconStroke !== void 0 ? rotateIconStroke : borderStroke,
26506
+ strokeWidth: rotateIconStrokeWidth,
26507
+ strokeLineCap: "round",
26508
+ strokeLineJoin: "round"
26509
+ });
26510
+ }
25764
26511
  _getCopperAnchorPosition(type, height, width, applyObject) {
25765
26512
  const { borderStrokeWidth, borderSpacing, anchorSize } = this._getConfig(applyObject);
25766
26513
  let left = 0;
@@ -25807,17 +26554,18 @@ var Transformer = class extends Disposable {
25807
26554
  };
25808
26555
  }
25809
26556
  _getRotateAnchorPosition(type, height, width, applyObject) {
25810
- const { rotateAnchorOffset, rotateSize, borderStrokeWidth, borderSpacing, anchorSize } = this._getConfig(applyObject);
26557
+ const { rotateAnchorOffset, rotateAnchorPosition, rotateSize, borderStrokeWidth, borderSpacing, anchorSize } = this._getConfig(applyObject);
26558
+ const isBottomRotateAnchor = rotateAnchorPosition === "bottom";
25811
26559
  let left = -anchorSize / 2;
25812
26560
  let top = -anchorSize / 2;
25813
26561
  switch (type) {
25814
26562
  case "__SpreadsheetTransformerRotate__":
25815
26563
  left = width / 2 - rotateSize / 2;
25816
- top = -rotateAnchorOffset - borderSpacing - borderStrokeWidth * 2 - rotateSize;
26564
+ top = isBottomRotateAnchor ? height + rotateAnchorOffset + borderSpacing + borderStrokeWidth * 2 : -rotateAnchorOffset - borderSpacing - borderStrokeWidth * 2 - rotateSize;
25817
26565
  break;
25818
26566
  case "__SpreadsheetTransformerRotateLine__":
25819
26567
  left = width / 2;
25820
- top = -rotateAnchorOffset - borderSpacing - borderStrokeWidth;
26568
+ top = isBottomRotateAnchor ? height + borderSpacing + borderStrokeWidth : -rotateAnchorOffset - borderSpacing - borderStrokeWidth;
25821
26569
  break;
25822
26570
  case "__SpreadsheetTransformerResizeLT__":
25823
26571
  left += -borderSpacing - borderStrokeWidth;
@@ -25857,21 +26605,43 @@ var Transformer = class extends Disposable {
25857
26605
  top
25858
26606
  };
25859
26607
  }
26608
+ _isMiddleAnchor(type) {
26609
+ return type === "__SpreadsheetTransformerResizeCT__" || type === "__SpreadsheetTransformerResizeLM__" || type === "__SpreadsheetTransformerResizeRM__" || type === "__SpreadsheetTransformerResizeCB__";
26610
+ }
26611
+ _getResizeAnchorProps(type, applyObject) {
26612
+ const { anchorSize, anchorCornerRadius, anchorStyle, anchorSideLongSize, anchorSideShortSize, anchorSideCornerRadius } = this._getConfig(applyObject);
26613
+ if (anchorStyle !== "canva" || !this._isMiddleAnchor(type)) return {
26614
+ width: anchorSize,
26615
+ height: anchorSize,
26616
+ radius: anchorStyle === "canva" ? anchorSize / 2 : anchorCornerRadius
26617
+ };
26618
+ const isHorizontal = type === "__SpreadsheetTransformerResizeCT__" || type === "__SpreadsheetTransformerResizeCB__";
26619
+ return {
26620
+ width: isHorizontal ? anchorSideLongSize : anchorSideShortSize,
26621
+ height: isHorizontal ? anchorSideShortSize : anchorSideLongSize,
26622
+ radius: anchorSideCornerRadius
26623
+ };
26624
+ }
25860
26625
  _createResizeAnchor(type, applyObject, zIndex) {
25861
26626
  const { height = 0, width = 0, scaleX = 1, scaleY = 1 } = applyObject.getState();
25862
- const { anchorFill, anchorStroke, anchorStrokeWidth, anchorCornerRadius, anchorSize } = this._getConfig(applyObject);
26627
+ const { anchorFill, anchorStroke, anchorStrokeWidth, anchorSize, anchorShadowColor, anchorShadowBlur, anchorShadowOffsetX, anchorShadowOffsetY } = this._getConfig(applyObject);
25863
26628
  const { left, top } = this._getRotateAnchorPosition(type, height, width, applyObject);
26629
+ const anchorProps = this._getResizeAnchorProps(type, applyObject);
25864
26630
  const cursor = this._getRotateAnchorCursor(type);
25865
- const anchor = new Rect(`${type}_${zIndex}`, {
26631
+ const anchor = new TransformerAnchor(`${type}_${zIndex}`, {
25866
26632
  zIndex: zIndex - 1,
25867
26633
  fill: anchorFill,
25868
26634
  stroke: anchorStroke,
25869
26635
  strokeWidth: anchorStrokeWidth,
25870
- width: anchorSize,
25871
- height: anchorSize,
25872
- radius: anchorCornerRadius,
25873
- left,
25874
- top
26636
+ width: anchorProps.width,
26637
+ height: anchorProps.height,
26638
+ radius: anchorProps.radius,
26639
+ left: left + (anchorSize - anchorProps.width) / 2,
26640
+ top: top + (anchorSize - anchorProps.height) / 2,
26641
+ shadowColor: anchorShadowColor,
26642
+ shadowBlur: anchorShadowBlur,
26643
+ shadowOffsetX: anchorShadowOffsetX,
26644
+ shadowOffsetY: anchorShadowOffsetY
25875
26645
  });
25876
26646
  this._attachHover(anchor, cursor, "default");
25877
26647
  return anchor;
@@ -26119,7 +26889,7 @@ var Transformer = class extends Disposable {
26119
26889
  _createControl(applyObject, isSkipOnCropper = true) {
26120
26890
  const { left = 0, top = 0, height = 0, width = 0 } = applyObject.getState();
26121
26891
  const angle = applyObject.angle;
26122
- const { isCropper, resizeEnabled, rotateEnabled, rotateAnchorOffset, rotateSize, rotateCornerRadius, borderEnabled, borderStroke, borderStrokeWidth, borderSpacing, enabledAnchors } = this._getConfig(applyObject);
26892
+ const { isCropper, resizeEnabled, rotateEnabled, rotateAnchorOffset, rotateLineEnabled, rotateSize, rotateCornerRadius, rotateFill, rotateStroke, rotateStrokeWidth, rotateIconEnabled, anchorShadowColor, anchorShadowBlur, anchorShadowOffsetX, anchorShadowOffsetY, borderEnabled, borderStroke, borderStrokeWidth, borderSpacing, enabledAnchors } = this._getConfig(applyObject);
26123
26893
  if (isSkipOnCropper && isCropper) return;
26124
26894
  const oKey = applyObject.oKey;
26125
26895
  const zIndex = this._selectedObjectMap.size + applyObject.maxZIndex + DEFAULT_CONTROL_PLUS_INDEX;
@@ -26150,19 +26920,26 @@ var Transformer = class extends Disposable {
26150
26920
  });
26151
26921
  const { left: rotateLeft, top: rotateTop } = this._getRotateAnchorPosition("__SpreadsheetTransformerRotate__", height, width, applyObject);
26152
26922
  const cursor = this._getRotateAnchorCursor("__SpreadsheetTransformerRotate__");
26153
- const rotate = new Rect(`__SpreadsheetTransformerRotate___${zIndex}`, {
26923
+ const rotate = new TransformerAnchor(`__SpreadsheetTransformerRotate___${zIndex}`, {
26154
26924
  zIndex: zIndex - 1,
26155
26925
  left: rotateLeft,
26156
26926
  top: rotateTop,
26157
26927
  height: rotateSize,
26158
26928
  width: rotateSize,
26159
26929
  radius: rotateCornerRadius,
26160
- strokeWidth: borderStrokeWidth * 2,
26161
- stroke: borderStroke
26930
+ fill: rotateFill,
26931
+ strokeWidth: rotateStrokeWidth !== null && rotateStrokeWidth !== void 0 ? rotateStrokeWidth : borderStrokeWidth * 2,
26932
+ stroke: rotateStroke !== null && rotateStroke !== void 0 ? rotateStroke : borderStroke,
26933
+ shadowColor: anchorShadowColor,
26934
+ shadowBlur: anchorShadowBlur,
26935
+ shadowOffsetX: anchorShadowOffsetX,
26936
+ shadowOffsetY: anchorShadowOffsetY
26162
26937
  });
26163
26938
  this._attachEventToRotate(rotate, applyObject);
26164
26939
  this._attachHover(rotate, cursor, "default");
26165
- groupElements.push(rotateLine, rotate);
26940
+ if (rotateLineEnabled) groupElements.push(rotateLine);
26941
+ groupElements.push(rotate);
26942
+ if (rotateIconEnabled) groupElements.push(this._createRotateIcon(applyObject, zIndex, rotateLeft, rotateTop));
26166
26943
  }
26167
26944
  }
26168
26945
  if (resizeEnabled) for (let i = 0, len = enabledAnchors.length; i < len; i++) {
@@ -27205,6 +27982,9 @@ let RenderUnit = class RenderUnit extends Disposable {
27205
27982
  this._renderContext.unit = null;
27206
27983
  this._renderContext.components.clear();
27207
27984
  }
27985
+ isDisposed() {
27986
+ return this._disposed;
27987
+ }
27208
27988
  /**
27209
27989
  * Get a dependency from the RenderUnit's injector.
27210
27990
  */
@@ -27550,6 +28330,7 @@ function subtractViewportRange(range1, range2) {
27550
28330
  //#endregion
27551
28331
  //#region src/viewport.ts
27552
28332
  const MOUSE_WHEEL_SPEED_SMOOTHING_FACTOR = 3;
28333
+ const WHEEL_CROSS_AXIS_LOCK_RATIO = 2;
27553
28334
  var Viewport = class {
27554
28335
  constructor(viewportKey, scene, props) {
27555
28336
  var _this$scene$getEngine;
@@ -28193,11 +28974,22 @@ var Viewport = class {
28193
28974
  let offsetX = 0;
28194
28975
  let offsetY = 0;
28195
28976
  const allWidth = this._scene.width;
28196
- offsetX = (this.width || 1) / allWidth * evt.deltaX;
28977
+ const viewWidth = this.width || 1;
28978
+ const scaleX = Math.abs(this._scene.scaleX) || 1;
28979
+ const scaleY = Math.abs(this._scene.scaleY) || 1;
28980
+ const rawOffsetX = evt.deltaX / scaleX;
28981
+ const rawOffsetY = evt.deltaY / scaleY;
28982
+ offsetX = viewWidth / allWidth * rawOffsetX;
28197
28983
  const allHeight = this._scene.height;
28198
28984
  const viewHeight = this.height || 1;
28199
- if (evt.shiftKey) offsetX = viewHeight / allHeight * evt.deltaY * MOUSE_WHEEL_SPEED_SMOOTHING_FACTOR;
28200
- else offsetY = viewHeight / allHeight * evt.deltaY;
28985
+ if (evt.shiftKey) offsetX = viewHeight / allHeight * evt.deltaY * MOUSE_WHEEL_SPEED_SMOOTHING_FACTOR / scaleX;
28986
+ else {
28987
+ offsetY = viewHeight / allHeight * rawOffsetY;
28988
+ const absOffsetX = Math.abs(rawOffsetX);
28989
+ const absOffsetY = Math.abs(rawOffsetY);
28990
+ if (absOffsetY >= absOffsetX * WHEEL_CROSS_AXIS_LOCK_RATIO) offsetX = 0;
28991
+ else if (absOffsetX >= absOffsetY * WHEEL_CROSS_AXIS_LOCK_RATIO) offsetY = 0;
28992
+ }
28201
28993
  const isLimitedStore = this.scrollByBarDeltaValue({
28202
28994
  x: offsetX,
28203
28995
  y: offsetY
@@ -28524,6 +29316,7 @@ var Viewport = class {
28524
29316
  }
28525
29317
  _calcDiffCacheBound(prevBound, currBound) {
28526
29318
  if (!prevBound) return [currBound];
29319
+ if (prevBound.right <= currBound.left || currBound.right <= prevBound.left || prevBound.bottom <= currBound.top || currBound.bottom <= prevBound.top) return [currBound];
28527
29320
  const additionalAreas = [];
28528
29321
  if (currBound.left < prevBound.left) additionalAreas.push({
28529
29322
  top: currBound.top,
@@ -28582,4 +29375,4 @@ var Viewport = class {
28582
29375
  };
28583
29376
 
28584
29377
  //#endregion
28585
- export { BASE_OBJECT_ARRAY, BG_Z_INDEX, BORDER_TYPE, BORDER_Z_INDEX, Background, BaseObject, Border, BreakType, CHECK_OBJECT_ARRAY, CIRCLE_OBJECT_ARRAY, COLOR_BLACK_RGB, CURSOR_TYPE, Canvas, CanvasColorService, CanvasRenderMode, CheckboxShape, Circle, ColumnHeaderLayout, ComponentExtension, Control, Custom, CustomObject, DEFAULT_DOCUMENT_FONTSIZE, DEFAULT_FONTFACE_PLANE, DEFAULT_FRAME_LIST_SIZE, DEFAULT_FRAME_SAMPLE_SIZE, DEFAULT_MEASURE_TEXT, DEFAULT_OFFSET_SPACING, DEFAULT_PADDING_DATA, DEFAULT_SKELETON_FOOTER, DEFAULT_SKELETON_HEADER, DOCUMENT_CONTEXT_CLIP_TYPE, DRAWING_OBJECT_LAYER_INDEX, DRAWING_OBJECT_LOWER_LAYER_INDEX, DRAWING_OBJECT_UPPER_LAYER_INDEX, DashedRect, DataStreamTreeNode, DeviceInputEventType, DeviceType, DocBackground, DocSimpleSkeleton, DocumentEditArea, DocumentSkeleton, DocumentSkeletonPageType, DocumentViewModel, Documents, DocumentsSpanAndLineExtensionRegistry, Drawing, DrawingGroupObject, DumbCanvasColorService, EXPAND_SIZE_FOR_RENDER_OVERFLOW, Engine, EventConstants, FIX_ONE_PIXEL_BLUR_OFFSET, FONT_EXTENSION_Z_INDEX, Font, FontCache, GlyphType, Group, HitCanvas, ICanvasColorService, INITIAL_MATRIX, INITIAL_Path2, IRenderManagerService, IRenderingEngine, IWatermarkTypeEnum, Image$1 as Image, IsSafari, LINK_VIEW_PORT_TYPE, Layer, LineType, Liquid, MAIN_VIEW_PORT_KEY, MAXIMUM_COL_WIDTH, MAXIMUM_ROW_HEIGHT, MEASURE_EXTENT, MEASURE_EXTENT_FOR_PARAGRAPH, MIDDLE_CELL_POS_MAGIC_NUMBER, MIN_COL_WIDTH, Marker, NORMAL_TEXT_SELECTION_PLUGIN_STYLE, ORIENTATION_TYPE, ObjectType, PATH_OBJECT_ARRAY, PRINTING_BG_Z_INDEX, PageLayoutType, Path, Path2, PerformanceMonitor, PointerInput, RECT_OBJECT_ARRAY, REGULAR_POLYGON_OBJECT_ARRAY, RENDER_CLASS_TYPE, RENDER_RAW_FORMULA_KEY, RICHTEXT_OBJECT_ARRAY, Rect, RegularPolygon, RenderComponent, RenderManagerService, RenderUnit, RichText, RollingAverage, RowHeaderLayout, SHAPE_OBJECT_ARRAY, SHAPE_TYPE, SHEET_EXTENSION_PREFIX, SHEET_EXTENSION_TYPE, SHEET_VIEWPORT_KEY, SLIDE_NAVIGATION_KEY, Scene, SceneCanvas, SceneViewer, ScrollBar, ScrollTimer, ScrollTimerType, Shape, SheetColumnHeaderExtensionRegistry, SheetComponent, SheetExtension, SheetRowHeaderExtensionRegistry, ShowGridlinesState, SkeletonType, Slide, Spreadsheet, SpreadsheetColumnHeader, SpreadsheetExtensionRegistry, SpreadsheetHeader, SpreadsheetRowHeader, SpreadsheetSkeleton, TEXT_OBJECT_ARRAY, TRANSFORM_CHANGE_OBSERVABLE_TYPE, Text, Transform, UNIVER_WATERMARK_LAYER_INDEX, UNIVER_WATERMARK_STORAGE_KEY, UniverPrintingContext, UniverRenderEnginePlugin, UniverRenderingContext, UniverRenderingContext2D, VERTICAL_ROTATE_ANGLE, Vector2, Viewport, WatermarkLayer, calculateRectRotate, cancelRequestFrame, checkStyle, clampRange, clearLineByBorderType, convertTextRotation, convertTransformToOffsetX, convertTransformToOffsetY, createCanvasElement, createImageElement, degToRad, drawDiagonalLineByBorderType, drawLineByBorderType, expandRangeIfIntersects, fixLineWidthByScale, generateRandomKey, getCellByIndexWithMergeInfo, getCellPositionByIndex, getCharSpaceApply, getColor, getCurrentScrollXY, getCurrentTypeOfRenderer, getDPI, getDevicePixelRatio, getDocsSkeletonPageSize, getDrawingGroupState, getFirstGrapheme, getFontStyleString, getGroupState, getLastColumn, getLastLine, getLineOffset, getLineWidth, getLineWith, getNumberUnitValue, getOffsetRectForDom, getPageFromPath, getParagraphByGlyph, getPointerPrefix, getRenderTransformBaseOnParentBound, getRotateOffsetAndFarthestHypotenuse, getRotateOrientation, getRotatedBoundInGroup, getScale, getSizeForDom, getSystemHighlightColor, getTableIdAndSliceIndex, getTranslateInSpreadContextWithPixelRatio, getValueType, glyphIterator, hasAllLatin, hasArabic, hasBasicLatin, hasCJK, hasCJKPunctuation, hasCJKText, hasLatinExtendedA, hasLatinExtendedB, hasLatinOneSupplement, hasListGlyph, hasSpace, hasTibetan, hasUnMergedCellInRow, inViewRanges, injectStyle, isArray, isCjkCenterAlignedPunctuation, isCjkLeftAlignedPunctuation, isCjkRightAlignedPunctuation, isDate, isEmojiGrapheme, isFirstGlyph, isFunction, isIndentByGlyph, isLastGlyph, isNumber, isObject, isPlaceholderOrSpace, isRectIntersect, isRegExp, isSameLine, isString, lineIterator, mergeInfoOffset, parseDataStreamToTree, pixelToPt, precisionTo, ptToMM, ptToPixel, ptToPx, pxToInch, pxToNum, pxToPt, radToDeg, renderImageWatermark, renderTextWatermark, renderUserInfoWatermark, renderWatermark, requestNewFrame, setLineType, sheetContentViewportKeys, sheetHeaderViewportKeys, startWithEmoji, toPx, transformObjectOutOfGroup, withCurrentTypeOfRenderer };
29378
+ export { BASE_OBJECT_ARRAY, BG_Z_INDEX, BORDER_TYPE, BORDER_Z_INDEX, Background, BaseObject, Border, BreakType, CHECK_OBJECT_ARRAY, CIRCLE_OBJECT_ARRAY, COLOR_BLACK_RGB, CURSOR_TYPE, Canvas, CanvasColorService, CanvasRenderMode, CheckboxShape, Circle, ColumnHeaderLayout, ComponentExtension, Control, Custom, CustomObject, DEFAULT_DOCUMENT_FONTSIZE, DEFAULT_FONTFACE_PLANE, DEFAULT_FRAME_LIST_SIZE, DEFAULT_FRAME_SAMPLE_SIZE, DEFAULT_MEASURE_TEXT, DEFAULT_OFFSET_SPACING, DEFAULT_PADDING_DATA, DEFAULT_SKELETON_FOOTER, DEFAULT_SKELETON_HEADER, DOCUMENT_CONTEXT_CLIP_TYPE, DRAWING_OBJECT_LAYER_INDEX, DRAWING_OBJECT_LOWER_LAYER_INDEX, DRAWING_OBJECT_UPPER_LAYER_INDEX, DashedRect, DataStreamTreeNode, DeviceInputEventType, DeviceType, DocBackground, DocSimpleSkeleton, DocumentEditArea, DocumentSkeleton, DocumentSkeletonPageType, DocumentViewModel, Documents, DocumentsSpanAndLineExtensionRegistry, Drawing, DrawingGroupObject, DumbCanvasColorService, EXPAND_SIZE_FOR_RENDER_OVERFLOW, Engine, EventConstants, FIX_ONE_PIXEL_BLUR_OFFSET, FONT_EXTENSION_Z_INDEX, Font, FontCache, GlyphType, Group, HitCanvas, ICanvasColorService, INITIAL_MATRIX, INITIAL_Path2, IRenderManagerService, IRenderingEngine, IWatermarkTypeEnum, Image$1 as Image, IsSafari, LINK_VIEW_PORT_TYPE, Layer, LineType, Liquid, MAIN_VIEW_PORT_KEY, MAXIMUM_COL_WIDTH, MAXIMUM_ROW_HEIGHT, MEASURE_EXTENT, MEASURE_EXTENT_FOR_PARAGRAPH, MIDDLE_CELL_POS_MAGIC_NUMBER, MIN_COL_WIDTH, Marker, NORMAL_TEXT_SELECTION_PLUGIN_STYLE, ORIENTATION_TYPE, ObjectType, PATH_OBJECT_ARRAY, PRINTING_BG_Z_INDEX, PageLayoutType, Path, Path2, PerformanceMonitor, PointerInput, RECT_OBJECT_ARRAY, REGULAR_POLYGON_OBJECT_ARRAY, RENDER_CLASS_TYPE, RENDER_RAW_FORMULA_KEY, RICHTEXT_OBJECT_ARRAY, Rect, RegularPolygon, RenderComponent, RenderManagerService, RenderUnit, RichText, RollingAverage, RowHeaderLayout, SHAPE_OBJECT_ARRAY, SHAPE_TYPE, SHEET_EXTENSION_PREFIX, SHEET_EXTENSION_TYPE, SHEET_VIEWPORT_KEY, SLIDE_NAVIGATION_KEY, Scene, SceneCanvas, SceneViewer, ScrollBar, ScrollTimer, ScrollTimerType, Shape, SheetColumnHeaderExtensionRegistry, SheetComponent, SheetExtension, SheetRowHeaderExtensionRegistry, ShowGridlinesState, SkeletonType, Slide, Spreadsheet, SpreadsheetColumnHeader, SpreadsheetExtensionRegistry, SpreadsheetHeader, SpreadsheetRowHeader, SpreadsheetSkeleton, TEXT_OBJECT_ARRAY, TRANSFORM_CHANGE_OBSERVABLE_TYPE, Text, Transform, UNIVER_WATERMARK_LAYER_INDEX, UNIVER_WATERMARK_STORAGE_KEY, UniverPrintingContext, UniverRenderEnginePlugin, UniverRenderingContext, UniverRenderingContext2D, VERTICAL_ROTATE_ANGLE, Vector2, Viewport, WatermarkLayer, calculateRectRotate, cancelRequestFrame, checkStyle, clampRange, clearLineByBorderType, convertTextRotation, convertTransformToOffsetX, convertTransformToOffsetY, createCanvasElement, createImageElement, degToRad, drawDiagonalLineByBorderType, drawLineByBorderType, expandRangeIfIntersects, fixLineWidthByScale, generateRandomKey, getCellByIndexWithMergeInfo, getCellPositionByIndex, getCharSpaceApply, getColor, getCurrentScrollXY, getCurrentTypeOfRenderer, getDPI, getDevicePixelRatio, getDocsSkeletonPageSize, getDocsTableRenderViewport, getDrawingGroupState, getFirstGrapheme, getFontStyleString, getGroupState, getLastColumn, getLastLine, getLineOffset, getLineWidth, getLineWith, getNextWheelZoomRatio, getNumberUnitValue, getOffsetRectForDom, getPageFromPath, getParagraphByGlyph, getPointerPrefix, getRenderTransformBaseOnParentBound, getRotateOffsetAndFarthestHypotenuse, getRotateOrientation, getRotatedBoundInGroup, getScale, getSizeForDom, getSystemHighlightColor, getTableIdAndSliceIndex, getTranslateInSpreadContextWithPixelRatio, getValueType, glyphIterator, hasAllLatin, hasArabic, hasBasicLatin, hasCJK, hasCJKPunctuation, hasCJKText, hasLatinExtendedA, hasLatinExtendedB, hasLatinOneSupplement, hasListGlyph, hasSpace, hasThai, hasTibetan, hasUnMergedCellInRow, inViewRanges, injectStyle, isArray, isCjkCenterAlignedPunctuation, isCjkLeftAlignedPunctuation, isCjkRightAlignedPunctuation, isDate, isEmojiGrapheme, isFirstGlyph, isFunction, isIndentByGlyph, isLastGlyph, isNumber, isObject, isPlaceholderOrSpace, isRectIntersect, isRegExp, isSameLine, isString, lineIterator, mergeInfoOffset, parseDataStreamToTree, pixelToPt, precisionTo, ptToMM, ptToPixel, ptToPx, pxToInch, pxToNum, pxToPt, radToDeg, renderImageWatermark, renderTextWatermark, renderUserInfoWatermark, renderWatermark, requestNewFrame, setDocsTableRenderViewportProvider, setLineType, sheetContentViewportKeys, sheetHeaderViewportKeys, startWithEmoji, toPx, transformObjectOutOfGroup, withCurrentTypeOfRenderer };