fmode-ng 0.0.113 → 0.0.115

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 (275) hide show
  1. package/LICENSE.md +8 -0
  2. package/README.md +37 -37
  3. package/esm2022/fmode-ng.mjs +10 -5
  4. package/esm2022/lib/aigc/agent/fm-agent-task/fm-agent-task.component.mjs +8 -92
  5. package/esm2022/lib/aigc/agent/index.mjs +10 -3
  6. package/esm2022/lib/aigc/avatar/avatar.module.mjs +10 -45
  7. package/esm2022/lib/aigc/avatar/comp-avatar-particle/avatar.role.mjs +10 -2
  8. package/esm2022/lib/aigc/avatar/comp-avatar-particle/comp-avatar-particle.component.mjs +10 -315
  9. package/esm2022/lib/aigc/avatar/comp-avatar-particle/index.mjs +10 -3
  10. package/esm2022/lib/aigc/avatar/comp-avatar-particle/role-points.class.mjs +10 -57
  11. package/esm2022/lib/aigc/avatar/comp-avatar-role-image/comp-avatar-role-image.component.mjs +10 -98
  12. package/esm2022/lib/aigc/avatar/comp-avatar-role-video/comp-avatar-role-video.component.mjs +10 -107
  13. package/esm2022/lib/aigc/avatar/comp-avatar-talk/comp-avatar-talk.component.mjs +10 -113
  14. package/esm2022/lib/aigc/avatar/index.mjs +10 -8
  15. package/esm2022/lib/aigc/avatar/interface-avatar-role.mjs +10 -2
  16. package/esm2022/lib/aigc/avatar/modal-chat-voice-input/modal-chat-voice-input.component.mjs +8 -164
  17. package/esm2022/lib/aigc/chat/chat-header-area/comp-header-area.component.mjs +10 -49
  18. package/esm2022/lib/aigc/chat/chat-header-area/index.mjs +10 -2
  19. package/esm2022/lib/aigc/chat/chat-list/chat-list.component.mjs +8 -155
  20. package/esm2022/lib/aigc/chat/chat-list/index.mjs +10 -2
  21. package/esm2022/lib/aigc/chat/chat-message-area/comp-message-area.component.mjs +10 -40
  22. package/esm2022/lib/aigc/chat/chat-message-area/index.mjs +10 -2
  23. package/esm2022/lib/aigc/chat/chat-message-card/comp-message-card.component.mjs +10 -140
  24. package/esm2022/lib/aigc/chat/chat-message-card/duration-str.pipe.mjs +10 -29
  25. package/esm2022/lib/aigc/chat/chat-message-card/index.mjs +10 -3
  26. package/esm2022/lib/aigc/chat/chat-modal-input/index.mjs +10 -3
  27. package/esm2022/lib/aigc/chat/chat-modal-input/modal-audio-message/modal-audio-message.component.mjs +8 -193
  28. package/esm2022/lib/aigc/chat/chat-modal-input/modal-input.component.mjs +10 -331
  29. package/esm2022/lib/aigc/chat/chat-panel/chat-panel.component.mjs +8 -249
  30. package/esm2022/lib/aigc/chat/comp-role-prompt/comp-role-prompt.component.mjs +10 -83
  31. package/esm2022/lib/aigc/chat/comp-role-prompt/index.mjs +10 -2
  32. package/esm2022/lib/aigc/chat/index.mjs +10 -8
  33. package/esm2022/lib/aigc/comp-markdown-preview/clipboard.service.mjs +10 -82
  34. package/esm2022/lib/aigc/comp-markdown-preview/markdown-parse.mjs +8 -367
  35. package/esm2022/lib/aigc/comp-markdown-preview/markdown-preview.component.mjs +10 -51
  36. package/esm2022/lib/aigc/comp-markdown-preview/markdown-preview.module.mjs +10 -24
  37. package/esm2022/lib/aigc/comp-markdown-preview/plugins/md-mathjax/index.mjs +10 -115
  38. package/esm2022/lib/aigc/index.mjs +10 -14
  39. package/esm2022/lib/aigc/service-fmai/fmai.service.mjs +10 -21
  40. package/esm2022/lib/aigc/service-fmai/service-chat/chat-class.mjs +10 -2
  41. package/esm2022/lib/aigc/service-fmai/service-chat/chat.service.mjs +8 -174
  42. package/esm2022/lib/aigc/service-fmai/service-chat/index.mjs +10 -7
  43. package/esm2022/lib/aigc/service-fmai/service-chat/mask-list.mjs +9 -194
  44. package/esm2022/lib/aigc/service-fmai/service-chat/pipes/chat-content.pipe.mjs +10 -27
  45. package/esm2022/lib/aigc/service-fmai/service-chat/pipes/hidexml.pipe.mjs +10 -27
  46. package/esm2022/lib/aigc/service-fmai/service-chat/utilnow.pipe.mjs +10 -68
  47. package/esm2022/lib/aigc/service-fmai/service-imagine/imagine-func.mjs +9 -162
  48. package/esm2022/lib/aigc/service-fmai/service-imagine/imagine-work.mjs +10 -68
  49. package/esm2022/lib/aigc/service-fmai/service-imagine/imagine.service.mjs +8 -313
  50. package/esm2022/lib/aigc/service-fmai/service-imagine/index.mjs +10 -4
  51. package/esm2022/lib/aigc/story/fm-office-viewer/fm-office-viewer.component.mjs +10 -62
  52. package/esm2022/lib/aigc/story/fm-story-card/fm-story-card.component.mjs +10 -87
  53. package/esm2022/lib/aigc/story/fm-story-list/fm-story-list.component.mjs +10 -345
  54. package/esm2022/lib/aigc/story/fm-story-list/story-preview.mjs +10 -81
  55. package/esm2022/lib/aigc/story/fm-story-loader/fm-story-loader.component.mjs +10 -152
  56. package/esm2022/lib/aigc/story/fm-story-splitter/fm-story-splitter.component.mjs +10 -42
  57. package/esm2022/lib/aigc/story/index.mjs +10 -6
  58. package/esm2022/lib/aigc/story/modal-chat-story/comp-chat-story-json/comp-chat-story-json.component.mjs +10 -47
  59. package/esm2022/lib/aigc/story/modal-chat-story/comp-diary-story/comp-diary-story.component.mjs +10 -95
  60. package/esm2022/lib/aigc/story/modal-chat-story/modal-chat-story.component.mjs +10 -253
  61. package/esm2022/lib/aigc/story/story.service.mjs +10 -35
  62. package/esm2022/lib/aigc/voice/fmode-voice.service.mjs +10 -636
  63. package/esm2022/lib/aigc/voice/index.mjs +10 -7
  64. package/esm2022/lib/aigc/voice/lib/audio/audio.player.mjs +10 -55
  65. package/esm2022/lib/aigc/voice/lib/audio/audio.streamer.mjs +10 -2
  66. package/esm2022/lib/aigc/voice/lib/audio/streamer.microsoft.mjs +10 -96
  67. package/esm2022/lib/aigc/voice/lib/audio/streamer.pcm.mjs +8 -177
  68. package/esm2022/lib/aigc/voice/lib/pcm2wav.mjs +10 -38
  69. package/esm2022/lib/aigc/voice/lib/recorder/extension-waveview.mjs +10 -215
  70. package/esm2022/lib/aigc/voice/lib/resample.mjs +10 -34
  71. package/esm2022/lib/aigc/voice/tts/fmode-tts-class.mjs +10 -189
  72. package/esm2022/lib/aigc/voice/tts/index.mjs +10 -5
  73. package/esm2022/lib/aigc/voice/tts/int-tts-provider.mjs +10 -2
  74. package/esm2022/lib/aigc/voice/tts/provider-doubao.mjs +8 -346
  75. package/esm2022/lib/code/fm-codemirror/fm-codemirror.component.mjs +8 -342
  76. package/esm2022/lib/code/index.mjs +10 -2
  77. package/esm2022/lib/core/agent/chat/completion/fmode-completion.mjs +8 -430
  78. package/esm2022/lib/core/agent/chat/completion/index.mjs +10 -2
  79. package/esm2022/lib/core/agent/chat/completion/int-gpt-chat-options.mjs +10 -2
  80. package/esm2022/lib/core/agent/chat/fmode-chat.mjs +8 -617
  81. package/esm2022/lib/core/agent/chat/index.mjs +10 -4
  82. package/esm2022/lib/core/agent/chat/interface.mjs +10 -2
  83. package/esm2022/lib/core/agent/index.mjs +10 -6
  84. package/esm2022/lib/core/agent/prompt/agent.prompt.mjs +10 -133
  85. package/esm2022/lib/core/agent/prompt/index.mjs +10 -2
  86. package/esm2022/lib/core/agent/prompt/prompt-util.mjs +10 -16
  87. package/esm2022/lib/core/agent/story/agent.story.mjs +10 -64
  88. package/esm2022/lib/core/agent/story/index.mjs +10 -2
  89. package/esm2022/lib/core/agent/task/agent.task.mjs +10 -90
  90. package/esm2022/lib/core/agent/task/index.mjs +10 -2
  91. package/esm2022/lib/core/agent/waiting/index.mjs +10 -3
  92. package/esm2022/lib/core/agent/waiting/loading/loading.ctrl.mjs +10 -279
  93. package/esm2022/lib/core/agent/waiting/tips/tips.ctrl.mjs +8 -190
  94. package/esm2022/lib/core/index.mjs +10 -4
  95. package/esm2022/lib/core/parse/datatype/acl.mjs +10 -57
  96. package/esm2022/lib/core/parse/datatype/file.mjs +10 -69
  97. package/esm2022/lib/core/parse/datatype/geopoint.mjs +10 -57
  98. package/esm2022/lib/core/parse/datatype/relation.mjs +10 -56
  99. package/esm2022/lib/core/parse/fmode.cloud.mjs +10 -0
  100. package/esm2022/lib/core/parse/fmode.object.mjs +10 -232
  101. package/esm2022/lib/core/parse/fmode.parse.mjs +10 -84
  102. package/esm2022/lib/core/parse/fmode.query.mjs +8 -500
  103. package/esm2022/lib/core/parse/fmode.user.mjs +10 -275
  104. package/esm2022/lib/core/parse/index.mjs +10 -5
  105. package/esm2022/lib/core/parse/types.mjs +10 -2
  106. package/esm2022/lib/core/voice/index.mjs +10 -3
  107. package/esm2022/lib/core/voice/tts/index.mjs +10 -2
  108. package/esm2022/lib/icon/filetype/audio.svg.mjs +10 -3
  109. package/esm2022/lib/icon/filetype/avatar.svg.mjs +10 -14
  110. package/esm2022/lib/icon/filetype/chat.svg.mjs +10 -3
  111. package/esm2022/lib/icon/filetype/docx.svg.mjs +10 -3
  112. package/esm2022/lib/icon/filetype/file.svg.mjs +10 -3
  113. package/esm2022/lib/icon/filetype/filetype.pipe.mjs +10 -57
  114. package/esm2022/lib/icon/filetype/index.mjs +10 -12
  115. package/esm2022/lib/icon/filetype/md.svg.mjs +10 -3
  116. package/esm2022/lib/icon/filetype/pdf.svg.mjs +10 -3
  117. package/esm2022/lib/icon/filetype/pptx.svg.mjs +10 -3
  118. package/esm2022/lib/icon/filetype/svgtoblob.mjs +10 -8
  119. package/esm2022/lib/icon/filetype/video.svg.mjs +10 -3
  120. package/esm2022/lib/icon/filetype/xlsx.svg.mjs +10 -3
  121. package/esm2022/lib/icon/index.mjs +10 -2
  122. package/esm2022/lib/map/comp-poi-picker/comp-poi-picker.component.mjs +10 -209
  123. package/esm2022/lib/map/comp-poi-picker/comp-poi-picker.module.mjs +10 -33
  124. package/esm2022/lib/map/index.mjs +10 -4
  125. package/esm2022/lib/map/map.module.mjs +10 -61
  126. package/esm2022/lib/map/page-loca-scatter/page-loca-scatter.component.mjs +10 -132
  127. package/esm2022/lib/map/page-map.start/page-map.start.component.mjs +8 -115
  128. package/esm2022/lib/map/page-plan-route/page-plan-route.component.mjs +8 -118
  129. package/esm2022/lib/nova-cloud/index.mjs +10 -3
  130. package/esm2022/lib/nova-cloud/ncloud-api-func.mjs +10 -91
  131. package/esm2022/lib/nova-cloud/nova-cloud.service.mjs +10 -53
  132. package/esm2022/lib/payment/index.mjs +10 -2
  133. package/esm2022/lib/payment/payment/payment.component.mjs +10 -543
  134. package/esm2022/lib/payment/payment.service.mjs +10 -202
  135. package/esm2022/lib/person/comp-person-gender-icon/comp-person-gender-icon.component.mjs +10 -48
  136. package/esm2022/lib/person/comp-person-item/comp-person-item.component.mjs +10 -29
  137. package/esm2022/lib/person/comp-person-story/comp-person-story.component.mjs +10 -211
  138. package/esm2022/lib/person/edit-upload/edit-upload.component.mjs +8 -412
  139. package/esm2022/lib/person/edit-upload/edit-upload.module.mjs +10 -50
  140. package/esm2022/lib/person/index.mjs +10 -5
  141. package/esm2022/lib/person/modal-person-select/modal-person-select.component.mjs +10 -144
  142. package/esm2022/lib/person/modal-user-verify/secret-text.pipe.mjs +10 -41
  143. package/esm2022/lib/person/modal-user-verify/user-verify.component.mjs +10 -595
  144. package/esm2022/lib/person/person-detail/person-detail.component.mjs +10 -172
  145. package/esm2022/lib/person/person.service.mjs +8 -193
  146. package/esm2022/lib/platform/cross.service.mjs +10 -62
  147. package/esm2022/lib/platform/index.mjs +10 -2
  148. package/esm2022/lib/social/index.mjs +10 -2
  149. package/esm2022/lib/social/wechat/wechat-jssdk.service.mjs +8 -230
  150. package/esm2022/lib/storage/comp-hwobs-manager/hwobs-manager.component.mjs +10 -59
  151. package/esm2022/lib/storage/index.mjs +10 -5
  152. package/esm2022/lib/storage/service-hwobs/hwobs.service.mjs +8 -131
  153. package/esm2022/lib/storage/service-hwobs/index.mjs +10 -3
  154. package/esm2022/lib/storage/service-hwobs/typings/esdk-obs-browser.mjs +1 -1
  155. package/esm2022/lib/storage/service-upload/index.mjs +10 -2
  156. package/esm2022/lib/storage/service-upload/nova-upload.service.mjs +8 -513
  157. package/esm2022/lib/storage/service-upload/util-file-md5.mjs +10 -28
  158. package/esm2022/lib/storage/service-upload/util-file-metadata.mjs +10 -93
  159. package/esm2022/lib/storage/storage.module.mjs +10 -42
  160. package/esm2022/lib/text/fm-article-editor/article-editor-topbar/article-editor-topbar.component.mjs +10 -72
  161. package/esm2022/lib/text/fm-article-editor/article.service.mjs +10 -237
  162. package/esm2022/lib/text/fm-article-editor/comp-upload-book-banners/comp-upload-book-banners.component.mjs +8 -72
  163. package/esm2022/lib/text/fm-article-editor/draft.service.mjs +10 -207
  164. package/esm2022/lib/text/fm-article-editor/fm-article-aitool/fm-article-aitool.component.mjs +8 -227
  165. package/esm2022/lib/text/fm-article-editor/fm-article-draft/fm-article-draft.component.mjs +10 -303
  166. package/esm2022/lib/text/fm-article-editor/fm-article-editor.component.mjs +8 -371
  167. package/esm2022/lib/text/fm-article-editor/fm-article-outline/fm-article-outline.component.mjs +10 -94
  168. package/esm2022/lib/text/fm-article-editor/fm-article-outline-leftitem/fm-article-outline-leftitem.component.mjs +10 -36
  169. package/esm2022/lib/text/fm-article-editor/fm-article-preview/fm-article-preview.component.mjs +10 -281
  170. package/esm2022/lib/text/fm-article-editor/fm-article-write-options/fm-article-write-options.component.mjs +10 -72
  171. package/esm2022/lib/text/fm-article-editor/outline-count.pipe.mjs +10 -22
  172. package/esm2022/lib/text/fm-article-editor/prompt/prompt-insertion-article.mjs +10 -169
  173. package/esm2022/lib/text/fm-article-editor/task-article-generation.mjs +10 -69
  174. package/esm2022/lib/text/fm-article-editor/tasks/task-article-draft-create.mjs +10 -65
  175. package/esm2022/lib/text/fm-article-editor/tasks/task-article-outline-edit.mjs +10 -55
  176. package/esm2022/lib/text/fm-article-editor/tasks/task-article-outline.mjs +10 -142
  177. package/esm2022/lib/text/fm-article-editor/tasks/task-article-preview.mjs +10 -35
  178. package/esm2022/lib/text/fm-article-editor/tasks/task-article-writing-options.mjs +10 -81
  179. package/esm2022/lib/text/fm-article-editor/tasks/task-document-select.mjs +10 -50
  180. package/esm2022/lib/text/fm-text-quill/fm-text-quill.component.mjs +10 -145
  181. package/esm2022/lib/text/index.mjs +10 -4
  182. package/esm2022/lib/user/account/account.service.mjs +10 -222
  183. package/esm2022/lib/user/captcha/captcha.component.mjs +10 -135
  184. package/esm2022/lib/user/comp-user-avatar/comp-user-avatar.component.mjs +10 -66
  185. package/esm2022/lib/user/index.mjs +10 -17
  186. package/esm2022/lib/user/login/auth.guard.mjs +10 -28
  187. package/esm2022/lib/user/login/auth.service.mjs +8 -433
  188. package/esm2022/lib/user/login/login.component.mjs +10 -916
  189. package/esm2022/lib/user/modal-user-login/modal-user-login.component.mjs +10 -311
  190. package/esm2022/lib/user/profile/auth-profile.guard.mjs +10 -27
  191. package/esm2022/lib/user/profile/auth-profile.service.mjs +10 -122
  192. package/esm2022/lib/user/profile/profile-bind/profile-bind.component.mjs +10 -164
  193. package/esm2022/lib/user/profile/profile-bind/profile-confirm-modal.component.mjs +10 -79
  194. package/esm2022/lib/user/profile/profile.module.mjs +10 -54
  195. package/esm2022/lib/user/staff/index.mjs +10 -4
  196. package/esm2022/lib/user/staff/staff.guard.mjs +10 -26
  197. package/esm2022/lib/user/staff/staff.module.mjs +10 -18
  198. package/esm2022/lib/user/staff/staff.service.mjs +10 -85
  199. package/esm2022/lib/user/user-name.pipe.mjs +10 -29
  200. package/esm2022/lib/user/user.module.mjs +10 -102
  201. package/esm2022/lib/video/fm-video/fm-video.component.mjs +10 -67
  202. package/esm2022/lib/video/index.mjs +10 -2
  203. package/esm2022/public-api.mjs +10 -21
  204. package/fesm2022/fmode-ng.mjs +7 -19788
  205. package/fesm2022/fmode-ng.mjs.map +1 -1
  206. package/lib/aigc/avatar/comp-avatar-role-image/comp-avatar-role-image.component.d.ts +2 -2
  207. package/lib/aigc/avatar/comp-avatar-role-video/comp-avatar-role-video.component.d.ts +2 -2
  208. package/lib/aigc/avatar/comp-avatar-talk/comp-avatar-talk.component.d.ts +2 -2
  209. package/lib/aigc/chat/chat-list/chat-list.component.d.ts +3 -2
  210. package/lib/aigc/chat/chat-message-card/comp-message-card.component.d.ts +3 -3
  211. package/lib/aigc/chat/chat-modal-input/modal-audio-message/modal-audio-message.component.d.ts +2 -2
  212. package/lib/aigc/chat/chat-modal-input/modal-input.component.d.ts +3 -3
  213. package/lib/aigc/service-fmai/service-imagine/imagine-func.d.ts +3 -3
  214. package/lib/aigc/service-fmai/service-imagine/imagine-work.d.ts +4 -4
  215. package/lib/aigc/service-fmai/service-imagine/imagine.service.d.ts +6 -6
  216. package/lib/aigc/story/fm-office-viewer/fm-office-viewer.component.d.ts +2 -2
  217. package/lib/aigc/story/fm-story-card/fm-story-card.component.d.ts +2 -1
  218. package/lib/aigc/story/fm-story-list/fm-story-list.component.d.ts +6 -6
  219. package/lib/aigc/story/fm-story-list/story-preview.d.ts +4 -4
  220. package/lib/aigc/story/fm-story-loader/fm-story-loader.component.d.ts +3 -3
  221. package/lib/aigc/story/fm-story-splitter/fm-story-splitter.component.d.ts +2 -2
  222. package/lib/aigc/story/modal-chat-story/comp-chat-story-json/comp-chat-story-json.component.d.ts +3 -2
  223. package/lib/aigc/story/modal-chat-story/comp-diary-story/comp-diary-story.component.d.ts +3 -2
  224. package/lib/aigc/story/modal-chat-story/modal-chat-story.component.d.ts +6 -6
  225. package/lib/aigc/story/story.service.d.ts +3 -2
  226. package/lib/aigc/voice/tts/fmode-tts-class.d.ts +2 -2
  227. package/lib/core/agent/chat/fmode-chat.d.ts +11 -11
  228. package/lib/core/agent/story/agent.story.d.ts +8 -8
  229. package/lib/core/parse/datatype/geopoint.d.ts +5 -1
  230. package/lib/core/parse/fmode.cloud.d.ts +32 -0
  231. package/lib/core/parse/fmode.object.d.ts +2 -2
  232. package/lib/core/parse/fmode.parse.d.ts +15 -9
  233. package/lib/core/parse/fmode.query.d.ts +41 -2
  234. package/lib/core/parse/fmode.user.d.ts +1 -0
  235. package/lib/core/parse/index.d.ts +1 -0
  236. package/lib/core/parse/types.d.ts +2 -0
  237. package/lib/map/comp-poi-picker/comp-poi-picker.component.d.ts +5 -5
  238. package/lib/payment/payment/payment.component.d.ts +3 -3
  239. package/lib/payment/payment.service.d.ts +4 -4
  240. package/lib/person/comp-person-gender-icon/comp-person-gender-icon.component.d.ts +2 -1
  241. package/lib/person/comp-person-item/comp-person-item.component.d.ts +2 -1
  242. package/lib/person/comp-person-story/comp-person-story.component.d.ts +13 -13
  243. package/lib/person/edit-upload/edit-upload.component.d.ts +1 -1
  244. package/lib/person/modal-person-select/modal-person-select.component.d.ts +5 -5
  245. package/lib/person/modal-user-verify/user-verify.component.d.ts +5 -5
  246. package/lib/person/person-detail/person-detail.component.d.ts +4 -4
  247. package/lib/person/person.service.d.ts +7 -7
  248. package/lib/storage/service-hwobs/hwobs.service.d.ts +4 -5
  249. package/lib/storage/service-upload/nova-upload.service.d.ts +5 -5
  250. package/lib/text/fm-article-editor/article-editor-topbar/article-editor-topbar.component.d.ts +2 -1
  251. package/lib/text/fm-article-editor/article.service.d.ts +12 -12
  252. package/lib/text/fm-article-editor/draft.service.d.ts +5 -5
  253. package/lib/text/fm-article-editor/fm-article-aitool/fm-article-aitool.component.d.ts +3 -2
  254. package/lib/text/fm-article-editor/fm-article-draft/fm-article-draft.component.d.ts +16 -17
  255. package/lib/text/fm-article-editor/fm-article-editor.component.d.ts +3 -3
  256. package/lib/text/fm-article-editor/fm-article-outline/fm-article-outline.component.d.ts +11 -10
  257. package/lib/text/fm-article-editor/fm-article-preview/fm-article-preview.component.d.ts +2 -2
  258. package/lib/text/fm-article-editor/prompt/prompt-insertion-article.d.ts +3 -3
  259. package/lib/text/fm-article-editor/task-article-generation.d.ts +5 -4
  260. package/lib/text/fm-article-editor/tasks/task-article-draft-create.d.ts +3 -3
  261. package/lib/text/fm-article-editor/tasks/task-article-outline-edit.d.ts +3 -3
  262. package/lib/text/fm-article-editor/tasks/task-article-outline.d.ts +3 -3
  263. package/lib/text/fm-article-editor/tasks/task-article-preview.d.ts +2 -1
  264. package/lib/text/fm-article-editor/tasks/task-article-writing-options.d.ts +3 -3
  265. package/lib/text/fm-article-editor/tasks/task-document-select.d.ts +3 -3
  266. package/lib/user/account/account.service.d.ts +2 -2
  267. package/lib/user/comp-user-avatar/comp-user-avatar.component.d.ts +2 -2
  268. package/lib/user/login/auth.service.d.ts +5 -5
  269. package/lib/user/login/login.component.d.ts +3 -3
  270. package/lib/user/profile/auth-profile.service.d.ts +8 -8
  271. package/lib/user/profile/profile-bind/profile-bind.component.d.ts +7 -7
  272. package/lib/user/profile/profile-bind/profile-confirm-modal.component.d.ts +2 -2
  273. package/lib/user/staff/staff.service.d.ts +3 -3
  274. package/lib/user/user-name.pipe.d.ts +2 -2
  275. package/package.json +12 -18
@@ -1,82 +1,10 @@
1
- import { Injectable } from '@angular/core';
2
- import { ToastController } from '@ionic/angular';
3
- import { Clipboard } from '@capacitor/clipboard';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@ionic/angular";
6
- /**
7
- * 剪贴板服务:支持H5、微信、移动端
8
- * @public
9
- */
10
- export class ClipboardService {
11
- constructor(toastCtrl) {
12
- this.toastCtrl = toastCtrl;
13
- }
14
- async copyToClipboard(content) {
15
- try {
16
- await Clipboard.write({
17
- string: content
18
- });
19
- this.copySuccess();
20
- return;
21
- }
22
- catch (error1) {
23
- try {
24
- if (navigator.clipboard && window.isSecureContext) {
25
- await navigator?.clipboard?.writeText(content);
26
- this.copySuccess();
27
- return;
28
- }
29
- else {
30
- throw false;
31
- }
32
- }
33
- catch (error2) {
34
- // 旧的方式
35
- // 创建一个文本域元素
36
- let textArea = document.createElement("textarea");
37
- textArea.value = content;
38
- // 使文本域不在视线范围内
39
- textArea.style.position = "fixed";
40
- textArea.style.left = "-9999px";
41
- textArea.style.top = "-9999px";
42
- document.body.appendChild(textArea);
43
- textArea.focus();
44
- textArea.select(); // 选中文本
45
- try {
46
- // 执行复制命令
47
- let successful = document?.execCommand('copy');
48
- if (successful) {
49
- this.copySuccess();
50
- }
51
- else {
52
- console.error('无法复制文本');
53
- }
54
- }
55
- catch (err) {
56
- console.error('无法复制文本: ', err);
57
- }
58
- // 移除文本域
59
- document.body.removeChild(textArea);
60
- }
61
- }
62
- }
63
- async copySuccess() {
64
- let toast = await this.toastCtrl.create({
65
- duration: 1000,
66
- message: "复制成功",
67
- color: 'primary',
68
- icon: "information-circle",
69
- position: "top"
70
- });
71
- toast.present();
72
- }
73
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ClipboardService, deps: [{ token: i1.ToastController }], target: i0.ɵɵFactoryTarget.Injectable }); }
74
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ClipboardService, providedIn: 'root' }); }
75
- }
76
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ClipboardService, decorators: [{
77
- type: Injectable,
78
- args: [{
79
- providedIn: 'root'
80
- }]
81
- }], ctorParameters: () => [{ type: i1.ToastController }] });
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpcGJvYXJkLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL2FpZ2MvY29tcC1tYXJrZG93bi1wcmV2aWV3L2NsaXBib2FyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBRWpEOzs7R0FHRztBQUlILE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0IsWUFDVSxTQUF5QjtRQUF6QixjQUFTLEdBQVQsU0FBUyxDQUFnQjtJQUduQyxDQUFDO0lBQ0QsS0FBSyxDQUFDLGVBQWUsQ0FBQyxPQUFPO1FBQzNCLElBQUcsQ0FBQztZQUNGLE1BQU0sU0FBUyxDQUFDLEtBQUssQ0FBQztnQkFDcEIsTUFBTSxFQUFFLE9BQU87YUFDaEIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1lBQ2xCLE9BQU07UUFDUixDQUFDO1FBQUEsT0FBTSxNQUFNLEVBQUMsQ0FBQztZQUNiLElBQUcsQ0FBQztnQkFDRixJQUFJLFNBQVMsQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO29CQUNsRCxNQUFNLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFBO29CQUM5QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7b0JBQ2xCLE9BQU07Z0JBQ1IsQ0FBQztxQkFBSSxDQUFDO29CQUNKLE1BQU0sS0FBSyxDQUFBO2dCQUNiLENBQUM7WUFDSCxDQUFDO1lBQUEsT0FBTSxNQUFNLEVBQUMsQ0FBQztnQkFDYixPQUFPO2dCQUNQLFlBQVk7Z0JBQ1osSUFBSSxRQUFRLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDbEQsUUFBUSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUM7Z0JBRXpCLGNBQWM7Z0JBQ2QsUUFBUSxDQUFDLEtBQUssQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO2dCQUNsQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksR0FBRyxTQUFTLENBQUM7Z0JBQ2hDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQztnQkFFL0IsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3BDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDakIsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsT0FBTztnQkFFMUIsSUFBSSxDQUFDO29CQUNILFNBQVM7b0JBQ1QsSUFBSSxVQUFVLEdBQUcsUUFBUSxFQUFFLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDL0MsSUFBSSxVQUFVLEVBQUUsQ0FBQzt3QkFDZixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3JCLENBQUM7eUJBQU0sQ0FBQzt3QkFDTixPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO29CQUMxQixDQUFDO2dCQUNILENBQUM7Z0JBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztvQkFDYixPQUFPLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDakMsQ0FBQztnQkFDRCxRQUFRO2dCQUNSLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3RDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUNELEtBQUssQ0FBQyxXQUFXO1FBQ2YsSUFBSSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQztZQUN0QyxRQUFRLEVBQUMsSUFBSTtZQUNiLE9BQU8sRUFBQyxNQUFNO1lBQ2QsS0FBSyxFQUFDLFNBQVM7WUFDZixJQUFJLEVBQUMsb0JBQW9CO1lBQ3pCLFFBQVEsRUFBQyxLQUFLO1NBQ2YsQ0FBQyxDQUFBO1FBQ0YsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xCLENBQUM7K0dBL0RVLGdCQUFnQjttSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTs7NEZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVG9hc3RDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBDbGlwYm9hcmQgfSBmcm9tICdAY2FwYWNpdG9yL2NsaXBib2FyZCc7XHJcblxyXG4vKipcclxuICog5Ymq6LS05p2/5pyN5Yqh77ya5pSv5oyBSDXjgIHlvq7kv6HjgIHnp7vliqjnq69cclxuICogQHB1YmxpY1xyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2xpcGJvYXJkU2VydmljZSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB0b2FzdEN0cmw6VG9hc3RDb250cm9sbGVyXHJcbiAgKSB7IFxyXG5cclxuICB9XHJcbiAgYXN5bmMgY29weVRvQ2xpcGJvYXJkKGNvbnRlbnQpe1xyXG4gICAgdHJ5e1xyXG4gICAgICBhd2FpdCBDbGlwYm9hcmQud3JpdGUoe1xyXG4gICAgICAgIHN0cmluZzogY29udGVudFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5jb3B5U3VjY2VzcygpXHJcbiAgICAgIHJldHVyblxyXG4gICAgfWNhdGNoKGVycm9yMSl7XHJcbiAgICAgIHRyeXtcclxuICAgICAgICBpZiAobmF2aWdhdG9yLmNsaXBib2FyZCAmJiB3aW5kb3cuaXNTZWN1cmVDb250ZXh0KSB7XHJcbiAgICAgICAgICBhd2FpdCBuYXZpZ2F0b3I/LmNsaXBib2FyZD8ud3JpdGVUZXh0KGNvbnRlbnQpXHJcbiAgICAgICAgICB0aGlzLmNvcHlTdWNjZXNzKClcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgdGhyb3cgZmFsc2VcclxuICAgICAgICB9XHJcbiAgICAgIH1jYXRjaChlcnJvcjIpe1xyXG4gICAgICAgIC8vIOaXp+eahOaWueW8j1xyXG4gICAgICAgIC8vIOWIm+W7uuS4gOS4quaWh+acrOWfn+WFg+e0oFxyXG4gICAgICAgIGxldCB0ZXh0QXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJ0ZXh0YXJlYVwiKTtcclxuICAgICAgICB0ZXh0QXJlYS52YWx1ZSA9IGNvbnRlbnQ7XHJcblxyXG4gICAgICAgIC8vIOS9v+aWh+acrOWfn+S4jeWcqOinhue6v+iMg+WbtOWGhVxyXG4gICAgICAgIHRleHRBcmVhLnN0eWxlLnBvc2l0aW9uID0gXCJmaXhlZFwiO1xyXG4gICAgICAgIHRleHRBcmVhLnN0eWxlLmxlZnQgPSBcIi05OTk5cHhcIjtcclxuICAgICAgICB0ZXh0QXJlYS5zdHlsZS50b3AgPSBcIi05OTk5cHhcIjtcclxuXHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0ZXh0QXJlYSk7XHJcbiAgICAgICAgdGV4dEFyZWEuZm9jdXMoKTtcclxuICAgICAgICB0ZXh0QXJlYS5zZWxlY3QoKTsgLy8g6YCJ5Lit5paH5pysXHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAvLyDmiafooYzlpI3liLblkb3ku6RcclxuICAgICAgICAgIGxldCBzdWNjZXNzZnVsID0gZG9jdW1lbnQ/LmV4ZWNDb21tYW5kKCdjb3B5Jyk7XHJcbiAgICAgICAgICBpZiAoc3VjY2Vzc2Z1bCkge1xyXG4gICAgICAgICAgICB0aGlzLmNvcHlTdWNjZXNzKCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCfml6Dms5XlpI3liLbmlofmnKwnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ+aXoOazleWkjeWItuaWh+acrDogJywgZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8g56e76Zmk5paH5pys5Z+fXHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0ZXh0QXJlYSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgYXN5bmMgY29weVN1Y2Nlc3MoKXtcclxuICAgIGxldCB0b2FzdCA9IGF3YWl0IHRoaXMudG9hc3RDdHJsLmNyZWF0ZSh7XHJcbiAgICAgIGR1cmF0aW9uOjEwMDAsXHJcbiAgICAgIG1lc3NhZ2U6XCLlpI3liLbmiJDlip9cIixcclxuICAgICAgY29sb3I6J3ByaW1hcnknLFxyXG4gICAgICBpY29uOlwiaW5mb3JtYXRpb24tY2lyY2xlXCIsXHJcbiAgICAgIHBvc2l0aW9uOlwidG9wXCJcclxuICAgIH0pXHJcbiAgICB0b2FzdC5wcmVzZW50KCk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuXHJcblxyXG5cclxuIl19
1
+
2
+ /**
3
+ * @copyright © 未来飞马 © 未来全栈 www.fmode.cn
4
+ * 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
5
+ * 保留所有权利 All Rights Reserved.
6
+ * /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/aigc/comp-markdown-preview/clipboard.service.mjs
7
+ */
8
+ import{Injectable}from"@angular/core";import{ToastController}from"@ionic/angular";import{Clipboard}from"@capacitor/clipboard";import*as i0 from"@angular/core";import*as i1 from"@ionic/angular";export class ClipboardService{constructor(o){this.toastCtrl=o}async copyToClipboard(o){try{return await Clipboard.write({string:o}),void this.copySuccess()}catch(r){try{if(navigator.clipboard&&window.isSecureContext)return await(navigator?.clipboard?.writeText(o)),void this.copySuccess();throw!1}catch(r){let t=document.createElement("textarea");t.value=o,t.style.position="fixed",t.style.left="-9999px",t.style.top="-9999px",document.body.appendChild(t),t.focus(),t.select();try{let o=document?.execCommand("copy");o?this.copySuccess():console.error("无法复制文本")}catch(o){console.error("无法复制文本: ",o)}document.body.removeChild(t)}}}async copySuccess(){(await this.toastCtrl.create({duration:1e3,message:"复制成功",color:"primary",icon:"information-circle",position:"top"})).present()}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:ClipboardService,deps:[{token:i1.ToastController}],target:i0.ɵɵFactoryTarget.Injectable})}static{this.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:ClipboardService,providedIn:"root"})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:ClipboardService,decorators:[{type:Injectable,args:[{providedIn:"root"}]}],ctorParameters:()=>[{type:i1.ToastController}]});
9
+ var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9haWdjL2NvbXAtbWFya2Rvd24tcHJldmlldy9jbGlwYm9hcmQuc2VydmljZS5tanM=`
10
+
@@ -1,369 +1,10 @@
1
- import hljs from 'highlight.js';
2
- import MarkdownIt from "markdown-it";
3
- import $ from "jquery";
4
- /**
5
- * 自定义插件
6
- */
7
- import { MarkdownMathJax } from './plugins/md-mathjax';
8
- /**
9
- * use插件
10
- */
11
- import abbr from 'markdown-it-abbr';
12
- import footnote from 'markdown-it-footnote';
13
- import deflist from 'markdown-it-deflist';
14
- import mark from 'markdown-it-mark';
15
- import ins from 'markdown-it-ins';
16
- import sub from 'markdown-it-sub';
17
- import sup from 'markdown-it-sup';
18
- // import imsize from 'markdown-it-imsize' // fs path
19
- import ruby from 'markdown-it-ruby';
20
- let md = new MarkdownIt({
21
- html: true, // 在源码中启用 HTML 标签
22
- xhtmlOut: true, // 使用 '/' 来闭合单标签 (比如 <br />)。
23
- // 这个选项只对完全的 CommonMark 模式兼容。
24
- breaks: false, // 转换段落里的 '\n' 到 <br>。
25
- // langPrefix: 'language-', // 给围栏代码块的 CSS 语言前缀。对于额外的高亮代码非常有用。
26
- linkify: false, // 将类似 URL 的文本自动转换为链接。
27
- // 启用一些语言中立的替换 + 引号美化
28
- typographer: false,
29
- // 双 + 单引号替换对,当 typographer 启用时。
30
- // 或者智能引号等,可以是 String 或 Array。
31
- //
32
- // 比方说,你可以支持 '«»„“' 给俄罗斯人使用, '„“‚‘' 给德国人使用。
33
- // 还有 ['«\xA0', '\xA0»', '‹\xA0', '\xA0›'] 给法国人使用(包括 nbsp)。
34
- quotes: '“”‘’',
35
- // 高亮函数,会返回转义的HTML。
36
- // 或 '' 如果源字符串未更改,则应在外部进行转义。
37
- // 如果结果以 <pre ... 开头,内部包装器则会跳过。
38
- // highlight: function (/*str, lang*/) { return ''; }
39
- highlight: function (str, lang) {
40
- if (lang && hljs.getLanguage(lang)) {
41
- try {
42
- let hljsCode = hljs.highlight(str, { language: lang }).value;
43
- return `<pre style="position:relative;padding:10px;" class="hljs lang-${lang}"><code>${hljsCode}</code><small class="hljs-lang"><span class="sr-only">Language:</span>${lang}</small></pre>`;
44
- }
45
- catch (__) { }
46
- }
47
- return ''; // use external default escaping
48
- }
49
- });
50
- md.use(abbr);
51
- md.use(footnote);
52
- md.use(deflist);
53
- md.use(mark);
54
- md.use(ins);
55
- md.use(sub);
56
- md.use(sup);
57
- // md.use(katex);
58
- // md.use(figure, {
59
- // render: (content, displayMode) => {
60
- // // render tex here and return
61
- // },
62
- // }); // 加载@mdit/tex 被mathjax依赖
63
- // const mathjaxInstance = createMathjaxInstance({output:"svg"});
64
- // md.use(mathjax,mathjaxInstance)
65
- // import MathJax from 'mathjax';
66
- // (window as any).MathJax = MathJax;
67
- // (window as any).markdownitMathjax = {
68
- // messageStyle: 'none',
69
- // skipStartupTypeset: true,
70
- // tex2jax: {
71
- // inlineMath: [['$', '$'], ['\\[', '\\]'],['\\(', '\\)']],
72
- // processEscapes: true
73
- // },
74
- // TeX: {
75
- // extensions: ['mhchem.js']
76
- // }
77
- // };
78
- // (window as any).MathJax = {
79
- // messageStyle: 'none',
80
- // skipStartupTypeset: true,
81
- // tex2jax: {
82
- // inlineMath: [['$', '$'], ['\\(', '\\)']],
83
- // processEscapes: true
84
- // },
85
- // TeX: {
86
- // extensions: ['mhchem.js']
87
- // }
88
- // }
89
- // md.use(mathjax3)
90
- // md.use(mathjax())
91
- // md.use(mathjax({
92
- // beforeMath: '<span class="mathjax raw">',
93
- // afterMath: '</span>',
94
- // beforeInlineMath: '<span class="mathjax raw">\\(',
95
- // afterInlineMath: '\\)</span>',
96
- // beforeDisplayMath: '<span class="mathjax raw">\\[',
97
- // afterDisplayMath: '\\]</span>'
98
- // }))
99
- // md.use(imsize)
100
- md.use(ruby);
101
- /**
102
- * PlantUML 插件
103
- */
104
- const mditConfig = {
105
- plantumlServer: 'https://www.plantuml.com/plantuml'
106
- };
107
- import plantumlEncoder from 'plantuml-encoder';
108
- /**
109
- * uml代码转图片地址方法
110
- * @param {*} umlCode
111
- * @returns
112
- * @example
113
- * console.log(makePlantumlURL(`@startuml
114
- start
115
- :创建本地仓库;
116
- :运行git init;
117
- :使用git add .;
118
- :使用git commit -m "xxx";
119
- :使用git remote add origin xxx;
120
- :使用git push -u origin "master";
121
- stop
122
- @enduml`))
123
- */
124
- function makePlantumlURL(umlCode) {
125
- const format = 'svg';
126
- const code = plantumlEncoder.encode(umlCode);
127
- return `${mditConfig.plantumlServer}/${format}/${code}`;
128
- }
129
- // https://github.com/qjebbs/vscode-plantuml/tree/master/src/markdown-it-plantuml
130
- md.renderer.rules['plantuml'] = (tokens, idx, options, env, self) => {
131
- const token = tokens[idx];
132
- if (token.type !== 'plantuml') {
133
- return tokens[idx].content;
134
- }
135
- const url = makePlantumlURL(token.content);
136
- return `
137
- <img src="${url}" />
138
- <pre style="position:relative;padding:10px;" class="hljs lang-plantuml"><code>${token.content}</code><small class="hljs-lang"><span class="sr-only">Language:</span>plantuml</small></pre>
139
- `;
140
- };
141
- // https://github.com/qjebbs/vscode-plantuml/tree/master/src/markdown-it-plantuml
142
- // 默认不支持rules['plantuml'] 需要通过ruler push
143
- md.core.ruler.push('plantuml', (state) => {
144
- const blockTokens = state.tokens;
145
- for (const blockToken of blockTokens) {
146
- if (blockToken.type === 'fence' && blockToken.info === 'plantuml') {
147
- blockToken.type = 'plantuml';
148
- }
149
- }
150
- });
151
- // regex for extra tags
152
- const spaceregex = /\s*/;
153
- const notinhtmltagregex = /(?![^<]*>|[^<>]*<\/)/;
154
- let coloregex = /\[color=([#|(|)|\s|,|\w]*?)\]/;
155
- coloregex = new RegExp(coloregex.source + notinhtmltagregex.source, 'g');
156
- let nameregex = /\[name=(.*?)\]/;
157
- let timeregex = /\[time=([:|,|+|-|(|)|\s|\w]*?)\]/;
158
- const nameandtimeregex = new RegExp(nameregex.source + spaceregex.source + timeregex.source + notinhtmltagregex.source, 'g');
159
- nameregex = new RegExp(nameregex.source + notinhtmltagregex.source, 'g');
160
- timeregex = new RegExp(timeregex.source + notinhtmltagregex.source, 'g');
161
- function replaceExtraTags(html) {
162
- console.log("replaceExtraTags", html);
163
- html = html.replace(coloregex, '<span class="color" data-color="$1"></span>');
164
- html = html.replace(nameandtimeregex, '<small><i class="fa fa-user"></i> $1 <i class="fa fa-clock-o"></i> $2</small>');
165
- html = html.replace(nameregex, '<small><i class="fa fa-user"></i> $1</small>');
166
- html = html.replace(timeregex, '<small><i class="fa fa-clock-o"></i> $1</small>');
167
- console.log("replaceExtraTags", html);
168
- return html;
169
- }
170
- // 生命周期:生成HTML后,动态修正生成内容:dynamic event or object binding here
171
- function finishView(html) {
172
- let mdDivEl = $.parseHTML(`<html><body><div id="topmd">${html}</div></body></html>`)[0];
173
- let mdhtml$ = $(mdDivEl);
174
- /************************************************
175
- * 第一步:需操作DOM,进行页面修正
176
- */
1
+
177
2
  /**
178
- * BlockQuote 引用增强插件
179
- */
180
- // blockquote 修正引用标签
181
- let blockquote = mdhtml$.find('blockquote.raw').removeClass('raw');
182
- blockquote = mdhtml$.find('blockquote');
183
- let blockquoteP = $(blockquote).find('p');
184
- blockquoteP.each((key, value) => {
185
- let htmlStr = $(value).html();
186
- htmlStr = replaceExtraTags(htmlStr);
187
- value.innerHTML = htmlStr;
188
- $(value).html(htmlStr);
189
- blockquoteP[key].innerHTML = htmlStr;
190
- $(blockquoteP[key]).html(htmlStr);
191
- });
192
- // 引用标签颜色渲染 color tag in blockquote will change its left border color
193
- let blockquoteColor = blockquote.find('.color');
194
- blockquoteColor.each((key, value) => {
195
- let dataColor = $(value).attr('data-color');
196
- $(value).closest('blockquote').css('border-left-color', dataColor);
197
- });
198
- let style = `<style>
199
- .markdown-section {
200
- color: black;
201
- text-align: left;
202
- }
203
- .markdown-section pre .hljs-lang{
204
- text-transform: uppercase;
205
- font-weight: 700;
206
- font-size: .75rem;
207
- line-height: 1rem;
208
- padding-top: .25rem;
209
- padding-bottom: .25rem;
210
- padding-left: .5rem;
211
- padding-right: .5rem;
212
- background-color: rgba(0,0,0,.3);
213
- border-bottom-left-radius: .375rem;
214
- top:0;
215
- right:0;
216
- position:absolute;
217
- }
218
-
219
- }
220
- .markdown-section pre .hljs {
221
- position:relative!important;
222
- background: #272822!important;
223
- padding:10px!important;
224
- color: #ddd;
225
- text-shadow: none!important;
226
- }
227
-
228
- .markdown-section blockquote {
229
- margin: 0;
230
- margin-bottom: 0px;
231
- margin-bottom: .85em;
232
- padding: 0 15px;
233
- color: #858585;
234
- border-left: 4px solid #e5e5e5;
235
- border-left-color: rgb(229, 229, 229);
236
- }
237
- .markdown-section img {
238
- max-width:100%;
239
- }
240
- </style>`;
241
- let result = style + (mdhtml$.html() || html);
242
- /************************************************
243
- * 第二步:无需操作DOM,替换文本信息
3
+ * @copyright © 未来飞马 © 未来全栈 www.fmode.cn
4
+ * 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
5
+ * 保留所有权利 All Rights Reserved.
6
+ * /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/aigc/comp-markdown-preview/markdown-parse.mjs
244
7
  */
245
- /**
246
- * uploads 修正附件地址
247
- */
248
- result = result.replaceAll('src="/uploads/', 'src="https://md.fmode.cn/uploads/');
249
- return result;
250
- }
251
- export class MarkdownParse {
252
- constructor() {
253
- }
254
- // 为源码高亮提供简单的 Markdown 语法高亮
255
- highlightMarkdown(markdown) {
256
- try {
257
- const codeBlockRegex = /```(\w+)?\n([\s\S]*?)```/g;
258
- const parts = [];
259
- let lastIndex = 0;
260
- let match;
261
- // 分割内容为 markdown 部分和代码块部分
262
- while ((match = codeBlockRegex.exec(markdown)) !== null) {
263
- // 添加代码块之前的 markdown 内容
264
- if (match.index > lastIndex) {
265
- parts.push({
266
- type: 'markdown',
267
- content: markdown.substring(lastIndex, match.index)
268
- });
269
- }
270
- // 添加代码块
271
- parts.push({
272
- type: 'code',
273
- content: match[2], // 代码内容
274
- language: match[1] // 语言标识
275
- });
276
- lastIndex = match.index + match[0].length;
277
- }
278
- // 添加最后剩余的 markdown 内容
279
- if (lastIndex < markdown.length) {
280
- parts.push({
281
- type: 'markdown',
282
- content: markdown.substring(lastIndex)
283
- });
284
- }
285
- // 如果没有找到代码块,直接处理整个内容为 markdown
286
- if (parts.length === 0) {
287
- return hljs.highlight(markdown, { language: 'markdown' }).value;
288
- }
289
- // 分别处理各部分
290
- return parts.map(part => {
291
- if (part.type === 'code') {
292
- return this.highlightCodeBlock(part.content, part.language);
293
- }
294
- else {
295
- // 处理 markdown 部分
296
- return part.content.trim() ?
297
- hljs.highlight(part.content, { language: 'markdown' }).value :
298
- part.content;
299
- }
300
- }).join('');
301
- }
302
- catch (e) {
303
- console.error('Markdown highlighting error:', e);
304
- return markdown;
305
- }
306
- }
307
- highlightCodeBlock(code, language) {
308
- try {
309
- let highlightedCode;
310
- let detectedLanguage;
311
- if (language && hljs.getLanguage(language)) {
312
- // 使用指定语言进行高亮
313
- highlightedCode = hljs.highlight(code, { language }).value;
314
- detectedLanguage = language;
315
- }
316
- else {
317
- // 自动检测语言
318
- const autoHighlighted = hljs.highlightAuto(code);
319
- highlightedCode = autoHighlighted.value;
320
- detectedLanguage = autoHighlighted.language || 'plaintext';
321
- }
322
- return `<pre><code class="hljs language-${detectedLanguage}">${highlightedCode}</code></pre>`;
323
- }
324
- catch (e) {
325
- console.error('Code block highlighting error:', e);
326
- return `<pre><code class="hljs">${this.escapeHtml(code)}</code></pre>`;
327
- }
328
- }
329
- escapeHtml(text) {
330
- return text
331
- .replace(/&/g, '&amp;')
332
- .replace(/</g, '&lt;')
333
- .replace(/>/g, '&gt;')
334
- .replace(/"/g, '&quot;')
335
- .replace(/'/g, '&#39;');
336
- }
337
- parseToHTML(markdown) {
338
- if (!markdown?.length)
339
- return "";
340
- if (!markdown?.replace)
341
- return "";
342
- // this.info("markdown",markdown)
343
- // console.log(JSON.stringify({md:markdown}))
344
- // 由于md=>html会转义原文本中的 \( 为 (,\[ 为 [,因此需要先mathjax转换再转markdown
345
- // 由于转换会将``` ```代码端中$ $组合形式的数据格式转换,因此需要先排除md代码段内容
346
- let mdMathJax = new MarkdownMathJax();
347
- markdown = markdown.split("```").map((item, index) => {
348
- // console.log(item,index);
349
- if (index % 2 == 0) { // 根据代码段分割 偶数项 是非代码段
350
- item = mdMathJax.text_to_mathjax(item, {
351
- output: "svg"
352
- });
353
- return item;
354
- }
355
- else {
356
- return item;
357
- }
358
- }).join("```");
359
- let htmlResult = md.render(markdown);
360
- // this.info("html",htmlResult)
361
- htmlResult = finishView(htmlResult);
362
- // this.info("html plus",htmlResult)
363
- return htmlResult;
364
- }
365
- info(...args) {
366
- // console.log(...args)
367
- }
368
- }
369
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24tcGFyc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL2FpZ2MvY29tcC1tYXJrZG93bi1wcmV2aWV3L21hcmtkb3duLXBhcnNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLGNBQWMsQ0FBQztBQUNoQyxPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUM7QUFDckMsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBRXZCOztHQUVHO0FBQ0gsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXZEOztHQUVHO0FBQ0QsT0FBTyxJQUFJLE1BQU0sa0JBQWtCLENBQUE7QUFDbkMsT0FBTyxRQUFRLE1BQU0sc0JBQXNCLENBQUE7QUFDM0MsT0FBTyxPQUFPLE1BQU0scUJBQXFCLENBQUE7QUFDekMsT0FBTyxJQUFJLE1BQU0sa0JBQWtCLENBQUE7QUFDbkMsT0FBTyxHQUFHLE1BQU0saUJBQWlCLENBQUE7QUFDakMsT0FBTyxHQUFHLE1BQU0saUJBQWlCLENBQUE7QUFDakMsT0FBTyxHQUFHLE1BQU0saUJBQWlCLENBQUE7QUFDbkMsc0RBQXNEO0FBQ3BELE9BQU8sSUFBSSxNQUFNLGtCQUFrQixDQUFBO0FBRXJDLElBQUksRUFBRSxHQUFHLElBQUksVUFBVSxDQUFDO0lBQ3BCLElBQUksRUFBVSxJQUFJLEVBQVMsaUJBQWlCO0lBQzVDLFFBQVEsRUFBTSxJQUFJLEVBQVMsNkJBQTZCO0lBQzVCLDZCQUE2QjtJQUN6RCxNQUFNLEVBQVEsS0FBSyxFQUFTLHNCQUFzQjtJQUNsRCxpRUFBaUU7SUFDakUsT0FBTyxFQUFPLEtBQUssRUFBUyxzQkFBc0I7SUFFbEQscUJBQXFCO0lBQ3JCLFdBQVcsRUFBRyxLQUFLO0lBRW5CLGdDQUFnQztJQUNoQyw4QkFBOEI7SUFDOUIsRUFBRTtJQUNGLDRDQUE0QztJQUM1QywyREFBMkQ7SUFDM0QsTUFBTSxFQUFFLE1BQU07SUFFZCxtQkFBbUI7SUFDbkIsNEJBQTRCO0lBQzVCLCtCQUErQjtJQUMvQixxREFBcUQ7SUFDckQsU0FBUyxFQUFFLFVBQVUsR0FBTyxFQUFFLElBQVE7UUFDbEMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQztnQkFDSCxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQTtnQkFDNUQsT0FBTyxpRUFBaUUsSUFBSSxXQUFXLFFBQVEseUVBQXlFLElBQUksZ0JBQWdCLENBQUM7WUFDL0wsQ0FBQztZQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQSxDQUFDO1FBQ2pCLENBQUM7UUFFRCxPQUFPLEVBQUUsQ0FBQyxDQUFDLGdDQUFnQztJQUM3QyxDQUFDO0NBQ0osQ0FBQyxDQUFDO0FBSUEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUNaLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUE7QUFDaEIsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtBQUNmLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDWixFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQ1gsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNaLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFYixrQkFBa0I7QUFFbEIsb0JBQW9CO0FBQ3BCLHdDQUF3QztBQUN4QyxvQ0FBb0M7QUFDcEMsT0FBTztBQUNQLGdDQUFnQztBQUNoQyxrRUFBa0U7QUFDbEUsbUNBQW1DO0FBQ25DLGlDQUFpQztBQUNqQyxxQ0FBcUM7QUFDckMsd0NBQXdDO0FBQ3hDLDBCQUEwQjtBQUMxQiw4QkFBOEI7QUFDOUIsZUFBZTtBQUNmLCtEQUErRDtBQUMvRCwyQkFBMkI7QUFDM0IsT0FBTztBQUNQLFdBQVc7QUFDWCxnQ0FBZ0M7QUFDaEMsTUFBTTtBQUNOLEtBQUs7QUFFTCw4QkFBOEI7QUFDOUIsMEJBQTBCO0FBQzFCLDhCQUE4QjtBQUM5QixlQUFlO0FBQ2YsZ0RBQWdEO0FBQ2hELDJCQUEyQjtBQUMzQixPQUFPO0FBQ1AsV0FBVztBQUNYLGdDQUFnQztBQUM5QixJQUFJO0FBQ04sSUFBSTtBQUVKLG1CQUFtQjtBQUNuQixvQkFBb0I7QUFDcEIsbUJBQW1CO0FBQ25CLDhDQUE4QztBQUM5QywwQkFBMEI7QUFDMUIsdURBQXVEO0FBQ3ZELG1DQUFtQztBQUNuQyx3REFBd0Q7QUFDeEQsbUNBQW1DO0FBQ25DLE1BQU07QUFFTixrQkFBa0I7QUFDakIsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUVmOztHQUVHO0FBQ0gsTUFBTSxVQUFVLEdBQUc7SUFDakIsY0FBYyxFQUFDLG1DQUFtQztDQUNuRCxDQUFBO0FBRUQsT0FBTyxlQUFlLE1BQU0sa0JBQWtCLENBQUE7QUFDN0M7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBSUQsU0FBUyxlQUFlLENBQUMsT0FBVztJQUNqQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUE7SUFDcEIsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUM1QyxPQUFPLEdBQUcsVUFBVSxDQUFDLGNBQWMsSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFLENBQUE7QUFDM0QsQ0FBQztBQUdILGlGQUFpRjtBQUNqRixFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE1BQVUsRUFBRSxHQUFPLEVBQUUsT0FBVyxFQUFFLEdBQU8sRUFBRSxJQUFRLEVBQUcsRUFBRTtJQUN2RixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDekIsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQzVCLE9BQU8sTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQTtJQUM5QixDQUFDO0lBQ0QsTUFBTSxHQUFHLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUMxQyxPQUFPO2dCQUNLLEdBQUc7b0ZBQ2lFLEtBQUssQ0FBQyxPQUFPO0tBQzVGLENBQUE7QUFDTCxDQUFDLENBQUE7QUFDRCxpRkFBaUY7QUFDakYsd0NBQXdDO0FBQ3hDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxLQUFTLEVBQUUsRUFBRTtJQUN6QyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFBO0lBQ2hDLEtBQUssTUFBTSxVQUFVLElBQUksV0FBVyxFQUFFLENBQUM7UUFDckMsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ2xFLFVBQVUsQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFBO1FBQzlCLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyxDQUFDLENBQUE7QUFFRix1QkFBdUI7QUFDdkIsTUFBTSxVQUFVLEdBQUcsS0FBSyxDQUFBO0FBQ3hCLE1BQU0saUJBQWlCLEdBQUcsc0JBQXNCLENBQUE7QUFDaEQsSUFBSSxTQUFTLEdBQUcsK0JBQStCLENBQUE7QUFDakQsU0FBUyxHQUFHLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0FBQ3hFLElBQUksU0FBUyxHQUFHLGdCQUFnQixDQUFBO0FBQ2hDLElBQUksU0FBUyxHQUFHLGtDQUFrQyxDQUFBO0FBQ2xELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLEdBQUcsaUJBQWlCLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFBO0FBQzVILFNBQVMsR0FBRyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQTtBQUN4RSxTQUFTLEdBQUcsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUE7QUFFeEUsU0FBUyxnQkFBZ0IsQ0FBRSxJQUFRO0lBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUMsSUFBSSxDQUFDLENBQUE7SUFDcEMsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLDZDQUE2QyxDQUFDLENBQUE7SUFDN0UsSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsK0VBQStFLENBQUMsQ0FBQTtJQUN0SCxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsOENBQThDLENBQUMsQ0FBQTtJQUM5RSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsaURBQWlELENBQUMsQ0FBQTtJQUNqRixPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixFQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3BDLE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQztBQUdELDZEQUE2RDtBQUM3RCxTQUFTLFVBQVUsQ0FBRSxJQUFRO0lBRTNCLElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsK0JBQStCLElBQUksc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUN2RixJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUE7SUFFdkI7O01BRUU7SUFDSDs7TUFFRTtJQUNGLG9CQUFvQjtJQUNwQixJQUFJLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQ2xFLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBRXZDLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDekMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQU8sRUFBRSxLQUFTLEVBQUUsRUFBRTtRQUN0QyxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7UUFDN0IsT0FBTyxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ25DLEtBQUssQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFBO1FBQ3pCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDdEIsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUM7UUFDckMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNuQyxDQUFDLENBQUMsQ0FBQTtJQUVGLHFFQUFxRTtJQUNyRSxJQUFJLGVBQWUsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQy9DLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFPLEVBQUUsS0FBUyxFQUFFLEVBQUU7UUFDMUMsSUFBSSxTQUFTLEdBQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQTtRQUMvQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUNwRSxDQUFDLENBQUMsQ0FBQTtJQUdGLElBQUksS0FBSyxHQUFHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7V0EwQ0gsQ0FBQTtJQUNULElBQUksTUFBTSxHQUFHLEtBQUssR0FBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsQ0FBQTtJQUU5Qzs7T0FFRztJQUNIOztNQUVFO0lBQ0YsTUFBTSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUMsbUNBQW1DLENBQUMsQ0FBQTtJQUNoRixPQUFPLE1BQU0sQ0FBQTtBQUNmLENBQUM7QUFFRCxNQUFNLE9BQU8sYUFBYTtJQUN0QjtJQUNBLENBQUM7SUFFRCwyQkFBMkI7SUFDcEIsaUJBQWlCLENBQUMsUUFBZ0I7UUFDdkMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxjQUFjLEdBQUcsMkJBQTJCLENBQUM7WUFDbkQsTUFBTSxLQUFLLEdBQTJFLEVBQUUsQ0FBQztZQUN6RixJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7WUFDbEIsSUFBSSxLQUFLLENBQUM7WUFFViwwQkFBMEI7WUFDMUIsT0FBTyxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQ3hELHVCQUF1QjtnQkFDdkIsSUFBSSxLQUFLLENBQUMsS0FBSyxHQUFHLFNBQVMsRUFBRSxDQUFDO29CQUM1QixLQUFLLENBQUMsSUFBSSxDQUFDO3dCQUNULElBQUksRUFBRSxVQUFVO3dCQUNoQixPQUFPLEVBQUUsUUFBUSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQztxQkFDcEQsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBRUQsUUFBUTtnQkFDUixLQUFLLENBQUMsSUFBSSxDQUFDO29CQUNULElBQUksRUFBRSxNQUFNO29CQUNaLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTztvQkFDMUIsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBRSxPQUFPO2lCQUM1QixDQUFDLENBQUM7Z0JBRUgsU0FBUyxHQUFHLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUM1QyxDQUFDO1lBRUQsc0JBQXNCO1lBQ3RCLElBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDaEMsS0FBSyxDQUFDLElBQUksQ0FBQztvQkFDVCxJQUFJLEVBQUUsVUFBVTtvQkFDaEIsT0FBTyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDO2lCQUN2QyxDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsK0JBQStCO1lBQy9CLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDdkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUNsRSxDQUFDO1lBRUQsVUFBVTtZQUNWLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdEIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLE1BQU0sRUFBRSxDQUFDO29CQUN6QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDOUQsQ0FBQztxQkFBTSxDQUFDO29CQUNOLGlCQUFpQjtvQkFDakIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7d0JBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO3dCQUM5RCxJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUNqQixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRWQsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLDhCQUE4QixFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2pELE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsSUFBWSxFQUFFLFFBQWlCO1FBQ3hELElBQUksQ0FBQztZQUNILElBQUksZUFBdUIsQ0FBQztZQUM1QixJQUFJLGdCQUF3QixDQUFDO1lBRTdCLElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDM0MsYUFBYTtnQkFDYixlQUFlLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQztnQkFDM0QsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDO1lBQzlCLENBQUM7aUJBQU0sQ0FBQztnQkFDTixTQUFTO2dCQUNULE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2pELGVBQWUsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDO2dCQUN4QyxnQkFBZ0IsR0FBRyxlQUFlLENBQUMsUUFBUSxJQUFJLFdBQVcsQ0FBQztZQUM3RCxDQUFDO1lBRUQsT0FBTyxtQ0FBbUMsZ0JBQWdCLEtBQUssZUFBZSxlQUFlLENBQUM7UUFDaEcsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxPQUFPLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ25ELE9BQU8sMkJBQTJCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUN6RSxDQUFDO0lBQ0gsQ0FBQztJQUNPLFVBQVUsQ0FBQyxJQUFZO1FBQzdCLE9BQU8sSUFBSTthQUNSLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDO2FBQ3RCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO2FBQ3JCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO2FBQ3JCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDO2FBQ3ZCLE9BQU8sQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFZO1FBQ3RCLElBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTTtZQUFFLE9BQU8sRUFBRSxDQUFBO1FBQy9CLElBQUcsQ0FBQyxRQUFRLEVBQUUsT0FBTztZQUFFLE9BQU8sRUFBRSxDQUFBO1FBQ2hDLGlDQUFpQztRQUNqQyw2Q0FBNkM7UUFFN0MsNERBQTREO1FBQzVELGlEQUFpRDtRQUNqRCxJQUFJLFNBQVMsR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFBO1FBQ3JDLFFBQVEsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsRUFBRTtZQUNqRCwyQkFBMkI7WUFDM0IsSUFBRyxLQUFLLEdBQUMsQ0FBQyxJQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsb0JBQW9CO2dCQUNsQyxJQUFJLEdBQUcsU0FBUyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUM7b0JBQ3BDLE1BQU0sRUFBQyxLQUFLO2lCQUNiLENBQUMsQ0FBQztnQkFDSCxPQUFPLElBQUksQ0FBQTtZQUNiLENBQUM7aUJBQUksQ0FBQztnQkFDSixPQUFPLElBQUksQ0FBQTtZQUNiLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFFZCxJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXJDLCtCQUErQjtRQUMvQixVQUFVLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3BDLG9DQUFvQztRQUNwQyxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBQ0QsSUFBSSxDQUFDLEdBQUcsSUFBUTtRQUNkLHVCQUF1QjtJQUN6QixDQUFDO0NBR0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaGxqcyBmcm9tICdoaWdobGlnaHQuanMnO1xyXG5pbXBvcnQgTWFya2Rvd25JdCBmcm9tIFwibWFya2Rvd24taXRcIjtcclxuaW1wb3J0ICQgZnJvbSBcImpxdWVyeVwiO1xyXG5cclxuLyoqXHJcbiAqIOiHquWumuS5ieaPkuS7tlxyXG4gKi9cclxuaW1wb3J0IHsgTWFya2Rvd25NYXRoSmF4IH0gZnJvbSAnLi9wbHVnaW5zL21kLW1hdGhqYXgnO1xyXG5cclxuLyoqXHJcbiAqIHVzZeaPkuS7tlxyXG4gKi9cclxuICBpbXBvcnQgYWJiciBmcm9tICdtYXJrZG93bi1pdC1hYmJyJ1xyXG4gIGltcG9ydCBmb290bm90ZSBmcm9tICdtYXJrZG93bi1pdC1mb290bm90ZSdcclxuICBpbXBvcnQgZGVmbGlzdCBmcm9tICdtYXJrZG93bi1pdC1kZWZsaXN0J1xyXG4gIGltcG9ydCBtYXJrIGZyb20gJ21hcmtkb3duLWl0LW1hcmsnXHJcbiAgaW1wb3J0IGlucyBmcm9tICdtYXJrZG93bi1pdC1pbnMnXHJcbiAgaW1wb3J0IHN1YiBmcm9tICdtYXJrZG93bi1pdC1zdWInXHJcbiAgaW1wb3J0IHN1cCBmcm9tICdtYXJrZG93bi1pdC1zdXAnXHJcbi8vICBpbXBvcnQgaW1zaXplIGZyb20gJ21hcmtkb3duLWl0LWltc2l6ZScgLy8gZnMgcGF0aFxyXG4gIGltcG9ydCBydWJ5IGZyb20gJ21hcmtkb3duLWl0LXJ1YnknXHJcblxyXG5sZXQgbWQgPSBuZXcgTWFya2Rvd25JdCh7XHJcbiAgICBodG1sOiAgICAgICAgIHRydWUsICAgICAgICAvLyDlnKjmupDnoIHkuK3lkK/nlKggSFRNTCDmoIfnrb5cclxuICAgIHhodG1sT3V0OiAgICAgdHJ1ZSwgICAgICAgIC8vIOS9v+eUqCAnLycg5p2l6Zet5ZCI5Y2V5qCH562+IO+8iOavlOWmgiA8YnIgLz7vvInjgIJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyDov5nkuKrpgInpobnlj6rlr7nlrozlhajnmoQgQ29tbW9uTWFyayDmqKHlvI/lhbzlrrnjgIJcclxuICAgIGJyZWFrczogICAgICAgZmFsc2UsICAgICAgICAvLyDovazmjaLmrrXokL3ph4znmoQgJ1xcbicg5YiwIDxicj7jgIJcclxuICAgIC8vIGxhbmdQcmVmaXg6ICAgJ2xhbmd1YWdlLScsICAvLyDnu5nlm7TmoI/ku6PnoIHlnZfnmoQgQ1NTIOivreiogOWJjee8gOOAguWvueS6jumineWklueahOmrmOS6ruS7o+eggemdnuW4uOacieeUqOOAglxyXG4gICAgbGlua2lmeTogICAgICBmYWxzZSwgICAgICAgIC8vIOWwhuexu+S8vCBVUkwg55qE5paH5pys6Ieq5Yqo6L2s5o2i5Li66ZO+5o6l44CCXHJcbiAgXHJcbiAgICAvLyDlkK/nlKjkuIDkupvor63oqIDkuK3nq4vnmoTmm7/mjaIgKyDlvJXlj7fnvo7ljJZcclxuICAgIHR5cG9ncmFwaGVyOiAgZmFsc2UsXHJcbiAgXHJcbiAgICAvLyDlj4wgKyDljZXlvJXlj7fmm7/mjaLlr7nvvIzlvZMgdHlwb2dyYXBoZXIg5ZCv55So5pe244CCXHJcbiAgICAvLyDmiJbogIXmmbrog73lvJXlj7fnrYnvvIzlj6/ku6XmmK8gU3RyaW5nIOaIliBBcnJheeOAglxyXG4gICAgLy9cclxuICAgIC8vIOavlOaWueivtO+8jOS9oOWPr+S7peaUr+aMgSAnwqvCu+KAnuKAnCcg57uZ5L+E572X5pav5Lq65L2/55So77yMICfigJ7igJzigJrigJgnICDnu5nlvrflm73kurrkvb/nlKjjgIJcclxuICAgIC8vIOi/mOaciSBbJ8KrXFx4QTAnLCAnXFx4QTDCuycsICfigLlcXHhBMCcsICdcXHhBMOKAuiddIOe7meazleWbveS6uuS9v+eUqO+8iOWMheaLrCBuYnNw77yJ44CCXHJcbiAgICBxdW90ZXM6ICfigJzigJ3igJjigJknLFxyXG4gIFxyXG4gICAgLy8g6auY5Lqu5Ye95pWw77yM5Lya6L+U5Zue6L2s5LmJ55qESFRNTOOAglxyXG4gICAgLy8g5oiWICcnIOWmguaenOa6kOWtl+espuS4suacquabtOaUue+8jOWImeW6lOWcqOWklumDqOi/m+ihjOi9rOS5ieOAglxyXG4gICAgLy8g5aaC5p6c57uT5p6c5LulIDxwcmUgLi4uIOW8gOWktO+8jOWGhemDqOWMheijheWZqOWImeS8mui3s+i/h+OAglxyXG4gICAgLy8gaGlnaGxpZ2h0OiBmdW5jdGlvbiAoLypzdHIsIGxhbmcqLykgeyByZXR1cm4gJyc7IH1cclxuICAgIGhpZ2hsaWdodDogZnVuY3Rpb24gKHN0cjphbnksIGxhbmc6YW55KSB7XHJcbiAgICAgICAgaWYgKGxhbmcgJiYgaGxqcy5nZXRMYW5ndWFnZShsYW5nKSkge1xyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgbGV0IGhsanNDb2RlID0gaGxqcy5oaWdobGlnaHQoc3RyLCB7IGxhbmd1YWdlOiBsYW5nIH0pLnZhbHVlXHJcbiAgICAgICAgICAgIHJldHVybiBgPHByZSBzdHlsZT1cInBvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmc6MTBweDtcIiBjbGFzcz1cImhsanMgbGFuZy0ke2xhbmd9XCI+PGNvZGU+JHtobGpzQ29kZX08L2NvZGU+PHNtYWxsIGNsYXNzPVwiaGxqcy1sYW5nXCI+PHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+TGFuZ3VhZ2U6PC9zcGFuPiR7bGFuZ308L3NtYWxsPjwvcHJlPmA7XHJcbiAgICAgICAgICB9IGNhdGNoIChfXykge31cclxuICAgICAgICB9XHJcbiAgICBcclxuICAgICAgICByZXR1cm4gJyc7IC8vIHVzZSBleHRlcm5hbCBkZWZhdWx0IGVzY2FwaW5nXHJcbiAgICAgIH1cclxuICB9KTtcclxuICBcclxuIFxyXG4gIFxyXG4gICAgIG1kLnVzZShhYmJyKVxyXG4gICAgIG1kLnVzZShmb290bm90ZSlcclxuICAgICBtZC51c2UoZGVmbGlzdClcclxuICAgICBtZC51c2UobWFyaylcclxuICAgICBtZC51c2UoaW5zKVxyXG4gICAgIG1kLnVzZShzdWIpO1xyXG4gICAgIG1kLnVzZShzdXApO1xyXG5cclxuICAgIC8vICBtZC51c2Uoa2F0ZXgpO1xyXG5cclxuICAgIC8vICBtZC51c2UoZmlndXJlLCB7XHJcbiAgICAvLyAgIHJlbmRlcjogKGNvbnRlbnQsIGRpc3BsYXlNb2RlKSA9PiB7XHJcbiAgICAvLyAgICAgLy8gcmVuZGVyIHRleCBoZXJlIGFuZCByZXR1cm5cclxuICAgIC8vICAgfSxcclxuICAgIC8vIH0pOyAvLyDliqDovb1AbWRpdC90ZXgg6KKrbWF0aGpheOS+nei1llxyXG4gICAgLy8gIGNvbnN0IG1hdGhqYXhJbnN0YW5jZSA9IGNyZWF0ZU1hdGhqYXhJbnN0YW5jZSh7b3V0cHV0Olwic3ZnXCJ9KTtcclxuICAgIC8vICBtZC51c2UobWF0aGpheCxtYXRoamF4SW5zdGFuY2UpXHJcbiAgICAvLyBpbXBvcnQgTWF0aEpheCBmcm9tICdtYXRoamF4JztcclxuICAgIC8vICh3aW5kb3cgYXMgYW55KS5NYXRoSmF4ID0gTWF0aEpheDtcclxuICAgIC8vICh3aW5kb3cgYXMgYW55KS5tYXJrZG93bml0TWF0aGpheCA9IHtcclxuICAgIC8vICAgbWVzc2FnZVN0eWxlOiAnbm9uZScsXHJcbiAgICAvLyAgIHNraXBTdGFydHVwVHlwZXNldDogdHJ1ZSxcclxuICAgIC8vICAgdGV4MmpheDoge1xyXG4gICAgLy8gICAgIGlubGluZU1hdGg6IFtbJyQnLCAnJCddLCBbJ1xcXFxbJywgJ1xcXFxdJ10sWydcXFxcKCcsICdcXFxcKSddXSxcclxuICAgIC8vICAgICBwcm9jZXNzRXNjYXBlczogdHJ1ZVxyXG4gICAgLy8gICB9LFxyXG4gICAgLy8gICBUZVg6IHtcclxuICAgIC8vICAgICBleHRlbnNpb25zOiBbJ21oY2hlbS5qcyddXHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH07XHJcblxyXG4gICAgLy8gKHdpbmRvdyBhcyBhbnkpLk1hdGhKYXggPSB7XHJcbiAgICAvLyAgIG1lc3NhZ2VTdHlsZTogJ25vbmUnLFxyXG4gICAgLy8gICBza2lwU3RhcnR1cFR5cGVzZXQ6IHRydWUsXHJcbiAgICAvLyAgIHRleDJqYXg6IHtcclxuICAgIC8vICAgICBpbmxpbmVNYXRoOiBbWyckJywgJyQnXSwgWydcXFxcKCcsICdcXFxcKSddXSxcclxuICAgIC8vICAgICBwcm9jZXNzRXNjYXBlczogdHJ1ZVxyXG4gICAgLy8gICB9LFxyXG4gICAgLy8gICBUZVg6IHtcclxuICAgIC8vICAgICBleHRlbnNpb25zOiBbJ21oY2hlbS5qcyddXHJcbiAgICAgIC8vIH1cclxuICAgIC8vIH1cclxuXHJcbiAgICAvLyBtZC51c2UobWF0aGpheDMpXHJcbiAgICAvLyBtZC51c2UobWF0aGpheCgpKVxyXG4gICAgLy8gbWQudXNlKG1hdGhqYXgoe1xyXG4gICAgLy8gICBiZWZvcmVNYXRoOiAnPHNwYW4gY2xhc3M9XCJtYXRoamF4IHJhd1wiPicsXHJcbiAgICAvLyAgIGFmdGVyTWF0aDogJzwvc3Bhbj4nLFxyXG4gICAgLy8gICBiZWZvcmVJbmxpbmVNYXRoOiAnPHNwYW4gY2xhc3M9XCJtYXRoamF4IHJhd1wiPlxcXFwoJyxcclxuICAgIC8vICAgYWZ0ZXJJbmxpbmVNYXRoOiAnXFxcXCk8L3NwYW4+JyxcclxuICAgIC8vICAgYmVmb3JlRGlzcGxheU1hdGg6ICc8c3BhbiBjbGFzcz1cIm1hdGhqYXggcmF3XCI+XFxcXFsnLFxyXG4gICAgLy8gICBhZnRlckRpc3BsYXlNYXRoOiAnXFxcXF08L3NwYW4+J1xyXG4gICAgLy8gfSkpXHJcblxyXG4gICAgLy8gIG1kLnVzZShpbXNpemUpXHJcbiAgICAgbWQudXNlKHJ1YnkpXHJcbiAgXHJcbiAgLyoqXHJcbiAgICogUGxhbnRVTUwg5o+S5Lu2XHJcbiAgICovXHJcbiAgY29uc3QgbWRpdENvbmZpZyA9IHtcclxuICAgIHBsYW50dW1sU2VydmVyOidodHRwczovL3d3dy5wbGFudHVtbC5jb20vcGxhbnR1bWwnXHJcbiAgfVxyXG4gIFxyXG4gIGltcG9ydCBwbGFudHVtbEVuY29kZXIgZnJvbSAncGxhbnR1bWwtZW5jb2RlcidcclxuICAgLyoqXHJcbiAgICAgKiB1bWzku6PnoIHovazlm77niYflnLDlnYDmlrnms5VcclxuICAgICAqIEBwYXJhbSB7Kn0gdW1sQ29kZSBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICogQGV4YW1wbGVcclxuICAgICAqIGNvbnNvbGUubG9nKG1ha2VQbGFudHVtbFVSTChgQHN0YXJ0dW1sXHJcbiAgICAgICAgc3RhcnRcclxuICAgICAgICA65Yib5bu65pys5Zyw5LuT5bqTO1xyXG4gICAgICAgIDrov5DooYxnaXQgaW5pdDtcclxuICAgICAgICA65L2/55SoZ2l0IGFkZCAuO1xyXG4gICAgICAgIDrkvb/nlKhnaXQgY29tbWl0IC1tIFwieHh4XCI7XHJcbiAgICAgICAgOuS9v+eUqGdpdCByZW1vdGUgYWRkIG9yaWdpbiB4eHg7XHJcbiAgICAgICAgOuS9v+eUqGdpdCBwdXNoIC11IG9yaWdpbiBcIm1hc3RlclwiO1xyXG4gICAgICAgIHN0b3BcclxuICAgICAgICBAZW5kdW1sYCkpXHJcbiAgICAqL1xyXG5cclxuXHJcblxyXG4gICAgIGZ1bmN0aW9uIG1ha2VQbGFudHVtbFVSTCh1bWxDb2RlOmFueSl7XHJcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gJ3N2ZydcclxuICAgICAgICBjb25zdCBjb2RlID0gcGxhbnR1bWxFbmNvZGVyLmVuY29kZSh1bWxDb2RlKVxyXG4gICAgICAgIHJldHVybiBgJHttZGl0Q29uZmlnLnBsYW50dW1sU2VydmVyfS8ke2Zvcm1hdH0vJHtjb2RlfWBcclxuICAgIH1cclxuICBcclxuXHJcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3FqZWJicy92c2NvZGUtcGxhbnR1bWwvdHJlZS9tYXN0ZXIvc3JjL21hcmtkb3duLWl0LXBsYW50dW1sXHJcbiAgbWQucmVuZGVyZXIucnVsZXNbJ3BsYW50dW1sJ10gPSAodG9rZW5zOmFueSwgaWR4OmFueSwgb3B0aW9uczphbnksIGVudjphbnksIHNlbGY6YW55KSAgPT4ge1xyXG4gICAgY29uc3QgdG9rZW4gPSB0b2tlbnNbaWR4XVxyXG4gICAgaWYgKHRva2VuLnR5cGUgIT09ICdwbGFudHVtbCcpIHtcclxuICAgICAgICByZXR1cm4gdG9rZW5zW2lkeF0uY29udGVudFxyXG4gICAgfVxyXG4gICAgY29uc3QgdXJsID0gbWFrZVBsYW50dW1sVVJMKHRva2VuLmNvbnRlbnQpXHJcbiAgICByZXR1cm4gYFxyXG4gICAgPGltZyBzcmM9XCIke3VybH1cIiAvPlxyXG4gICAgPHByZSBzdHlsZT1cInBvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmc6MTBweDtcIiBjbGFzcz1cImhsanMgbGFuZy1wbGFudHVtbFwiPjxjb2RlPiR7dG9rZW4uY29udGVudH08L2NvZGU+PHNtYWxsIGNsYXNzPVwiaGxqcy1sYW5nXCI+PHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+TGFuZ3VhZ2U6PC9zcGFuPnBsYW50dW1sPC9zbWFsbD48L3ByZT5cclxuICAgIGBcclxufVxyXG4vLyBodHRwczovL2dpdGh1Yi5jb20vcWplYmJzL3ZzY29kZS1wbGFudHVtbC90cmVlL21hc3Rlci9zcmMvbWFya2Rvd24taXQtcGxhbnR1bWxcclxuLy8g6buY6K6k5LiN5pSv5oyBcnVsZXNbJ3BsYW50dW1sJ10g6ZyA6KaB6YCa6L+HcnVsZXIgcHVzaFxyXG5tZC5jb3JlLnJ1bGVyLnB1c2goJ3BsYW50dW1sJywgKHN0YXRlOmFueSkgPT4ge1xyXG4gICAgY29uc3QgYmxvY2tUb2tlbnMgPSBzdGF0ZS50b2tlbnNcclxuICAgIGZvciAoY29uc3QgYmxvY2tUb2tlbiBvZiBibG9ja1Rva2Vucykge1xyXG4gICAgICBpZiAoYmxvY2tUb2tlbi50eXBlID09PSAnZmVuY2UnICYmIGJsb2NrVG9rZW4uaW5mbyA9PT0gJ3BsYW50dW1sJykge1xyXG4gICAgICAgIGJsb2NrVG9rZW4udHlwZSA9ICdwbGFudHVtbCdcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0pXHJcblxyXG4gIC8vIHJlZ2V4IGZvciBleHRyYSB0YWdzXHJcbiAgY29uc3Qgc3BhY2VyZWdleCA9IC9cXHMqL1xyXG4gIGNvbnN0IG5vdGluaHRtbHRhZ3JlZ2V4ID0gLyg/IVtePF0qPnxbXjw+XSo8XFwvKS9cclxuICBsZXQgY29sb3JlZ2V4ID0gL1xcW2NvbG9yPShbI3wofCl8XFxzfCx8XFx3XSo/KVxcXS9cclxuY29sb3JlZ2V4ID0gbmV3IFJlZ0V4cChjb2xvcmVnZXguc291cmNlICsgbm90aW5odG1sdGFncmVnZXguc291cmNlLCAnZycpXHJcbmxldCBuYW1lcmVnZXggPSAvXFxbbmFtZT0oLio/KVxcXS9cclxubGV0IHRpbWVyZWdleCA9IC9cXFt0aW1lPShbOnwsfCt8LXwofCl8XFxzfFxcd10qPylcXF0vXHJcbmNvbnN0IG5hbWVhbmR0aW1lcmVnZXggPSBuZXcgUmVnRXhwKG5hbWVyZWdleC5zb3VyY2UgKyBzcGFjZXJlZ2V4LnNvdXJjZSArIHRpbWVyZWdleC5zb3VyY2UgKyBub3Rpbmh0bWx0YWdyZWdleC5zb3VyY2UsICdnJylcclxubmFtZXJlZ2V4ID0gbmV3IFJlZ0V4cChuYW1lcmVnZXguc291cmNlICsgbm90aW5odG1sdGFncmVnZXguc291cmNlLCAnZycpXHJcbnRpbWVyZWdleCA9IG5ldyBSZWdFeHAodGltZXJlZ2V4LnNvdXJjZSArIG5vdGluaHRtbHRhZ3JlZ2V4LnNvdXJjZSwgJ2cnKVxyXG5cclxuZnVuY3Rpb24gcmVwbGFjZUV4dHJhVGFncyAoaHRtbDphbnkpIHsgXHJcbiAgY29uc29sZS5sb2coXCJyZXBsYWNlRXh0cmFUYWdzXCIsaHRtbClcclxuICBodG1sID0gaHRtbC5yZXBsYWNlKGNvbG9yZWdleCwgJzxzcGFuIGNsYXNzPVwiY29sb3JcIiBkYXRhLWNvbG9yPVwiJDFcIj48L3NwYW4+JylcclxuICBodG1sID0gaHRtbC5yZXBsYWNlKG5hbWVhbmR0aW1lcmVnZXgsICc8c21hbGw+PGkgY2xhc3M9XCJmYSBmYS11c2VyXCI+PC9pPiAkMSA8aSBjbGFzcz1cImZhIGZhLWNsb2NrLW9cIj48L2k+ICQyPC9zbWFsbD4nKVxyXG4gIGh0bWwgPSBodG1sLnJlcGxhY2UobmFtZXJlZ2V4LCAnPHNtYWxsPjxpIGNsYXNzPVwiZmEgZmEtdXNlclwiPjwvaT4gJDE8L3NtYWxsPicpXHJcbiAgaHRtbCA9IGh0bWwucmVwbGFjZSh0aW1lcmVnZXgsICc8c21hbGw+PGkgY2xhc3M9XCJmYSBmYS1jbG9jay1vXCI+PC9pPiAkMTwvc21hbGw+JylcclxuICBjb25zb2xlLmxvZyhcInJlcGxhY2VFeHRyYVRhZ3NcIixodG1sKVxyXG4gIHJldHVybiBodG1sXHJcbn1cclxuXHJcblxyXG4vLyDnlJ/lkb3lkajmnJ/vvJrnlJ/miJBIVE1M5ZCO77yM5Yqo5oCB5L+u5q2j55Sf5oiQ5YaF5a6577yaZHluYW1pYyBldmVudCBvciBvYmplY3QgYmluZGluZyBoZXJlXHJcbmZ1bmN0aW9uIGZpbmlzaFZpZXcgKGh0bWw6YW55KSB7XHJcblxyXG4gIGxldCBtZERpdkVsID0gJC5wYXJzZUhUTUwoYDxodG1sPjxib2R5PjxkaXYgaWQ9XCJ0b3BtZFwiPiR7aHRtbH08L2Rpdj48L2JvZHk+PC9odG1sPmApWzBdXHJcbiAgbGV0IG1kaHRtbCQgPSAkKG1kRGl2RWwpXHJcblxyXG4gICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbiAgICog56ys5LiA5q2l77ya6ZyA5pON5L2cRE9N77yM6L+b6KGM6aG16Z2i5L+u5q2jXHJcbiAgICovXHJcbiAgLyoqXHJcbiAgICogQmxvY2tRdW90ZSDlvJXnlKjlop7lvLrmj5Lku7ZcclxuICAqL1xyXG4gIC8vIGJsb2NrcXVvdGUg5L+u5q2j5byV55So5qCH562+XHJcbiAgbGV0IGJsb2NrcXVvdGUgPSBtZGh0bWwkLmZpbmQoJ2Jsb2NrcXVvdGUucmF3JykucmVtb3ZlQ2xhc3MoJ3JhdycpXHJcbiAgYmxvY2txdW90ZSA9IG1kaHRtbCQuZmluZCgnYmxvY2txdW90ZScpXHJcblxyXG4gIGxldCBibG9ja3F1b3RlUCA9ICQoYmxvY2txdW90ZSkuZmluZCgncCcpXHJcbiAgYmxvY2txdW90ZVAuZWFjaCgoa2V5OmFueSwgdmFsdWU6YW55KSA9PiB7XHJcbiAgICBsZXQgaHRtbFN0ciA9ICQodmFsdWUpLmh0bWwoKVxyXG4gICAgaHRtbFN0ciA9IHJlcGxhY2VFeHRyYVRhZ3MoaHRtbFN0cilcclxuICAgIHZhbHVlLmlubmVySFRNTCA9IGh0bWxTdHJcclxuICAgICQodmFsdWUpLmh0bWwoaHRtbFN0cilcclxuICAgIGJsb2NrcXVvdGVQW2tleV0uaW5uZXJIVE1MID0gaHRtbFN0cjtcclxuICAgICQoYmxvY2txdW90ZVBba2V5XSkuaHRtbChodG1sU3RyKVxyXG4gIH0pXHJcblxyXG4gIC8vIOW8leeUqOagh+etvuminOiJsua4suafkyBjb2xvciB0YWcgaW4gYmxvY2txdW90ZSB3aWxsIGNoYW5nZSBpdHMgbGVmdCBib3JkZXIgY29sb3JcclxuICBsZXQgYmxvY2txdW90ZUNvbG9yID0gYmxvY2txdW90ZS5maW5kKCcuY29sb3InKVxyXG4gIGJsb2NrcXVvdGVDb2xvci5lYWNoKChrZXk6YW55LCB2YWx1ZTphbnkpID0+IHtcclxuICAgIGxldCBkYXRhQ29sb3I6YW55ID0gJCh2YWx1ZSkuYXR0cignZGF0YS1jb2xvcicpXHJcbiAgICAkKHZhbHVlKS5jbG9zZXN0KCdibG9ja3F1b3RlJykuY3NzKCdib3JkZXItbGVmdC1jb2xvcicsIGRhdGFDb2xvcilcclxuICB9KVxyXG5cclxuICBcclxuICBsZXQgc3R5bGUgPSBgPHN0eWxlPlxyXG4gICAgLm1hcmtkb3duLXNlY3Rpb24ge1xyXG4gICAgICBjb2xvcjogYmxhY2s7XHJcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgICB9XHJcbiAgICAubWFya2Rvd24tc2VjdGlvbiBwcmUgLmhsanMtbGFuZ3tcclxuICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcclxuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgICAgZm9udC1zaXplOiAuNzVyZW07XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxcmVtO1xyXG4gICAgICBwYWRkaW5nLXRvcDogLjI1cmVtO1xyXG4gICAgICBwYWRkaW5nLWJvdHRvbTogLjI1cmVtO1xyXG4gICAgICBwYWRkaW5nLWxlZnQ6IC41cmVtO1xyXG4gICAgICBwYWRkaW5nLXJpZ2h0OiAuNXJlbTtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLDAsMCwuMyk7XHJcbiAgICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IC4zNzVyZW07XHJcbiAgICAgIHRvcDowO1xyXG4gICAgICByaWdodDowO1xyXG4gICAgICBwb3NpdGlvbjphYnNvbHV0ZTtcclxufVxyXG5cclxuICAgIH1cclxuICAgIC5tYXJrZG93bi1zZWN0aW9uIHByZSAuaGxqcyB7XHJcbiAgICAgICAgcG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50O1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICMyNzI4MjIhaW1wb3J0YW50O1xyXG4gICAgICAgIHBhZGRpbmc6MTBweCFpbXBvcnRhbnQ7XHJcbiAgICAgICAgY29sb3I6ICNkZGQ7XHJcbiAgICAgICAgdGV4dC1zaGFkb3c6IG5vbmUhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIC5tYXJrZG93bi1zZWN0aW9uIGJsb2NrcXVvdGUge1xyXG4gICAgICAgIG1hcmdpbjogMDtcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiAwcHg7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogLjg1ZW07XHJcbiAgICAgICAgcGFkZGluZzogMCAxNXB4O1xyXG4gICAgICAgIGNvbG9yOiAjODU4NTg1O1xyXG4gICAgICAgIGJvcmRlci1sZWZ0OiA0cHggc29saWQgI2U1ZTVlNTtcclxuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogcmdiKDIyOSwgMjI5LCAyMjkpO1xyXG4gICAgfVxyXG4gICAgLm1hcmtkb3duLXNlY3Rpb24gaW1nIHtcclxuICAgICAgbWF4LXdpZHRoOjEwMCU7XHJcbiAgfVxyXG4gIDwvc3R5bGU+YFxyXG4gIGxldCByZXN1bHQgPSBzdHlsZSAgKyAobWRodG1sJC5odG1sKCkgfHwgaHRtbClcclxuXHJcbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAqIOesrOS6jOatpe+8muaXoOmcgOaTjeS9nERPTe+8jOabv+aNouaWh+acrOS/oeaBr1xyXG4gICAqL1xyXG4gIC8qKlxyXG4gICAqIHVwbG9hZHMg5L+u5q2j6ZmE5Lu25Zyw5Z2AXHJcbiAgKi9cclxuICByZXN1bHQgPSByZXN1bHQucmVwbGFjZUFsbCgnc3JjPVwiL3VwbG9hZHMvJywnc3JjPVwiaHR0cHM6Ly9tZC5mbW9kZS5jbi91cGxvYWRzLycpXHJcbiAgcmV0dXJuIHJlc3VsdFxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgTWFya2Rvd25QYXJzZXtcclxuICAgIGNvbnN0cnVjdG9yKCl7XHJcbiAgICB9IFxyXG5cclxuICAgIC8vIOS4uua6kOeggemrmOS6ruaPkOS+m+eugOWNleeahCBNYXJrZG93biDor63ms5Xpq5jkuq5cclxuICAgIHB1YmxpYyBoaWdobGlnaHRNYXJrZG93bihtYXJrZG93bjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBjb25zdCBjb2RlQmxvY2tSZWdleCA9IC9gYGAoXFx3Kyk/XFxuKFtcXHNcXFNdKj8pYGBgL2c7XHJcbiAgICAgICAgY29uc3QgcGFydHM6IEFycmF5PHt0eXBlOiAnbWFya2Rvd24nIHwgJ2NvZGUnLCBjb250ZW50OiBzdHJpbmcsIGxhbmd1YWdlPzogc3RyaW5nfT4gPSBbXTtcclxuICAgICAgICBsZXQgbGFzdEluZGV4ID0gMDtcclxuICAgICAgICBsZXQgbWF0Y2g7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8g5YiG5Ymy5YaF5a655Li6IG1hcmtkb3duIOmDqOWIhuWSjOS7o+eggeWdl+mDqOWIhlxyXG4gICAgICAgIHdoaWxlICgobWF0Y2ggPSBjb2RlQmxvY2tSZWdleC5leGVjKG1hcmtkb3duKSkgIT09IG51bGwpIHtcclxuICAgICAgICAgIC8vIOa3u+WKoOS7o+eggeWdl+S5i+WJjeeahCBtYXJrZG93biDlhoXlrrlcclxuICAgICAgICAgIGlmIChtYXRjaC5pbmRleCA+IGxhc3RJbmRleCkge1xyXG4gICAgICAgICAgICBwYXJ0cy5wdXNoKHtcclxuICAgICAgICAgICAgICB0eXBlOiAnbWFya2Rvd24nLFxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IG1hcmtkb3duLnN1YnN0cmluZyhsYXN0SW5kZXgsIG1hdGNoLmluZGV4KVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgLy8g5re75Yqg5Luj56CB5Z2XXHJcbiAgICAgICAgICBwYXJ0cy5wdXNoKHtcclxuICAgICAgICAgICAgdHlwZTogJ2NvZGUnLFxyXG4gICAgICAgICAgICBjb250ZW50OiBtYXRjaFsyXSwgLy8g5Luj56CB5YaF5a65XHJcbiAgICAgICAgICAgIGxhbmd1YWdlOiBtYXRjaFsxXSAgLy8g6K+t6KiA5qCH6K+GXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgbGFzdEluZGV4ID0gbWF0Y2guaW5kZXggKyBtYXRjaFswXS5sZW5ndGg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIOa3u+WKoOacgOWQjuWJqeS9meeahCBtYXJrZG93biDlhoXlrrlcclxuICAgICAgICBpZiAobGFzdEluZGV4IDwgbWFya2Rvd24ubGVuZ3RoKSB7XHJcbiAgICAgICAgICBwYXJ0cy5wdXNoKHtcclxuICAgICAgICAgICAgdHlwZTogJ21hcmtkb3duJyxcclxuICAgICAgICAgICAgY29udGVudDogbWFya2Rvd24uc3Vic3RyaW5nKGxhc3RJbmRleClcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICAvLyDlpoLmnpzmsqHmnInmib7liLDku6PnoIHlnZfvvIznm7TmjqXlpITnkIbmlbTkuKrlhoXlrrnkuLogbWFya2Rvd25cclxuICAgICAgICBpZiAocGFydHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICByZXR1cm4gaGxqcy5oaWdobGlnaHQobWFya2Rvd24sIHsgbGFuZ3VhZ2U6ICdtYXJrZG93bicgfSkudmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIOWIhuWIq+WkhOeQhuWQhOmDqOWIhlxyXG4gICAgICAgIHJldHVybiBwYXJ0cy5tYXAocGFydCA9PiB7XHJcbiAgICAgICAgICBpZiAocGFydC50eXBlID09PSAnY29kZScpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaGlnaGxpZ2h0Q29kZUJsb2NrKHBhcnQuY29udGVudCwgcGFydC5sYW5ndWFnZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAvLyDlpITnkIYgbWFya2Rvd24g6YOo5YiGXHJcbiAgICAgICAgICAgIHJldHVybiBwYXJ0LmNvbnRlbnQudHJpbSgpID8gXHJcbiAgICAgICAgICAgICAgaGxqcy5oaWdobGlnaHQocGFydC5jb250ZW50LCB7IGxhbmd1YWdlOiAnbWFya2Rvd24nIH0pLnZhbHVlIDogXHJcbiAgICAgICAgICAgICAgcGFydC5jb250ZW50O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pLmpvaW4oJycpO1xyXG4gICAgICAgIFxyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcignTWFya2Rvd24gaGlnaGxpZ2h0aW5nIGVycm9yOicsIGUpO1xyXG4gICAgICAgIHJldHVybiBtYXJrZG93bjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICBwcml2YXRlIGhpZ2hsaWdodENvZGVCbG9jayhjb2RlOiBzdHJpbmcsIGxhbmd1YWdlPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBsZXQgaGlnaGxpZ2h0ZWRDb2RlOiBzdHJpbmc7XHJcbiAgICAgICAgbGV0IGRldGVjdGVkTGFuZ3VhZ2U6IHN0cmluZztcclxuICAgICAgICBcclxuICAgICAgICBpZiAobGFuZ3VhZ2UgJiYgaGxqcy5nZXRMYW5ndWFnZShsYW5ndWFnZSkpIHtcclxuICAgICAgICAgIC8vIOS9v+eUqOaMh+WumuivreiogOi/m+ihjOmrmOS6rlxyXG4gICAgICAgICAgaGlnaGxpZ2h0ZWRDb2RlID0gaGxqcy5oaWdobGlnaHQoY29kZSwgeyBsYW5ndWFnZSB9KS52YWx1ZTtcclxuICAgICAgICAgIGRldGVjdGVkTGFuZ3VhZ2UgPSBsYW5ndWFnZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8g6Ieq5Yqo5qOA5rWL6K+t6KiAXHJcbiAgICAgICAgICBjb25zdCBhdXRvSGlnaGxpZ2h0ZWQgPSBobGpzLmhpZ2hsaWdodEF1dG8oY29kZSk7XHJcbiAgICAgICAgICBoaWdobGlnaHRlZENvZGUgPSBhdXRvSGlnaGxpZ2h0ZWQudmFsdWU7XHJcbiAgICAgICAgICBkZXRlY3RlZExhbmd1YWdlID0gYXV0b0hpZ2hsaWdodGVkLmxhbmd1YWdlIHx8ICdwbGFpbnRleHQnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICByZXR1cm4gYDxwcmU+PGNvZGUgY2xhc3M9XCJobGpzIGxhbmd1YWdlLSR7ZGV0ZWN0ZWRMYW5ndWFnZX1cIj4ke2hpZ2hsaWdodGVkQ29kZX08L2NvZGU+PC9wcmU+YDtcclxuICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0NvZGUgYmxvY2sgaGlnaGxpZ2h0aW5nIGVycm9yOicsIGUpO1xyXG4gICAgICAgIHJldHVybiBgPHByZT48Y29kZSBjbGFzcz1cImhsanNcIj4ke3RoaXMuZXNjYXBlSHRtbChjb2RlKX08L2NvZGU+PC9wcmU+YDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBlc2NhcGVIdG1sKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICAgIHJldHVybiB0ZXh0XHJcbiAgICAgICAgLnJlcGxhY2UoLyYvZywgJyZhbXA7JylcclxuICAgICAgICAucmVwbGFjZSgvPC9nLCAnJmx0OycpXHJcbiAgICAgICAgLnJlcGxhY2UoLz4vZywgJyZndDsnKVxyXG4gICAgICAgIC5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7JylcclxuICAgICAgICAucmVwbGFjZSgvJy9nLCAnJiMzOTsnKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgcGFyc2VUb0hUTUwobWFya2Rvd246YW55KXtcclxuICAgICAgaWYoIW1hcmtkb3duPy5sZW5ndGgpIHJldHVybiBcIlwiXHJcbiAgICAgIGlmKCFtYXJrZG93bj8ucmVwbGFjZSkgcmV0dXJuIFwiXCJcclxuICAgICAgLy8gdGhpcy5pbmZvKFwibWFya2Rvd25cIixtYXJrZG93bilcclxuICAgICAgLy8gY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoe21kOm1hcmtkb3dufSkpXHJcblxyXG4gICAgICAvLyDnlLHkuo5tZD0+aHRtbOS8mui9rOS5ieWOn+aWh+acrOS4reeahCBcXCgg5Li6ICjvvIxcXFsg5Li6IFvvvIzlm6DmraTpnIDopoHlhYhtYXRoamF46L2s5o2i5YaN6L2sbWFya2Rvd25cclxuICAgICAgLy8g55Sx5LqO6L2s5o2i5Lya5bCGYGBgIGBgYOS7o+eggeerr+S4rSQgJOe7hOWQiOW9ouW8j+eahOaVsOaNruagvOW8j+i9rOaNou+8jOWboOatpOmcgOimgeWFiOaOkumZpG1k5Luj56CB5q615YaF5a65XHJcbiAgICAgIGxldCBtZE1hdGhKYXggPSBuZXcgTWFya2Rvd25NYXRoSmF4KClcclxuICAgICAgbWFya2Rvd24gPSBtYXJrZG93bi5zcGxpdChcImBgYFwiKS5tYXAoKGl0ZW0saW5kZXgpPT57XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coaXRlbSxpbmRleCk7XHJcbiAgICAgICAgaWYoaW5kZXglMj09MCl7IC8vIOagueaNruS7o+eggeauteWIhuWJsiDlgbbmlbDpobkg5piv6Z2e5Luj56CB5q61XHJcbiAgICAgICAgICBpdGVtID0gbWRNYXRoSmF4LnRleHRfdG9fbWF0aGpheChpdGVtLHtcclxuICAgICAgICAgICAgb3V0cHV0Olwic3ZnXCJcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgcmV0dXJuIGl0ZW1cclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIHJldHVybiBpdGVtXHJcbiAgICAgICAgfVxyXG4gICAgICB9KS5qb2luKFwiYGBgXCIpXHJcblxyXG4gICAgICBsZXQgaHRtbFJlc3VsdCA9IG1kLnJlbmRlcihtYXJrZG93bik7XHJcblxyXG4gICAgICAvLyB0aGlzLmluZm8oXCJodG1sXCIsaHRtbFJlc3VsdClcclxuICAgICAgaHRtbFJlc3VsdCA9IGZpbmlzaFZpZXcoaHRtbFJlc3VsdCk7XHJcbiAgICAgIC8vIHRoaXMuaW5mbyhcImh0bWwgcGx1c1wiLGh0bWxSZXN1bHQpXHJcbiAgICAgIHJldHVybiBodG1sUmVzdWx0O1xyXG4gICAgfVxyXG4gICAgaW5mbyguLi5hcmdzOmFueSl7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKC4uLmFyZ3MpXHJcbiAgICB9XHJcbiAgICAvLyBNYXJrZG93biBUZXh0IHRvIEhUTUxcclxuICAgIC8vIEhUTUwgRE9NIHRvIEVuaGFuY2UgSFRNTCBET01cclxufSJdfQ==
8
+ import hljs from"highlight.js";import MarkdownIt from"markdown-it";import $ from"jquery";import{MarkdownMathJax}from"./plugins/md-mathjax";import abbr from"markdown-it-abbr";import footnote from"markdown-it-footnote";import deflist from"markdown-it-deflist";import mark from"markdown-it-mark";import ins from"markdown-it-ins";import sub from"markdown-it-sub";import sup from"markdown-it-sup";import ruby from"markdown-it-ruby";let md=new MarkdownIt({html:!0,xhtmlOut:!0,breaks:!1,linkify:!1,typographer:!1,quotes:"“”‘’",highlight:function(e,t){if(t&&hljs.getLanguage(t))try{return`<pre style="position:relative;padding:10px;" class="hljs lang-${t}"><code>${hljs.highlight(e,{language:t}).value}</code><small class="hljs-lang"><span class="sr-only">Language:</span>${t}</small></pre>`}catch(e){}return""}});md.use(abbr),md.use(footnote),md.use(deflist),md.use(mark),md.use(ins),md.use(sub),md.use(sup),md.use(ruby);const mditConfig={plantumlServer:"https://www.plantuml.com/plantuml"};import plantumlEncoder from"plantuml-encoder";function makePlantumlURL(e){const t=plantumlEncoder.encode(e);return`${mditConfig.plantumlServer}/svg/${t}`}md.renderer.rules.plantuml=(e,t,n,r,o)=>{const l=e[t];if("plantuml"!==l.type)return e[t].content;return`\n <img src="${makePlantumlURL(l.content)}" />\n <pre style="position:relative;padding:10px;" class="hljs lang-plantuml"><code>${l.content}</code><small class="hljs-lang"><span class="sr-only">Language:</span>plantuml</small></pre>\n `},md.core.ruler.push("plantuml",(e=>{const t=e.tokens;for(const e of t)"fence"===e.type&&"plantuml"===e.info&&(e.type="plantuml")}));const spaceregex=/\s*/,notinhtmltagregex=/(?![^<]*>|[^<>]*<\/)/;let coloregex=/\[color=([#|(|)|\s|,|\w]*?)\]/;coloregex=new RegExp(coloregex.source+notinhtmltagregex.source,"g");let nameregex=/\[name=(.*?)\]/,timeregex=/\[time=([:|,|+|-|(|)|\s|\w]*?)\]/;const nameandtimeregex=new RegExp(nameregex.source+spaceregex.source+timeregex.source+notinhtmltagregex.source,"g");function replaceExtraTags(e){return console.log("replaceExtraTags",e),e=(e=(e=(e=e.replace(coloregex,'<span class="color" data-color="$1"></span>')).replace(nameandtimeregex,'<small><i class="fa fa-user"></i> $1 <i class="fa fa-clock-o"></i> $2</small>')).replace(nameregex,'<small><i class="fa fa-user"></i> $1</small>')).replace(timeregex,'<small><i class="fa fa-clock-o"></i> $1</small>'),console.log("replaceExtraTags",e),e}function finishView(e){let t=$.parseHTML(`<html><body><div id="topmd">${e}</div></body></html>`)[0],n=$(t),r=n.find("blockquote.raw").removeClass("raw");r=n.find("blockquote");let o=$(r).find("p");o.each(((e,t)=>{let n=$(t).html();n=replaceExtraTags(n),t.innerHTML=n,$(t).html(n),o[e].innerHTML=n,$(o[e]).html(n)})),r.find(".color").each(((e,t)=>{let n=$(t).attr("data-color");$(t).closest("blockquote").css("border-left-color",n)}));let l="<style>\n .markdown-section {\n color: black;\n text-align: left;\n }\n .markdown-section pre .hljs-lang{\n text-transform: uppercase;\n font-weight: 700;\n font-size: .75rem;\n line-height: 1rem;\n padding-top: .25rem;\n padding-bottom: .25rem;\n padding-left: .5rem;\n padding-right: .5rem;\n background-color: rgba(0,0,0,.3);\n border-bottom-left-radius: .375rem;\n top:0;\n right:0;\n position:absolute;\n}\n\n }\n .markdown-section pre .hljs {\n position:relative!important;\n background: #272822!important;\n padding:10px!important;\n color: #ddd;\n text-shadow: none!important;\n }\n\n .markdown-section blockquote {\n margin: 0;\n margin-bottom: 0px;\n margin-bottom: .85em;\n padding: 0 15px;\n color: #858585;\n border-left: 4px solid #e5e5e5;\n border-left-color: rgb(229, 229, 229);\n }\n .markdown-section img {\n max-width:100%;\n }\n </style>"+(n.html()||e);return l=l.replaceAll('src="/uploads/','src="https://md.fmode.cn/uploads/'),l}nameregex=new RegExp(nameregex.source+notinhtmltagregex.source,"g"),timeregex=new RegExp(timeregex.source+notinhtmltagregex.source,"g");export class MarkdownParse{constructor(){}highlightMarkdown(e){try{const t=/```(\w+)?\n([\s\S]*?)```/g,n=[];let r,o=0;for(;null!==(r=t.exec(e));)r.index>o&&n.push({type:"markdown",content:e.substring(o,r.index)}),n.push({type:"code",content:r[2],language:r[1]}),o=r.index+r[0].length;return o<e.length&&n.push({type:"markdown",content:e.substring(o)}),0===n.length?hljs.highlight(e,{language:"markdown"}).value:n.map((e=>"code"===e.type?this.highlightCodeBlock(e.content,e.language):e.content.trim()?hljs.highlight(e.content,{language:"markdown"}).value:e.content)).join("")}catch(t){return console.error("Markdown highlighting error:",t),e}}highlightCodeBlock(e,t){try{let n,r;if(t&&hljs.getLanguage(t))n=hljs.highlight(e,{language:t}).value,r=t;else{const t=hljs.highlightAuto(e);n=t.value,r=t.language||"plaintext"}return`<pre><code class="hljs language-${r}">${n}</code></pre>`}catch(t){return console.error("Code block highlighting error:",t),`<pre><code class="hljs">${this.escapeHtml(e)}</code></pre>`}}escapeHtml(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}parseToHTML(e){if(!e?.length)return"";if(!e?.replace)return"";let t=new MarkdownMathJax;e=e.split("```").map(((e,n)=>n%2==0?e=t.text_to_mathjax(e,{output:"svg"}):e)).join("```");let n=md.render(e);return n=finishView(n),n}info(...e){}}
9
+ var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9haWdjL2NvbXAtbWFya2Rvd24tcHJldmlldy9tYXJrZG93bi1wYXJzZS5tanM=`
10
+
@@ -1,51 +1,10 @@
1
- import { Component, ElementRef, Input, Renderer2, ViewChild } from '@angular/core';
2
- import { DomSanitizer } from '@angular/platform-browser';
3
- import { MarkdownParse } from "./markdown-parse";
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/platform-browser";
6
- import * as i2 from "@angular/common";
7
- /**
8
- * Markdown 文档高级渲染组件
9
- * @name fm-markdown-preview
10
- * @public
11
- */
12
- export class MarkdownPreviewComponent {
13
- constructor(domSan, renderer) {
14
- this.domSan = domSan;
15
- this.renderer = renderer;
16
- this.content = ``;
17
- /**
18
- * 是否开启MD渲染,默认开启
19
- * @default true
20
- */
21
- this.render = true;
22
- }
23
- ngAfterViewInit() {
24
- this.renderMdToHTML();
25
- }
26
- renderMdToHTML() {
27
- if (!this.render)
28
- return;
29
- let mdparser = new MarkdownParse();
30
- let htmlResult = mdparser.parseToHTML(this.content);
31
- this.safeHTML = this.domSan.bypassSecurityTrustHtml(htmlResult);
32
- let mdDiv = this.renderer.createElement("div");
33
- mdDiv.innerHTML = htmlResult;
34
- // console.log(mdDiv.innerHTML)
35
- this.renderer.appendChild(this.mdContent.nativeElement, mdDiv);
36
- }
37
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MarkdownPreviewComponent, deps: [{ token: i1.DomSanitizer }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
38
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: MarkdownPreviewComponent, selector: "fm-markdown-preview", inputs: { content: "content", render: "render" }, viewQueries: [{ propertyName: "mdContent", first: true, predicate: ["mdContent"], descendants: true }], ngImport: i0, template: "<div class=\"message-body\">\r\n <div *ngIf=\"render\" #mdContent class=\"markdown-section\">\r\n </div>\r\n <div *ngIf=\"!render\" class=\"pre-section\">\r\n {{content}}\r\n </div>\r\n</div>", styles: [":host{overflow-x:auto}.message-body div{text-align:left;overflow-x:auto}.message-body .pre-section{white-space:pre-wrap}.markdown-section blockquote{margin:0 0 .85em;padding:0 15px;color:#858585;border-left:4px solid #e5e5e5;border-left-color:#e5e5e5}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
39
- }
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MarkdownPreviewComponent, decorators: [{
41
- type: Component,
42
- args: [{ selector: 'fm-markdown-preview', template: "<div class=\"message-body\">\r\n <div *ngIf=\"render\" #mdContent class=\"markdown-section\">\r\n </div>\r\n <div *ngIf=\"!render\" class=\"pre-section\">\r\n {{content}}\r\n </div>\r\n</div>", styles: [":host{overflow-x:auto}.message-body div{text-align:left;overflow-x:auto}.message-body .pre-section{white-space:pre-wrap}.markdown-section blockquote{margin:0 0 .85em;padding:0 15px;color:#858585;border-left:4px solid #e5e5e5;border-left-color:#e5e5e5}\n"] }]
43
- }], ctorParameters: () => [{ type: i1.DomSanitizer }, { type: i0.Renderer2 }], propDecorators: { content: [{
44
- type: Input
45
- }], mdContent: [{
46
- type: ViewChild,
47
- args: ['mdContent']
48
- }], render: [{
49
- type: Input
50
- }] } });
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24tcHJldmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL2FpZ2MvY29tcC1tYXJrZG93bi1wcmV2aWV3L21hcmtkb3duLXByZXZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm1vZGUtbmcvc3JjL2xpYi9haWdjL2NvbXAtbWFya2Rvd24tcHJldmlldy9tYXJrZG93bi1wcmV2aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsWUFBWSxFQUFZLE1BQU0sMkJBQTJCLENBQUM7QUFFbkUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLGtCQUFrQixDQUFDOzs7O0FBRS9DOzs7O0dBSUc7QUFNSCxNQUFNLE9BQU8sd0JBQXdCO0lBV25DLFlBQ1UsTUFBbUIsRUFDbkIsUUFBa0I7UUFEbEIsV0FBTSxHQUFOLE1BQU0sQ0FBYTtRQUNuQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBWm5CLFlBQU8sR0FBVSxFQUFFLENBQUE7UUFLNUI7OztXQUdHO1FBQ00sV0FBTSxHQUFXLElBQUksQ0FBQTtJQUs5QixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQTtJQUN2QixDQUFDO0lBRUQsY0FBYztRQUNaLElBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU07UUFDdkIsSUFBSSxRQUFRLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQTtRQUNsQyxJQUFJLFVBQVUsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUNuRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsdUJBQXVCLENBQUMsVUFBVSxDQUFDLENBQUE7UUFFL0QsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0MsS0FBSyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUM7UUFDN0IsK0JBQStCO1FBRS9CLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxFQUFDLEtBQUssQ0FBQyxDQUFBO0lBRS9ELENBQUM7K0dBakNVLHdCQUF3QjttR0FBeEIsd0JBQXdCLHFOQ2ZyQyxvTkFNTTs7NEZEU08sd0JBQXdCO2tCQUxwQyxTQUFTOytCQUNFLHFCQUFxQjt5R0FLdEIsT0FBTztzQkFBZixLQUFLO2dCQUdrQixTQUFTO3NCQUFoQyxTQUFTO3VCQUFDLFdBQVc7Z0JBTWIsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgUmVuZGVyZXIyLCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5cclxuaW1wb3J0IHtNYXJrZG93blBhcnNlfSBmcm9tIFwiLi9tYXJrZG93bi1wYXJzZVwiO1xyXG5cclxuLyoqXHJcbiAqIE1hcmtkb3duIOaWh+aho+mrmOe6p+a4suafk+e7hOS7tlxyXG4gKiBAbmFtZSBmbS1tYXJrZG93bi1wcmV2aWV3XHJcbiAqIEBwdWJsaWNcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZm0tbWFya2Rvd24tcHJldmlldycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21hcmtkb3duLXByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL21hcmtkb3duLXByZXZpZXcuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFya2Rvd25QcmV2aWV3Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCAge1xyXG4gIEBJbnB1dCgpIGNvbnRlbnQ6c3RyaW5nID0gYGBcclxuICBzYWZlSFRNTDpTYWZlSHRtbFxyXG5cclxuICBAVmlld0NoaWxkKCdtZENvbnRlbnQnKSBtZENvbnRlbnQ6IEVsZW1lbnRSZWY7XHJcbiAgXHJcbiAgLyoqXHJcbiAgICog5piv5ZCm5byA5ZCvTUTmuLLmn5PvvIzpu5jorqTlvIDlkK9cclxuICAgKiBAZGVmYXVsdCB0cnVlXHJcbiAgICovXHJcbiAgQElucHV0KCkgcmVuZGVyOmJvb2xlYW4gPSB0cnVlXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGRvbVNhbjpEb21TYW5pdGl6ZXIsXHJcbiAgICBwcml2YXRlIHJlbmRlcmVyOlJlbmRlcmVyMlxyXG4gICAgKXtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpe1xyXG4gICAgdGhpcy5yZW5kZXJNZFRvSFRNTCgpXHJcbiAgfVxyXG5cclxuICByZW5kZXJNZFRvSFRNTCgpe1xyXG4gICAgaWYoIXRoaXMucmVuZGVyKSByZXR1cm5cclxuICAgIGxldCBtZHBhcnNlciA9IG5ldyBNYXJrZG93blBhcnNlKClcclxuICAgIGxldCBodG1sUmVzdWx0ID0gbWRwYXJzZXIucGFyc2VUb0hUTUwodGhpcy5jb250ZW50KVxyXG4gICAgdGhpcy5zYWZlSFRNTCA9IHRoaXMuZG9tU2FuLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKGh0bWxSZXN1bHQpXHJcblxyXG4gICAgbGV0IG1kRGl2ID0gdGhpcy5yZW5kZXJlci5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xyXG4gICAgbWREaXYuaW5uZXJIVE1MID0gaHRtbFJlc3VsdDtcclxuICAgIC8vIGNvbnNvbGUubG9nKG1kRGl2LmlubmVySFRNTClcclxuXHJcbiAgICB0aGlzLnJlbmRlcmVyLmFwcGVuZENoaWxkKHRoaXMubWRDb250ZW50Lm5hdGl2ZUVsZW1lbnQsbWREaXYpXHJcbiAgICBcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm1lc3NhZ2UtYm9keVwiPlxyXG4gICAgPGRpdiAqbmdJZj1cInJlbmRlclwiICNtZENvbnRlbnQgY2xhc3M9XCJtYXJrZG93bi1zZWN0aW9uXCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCIhcmVuZGVyXCIgY2xhc3M9XCJwcmUtc2VjdGlvblwiPlxyXG4gICAgICAgIHt7Y29udGVudH19XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
1
+
2
+ /**
3
+ * @copyright © 未来飞马 © 未来全栈 www.fmode.cn
4
+ * 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
5
+ * 保留所有权利 All Rights Reserved.
6
+ * /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/aigc/comp-markdown-preview/markdown-preview.component.mjs
7
+ */
8
+ import{Component,ElementRef,Input,Renderer2,ViewChild}from"@angular/core";import{DomSanitizer}from"@angular/platform-browser";import{MarkdownParse}from"./markdown-parse";import*as i0 from"@angular/core";import*as i1 from"@angular/platform-browser";import*as i2 from"@angular/common";export class MarkdownPreviewComponent{constructor(e,n){this.domSan=e,this.renderer=n,this.content="",this.render=!0}ngAfterViewInit(){this.renderMdToHTML()}renderMdToHTML(){if(!this.render)return;let e=(new MarkdownParse).parseToHTML(this.content);this.safeHTML=this.domSan.bypassSecurityTrustHtml(e);let n=this.renderer.createElement("div");n.innerHTML=e,this.renderer.appendChild(this.mdContent.nativeElement,n)}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:MarkdownPreviewComponent,deps:[{token:i1.DomSanitizer},{token:i0.Renderer2}],target:i0.ɵɵFactoryTarget.Component})}static{this.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"17.3.12",type:MarkdownPreviewComponent,selector:"fm-markdown-preview",inputs:{content:"content",render:"render"},viewQueries:[{propertyName:"mdContent",first:!0,predicate:["mdContent"],descendants:!0}],ngImport:i0,template:'<div class="message-body">\n <div *ngIf="render" #mdContent class="markdown-section">\n </div>\n <div *ngIf="!render" class="pre-section">\n {{content}}\n </div>\n</div>',styles:[":host{overflow-x:auto}.message-body div{text-align:left;overflow-x:auto}.message-body .pre-section{white-space:pre-wrap}.markdown-section blockquote{margin:0 0 .85em;padding:0 15px;color:#858585;border-left:4px solid #e5e5e5;border-left-color:#e5e5e5}\n"],dependencies:[{kind:"directive",type:i2.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]}]})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:MarkdownPreviewComponent,decorators:[{type:Component,args:[{selector:"fm-markdown-preview",template:'<div class="message-body">\n <div *ngIf="render" #mdContent class="markdown-section">\n </div>\n <div *ngIf="!render" class="pre-section">\n {{content}}\n </div>\n</div>',styles:[":host{overflow-x:auto}.message-body div{text-align:left;overflow-x:auto}.message-body .pre-section{white-space:pre-wrap}.markdown-section blockquote{margin:0 0 .85em;padding:0 15px;color:#858585;border-left:4px solid #e5e5e5;border-left-color:#e5e5e5}\n"]}]}],ctorParameters:()=>[{type:i1.DomSanitizer},{type:i0.Renderer2}],propDecorators:{content:[{type:Input}],mdContent:[{type:ViewChild,args:["mdContent"]}],render:[{type:Input}]}});
9
+ var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9haWdjL2NvbXAtbWFya2Rvd24tcHJldmlldy9tYXJrZG93bi1wcmV2aWV3LmNvbXBvbmVudC5tanM=`
10
+