@yonus_amire01/chat 0.1.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (360) hide show
  1. package/README.md +8 -8
  2. package/dist/chat.css +1 -0
  3. package/dist/index.cjs +7 -5
  4. package/dist/index.mjs +81634 -8799
  5. package/dist/signature_pad-BvnS6ckP.cjs +4 -0
  6. package/dist/signature_pad-CSadMJ3H.js +478 -0
  7. package/dist/types/app/components/ChatPage.vue.d.ts +3 -0
  8. package/dist/types/app/components/ChatPage.vue.d.ts.map +1 -0
  9. package/dist/types/app/components/call/CallBoard.vue.d.ts +33 -0
  10. package/dist/types/app/components/call/CallBoard.vue.d.ts.map +1 -0
  11. package/dist/types/app/components/call/CallMemberDisplay.vue.d.ts +16 -0
  12. package/dist/types/app/components/call/CallMemberDisplay.vue.d.ts.map +1 -0
  13. package/dist/types/app/components/call/CallPageOverlay.vue.d.ts +7 -0
  14. package/dist/types/app/components/call/CallPageOverlay.vue.d.ts.map +1 -0
  15. package/dist/types/app/components/call/paint-board/BoardColorPicker.vue.d.ts +24 -0
  16. package/dist/types/app/components/call/paint-board/BoardColorPicker.vue.d.ts.map +1 -0
  17. package/dist/types/app/components/call/paint-board/BrushSizeSlider.vue.d.ts +19 -0
  18. package/dist/types/app/components/call/paint-board/BrushSizeSlider.vue.d.ts.map +1 -0
  19. package/dist/types/app/components/call/paint-board/CallPaintBoard.vue.d.ts +47 -0
  20. package/dist/types/app/components/call/paint-board/CallPaintBoard.vue.d.ts.map +1 -0
  21. package/dist/types/app/components/chat/ChatBubble.vue.d.ts +164 -0
  22. package/dist/types/app/components/chat/ChatBubble.vue.d.ts.map +1 -0
  23. package/dist/types/app/components/chat/ChatInput.vue.d.ts +56 -0
  24. package/dist/types/app/components/chat/ChatInput.vue.d.ts.map +1 -0
  25. package/dist/types/app/components/chat/ChatMessages.vue.d.ts +16 -0
  26. package/dist/types/app/components/chat/ChatMessages.vue.d.ts.map +1 -0
  27. package/dist/types/app/components/chat/ChatPageBar.vue.d.ts +17 -0
  28. package/dist/types/app/components/chat/ChatPageBar.vue.d.ts.map +1 -0
  29. package/dist/types/app/components/chat/ChatProfileOverview.vue.d.ts +11 -0
  30. package/dist/types/app/components/chat/ChatProfileOverview.vue.d.ts.map +1 -0
  31. package/dist/types/app/components/chat/ChatView.vue.d.ts +73 -0
  32. package/dist/types/app/components/chat/ChatView.vue.d.ts.map +1 -0
  33. package/dist/types/app/components/chat/chat-bubbles/BubbleOptions.vue.d.ts +119 -0
  34. package/dist/types/app/components/chat/chat-bubbles/BubbleOptions.vue.d.ts.map +1 -0
  35. package/dist/types/app/components/chat/chat-bubbles/BubbleVideo.vue.d.ts +25 -0
  36. package/dist/types/app/components/chat/chat-bubbles/BubbleVideo.vue.d.ts.map +1 -0
  37. package/dist/types/app/components/chat/chat-bubbles/FileDisplay.vue.d.ts +12 -0
  38. package/dist/types/app/components/chat/chat-bubbles/FileDisplay.vue.d.ts.map +1 -0
  39. package/dist/types/app/components/chat/chat-bubbles/ImageGroupDisplay.vue.d.ts +12 -0
  40. package/dist/types/app/components/chat/chat-bubbles/ImageGroupDisplay.vue.d.ts.map +1 -0
  41. package/dist/types/app/components/chat/chat-bubbles/VoiceDisplay.vue.d.ts +12 -0
  42. package/dist/types/app/components/chat/chat-bubbles/VoiceDisplay.vue.d.ts.map +1 -0
  43. package/dist/types/app/components/chat/chat-input/AttachementFileDisplay.vue.d.ts +12 -0
  44. package/dist/types/app/components/chat/chat-input/AttachementFileDisplay.vue.d.ts.map +1 -0
  45. package/dist/types/app/components/chat/chat-input/InputAttachement.vue.d.ts +15 -0
  46. package/dist/types/app/components/chat/chat-input/InputAttachement.vue.d.ts.map +1 -0
  47. package/dist/types/app/components/chat/chat-input/PermissionPopup.vue.d.ts +16 -0
  48. package/dist/types/app/components/chat/chat-input/PermissionPopup.vue.d.ts.map +1 -0
  49. package/dist/types/app/components/chat/chat-input/VideoRecordDisplay.vue.d.ts +26 -0
  50. package/dist/types/app/components/chat/chat-input/VideoRecordDisplay.vue.d.ts.map +1 -0
  51. package/dist/types/app/components/chat/contact/ChatContactDisplay.vue.d.ts +8 -0
  52. package/dist/types/app/components/chat/contact/ChatContactDisplay.vue.d.ts.map +1 -0
  53. package/dist/types/app/components/chat/contact/ChatList.vue.d.ts +5 -0
  54. package/dist/types/app/components/chat/contact/ChatList.vue.d.ts.map +1 -0
  55. package/dist/types/app/components/chat/contact/ChatListSearch.vue.d.ts +12 -0
  56. package/dist/types/app/components/chat/contact/ChatListSearch.vue.d.ts.map +1 -0
  57. package/dist/types/app/components/chat/contact/ContactAvatar.vue.d.ts +10 -0
  58. package/dist/types/app/components/chat/contact/ContactAvatar.vue.d.ts.map +1 -0
  59. package/dist/types/app/components/chat/profile/FileDisplay.vue.d.ts +9 -0
  60. package/dist/types/app/components/chat/profile/FileDisplay.vue.d.ts.map +1 -0
  61. package/dist/types/app/components/general/FileFormatDisplay.vue.d.ts +16 -0
  62. package/dist/types/app/components/general/FileFormatDisplay.vue.d.ts.map +1 -0
  63. package/dist/types/app/components/general/LoadingStatus.vue.d.ts +16 -0
  64. package/dist/types/app/components/general/LoadingStatus.vue.d.ts.map +1 -0
  65. package/dist/types/app/components/general/NoDataDisplay.vue.d.ts +7 -0
  66. package/dist/types/app/components/general/NoDataDisplay.vue.d.ts.map +1 -0
  67. package/dist/types/app/components/general/SafeEmojiText.vue.d.ts +10 -0
  68. package/dist/types/app/components/general/SafeEmojiText.vue.d.ts.map +1 -0
  69. package/dist/types/app/components/global/BButton.vue.d.ts +74 -0
  70. package/dist/types/app/components/global/BButton.vue.d.ts.map +1 -0
  71. package/dist/types/app/components/global/BCarousel.vue.d.ts +47 -0
  72. package/dist/types/app/components/global/BCarousel.vue.d.ts.map +1 -0
  73. package/dist/types/app/components/global/BCheckBox.vue.d.ts +30 -0
  74. package/dist/types/app/components/global/BCheckBox.vue.d.ts.map +1 -0
  75. package/dist/types/app/components/global/BEmojiPicker.vue.d.ts +7 -0
  76. package/dist/types/app/components/global/BEmojiPicker.vue.d.ts.map +1 -0
  77. package/dist/types/app/components/global/BIcon.vue.d.ts +11 -0
  78. package/dist/types/app/components/global/BIcon.vue.d.ts.map +1 -0
  79. package/dist/types/app/components/global/BImage.vue.d.ts +51 -0
  80. package/dist/types/app/components/global/BImage.vue.d.ts.map +1 -0
  81. package/dist/types/app/components/global/BInput.vue.d.ts +65 -0
  82. package/dist/types/app/components/global/BInput.vue.d.ts.map +1 -0
  83. package/dist/types/app/components/global/BLabel.vue.d.ts +18 -0
  84. package/dist/types/app/components/global/BLabel.vue.d.ts.map +1 -0
  85. package/dist/types/app/components/global/BMenu.vue.d.ts +54 -0
  86. package/dist/types/app/components/global/BMenu.vue.d.ts.map +1 -0
  87. package/dist/types/app/components/global/BModal.vue.d.ts +24 -0
  88. package/dist/types/app/components/global/BModal.vue.d.ts.map +1 -0
  89. package/dist/types/app/components/global/BPopup.vue.d.ts +42 -0
  90. package/dist/types/app/components/global/BPopup.vue.d.ts.map +1 -0
  91. package/dist/types/app/components/global/BSelect.vue.d.ts +43 -0
  92. package/dist/types/app/components/global/BSelect.vue.d.ts.map +1 -0
  93. package/dist/types/app/components/global/BTab.vue.d.ts +15 -0
  94. package/dist/types/app/components/global/BTab.vue.d.ts.map +1 -0
  95. package/dist/types/app/components/global/BToast.vue.d.ts +7 -0
  96. package/dist/types/app/components/global/BToast.vue.d.ts.map +1 -0
  97. package/dist/types/app/components/global/BVirtualVerticalList.vue.d.ts +30 -0
  98. package/dist/types/app/components/global/BVirtualVerticalList.vue.d.ts.map +1 -0
  99. package/dist/types/{composables → app/composables}/chat/useChatRecording.d.ts +4 -4
  100. package/dist/types/app/composables/chat/useChatRecording.d.ts.map +1 -0
  101. package/dist/types/app/composables/useAppPermissions.d.ts.map +1 -0
  102. package/dist/types/{composables → app/composables}/useAppToast.d.ts +2 -1
  103. package/dist/types/app/composables/useAppToast.d.ts.map +1 -0
  104. package/dist/types/app/composables/useClickOutside.d.ts.map +1 -0
  105. package/dist/types/{composables → app/composables}/useDate.d.ts +1 -1
  106. package/dist/types/app/composables/useDate.d.ts.map +1 -0
  107. package/dist/types/app/composables/useDevice.d.ts.map +1 -0
  108. package/dist/types/app/composables/useLocalI18n.d.ts +2 -0
  109. package/dist/types/app/composables/useLocalI18n.d.ts.map +1 -0
  110. package/dist/types/app/composables/useLocale.d.ts +12 -0
  111. package/dist/types/app/composables/useLocale.d.ts.map +1 -0
  112. package/dist/types/app/composables/useTheme.d.ts +4 -0
  113. package/dist/types/app/composables/useTheme.d.ts.map +1 -0
  114. package/dist/types/{composables → app/composables}/useValidation.d.ts +1 -1
  115. package/dist/types/app/composables/useValidation.d.ts.map +1 -0
  116. package/dist/types/app/composables/useWindowSize.d.ts +5 -0
  117. package/dist/types/app/composables/useWindowSize.d.ts.map +1 -0
  118. package/dist/types/app/directives/filePicker.d.ts.map +1 -0
  119. package/dist/types/app/directives/imagePicker.d.ts.map +1 -0
  120. package/dist/types/app/directives/loading.d.ts.map +1 -0
  121. package/dist/types/app/index.d.ts +24 -0
  122. package/dist/types/app/index.d.ts.map +1 -0
  123. package/dist/types/{stores → app/stores}/callStore.d.ts +487 -102
  124. package/dist/types/app/stores/callStore.d.ts.map +1 -0
  125. package/dist/types/app/stores/chatStore.d.ts +983 -0
  126. package/dist/types/app/stores/chatStore.d.ts.map +1 -0
  127. package/dist/types/app/stores/messageStores.d.ts +2248 -0
  128. package/dist/types/app/stores/messageStores.d.ts.map +1 -0
  129. package/dist/types/app/types/address.d.ts.map +1 -0
  130. package/dist/types/{types → app/types}/calendar.d.ts +1 -2
  131. package/dist/types/app/types/calendar.d.ts.map +1 -0
  132. package/dist/types/{types → app/types}/call.d.ts +1 -0
  133. package/dist/types/app/types/call.d.ts.map +1 -0
  134. package/dist/types/{types → app/types}/chat.d.ts +7 -26
  135. package/dist/types/app/types/chat.d.ts.map +1 -0
  136. package/dist/types/app/types/components/chat-input.d.ts.map +1 -0
  137. package/dist/types/app/types/components/input.d.ts.map +1 -0
  138. package/dist/types/app/types/components/menu-options.d.ts.map +1 -0
  139. package/dist/types/app/types/components/menu.d.ts.map +1 -0
  140. package/dist/types/app/types/components/modal.d.ts.map +1 -0
  141. package/dist/types/app/types/components/popup.d.ts.map +1 -0
  142. package/dist/types/app/types/components/select.d.ts.map +1 -0
  143. package/dist/types/app/types/components/toast.d.ts.map +1 -0
  144. package/dist/types/app/types/theme.d.ts +11 -0
  145. package/dist/types/app/types/theme.d.ts.map +1 -0
  146. package/dist/types/app/utils/emojiParser.d.ts.map +1 -0
  147. package/dist/types/app/utils/format.d.ts.map +1 -0
  148. package/dist/types/i18n/locales/index.d.ts +2603 -0
  149. package/dist/types/i18n/locales/index.d.ts.map +1 -0
  150. package/dist/types/index.d.ts +2 -10
  151. package/package.json +7 -14
  152. package/dist/index.cjs.map +0 -1
  153. package/dist/index.mjs.map +0 -1
  154. package/dist/style.css +0 -1
  155. package/dist/types/adapter/HostAdapter.d.ts +0 -13
  156. package/dist/types/adapter/HostAdapter.d.ts.map +0 -1
  157. package/dist/types/adapter/PushPort.d.ts +0 -10
  158. package/dist/types/adapter/PushPort.d.ts.map +0 -1
  159. package/dist/types/adapter/index.d.ts +0 -7
  160. package/dist/types/adapter/index.d.ts.map +0 -1
  161. package/dist/types/adapter/mock/MockCallAdapter.d.ts +0 -14
  162. package/dist/types/adapter/mock/MockCallAdapter.d.ts.map +0 -1
  163. package/dist/types/adapter/mock/MockChatActionAdapter.d.ts +0 -9
  164. package/dist/types/adapter/mock/MockChatActionAdapter.d.ts.map +0 -1
  165. package/dist/types/adapter/mock/MockChatAdapter.d.ts +0 -7
  166. package/dist/types/adapter/mock/MockChatAdapter.d.ts.map +0 -1
  167. package/dist/types/adapter/mock/MockMedicationAdapter.d.ts +0 -7
  168. package/dist/types/adapter/mock/MockMedicationAdapter.d.ts.map +0 -1
  169. package/dist/types/adapter/mock/MockServiceAdapter.d.ts +0 -6
  170. package/dist/types/adapter/mock/MockServiceAdapter.d.ts.map +0 -1
  171. package/dist/types/adapter/mock/createMockAdapter.d.ts +0 -13
  172. package/dist/types/adapter/mock/createMockAdapter.d.ts.map +0 -1
  173. package/dist/types/adapter/mock/index.d.ts +0 -12
  174. package/dist/types/adapter/mock/index.d.ts.map +0 -1
  175. package/dist/types/adapter/ports/CallAdapter.d.ts +0 -36
  176. package/dist/types/adapter/ports/CallAdapter.d.ts.map +0 -1
  177. package/dist/types/adapter/ports/ChatActionAdapter.d.ts +0 -17
  178. package/dist/types/adapter/ports/ChatActionAdapter.d.ts.map +0 -1
  179. package/dist/types/adapter/ports/ChatAdapter.d.ts +0 -22
  180. package/dist/types/adapter/ports/ChatAdapter.d.ts.map +0 -1
  181. package/dist/types/adapter/ports/MedicationAdapter.d.ts +0 -6
  182. package/dist/types/adapter/ports/MedicationAdapter.d.ts.map +0 -1
  183. package/dist/types/adapter/ports/ServiceAdapter.d.ts +0 -16
  184. package/dist/types/adapter/ports/ServiceAdapter.d.ts.map +0 -1
  185. package/dist/types/components/ChatPage.vue.d.ts +0 -8
  186. package/dist/types/components/ChatPage.vue.d.ts.map +0 -1
  187. package/dist/types/components/call/CallBoard.vue.d.ts +0 -154
  188. package/dist/types/components/call/CallBoard.vue.d.ts.map +0 -1
  189. package/dist/types/components/call/CallMemberDisplay.vue.d.ts +0 -57
  190. package/dist/types/components/call/CallMemberDisplay.vue.d.ts.map +0 -1
  191. package/dist/types/components/call/CallPageOverlay.vue.d.ts +0 -1365
  192. package/dist/types/components/call/CallPageOverlay.vue.d.ts.map +0 -1
  193. package/dist/types/components/call/paint-board/BoardColorPicker.vue.d.ts +0 -41
  194. package/dist/types/components/call/paint-board/BoardColorPicker.vue.d.ts.map +0 -1
  195. package/dist/types/components/call/paint-board/BrushSizeSlider.vue.d.ts +0 -48
  196. package/dist/types/components/call/paint-board/BrushSizeSlider.vue.d.ts.map +0 -1
  197. package/dist/types/components/call/paint-board/CallPaintBoard.vue.d.ts +0 -127
  198. package/dist/types/components/call/paint-board/CallPaintBoard.vue.d.ts.map +0 -1
  199. package/dist/types/components/chat/ChatBubble.vue.d.ts +0 -12236
  200. package/dist/types/components/chat/ChatBubble.vue.d.ts.map +0 -1
  201. package/dist/types/components/chat/ChatInput.vue.d.ts +0 -2477
  202. package/dist/types/components/chat/ChatInput.vue.d.ts.map +0 -1
  203. package/dist/types/components/chat/ChatMessages.vue.d.ts +0 -13873
  204. package/dist/types/components/chat/ChatMessages.vue.d.ts.map +0 -1
  205. package/dist/types/components/chat/ChatPageBar.vue.d.ts +0 -1204
  206. package/dist/types/components/chat/ChatPageBar.vue.d.ts.map +0 -1
  207. package/dist/types/components/chat/ChatProfileOverview.vue.d.ts +0 -327
  208. package/dist/types/components/chat/ChatProfileOverview.vue.d.ts.map +0 -1
  209. package/dist/types/components/chat/ChatView.vue.d.ts +0 -4
  210. package/dist/types/components/chat/ChatView.vue.d.ts.map +0 -1
  211. package/dist/types/components/chat/PatientReferral.vue.d.ts +0 -33
  212. package/dist/types/components/chat/PatientReferral.vue.d.ts.map +0 -1
  213. package/dist/types/components/chat/chat-bubbles/BubbleOptions.vue.d.ts +0 -53
  214. package/dist/types/components/chat/chat-bubbles/BubbleOptions.vue.d.ts.map +0 -1
  215. package/dist/types/components/chat/chat-bubbles/BubbleVideo.vue.d.ts +0 -103
  216. package/dist/types/components/chat/chat-bubbles/BubbleVideo.vue.d.ts.map +0 -1
  217. package/dist/types/components/chat/chat-bubbles/FileDisplay.vue.d.ts +0 -170
  218. package/dist/types/components/chat/chat-bubbles/FileDisplay.vue.d.ts.map +0 -1
  219. package/dist/types/components/chat/chat-bubbles/ImageGroupDisplay.vue.d.ts +0 -74
  220. package/dist/types/components/chat/chat-bubbles/ImageGroupDisplay.vue.d.ts.map +0 -1
  221. package/dist/types/components/chat/chat-bubbles/RequestCard.vue.d.ts +0 -11449
  222. package/dist/types/components/chat/chat-bubbles/RequestCard.vue.d.ts.map +0 -1
  223. package/dist/types/components/chat/chat-bubbles/VoiceDisplay.vue.d.ts +0 -107
  224. package/dist/types/components/chat/chat-bubbles/VoiceDisplay.vue.d.ts.map +0 -1
  225. package/dist/types/components/chat/chat-bubbles/request-card/ProviderDisplay.vue.d.ts +0 -56
  226. package/dist/types/components/chat/chat-bubbles/request-card/ProviderDisplay.vue.d.ts.map +0 -1
  227. package/dist/types/components/chat/chat-input/AttachementFileDisplay.vue.d.ts +0 -28
  228. package/dist/types/components/chat/chat-input/AttachementFileDisplay.vue.d.ts.map +0 -1
  229. package/dist/types/components/chat/chat-input/InputAttachement.vue.d.ts +0 -72
  230. package/dist/types/components/chat/chat-input/InputAttachement.vue.d.ts.map +0 -1
  231. package/dist/types/components/chat/chat-input/PermissionPopup.vue.d.ts +0 -15
  232. package/dist/types/components/chat/chat-input/PermissionPopup.vue.d.ts.map +0 -1
  233. package/dist/types/components/chat/chat-input/VideoRecordDisplay.vue.d.ts +0 -149
  234. package/dist/types/components/chat/chat-input/VideoRecordDisplay.vue.d.ts.map +0 -1
  235. package/dist/types/components/chat/contact/ChatContactDisplay.vue.d.ts +0 -85
  236. package/dist/types/components/chat/contact/ChatContactDisplay.vue.d.ts.map +0 -1
  237. package/dist/types/components/chat/contact/ChatList.vue.d.ts +0 -3111
  238. package/dist/types/components/chat/contact/ChatList.vue.d.ts.map +0 -1
  239. package/dist/types/components/chat/contact/ChatListSearch.vue.d.ts +0 -24
  240. package/dist/types/components/chat/contact/ChatListSearch.vue.d.ts.map +0 -1
  241. package/dist/types/components/chat/contact/ContactAvatar.vue.d.ts +0 -28
  242. package/dist/types/components/chat/contact/ContactAvatar.vue.d.ts.map +0 -1
  243. package/dist/types/components/chat/medic-features/MedicDisplay.vue.d.ts +0 -61
  244. package/dist/types/components/chat/medic-features/MedicDisplay.vue.d.ts.map +0 -1
  245. package/dist/types/components/chat/medic-features/MedicSelector.vue.d.ts +0 -1113
  246. package/dist/types/components/chat/medic-features/MedicSelector.vue.d.ts.map +0 -1
  247. package/dist/types/components/chat/medic-features/MedicSelectorContent.vue.d.ts +0 -1060
  248. package/dist/types/components/chat/medic-features/MedicSelectorContent.vue.d.ts.map +0 -1
  249. package/dist/types/components/chat/medic-features/PrescribtionDisplay.vue.d.ts +0 -1431
  250. package/dist/types/components/chat/medic-features/PrescribtionDisplay.vue.d.ts.map +0 -1
  251. package/dist/types/components/chat/profile/FileDisplay.vue.d.ts +0 -28
  252. package/dist/types/components/chat/profile/FileDisplay.vue.d.ts.map +0 -1
  253. package/dist/types/components/general/FileFormatDisplay.vue.d.ts +0 -60
  254. package/dist/types/components/general/FileFormatDisplay.vue.d.ts.map +0 -1
  255. package/dist/types/components/general/LoadingStatus.vue.d.ts +0 -59
  256. package/dist/types/components/general/LoadingStatus.vue.d.ts.map +0 -1
  257. package/dist/types/components/general/NoDataDisplay.vue.d.ts +0 -24
  258. package/dist/types/components/general/NoDataDisplay.vue.d.ts.map +0 -1
  259. package/dist/types/components/general/SafeEmojiText.vue.d.ts +0 -24
  260. package/dist/types/components/general/SafeEmojiText.vue.d.ts.map +0 -1
  261. package/dist/types/components/global/BCarousel.vue.d.ts +0 -48
  262. package/dist/types/components/global/BCarousel.vue.d.ts.map +0 -1
  263. package/dist/types/composables/chat/useChatRecording.d.ts.map +0 -1
  264. package/dist/types/composables/useAppPermissions.d.ts.map +0 -1
  265. package/dist/types/composables/useAppToast.d.ts.map +0 -1
  266. package/dist/types/composables/useClickOutside.d.ts.map +0 -1
  267. package/dist/types/composables/useDate.d.ts.map +0 -1
  268. package/dist/types/composables/useDevice.d.ts.map +0 -1
  269. package/dist/types/composables/useLocale.d.ts +0 -12
  270. package/dist/types/composables/useLocale.d.ts.map +0 -1
  271. package/dist/types/composables/useTheme.d.ts +0 -4
  272. package/dist/types/composables/useTheme.d.ts.map +0 -1
  273. package/dist/types/composables/useValidation.d.ts.map +0 -1
  274. package/dist/types/composables/useWindowSize.d.ts +0 -5
  275. package/dist/types/composables/useWindowSize.d.ts.map +0 -1
  276. package/dist/types/directives/filePicker.d.ts.map +0 -1
  277. package/dist/types/directives/imagePicker.d.ts.map +0 -1
  278. package/dist/types/directives/loading.d.ts.map +0 -1
  279. package/dist/types/index.d.ts.map +0 -1
  280. package/dist/types/install.d.ts +0 -20
  281. package/dist/types/install.d.ts.map +0 -1
  282. package/dist/types/mock/chat.seed.d.ts +0 -20
  283. package/dist/types/mock/chat.seed.d.ts.map +0 -1
  284. package/dist/types/mock/helpers.d.ts +0 -3
  285. package/dist/types/mock/helpers.d.ts.map +0 -1
  286. package/dist/types/mock/index.d.ts +0 -5
  287. package/dist/types/mock/index.d.ts.map +0 -1
  288. package/dist/types/mock/medication.seed.d.ts +0 -4
  289. package/dist/types/mock/medication.seed.d.ts.map +0 -1
  290. package/dist/types/mock/service.seed.d.ts +0 -13
  291. package/dist/types/mock/service.seed.d.ts.map +0 -1
  292. package/dist/types/nuxt-shims.d.ts +0 -43
  293. package/dist/types/nuxt-shims.d.ts.map +0 -1
  294. package/dist/types/prime-preset.d.ts +0 -72
  295. package/dist/types/prime-preset.d.ts.map +0 -1
  296. package/dist/types/stores/callStore.d.ts.map +0 -1
  297. package/dist/types/stores/chatActionStore.d.ts +0 -11303
  298. package/dist/types/stores/chatActionStore.d.ts.map +0 -1
  299. package/dist/types/stores/chatStore.d.ts +0 -2966
  300. package/dist/types/stores/chatStore.d.ts.map +0 -1
  301. package/dist/types/stores/createStores.d.ts +0 -19290
  302. package/dist/types/stores/createStores.d.ts.map +0 -1
  303. package/dist/types/stores/medicationsStore.d.ts +0 -3542
  304. package/dist/types/stores/medicationsStore.d.ts.map +0 -1
  305. package/dist/types/stores/serviceStore.d.ts +0 -953
  306. package/dist/types/stores/serviceStore.d.ts.map +0 -1
  307. package/dist/types/themes/factory.d.ts +0 -4
  308. package/dist/types/themes/factory.d.ts.map +0 -1
  309. package/dist/types/types/address.d.ts.map +0 -1
  310. package/dist/types/types/calendar.d.ts.map +0 -1
  311. package/dist/types/types/call.d.ts.map +0 -1
  312. package/dist/types/types/chat.d.ts.map +0 -1
  313. package/dist/types/types/clinic.d.ts +0 -7
  314. package/dist/types/types/clinic.d.ts.map +0 -1
  315. package/dist/types/types/components/chat-input.d.ts.map +0 -1
  316. package/dist/types/types/components/input.d.ts.map +0 -1
  317. package/dist/types/types/components/menu-options.d.ts.map +0 -1
  318. package/dist/types/types/components/menu.d.ts.map +0 -1
  319. package/dist/types/types/components/modal.d.ts.map +0 -1
  320. package/dist/types/types/components/nav-item.d.ts +0 -11
  321. package/dist/types/types/components/nav-item.d.ts.map +0 -1
  322. package/dist/types/types/components/nav-sub-item.d.ts +0 -9
  323. package/dist/types/types/components/nav-sub-item.d.ts.map +0 -1
  324. package/dist/types/types/components/popup.d.ts.map +0 -1
  325. package/dist/types/types/components/select.d.ts.map +0 -1
  326. package/dist/types/types/components/toast.d.ts.map +0 -1
  327. package/dist/types/types/env/runtimeConfig.d.ts +0 -22
  328. package/dist/types/types/invoice.d.ts +0 -8
  329. package/dist/types/types/invoice.d.ts.map +0 -1
  330. package/dist/types/types/medic.d.ts +0 -6
  331. package/dist/types/types/medic.d.ts.map +0 -1
  332. package/dist/types/types/medication.d.ts +0 -25
  333. package/dist/types/types/medication.d.ts.map +0 -1
  334. package/dist/types/types/notification.d.ts +0 -10
  335. package/dist/types/types/notification.d.ts.map +0 -1
  336. package/dist/types/types/service.d.ts +0 -25
  337. package/dist/types/types/service.d.ts.map +0 -1
  338. package/dist/types/types/story.d.ts +0 -12
  339. package/dist/types/types/story.d.ts.map +0 -1
  340. package/dist/types/types/theme.d.ts +0 -26
  341. package/dist/types/types/theme.d.ts.map +0 -1
  342. package/dist/types/utils/emojiParser.d.ts.map +0 -1
  343. package/dist/types/utils/format.d.ts.map +0 -1
  344. /package/dist/types/{composables → app/composables}/useAppPermissions.d.ts +0 -0
  345. /package/dist/types/{composables → app/composables}/useClickOutside.d.ts +0 -0
  346. /package/dist/types/{composables → app/composables}/useDevice.d.ts +0 -0
  347. /package/dist/types/{directives → app/directives}/filePicker.d.ts +0 -0
  348. /package/dist/types/{directives → app/directives}/imagePicker.d.ts +0 -0
  349. /package/dist/types/{directives → app/directives}/loading.d.ts +0 -0
  350. /package/dist/types/{types → app/types}/address.d.ts +0 -0
  351. /package/dist/types/{types → app/types}/components/chat-input.d.ts +0 -0
  352. /package/dist/types/{types → app/types}/components/input.d.ts +0 -0
  353. /package/dist/types/{types → app/types}/components/menu-options.d.ts +0 -0
  354. /package/dist/types/{types → app/types}/components/menu.d.ts +0 -0
  355. /package/dist/types/{types → app/types}/components/modal.d.ts +0 -0
  356. /package/dist/types/{types → app/types}/components/popup.d.ts +0 -0
  357. /package/dist/types/{types → app/types}/components/select.d.ts +0 -0
  358. /package/dist/types/{types → app/types}/components/toast.d.ts +0 -0
  359. /package/dist/types/{utils → app/utils}/emojiParser.d.ts +0 -0
  360. /package/dist/types/{utils → app/utils}/format.d.ts +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs","sources":["../app/composables/useClickOutside.ts","../app/composables/useDevice.ts","../app/utils/format.ts","../app/composables/useDate.ts","../app/composables/useAppToast.ts","../app/composables/useAppPermissions.ts","../app/assets/flags/us.svg","../app/assets/flags/ir.svg","../app/assets/flags/ae.svg","../app/composables/useLocale.ts","../app/stores/chatActionStore.ts","../app/stores/callStore.ts","../app/stores/serviceStore.ts","../app/nuxt-shims.ts","../app/stores/chatStore.ts","../app/components/general/NoDataDisplay.vue","../app/assets/lib-images/chat/no-chat-selected.webp","../app/components/chat/contact/ContactAvatar.vue","../app/utils/emojiParser.ts","../app/components/general/SafeEmojiText.vue","../app/components/chat/contact/ChatContactDisplay.vue","../app/components/chat/contact/ChatListSearch.vue","../app/assets/lib-images/dashboard/no-contacts.webp","../app/components/chat/contact/ChatList.vue","../app/components/chat/medic-features/MedicDisplay.vue","../app/assets/lib-images/chat/no-provider-found.webp","../app/components/chat/medic-features/MedicSelectorContent.vue","../app/components/chat/medic-features/MedicSelector.vue","../app/components/chat/ChatPageBar.vue","../app/components/chat/chat-input/AttachementFileDisplay.vue","../app/components/chat/chat-input/InputAttachement.vue","../app/composables/chat/useChatRecording.ts","../app/components/chat/chat-bubbles/BubbleVideo.vue","../app/components/chat/chat-input/VideoRecordDisplay.vue","../app/components/chat/ChatInput.vue","../app/assets/lib-images/chat/profile-background.webp","../app/components/chat/profile/FileDisplay.vue","../app/components/chat/ChatProfileOverview.vue","../app/components/general/LoadingStatus.vue","../app/components/general/FileFormatDisplay.vue","../app/components/chat/chat-bubbles/FileDisplay.vue","../app/components/chat/chat-bubbles/VoiceDisplay.vue","../app/components/global/BCarousel.vue","../app/components/chat/chat-bubbles/ImageGroupDisplay.vue","../app/components/chat/chat-bubbles/BubbleOptions.vue","../app/components/chat/chat-bubbles/request-card/ProviderDisplay.vue","../app/components/chat/chat-bubbles/RequestCard.vue","../app/components/chat/ChatBubble.vue","../app/assets/lib-images/chat/no-messages.webp","../app/components/chat/ChatMessages.vue","../app/components/chat/PatientReferral.vue","../app/components/call/CallMemberDisplay.vue","../app/components/call/paint-board/BrushSizeSlider.vue","../app/components/call/paint-board/BoardColorPicker.vue","../app/components/call/paint-board/CallPaintBoard.vue","../app/components/call/CallBoard.vue","../app/components/call/CallPageOverlay.vue","../app/components/chat/chat-input/PermissionPopup.vue","../app/components/chat/medic-features/PrescribtionDisplay.vue","../app/components/chat/ChatView.vue","../app/components/ChatPage.vue","../app/components/global/BButton.vue","../app/components/global/BCheckBox.vue","../app/components/global/BEmojiPicker.vue","../app/components/global/BIcon.vue","../app/components/global/BImage.vue","../app/components/global/BInput.vue","../app/components/global/BLabel.vue","../app/components/global/BMenu.vue","../app/components/global/BModal.vue","../app/composables/useWindowSize.ts","../app/components/global/BPopup.vue","../app/components/global/BSelect.vue","../app/components/global/BTab.vue","../app/components/global/BToast.vue","../app/components/global/BVirtualVerticalList.vue","../app/stores/createStores.ts","../app/mock/helpers.ts","../app/mock/chat.seed.ts","../app/mock/service.seed.ts","../app/mock/medication.seed.ts","../app/adapter/mock/MockChatAdapter.ts","../app/adapter/mock/MockChatActionAdapter.ts","../app/adapter/mock/MockServiceAdapter.ts","../app/adapter/mock/MockMedicationAdapter.ts","../app/adapter/mock/MockCallAdapter.ts","../app/adapter/mock/createMockAdapter.ts","../app/install.ts","../app/adapter/PushPort.ts"],"sourcesContent":["import { onMounted, onUnmounted,type Ref } from 'vue'\n\nexport const useClickOutside = (elRef: Ref<HTMLElement | null>, callback: () => void) => {\n const listener = (event: MouseEvent) => {\n if (!elRef.value || elRef.value.contains(event.target as Node)) {\n return\n }\n callback()\n }\n\n onMounted(() => {\n document.addEventListener('click', listener)\n })\n\n onUnmounted(() => {\n document.removeEventListener('click', listener)\n })\n}","import { reactive, onMounted, readonly } from 'vue';\n\nexport interface DevicePlatform {\n isTauri: boolean;\n isTauriAndroid: boolean;\n isTauriiOS: boolean;\n isTauriDesktop: boolean;\n isPWAInstalled: boolean; // Installed standalone or added to homescreen\n isWeb: boolean; // Running in a standard browser tab\n}\n\nexport interface DeviceHardware {\n hasMicrophone: boolean;\n hasCamera: boolean;\n isChecking: boolean;\n error: string | null;\n}\n\nexport function useDevice() {\n // 1. Platform Detection State\n const platform = reactive<DevicePlatform>({\n isTauri: false,\n isTauriAndroid: false,\n isTauriiOS: false,\n isTauriDesktop: false,\n isPWAInstalled: false,\n isWeb: true,\n });\n\n // 2. Hardware Capabilities State\n const hardware = reactive<DeviceHardware>({\n hasMicrophone: false,\n hasCamera: false,\n isChecking: true,\n error: null,\n });\n\n // 3. Initialize Platform (Synchronous)\n const detectPlatform = () => {\n if (typeof window === 'undefined') return; // SSR check\n\n const ua = navigator.userAgent;\n const isAndroid = /android/i.test(ua);\n const isIOS = /ipad|iphone|ipod/i.test(ua);\n\n // Check for Tauri (Tauri injects __TAURI__ or __TAURI_IPC__ into the window)\n const isTauriEnv = !!(window as any).__TAURI__ || !!(window as any).__TAURI_IPC__;\n \n // Check for PWA (Standalone mode or iOS homescreen)\n const isStandalone = window.matchMedia('(display-mode: standalone)').matches || \n !!(navigator as any).standalone;\n\n platform.isTauri = isTauriEnv;\n platform.isTauriAndroid = isTauriEnv && isAndroid;\n platform.isTauriiOS = isTauriEnv && isIOS;\n platform.isTauriDesktop = isTauriEnv && !isAndroid && !isIOS;\n \n platform.isPWAInstalled = !isTauriEnv && isStandalone;\n platform.isWeb = !isTauriEnv && !isStandalone;\n };\n\n // 4. Initialize Hardware (Asynchronous)\n const detectHardware = async () => {\n if (typeof window === 'undefined') {\n hardware.isChecking = false;\n return;\n }\n\n if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {\n hardware.error = 'MediaDevices API not supported on this browser/platform.';\n hardware.isChecking = false;\n return;\n }\n\n try {\n // enumerateDevices tells us what physical hardware is plugged in/available\n const devices = await navigator.mediaDevices.enumerateDevices();\n \n hardware.hasMicrophone = devices.some(device => device.kind === 'audioinput');\n hardware.hasCamera = devices.some(device => device.kind === 'videoinput');\n } catch (err: any) {\n console.error('Failed to enumerate devices:', err);\n hardware.error = err.message || 'Failed to detect hardware';\n } finally {\n hardware.isChecking = false;\n }\n };\n\n // Run detections on client-side mount\n onMounted(() => {\n detectPlatform();\n detectHardware();\n });\n\n return {\n platform: readonly(platform),\n hardware: readonly(hardware),\n // Expose methods if you need to re-trigger checks manually\n refreshHardwareCheck: detectHardware \n };\n}","/**\n * Formats a number with commas and localized digits based on the current locale.\n * Maps 'fa' to 'fa-IR' to ensure Persian digits (۰۱۲۳) are used.\n * @param value - The number or string to format\n * @param locale - The current i18n locale (e.g., 'fa' or 'en')\n */\nexport const formatCurrency = (value: number | string, locale?: string) => {\n // Convert string to number if needed, removing commas to prevent NaN\n const num =\n typeof value === \"string\" ? parseFloat(value.replace(/,/g, \"\")) : value;\n\n if (isNaN(num)) return value;\n\n // Map 'fa' to 'fa-IR' so Intl uses Persian digits instead of Western digits\n const targetLocale = locale === \"fa\" ? \"fa-IR\" : locale;\n\n return new Intl.NumberFormat(targetLocale).format(num);\n};\n\n/**\n * Converts digits to Persian digits without adding thousands separators.\n * Improved to handle strings with existing commas safely.\n * @param value - The number or string to convert\n */\nexport const toPersianNumbers = (value: number | string) => {\n // Use parseFloat and remove commas to avoid \"ناعدد\" (NaN)\n const num =\n typeof value === \"string\" ? parseFloat(value.replace(/,/g, \"\")) : value;\n\n if (isNaN(num)) return value;\n\n return new Intl.NumberFormat(\"fa-IR\", { useGrouping: false }).format(num);\n};\n\n/**\n * Replaces all English digits (0-9) in a string with Persian digits (۰-۹).\n * Preserves leading zeros and non-numeric characters.\n * @param value - The string or number containing digits to convert\n */\nexport const replaceDigitsWithPersian = (value: string | number): string => {\n if (value === null || value === undefined) return \"\";\n\n const persianDigits = [\"۰\", \"۱\", \"۲\", \"۳\", \"۴\", \"۵\", \"۶\", \"۷\", \"۸\", \"۹\"];\n\n return String(value).replace(/\\d/g, (digit) => {\n return persianDigits[parseInt(digit)];\n });\n};\n\n/**\n * جایگزینی تمام اعداد انگلیسی داخل یک رشته با اعداد فارسی بر اساس زبان\n * @param value - رشته یا عددی که باید تبدیل شود\n * @param locale - زبان فعلی (fa یا en)\n */\nexport const replaceDigitsByLocale = (\n value: string | number,\n locale: string = \"fa\",\n): string => {\n if (value === null || value === undefined) return \"\";\n\n const str = String(value);\n\n // اگر زبان فارسی نبود، همان رشته اصلی را برگردان\n if (locale !== \"fa\") return str;\n\n const persianDigits = [\"۰\", \"۱\", \"۲\", \"۳\", \"۴\", \"۵\", \"۶\", \"۷\", \"۸\", \"۹\"];\n\n // جایگزینی تمام رقم‌ها با استفاده از Regular Expression\n return str.replace(/\\d/g, (digit) => {\n return persianDigits[parseInt(digit)];\n });\n};\n\n/**\n * Formats a phone number into a readable standard.\n * Example: 9134168227 -> 913 416 8227\n * @param bytes - The raw string or number\n */\nexport const formatBytes = (bytes: number) => {\n if (bytes === 0) return \"0 KB\";\n const k = 1024;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(1)) + \" \" + sizes[i];\n};\n\n/**\n * Formats a phone number into a readable standard.\n * Example: 9134168227 -> 913 416 8227\n * @param phoneNumber - The raw string or number\n */\nexport const formatPhoneNumber = (\n identifier: string,\n dir: string = \"ltr\",\n): string => {\n if (!identifier) return \"\";\n\n const clean = identifier.replace(/\\D/g, \"\");\n\n if (clean.length === 11 && clean.startsWith(\"09\")) {\n const formatted = `${clean.slice(0, 4)} ${clean.slice(4, 7)} ${clean.slice(7)}`;\n\n return dir === \"rtl\" ? `\\u200E${formatted}` : formatted;\n }\n\n return clean;\n};\n\nexport const formatCountdown = (totalSeconds: number): string => {\n if (totalSeconds <= 0) return \"00 : 00\";\n\n const minutes = Math.floor(totalSeconds / 60);\n const seconds = totalSeconds % 60;\n\n const paddedMins = minutes.toString().padStart(2, \"0\");\n const paddedSecs = seconds.toString().padStart(2, \"0\");\n\n return `${paddedMins} : ${paddedSecs}`;\n};\n\n/**\n * Formats seconds into HH:MM:SS\n * @param totalSeconds - Total elapsed seconds\n */\nexport const formatDuration = (totalSeconds: number): string => {\n const hours = Math.floor(totalSeconds / 3600);\n const minutes = Math.floor((totalSeconds % 3600) / 60);\n const seconds = totalSeconds % 60;\n\n const padded = (val: number) => val.toString().padStart(2, \"0\");\n\n if (hours > 0) {\n return `${padded(hours)}:${padded(minutes)}:${padded(seconds)}`;\n }\n\n return `${padded(minutes)}:${padded(seconds)}`;\n};\n\n/**\n * Formats the start and end time of an event.\n * @param startTime - Start time in HH:mm format\n * @param duration - Duration in minutes\n * @param endDate - Optional end date object\n * @param locale - Current locale\n */\nexport const formatEventTimeRange = (\n startTime: string,\n duration?: number,\n endDate?: Date,\n locale: string = \"fa\",\n): string => {\n if (!startTime) return \"\";\n\n let result = startTime;\n\n if (duration) {\n const [hours, minutes] = startTime.split(\":\").map(Number);\n const date = new Date();\n date.setHours(hours, minutes, 0);\n date.setMinutes(date.getMinutes() + duration);\n\n const endH = String(date.getHours()).padStart(2, \"0\");\n const endM = String(date.getMinutes()).padStart(2, \"0\");\n result = `${startTime} - ${endH}:${endM}`;\n } else if (endDate) {\n const endH = String(endDate.getHours()).padStart(2, \"0\");\n const endM = String(endDate.getMinutes()).padStart(2, \"0\");\n result = `${startTime} - ${endH}:${endM}`;\n }\n\n return replaceDigitsByLocale(result, locale);\n};\n","import { useI18n, useLocale } from \"~/nuxt-shims\";\nimport type { CalendarEventPayload } from \"~/types/calendar\";\nimport { replaceDigitsByLocale } from \"~/utils/format\";\n\nexport interface DateFormatOptions {\n showWeekday?: boolean;\n useRelativeDay?: boolean;\n showTime?: boolean;\n monthFormat?: \"short\" | \"long\";\n}\n\nexport const useDate = () => {\n const { locale } = useI18n();\n\n const dict = {\n en: {\n today: \"Today\",\n yesterday: \"Yesterday\",\n ago: \"ago\",\n min: \"min\",\n hr: \"h\",\n day: \"d\",\n },\n fa: {\n today: \"امروز\",\n yesterday: \"دیروز\",\n ago: \"پیش\",\n min: \"دقیقه\",\n hr: \"ساعت\",\n day: \"روز\",\n },\n ar: {\n today: \"اليوم\",\n yesterday: \"أمس\",\n ago: \"مضت\",\n min: \"دقيقة\",\n hr: \"ساعة\",\n day: \"يوم\",\n },\n };\n\n // --- Internal Math Helpers ---\n\n /**\n * Gregorian (Miladi) to Jalali (Shamsi)\n */\n const g2j = (\n gy: number,\n gm: number,\n gd: number,\n ): [number, number, number] => {\n const g_d_m = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334];\n\n let jy = gy <= 1600 ? 0 : 979;\n gy -= gy <= 1600 ? 621 : 1600;\n\n let gy2 = gm > 2 ? gy + 1 : gy;\n let days =\n 365 * gy +\n Math.floor((gy2 + 3) / 4) -\n Math.floor((gy2 + 99) / 100) +\n Math.floor((gy2 + 399) / 400) -\n 80 +\n gd +\n g_d_m[gm - 1];\n\n jy += 33 * Math.floor(days / 12053);\n days %= 12053;\n jy += 4 * Math.floor(days / 1461);\n days %= 1461;\n jy += Math.floor((days - 1) / 365);\n if (days > 365) days = (days - 1) % 365;\n\n let jm =\n days < 186\n ? 1 + Math.floor(days / 31)\n : 7 + Math.floor((days - 186) / 30);\n let jd = 1 + (days < 186 ? days % 31 : (days - 186) % 30);\n\n return [jy, jm, jd];\n };\n\n /**\n * Jalali (Shamsi) to Gregorian (Miladi)\n */\n const j2g = (\n jy: number,\n jm: number,\n jd: number,\n ): [number, number, number] => {\n let gy = jy <= 979 ? 621 : 1600;\n jy -= jy <= 979 ? 0 : 979;\n\n let days =\n 365 * jy +\n Math.floor(jy / 33) * 8 +\n Math.floor(((jy % 33) + 3) / 4) +\n 78 +\n jd +\n (jm < 7 ? (jm - 1) * 31 : (jm - 7) * 30 + 186);\n\n gy += 400 * Math.floor(days / 146097);\n days %= 146097;\n\n if (days > 36524) {\n gy += 100 * Math.floor(--days / 36524);\n days %= 36524;\n if (days >= 365) days++;\n }\n\n gy += 4 * Math.floor(days / 1461);\n days %= 1461;\n gy += Math.floor((days - 1) / 365);\n if (days > 365) days = (days - 1) % 365;\n\n let gd = days + 1;\n let sal_a = [\n 0,\n 31,\n (gy % 4 == 0 && gy % 100 != 0) || gy % 400 == 0 ? 29 : 28,\n 31,\n 30,\n 31,\n 30,\n 31,\n 31,\n 30,\n 31,\n 30,\n 31,\n ];\n let gm;\n for (gm = 0; gm < 13; gm++) {\n let v = sal_a[gm];\n if (gd <= v) break;\n gd -= v;\n }\n return [gy, gm, gd];\n };\n\n // --- Formatting Helpers ---\n\n const getLang = (): \"en\" | \"fa\" | \"ar\" => {\n const current = locale.value as string;\n if (current.includes(\"fa\")) return \"fa\";\n if (current.includes(\"ar\")) return \"ar\";\n return \"en\";\n };\n\n const localizeDigits = (\n str: string | number,\n lang: \"en\" | \"fa\" | \"ar\",\n ): string => {\n if (lang === \"fa\")\n return String(str).replace(/\\d/g, (d) => \"۰۱۲۳۴۵۶۷۸۹\"[parseInt(d)]);\n if (lang === \"ar\")\n return String(str).replace(/\\d/g, (d) => \"٠١٢٣٤٥٦٧٨٩\"[parseInt(d)]);\n return String(str);\n };\n\n const parseDate = (dateInput: string | Date): Date => {\n return typeof dateInput === \"string\" ? new Date(dateInput) : dateInput;\n };\n\n const getJalaaliMonthName = (monthIndex: number): string => {\n const months = [\n \"فروردین\",\n \"اردیبهشت\",\n \"خرداد\",\n \"تیر\",\n \"مرداد\",\n \"شهریور\",\n \"مهر\",\n \"آبان\",\n \"آذر\",\n \"دی\",\n \"بهمن\",\n \"اسفند\",\n ];\n return months[monthIndex - 1] || \"\";\n };\n\n const getJalaaliDayOfWeekName = (date: Date): string => {\n const days = [\n \"یکشنبه\",\n \"دوشنبه\",\n \"سه‌شنبه\",\n \"چهارشنبه\",\n \"پنج‌شنبه\",\n \"جمعه\",\n \"شنبه\",\n ];\n return days[date.getDay()];\n };\n\n const formatTime = (dateInput: string | Date): string => {\n const date = parseDate(dateInput);\n const lang = getLang();\n const hours = date.getHours().toString().padStart(2, \"0\");\n const minutes = date.getMinutes().toString().padStart(2, \"0\");\n return localizeDigits(`${hours}:${minutes}`, lang);\n };\n\n // --- Main Exported Methods ---\n\n const formatDate = (\n dateInput: string | Date,\n options: DateFormatOptions = {},\n ): string => {\n const opts = {\n showWeekday: true,\n useRelativeDay: true,\n showTime: false,\n monthFormat: \"long\",\n ...options,\n };\n const date = parseDate(dateInput);\n const lang = getLang();\n const separator = lang === \"fa\" || lang === \"ar\" ? \"، \" : \", \";\n\n let prefix = \"\";\n const now = new Date();\n const yesterday = new Date();\n yesterday.setDate(now.getDate() - 1);\n\n const isToday = date.toDateString() === now.toDateString();\n const isYesterday = date.toDateString() === yesterday.toDateString();\n\n if (opts.useRelativeDay && isToday) prefix = dict[lang].today;\n else if (opts.useRelativeDay && isYesterday) prefix = dict[lang].yesterday;\n else if (opts.showWeekday) {\n prefix =\n lang === \"fa\"\n ? getJalaaliDayOfWeekName(date)\n : new Intl.DateTimeFormat(lang === \"ar\" ? \"ar-EG\" : \"en-US\", {\n weekday: \"long\",\n }).format(date);\n }\n\n let body = \"\";\n if (lang === \"fa\") {\n const [jy, jm, jd] = g2j(\n date.getFullYear(),\n date.getMonth() + 1,\n date.getDate(),\n );\n body = `${localizeDigits(jd, lang)} ${getJalaaliMonthName(jm)} ${localizeDigits(jy, lang)}`;\n } else {\n body = new Intl.DateTimeFormat(lang === \"ar\" ? \"ar-EG\" : \"en-US\", {\n day: \"numeric\",\n month: (opts.monthFormat ?? \"long\") as \"short\" | \"long\",\n year: \"numeric\",\n }).format(date);\n }\n\n let result = prefix ? `${prefix}${separator}${body}` : body;\n if (opts.showTime) result += ` - ${formatTime(date)}`;\n return result;\n };\n\n const formatNumericDate = (dateInput: string | Date): string => {\n const date = parseDate(dateInput);\n const lang = getLang();\n let y, m, d;\n if (lang === \"fa\") {\n const [jy, jm, jd] = g2j(\n date.getFullYear(),\n date.getMonth() + 1,\n date.getDate(),\n );\n [y, m, d] = [\n jy,\n String(jm).padStart(2, \"0\"),\n String(jd).padStart(2, \"0\"),\n ];\n } else {\n [y, m, d] = [\n date.getFullYear(),\n String(date.getMonth() + 1).padStart(2, \"0\"),\n String(date.getDate()).padStart(2, \"0\"),\n ];\n }\n return localizeDigits(`${y}/${m}/${d}`, lang);\n };\n\n const formatDateTime = (dateInput: string | Date): string => {\n // 1. Get direction from your locale composable\n const { dir } = useLocale();\n\n const date = parseDate(dateInput);\n const lang = getLang();\n let body = \"\";\n\n if (lang === \"fa\") {\n const [jy, jm, jd] = g2j(\n date.getFullYear(),\n date.getMonth() + 1,\n date.getDate(),\n );\n body = `${jd} ${getJalaaliMonthName(jm)} ${jy}`;\n } else {\n body = new Intl.DateTimeFormat(lang === \"ar\" ? \"ar-EG\" : \"en-US\", {\n day: \"numeric\",\n month: \"long\",\n year: \"numeric\",\n }).format(date);\n }\n\n const timeStr = `${date.getHours().toString().padStart(2, \"0\")}:${date.getMinutes().toString().padStart(2, \"0\")}`;\n\n // 2. Condition the return string based on direction\n const combinedStr =\n dir.value === \"rtl\"\n ? `${timeStr} ${body}` // Time + Date for RTL\n : `${body} ${timeStr}`; // Date + Time for LTR\n\n return localizeDigits(combinedStr, lang);\n };\n\n /**\n * Returns a numeric date string: YYYY/MM/DD\n * Example: ۱۴۰۵/۱/۱۲ or 2026/04/20\n */\n const getAbsoluteDate = (dateInput: string | Date): string => {\n const date = parseDate(dateInput);\n const lang = getLang();\n let result = \"\";\n\n if (lang === \"fa\") {\n const [jy, jm, jd] = g2j(\n date.getFullYear(),\n date.getMonth() + 1,\n date.getDate(),\n );\n result = `${jy}/${jm}/${jd}`;\n } else {\n const y = date.getFullYear();\n const m = (date.getMonth() + 1).toString().padStart(2, \"0\");\n const d = date.getDate().toString().padStart(2, \"0\");\n result = `${y}/${m}/${d}`;\n }\n\n return localizeDigits(result, lang);\n };\n\n /**\n * Returns numeric date and time: YYYY/MM/DD HH:mm\n * Example: ۱۴۰۵/۱/۱۲ ۰۹:۳۴\n */\n const getAbsoluteDateTime = (dateInput: string | Date): string => {\n const { dir } = useLocale();\n const lang = getLang();\n\n // 1. Get the formatted numeric date part\n const datePart = getAbsoluteDate(dateInput);\n\n // 2. Format the time part\n const date = parseDate(dateInput);\n const hours = date.getHours().toString().padStart(2, \"0\");\n const minutes = date.getMinutes().toString().padStart(2, \"0\");\n const timePart = `${hours}:${minutes}`;\n\n // 3. Place segments based on text direction\n const combined =\n dir.value === \"rtl\"\n ? `${timePart} ${datePart}` // Time first for RTL flow\n : `${datePart} ${timePart}`; // Date first for LTR flow\n\n return localizeDigits(combined, lang);\n };\n\n const formatRelativeDate = (dateInput: string | Date): string => {\n const date = parseDate(dateInput);\n const now = new Date();\n const lang = getLang();\n\n // Difference in seconds\n const diffInSeconds = Math.floor((now.getTime() - date.getTime()) / 1000);\n\n // 1. Relative Minutes (less than 1 hour)\n if (diffInSeconds < 3600 && diffInSeconds >= 0) {\n const mins = Math.max(Math.floor(diffInSeconds / 60), 1);\n return localizeDigits(\n `${mins} ${dict[lang].min} ${dict[lang].ago}`,\n lang,\n );\n }\n\n // 2. Relative Hours (less than 24 hours AND same calendar day)\n if (diffInSeconds < 86400 && date.toDateString() === now.toDateString()) {\n const hrs = Math.floor(diffInSeconds / 3600);\n return localizeDigits(`${hrs} ${dict[lang].hr} ${dict[lang].ago}`, lang);\n }\n\n // 3. Yesterday\n const yesterday = new Date();\n yesterday.setDate(now.getDate() - 1);\n if (date.toDateString() === yesterday.toDateString()) {\n return dict[lang].yesterday;\n }\n\n // 4. Absolute Date (Current Year vs Previous Year)\n let isCurrentYear = false;\n let y, m, d;\n\n if (lang === \"fa\") {\n const [nowJy] = g2j(now.getFullYear(), now.getMonth() + 1, now.getDate());\n const [jy, jm, jd] = g2j(\n date.getFullYear(),\n date.getMonth() + 1,\n date.getDate(),\n );\n\n isCurrentYear = jy === nowJy;\n [y, m, d] = [\n jy,\n String(jm).padStart(2, \"0\"),\n String(jd).padStart(2, \"0\"),\n ];\n } else {\n isCurrentYear = date.getFullYear() === now.getFullYear();\n [y, m, d] = [\n date.getFullYear(),\n String(date.getMonth() + 1).padStart(2, \"0\"),\n String(date.getDate()).padStart(2, \"0\"),\n ];\n }\n\n const result = isCurrentYear ? `${m}/${d}` : `${y}/${m}/${d}`;\n return localizeDigits(result, lang);\n };\n\n /**\n * Calculates the number of full years passed since the given date (e.g., age).\n * @param date - The starting date to calculate from.\n * @returns The number of full years passed.\n */\n const getYearsPassed = (date: Date): number => {\n const today = new Date();\n let years = today.getFullYear() - date.getFullYear();\n const monthDiff = today.getMonth() - date.getMonth();\n\n // Adjust if the anniversary hasn't occurred yet in the current year\n if (\n monthDiff < 0 ||\n (monthDiff === 0 && today.getDate() < date.getDate())\n ) {\n years--;\n }\n\n return years;\n };\n\n const formatDateShort = (dateInput: string | Date): string => {\n const date = parseDate(dateInput);\n const now = new Date();\n const lang = getLang();\n\n if (lang === \"fa\") {\n const [nowJy] = g2j(now.getFullYear(), now.getMonth() + 1, now.getDate());\n const [jy, jm, jd] = g2j(\n date.getFullYear(),\n date.getMonth() + 1,\n date.getDate(),\n );\n\n // Format: \"Day Month\"\n let result = `${jd} ${getJalaaliMonthName(jm)}`;\n\n // Append \" Year\" if it's not the current Jalaali year\n if (jy !== nowJy) {\n result += ` ${jy}`;\n }\n\n return localizeDigits(result, lang);\n } else {\n const isSameYear = date.getFullYear() === now.getFullYear();\n\n // Use Intl for standard locales\n return new Intl.DateTimeFormat(lang === \"ar\" ? \"ar-EG\" : \"en-US\", {\n day: \"numeric\",\n month: \"long\",\n year: isSameYear ? undefined : \"numeric\",\n }).format(date);\n }\n };\n\n const formatEventFullDateTime = (event: CalendarEventPayload) => {\n const date = new Date(event.date);\n\n // 1. Format the Date part (e.g., ۲۶ اردیبهشت ۱۴۰۵)\n const datePart = new Intl.DateTimeFormat(\n locale.value === \"fa\" ? \"fa-IR\" : \"en-US\",\n {\n day: \"numeric\",\n month: \"long\",\n year: \"numeric\",\n },\n ).format(date);\n\n // 2. Prepare Start Time\n const startTime = event.time;\n let timePart = startTime;\n\n // 3. Calculate and Add End Time if duration or endDate exists\n if (event.duration || event.endDate) {\n let endH: string = \"\";\n let endM: string = \"\";\n\n if (event.duration) {\n const [h, m] = startTime.split(\":\").map(Number);\n const endDateObj = new Date();\n endDateObj.setHours(h, m, 0);\n endDateObj.setMinutes(endDateObj.getMinutes() + event.duration);\n endH = String(endDateObj.getHours()).padStart(2, \"0\");\n endM = String(endDateObj.getMinutes()).padStart(2, \"0\");\n } else if (event.endDate) {\n const endObj = new Date(event.endDate);\n endH = String(endObj.getHours()).padStart(2, \"0\");\n endM = String(endObj.getMinutes()).padStart(2, \"0\");\n }\n\n const separator = locale.value === \"fa\" ? \" تا \" : \" to \";\n timePart += `${separator}${endH}:${endM}`;\n }\n\n // 4. Combine with localized labels\n const hourLabel = locale.value === \"fa\" ? \" ساعت \" : \" at \";\n const finalString = `${datePart}${hourLabel}${timePart}`;\n\n // Use your existing utility to ensure Persian digits if needed\n return replaceDigitsByLocale(finalString, locale.value);\n };\n\n return {\n getYearsPassed,\n parseDate,\n formatDate,\n formatNumericDate,\n getAbsoluteDateTime,\n getAbsoluteDate,\n formatDateShort,\n formatDateTime,\n formatTime,\n g2j,\n j2g,\n getRelativeTime: (d: any) => formatDate(d, { useRelativeDay: true }),\n formatRelativeDate,\n formatEventFullDateTime,\n };\n};\n","// app/composables/useToast.ts\nimport { useState } from \"~/nuxt-shims\";\nimport type { Toast } from \"~/types/components/toast\";\n\nexport const useAppToast = () => {\n // A reference to the toast component instance\n const toastRef = useState<Toast | null>(\"global-toast-ref\", () => null);\n\n /**\n * @param message The text to display\n * @param type 'success' | 'error' | 'warning' | 'info' (matching your DToast props)\n */\n const openToast = (\n message: string,\n type: 'success' | 'error' | 'warning' | 'info' = \"success\",\n ) => {\n if (toastRef.value) {\n toastRef.value.openToast(message, type);\n } else {\n console.warn(\"DToast component is not yet initialized in app.vue\");\n }\n };\n\n return {\n toastRef,\n openToast,\n };\n};\n","// composables/useAppPermissions.ts\nimport { ref } from \"vue\";\nimport { useEventBus } from \"@vueuse/core\";\nexport type PopupState =\n | \"permission\"\n | \"mic-error\"\n | \"cam-error\"\n | \"mic-permission\"\n | \"cam-permission\"\n | \"screen-share-error\"\n | \"screen-share-permission\";\n\ninterface PermissionRequest {\n state: PopupState;\n resolve: (value: boolean) => void;\n}\nconst permissionBus = useEventBus<PermissionRequest>(\"global-permission-popup\");\nexport function useAppPermissions() {\n const checkMediaStatus = async () => {\n try {\n const mic = await navigator.permissions.query({\n name: \"microphone\" as PermissionName,\n });\n const cam = await navigator.permissions.query({\n name: \"camera\" as PermissionName,\n });\n return { mic: mic.state, cam: cam.state };\n } catch (err) {\n return { mic: \"unknown\", cam: \"unknown\" };\n }\n };\n\n // Requests BOTH at once as requested, with a fallback if hardware is missing\n const requestMediaAccess = async (need: \"audio\" | \"video\" | \"both\") => {\n try {\n // 1. Try the primary request\n const constraints: MediaStreamConstraints = {\n audio: need === \"audio\" || need === \"both\",\n video: need === \"video\" || need === \"both\",\n };\n\n const stream = await navigator.mediaDevices.getUserMedia(constraints);\n stream.getTracks().forEach((track) => track.stop());\n return { success: true };\n } catch (error: any) {\n // 2. DETECT MISSING HARDWARE (Mac Mini case)\n if (\n error.name === \"NotFoundError\" ||\n error.name === \"DevicesNotFoundError\"\n ) {\n console.warn(\"Hardware not found. Checking for partial success...\");\n\n // If they needed 'both' but only have one (or none), try a partial fallback\n if (need === \"both\") {\n try {\n // Try ONLY video if audio failed\n const vStream = await navigator.mediaDevices.getUserMedia({\n video: true,\n });\n vStream.getTracks().forEach((t) => t.stop());\n return { success: true, hardwareWarning: \"no-mic\" };\n } catch {\n return { success: false, error: \"no-hardware\" };\n }\n }\n return { success: false, error: \"no-hardware\" };\n }\n\n // 3. Handle explicit denials (NotAllowedError)\n return { success: false, error: error.name };\n }\n };\n\n const requestLocation = async (): Promise<GeolocationPosition> => {\n return new Promise((resolve, reject) => {\n if (!navigator.geolocation) return reject(\"Unsupported\");\n navigator.geolocation.getCurrentPosition(resolve, reject);\n });\n };\n\n const requestScreenShare = async (): Promise<boolean> => {\n return await requestWithPopup(\"screen-share-permission\");\n };\n\n const requestWithPopup = (state: PopupState) => {\n return new Promise<boolean>((resolve) => {\n permissionBus.emit({ state, resolve });\n });\n };\n\n const getNativeScreenShare = async (): Promise<MediaStream> => {\n return await navigator.mediaDevices.getDisplayMedia({\n video: true,\n audio: false,\n });\n };\n\n return {\n checkMediaStatus,\n requestMediaAccess,\n requestLocation,\n requestScreenShare,\n requestWithPopup,\n getNativeScreenShare,\n };\n}\n","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-us'%20viewBox='0%200%20640%20480'%3e%3cpath%20fill='%23bd3d44'%20d='M0%200h640v480H0'/%3e%3cpath%20stroke='%23fff'%20stroke-width='37'%20d='M0%2055.3h640M0%20129h640M0%20203h640M0%20277h640M0%20351h640M0%20425h640'/%3e%3cpath%20fill='%23192f5d'%20d='M0%200h364.8v258.5H0'/%3e%3cmarker%20id='us-a'%20markerHeight='30'%20markerWidth='30'%3e%3cpath%20fill='%23fff'%20d='m14%200%209%2027L0%2010h28L5%2027z'/%3e%3c/marker%3e%3cpath%20fill='none'%20marker-mid='url(%23us-a)'%20d='m0%200%2016%2011h61%2061%2061%2061%2060L47%2037h61%2061%2060%2061L16%2063h61%2061%2061%2061%2060L47%2089h61%2061%2060%2061L16%20115h61%2061%2061%2061%2060L47%20141h61%2061%2060%2061L16%20166h61%2061%2061%2061%2060L47%20192h61%2061%2060%2061L16%20218h61%2061%2061%2061%2060z'/%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-ir'%20viewBox='0%200%20640%20480'%3e%3cdefs%3e%3cclipPath%20id='ir-a'%3e%3cpath%20fill-opacity='.7'%20d='M-85.3%200h682.7v512H-85.3z'/%3e%3c/clipPath%3e%3c/defs%3e%3cg%20fill-rule='evenodd'%20clip-path='url(%23ir-a)'%20transform='translate(80)scale(.9375)'%3e%3cpath%20fill='%23fff'%20d='M-192%200h896v512h-896z'/%3e%3cpath%20fill='%23da0000'%20d='M-192%20343.8h896V512h-896z'/%3e%3cg%20fill='%23fff'%20stroke-width='1pt'%3e%3cpath%20d='M-21.6%20351h49v3.3h-49zm7.3%2016.8h3.4v3.3h-3.4zm41.9%200v3.3h-9.8v-3.4zm5.2-16.8h3.4v20h-3.4z'/%3e%3cpath%20d='M52.4%20367.7v3.4H33.8v-3.4zm-34.6-7.9H21v11.3h-3.3z'/%3e%3cpath%20d='M49.6%20351H53v20h-3.4zm-8.4%200h3.3v20h-3.3zm-44.8%208v3.4h-18V359zm39.3%200v3.4h-18V359z'/%3e%3cpath%20d='M17.8%20359.9H21V371h-3.3z'/%3e%3cpath%20d='M17.8%20359.9H21V371h-3.3z'/%3e%3cpath%20d='M17.8%20359.9H21V371h-3.3zm-39.3%200h3.3V371h-3.3zm28.8%200h3.4V371H7.3zm-14.3%200h3.4V371H-7z'/%3e%3cpath%20d='M9.6%20367.7v3.4H-5.5v-3.4zm1-8.7v3.4H1V359z'/%3e%3c/g%3e%3cg%20fill='%23fff'%20stroke-width='1pt'%3e%3cpath%20d='M-102.2%20351h49v3.3h-49zm7.3%2016.8h3.4v3.3H-95zm41.9%200v3.3h-9.8v-3.4zm5.2-16.8h3.4v20h-3.4z'/%3e%3cpath%20d='M-28.2%20367.7v3.4h-18.6v-3.4zm-34.6-7.9h3.3v11.3h-3.3z'/%3e%3cpath%20d='M-31%20351h3.4v20H-31zm-8.4%200h3.3v20h-3.3zm-44.8%208v3.4h-18V359zm39.3%200v3.4h-18V359z'/%3e%3cpath%20d='M-62.8%20359.9h3.3V371h-3.3z'/%3e%3cpath%20d='M-62.8%20359.9h3.3V371h-3.3z'/%3e%3cpath%20d='M-62.8%20359.9h3.3V371h-3.3zm-39.3%200h3.3V371h-3.3zm28.8%200h3.3V371h-3.3zm-14.3%200h3.4V371h-3.4z'/%3e%3cpath%20d='M-71%20367.7v3.4h-15v-3.4zm1-8.7v3.4h-9.6V359z'/%3e%3c/g%3e%3cg%20fill='%23fff'%20stroke-width='1pt'%3e%3cpath%20d='M58.3%20351h49v3.3h-49zm7.3%2016.8H69v3.3h-3.4zm41.9%200v3.3h-9.8v-3.4zm5.3-16.8h3.4v20h-3.4z'/%3e%3cpath%20d='M132.3%20367.7v3.4h-18.6v-3.4zm-34.6-7.9h3.4v11.3h-3.4z'/%3e%3cpath%20d='M129.5%20351h3.4v20h-3.4zm-8.4%200h3.4v20H121zm-44.8%208v3.4h-18V359zm39.3%200v3.4h-18V359z'/%3e%3cpath%20d='M97.7%20359.9h3.4V371h-3.4z'/%3e%3cpath%20d='M97.7%20359.9h3.4V371h-3.4z'/%3e%3cpath%20d='M97.7%20359.9h3.4V371h-3.4zm-39.3%200h3.4V371h-3.4zm28.8%200h3.4V371h-3.4zm-14.3%200h3.4V371h-3.4z'/%3e%3cpath%20d='M89.6%20367.7v3.4H74.4v-3.4zm1-8.7v3.4H81V359z'/%3e%3c/g%3e%3cg%20fill='%23fff'%20stroke-width='1pt'%3e%3cpath%20d='M622.7%20351h49v3.3h-49zm7.3%2016.8h3.4v3.3H630zm41.9%200v3.3H662v-3.4zm5.3-16.8h3.3v20h-3.4z'/%3e%3cpath%20d='M696.7%20367.7v3.4H678v-3.4zm-34.6-7.9h3.4v11.3H662z'/%3e%3cpath%20d='M694%20351h3.3v20h-3.4zm-8.5%200h3.4v20h-3.4zm-44.8%208v3.4h-18V359zm39.3%200v3.4h-18V359z'/%3e%3cpath%20d='M662%20359.9h3.5V371H662z'/%3e%3cpath%20d='M662%20359.9h3.5V371H662z'/%3e%3cpath%20d='M662%20359.9h3.5V371H662zm-39.2%200h3.4V371h-3.4zm28.8%200h3.4V371h-3.4zm-14.3%200h3.4V371h-3.4z'/%3e%3cpath%20d='M654%20367.7v3.4h-15.2v-3.4zm1-8.7v3.4h-9.6V359z'/%3e%3c/g%3e%3cg%20fill='%23fff'%20stroke-width='1pt'%3e%3cpath%20d='M138.7%20351h49.1v3.3h-49zm7.4%2016.8h3.3v3.3h-3.3zm41.8%200v3.3h-9.8v-3.4zm5.3-16.8h3.4v20h-3.4z'/%3e%3cpath%20d='M212.8%20367.7v3.4h-18.6v-3.4zm-34.7-7.9h3.4v11.3h-3.4z'/%3e%3cpath%20d='M210%20351h3.4v20H210zm-8.5%200h3.4v20h-3.4zm-44.8%208v3.4h-17.9V359zm39.3%200v3.4h-17.9V359z'/%3e%3cpath%20d='M178.1%20359.9h3.4V371h-3.4z'/%3e%3cpath%20d='M178.1%20359.9h3.4V371h-3.4z'/%3e%3cpath%20d='M178.1%20359.9h3.4V371h-3.4zm-39.3%200h3.4V371h-3.4zm28.8%200h3.4V371h-3.4zm-14.2%200h3.3V371h-3.3z'/%3e%3cpath%20d='M170%20367.7v3.4h-15.1v-3.4zm1-8.7v3.4h-9.6V359z'/%3e%3c/g%3e%3cg%20fill='%23fff'%20stroke-width='1pt'%3e%3cpath%20d='M219.5%20351h49v3.3h-49zm7.3%2016.8h3.4v3.3h-3.4zm41.9%200v3.3h-9.8v-3.4zM274%20351h3.3v20H274z'/%3e%3cpath%20d='M293.5%20367.7v3.4h-18.6v-3.4zm-34.6-7.9h3.4v11.3h-3.4z'/%3e%3cpath%20d='M290.7%20351h3.4v20h-3.4zm-8.4%200h3.4v20h-3.4zm-44.8%208v3.4h-18V359zm39.3%200v3.4h-18V359z'/%3e%3cpath%20d='M258.9%20359.9h3.4V371h-3.4z'/%3e%3cpath%20d='M258.9%20359.9h3.4V371h-3.4z'/%3e%3cpath%20d='M258.9%20359.9h3.4V371h-3.4zm-39.3%200h3.3V371h-3.3zm28.8%200h3.4V371h-3.4zm-14.3%200h3.4V371H234z'/%3e%3cpath%20d='M250.8%20367.7v3.4h-15.2v-3.4zm1-8.7v3.4H242V359z'/%3e%3c/g%3e%3cpath%20fill='%23239f40'%20d='M-192%200h896v168.2h-896z'/%3e%3cg%20fill='%23fff'%20stroke-width='1pt'%3e%3cpath%20d='M300.7%20351h49v3.3h-49zm7.3%2016.8h3.4v3.3H308zm41.9%200v3.3H340v-3.4zm5.3-16.8h3.3v20h-3.3z'/%3e%3cpath%20d='M374.7%20367.7v3.4h-18.6v-3.4zm-34.6-7.9h3.4v11.3H340z'/%3e%3cpath%20d='M372%20351h3.3v20H372zm-8.5%200h3.4v20h-3.4zm-44.8%208v3.4h-18V359zm39.3%200v3.4h-18V359z'/%3e%3cpath%20d='M340%20359.9h3.5V371H340z'/%3e%3cpath%20d='M340%20359.9h3.5V371H340z'/%3e%3cpath%20d='M340%20359.9h3.5V371H340zm-39.2%200h3.4V371h-3.4zm28.8%200h3.4V371h-3.4zm-14.3%200h3.4V371h-3.4z'/%3e%3cpath%20d='M332%20367.7v3.4h-15.2v-3.4zm1-8.7v3.4h-9.6V359z'/%3e%3c/g%3e%3cg%20fill='%23fff'%20stroke-width='1pt'%3e%3cpath%20d='M381.4%20351h49v3.3h-49zm7.3%2016.8h3.4v3.3h-3.4zm42%200v3.3h-9.9v-3.4zm5.2-16.8h3.4v20h-3.4z'/%3e%3cpath%20d='M455.4%20367.7v3.4h-18.6v-3.4zm-34.6-7.9h3.4v11.3h-3.4z'/%3e%3cpath%20d='M452.7%20351h3.3v20h-3.3zm-8.5%200h3.4v20h-3.4zm-44.8%208v3.4h-17.9V359zm39.3%200v3.4h-17.9V359z'/%3e%3cpath%20d='M420.8%20359.9h3.4V371h-3.4z'/%3e%3cpath%20d='M420.8%20359.9h3.4V371h-3.4z'/%3e%3cpath%20d='M420.8%20359.9h3.4V371h-3.4zm-39.3%200h3.4V371h-3.4zm28.8%200h3.4V371h-3.4zm-14.3%200h3.4V371h-3.3z'/%3e%3cpath%20d='M412.7%20367.7v3.4h-15.1v-3.4zm1-8.7v3.4H404V359z'/%3e%3c/g%3e%3cg%20fill='%23fff'%20stroke-width='1pt'%3e%3cpath%20d='M462.2%20351h49v3.3h-49zm7.3%2016.8h3.4v3.3h-3.4zm41.9%200v3.3h-9.8v-3.4zm5.2-16.8h3.4v20h-3.4z'/%3e%3cpath%20d='M536.2%20367.7v3.4h-18.6v-3.4zm-34.7-7.9h3.4v11.3h-3.4z'/%3e%3cpath%20d='M533.4%20351h3.4v20h-3.4zm-8.4%200h3.3v20H525zm-44.8%208v3.4h-18V359zm39.3%200v3.4h-18V359z'/%3e%3cpath%20d='M501.6%20359.9h3.3V371h-3.3z'/%3e%3cpath%20d='M501.6%20359.9h3.3V371h-3.3z'/%3e%3cpath%20d='M501.6%20359.9h3.3V371h-3.3zm-39.4%200h3.4V371h-3.4zm28.9%200h3.3V371h-3.3zm-14.3%200h3.4V371h-3.4z'/%3e%3cpath%20d='M493.4%20367.7v3.4h-15.1v-3.4zm1-8.7v3.4h-9.6V359z'/%3e%3c/g%3e%3cg%20fill='%23fff'%20stroke-width='1pt'%3e%3cpath%20d='M543.4%20351h49v3.3h-49zm7.3%2016.8h3.4v3.3h-3.4zm41.9%200v3.3h-9.8v-3.4zm5.2-16.8h3.4v20h-3.4z'/%3e%3cpath%20d='M617.4%20367.7v3.4h-18.6v-3.4zm-34.6-7.9h3.3v11.3h-3.3z'/%3e%3cpath%20d='M614.6%20351h3.4v20h-3.4zm-8.4%200h3.3v20h-3.3zm-44.8%208v3.4h-18V359zm39.3%200v3.4h-18V359z'/%3e%3cpath%20d='M582.8%20359.9h3.3V371h-3.3z'/%3e%3cpath%20d='M582.8%20359.9h3.3V371h-3.3z'/%3e%3cpath%20d='M582.8%20359.9h3.3V371h-3.3zm-39.3%200h3.3V371h-3.3zm28.8%200h3.4V371h-3.4zm-14.3%200h3.4V371H558z'/%3e%3cpath%20d='M574.6%20367.7v3.4h-15.1v-3.4zm1-8.7v3.4H566V359z'/%3e%3c/g%3e%3cg%20fill='%23fff'%20stroke-width='1pt'%3e%3cpath%20d='M-183.8%20351h49v3.3h-49zm7.3%2016.8h3.4v3.3h-3.4zm42%200v3.3h-9.9v-3.4zm5.2-16.8h3.4v20h-3.4z'/%3e%3cpath%20d='M-109.8%20367.7v3.4h-18.6v-3.4zm-34.6-7.9h3.4v11.3h-3.4z'/%3e%3cpath%20d='M-112.5%20351h3.3v20h-3.3zm-8.5%200h3.4v20h-3.4zm-44.8%208v3.4h-17.9V359zm39.3%200v3.4h-17.9V359z'/%3e%3cpath%20d='M-144.4%20359.9h3.4V371h-3.4z'/%3e%3cpath%20d='M-144.4%20359.9h3.4V371h-3.4z'/%3e%3cpath%20d='M-144.4%20359.9h3.4V371h-3.4zm-39.3%200h3.4V371h-3.4zm28.8%200h3.4V371h-3.4zm-14.3%200h3.4V371h-3.4z'/%3e%3cpath%20d='M-152.5%20367.7v3.4h-15.2v-3.4zm1-8.7v3.4h-9.6V359z'/%3e%3c/g%3e%3cg%20fill='%23fff'%20stroke-width='1pt'%3e%3cpath%20d='M-21.6%20143.4h49v3.4h-49zm7.3%2017h3.4v3.2h-3.4zm41.9-.2v3.4h-9.8v-3.4zm5.2-16.8h3.4v20.2h-3.4z'/%3e%3cpath%20d='M52.4%20160.2v3.4H33.8v-3.4zm-34.6-7.9H21v11.3h-3.3z'/%3e%3cpath%20d='M49.6%20143.4H53v20.2h-3.4zm-8.4%200h3.3v20.2h-3.3zm-44.8%208v3.4h-18v-3.3zm39.3%200v3.4h-18v-3.3z'/%3e%3cpath%20d='M17.8%20152.3H21v11.3h-3.3z'/%3e%3cpath%20d='M17.8%20152.3H21v11.3h-3.3z'/%3e%3cpath%20d='M17.8%20152.3H21v11.3h-3.3zm-39.3%200h3.3v11.3h-3.3zm28.8%200h3.4v11.3H7.3zm-14.3%200h3.4v11.3H-7z'/%3e%3cpath%20d='M9.6%20160.2v3.4H-5.5v-3.4zm1-8.7v3.3H1v-3.3z'/%3e%3c/g%3e%3cg%20fill='%23fff'%20stroke-width='1pt'%3e%3cpath%20d='M-102.2%20143.4h49v3.4h-49zm7.3%2017h3.4v3.2H-95zm41.9-.2v3.4h-9.8v-3.4zm5.2-16.8h3.4v20.2h-3.4z'/%3e%3cpath%20d='M-28.2%20160.2v3.4h-18.6v-3.4zm-34.6-7.9h3.3v11.3h-3.3z'/%3e%3cpath%20d='M-31%20143.4h3.4v20.2H-31zm-8.4%200h3.3v20.2h-3.3zm-44.8%208v3.4h-18v-3.3zm39.3%200v3.4h-18v-3.3z'/%3e%3cpath%20d='M-62.8%20152.3h3.3v11.3h-3.3z'/%3e%3cpath%20d='M-62.8%20152.3h3.3v11.3h-3.3z'/%3e%3cpath%20d='M-62.8%20152.3h3.3v11.3h-3.3zm-39.3%200h3.3v11.3h-3.3zm28.8%200h3.3v11.3h-3.3zm-14.3%200h3.4v11.3h-3.4z'/%3e%3cpath%20d='M-71%20160.2v3.4h-15v-3.4zm1-8.7v3.3h-9.6v-3.3z'/%3e%3c/g%3e%3cg%20fill='%23fff'%20stroke-width='1pt'%3e%3cpath%20d='M58.3%20143.4h49v3.4h-49zm7.3%2017H69v3.2h-3.4zm41.9-.2v3.4h-9.8v-3.4zm5.3-16.8h3.4v20.2h-3.4z'/%3e%3cpath%20d='M132.3%20160.2v3.4h-18.6v-3.4zm-34.6-7.9h3.4v11.3h-3.4z'/%3e%3cpath%20d='M129.5%20143.4h3.4v20.2h-3.4zm-8.4%200h3.4v20.2H121zm-44.8%208v3.4h-18v-3.3zm39.3%200v3.4h-18v-3.3z'/%3e%3cpath%20d='M97.7%20152.3h3.4v11.3h-3.4z'/%3e%3cpath%20d='M97.7%20152.3h3.4v11.3h-3.4z'/%3e%3cpath%20d='M97.7%20152.3h3.4v11.3h-3.4zm-39.3%200h3.4v11.3h-3.4zm28.8%200h3.4v11.3h-3.4zm-14.3%200h3.4v11.3h-3.4z'/%3e%3cpath%20d='M89.6%20160.2v3.4H74.4v-3.4zm1-8.7v3.3H81v-3.3z'/%3e%3c/g%3e%3cg%20fill='%23fff'%20stroke-width='1pt'%3e%3cpath%20d='M622.7%20143.4h49v3.4h-49zm7.3%2017h3.4v3.2H630zm41.9-.2v3.4H662v-3.4zm5.3-16.8h3.3v20.2h-3.4z'/%3e%3cpath%20d='M696.7%20160.2v3.4H678v-3.4zm-34.6-7.9h3.4v11.3H662z'/%3e%3cpath%20d='M694%20143.4h3.3v20.2h-3.4zm-8.5%200h3.4v20.2h-3.4zm-44.8%208v3.4h-18v-3.3zm39.3%200v3.4h-18v-3.3z'/%3e%3cpath%20d='M662%20152.3h3.5v11.3H662z'/%3e%3cpath%20d='M662%20152.3h3.5v11.3H662z'/%3e%3cpath%20d='M662%20152.3h3.5v11.3H662zm-39.2%200h3.4v11.3h-3.4zm28.8%200h3.4v11.3h-3.4zm-14.3%200h3.4v11.3h-3.4z'/%3e%3cpath%20d='M654%20160.2v3.4h-15.2v-3.4zm1-8.7v3.3h-9.6v-3.3z'/%3e%3c/g%3e%3cg%20fill='%23fff'%20stroke-width='1pt'%3e%3cpath%20d='M138.7%20143.4h49.1v3.4h-49zm7.4%2017h3.3v3.2h-3.3zm41.8-.2v3.4h-9.8v-3.4zm5.3-16.8h3.4v20.2h-3.4z'/%3e%3cpath%20d='M212.8%20160.2v3.4h-18.6v-3.4zm-34.7-7.9h3.4v11.3h-3.4z'/%3e%3cpath%20d='M210%20143.4h3.4v20.2H210zm-8.5%200h3.4v20.2h-3.4zm-44.8%208v3.4h-17.9v-3.3zm39.3%200v3.4h-17.9v-3.3z'/%3e%3cpath%20d='M178.1%20152.3h3.4v11.3h-3.4z'/%3e%3cpath%20d='M178.1%20152.3h3.4v11.3h-3.4z'/%3e%3cpath%20d='M178.1%20152.3h3.4v11.3h-3.4zm-39.3%200h3.4v11.3h-3.4zm28.8%200h3.4v11.3h-3.4zm-14.2%200h3.3v11.3h-3.3z'/%3e%3cpath%20d='M170%20160.2v3.4h-15.1v-3.4zm1-8.7v3.3h-9.6v-3.3z'/%3e%3c/g%3e%3cg%20fill='%23fff'%20stroke-width='1pt'%3e%3cpath%20d='M219.5%20143.4h49v3.4h-49zm7.3%2017h3.4v3.2h-3.4zm41.9-.2v3.4h-9.8v-3.4zm5.3-16.8h3.3v20.2H274z'/%3e%3cpath%20d='M293.5%20160.2v3.4h-18.6v-3.4zm-34.6-7.9h3.4v11.3h-3.4z'/%3e%3cpath%20d='M290.7%20143.4h3.4v20.2h-3.4zm-8.4%200h3.4v20.2h-3.4zm-44.8%208v3.4h-18v-3.3zm39.3%200v3.4h-18v-3.3z'/%3e%3cpath%20d='M258.9%20152.3h3.4v11.3h-3.4z'/%3e%3cpath%20d='M258.9%20152.3h3.4v11.3h-3.4z'/%3e%3cpath%20d='M258.9%20152.3h3.4v11.3h-3.4zm-39.3%200h3.3v11.3h-3.3zm28.8%200h3.4v11.3h-3.4zm-14.3%200h3.4v11.3H234z'/%3e%3cpath%20d='M250.8%20160.2v3.4h-15.2v-3.4zm1-8.7v3.3H242v-3.3z'/%3e%3c/g%3e%3cg%20fill='%23fff'%20stroke-width='1pt'%3e%3cpath%20d='M300.7%20143.4h49v3.4h-49zm7.3%2017h3.4v3.2H308zm41.9-.2v3.4H340v-3.4zm5.3-16.8h3.3v20.2h-3.3z'/%3e%3cpath%20d='M374.7%20160.2v3.4h-18.6v-3.4zm-34.6-7.9h3.4v11.3H340z'/%3e%3cpath%20d='M372%20143.4h3.3v20.2H372zm-8.5%200h3.4v20.2h-3.4zm-44.8%208v3.4h-18v-3.3zm39.3%200v3.4h-18v-3.3z'/%3e%3cpath%20d='M340%20152.3h3.5v11.3H340z'/%3e%3cpath%20d='M340%20152.3h3.5v11.3H340z'/%3e%3cpath%20d='M340%20152.3h3.5v11.3H340zm-39.2%200h3.4v11.3h-3.4zm28.8%200h3.4v11.3h-3.4zm-14.3%200h3.4v11.3h-3.4z'/%3e%3cpath%20d='M332%20160.2v3.4h-15.2v-3.4zm1-8.7v3.3h-9.6v-3.3z'/%3e%3c/g%3e%3cg%20fill='%23fff'%20stroke-width='1pt'%3e%3cpath%20d='M381.4%20143.4h49v3.4h-49zm7.3%2017h3.4v3.2h-3.4zm42-.2v3.4h-9.9v-3.4zm5.2-16.8h3.4v20.2h-3.4z'/%3e%3cpath%20d='M455.4%20160.2v3.4h-18.6v-3.4zm-34.6-7.9h3.4v11.3h-3.4z'/%3e%3cpath%20d='M452.7%20143.4h3.3v20.2h-3.3zm-8.5%200h3.4v20.2h-3.4zm-44.8%208v3.4h-17.9v-3.3zm39.3%200v3.4h-17.9v-3.3z'/%3e%3cpath%20d='M420.8%20152.3h3.4v11.3h-3.4z'/%3e%3cpath%20d='M420.8%20152.3h3.4v11.3h-3.4z'/%3e%3cpath%20d='M420.8%20152.3h3.4v11.3h-3.4zm-39.3%200h3.4v11.3h-3.4zm28.8%200h3.4v11.3h-3.4zm-14.3%200h3.4v11.3h-3.3z'/%3e%3cpath%20d='M412.7%20160.2v3.4h-15.1v-3.4zm1-8.7v3.3H404v-3.3z'/%3e%3c/g%3e%3cg%20fill='%23fff'%20stroke-width='1pt'%3e%3cpath%20d='M462.2%20143.4h49v3.4h-49zm7.3%2017h3.4v3.2h-3.4zm41.9-.2v3.4h-9.8v-3.4zm5.2-16.8h3.4v20.2h-3.4z'/%3e%3cpath%20d='M536.2%20160.2v3.4h-18.6v-3.4zm-34.7-7.9h3.4v11.3h-3.4z'/%3e%3cpath%20d='M533.4%20143.4h3.4v20.2h-3.4zm-8.4%200h3.3v20.2H525zm-44.8%208v3.4h-18v-3.3zm39.3%200v3.4h-18v-3.3z'/%3e%3cpath%20d='M501.6%20152.3h3.3v11.3h-3.3z'/%3e%3cpath%20d='M501.6%20152.3h3.3v11.3h-3.3z'/%3e%3cpath%20d='M501.6%20152.3h3.3v11.3h-3.3zm-39.4%200h3.4v11.3h-3.4zm28.9%200h3.3v11.3h-3.3zm-14.3%200h3.4v11.3h-3.4z'/%3e%3cpath%20d='M493.4%20160.2v3.4h-15.1v-3.4zm1-8.7v3.3h-9.6v-3.3z'/%3e%3c/g%3e%3cg%20fill='%23fff'%20stroke-width='1pt'%3e%3cpath%20d='M543.4%20143.4h49v3.4h-49zm7.3%2017h3.4v3.2h-3.4zm41.9-.2v3.4h-9.8v-3.4zm5.2-16.8h3.4v20.2h-3.4z'/%3e%3cpath%20d='M617.4%20160.2v3.4h-18.6v-3.4zm-34.6-7.9h3.3v11.3h-3.3z'/%3e%3cpath%20d='M614.6%20143.4h3.4v20.2h-3.4zm-8.4%200h3.3v20.2h-3.3zm-44.8%208v3.4h-18v-3.3zm39.3%200v3.4h-18v-3.3z'/%3e%3cpath%20d='M582.8%20152.3h3.3v11.3h-3.3z'/%3e%3cpath%20d='M582.8%20152.3h3.3v11.3h-3.3z'/%3e%3cpath%20d='M582.8%20152.3h3.3v11.3h-3.3zm-39.3%200h3.3v11.3h-3.3zm28.8%200h3.4v11.3h-3.4zm-14.3%200h3.4v11.3H558z'/%3e%3cpath%20d='M574.6%20160.2v3.4h-15.1v-3.4zm1-8.7v3.3H566v-3.3z'/%3e%3c/g%3e%3cg%20fill='%23fff'%20stroke-width='1pt'%3e%3cpath%20d='M-183.8%20143.4h49v3.4h-49zm7.3%2017h3.4v3.2h-3.4zm42-.2v3.4h-9.9v-3.4zm5.2-16.8h3.4v20.2h-3.4z'/%3e%3cpath%20d='M-109.8%20160.2v3.4h-18.6v-3.4zm-34.6-7.9h3.4v11.3h-3.4z'/%3e%3cpath%20d='M-112.5%20143.4h3.3v20.2h-3.3zm-8.5%200h3.4v20.2h-3.4zm-44.8%208v3.4h-17.9v-3.3zm39.3%200v3.4h-17.9v-3.3z'/%3e%3cpath%20d='M-144.4%20152.3h3.4v11.3h-3.4z'/%3e%3cpath%20d='M-144.4%20152.3h3.4v11.3h-3.4z'/%3e%3cpath%20d='M-144.4%20152.3h3.4v11.3h-3.4zm-39.3%200h3.4v11.3h-3.4zm28.8%200h3.4v11.3h-3.4zm-14.3%200h3.4v11.3h-3.4z'/%3e%3cpath%20d='M-152.5%20160.2v3.4h-15.2v-3.4zm1-8.7v3.3h-9.6v-3.3z'/%3e%3c/g%3e%3cpath%20fill='%23d90000'%20d='M-68.8%20339.5h6V350h-6zm160.5%200h6V350h-6zm-283.7%200h6V350h-6zm81.5%200h6V350h-6zm80.9%200h6V350h-6zm40%200h6V350h-6zm40.9%200h6V350h-6zm80.4%200h6V350h-6zm203%200h6.1V350h-6zm-162.1%200h6V350h-6zm40%200h6V350h-6zm40.5%200h6V350h-6zm40.4%200h6V350h-6zm323.2%200h6V350h-6zm-242.7%200h6V350h-6zm40.8%200h6V350h-6zm41.3%200h6V350h-6zm38.8%200h6V350h-6zm41.3%200h6V350h-6zm40.4%200h6V350h-6zm119.7%200h6V350h-6zm-38.8%200h6V350h-6zm-808.9%200h6V350h-6z'/%3e%3cpath%20fill='%23239e3f'%20d='M-68.8%20162.6h6v10.5h-6zm160.5%200h6v10.5h-6zm-283.7%200h6v10.5h-6zm81.5%200h6v10.5h-6zm80.9%200h6v10.5h-6zm40%200h6v10.5h-6zm40.9%200h6v10.5h-6zm80.4%200h6v10.5h-6zm203%200h6.1v10.5h-6zm-162.1%200h6v10.5h-6zm40%200h6v10.5h-6zm40.5%200h6v10.5h-6zm40.4%200h6v10.5h-6zm323.2%200h6v10.5h-6zm-242.7%200h6v10.5h-6zm40.8%200h6v10.5h-6zm41.3%200h6v10.5h-6zm38.8%200h6v10.5h-6zm41.3%200h6v10.5h-6zm40.4%200h6v10.5h-6zm119.7%200h6v10.5h-6zm-38.8%200h6v10.5h-6zm-808.9%200h6v10.5h-6z'/%3e%3cg%20fill='%23da0000'%3e%3cpath%20d='M279.8%20197.5c8.4%2010.4%2034.5%2067.6-15.7%20105.2-23.7%2017.8-9%2018.6-8.3%2021.6%2038-20.1%2050.3-47.5%2050-72-.2-24.4-13.2-46-26-54.8'/%3e%3cpath%20d='M284.8%20194.8a73.3%2073.3%200%200%201%2015.7%20112.4c27.2-6%2062-86.4-15.7-112.4m-57.6%200a73.3%2073.3%200%200%200-15.6%20112.4c-27.3-6-62-86.4%2015.6-112.4'/%3e%3cpath%20d='M232.2%20197.5c-8.4%2010.4-34.5%2067.6%2015.7%20105.2%2023.6%2017.8%209%2018.6%208.3%2021.6-38-20.1-50.3-47.5-50-72%20.2-24.4%2013.2-46%2026-54.8'/%3e%3cpath%20d='M304.2%20319.1c-14.9.2-33.6-2-47.5-9.3%202.3%204.5%204.2%207.3%206.5%2011.7%2013.2%201.3%2031.5%202.8%2041-2.4m-95%200c14.9.2%2033.6-2%2047.5-9.3-2.3%204.5-4.2%207.3-6.5%2011.7-13.2%201.3-31.5%202.8-41-2.4m27.3-138.7c3%208%2010.9%209.2%2019.3%204.5%206.2%203.6%2015.7%203.9%2019-4.1%202.5%2019.8-18.3%2015-19%2011.2-7.8%207.5-22.2%203.2-19.3-11.6'/%3e%3cpath%20d='m256.4%20331.6%207.8-9%201.1-120.1-9.3-8.2-9.3%207.8%201.9%20121z'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e\"","export default \"data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-ae'%20viewBox='0%200%20640%20480'%3e%3cpath%20fill='%2300732f'%20d='M0%200h640v160H0z'/%3e%3cpath%20fill='%23fff'%20d='M0%20160h640v160H0z'/%3e%3cpath%20fill='%23000001'%20d='M0%20320h640v160H0z'/%3e%3cpath%20fill='red'%20d='M0%200h220v480H0z'/%3e%3c/svg%3e\"","// app/composables/useLocale.ts\n\nimport { computed, watchEffect } from \"vue\";\nimport { useI18n } from \"~/nuxt-shims\";\nimport flagUs from \"~/assets/flags/us.svg\";\nimport flagIr from \"~/assets/flags/ir.svg\";\nimport flagAe from \"~/assets/flags/ae.svg\";\n\nconst FLAG_BY_COUNTRY: Record<string, string> = {\n US: flagUs,\n IR: flagIr,\n AE: flagAe,\n};\n\nconst DEFAULT_LOCALES: Array<{ code: string; dir: \"ltr\" | \"rtl\"; name: string }> = [\n { code: \"fa\", dir: \"rtl\", name: \"فارسی\" },\n { code: \"en\", dir: \"ltr\", name: \"English\" },\n { code: \"ar\", dir: \"rtl\", name: \"العربية\" },\n];\n\nexport const useLocale = () => {\n // Plain vue-i18n exposes only `locale` on the Composer. `setLocale` and\n // `locales` are Nuxt-i18n module additions; treat them as optional so the\n // library works in both Nuxt and plain Vite hosts.\n const i18n = useI18n() as unknown as {\n locale: { value: string };\n setLocale?: (l: string) => Promise<void> | void;\n locales?: { value: Array<{ code: string; dir?: string; name?: string }> };\n };\n const locale = i18n.locale;\n\n const localeToCountryMap: Record<string, string> = {\n en: \"US\",\n fa: \"IR\",\n ar: \"AE\",\n };\n\n const localeTitles: Record<string, string> = {\n en: \"English\",\n fa: \"فارسی\",\n ar: \"العربية\",\n };\n\n const sourceLocales = computed(() =>\n i18n.locales?.value?.length ? i18n.locales.value : DEFAULT_LOCALES,\n );\n\n const languages = computed(() => {\n return sourceLocales.value.map((loc: any) => {\n const countryCode = localeToCountryMap[loc.code] || \"US\";\n return {\n ...loc,\n title: localeTitles[loc.code] || loc.name || loc.code,\n countryCode: countryCode.toUpperCase(),\n flag: FLAG_BY_COUNTRY[countryCode] ?? FLAG_BY_COUNTRY.US,\n };\n });\n });\n\n const currentCountry = computed(() => {\n return (\n languages.value.find((lang) => lang.code === locale.value) ||\n languages.value[0]\n );\n });\n\n const flagUrl = computed(() => currentCountry.value?.flag ?? \"\");\n\n const dir = computed(() => {\n const currentLocaleObj = sourceLocales.value.find(\n (l: any) => l.code === locale.value,\n );\n return (currentLocaleObj?.dir as \"ltr\" | \"rtl\" | undefined) || \"ltr\";\n });\n\n // useHead is a no-op shim in plain-Vite hosts, so apply html attrs directly.\n if (typeof document !== \"undefined\") {\n watchEffect(() => {\n document.documentElement.setAttribute(\"dir\", dir.value);\n document.documentElement.setAttribute(\"lang\", locale.value);\n });\n }\n\n const switchLocale = async (newLocale: string) => {\n if (i18n.setLocale) {\n await i18n.setLocale(newLocale);\n } else {\n locale.value = newLocale;\n }\n if (typeof localStorage !== \"undefined\") {\n localStorage.setItem(\"user-locale\", newLocale);\n }\n if (typeof window !== \"undefined\") {\n window.location.reload();\n }\n };\n\n const otherLanguages = computed(() => {\n return languages.value.filter((lang) => lang.code !== locale.value);\n });\n\n return {\n locale,\n languages,\n otherLanguages,\n currentCountry,\n flagUrl,\n dir,\n switchLocale,\n };\n};\n","import { injectAppStores } from \"~/nuxt-shims\";\n\nexport const useChatActionStore = () => injectAppStores().useChatActionStore();\n","import { injectAppStores } from \"~/nuxt-shims\";\n\nexport const useCallStore = () => injectAppStores().useCallStore();\n ","import { injectAppStores } from \"~/nuxt-shims\";\n\nexport const useServiceStore = () => injectAppStores().useServiceStore();\n","/**\n * Compatibility shims that let source files originally written for Nuxt's\n * auto-import system (`#imports`, `#app`) keep working inside a plain\n * Vue 3 + Vite library build. Every former `from '#imports'` /\n * `from '#app'` is rewritten to point here.\n */\nimport { ref, type Ref, type WritableComputedRef, type InjectionKey, inject } from \"vue\";\nimport { useI18n as _useI18n } from \"vue-i18n\";\nimport type { AppStores } from \"./install\";\n\nexport type I18nT = (key: string, ...args: unknown[]) => string;\nexport interface I18nNarrow {\n t: I18nT;\n locale: WritableComputedRef<string>;\n}\n\nexport function useI18n(): I18nNarrow {\n return _useI18n() as unknown as I18nNarrow;\n}\nexport { useWindowSize, useEventBus } from \"@vueuse/core\";\n\nexport { useClickOutside } from \"./composables/useClickOutside\";\nexport { useDevice } from \"./composables/useDevice\";\nexport { useDate } from \"./composables/useDate\";\nexport { useAppToast } from \"./composables/useAppToast\";\nexport { useAppPermissions } from \"./composables/useAppPermissions\";\nexport { useLocale } from \"./composables/useLocale\";\nexport { useTheme, provideTheme } from \"./composables/useTheme\";\nexport { useValidation } from \"./composables/useValidation\";\n\nexport { useChatStore } from \"./stores/chatStore\";\nexport { useChatActionStore } from \"./stores/chatActionStore\";\nexport { useCallStore } from \"./stores/callStore\";\nexport { useServiceStore } from \"./stores/serviceStore\";\nexport { useMedicationStore } from \"./stores/medicationsStore\";\n\nexport { formatBytes, formatCurrency } from \"./utils/format\";\n\nexport const APP_STORES_KEY: InjectionKey<AppStores> = Symbol(\"behayand:appStores\");\n\n/**\n * Resolve the app stores from the current Vue injection context. Call this\n * either inside a component `setup()` or inside `app.runWithContext(...)`\n * AFTER `app.use(BehayandChat, { adapter })` has installed the plugin.\n *\n * Throws if no provider is reachable — keeps the failure mode loud and\n * located, instead of a downstream null-deref.\n */\nexport function injectAppStores(): AppStores {\n const stores = inject(APP_STORES_KEY, null);\n if (!stores) {\n throw new Error(\n \"[@behayand/chat] App stores not provided. Make sure \" +\n \"`app.use(BehayandChat, { adapter })` has run before any store \" +\n \"composable is called, and that the call happens inside a \" +\n \"component setup() or inside `app.runWithContext(...)`.\",\n );\n }\n return stores;\n}\n\nconst stateMap = new Map<string, Ref<unknown>>();\nexport function useState<T>(key: string, init?: () => T): Ref<T> {\n if (!stateMap.has(key)) {\n stateMap.set(key, ref(init ? init() : (undefined as unknown as T)) as Ref<unknown>);\n }\n return stateMap.get(key) as Ref<T>;\n}\n\nexport function useHead(_: unknown) {\n /* no-op: head management is the host app's responsibility */\n}\n\nexport function useSeoMeta(_: unknown) {\n /* no-op */\n}\n\ntype ColorModeRef = Ref<\"light\" | \"dark\"> & { preference: \"light\" | \"dark\"; value: \"light\" | \"dark\" };\nlet colorModeSingleton: ColorModeRef | null = null;\nexport function useColorMode(): ColorModeRef {\n if (colorModeSingleton) return colorModeSingleton;\n const r = ref<\"light\" | \"dark\">(\"light\") as Ref<\"light\" | \"dark\">;\n const proxy = new Proxy(r as unknown as ColorModeRef, {\n get(target, key) {\n if (key === \"preference\") return target.value;\n return (target as any)[key];\n },\n set(target, key, value) {\n if (key === \"preference\" || key === \"value\") {\n (target as any).value = value;\n return true;\n }\n (target as any)[key] = value;\n return true;\n },\n });\n colorModeSingleton = proxy;\n return proxy;\n}\n\nexport function defineNuxtPlugin(_: unknown) {\n return _;\n}\n","import { injectAppStores } from \"~/nuxt-shims\";\n\nexport const useChatStore = () => injectAppStores().useChatStore();\n","<template>\n <div class=\" w-full h-full flex flex-col items-center justify-center gap-y-5\">\n <div class=\" h-50 w-50\">\n <BImage class=\" w-full h-full min-w-full min-h-full max-w-full max-h-full\" :src=\"imagePath\" />\n </div>\n <div class=\" select-none text-label-sm text-center text-on-surface/50\">{{ title }}</div>\n </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent } from 'vue';\n\nexport default defineComponent({\n name: 'NoDataDisplay',\n props: {\n imagePath: {\n type: String,\n default: ''\n },\n title: {\n type: String,\n default: ''\n }\n },\n})\n</script>","export default \"data:image/webp;base64,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\"","<template>\n <div class=\" w-full h-full relative z-10\">\n <BImage draggable=\"false\" :src=\"contact.imageUrl\" @click.stop @mousedown.stop v-if=\"hasImage\"\n class=\" pointer-events-none select-none w-full h-full min-w-full rounded-full overflow-hidden min-h-full max-w-full max-h-full\" />\n <div v-else class=\" w-full h-full bg-primary/10 flex items-center justify-center rounded-full overflow-hidden \">\n <div class=\" select-none text-primary text-sm font-semibold\">{{ initials }}</div>\n </div>\n <div v-if=\"contact.isOnline && showOnline\"\n class=\"absolute right-0 bottom-0 bg-primary rounded-full w-2.5 h-2.5 border-2 border-surface\"></div>\n </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, type PropType } from 'vue';\nimport type { Contact } from '~/types/chat';\n\nexport default defineComponent({\n name: 'ChatAvatar',\n props: {\n contact: {\n type: Object as PropType<Contact>,\n required: true,\n },\n showOnline: {\n type: Boolean,\n default: true,\n }\n },\n setup(props) {\n const hasImage = computed(() => props.contact.imageUrl && props.contact.imageUrl.trim().length > 0)\n\n \n\n const initials = computed(() => {\n // Accessing directly from props.contact\n const first = props.contact?.name?.trim() || '';\n const last = props.contact?.lastName?.trim() || '';\n\n if (!first && !last) return '';\n\n const firstInitial = first.charAt(0);\n const lastInitial = last.charAt(0);\n\n // RTL Detection (Persian/Arabic range)\n const isRTL = /[\\u0600-\\u06FF]/.test(firstInitial);\n\n if (isRTL) {\n // Return with space for RTL: \"ا ص\"\n return lastInitial ? `${firstInitial} ${lastInitial}` : firstInitial;\n } else {\n // Return without space for English: \"AS\"\n return (firstInitial + lastInitial).toUpperCase();\n }\n });\n\n return {\n hasImage,\n initials,\n }\n }\n})\n</script>","import emojiDataRaw from '@emoji-mart/data';\n\n// `@emoji-mart/data` no longer ships typings for its top-level `.emojis` /\n// `.categories` shape, so we cast at the import boundary.\nconst emojiData = emojiDataRaw as unknown as {\n emojis: Record<string, { skins?: Array<{ native?: string; unified?: string }> }>;\n categories: Array<{ id: string; emojis: string[] }>;\n};\n\n// 1. Build a highly optimized lookup table ONCE\n// Maps Native ('😀') -> Emoji-Mart Hex ('1f600')\nconst nativeToHex = new Map();\n\nif (emojiData && emojiData.emojis) {\n for (const key in emojiData.emojis) {\n const skins = emojiData.emojis[key].skins;\n if (skins) {\n skins.forEach((skin: any) => {\n if (skin.native && skin.unified) {\n nativeToHex.set(skin.native, skin.unified);\n }\n });\n }\n }\n}\n\nexport function parseEmojiArray(text: string | undefined) {\n if (!text) return [];\n\n // Safely split text by visual characters\n const segmenter = new Intl.Segmenter('en', { granularity: 'grapheme' });\n const graphemes = Array.from(segmenter.segment(text)).map(s => s.segment);\n\n const emojiRegex = /\\p{Extended_Pictographic}/u;\n const result = [];\n let currentText = '';\n\n for (const grapheme of graphemes) {\n if (emojiRegex.test(grapheme)) {\n if (currentText) {\n result.push({ type: 'text', content: currentText });\n currentText = '';\n }\n \n // 2. CHECK THE EMOJI-MART DICTIONARY FIRST\n // This guarantees the filename matches the picker exactly\n let hexFilename = nativeToHex.get(grapheme);\n \n // 3. Fallback just in case an OS sends a weird variant\n if (!hexFilename) {\n hexFilename = Array.from(grapheme)\n .map(char => char.codePointAt(0)?.toString(16))\n .filter(hex => hex !== 'fe0f')\n .join('-');\n }\n \n result.push({ type: 'emoji', content: grapheme, hex: hexFilename });\n } else {\n currentText += grapheme;\n }\n }\n \n if (currentText) {\n result.push({ type: 'text', content: currentText });\n }\n\n return result;\n}","<template>\n <component \n :is=\"truncate ? 'div' : 'span'\"\n :class=\"[\n truncate \n ? 'line-clamp-1 overflow-hidden text-ellipsis break-all w-full' \n : 'inline whitespace-pre-wrap break-words'\n ]\"\n >\n <template v-for=\"(chunk, index) in parsedText\" :key=\"index\">\n \n <img\n v-if=\"chunk.type === 'emoji'\"\n :src=\"`/emojis/apple/webp/${chunk.hex}.webp`\"\n :alt=\"chunk.content\"\n class=\"inline-block w-4.5 h-4.5 align-middle select-text pointer-events-none\"\n loading=\"lazy\"\n />\n \n <span v-else>{{ chunk.content }}</span>\n \n </template>\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { parseEmojiArray } from '~/utils/emojiParser';\n\nconst props = defineProps({\n text: { type: String, default: '' },\n truncate: { type: Boolean, default: false } // Trigger from parent\n});\n\nconst parsedText = computed(() => parseEmojiArray(props.text));\n</script>","<template>\n <div @click=\"openChat\" :class=\"[isActive ? 'bg-surface-variant' : 'bg-surface-variant/0']\"\n class=\"rounded-xl w-full transition-all duration-200 ease-in-out cursor-pointer p-2.5 flex justify-between gap-x-3 items-center h-19\">\n\n <div v-loading=\"isLoading\" class=\"relative shrink-0 h-11 w-11\">\n <ContactAvatar :contact=\"contact\" />\n </div>\n\n <div class=\"select-none flex-1 overflow-hidden\">\n <div class=\"w-full flex items-center justify-between\">\n <div class=\"text-label-md text-on-surface min-w-20 truncate\" v-loading=\"isLoading\">{{ contact.name }} {{\n contact.lastName }}</div>\n <div v-if=\"contact.lastMessage\" class=\"flex gap-x-1.5 items-center shrink-0\">\n <div v-loading=\"isLoading\" class=\"text-on-surface/50 text-[11px]\">{{\n formatRelativeDate(contact.lastMessage.date) }}</div>\n <BIcon v-if=\"lastMessageIcon.icon !== ''\" :icon=\"lastMessageIcon.icon\"\n :class=\"lastMessageIcon.color\" class=\"w-4 h-4\" />\n </div>\n </div>\n\n <div class=\"w-full flex items-center justify-between mt-0.5\">\n <div class=\"flex items-center gap-x-1.5 flex-1 overflow-hidden\">\n <BIcon v-if=\"attachmentIcon && contact.lastMessage\" weight=\"bold\" :icon=\"attachmentIcon\"\n class=\"w-4 h-4 fill-primary shrink-0\" />\n\n <div v-loading=\"isLoading\" v-if=\"contact.lastMessage\"\n :class=\"['max-w-full truncate text-body-sm transition-colors', lastMessageColor]\">\n <SafeEmojiText truncate :text=\"lastMessageText\" />\n </div>\n </div>\n\n <div class=\"h-full flex items-center shrink-0 ms-2\">\n <div v-loading=\"isLoading\" v-if=\"contact.unreadCount > 0\"\n class=\"rounded-full justify-center min-w-6 px-1.5 h-5 flex bg-gradient-error items-center select-none\">\n <div dir=\"ltr\" class=\"text-white text-[10px] font-bold text-center\">\n {{ contact.unreadCount > 99 ? '+99' : contact.unreadCount }}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, type PropType } from 'vue';\nimport type { Contact } from '~/types/chat';\nimport { useI18n, useDate, useChatStore } from '~/nuxt-shims';\nimport ContactAvatar from './ContactAvatar.vue';\nimport SafeEmojiText from '~/components/general/SafeEmojiText.vue';\n\nexport default defineComponent({\n name: \"ContactDisplay\",\n props: {\n contact: {\n type: Object as PropType<Contact>,\n required: true,\n },\n loading: {\n type: Boolean,\n default: false,\n }\n },\n components: {\n SafeEmojiText,\n ContactAvatar,\n },\n setup(props) {\n const { t } = useI18n();\n const { formatRelativeDate } = useDate();\n const chatStore = useChatStore();\n const isActive = computed(() => chatStore.activeConversationId === props.contact.id);\n\n const openChat = () => {\n chatStore.setSelectedChat(props.contact.id);\n }\n\n const isFromMe = computed(() => props.contact.lastMessage?.senderId === chatStore.currentUserId);\n\n const lastMessageIcon = computed(() => {\n const msg = props.contact.lastMessage;\n if (!msg || !isFromMe.value) return { color: '', icon: '' };\n\n if (!msg.isSent) return { color: 'fill-on-surface/30', icon: 'PhClock' };\n if (!msg.isRead) return { color: 'fill-on-surface/50', icon: 'PhCheck' };\n return { color: 'fill-primary', icon: 'PhChecks' };\n });\n\n const attachmentIcon = computed(() => {\n const msg = props.contact.lastMessage;\n if (!msg) return null;\n\n if (msg.request) return 'PhSubtitles';\n\n const icons: Record<string, string> = {\n image: 'PhImage',\n file: 'PhFile',\n voice: 'PhMicrophone',\n video: 'PhVideo'\n };\n\n if (msg.type !== 'text') {\n return icons[msg.type] || null;\n }\n\n return null;\n });\n\n // 3. Logic for name prefix and attachment translation\n const lastMessageText = computed(() => {\n const msg = props.contact.lastMessage;\n if (!msg) return '';\n\n // Handle content (Text or Attachment Title)\n let content = msg.text;\n if (!content && msg.request) {\n content = t('chat.attachementTypes.request')\n }\n if (!content && msg.type !== 'text') {\n content = t(`chat.attachementTypes.${msg.type}`);\n }\n\n // Handle Name Prefix\n if (!isFromMe.value) {\n return `${props.contact.name}: ${content}`;\n }\n\n return content;\n });\n\n // 2. Logic for text color\n const lastMessageColor = computed(() => {\n const msg = props.contact.lastMessage;\n if (!msg) return 'text-on-surface/50';\n\n // If it's a pure attachment without text caption\n if (!msg.text && msg.type !== 'text' || msg.request) return 'text-primary font-medium';\n\n // If there are unread messages\n if (props.contact.unreadCount > 0) return 'text-on-surface font-medium';\n\n return 'text-on-surface/50';\n });\n\n const isLoading = computed(() => props.loading)\n\n return {\n lastMessageIcon,\n attachmentIcon,\n isActive,\n openChat,\n formatRelativeDate,\n lastMessageText,\n isLoading,\n lastMessageColor,\n t\n }\n }\n})\n</script>\n","<template>\n <div class=\"w-full\">\n <div class=\"px-5 h-16 md:h-20 w-full shrink-0 border-b border-b-outline-variant flex justify-between items-center\">\n <div :class=\"[isOpen ? 'opacity-0 max-w-0' : 'max-w-37.5 opacity-100']\"\n class=\"transition-all duration-300 overflow-hidden text-nowrap ease-in-out select-none text-on-surface text-label-lg\">\n {{ t('chat.title') }}\n </div>\n\n <div class=\"flex-1\">\n <div class=\"flex transition-all duration-200 ease-in-out justify-end items-center\"\n :class=\"[isOpen ? 'gap-x-4' : 'gap-x-0']\">\n <BIcon @click=\"toggleSearch\" icon=\"PhMagnifyingGlass\"\n class=\"cursor-pointer w-5 h-5 fill-on-surface/50 shrink-0\" />\n <input ref=\"inputRef\" v-model=\"searchText\" :placeholder=\"t('general.search')\"\n :class=\"[isOpen ? 'opacity-100 flex-1 w-full ml-3' : 'w-0 opacity-0']\" type=\"text\"\n class=\"transition-all text-label-sm duration-300 ease-in-out outline-none bg-transparent text-on-surface\">\n <BIcon\n :class=\"[isOpen ? ' w-5 h-5 opacity-100 pointer-events-auto' : ' pointer-events-none opacity-0 w-0 h-0 ']\"\n class=\" overflow-hidden cursor-pointer fill-on-surface/50 transition-all duration-200 shrink-0 ease-in-out\"\n @click=\"toggleSearch\" icon=\"PhX\" />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, watch, nextTick } from 'vue';\nimport { useI18n } from '~/nuxt-shims';\n\nexport default defineComponent({\n name: 'ChatListSearch',\n props: {\n modelValue: {\n type: String,\n default: ''\n }\n },\n emits: ['update:modelValue', 'search'],\n setup(props, { emit }) {\n const { t } = useI18n()\n const isOpen = ref(false)\n const inputRef = ref<HTMLInputElement | null>(null)\n\n const toggleSearch = () => {\n isOpen.value = !isOpen.value;\n // Clear search when closing\n if (!isOpen.value) {\n emit('update:modelValue', '');\n }\n }\n\n // Auto-focus the input when it opens\n watch(isOpen, async (val) => {\n if (val) {\n await nextTick();\n setTimeout(() => {\n inputRef.value?.focus();\n }, 150); // Small delay to sync with animation\n }\n });\n\n const searchText = ref('')\n\n watch(() => searchText.value, () => {\n emit('update:modelValue', searchText.value)\n })\n\n return {\n t,\n toggleSearch,\n isOpen,\n inputRef,\n searchText,\n }\n }\n})\n</script>","export default \"data:image/webp;base64,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\"","<template>\n <div class=\"bg-surface flex flex-col border border-outline-variant w-full h-full overflow-hidden\">\n <ChatListSearch class=\" shrink-0\" v-model=\"searchText\" />\n\n <div class=\"flex-1 w-full flex flex-col overflow-hidden\">\n\n <div class=\"w-full shrink-0 px-5 py-2 flex items-center gap-x-2\">\n <BLabel class=\"cursor-pointer\" size=\"lg\" :text=\"filter.label\" @action=\"setFilter('')\"\n :color=\"filterProps(filter.key).color\" v-for=\"filter in filters\"\n :icon=\"filterProps(filter.key).icon\" :key=\"filter.key\" @click=\"setFilter(filter.key)\" />\n </div>\n\n <div v-if=\"currentState.loading || chats.length > 0\"\n class=\"w-full flex-1 px-2.5 pt-2.5 overflow-hidden relative\">\n <BVirtualVerticalList ref=\"listRef\" :items=\"chats\" :loading=\"currentState.loading\"\n :has-next-page=\"currentState.hasNextPage\" @load-more=\"chatStore.loadNextPage(activeFilter)\"\n class=\"h-full w-full\">\n <template #item=\"{ item }\">\n <ChatContactDisplay :contact=\"item\"\n :loading=\"currentState.loading && currentState.page === 0\" />\n </template>\n </BVirtualVerticalList>\n </div>\n <div v-else class=\" w-full flex-1 flex items-center justify-center\">\n <NoDataDisplay :image-path=\"NoData\" :title=\"t('chat.noMessages')\" />\n </div>\n </div>\n </div>\n</template>\n<script lang=\"ts\">\nimport { computed, defineComponent, onMounted } from 'vue';\nimport { useChatStore } from '~/nuxt-shims';\nimport { useI18n } from '~/nuxt-shims';\nimport type { ChatFilter, FilterKeys } from '~/types/chat';\nimport ChatContactDisplay from './ChatContactDisplay.vue';\nimport ChatListSearch from './ChatListSearch.vue';\nimport NoData from '~/assets/lib-images/dashboard/no-contacts.webp'\nimport NoDataDisplay from '~/components/general/NoDataDisplay.vue';\nexport default defineComponent({\n name: 'ChatList',\n components: {\n ChatContactDisplay,\n ChatListSearch,\n NoDataDisplay,\n },\n setup() {\n const { t } = useI18n();\n const chatStore = useChatStore();\n const activeFilter = ref<FilterKeys>('');\n const searchText = ref('');\n const listRef = ref(null);\n\n onMounted(() => {\n if (chatStore.conversationStates[activeFilter.value].data.length === 0) {\n chatStore.fetchConversations(activeFilter.value, 1);\n }\n });\n\n const currentState = computed(() => chatStore.conversationStates[activeFilter.value]);\n const isLoading = computed(() => chatStore.conversationStates[activeFilter.value].loading)\n const currentPage = computed(() => chatStore.conversationStates[activeFilter.value].page)\n const chats = computed(() => chatStore.getDisplayedContacts(activeFilter.value));\n\n const filters = computed<ChatFilter[]>(() => [\n { key: 'online', label: t('chat.filters.online') },\n { key: 'ended', label: t('chat.filters.ended') },\n { key: 'active', label: t('chat.filters.active') },\n ]);\n\n const setFilter = (type: FilterKeys) => {\n if (activeFilter.value === type) return;\n activeFilter.value = type;\n };\n\n // Handle Filter Changes\n watch(activeFilter, (newFilter) => {\n // 1. Scroll to top (Assuming Virtual List has a scroll div)\n const scrollEl = listRef.value?.$el;\n if (scrollEl) scrollEl.scrollTop = 0;\n\n // 2. Fetch if category is empty\n if (chatStore.conversationStates[newFilter].data.length === 0) {\n chatStore.fetchConversations(newFilter, 1);\n }\n });\n\n\n\n const filterProps = (type: FilterKeys) => {\n return activeFilter.value === type\n ? { color: 'primary', icon: 'PhX' }\n : { color: 'neutral', icon: '' };\n };\n\n let searchTimeout: any = null;\n\n watch(searchText, (newQuery) => {\n // Clear the pending search every time a new letter is typed\n if (searchTimeout) clearTimeout(searchTimeout);\n\n // Only trigger after 500ms of \"silence\"\n searchTimeout = setTimeout(() => {\n // Reset to page 1 and pass the search query\n chatStore.fetchConversations(activeFilter.value, 1, newQuery);\n\n // Optional: Scroll the virtual list back to top for new results\n const scrollEl = listRef.value?.$el;\n if (scrollEl) scrollEl.scrollTop = 0;\n }, 500);\n });\n\n return {\n setFilter,\n t,\n filterProps,\n filters,\n chats,\n activeFilter,\n currentState,\n searchText,\n listRef,\n chatStore,\n currentPage,\n NoData,\n isLoading,\n };\n }\n})\n</script>","<template>\n <div class=\" w-full px-3 gap-x-2 flex justify-between rounded-xl transition-all duration-200 ease-in-out items-center cursor-pointer\"\n :class=\"[isSelected ? ' bg-surface-variant' : ' bg-surface-variant/0']\">\n <div v-loading=\"loading\" :class=\"[loading ? ' rounded-full overflow-hidden' : ' rounded-none overflow-visible']\"\n class=\" w-10 h-10 shrink-0 \">\n <ContactAvatar :contact=\"medic\" />\n </div>\n <div class=\"flex justify-center flex-col flex-1 select-none h-full\">\n <div class=\" text-label-md text-on-surface \" v-loading=\"loading\">{{ medic.name }} {{ medic.lastName }}</div>\n <div class=\" text-body-sm text-on-surface/50 \" v-loading=\"loading\">\n <div class=\"text-wrap max-w-full text-ellipsis overflow-hidden line-clamp-1\">\n {{ fellowshipString }}\n </div>\n </div>\n </div>\n <div class=\" shrink-0 w-5 flex flex-col items-center justify-center h-full\">\n <div class=\"w-5 h-5 rounded-full overflow-hidden\">\n <div class=\" w-full h-full \" v-loading=\"loading\">\n <div :class=\"[isSelected ? 'scale-100 opacity-100' : 'opacity-0 scale-0']\"\n class=\" transition-all duration-200 ease-in-out w-full bg-primary h-full rounded-full flex items-center justify-center overflow-hidden\">\n <div class=\" w-2.5 h-2.5 bg-surface rounded-full\"></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, type PropType, computed } from 'vue';\nimport type { Provider } from '~/types/service'; // Updated import\nimport ContactAvatar from '../contact/ContactAvatar.vue';\n\nexport default defineComponent({\n name: 'MedicDisplay',\n props: {\n medic: {\n type: Object as PropType<Provider>,\n required: true,\n },\n isSelected: {\n type: Boolean,\n default: false,\n },\n loading: {\n type: Boolean,\n default: true,\n }\n },\n components: {\n ContactAvatar,\n },\n setup(props) {\n // Computed method to generate the fellowship string\n const fellowshipString = computed(() => {\n if (!props.medic.fellowships || props.medic.fellowships.length === 0) {\n return props.medic.expertise || ''; // Fallback to expertise if no fellowships exist\n }\n return props.medic.fellowships.map(f => f.title).join(', ');\n });\n\n\n return {\n fellowshipString\n }\n }\n})\n</script>","export default \"data:image/webp;base64,UklGRvasAQBXRUJQVlA4WAoAAAAwAAAAHwMAHwMASUNDUMgBAAAAAAHIAAAAAAQwAABtbnRyUkdCIFhZWiAH4AABAAEAAAAAAABhY3NwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAA9tYAAQAAAADTLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlkZXNjAAAA8AAAACRyWFlaAAABFAAAABRnWFlaAAABKAAAABRiWFlaAAABPAAAABR3dHB0AAABUAAAABRyVFJDAAABZAAAAChnVFJDAAABZAAAAChiVFJDAAABZAAAAChjcHJ0AAABjAAAADxtbHVjAAAAAAAAAAEAAAAMZW5VUwAAAAgAAAAcAHMAUgBHAEJYWVogAAAAAAAAb6IAADj1AAADkFhZWiAAAAAAAABimQAAt4UAABjaWFlaIAAAAAAAACSgAAAPhAAAts9YWVogAAAAAAAA9tYAAQAAAADTLXBhcmEAAAAAAAQAAAACZmYAAPKnAAANWQAAE9AAAApbAAAAAAAAAABtbHVjAAAAAAAAAAEAAAAMZW5VUwAAACAAAAAcAEcAbwBvAGcAbABlACAASQBuAGMALgAgADIAMAAxADZBTFBIY0oBAA3/JyRI8P94a0Sk7kkM2jaSlKblT/r+QxAREwC5S+ACUAE5bSs9Krb1llVbwW1Tp4AboCSZCnIqd5OE/JAf///r5baxXu/P95yZEcsyYxxmZoZtSim3y1tYZmbeMi7DXSoz3FLK2aZtuGF0g44TO2YUzsw5v8/rjzOSZcuWVF9IRP8nQE3bBgx/8h2XIyK94f+//pPbVs/n+/ufWZJWLDNHMsgQBlMcqBtO2hPGcpKT9JQbcgpJyszMbThp4zAnrilgxppJtmwLV7Aw/9/7eeP7m9FKO6NLPbci+j8Bfmtte7Zt25q5bOeH9x1AAb4BOoCIiJjY29y3bL59Dc7zvr8faCCi/xPgybZt2bZtqyml9v2+27YC8N0fcJkRIWw/DCRiBTGwz2zFMee5WBGI6P8E8Hn/f97//Oc///nPf/7z//P+5z//j48rwVOK/0+CnQ2nLP9PQnfAU+P/5/3Pf/7zn//8/3wl4//Tgfj/cJDP+//z/v+8//+/GOMO8f+xICcPPsIvGWPUDFODbsK0mCabBgQBgo+IC57KbO+BXfONg5dfum//vj275sTMM01keWRrceIYdeP1x7ZOnNg8ce8CBIKPeJPVXPCoi3ftvfSaCw+tVx/dXDanOp/D7ODejb17iiuvWhtzto/ccuM9t9706eOY+Mi2cW4+5md+/OOvfN1dLpe4Xi2wJ9sBTcSbu3dubp54+vWf/klPv+J45ke+629/3z3+/9Zvnrr79Od83kc+fufec5zbvTWCkQlGF3K2Ou1UxCzj8dRHfc6nfMJHv+/L/toPvxewR4hJp7uf+LKP/dmf8bJ77+HqXpzVRjlqpYmGiQBlZ5ltYLoc1C7rk2/49C/49Pf+9b/1HfcSH/klBU99+se/5nPeePc5ri7kHHUEZHu4kAOsE8BQMBSgwR7SzS5z92Pe8Es+8zv+wl9/DzE+gsugeexNP/OTPvLJ27i64BFgrDAsgMZ1g9kd7m8QYjsIyk7Ha3/JF/uXfukujI/QMuKpl33mP/zJ712gymC0cNqBplVkG3BjcBu01cllQJYDLEyWI7Knfu4vv/K3f/w2iY+8kuK1n/g5v/Bj3gFwaY8bIsYyAVdrwpgCIXIHQlxxh3SFTJOAFOm2J573R5/6Wz91s8FHUBkQr/vcN/60j7gAXYYbXRogEqvRFZiSpiaGyKEEWVACsJqEJqY4O+t41tc/5ed/4ijVj5CSgrtv+Hmf+HEBLM0BywAy1AAxgAkYxoRgjSAWlmYxSUKzYgDCkHb5zL96wX98e8dHRLnwxEf/+p/1QsAFnJAyzDAtGArExaYkcWFgQVdyChoIUHInoEkWoUR77Uv/2i/9D4mPdDKaT/vcX/yqBRaPCN1yZjfEUiBDK4VMCNBKphDIkAxtU12T2UIzAbLMoe84+q1HjGdWZln4iBXDmk/9KT/tsxZ64ThsFQMEVsXdERYEN21axU2F0mTxYEmmAGlngmWgGo1gQov0cu3vv+hfXmc8o/Y86dN3xUemWOBH/5Kf8rqFlm4iTXZqoMxZ2HE5VkJOCZbJchACK3UEBk0NK+60E7oaEy6FRGo5e+3f+s+/ZTyTHv2Fb7ieR6a68Lqf9Ys/fmEvdYywg5FphdrSMRswEWgZEmJG6O4wEQilQDkUOEtoAVNGQKma8rhv/7UfNZ5BT7vqY582PuJE6vHP+OKf/QxwO2OlrImBkGm5IoQkIUkTlEIxrJjATsgKEmCuCAS4CLJC6IIebl7xnR/6L8Yz53Fc+qF+pIkUn/DFn/uxwa43cJmjNbTqYGU9uOgebuzh4oUbboc02MOyDi56OSxyyvaG8jJD5VDlUe7IEgcNPcMeE/Plvm+9/fumeEYEd13KKz92qzxyVNy487N+6acDkceSR5QDJJTNLICFwmoCiQs0rCTIcpTLlCDkKgG60liAQRoRQgcCcdr9zUe/Y6o+I+TaAzzj6l99BIlsvPoX/NpbKOlgJbkeiBKCAeiSUigpWAzTSgKGgUyrYDtiEFqmlkwrzKJSMVia9PgXt/zvrj4DkFdts/EVb7yz9JEhc4lP/iW/4h5cOgagcQmBZYTAqQRYhqnQ2MFY1EKNFGB1j4AJElw0WBRKdZOJ5RAlYDSF9Nr3vuOnOz74mmc/l+21l1z28534iA+JvfncX/jTgt07LLocNTXEObOJWSS0QnQbsBWZsKwBWI6QAgMazk2AblPOcrBKOFQFDCRtSnrvv/+lXzM+mCKw6yu+CGfbB//qR35DHvE5F3jyl/6Sl0O3e+dYaRWICVKkFIhjkybdpCEAAyQEApFChExXsOQcA5aCm8IOQCSSribRmJoO/fv//k7ig8ixfsUXv/gYLuezftLf/4P/+9bFIzts+aif+2vvwSXvzAVgWtnDbWLKdQB2iAnMZQATIARrSnYM67CMg9gxSwOakB3DbY4gBGtEJICFXZjtq7/5Oz4THswX/o2XT7B0PkUf81cff9ub33vT8UdqCMsn/uZ/4AW4dEdWAiEhwTCuhjDbLMc2JZ1mO2ogkCQtAHdKYgB2QsLl2B2SNK7PNqt00klTTWK04nP+4j84Vv0gOnHf+sYuTYremu15xtM23v/u7UdmWPDJv/mLgIuHO+vKUAzQDvedSIEGJGGK+4pQE2FDiUAKJUgokUJNHYskrYgNzHIusQhCwNF53bO+cxkfNHXf9/+fq1/+JZe6qGV293ve8NkLLy4ekTkX+MR/7PNglxtggAlACJSAhhIBsfskKFhjiCSYIFCDgCCklDa2Y7gdSakRwIAUDJRADBCr6x/f+f3y4E3f/Du/t/ZXn1E9zf21Xywg8ZEXtnzSP/YzYS/HIBYTsBrSAOxYElgMQALEVDaEaYmGJWQCJIWSUMPVDKE0gRhgGVDDaicmUmKmtX/6cx+ND5YGOP7L7/zrj19m/p5fZlUeeenyMb/li2Fvbw6DACQEo4lAIUG2sWIIASRBVjMTIxDJBlZJICVkCJQShgAsNUObgBAl6QTCavrar/+e7fgg2bH6DZ/4C2sbt/4oj8w0etU/+kugy9y5gAXaitiOQArQkBligJYwNRKNMe0gIMTZaEJAyBhkBwOYYEcaUiOREGgCgaAFGDLxJxa/YHwQOaafftTL+K0t4iMuhOXlv+bXRssdmhazMI5tAsJkmTChgx0aFkkShmUKTHQlXVmnpqYkXUkXEdfJSXKWYcdllgncwZQSS6qJjnSo5cbf/cnP8mBWbvnoqz7xRtI80lIvPP4P/aalyzhUcLAB2jIhNckySTRWExM1sqAUBxAIJcLKUCmEAU0TyXkdCJjIHXBTC8wlAdNF7ARQZkg/76u+ZfFgQvqGyz8wRx5hKV3ufNE/dgsvHDfZKkRDmDCblgHDgsAiUpO2jBWim06FEivmTsiqBWLsACwipVlqLuK0iq3jYleBzYhtAmmKafyJY6+PDyKqPzMR4iMqdONz/7+vhNt9vAgY2VB31QDSUoLUDZFlAgiBGGJVSiWSWbKBRXGFiUAXdyxw2HIgGygBVlNZTZOAAWIX5fa+v/n9d8cHEXzy7kM8wtKNj/qdP41uvTN7EYRtZl04qExoD7OwqY6AGIIUFidKrZqpcsKdKcIp1glXhYtDsym0HNI2s7IIlsOWZZQQm6oOTUW6wkue8r/lQWzu/sDV4CMpXB77lb8FdgdGLwgUg1xECEFavQJuHFAIUCOFuIAQggVaiCyCa2iEkyUWKNVgIa7LADUNCwkNiUhAoolke+1v/Pqnqh9EY/G2y/MICmGPn/M7buH25rDLjkCgBUysaIGyJkAoBVOAuMAUKIVAMLDEECCBMK0hghAdtoCwIgQoC8rtqLSQqAUIBKBHU33ti36m44MGc2PCIyZd+Am/+yOA7iQdkAIkV22ghrMDIAJIiJwFEJOzIFdlIDkLiTCgANJw9gAahIaEJgQbzgWEBCxWQwIMgL/4u5/gQdxLHkE5F5767b8YykHe70BXwRJwJ7GTJRCeSJKETIAQIEFCgAxJEkJgJwABO0km7tTEAFkAJBCJCSKVpuDRX/Ufp/igwUdOyIUv+GfhMsOC6yxjkVIiYJgkYSAQ7rAalqbLEbJD06ISBibAKhiUMJlAmqdSMtwBEgOQRaETLDsBLTASAKX+xA3vkEecGj35z34u7LEpJEAmD9pBhJJgRgLJOc2Sc3J/CzmbxGRkMGHgDgQCCAE7WGZCgpRHkYCBSFc0QiIOOvHQH/3fHR9hYvSzviR277JcGfaGMqcEDGliWtFFxACNqaEJYW9gVsTWyeqoYRXbEYwRWUlXkzBYxrAUlkmKCRexGBA7CSUlEUJjBTpfcefbeITpXHjF7/g8uhyzCiFhkoABQ6G4DVpDAyQS4koM1AA7aQiSgJsDpMEyAAmSgIDADiApkCAxZM42pOwY2TEAJUGLru1Lv/JHpnhWEU8y1saYZdwcj+GdufDs7Z3LrXsLdVkgbl+49IHLyTxP5oWf/iVwmYMCA0xKJDAELNMQUM4dAQqYljBkgyFYmqRJMFCaBmgAQ2IxCAHKeVhhCEADuV6shC6sACFNiuKP3fomziajcPCS+Z6Lr3jctbvXZnG9zdu94c5cPIApueTt3rz9h9/29mff9ew+//yle3q53d24vPDC88/ddh9PdjrjSjyfJHvzT38x3N6hdQAWhJiGwnQbYRtwQWMRJSRDI6RhByEBSoGQYR0gRFlRCIUdwBKgoWEZZIcwBFlFloI0hWBCaCoGCWQ6+Ke/fzuePTh/wdVXPevS+dbxBaco55thZG5wOO7IzcHrP/G1r3zs5Y97987McVHayx77/PPve/uz73vPC++7vbzwQi+22b7ryObmtOz7JatyHtnlY/7QhfZOATRgZJqcEwi5r3FdYEcQQsEQ3JOdEMBoEnlgS1aEBEhW3AlDgDTkbGoCNElkx0gAKYhdHfK6O94pD/sRyLj6VVdfe6hlZyP2cF8Jk3aUYoA5ZtSRGebmuLlzcOflL3/VR7/8yZfdeeLO3LkxhGnpcloePTH1JMvt7ds/cffRbXs5AXSfL5L1V/w2uMwBMZQ7EjlQDEAdFQzhakAHUDNAMEEKpERCsocle0OwN4Q5ZQ4Rh2VDsMOQOwKnNNmxsSQJHEQLiRRGEo0MGiz3/ckfmB7uoswvfsErHjVbAq07JEBVuExJguRRNJIRQyvAwiyzAAPirN6M2Rprl1ywa+/axv5do0aYrc33750NXFqm+74bj9x7+5Fj9y0WPfVEL5dLMj0Q8TyFy93f86ksNws71NABIK0CqyQMq8ByE54wJiDQXCdYh6aGBhoyZIemhARLdsDWaYcECOtmM6YQCIF1toNlkk0hEKy2MJSEtFUGzJfc/IGHtyhXPP8rHnMEwMk5YEAMAdI0TEiaMOS+DbLcbA07YZcBdw9YunSkiRRtEbJx+f5da7U2T6i64Jrde/evr2/UCNOyt44cvYONm289cmzRm93Lo9ThE5unJOcp403/clw4gIRkCoYkQ5KkBmAZgCQtaQIyBggwVy1ckXUoacqYlXJyh/s27cAeAQok5HB1agKrgWiCoRMDEsGKhh11cMmX/tDDV4yOl/yRF24DLmZFMQWCBqA5limJlFXAAFnB7aAYMgESXWjIyJBAjJiSFoWCLix71JhtrM3WR2XM12vXBQcvg8sv2rM+r1mcjuPhI3fffmJ70+3j987r6L33bi487yDxq38r3d6ZxZAkAFfRFTh2D5JlaNoDYBVZgVkOg/Ug19mO3QEpMfZIW6apZpUQ2bGxZjkqYbYDDGNaRbeBYQ+ToKFTUt1Dyk5p0aEHBird46s+8ZH48FQT7nnd6y4EnSrz7kqEKCGA7s1KjdA6QDsmexizaIHksRqWcLKIEDuJRZMiVgxNFaRr0EAELTCkYDarGcwy1i+Bqy654qJda+vUiPSyF0ePLpe9OHz88D03H14uthcNSt+feErx3MbFf+Ynsx7ZAgMJrpkEHNUAhEwAEhNuDEYICBECBmA1QhNIKBAMcc4US4YypxBIgUxZBiQaaFinNESHxMRA6AoChqLD1S/6WXkYTrq5+utftQ0datCloYNUV9rqlMA6QeNKO5AAmcDAlAQCzCKFABJiYpAYOqUpEJAABAsTAhYdMAYtCYApSGbrB2D/RYf2XbBvNqv5vrX1tV2DtN29fWzznpvvuO2248tpWp5oQO5vVgyegxgv+5I73N5oCQwJkCmFEsIQogFHgUyYRDYAMYUI0ECmQA6ASDCcPYFASkgSgBJXaEjrKAYg01JiDASh6ASiiQbSKc0ffceN1Q+W+FAR7HrM136hsKxygEWCJZFIoHRwdYAUMKeEAeIgJgXYWWc5FrBTDpgQgykTLQEKJKQjCURLgykwBMBghAJEgpBgpyCz9T0X7JnNNtZmVet7Nw5deGD/gZqm7Xtu+uTnji6X843j29Pm8btPAIIrGM49rZ/wb8HloJzVMmZNSCBJL8MquB3t7EBTkgmukEFjSZLZrJQNAUkchRAGhqw0yUoDaXGOCcAgp2XCaKAogXSSxiQNAaaRJlNB6Kc+/0eah9eIPPUvPE9Y1qxDE0InUh0jFhpoZiONbEJ2XEghpCYwSXZqsmEBUwAZWJpIJO2gE+gKRkgaE0yXgCVBCFKYToBMiVYHoybAFGA0GetruzY21td2Xfy4x1yye4ztrY3B4tiddx45sujNzaO33XZka6nnHLJ80e+FhphWk1UQAgMDmOX67B4uxATsACSnNNyZMMFIwCCmTEyAJG3HpCbcASTZIY1ptWGdMEHDuG/JqomAQYY9k8RS0o4//39uiA+ClO1DQxqv+OvPh7bX22AKJRiAWHJSA9MEbUIWARJCgGkHLYBpBwbCQoQC0onB0BW6IhGIgASigS6AHlJ02VUG05XYM0ErIoldMoQ0pFGqh2RtXqGoMfZd/ISr9+2b1fraYOrNE9ubU2/devvttx07vuyJPgcgft2voWQCmJJkB/bgLGDM6nK0TJIhq0lSzgodKcoiuBrA1FECJyChaUVcsWkPmhIkEKCdYQeEAAlASAggsZCSYDXBVFMkElM+6kU/Iw/C9UuP3s1D4liy/tV/GpYZPdA4gGoKC4uTBxXcASYACWmWAUOQPRB2sCFhSGDaQdIDKBMMEIMDEmqnwqQJlhQEQ4AiFlKQDlBtYdFAaSA0waKTrjhAmmhImCxIrLHr0isOHNi3vjFq/cI9a7tq6u1jt3/247eeOLacTmydtYX1n/6J3N6Ytg0SGEBCTBgQxrE7IA0xyTJBDOGiIRkKTWlTOzbFABSSgCUkYJLuuALI1RQM8CSwY5CAYQEmAF2hbGcAhg6UTPOv/N174oPg2sO3PBSEJc/7O9LTOk2sKBgwhFMUE5EEEkgyFCABgWQHKSEBARKkBDEgAUwkGAMYgChlImAiQGFASEw0QakABsAUgGHVQYOzjlpJk5SxK5HQ0R4gkLi25+D+XfvWNvZfcvnl+zfG4sjnbrjl1iNb991+fKfg2VLs7u95mo40ME1SssYwLGlqylkGjBAxMAlLk4akEbQBRJIazoI0JTmAWCaIJoAEQkoMYAigCwKB0AUGAxEDAXAophQcPOeqX+ZBWM87et1DQHT+t18LnTVMCQEpSAxSEggmEkisAUtBgI5WkJCOTRjSMKEhSAGSJlBIEAxBg0FCImABMRIAAwaIYCAGcCCBsGNWgsEBUoSgAwMQByADKCCiiUixur5vdzZ2HXzc4y++aBfHb/vcLUdvvu7OFiB49hN91b+13Ls5SkLIhDTum5A0hOmSmJAxgERakpYqJBghIEgkgUDSACFXJUBsuNrpbJmYYeAOVwRiiAY6CQhEYjABSZx2fc0vbMYHKO571u0fO/Nq4onf3OgI99+CsHOnDEBDIIDygAkQiHVwThBIIFPYxBAhgIld7GzABCEQDIaTGnY2YUdLAxIMOweBaAwYQEhASAwBiKx2QSQmQhdoQlOmZrPZ+uVPf/xle3ZPx+7duvFN128ugeqzm+gV/znce7wEE0KmBlwBy5RVVlcw8hQgBA2CBqSUYYJZIiEGSIABydWQsCFACDSygVUSSMMVMhFAlCRCBAk7xkiwMFq8av4GHujqJy8/AvGMChNf8ndgMSvZWUgMmIBBAkRjQQCT6wkkCAJmaZA0JddFAhotiIadgwEMIQgmshoMIWgRwWJHKxqInFSCJIABsIAIBAwQgWBAyiAFkoAhaAiaKEaghHHw6Y86tH7FNet3/5833nWsCZ69hL7mP8PlbhDBnBKInAAkbChEloG4mglpQLiDAZaAwWoYCKHtAZBpBEpoRCN2RSIhAEOJBliGaZmUgKRjQAJmJXSMkWCAOO35oz+9FR+Y6cCfwqN3y5kcnf35V+O03gapDhgAKcFgSkkQIIINYZIQhkACGGQMCSQYJAnJjgaxACmNDjQABguEGEBCACQCweKkMSAhIAEJQgirAYMAhZ0gQGlMjBQisTBiIiQGsEDSZCrm1155xaue8tk3fOijxyCepYTp8v9ClzslEgImWJoQaDHIKkjAUNoEaQ1AiQggpRgHIAkGYMQAhpiAgLgMZxOgAZIEATqCwJAQSIESEyQEJQAB0hQ7Br7irrfywOayvzLxdS9+/VsXZ1D0ym+fgDGljIEAQgwEAoEYTFbAEARBQO4r0CDIVZEABGlIAQ0BCIFAIIGICRgBAmFHCyQFBtkxELBMMBoCWBIw4ZQTBBK0IiGshgABBIIEwmowBYYCq0Gzcdmzv/zRN/72W66Xs9PYl/5X3CNJmhKQs8RZgAlgCJAQTOS6XBW5v1w17p8COciDyoNOAIIAchZEzgogV43zcN8AEeiBQLFjsaOB3v3VP7OMD8Sz/yEsL/mKJ/3gx86cmnjSv4NlZiAQKCAA4dQDYdUE+cAn0AB4uirYKXK6YwBCVk4eDRCAQCCGk0cSTmoIpzmyGiBy6q6E1XDyQAQoECpNaMnY99ovu/i6n3/fJgTPNvDQf0GOsAWQBYVSYBVgB3I1WQYoNHKCAGYRZJmmZSBScgVLYQXD1RpWSbpmBiAsGjRQA0RMzTK2xriGGEKhFKEdYCQolEQTMOZrP/FBeQBrdvueOdPW5y7mjM3Ec78Ne96dYY8ugF6JBBoSOlKSpjQxkWVOKy5KGVNTiKwa7snVZBmATTCdYJrSohNJJ0CTaEw11SQSXOlEQidGA1YniCQak6gESxOgg2UMhk4knUQkEQyEJoCmJJ1o0gnKAKuDA1PYWTJ70pe9LK//1Vsknl2k934XWAmwitVgoWbhtKnFhKxggBaAlNpOTDUkNZkQsuIJzEBKNHYgypGCoUBYkVwbYhUMpiQhQALdyQK0QBIwHQIY0gYSIRz62u/vB8J3/eDFf+ExR3/sM5yxkWf9a5phBOgCsSB2IF1IWLXs0oJmoAQX1B1KwZpCsBWhHSFASpBFgoaAwbIpg0RKgwEh1V0GMAa6JGJB2iTQgaRjAGMkkigQJVSkQ9AQFEoIAYFSIBiIsYuEtgKgJRYEIRZdobnsWV/1zN/7/k9J8OwhnX8FizUoxG2YvIBIO8qm6TZEGrJOEQMskywiLJMBOZsSgBamXFSoIbeZIIYM0E0wSM5C5ESN2DoVjUmYxUQ1kHSnRCgQQ2yqNG2VjfWln/hEfAC8/ae2//rn3sQZG33mv6EZUaSAriBAUFKCpgQTQEoTAqyGqxCNQU6EaIFJKNSQkbPaVdIE0qSaSBBMjFjpNCnFRCCENomhQ1ASgwToAsTCIIVKAQJREokW1mQV2imMpoxWgE4AO4V0SmJX5KSdRKB6ya6r/sQf+d2fuN7Es4Wa+CsbbK93LHBy6YCLSsAq1EHBUMCxWWOUNoVSki4IuFOQE7lK5qxrQmhGAslEJbIMGA0sCoVIIVAOEUcsKMvsgOxsgUiiJKgUgAnIo178Uzyg8yNvvtDdZ0xNPPPbWdasLYlEI6lGGUaIgASQSOiqBrCEKXYwYAdYjiAQdvYoAIE4YkEKEtIkXUKQJgSkOmhBmsQoRQeBGKsJQERKTJdEAmAiSlnQKZQQxBK0YjVdYNjZECUGuqqBLiAGCUTEgtgV7FT1knrMn3/xm//HLVB9VpCJr3sB2+vYFXsfM87MDStDZtVb72PMGRomLJll9cpsn2EH22l2Zope97x2lqWxW7ay7ZrtVhthbmzne8e7gSQQjQRpsDNFSq4Ttze/8GvfYh+Aqe75yMSZ2vMf/S/+n3/u8zZ3a2rrXdbeZ9Pcdq/bespsh+faWg3vxKS9wnb5jk3Yyr134Sn2DhPaaryjvdM8R3udZcfazVa05Xs17cvU2mKf97rZyrhhglftXWs/2Kub7dwmsWJTc2af96654LAXP+W3fN6f+cNvX+lDAHnJ17NYt8Nua9F67QYNbrtH2tzau+beztpurflejUaTvBuZxW7aGtLLkHvNPnu3tXq1tbCQHuxeWtNki0YDApkWxBBAMElgEOr+tNf/RT6Qzo6/5RKIZ4T9O/+n//vz8a5lWjKvWlvNIqa0zD3aO26vqVma5ntpDXOvrO0sE73agkzCioVZWWM3aGH1yliZ72Vq92q7LfLSejd/zHzPfe1Yc2aZvGNpq6dW09bSMpod7q1oHdZ54fbuZ//WN/yvf/J57ZEXD/5zegaY7fY+W7CyM63QstvukUx25pY1Nc2H2ZkW085Qy5zdlj83H9zO3ofW7GAfjDO5fbllPhzaboo5Z0FQGhqBOIIwNAm59/hv+NK32weAEx/cDXIm3j/+6/+H9/m8fZbtaKvdRrK2D3G2FrJrSyZYjdbqq1huJmvihjKr5mQjQr4PcVsWQ5jbxGHOgmVui9u0bmvd3lmw01IGMfVqNYpmsbaPLdqCacEuazvYB43ltDfe7s1P+x13/61vRHq0pflbwECgaSvE8M7X7GProIYzWk9txXYJ0op4ZciCfOdvxGJClmDHpIbGbZ1FnuRngxqEEEgEMkVAglAakP3Zj//V+ABO0xZn6P0//jt8RlYLjVbL7/w5q0VEFmmojYZgITvyfeQ7FkG+hmaZ/GXszHckDmKtMKWYnLHTVn6m+b2iKYzwDnbsPEG0hiVuaL0TFgs0Uhmgu7/st//Pf/jC7CMNXvM8lmtg4drdNtJb8WoH7/LWsR1G9PK9Vd6OTWn7WiOsTL4nbGefvcI/XmcOva8h7Tl5lY1gWhYmshVC3BiMBlsRIDHOTYiXO7/yzzz3gZAztX/0n/3b/p9//mkx+duF4ZjVUNYrPLW2g+2waH5OLLFGjLBV269XtHcwtdmhJ2xXYzFiK8xhgomFptHLahMZTehpX70sLV5iUkayaJOYWAuLNoYkREIvffS/c/yh79jZR1hNe/8O0xwTAxbaWvnzdG/C2o3t3GafeTkbZ2vindbQVu94B8tzltVCs7RFgx7RXvL9zoRmhx225raW72XJVGKECZkQItuUrkd8/g9/zwfizJ1/97/wf/0LO9vO7/lsTcsi3rnh5vu25rbs9mq1RdZiwXYZ9WLBQvM9Tfnbttpa4zbz2VpMNOTt/OUPU2ayLLc1yULT2pLXsnq1Mz+X1ljBit3gXVtkLSZakq6sknrviV/zm/+7P7lTj6pM/D06sQC59gjNx5rLLNpc9q62mywrZmXe3VBjPmZq2Jk5Jjemxru23t14neXdGWLrvpxlnekdrAzB++RbCsagMfKUKWctkSxf93P/2MPIv/Y/2T/3j6zznbU0zfm+5TtLS37XhIWaV2JnvDqmWDLvzliZnOEw11fDuofVNG6m2tTWXM/2D7/CXDNlrGYuRrJdsNuSsWKWbJ9g5U+vg32+aJbgXX4WKVel5M76Sf/6u3//27RHlDzl1XSlSYwLN2u1tn/Ym/ZZFpO25N66aauxJsvO27Xbsqy222q3d9R8R8t3m/Lddr57rTxaLcu4acFin72yRnpolEOC4AqEkNSYwaS3d37Fl//4w+i/5B8/fm4fw26rLxZst9g9NZLlXe+sM9HORk2LWBbZoifv8j2c9mrlOxnbP2xny87WPm9ptrOs21kWTFP01Gpapt22Wjes1dbKsnC+26KnqSfasiyrLX9svht2tCNNAMJsL/tHv+h3vkUe1eNvA1hN7JmdvaMNt30e7OZerF6WyVKzldVkt1c0PTfISM9tZ5qWn6HVWL3iNm23UvDOzs4732su8vPdl3etgCVSw3JTE0CGQFrGxKd/+p+2h0t6//5/7P/5B72zZZobLe9amZ1lWOghv3vdWNail2XZzdw0hFbDq9W0TL5HvLjVdpubpuW5vSMT9rrl1bQalmZBRmLlZTXJu4bVWDItLLstq7FuE9FCY9n+YROeIUmAdHG1e8cX/4v/zP8jPYriay9iuRaNFtpOs8ir7bBmEast0214R6x3DZq28pKMnaEtlu88yfsKoxc1oebnnI2aptZknttqznqxSIGSMIFAWQQhh4KhuffEF/+153nI/OO/8j/bxzDlBdkiW9C68S7b6jbvmlaMsjmzuLlppoUMC3Y9o8w7lt0WdltYk15p71bLyM/tGrRsvWttoq22VWa1JZoIq1m+d7ySGdpZY2prtUxM2ogFryQJGOxYMh23/OQv+Wd+0NlHT3rtm+hZG4mJu82Nd22NpmX1skxM0LPbecRz1nZ2e6q9YotmR1trbtYWrbab3hGmNqeNudUwfoy2eucVPXk3N7aSU4jtsEMaiRSJFsLwRbdfbg+TtP9k3qend0yNF9mOXsFivcrGjUHeWd5ZpmWtxcR8vWJkbd2W5/BOtsjUeNXQtFdmRS9qr2gLtmteYSu9ueb36zZN2b6a3WzObnawG5O1XevtrJ4sU9tO3q7lzWUJSBo0hDvO9tn/5r/x1dmjx9fOIEI0QGsWTJmfraGeGzHT4t6ktaVZ2SLjdubPu/nzynCb5Xs1L+edMy23tR2r0Vaz/GwaFrEQLAFLLaIjIDSwJnRnX/kFf2F5qPpv/efeP7fdyPbBJJsb2m47mkbzu9dt3lk3P1fW0Duae/Ei07SFZum5ySALGuKdNveuRxvRrHiCKcNqZKs1t0UzaTuWn00y4rn2Vn63d2isXuThrPnLRQ1M2UmwxLRkf8of+I//evaIyTT7YyznmE4Eg7y0pde9fZ6e7Gw3luZ39tnaPtPmM6boXbJ1TNb8XiytsSy7ybu9Y5FJw8I9aNqyaytbjSbWTMM6reBKDZhMhSYlQEz5q77x/7GHiPznZM6anSltB2urLcz1zubGbrvJu8aysrbmY7Qm+5hbs5o5xj7DsjwnrN1227Xl+57vdlswkdVY0Gp5ylPPZ6OYnVfebaUtVru5jd1WZo72zqtHGTT7PLd3ZPXj7WPvFsk6kUlMzGq2H/Hv/Nd/F3u0wIsvBIkxwXRt7oW2e+/jfZ7Mbbi3Y9KTtZ3lXWPy3aYxnzF54V49cS/emeYm78y9Q9tnE5Z3vXpu263Jur3Si8k7enbTmhqyDgIkXGeFHReYwNA+9hO/Ih6ml/yn/p9PjGhrtWWZW70dtlq93W497WzU22WYTKvnsJ3lucnQZLGmnty2m/bO3PK6pzmv+Xhtd6+bvKx7u2ma20TTqxc7r6ztts92nuZeTast77wsauq11av1ee8syzLLZ8vq7fM0wbQqE5KmJDmb2yf+gT/4XUOPkvTs6+kCDETDRF4NsuZ3r2w1y88Gi6apQVvzeTJk0Fi4bTdosGOZ79s7853Brul1M98NmnfcRraaBBIYZ93QMiYDxOK0yvzaP/fMQ+VPDu9uMcj0pU20qWl25meDXjE/mz823w2L5o/t2KLXDotsIdNk75jco2ZZLA0y2m2aP7c0qA1LJmstKwuN1sQyaLGe0qCx3F69TGGMM/UOYYABZtCUMLeXz/5d/+KPaY8QefnFUEoIBmvr5rvlFXZe9s4kNFnW9tnO1nNjbtm6aTvvvAsrevuHp6+d57O1NW3X8oq2WpPlZ97qtvPcI02jabu9jywBa2gIMJAsaVgmghFZ87Pf9f0Pk40v8P/88y8LGXoKK0PZdpbt4umMsJVZ7ExpMsgyabLb67COkR83i2OaTHZbpler7TCZtpu2C+vYjyarV75vayussyZCq+eWV2HX1tsn9j5BcYasw1Ome1g3FiYhFiOshoscu1/4j/6zz2iPDupPs2OwqcQOXjfWYjurLbctmDDBHKbdtms9yaaWuXfLhLjtkleYtElremfSrGWybIXp1XOLZfXcMvXOO64qBEMJgqvkKrADsozIa37+H8MeEtWvOeGe1Xg5ew6WHYOFNjHRtJ2/7JUtMc6TNirvmt4upsPc8Dq8I1sx0SzZu7Mmsk5btBXmwqJZmrll8t0wRWtrOEZGsA4TFqyehrNpmsokjbBmIhF2NEPOco5f9pP/9ZVH6EWPooeGyI5ZWyyaJmMtVvcsLJgy3027taWx/Gyw4CWhTVqW5GZWsLOe9AgjyHOvnVm3e7SGG2NlJ0iokSBAbAJDoNQNLze/5CvezkMy09qf5B8/sQWL2LiJVxasNi2kaYtRs3ZsN86oWcuytNVGWOT1ToO2ljy3NTUjN2L05JXm57Ju04LWC22y2m7YLUHLahaafC9/7pW8suwaGm3BSy16WQuwSCYQCQzIPdr5HT/wZ5EeGV98gk6QWLSBe1pt0JCFZuzWiAmLnixbLdMyabPTzGoZC7fh3sqMhCfy0rRMT+1raSM/XztGbGUtSwwaXAuUMFlEYMWswergM97wZx4W8JKDjNbIeoXFspafa9SsnraaNsVws7mtpq0Gt/Wc7czZMlbvrK17c0zTWosJxhrJdovJV8tk0H5gENuxTJM1plbPPRZaNvfOVliWZW4LtlrL4l3r2W23JZYpEJahpS7uSLdP/Zv/6ffJo/OlbG4AsUcnEull2dftNbfJH/Oy2r6syausWW3UVq8MGmS47bYsy9xofu9roU1+xsvukewd7R1fybQ1bhATQGIJkFw1MFxnIYa8ffwf+gvveUhYX870z+3VMpGxjxchY9l5HC+aRWbJ2q41rWWwziam0Rqte27vdoyd7Qz3dLtp1tLL927Q4oWm+fPc3BY3Wb3y7u0ftrP8bKzbPl7kZbEbYTJT77aDXuamNTJqC6aJAMlgVkASMEP3jb/239jpUXH1RUDEQCSSd5MJNmd+rqbnXhoyDW6YG63ZGVN+WTRafjaabLfW6JXpdVuYs9oasonWvu610KY1MYELskxMlEjXgDChCUCQn3f5W8flocA1LyBmocEi6Im222rTKO8zxzTxMhJfjXXbsmD5yndbsFg0uzVnCJrjpZe+DNnUFr5qVqzBWljmTGb5jmlkSzLfy21+r2Y3WJjvM47F0kwZGgEUQgMSyDIyBXOZ33j5I2uPhPjSpfMmmshJd4bmvJX2ui3L8o4Fw21ttayp7WiaQkbmbNXb0QQTMhzDMTKxtpudsXO+V7SYoyXZLb9NYjibEMaQkHGesIa5PPFL/8zzvOQj8MwtWDEydhaaZu1Sc2vTlDa5yUIaazUxO9NzLNmZNNnOLiwTLaNd0xrcrLX+0NSmNbGsNeS7lhW2G9zGao2YhptbkSf1Yz5bS6NXQ0zN3CA2x1L+dgiXI5BQIJntZp/8/f/zd/JolGtwBiQQiWE14tjlO8pIS76DaY3y2me+z/dhiXcOCiWsCGuyiwilzcneJ7cpW/ku39F857vJdwOgQCMUChCSIAZIAsiv+q6vs5cakfWvBdz8XEG+iGCJlPleke+EsKMFLc7P2pIJEZbvqBFhR6SRlmyhZhHlCEv+2JDfRYxYJN9NJOT7zB/znd9Hvg9aHO+QRX72JQhaIoYNgMiAfOKv/3du7VHAnifRBQYJAbD8efGK1lqMjFhzs9rZglHGaljLaloLFkzvrJaddzcmbM6yWL7bwlkm7MfclmX5yz0gSWi4ukNMCXJOzgI0PPVT/3a85I0XPQbHdivz58mfFwsW+pJJWyy/l+9lLeb8Xnb+Or8XbaGVv3yH/OUcLN8Lk5/TEkwL3rHW1PKXLbF8TzRh+X5l+euFnZ+9Q/6pggkwJJByPYRlfuMzX/qIeMzlTFRCJwQh2aZ4OkaanWZlr2J2aVOG7k3xUrOdvF08O82qPSfzLrYL233NsVbjlTwZkZfaVtl2YcrrxyswsQSoAWNHgB0o1AKJ1Pb4jX/hbfZSQ75ySTDHODwnW+HpYH1JXsmIkWanjZjI28lWdlvi3deErdgKE7bD3kVvB+/Ec7FWtuKpeOqL2CojRrT3gXdfr+Ads+5PL6J3NMi2Wq/wuDz3Y8VWeIXHADVAeSUFQmO56fLYb/8f322Pggtg1h2IAQjQ/HmtBhmtreY7gzZp0PxlGjTsBhkyNJgb28fWbr6bd5BJaMskmvxcptAgm7DkupQgcf+GACTAAONTP/Jvx0s98HKMt1gW7i3avn43a8r3QoYWmrWav81ftvy8ZfKd7wzOdywZNH+5YLd8h7bQwj2YQoO82MGyYF9tqQ3aWs1fN/m9wyI03/f8DBp2AchZBIz3V/iij/k/eCQe3DYgIWgC2rHtju3E3Mt2tPnYUCzlVTyf5umD7YpVLMeyz6awWiZtsvMuzBkiO8vcO5Mbq2ydzC2TwxJDCYFSI9QrSqbULAfAwHLw2D/8xy8vNePBPUwpx44MH1s+hg+TWLW2O9/z8XxiKkvxSqbGCq8Tk7yKWWerxm4xxXOH+WA65mQ7ll0mhyWmNB1PHUswsWqLY3F+ZrtiFa9iRbbTVnjnZol9xeuDqdkuIYEQIRyoAcnG8HLzW//kj9sj4LEtEDshaWKYNK/k1dzerbyzs3eyhV7NPdlt0Zg0K+/YbdL2WZrs5rbbbtxbu8jPdrC0yEpGeKVeVtuH7HyvpUiB0NI0OVsahjUlIczW/IS3veOlBrz6CKWj5siWGjJoL2mLrK/Vuq3FJHtxWJnId9tXW2SIrWzBu3da1FtLW1hou5Un39s1P99lzS1t7fbKbg5ZsGJamZZp6n21xW2tts/SkI1u1s60M4te5iwaiTukrQIJktAACfSTP+2PxMO/DkGQEIAYiEVtlkbaIWuwyM8WWmii7SYrsiTfJcSO3XK03DuYsPxsO/Kd5XcGp5Gf+W75KWcTAUGuGxjChAAJTPKmT/lSe8k9CQvz1wf5bpCfEfkdNMnv1oIg3zuyINYvgpaf5c9HCPLnaEFC+2qISSSZneY7aL57tUjIX5af+R3yne+Wn6GFRr7jRs4CBkgAggggyPo7/vSP2ENvz6MBC2MAYjh5W2uKne+eqBdaELwIa2li5M9rwb5YrIWnxvkl31l28I61nd2Pv9wxfU1Y1tc5lBdR4Ap0RYBwH/u8L7vwEpd9K/HdI8v35HvBsix/u3wvTHgnLH/5kp+LlT8vyHf2Y2GCBU20hRaWWAttsWB26BVr8k9e+WN+Tv5yfbUvy98uLN/5bmH5ztkVcuIBQ2BRIPnUn/6/xcPvMpoEkHCK74y0ZWIrc+9mHSyM/OVorcmarB9YrMlzYWgR62s3f/nKz+U7DVmTl2Bo8vN9EIaREgjkadEEuZoAgZD83Hd9jb20OPRoQOxYO0xo71hYPbHe8dSP3V+YYDFfIzRMK0ajCZNp+dtXbMdalua7BcsyfenL3/a0FpbFiLmv3fa1MGKfF1stbdEsa8L0p2VZpq+1spiulA1NmIFA0rhIsvOb/8JbH36zOWHHEghg/MzYseywfeZkO1bY2ei2tssQ5hjBakLL0nCbVRtaVhoamh9lbvkO0uyW76adra9ME4YQQCcSwEUYrgowhDDYx7zqW3hpx2fvZsezCmosQoZ1hFBY+Vm+Y9228ErmZzRBERYasrP0q6xgZ7RkLbEabUXLz8VtrTQRu8ncsAurCW2R7zTOdmjQfDffQaGMkN+NkN8GZApgKYEgYMCn/8Q/Yg+7fQsQEiwwSIwFq50na85ui9s71pSeetcTTVtWy9O0XfS0hH2eHp85WKbXDVkwn73EdtttcUaslcWyWH7nu4a0YCjTkg6ILCVDzhJC89O/9oWXllxhh2KrZVm88675uViQLXnl9wS7LdMOvcxtWS3vmjBZpgWL1TKtEI2wdqyWZbUW+W5rWlhYFtrKz5YVE3pffzlZevk5xxCaZTGxLN/TxCTz82lCuE6QgiRAQsLk7d1f8Nef42F/8DgRCavBRMvP5vcryPfUlvxuCQqRtSKCEcvC1HwvqElZjbVgbrslL2Qx58+t5WcW4l3TAtPCISHoICEGUhJIQWvil3/3t7y0mD0NDcQy+W5ZWWT5Ho7l97Jgbje0rITIO7ISE4ZaCJo1kQl2sFosf26xmqbVSluanzGJkbT8jLUb0ddqi1haWKvJDtFWY1lzphVWln4srlqapiFIA5ISwsHnPfY37CF34DiODhh2DGE7Mp8fhwlWZJ/t5izcyvvAOzLBDtYN7+x835Rj/UCzNIhll/cPZG5nJXaxtNCK7MjP3ZSDkSmAgVKNYYDc1x2SBnsV77CX1GVPIxFYEVmRdzC1LDE/j+ZoLeF9yE4sO9gxyivfKS+xI6Q1+ePkj0F23hGCHVline/IjuyrXhZr+Q6C/FDzfUy0hMjKH9suMRoMZ8f6ciA7IiSIkUACCQi4r3jD1/KwP3QcEzFBoICMZW5pO9nO7JAlvze31js2x7QaL2TR3hWP5NWys55WBhnHuCFYnOV7xewYYbRMFjueAbDhnCAIEzRQA8SQIEgC3H3jN8dLev9BKFCNhmWxj50VbcmyNMKCxXp3ZGEc7DA3+d5ZsI/vLBbyT1wWJiJirWAHy19OsLDKIrKInTUF+1o3osmCHawsv3d+ZtmxG2Irf1yA5Kog7CA0ZSgNDcDP/cYft4fbvi3SgYAFsuMNMre8W7LKlkHaVqxFW/faK3kfnLHbO9yWaWIZmc/L023mlkm+d9Nqr/BqYsdT23zwdmmvs328brmaYCIPqAQhgITQcLbcO7/0r7/7pXXpUaYUGVnGsZEdsshoQmNp4wYLU3ndzjuLzFqcnb98hYVY/j6t5iYm35N4hUX7w4LJz7B8LdqkZceCiWVZK99LWG073wsWWWROtp3sK0tmaJBJklw3hBru+7nv/FYe8ruWGIJIIBg52q5lt3sLr1hTNmK1ezS3xm1ajfmQ1bKMdWa72ztZze20FgtL+yV6ZDcI7zTL94KJhrwTgiaSJCTkeoKBXCMMkS7HG9/2tpfWc5eAxCuWPy7TK4vMhEXbwQpz2hxrN3+edltnWiyL3mEymWOaltFkmVgTa1qW9ZX1pGY1i96P7WJ2y9rBbtjKz7bQsNjBZO222lom2pyfo2W10WgREsQASVogSWJArg6P/6y/tQ+55UgwBCOBAHbzsTI0uzUrbckgpvkOq+X7yFbCcmvci+XPa5lVloVJk2Zq2aKtuKGlbNOZP7Z124WLrigEWiGGaHKeDREMwOHVn/HlL6mNpwMWFsKyEuxMw4KaP+5GyHfzMzQ3WRDablaeOBZNtEWTWFZWduidnzVk5HeZHcSgQZs4P4NgPoN8Z4ssO7/bcsbysy0ta247aweNld9pEoA1BAg0EQ4IKzu/8st+7CG3GEUQQkSCyStoeLfwLg8xaWs3vLNgvm9fTXNbsMatPZ8p2loyC4mxMC0TpmwtNFmW1mKHhexJrTahYABN0gCEJVgCKKuJCXZ5+c/4sstLaX4pPZPVCTuLfTXyvXzPba3MrgzZitkHL2dfTTDCbjTbWRpMbJf5jrYy+T4/o000NYkljBr7wGptWl/t1SJ/jBFtWqzFguV3ZkXmLKjtYtTSTAMzJCQhjTQAk1IF+MgX3v6QO74+WA0hnPTebqx8N3lOg2w1dnat9iWNW2iyz3bTMe/zarv5vrGV4WzR8t2otV2zdzQhUxo0Z9H21Y41wkI0QQTBMI4yhhUSbCdkh2Z9zTv2pVTzFYPgXf46rCxZiwhhoRdntbL0jmxpLcIW2dlZwW6yw1Y/fi4ak99NtB1ttR3yvWMhou2khaaw2E1+NpaW7TBEuyA78nO1FSb5pycIXBQQmpoAgRRAIIenf+KXPeQ+ftVuTEACIAWaw1Je0lbau8guzfciXqXle4W5ybZP7GLrh2ivMsSrZEdbO0zayl/mO/MzEzEfGvke7r8KEAYIuCokoJsgqfKq5559KRkgkC1YhPDOFwXJ/Jz6EVa+87O8EiS/V/MzPT8SC5m/DprvyR8j3xETlpDwCvLXy8+Vv83PCJbvyR+z1o8QNGjZWaIJ70CQkgQx5KqwqpyTu//AX33h4XZsvtYJSAF0AkzLq3e8e+V9LHhnsiw7WLZjc97x2vGOeGWtIXNGWBZrmXs7Q5Plq7z72pTnLGv62mHKcy22QwiB5IoUI6wiXKaBPNUgMQH52S//Cnvp7G+qCy22z7CmcZgs++ElnsL7wDvfExa8s2PCkyayHaxlu+UP1o+tsDDqS7zCCBOGsPBqWZYRFsvPSUxYvifsl4UVLExiHO9g+4etaYWFCWsKwUCklKcVYYeElYHL8bFvfe7htpyxcwwQThoNFoeJFZod7HCTpmXbRZu0xeSYhNB8R+iF3c53Gruv0Czxcm8O1o/vvLOObCffcm4AAeN6acM2QIIhUAM7++rP+dvx0n3iHZw02oKVzPIdFjQ/83PZ7WtZlndWy98urSfZQlZmYYLJXy600BbtK0+0iZbvd5ijLfIEr7Mm2kKLvIKFrbbPFizTO98Lwm3CSjPRFiz0kAcVMK4KyCIJxPCKp3/w4bY9RnY49YYdWS3e52tZaNgNk2U31BY7ZsFqocl3vpffU2g7tGDFamvXBjvcwyjfMWU+FuSngKuAnKeVPQJocFMCcEEJ1uPiF/8/3/8Sek7vECzu+SF2/phdw873vYWb7+W70Raa7/bVRItFfkYGjUm++wrWzpcgWL6bsI+fh+Z3yHyHJotgwfIzC6nJd+SFttCW78jLn1e+g4iYgERoQsBFMAYwoOFjP+bvPNxOuDt2EuzCsgvcFm2RJ7EyJm3Slv2h15TXkqd6K+2VPNIWGast2eS23TKpPW5DZMpsd8Ox5rbI2x3DtQVDmAItBFvVWAbWBCGGRXQbuuknPv537EzJ4wAM2dA97dpavltbYSGj27LaSmPdoN6P5XvZNea2WphMsMirsdAWQjIRc5bv5edcvsPKJvfWvqL5riUm2qIfmZNMWXZ+nu9s0lhZc21p2JkIC2kagIBAgqwAQkMJcPeN3/xwm6a1gEACgYARLLFyiykLWn6W2IcGETQ0liCGsCDaDg0istBL2iw/w5EdS4TQ0Hzn96JcNRIkwQyQQgiZ5Dx0weOzviE9Q9hDV2koQ3a+YyLz8whBiPwx+iJ/uZBFiDzJy8+DrCaL5W8XTP6YP0YsyxQaRDh/nRCa/J7ICiHyt4t852dihZb8bTCcpaEk5f0WFGXn6WcebvM5ywrRBHfosrNovvMd2y5GsCzzka0yes67ObthB9s/fO0ry6xkjrXa0sRLyPfrlgle5W8n+9hCszIBEhIP2FAgSEMN5JQDsAMY/OZv+IaXzNoaXaTDImjNTWRaYbEsLN/Pfb1jefe1s+NYDeZghznCmXawHcvPHdOE1dZK7Cw7yzviHSHm/Iy1WJNlxGKR7yl2BK0dTNhqWb6XZfmZ4WNtZ1ks70MYQgJIA7kzZEoGkoD0UCNUA0EIRIqhLEzeERqmbNrNz1evsGSshYbznJ1XNK01MZGtY1pG9nlsVNbke2c3WD+2j+3MjVhbmVdCSxoCQzAgYwgQ47yCKX3cF/7RW87Q3TNIV2Hk1RzJampZkzlrWUbyvSbLYs1ZVqsvZzgmmdxkDWUhOwtGRpG2eEdYWVi7wVpE4x1ZFmdHs+R7mfyxxWS3Jn8ZrAULsSxYfgdTdgBXgAYgoUFoOAuQhLzsuduH2rS9C0BKAwbD7wW91spLmb9srdXY+e4R/NJ2tFfyQltaS+b3+Zl3zXI/WiN/XjLzmWXyPYlN2WrJObQY8lqAJBDmAJ5y2I4F/KV/7y1nyoVSYkzLQlbsVrPIaiyy24r3MTtn2I3d1mRNk2nKppbFtGQNu022e+dnMzdNyyDL96sakxbxuiE72D2FtVhhSX63L0GWxtLXLnifwbKz5mgrYym/JzynPQJhGVISpGGHLAUyecNzP/hQ27z3sg5BghBT7fXyjuHGdqznrFnazjLUJrOznd3MsrsJI1hz3vUaTVux3T23GE1kW7I1553dds3iOUZNr+w80csgh3WVOsowDBBCkhWh0Bgy8id80l89Ux6zCRHDMh8vc0+9D221aU2TV+8ag7zzbrFM6NWrMbiNdU/W9hnveN3r9m61kV5tRTOiTZrb1rrxyqvlnWnu7SzvvJrstps8tabttuy+RrCWd01kbRWvWzP28WTiOdM7r6Yt+2xZhqUryDl32GE1MwQCcf30u9/wUDvyseeODgIWApbZag2rua2mtXUz2q63G5bm+/bOTE1D7MxkWVh2tttiLZP52Nzacw03LMNuu6Wx0Fabg4XdfJtu2gSQYFxtSq4smgBCDYHd/a1/5sZ4Rlw1YaTMVpblNI2VQdutpu2MVcM9a+fVi2X1tJoz9Gr0MtH2Mc0f56btGNpqDavtLLvJ3rW2uI3F4p6sZRNtN23X1nbbbbdGvmO9870aU6sxrYZdEws734umLdlqUI0LzXawY806NTSQSZAT9vjTP/5Qmz7y1FmHRIOJBLityRayVtvZsWjHzvfUjKLxujnyPmj6Gru2j8WiudWUnpYWC0F+HtH2wW23s0zNQq0jztUJY0hCsAYgJ0xDgLwGhsVP+yXfvh3PhLUmPSSE9j7EStZiaVZLmhBhbsJhtZ3Vbq/zOojCallaLYpMatJXMiluzsv3Pc13q2mOtqSJyHbbkfcJMmH70ExCDla+G8Fux2pF75JZbZ0XmrZozveVstoQgjGEJpKgaQ3CXB5q3HlooAFKiqjle/n+2ruM7LZaDTKWn01bTctm3WIFWRbaysr3DkFr4lXL0ljssOywIyMa2Q6v0NZXKFclIQGvDAzFQAyAgMCwzmV+w9oPdfUZsAsKAZa5rWkhzY5RMz+bZF9tNVk07aZlZ/TCzg5htBus5edZylT+uCAyLY4axASrYbc1h2SyxJzVoiHkb3fYnLFg+c7vHeS7od2yFQQrBNAwBCRgQBIIkUiS4yF3eG0DohkEA0Re+dmMj+1kWcIOc5NmdGbNuYe11fZhWZDtw6bwirXwujHRtBrZzY0XxXbMDq+DZVZtMT+kUDIl3JHIEaiBJiQlSIFmOfaJ77j3OxacgftZDSiRtcVCyx+DtgvmNhFrYbWlybsVWvR2rMl3voPXeZFltUVWq+3WYmkQlr+fmx0L1kRWtot3dl4OpunHJHZrdq8wZ03svv74DpZdo1hGSzwKOynXwJSkITknSDR37j3cPnPfMwCiJHZCePvEnpNXWCZz47VbT2ksbdHjxtJuL6uXsCx/bHhuYeHdnJ7c5GDqVSyN7WOW73eW53qZVluHEBKENbWMKUlWlAUFQmkAFueitwf/xK/eclriKQUhntIcocCYvKKnnl5iwlaxYOsYu9mh7SaT9W6ynZ1JpoO2DJqa79grerIsWabtDia87p3XLsN5lJ+ZMxO8yDvfvTCt9s4yYi3NDhNMzAoLa7Es3/uSLMsrCJBzQjuTFAOBsCZDynF5uN3yyZcHTQQSCchozajmrL1zM8m0ZtGsnmAfq2m1vISXw+pXvm+W1nSGLPt4a655d1scvEt712SXWdpNhCYbooEAGwjNRCIRMIBVJBN2NC5Ql7/wF09H5JTlFIMr6+xsbqye3klbzXfz5/JunYWd0bDEeGclr7jtxGpYfq8mbWpwW95nmuz8bL7nTNtxtLIEt7Fa6F2W3XYNWqybuTmryWpMvvOdNd2weuQsvxdfjedaSNYXzWqMCwwlgLFj0gCSxuPPPdTijVfbI7JzWvgHMz5e9tlbZZZ7CUP3XrfbenVvc21qI9okW+mp2G55ctnO2k5saeaDV7zcmFhzs53dptDKmPM0GUEN2KoCaTVYIhRonG0dKmVImF579e8u7kcE68Czn7irOjN7Oxy58xM3bO4gq/MDgIaoJUhbLW3KqG0n795hZT1lTG29a43b1Jqfk+UV03w8ZK+cZw4W22E4i+wVba285XglIxYM8W41i/Zu8RwM99Qyc56yfbmvaWe7zaeZHaw2wlNtO81ouxXLgCuAQUcZQzTEMhCm5cvf/VCDj1188WQJGiBQWFgWlmm1tTC7cG8ZxXbl9TibMzRPnZfFspjkHVrTiObnqJaVNa21NDvywkRv3ZgdS9gBWYUsDlgEsgagCVsnI3Hh2EVGply7vOmUQlOXffmLD5xoKEjNYdfudY/e+bEP3HhsMXpLltM6q4Gx29rOO9Om2nYajKDtXlkLlja7ZbTbnNmu+dvMavXcWG2SrVYPC3bDO80y2bVFT7W2Vsvr1he9XWNny84Wbe3a7qnpfWxNjdWeZMhLsbg97WDVk7YoQzbhDY11OdwmZhtXQzJIzjuSvOo99x5m8s5+UeyBQWKh0XbcsDJ20zRueqzsaM2uZ858t9Ft6ExurIYd267BwSuzi63PIJazZY24Le4tmri9y1paBgyLAgiGeRQ2S6JhSU4jgJJotI4nXfHGU6mJevo3vGAJTEsSmmHme6559IUXP+qqfdu3Z/HpP/jk5o1EE5N3m5sWa9yDlue2j2ln4d7ObtvNLfQysRQZq3ftmmO5bffupvnAPqNp69ajnWkyZJnzHZpbvRrKduus+Ri7aLUdodVYt9VK1qZ1e2fZzo68MwrZja1bOLvnY+x8x5qJQFYDmJJwUVwNYwKQj37mPQ8zOHbskh4AAcEES5mU7xGs813InFWDe2Qtml7trBCJlrV9UHaYyLQ1atwffmZO8U5jzne+z+TMd4uBqYlkRwEBkQECwR0IIFMaoamp3rjmk/EkmXjC33oKQDMKTeIqJBsXHrzgStYf/5grZ0c7KQ1410sQ4dhqNSHfhxwSooVbJiw/a0QLqyVIfmc708RyI25Fs/J9/jLb0TSWcNDQ/A52viOZRn7W5ojQOMhfrhJKON+RnZ9HCqlBEOSqgXF1AMETvOGZH324+cnHzRsTg5QG5LlWz4mdnfcJk2k1Vts9cTZlbo4bpoX8TNuxsvK9vJJ1sCxzvid/fH3gXcuyH8vv5oxJpinrAcSEpcA6SSiyDJABQkKTplp2TvNVfw9czKow0A4IOzcJMDZ2DSYTSPN5idU02Y62YF9WyytYfi/etcKysiy0WqwgmA9Ww9wwsnrqnWlBK8xh+7Qs8jpisEIE9Ys2slgQRpiEpXch3/s19yWsxnSwj++2vn4uHlSABjAB1omzyWq+9oVnHm68/smPFzD0gKDlu+md7wXvs+UV7Z2dn5HByrLL+6w48sdXsNJz3pninQmW1WJZ3jXsFvleK9/BQgu7OYuGs9w3Q0KuhtzXQndIIEWWICdN81Vfg7puB0hXGehAMCW0hUmgy644Ty1L2AfWIutLQfsRRuy2jz9mO8v3OIi8m8iCiYa1jKx348Qra7LDHHm3eGc7mGAt3vHOz6BGC95ZVsPO8g7ex/fyzmpo026TKX9e8M7OZJnesEPIagIhgZCBLDY0hXf39iH3iY2rewCCwYCGmGjb8Q6NqWFl68wrrddnL867d9raaj21RtN6946dFdZcz7s17Vjv4N3COzFa47YET/e+2nqn12YIxNyRHcB2SDKlPGUMkTsGSq5GLrlr2iHNX34FyzGKDkGAGGMJFjFEiCFaTSyvsyXrHe/eabZu611YWIs19VrCc/GU75V3WhO83Cw/3zVLs9wsGjJrxWprrXfmu+V7x+Zj3vl+Za01K6x3bLdYuxfLeqd57UxDs4NlTRg3LxnCYq0Vs89DCRPYgSCnhK4gJLKSs3hz7yG3uOnRhQAlBAKmAJLBNFiKcGy5I9AQ0MEyywHQgd27/MzaRXwwx+5d2I71Pmjddttnmc8mt+0Idm0nmHzfC/nex9y7m+a22sccRxNSnO+G5X3CCvaZhp/xtu86ufz2z2Rvomba8bQqYBqAITsAecDa5/ZO5/vY7YPkZ1to7yhL5mhah9bNfTEHOz+vSZtgEZKxD+v2sQ6JWkfWrrdk2m4njjhY0Zzv27TyPqvZqTk738dO9i4Zu57j3prkddvaxxZnrXwXrcNNE0iyMyQahi4wRA2kjQA3x/MPuenXXr2fSExAi4xrCZDDThxAKIWyihKo7chZYN2Ywgp7HzSZ1SyttQ722fFOu8EivPsaNdTCYp3dtNpiURbtOayF7MLyM9g1fz6MTvnJczJ+yRdxuVM7CRQ3IInsQFJHkgiQ0JZGsB0ZhjA3s89k0JN4BxPjo5nDc7MwVtoqg8ZilHd+vqMltvIz9KphtTS2j7/dzR8X8TpBNmLtRr6za7b88WY6I9aqF7IQ+/VzYmrZyXAAEpNkKHMHhDg3HDcPO97/qAvAktUYagAa1kmI8wAINhZpO6Ql1xtW1BP33lHzHZOFQjskvItsh/ScP+dnMAUrX2jLgpJhsUzle1lewX6tSBY7CMbw+Md/BzCXT/7nuL2D0AGNBTuAICgIkwowAOX7zJ/fweu2s9s6ZgcLvWL11UzOz2Wdn2m7Yd3Q5ix/G2vl5d127LZoX83P+XjX61Zvh8lcstuyM6yDBQ0LGfljbCG8aghWEPJO2GFZvGvQc5YlAuzhAnL/BAQaggZ2edjf+7mn0knUxAGJIQ1kCk0DpbCikCArWo3kDhar1tPNJG/XYZ3v2Nx6HNa7bF3MPm1iPR1Px3bhneB13i6Yi+3wdCzNiCeXd/uaM8/FqI0wZSL8tO++h7d3fjcdmyHgqqwoLAfEzgA1QJ1Wl6diOnidd3a2aryuWWIKr2s9HVZ4R9PC5OeZaM0t72C7rEnG+a61NFMbrmHn5y0c28VT1quYZOuDlRmx5pYVWzXUlu+FjDN+TFhiO1+7RruNHCukVHJnoEYIhRqAFS3xUXDf73z5IAJIQBPAIGmICWiImGJoaGAWjElgStMWbcVW8lq7MMWivWM9H9jNd0Y2bp+31m2jtmjti961HSzf/1jX1spqE2ovi2Vn5ecKshg7RuCzf/itwM9/LZebCANttaNF0h2EgIZghx12WJZpmswtq63W1lkLwc5q3VbastpwTzLjxtQWme8Jy1xPtHe0aZm8a1pWY80ZlgkTLPts0JZdE/dGbdk12/UsmtUQe4VFX9ZEPdHekSfZkhEmY8EEC5ESIEFCZE8H1RgwXh5y1R984nqAmBgsiwFEaFKwFEi0uG9OYQgkAvSUfTzVY9derLVbLFEWzSLHsg6y5HxnMd8R9uHY2AVzFuXPZxPtXTJoy2GHOTJHiJsf/8w73Ztfxd6sQjRgNDilZsiUKdAgdMBeF9tNwy5qZ05sdyyYIzsa0tzYwSua77M4ZEcy67ZC23FvOO/Idk2krdj7BG0+b+4PtZUitdchyHfbIaF3fsT544oWph0sGtwmjZUteaEtsaU5S4AAaZwtlJCrYjsPP/n0Pc8BTCAmYAnU0EAmAk0IuCixYxoIIQ0pu+XddqzbjtDYCRmvFjvvJtOyY/njsrMEbbEWwXaWZSlhkTlaLd61FdIKyw4ak8gilMeP98bPfA0MgSYxJmcBKYRQAAF2gMbU0FbWK9/BrvGuSX5mCjsilnXzM1gsWH620PYD5pjGj/zxdS92Wxw1t+E2aCzfi1h+LFs3xi9MlulHzZ8XEbHCalm9smKuZW5+xiq5bwIm5xRiAkKFJnZ46N963WuAsBpWFUBBkAeVqwNgA3JfQ0AgcVa+8x3S/DEi38nsiJDvEJGfCZI/FoT8OT8PIqQGId8Ri4iIBMITr/wR/Kd4QEFAwIarCigPPJyb7zSh7UbkO+LIX+dnRIToR0jId/6Y7/xlUMp36MdxSP4csZOfkZ8pBBFFZPmOCPlz6Ef+Ot8RKbQIEf0IIWACcparAggCJoAMj8DqWy+TNAkgYaUhWSVBkh3DkJ1VEqAmWcYdgB3wipC/XLB+fb8yrbyT731ZLMvfLvvxe1nwHMuynvOz7V5ZxIpXr7yzYM6Ctfw547FP/+bLz3g1O8tADTskO5yTBEjOOyHAars5ywpTr5bX16t98e7r3S+WBQsmy/LO97K8gxfxbrKsr1eWd955ZVmm5Y/704LnLO+8s1jPGTsTvIO1nXfbsWBff/1qfXnnnfX1arEs77zzavLOq+ewHxbXV9nhehKSJDskO1ztYae85+Jrl1QHTKQBllkGVsIEk5KwyR0WU4opLQR8arLVtL5Wlmb0Y/k9u63ervZFL8u+6mk1yNbK9DTFyJbM3Oa88jI1eTWxxhplWOidCU+mecOPveMfJ8OQYhbTndVkkbSMWTEXmzK93j3HU2hryxRrbb0Po/frnmC5jWQs8rhXL5qltd18r2X31LK57aa1TNbstuaept6N3i5evVsNjZjWOzP37iGrZXn3kKZXW+iltUXvpsHKWNDazjvTJjvYypgMmJ2EpGYR4+wiSAZNMXv7sAPes/USzGiCoTXuG4IsVxIphXbSUrKcmrCmPau3irVg53fsTGSvG5a2XS+m2vuHrYbsndrrzM/bbrHl3sTa+YFGeoLJ5Me7prFr78Q7y4S9jyFze+cV1EEkJgHMNiVpuB0x7QGwwsgi/vGz8ny2s8Kr6fksm7o9n69F25nGDpG51bR4H/Lc3IS9610vsvfZbq/U9PVu8kq9d7L3sdvbrd4+3m23d1nypAa1d2nvMxlq79pth1krP7N2bdF27Law/cO0V2M+c+99TK9b9s530wi0R9qOaZLAFIA1CVoTPBKmDz9zNklBNLGYzCRZwbg6i1KMbA4EoAFMALaFxT5ske1ayGLNDZl7aNo/dlgNS2vUFo2oacwZC1aZ77y7N7o1rel1W+MzS7Sd12q7rSaiGp545jV3YNYwJIbICZdpKjViyHWSymFTzXP0VtPrWsY7ejdo7D7b3NYE27VNZxY0t+1iS+Nd01Z672osc1vWyljNdjfe3Wyumd/L92K7xjvaOJs0jdWW25Qtre2mhnqvsqlhwXkjf+6tz9u9ZHPLsHrOACnkqkCJIUgJuA1i3PoI4PXPvMYYJIgABqRBIotclSxMEiAFAiFsXp+9y+b8+Z3lKe2FpthuzmvnnfniFru1BVPzCu+2j+ZdBmuh1w5eN1Pv3llbNH/cWZa0BUu20yB8+bveuCAlQJoEYNAQIga4WAfEuadYO9Za1vKdeS49fWzK8ns4o3fzvTTe+bloE5KxaJqoea28Fi1mLaOdZsLOkBft5m93kz/3FJvO93Z2Mppm+bnawm61WTc4W3luNLjhHXbsTDYECA1I7utqpEECBN7jUfiJE89IA2E1NAgJecAkSdLWicUJArlu0Py5P0w7Gkujd14NbrS3u5dFT1bbWWM1P5c/Lpbast7OWlpm4dVu2a23btoS7xZ2u72z2iIWAq9/x8ffQjaFWCCGgNVg0UExsBhKVGZh7dhZttU7+4xpacF2btM0pntu2TgTzcqsBauZzmxnQlttaQ2W7Yq1M+MeTZYGuzG1hdmtLO2F/OXrXgiWue1mdrdx5hXW4lVbVptWb2f3WrtBg7UWFmhhUirVYACuAFaD3PNRsP2rX7YxFYAU2CquSRJIMImLyDIFTEgKhI3LUOuIrV9pw7HllrTF+ceC26t/LJkjFk2YkJ+7iLCddbNVTyIZ7baduZH83k5rknwvZB1ox30dmAYxFEIImAghQgg7k1DqoBEhUsvS9CUzZ8iEpaftGIotrZGJTEwMaRMx5Du98CRDaTHBOAa3WfU4tGOsmLNlMexj0WapSduxG62VrB03hUnLalMySFtzo2mpGCikIRtC4yxEA8SAy+0jgXc8ZX+xGlYNYABEESQEhvOASAggICAokJ8Z8jO/g3yXyM+Ee43yM3/Z/OX5654iwfkOiiSi/G2QP/aVn/me5dmbV9EIpgEDmIDcV84CKAIhtFAb5I9RREJzlL8sr8Miv8NOiwihRfmZ/Ixp+T4kiPwx3yUUnOB8J9wXivIzP4P8DoJEYUjQfAcR+V1+RnbIbwHkuggCXgERkDgPd/f2UXDjTS/eaeeOUwqsQigQeEpIEEihOIDl4EFXmPD6sTBhHLY7m/O9S8/5XvA+P8T04+dWeP4B3vleX/vx1yN49/UOpq+JrT98LzNcnn4CoRxgHSAGIE87AiFAcs6B5HvH7P7EO385Plj+cnE8F9MvMYkJC3YwfdnXK/R88Ap28Bys2C/LXy5MP975HZa/Dtt9/d6vhUm+8+ft82PhHawf7/zlHKyv1ym8du70/sacVl8YHoVHfv1rKyAE6oBcBQLJBJJzO4IhEAOZQAqw3Y/vrcOamK8/Tl8tme8hbWHBO5hgO0wsf71gDtvBdl8TbV+zY72D6Svf+5q+DHjnT30VGQjYDgRCgACdXIQAqSHzx3awFl6xFrPCwnqFBa98L3pi5G/3Y2VNsPD66smfez8sfx5hwkuYYMEr1jtMbAfT13P+8hWan8tu77AVI6aFBb2DV/48oSdY6J0sgRAgTyFQSuCJ/IEnHwXx45fv7yKsKiCWIKRQIgRICQYgiQyAdsrflu/yXdCwm+8z1I96UVuwqK98l0WQtmiLWuS7fJfvfBd00FrU4KB856cCt1/4DKJuA1OiJSLnKYEJUAApkUGzlPfVk9qSn7Ul5nvZtcUZHDSL+5Xv24ghg7PI4H5ZaNAPQfm++c53YxXUoC3ye+F814/zsx/52aKGFpqf+RGU71tovntfzVecDVISLAHj/hrniUeDfOi2LwjudF8FcuKqnAUYrnp6fz3pV/6Zt+SGJd/L4vwMLeSfmP2ahJr/lyc/Jz9v+e7rn3H2ms+65boAcjYeVK7KA5oAfclfrvIz6AtB/j7fYX1p+afnZ777+mM//pif/cXO3/fjj638XPrS/DmWf6bLXyaYgnwfJv/v57uvPwsCAsiDegKvAD/mo4Ace/9LTDj1ToInedC8dt1rIQ+4vv7fbCGr/SEysfZD/n5hyc/Iz370Y/0zyPeSP+ef8fqT8Zq79xmAruGDdJ8Hlxcz8sf87c7fhvx9fudv14+/3x/60l/9M8z/q8Eif472A/lnm3+GWctfh/XPoL/Z+f+oJ7xyX3kHj8i3XXuVJ0sgkHMI5AOYD5RX5IFbLOtP6w/L70XIYk2COP/0FeTv19cEC/n/5/qRv2xe+8Reg0RI6IHkakImCZCw/gnLH/d3WF/Ln/uaFuvHP/FP62v5//Oy/rR8558ei2Wx/kn/DBfJP3XlbxeWn31h/TPKB3sxk/c+GuQ9ixedROUs1w1AHjgfRB4wIUFTK3/c+WMmWb53vnfk9wrWXyzhFSxMZPI95f/NOUxf0/o1ff0TFzD78ic5J00gBgPktTwlYIIEDBQsTGT9av1NxIJXTH5OCNOP9SPfy+9Y/7T1V9PX9DfT1++FFSYYMcIkFvlnu/5iosk/w/z1Dsv3fkzy5/UAKS96AiG88Gggi7e+fCYB6IpAIAkJkCFgvNgJaQkW6yvfyyLfv/IzWhPCkunXH5vvoGFC/j+YNfmd1kJ+9nepYViFcAcXASQxSRrOQihnuarvoC3kn+G+ENlnS2N511j+On+7s34g//T8XF/NzyzrR/6cNWlNzXeD5js/Y1+tP0wsWX9okH/6sjB97fxtvsv3+pGrCXI1HyivCCAlj0j5+Wc+lmAsSK6a0IAATXLO+yXk/QQE+R1aFsvOjmDnL1ssmj/mO/8Ufx3y5/6w1l+tX99NFln5J68/LFePFRpTmN0BSWhoQFahnIAECHnARZtgffWnnT9OaMiOTDvf8QrT1/Kd7wXrr5Y/5mcW2RFrsdAihohM9CXLYsH7wPK9dqwW+V6rr2X6Wr9aYcciln6xLD+z/G0CJEh4LSUBwoRHB9x62zNjQiC5mrIjJKGkQHJ/uZ7JOUmWlZ8rK/K9eBdDG7WVaFrLz30tWpZlWRbs14Ttlu/1N2EtazExWqx/gr4mEHZcRs6JpVwPhBDAwEAgFGDC8ufl76eWxYSmtUyCmCB/HfJz5c9rsvxcCwsWrMUk1oIF4ZW/Xr5XLH9eYiv5py5havm588eYQsvL+fOrlbX85YTkavLAKQ8sYO97ZCx//I9vsLNAoJCYJOcpRErChDxBeDpnWSx2rHxPyytYmPxsy4L38cqrZUELTatpmRsTrPbOamd9LQvazY0p3xmyTL/sRyBnS0IhHKCOwDDAgXAA5KpcDRMs7Fa8+ppDvhexwtR4xcgyt8x9vb7W1873HCxYYSdWi/W1w9aNOcw+sLD82H2tmCx28Posdn6GOfrD+wyvg92+8r18N7wKO0xfvWLB2mEFwQB1kKRAKBADhJybH3vXoyK+94rLJBh2SIFUYA+wVaQES8GEhhgsAdehtw+8E68wxV4fzhzmMKUtu71P3LjdVljSFFthSs8lK3pqId/RBDvyj5/DHJqwgsX5XhOIg8Z1gBAgRsyUc9AAxACkwA5pZVmt7bSssNrCas5CsA9tbtottsKC6cYc42DuaTXNWVaYo+V7zto1Ebwr3gm7xhJTi7ZrsazDaszFds3fnjz/ADtavpcwarrBjdX8MKvt7GQK9pAEBVKABkgMUiAEvp5Hpdz14VcigZ3EQKGUUuQskAAhYCAk92/VmIOVrfwsvAor3olXJgvbhTnW5Lut5XtpVvMcbF2rBSPmsBq2T7aLrbTXjefEsrbzvU4QCuwICyKLA+R9hBBZBmBlOOEllvBKbceaGMG0PLdjNY2W1dZqmJufbRejHflz3lm8ylb580tYeKVZi+fkRUyxFpaY/IwRJpiWZXmlTDLhSbzSvA4WL7WasBPWYjWGgRAgDVYbkhBCWEWS739kwNZvf+F8CoWUEEgaE6xCmGETQHLfplMysLlgmXZmO0zvaJgW3vHO+2Q4y++Fd80Ia+SdxNImyzrfMcGyfPfVsSzM0US+F8G7CKkBIXfAaLgumyANhAlIkiCNne+FNZ3vNWf5uV3WCr1bLzLWbdaZYNFkRwtrx6tl2tErdlv+PM5qLIs2Zyorv2MyNYv21V5nQrZilWWHlZ8Zsiw7y/fUYA7a0vaBtVitjFgQEDJjyBTYsZgr1MH52UdH/N29z28ClmIkBDYSgjVI3PckJOsAhJD5HSwZkb9tsNvUfDeRfhTLd75jxzuvsKNN5kYWmtDyvbDyvaNBG2mLnmAFF9O4f9JAE9cljHNKxgAkwGS33ZYpJmrIFhoy6CW3F3oRy+p13JAtsiWD27uwkIUVeaIt3CsZ9ByaZIsGtd38ebF8t9ePoi3yDj1xe+c7f8x+NNkZsciWttg15BWZVk+AGhIE3U40QQw0Aei973l0mNve8yVBACNtACGh4UENAbneYDxo6w9kIfP70BZEw2pB872+lh2Tn/mdF3ax+gOmL/nb5Xs3dsa6L1q+F0ETdgiJJTBgAomdFAwSKZEEhMCCRmti8r2DjCzIglhZT8dSNMHKz7DzMwhqL/z6Y7CDdvMdBPm5IC/fiYbWIExnrXyfn8Hy8yBLE6uwQn7voIa2/JMbbQEoCAnQcB4QMhFP8MM/+OgA3vy0i9uAnOWqCeAVO0GCXE9grthJC30RVvZjwc4c7Fqbs5a+dr5b0fYHkyWTZW56VNYSlt995Xs3Vl/WjwxavhbNEtcbQEEkADk1XHURZhMGIDnrex+rXUt+53vnO1hhFyxpOzvfS1uIyc8sBHNMDTvs+tr5HWSsYPdlYf3AO3N+BvnBahFZrK+dRT92fjZksSwy0ZblLxe0wrp9aaEgBGhIGh40EbqWb3/mESJvzsuMAWhAQJDk/l4xriYgV0OQhCb/1LaQ7yN/zspfxyIW+b2aLA5tN/lzMl6HCZbfWTtEsNCX/Ay1ZV5peGBPICD3EZIJ5CyQXA1WZPqR7+U73+0r39lRmL5CCJo/x87PEA6J/MzP/LGVn/leUH6W5Z8c+euwFkvkz/mOfOfPIWh2WFa0/GW0IFqlXE9AHtgE5Gq+Zx4hsPz9F88ndgBKhEwgT5EScwqBnSsNwA5ggld4KTR/XjDR9P5hpp0RVr4XRiw0zpqdxv6wWMwNr7DChOX7FSZ4iiF/eYg8KBNWIYCBFSEESbBVYFEgBniFOWw51uJJ7bXDiJeY0Cu8ztocy+KVrIVFfjZiK0x4brHWsrAl1mQkI9aXFbFYFhZe0rT8zLvw3F/wiv2ahGAHK5nCO8TSBCNewQRYEWsAMjEEyIRodnj+7iOFn3rBYxzsxLBDUtMQAqwyhAIZA5iQAqsZCq/iFaw5lvW6xQ7e5Xgn28ErP9/Hz8bJ9nnHtNDOU184r3a8DtNih+3sPB9MtNdh9Y6XWPCahhqS5QhIhHUiECAAQyQFCAX2wvuM7Yi18x2vZDuZfO/GCK8PJud1K1im2ApDvltTTLBoouGwOHM7tFhhWkwsE7vVKF7JRFjYLc8/zPdilBXMwSus8Lplu/z5ydkuts4Q7AAhUpOwDoYAocA6CLNfwaP15nufMnAQQCs5myU0AA1XB6DhvglDIN/l+74SFon89UJ+hvY1ne/8uQl2DeKesxq08h3yM2jyHVrIvqxDvqdoXDcBgxRITMhOCqAATacB2DksViushn38PN+L5rBEL/m5ekVbeH1GO7Qgwxysg92PD3q1ai3kd1j5c/O9Q9OCsHzvgxa8CzujCSvYRftDWPk5yXfzvQ4NGrQ49uPPw1UBEqQJaGi4mrz9yx4xi1/4il3TrAAmdDkKFKCDEGQVCVDOAjLdzpFMzpYzLZad/ZjmTDvr1VncXsm0s9U0ysQNPl60LzdrZ4uGbmv585rPXlxeieksZPljvisQ26ExQEscVkEMh0UgYALoYJGD4bI4EyYydF7qkbySaT42+wfPqW1dG25raVnnFUztufYxdBN55bxaMTXSXpFX2oq2aF95h7Z0nnww5Z2dVxjVk/JKeSmvnFfKcL6zcHslphrrTM52tHdkiIRgANMqmDSwA0OI3HsP9giJb378ZUFCCJhtjOuSgDBclQdO0EXmsF2GhMgf287Pnhy+ItjZ0dJWNmH1RWvaghVCtpoI1heRxYRRLGT5q8UEJEESJEBiOKcAAgYCDWe5HlbM+Xl+hjksg+bP69beEZrIYgSvYx8mIWiSP7/L7xBWLzLMDc3P/Ay7YZ2fYYrtfDesgyx2MIUd5oY5zMEyrfO9wyJTEKzzTzXOaUCC2MF9hW98JfEIlZvf97oCBJBgAjwJSDyoPHACTEC+a0T+WTbf08GyXmmLCEKs/Ix++W7Q8pchf87fBu0rC1loyPIdggA5C4ENINftAZCzJN6vQaFB5mfIQn7nO4Ic52dBkEG+QzQIMt991Xyfv4ygr/xuX0F+5ju/D/Id5Gd+5zvfCYL8zHd+Zk1+Bxnyx5DfXRFAAuSqXJUHrD/JIzaL33vV4JyAqyQJEtKQ5CpAnhKQ6wle0ZZp/UV7B301Pxf1/OV69zWh6QdrMnZooefQl/bjqSH0CiaZYMI7dt6R3xMkBBJOAiThCUK68oAJXdOChbXoF69kwuT3BGvyx7VYlrmFvrDQ1+/dlj+uH39erAnewfqyfC9/nPycLN8T8t2W/3cnmPzlQvLHaSFY6+uvVw1AQhMCIeckQxDWyw9hjxT4yNrjldUEbDXkLOempomggUQgIdDFRSNoO9bXkj9P96thx2SZ3fJ7aYtZLdthMW1H22HEZGevekJbFsvPtZoYx00srCBth4YaBAjAQEjknKeE5BwND/rK5OcywtzeTTFNWHiXxw35zkuNiYk5rMXQWpMRTNaPZfk9t9FaQ1iwJn8e2U1TW4wmeIVpLesd04/fK9+TCcvPEWtiWn6uhcmCPGAKKdcNMULW43sfIx6xH7/+i00bMiZCIwDr4JwIJCBJTWCGsPXRLAb54xTTxCum97HVyB9vtuLd0l61Xn629riwfcardzx3nmsNZ9PxatlSXvne5QmZsF0MEJYhSYlZh9UgUGpCVjMhIRMWbj3VFtZTeadstXoVa2q1TBazaytmnT25GRl5Z4k1LZytsh3MynBo+d6Ht8J+mUzWFFs3dn6uNhFe0rAsXi1W2MrG+Z56TrbIOF7BErP7sphMIxAYgBCckhBLDIS/yKPW6je8dO+iIEBDGZIidTSWYNIOCJqsUxoN2mpnbTXUsNpuYu+IJV43LAs1NFNtqVfTltq065XVkxhuT/vY2hm0RfPdlt2wj8nPyKaymCB1gaEJZtEdSLSUaccyBVcmIdqK0ZZJD9VmZ2v6kmnH4ubndrvZ2c1Wtpqp1dvRspiVLdmiNjvN94q2aA35vci7NEtNw7svqy1WE9o4kzJHWysv9aYvTRPurZUhQ57jNtNiNcE4pwmRugjGJDEkq/A92KMFeUN/0U4p1yUMLDlLs4AGcs7MAUvQpsWaXs2trbZa+Jrbbt1bebfdhOZ7YbQW5v7RZ8OhJ0y93T7zPsb7eLHmsJh21taUv46lh1gwgNkECMEFGhIwkvun7UAIiRj0Mllhoa1lsnrKYjvLYtKW3SY7Kz3HQmuaZWJ5hZUnvWQii6G1FexeGeKdeEf4wrubqbWQLSbZTrzImlgr7wgtXrF64p3vNW6rwVZo7+w2jTQkXWWPsJyAVeRsQBzf9wOPosVvfuGTO8kqkMl9S6VkgkUFCAEXYSKCcWPlZ7DYMTcrxmqsTNOClzS3s9f9KGhGrLePhfb6x39YWSumWI13mndWg1lZvbNCs5U2CNQAoVLMsKZYDC5DLmOh1LQH913j9gNTRrHn5Cl71WjFFray3YrdYhxeNVMvr8NW8nbaq3jdFpPtlgzWar2D5Xvtw1r+OKtlzmjZDiYs34uMYzuxdmxX7IY5j6BJ2wrPyVuHnoO8NskOGLhHQEoMAaEQAl/GXHj0/vozP7ppPcKUIGZ1nRKsWYYIEONqCKSG2hCGRZp3ZOJwnn2C5dUW57upHc6idlZjjp7b7q2b3gq7YDV2lnXWO7VXvaym5/NqmTM3LTAkvMaq0lgABmiSky4T1hik7LaztmvCDYt2TbhFfsfKLmvabc67tmSya6yzZCJru57fbdeyYn6Oe2dnu+2z97FazTV22GQneK4XGqt9SXtXi/J9a2TN9VgZO0atWNluULN1m+U2YokVPWKkYZlToQGEclUvX8/yCL793b/oaBIDycn2CNshBmhAaQdSSHSTWbH85bTsCApL/lyWd83KCDVtvYOhMLVdLybu7YO4zPeCpeU7Fs3vIywHe91WNCIkhJgVJghFSrAYzuKOAAYQCHaTEV9Z3F7yvc5asTAF+dlkNExrab6zoq0lg2aXtfN7scvIbsQWmTIWWXph+WMs69aavM9kBJO1xE4WS5szduzIj7aWXiurhZssC/Z1W8RZkB1D0sAMgdUkv/treRRn+b9+7StXWeYa4IKyKAQKpUAmmeY2YLtlq9ZTMysmbN388fkQrGVla1l+TtqKtwuL85xsZ5kdvd2ylTZpCq/Knk9sjmUfI1roufAGcDFdEdwcWEUooea0TEwK1CiwnbaK11neWb7XaOfdyuSHncnuyZosO4ybrDBnrcQrvIR34rmwYIpppMk7eEc217YT29lXfmCOvBPjxruGd1gwKa+cV7IVlsnS6x15BxPtHXk+y/YhC80iCWkEyjJIiRnKN988kuBj3/2LQowdkEQLOCoxrhoSAyCJsAzUE4bb3okhrKQlVlh2LAbLCpFN+b55+WPWdtjr5vs2uT06752GneXPi+2ayBQsvxeBliAlzHJ2BTCEuGpiNVIIO5ba0GBnokF2xGChvYN3diZYMckyzUK+b8t30NC8uj3JYjVkIUNbtDm1FVto78KsMzS/35FB280Z8qT2jgYNaisZdiNZNEss8SST7B1tipEgO6IbzpKIAcP6vj/MI1m2//IvvrnQIZUaNUzAsIhsouV6kE2EHbE0GPJCWjL5fpfl9w6trO30EmuyJlhac2t29jjeedf0dGwdbz7mVbNYVka1Xj4Gh9WasG7WLlb2sHVHFuPYFXFJgYSkgzIBYiibeoTZ3d5HzJythdZi0VbR1F7Ju3VmLay8W0zW8m6tuZ5W09Q73Da1tbAvDJqb7wwaq72C5obJbp13q7bs9iLfq4WGdyY3U0baojHuHWKuralZ2uTGgqVBGoaQNKxxsK4DhMCP/Aj2CCJ+7dNvvB2hkQilYAiEhjASEUKkDFHYQi9nxG4c5mIKr8MUtn/Y7NAEqzG3taDn5neTnzUTtk/bUlZ+N8ha+9hW2E5sH0ZYApNMyVUsBQOJ+zeQCEgGpKRlrczPUZs0v3tK5rY5mTRWvrPayttFhrNdm2RraYuey0ho8pRNO7NitfzxORqCtCX2LkxiRX5+NRbbB1rLtNtujimmsB1rnEljNXaLhallLoZCCLkuxDCUDOc/KfEolu/4rl/kGgIGgWYaQ8LE2R3Ako7WDIFM8Xyy5wOvWGjv0BNtTX7mHfnZcxGZJTcxLY5oC3PWXhd7t5houwy3mqlt3XqFG2GOV9PtIGcdtByAHZsQhDRZJwG5KiXCzs/V1Lu9ku+sFa+EVmh5HXs1512Y2pmwiF3z85Cf2ZL5/aqFg53fC42XmLgHDRo0iPm9OPMzi12Ym+xjRPMdWuya7Yjd9rEsdjTHVm0RtIMAhiQKIFcN2Jt3/k18NCX7NZ/95C0Iy4g1YTsIKUADsHgakByQZeKVn0uzMpF3uPnygoV772OW7/U1kfehL7Sod+Q5WNEr7uXPeSdapkUmO0bGujnLbn7GVeUsGEgDohBXp8shEoI1oHGas7wPa8uZM97HFlkreCcmKOoRC03Ku+yzZXkfMoUdeR+J7La+EHZooal8Z36taEkrGocd2uoroq9FvA+syM464pawxCTL91L2Ya0gaFFbQoMAgjQAq8KqUDZ86fColj/70T8F1xo5DwgCpIvIuRFIgEZ2gEkalCe1V+e7TLKdsgjrNkeemlC80+bwnJ1JmM478n2ecyzO2s7Pe6546axWDee7LL93Yx1rYAgRAnQ1uW+Cktw/5FyyHQe7Fs7Ojrbz8ywrTK+bs8i0bkubiB1nx/nO98Ic+yKxdo3IRJP8ccn3uv2A5efuHZkEy8+1yGRngkXk945lB6tX/Fi9EvJzMckfFySkSUCuCiDLYDDv+/O4jybhXX/219/NnaFiJFNhHYAGqFFCoRyAtRuY4jmWlbYwoUEWmpufPTtYYYrZxd7l3ruwr6m8Xtem4J21XdbrY5omf719GPlejMRzzVOBZcBWJBRcCRBwGyVEKIdCDBdtx+bCq4xijk1ldmWvTzyHrWIOlmZ9/fEdo2WrzE5Glld4hxGvFr1ggneyVZhihaX0ChabgyVeYbv8aMv3dhgHC9uhp2wlPRkc02Jikt1CSCQEIh0KBwgn+GsX4lFtf/gzfqICGO5gITABNpxN7ivnjnbAtqgl3o6C/MwiP5tWcLPaeUW+YynfWXYW+Y4RwxntoDbfTceL+9r1ljKttiRoyLHSUMYANASNCBDQUYIsQwpggLl3ZNm1xQ017Cy1UA92kMH52xaahexgyXa4vZOG2ope1Igtx8Tti2XdJN9paH5OZOzMd/tqku8EQX5n0cKOkKyeaDvcyBryXUMWMUFDDMCmRAGGGjre90fx0QXv+NLfNDvLoFSOQWCCrCJlQwhCiCUMScj3GAeTP46wGq/kyc47yytumH5sCgue62WhLfV0a+L2Lj8XExZ68nv5OeLeMtOqsAImQml5xUwpwaDhbGbK77Zikha758Ii79Ak36sJk9o7jMjEQu0dbUlbsFhZslgLzc9lWl9WW74XnvM9kWFZYcqaJpgma/1YRmjLmmBf39HIIJadL5bvBQsKITmHCAmwA2AMX/5eHuHNfulP/HgTyA5KAANpwDiLIFcbyok4fx9qDlb+Nn8MFoezyPId8scg831oRdZBJvku2Fmc7yUIIoQmrCwNSNIAJCAgJYAIIMCAEIKAQKE5cX6G5LvB8h0/Vghz/rhkRZCfDfLztnBoBCE/dz9CfjbRNOW79ZXfIX8MIfl5W0GLlZ3fWVlE7L6+W/SFiH6wyCLfEcBA7isJCSDk5Y9Bjy7i+//er8yBJsG4KoGcEsjk/TUVy5p+LLWd3X70o4X8PPO9syzc3sHyx1joB+uwlT8ubOVvmz9meZdl5izfbRErJWcDkHMIUgJ0MuS+clWuL8ryT20LTWqRf4a1UAT5fuXPtxhB8+dYlt+L/FOXWEKwFMtfTrBVFrSwlaBZyMqfd0umV3b+mBYssvx/UB50xwAlCeHrfwgfae6Xfd6dy7STgS7DIiSyKBANRMNKQyEEQXjabWdt7dYgm/OXz7XVK3NbttsLxTuPd+rRylMz6qmn7TCCRWtpJiueWJPh8OqVWTuGJTBlDVmCLLqSRjDhniTE5TzNYauZVs9590iewxbZzoY01m67V0+tJzuPW+/rnnab2uq55d1WXsjsPLUeyXPTw9naee4lz421sMjEFm2ytsvMscmoaSM9wuplbq211nOT56xX1oitbG7nKWNlbUMugMREswqruUiz/zXEozy+7Pbn7cWDkKs1E5CLKQmEYZgkkMDUTNtZy9vH8nMZbtOa1fKc7diZaDuDWa+jl3csW03tpV4TrTXN1JPs1TTXXvfcJlo9tvLOtBsWZMgO4TI7QDGAi4QE086JpmggSbZkwqg99w5Tb1ktzCTLYs50b2dLrMmy0LJ8T5Z302S7ybKmyTLN7ZWf01oMK5pevl9nvq+hWeitlrVY9HbemSamIdM78aq1xWp5Z4dpK9sto6HGtKxm4mINQICsiF1u/vLbmH2k4bu+9otIOLYmDGlWaEiW2ZnFHYaMARfDidXYTaPnzM523vWyJDR/mzZBBucl44ZBQ724wSuzpGnZzkztnd3WWjG97jnayruVNazZEEBT6JpgGGlxFAI75ZSrYQjBbRY0ny2y1tpqvn9877bOrGb1amTLzrRM0zRapozmO7PCi+U7871YlmWi7cxiWVqvLJisH8iwmu/VGg2CNTRNY/njbchTG6GnRu/z9Mpg6WVhICQZGJYkwvbY+/4HvPCo/2uf8fEXAmTHFZcGgwYrxZgVDIEdkLjNavsY2a5RT3Nbvg8rT9mfZL38XOdn1ruzRi+axsXURryV5udEdq/2pJ3nsBo0f53tUpIaBAFCcJVAuWoyyXnIUHJLxlkLVtbUWxRPtl3+uNaZ11GztMlaMc4sx3RGatohGcpeny0UU7bKpi8RW15LaNl0vLkdCdJm94NlNzXHrNo7a5mb3WorWNZQJtkN9Yrt7LaQMYDAzjpl0LiiEMOfHR758bXPft5EOxaIOcvQnJAGmpxWpXIsQFPb2crWyvNZXkfbR9sr8q7p67yFduQdNv+wTK8zqUnezj4bOUtMMDytIDkM64GFACsgKwxpQ0waQ0Wjl5tl3XarIeZo3ds/2Fl2xvaR7YDEpGUjOyYNYStiAtKENAQ7CCRGA0xMSgNy1dCGFAxzCBn2oCmRcyqAnJUETUgjp4YYMicQKFg73416rOamVx5hRwgzF5HV8rr5brHzfcqI1bCUd5wwBtwRBAlAVmHe8X/gPurg8md+yeO3jCRhIJKSnIUOAgQkAZq4OW5EWJa0LHqiTdjHjojm52LZ2XO0tK2TXaYihizfO0IAUc4JCGCAximgAYyrAiFMZFO7Kaj5Tu222/tkWQlZQMgTgoQ0IWBgCEEauMpZMSx5QJGrCZBKYAJyXWgCMA1TmjAIBkgkxBAwQDKYTc42yN+PEM7M+dlz5vbOPqym5m+buLdbK418N/nO903LH5fBQE5xVetYoLrh34P4EPBLn/4iw1WLIU7N/a4LAomcB5gsfU1oxGps3dZ8st2OCdav/L5Zfd4ik7b8bLJ8Nz+zYLKIAHmKaREJ1NI0EjGQ+yY0aVaaP8ZYtBCiYUooRcCSzAEpwXQZ0uR6Q3YCAUFoILkqILAOgDxwmiBegwa5moIrZwMNgRASA8sBELArW01rN8sfy7TsZCR7ZzW9s2vEBMtNwg5r5+cO79pqMrnp0QwEa04gCIb839+EHxK873/7xx5bdoAAJUR2HgxIMmFFIMUrTLDCsmvZtbVgtEy9mpbvrYNXtwVTTJbF0M6r12fj2jYgYRI21pAWSCYukhZCkhRzondpSy+scTaFZcTq9cVai4HAagoNCAlhQgLE5CktGimFRaFE5GopBgIJkFeScwIkaQ0QoFydCE0SWGFKpBRsFQkhIA2Zn89h+/IU24XtsrnV6+D1NZFX2IqR9c73MtuFaQiez7gqrQJN3Ne6+eF/E5cPAe3P+4uTAiFBErQ8xQBpaNw/RUOwMuurJY3Mu9UOTURYXxmZ76Deor2ikRFa0RZJYAKTBEweMIApOcu5IV001w1rMmmEti80yO4FbZVXmrPLACHCDucGw5DA5GpyPUFKkIA83T9NOUtgAmIhEAIDaQiQgCnADkgICMl1S8BtGmJpO5jDgiA76H2x3F6tXsREBg3NgqX5bnMTU2sSZAFDcriaeUoud/nXMT4knGf/s3/itZeDa6yAgA1hSoLgCqFRjO3VbVT2zu+mNVpzvuNdg9VEfoYV69d8rPycJnqRttAcEIPJ1QTyFAiGYKGGADHAivgmetptlL1Sm9zbxRZ5Wlqw0liVBYEwbUciAcuEBCzFIqdVsDQIIURZtWkPCCEATRaxEON6kpZpCJYIJR2FQiiFcdQJmrjaDOWdTLAorxsvLms1yV4nT3Zbdlnrtlam2rRuu8kLuzE9V6wMJHkFiRzYx/jf4rh8KGDwld/w2252Js5DhoBADEAmKZArArJCC3Yt4l3T0qyWd2ktzNntnZ8LGuYYB1m13URzU1tzW22ShIaECUxKmVbAABRiAJMALaFh5+97NbfMvWU1CVlh3RYaIIAQAsNZsCYk5GzJjgkSxlkCTIA4AtDEoAlIcwKQs6QxIQiSAikQCmJAzQBpw1lQAE/f62y3Fisv2C728Wqym7zIC6HV8gqZWH5mZ6WtG5PVNNgACZLEcJ6Aec//9E0cl+PyIUB088J//bPf5HYsColxXYIUpOEEBhMhL+EdtELPGdHSGqsQI/lj/rzDOz+DILyzgtVzBoGAnMVSwAxrAEGuylmQ6+E+rHd9hSU0+T6WH4L5CuZAEMiERCAFEiF5QBNAAkmR5LpAIsaEJHKe5HreDwTBBEgQaDgLJCAgVweEFEDuu7Qasp35mbUcjmgacbRrfS1hZ4KsLCx/3aRppBYBiIGAkIKr/MDdL/qmZwLsUQdc+KGv/yVGjZCA11JACJEQTQGTfO/siB3sGkH+mPxT+8PPJYZ48h3aYtzWq0w08pcN5xAQkIbzDpAgEHI1UzKv88dR5jvIdybLz2ORfIecxZCrDUAiCAiZgCCkEMP7nwggZzmLXDURBGggOQvEgJACCYKcEyQEEgTKk4EsP7OyvvaxdrLyO2vHQpbv/LGt3dc7MbWVHXZpiZ3v5WcCchaQBIhP/w2f88IzX/l/vfM27JEX/C9f/FGwR5wFSMBOgKymJMIOyNbOd7yzTBALluV9YML2+YHFwjthO3kffx3mg96F/HwHQiAhaQQIJIHc4RwCDecEC6mFvnbboeV7wULj1gTLPz0EyFMCpABJck6u1sF9MwaariH3leshaQgi50RCkkCQqwmEAN3nRW0MQmChOd+RIciUv1wxt3xH+0NoC3YWmizfO2hpLYuvITt0LenakPayz/uon/KmH/s/v+xHb5EebcB3ve1n0CQgqzGQGJ5oSEAIhNLlj9OCpsVoabwPa7UVLQzn9z7WWibyaitMU6yV52NZZDwlJImsJqRBIoQWgAECmcRgNVaLliVGtoqR769FLEMJYQJmIEIC1ADJ2TjXAKHFcE6MMCHBkJ0ThIAkQAIJICRJJiQSTJAQJpCQkJBAAiGQSyx/nOQ7drCwVph2trQwYl8a27U1+/C1LD8Xq/neWYumBMJktUmALHryDW/8JZ/2d//Pr30GoUfb7b/+mz/1MqyckwQBAzKu7ADGgKytlonbzg75Pju0a7GzmrRXNN8h7NZ5Z2cfaou2s+xM784isQJpANOGBhBgnRRIgTlBSJOmLK4TM0dWy8pwJtlqR3aWFVnShrQGrCFJQJAdGmJAYDnqqAOaAAQB10FSzpKSIDsgCKsCAiQIDAiJhCCC0NAQU4IgaZhuB2BDZ9mxLLLWlznWjt2EucauaUsZ8spKVtNYoR27r9hZzS3vNGFA0rSRBqChA2x96vW/9Bc8841/5WsQe4TZN/8Pf/CVtwdA3bQHCZByFpgU2BFYpzHf0YRoviOzazUNy/Q+jfzcF9ru7aLJd/7ydVaOd/4cDMAQTAESGhBIIYZzytkQcDk/j2gFa0E0aESv7AhTuAKIgI1gQgKC63D/OmQAORuYADsTpCSQCBDmAMmDhxMQ8qCGJFcnBGu4v2AY004guJ3diAYNRljyHSaE1YQp343me7WdnbVk8j1F07SdJQFSMARMwARYj3b26S/6vDd9///wdWSPruzPf/f/7+a5OyZgTUnWnJId2AlNcoJE8GpZlgmjFSyvmxKsIIyWqWl6ZU1+r1Zbr9uyelrId4YkQIYGCRkaYAlkYILAOsSCfWmIfK/FS27MWTv70UzWxLAOQGbuSLNMSoIkIIXsmLia1AAmyaqZE7IjsAiQyZSdJmAnJQRLrjYAIewAxjlMQsGd2QTIZrEv1quYs6y2r/ZlNdmxJnqyrCxrtTk/E3bD0kassBNhYhITJiRAA0wJc8t83D/0C776v3x7s48smv13P/7XPnZBNAdIYBZAUEAEAcEOpv0IdkSDEK0o8p1/YhEhWTdNWF+I42irHJFvuSpnQcAUCGlKkLOc5bohu/nrmAYh5I8RkZ8JBgTkviLXB0y5KmcTmBCQ83A2BAnAFOSqAQgCgpDIWQAB5GwKpIBc9SQgyFVhiEQQLb/Pd4hoWL6L/M58H0JEIt/5OSWEsPIziBAQDEEkAOMsBActH/fbPvN/+dJb6VFFvvMP/s5PgkDJHUEwk2WIAQgESK6+m6ytltdt7ceyMPJqspohJuyXufnjc9PmsB2ew1YY8ZhTSNAARELqTpiwCoSnQEjC0thlrF+WV8v22doORuzXdngnakjSCPSU3H8ZIEFY5b6RAqtkiGEKxEAphADLcFUgJEOS9UoKrGYCGSYhSWBCAmmwZr2yRngkr/BcjLDgVUNMvp8L78L+8D0yq+U5v5fV2BKoARKgpoGQ7NSE4KX5wt/xtn/tR7FHF2/+0t96s4JAE8Bqsk6ErCY1gGV73ZrbdMsaYdRkFmojrWmsjBZbvVrWYlmW323FK9p25l5VYMiOUboDabCTQjaQQAgIRIPRc83IMrXFYpKfa83tHUzLqx2lsAOrAJnQUGIkEkgI2IohTRAmSRhMDRCSnJMkAcIAPAmEgAVmINcXJSQMGkh2AMuGMPlu/nLpaXkO2/lew44FE14tsrzMWabtJuvr57LVWtYIKsOQAIFctSRhHYJsqMf/0V/9H//ZsEcTzf6FL3wZCjHhSSiJAUsyjfvnaQelvQtPmT/X2m6rxYgzWWjLamu13YrM8STeLrMa66btDJBwBWyHNCw5SwMQAsFACJi+bvK+fL1urLbbstvOTK2b287KfDchZQdhTgQCxvVpBSPQpDRjTjAETAiQXM2csiGMox0BAiVSgphAZCUmYoAkmBqynSkhMAVoaP3o7TOsmlZszutVW/S0bq9aQ8M6L86Y2zuypttUeH328v0uN+aapsRyBDGUgitghK6Dlpf5rC/52v/4heyRZPHm7/38CTIhEGNKCKFJApNMrP6x1rvMqlnZYsoM+2y3leXesix5Z2fiqS0LXo19nibfba3d8MoQEprSRc6WNKwBQzGkWWbmbKSs1TQmbQQrswRni8XQDg0DJOOcXA+RaCjBNFww5WwIYJhikJaAACmWYIKBhCQESEI2JPd3mTKn0DgnWEJCcJRg2T7m5o+r1TKtwdIsemQOQxbp6+Zn04sVE5oJk0UW1xMMaEIgExIyYRX0sk//q0///rdijyKQt3/5Lx4IJiEBEl0A4zybk66i1z+Ml2SCJVY2ydo78iLj7HXyXP6YV8uTFmdzy/Nh5oYFcyBE2kkDgRAgpiEAS4NGCA0vHUN7esdyRm3+uncYlbd/mLzOeFUAIRmC4SJYiBGgZbodQJ1c5Zyyco4BWockJ0OkhnQRjJQYSs4SQ7MKhCUZU4KlpSsS0sQO0NiNbPdqk6aXOTvaaqLJz4aas7NlxdJr3Jzfu7mtRkaWZTlbDlkalmBgiTZuR03psfOP/aLf9V3aIyiafuzVNyI7hAFIiIQ0KyDhcrBybzd6O9rK/OwlRgxqz8dctIUzlvU1IkMvuhduS8uy26gNUhJTmEJkkauSgJkApeAK8MJx8L3bZxPNKuvrKWzFoO3IaIEkxiQEAoZghMw2QimAgCVgnBOQTi5yXUBsdkgDa4CcVZAYMjkLQpwbCBAgBiYE2CENMYRGydbRdmuCFb0kk91khLV2WKkt7AwrLLRpN8igUUxDCgZyFuRsNEQKJjA1a/Oz/4Uv+Qbs0QPFY7esjZxngwFCgx1swSNgPdp73agXVtjFO1lTttzXErsw530dr7JemVVb7zLW2Ry8a7wyU6wxXBVIV5ax4mChMUBI9rBIi8sdE1bDrs2u8cp6Pp7e9drO97tm67ZeFwOTRFgHWA6D9YDCCXYklsOsGdYLN+2IhSkQGsthsAOwY1lDmJ6aiU4ChHUANQYpCQy5Y7ADQlqpZRxlhKezp2Dd1nz2eq7l3W2thXVbtN3rbHbyx55j67be+V698zrzytoOXkOlAzWWNeEyZigRR1njNrm+6ff+K9+TPYKAm12BYZ0kWQFr2HGRZKdmbjl6t7Os3uusaXm3prXVgk273u7Vlm4vrxaano/X0Jp702p5Z7vtvHpn2e0dNWEMiw0hSbJKgiwiyxHTDk3I980nLzfnsWu87u3zVsvO271uQyPtld3eGQuElQQpwXQZYJUdl9mxFaSJkmMvh4tNMVEOO+2wTrjDMnGUJGGyjGGALsa0uoIkiyAByB7rtMc2ITtehpBkdZ1Xw8R2tpu2rHtn5bXazposm9zezQ0vvdJTmOazd7uZW6bJO3qrd7bP0uWqJKw2JelqWpKspjFLfPbv+b3fxyN6Z8pyaNIAJDMkkKYAXYat9j69M22ZOYYwsflYXme9fYz3udmUWfbZ3Ni1mXyvGA0t22dYM4uE5Sx0FBgYHUGYABLXUzre8xd+1sfBbtCWhcaCqelFo+22moU2N2A7BmAAR4vg5tSwCqXIdrRDHSsJ1UzACioghViirSaLZjtToWEwNSFZGiSQXG/KhEwLG7I0MAw0k2DhdS+jtkXj9rTss50xN+a2msVkNRqaFnlu8m7yFFuaQCldaYj710HlBE1SHYSRP+Mf/T1vt0fSszd3pCmJyXYkYmLaubIDs41Je93e9c6Wr++VNXq3d/d2lqXddjtbdtYmzW6a8t3chtvc/Nxnq90Wtx3RTdcJMMwMRRfAkobVnJCGv/HKX8/w9tk+b7fd5H28MmjZbpnsNrdM2nLuYQ6LycokacM6YUlHgbhYE+LajUCXScpJFnGWYWcZsBySnFwUDEvSFTpCVrmuBRgYgOlqDUnHJjTFEe4196At2up127XMh9vYWdZWnJnbWFnbZ+/oza0Jt5fVarfn1FZY3tmkozBI41gQWGcBp4bkxCThsPMPftGX3B6XR9Fbb14ZrrPOInpBpEAMsECspK1o7xpCa3k6YjCfaS/hnffxDj29Y9HebZ+9et0sP1eblrbYbm7LpNQSkIgpTBfBDCABl6mhOPqjv+4jyHuvlkWzljY171Zjte3kZ0baq1hhjwhlO2jYEUsaVnZkpQlDQvTtPMnd4wCEZVoDkBBCzgEM0AShLCI1CTucJSYSLGNq0gCMhj2CHbDQ0tyiGbWXevXUdpblZzS/X8HWeWFpNXP20u3VMmfFZCsyy1oJVgmGwj0oadgjZtPFrJndAQO8vfkn7/yXl9lH0Hf1hiQxyXVKGoImow4CDKbdnF1PzFp5Z+3VNDdnWs1NrbH0rmnOmzLRm9Sya7P0bmXaDfsYa1hsrCNJwMCQBYZMCRoMwJC3fPMv4Nzarr2T7bN9pi00ebd1Tzt7t7SpYRk2sFMCNAShq6WQAKE1DUFz79/52o+/9/RHf8TjL/vIV7/67oDCQkdJB0UCmNGkZU0YuAgGpEIaxJCBJcIKU4TQhACrRsPWlFlo8s7OY53XXOPXzt5nr3YTI95nYveOnWnWl8Xu1WTddrtxeweDqYlhDaQaQ2IWYXZvFgwEsuP27h/6yj+3PILfcXmtnAWQGEBEAAUazkO4fd67OGhBUbsJ+Y44wu2a4+a4UdjH9xEEkZXvoCZCMCAIgqApDI0AhoApIEKT/A98Msg6bcr3KZIVTak5orBdzGEMCArEgKBACgOJoCgIgga3X/Pct/PWN//4vcvcfep1T955+Sf85FffPWBjEkAkBEkQDIEB2DllIgETNgQCpkgO5wmgOAgaAwHK9w52vk9xfp4gku/InMJByc9DRFCTyfnZWCG1aADFUrCGBhCkAwaEAQUygenl//J//HZ7+Hnh3lNpSSiWJGly3UIIuVq8YvHDQn4Gy98u30EmJlYwwQoj2Nfra8JWWIUQIEDumySESXJOgDVuvu7LeAUPuoyCdxbB5HtkWuRnWFxNEksIuSqQQGbCDsAOKc/fMEt7efaH3/KDb37fvfe+4z2PvewLf8lr5t5NJshZznLfpAFouKoQwzkBMiQnAAESgUSwBAEyX8vy3OKdv1wWy7IsC+ZgZOR7WqsxwatYwfK9w86gkvsn0NBwNToAdgwIJAEm4Sd9wX8aD7+X7/j0I+ScgOyAQHEEIoWIoLUWc7S+8r1YvjMx9O45C6a2ZKtlYbJMy/c07faKdmjWhDAMmMj7EAIkIZAYgu3de/8pdz6WxFbNEqy1TEbWtDMry/eyY24QNryfeQoxyR3IDIQk+buvxXjQfeY7fuQdX/6Wf+wfunsxQYAkDFcJAeSqbJPUINQAAiT33wMgTciEBIESs+0QS9ZumJafa+nle/mdCVZrQsvOCLHzM5Of046WtSBBSho0BJY2yWomuQftCCTC7c0/8xV/Xx92+HNv+qSYEgSIAyBN0oAGIMnkuWUHvYOJLFgIWnPDbou2rAjmEIud3X6gibasUUwESEg2nBtCMLkqMUBaYzf8b3f5uNcD3Xpqlh9qDe+a226aM979iiyICRIhvdIkgFw1aEh3iiHJr4R4/2///n/6aV9y55YDkpSmpg5WaQASEGyPVRCSJqA5pSQIxIAs01GaAutBxoI1h8k0WZO5514OK1oRbTXRzkRk3dhSmLIbNBeWdlumSRpTk9YQliB70FgTxpQ0QHlnX/27/o13Vz/sfNvdT1kFLMRIgBSKAdgBiYH5cNs/YOsDC1ZCLH/MamivtHeHiYwdO/nebVLbLdulEeywBiQESJAUrAENwQAMSXjL/wEf+RSi+8eDHcYH3oVXNMEcN98TWomwoQYsAWnATk2gtCOxI1flLXh5Eez5//BNv+y4AIKAKRZHUgIWkyi43XDWMBiuroZIDMAqUwi2A0OKbB9Y5PWR7eCVbB+7ac6ErbAi72CHiUWr5vtd8I5omIP3gRpAJNwB2SEVgQmBtKEOwgRZh5//if99x4ebF/7iL727IBjXE2QZkBBbBbex2zvySuaHg4Xl52Q3ZRa1pfaOtsxtH8s7eBe9He19fC/ZO8uChOA2ggkY0rQKLoIhWAcd/BngyUuC3b5M4hUsbaIRtqNXtIW2YAi4iiTnVWyVZhmwUKq5ts/xogbP/8+/6al2AEKaEgxp2gEshe1A5SwI0g6EU7IDEgIoFoKEwCoUsgWH2isa1naZORqyibamlnilTfGc9OO2qPlerBYsrymBGmMCMERCgFWwBmwHbBXY2fkdX3ojD83B08f/+smfPzuL3bAqkYBxumoCSNHWaqEtf26LLPneYannO98L2goH5buRYfmu+b3SFiBnE8BE5Lq83xb4lX8ZeM1tq+qxa3722jU4T7SELc7PH7RAoCEBBEECZkEQyFlsXBLb+ZH3vThg3/76VyMkCAIJJGJQw8Fb/v6bf+TZj/nEOzdc7jwx3rnzEU/fOUBBAJHrAgwXJiYAE9ASFjIcrMbXEkPbB8K65+eKBvluvs/PCct3CyLfu8aNsyhn88pVATSQBkB2QAMt942f+yM+NATvh5x89v175l/4Zz5z2oYYMgHCiYGGxYMkQRZtB9PY9Zx3JmtQa2LWZ6OJ3Y9leef3ZBmOpaYR1ll+hztcDRACxBiIjkXShJ0Ld775D2LH57AK75pdM8paMjnMwbq99KtpO2ZCxgCEEFrGwfl0XRoJga96DHtR4IV3vY6EFCAxQ64u1h2++g/cuZE3v/n2luPyXHbz6lc88fQTj929uTMMe/PYnSde9alPIfc/Nhozua+B0bJgglgTVhP5XrCbycG7r58jTF/TmsOylsWy/F6FIWcDIZNACMQwgVyF3Ekg8ze98XNnXgQZtespT7lwb01j1kfu/Nwtx+8+uuyG5WwPIP/P7/4nf8EcUilJA5AAe5CSgMFCpC8yWZt2W+TlO5PpOUxTLCvfi8xtkWnEarsx9WItQ+IAMJSMCQKBJpiSJBNunvldGE9/GnuABUcwt/x+zsoQMq8Wmu/WhEAGkjSsE5YE4EnChCT5fmZ5kXv+8YE0A00EuoY5/F//G+fLvYCtvX32237wmXc8+8ILt/eWdW5v98Ljr5jj5g63+sRTb/jil9/OsQ0QnnaElXe+J7azoGVazR8nEru98s7vxfpalle03SD0dlgLsliAZADTySbA0iQBy0QMUxIE3vi8nzjTyqb2X/lFz9o3P7YEBtS+g3t3jfm0efS9b7vjuReeAZLu0/AdX/K6X/rJTz35SowEOQ9kR2CWCQhB6+vIWlbDtNB2xByD2ERk4t5ET8Ei2K2sLGvOjpkGNAkgmADmKhiAYGA3/IecH3saF/J9jFqErGzle6etpomGDGIArqSCMQEJCEkCNBg75M3t9xEv9s1dSIEGSB4wYed437/2Q+jyYgZIweXywju+4Yf39vYe1LPv/fGP/dU/8QKQDRkcAI1jH4uYn9mtrFfT12qxL2feoa+2WtkptCNMa6UttN383CHFYEZyf8PSFEgEmzgP53AuN1/yOyfOqDBx0TO/4Pks2bktrNmBg+v7Duzd//Qn75u3fvXff9uPv/kC0onFZ/63v/XWZ37iv/26e3fSveKiQiLbCKzCHLZi8v0+sp3yJHsX3q2zMI7bizzX2j7GalmRV76DJeR7ASkkAssgMQkxAA3CDggd/B8/hDvdeYxEczteyu/tMAfble3ChNfJZAGeMGUHMARIgASpYQgYWfnmH3ixjMcfYw8gAUKSVYCOHd75z4AtL3oC6GKctXjn//iq33LndiZtRyxP78JwLM7rMPku2g52fu8z2uV9YA7eyfeOHezsWOu2pBesYAdhGaQEQmliAHaQdkDYSSOVHUBedPHr4xkTmqu/6MvWBZwMVdKpdqIS2HXBxt2P/vmf+dR7v/1bf+jvPcP9s2ee4es+/rPuebMYZJIGpISByYsp693y1PKKvW6+WzaxWltzNgdrmiZb9OrVVuZ1a+OssdpSbw6LGDKERYYVkEhZNMOd5M/9WVzi8Qs7ph5zmJ7I8xlbZFY23Zh6o2yfBSmAAc1qJEi4WhOGJEA4fD3MvijJnbssk1BwsLgKhHXD1/8BmAsfyMCK+4dC3/9Rd8sJyDpYJm42H89iEi+7HjtPO57i1fKc5jvP0RvX3te4aUP3hO0so90LebcdTSDRQMFBZNYsw4oGNZYhEEzU7O7nvlXO1JqYf+MfF1vI3Kma0hhGC7Js5pjHH/+kn/emlz37Q9/1V35kF5AFe+FbfuLNpUlWV8vApKNtDOKWF5mlt8ogm9Pmd9awLFjkNWXv5NV8n7F2bOd7YT5b1nZIy8lWm3YMuhLJ1ZCanfnK/wqDePp9uLib73ua7zC4zWp2ywttweoJUSYWs9qOSdhQzAo7YKUuJvnG/a6dehGIx25hHQwQYtiJpg4u/8ufRC58oOPcNeL8UdsUg+6OGEnvXVGPe2afzc3v9rrlu96imZq2bls0rWa32JnvZl8s2m5hMTJJru+QmDUSNBAZU5jQlDSQcX7NjZ84U2rJVf+8cKoKQhWYEQNWNEmAhThe+YWf/okfe/zQn/z6t98LIy5/42e9eiFGAHcgOwDGAqEmmQ9Mh13M57CDKeazZhde52etSbY+TEFh7x9gH9hZUVh9NSAgshwDIBKgEAoZ2Lz9D2EB/NTnOIC5d1CaMhWm0xy2ip2Q872jSTmLDYAwUCNAA4RIIZjxub//v/rSxV4EePUz3BThQA2m4Xq54Zl/9X1YvCRfzeVmgGQ4K7AL4sbh7RPN0bpj7msdzcfMh7YKiu127Py8r12G2CpITDAF0jBAAAE0qAOoSSkZYgBSgHjK3neeIZl48TdDj+KUA4EQVlcaAZKbz3j9x/+Cj/r6v/gt3x9IX+nnAshZhhgDSCyVlvK3t7UwB5OsfJ9WedGElRCE5XsysWNZlvxcfo40nBv2KAEZzgJpgBkdz30JEMDNz6QBmoMdK3+bLWEi3gkrVmLDcFbum8a5kwAp1wdALvOGP/Ct/+H7eHF/4i1DaQAygLCzd/m2fxMsXprDOU2AkCRMvhcUlrCzrCwjVkQWTP7yWOsrWDDHlu8lSAhgRyRR7p+YQNJBAho0ACmy6njOe/vMgJf+XbDMqRhOMWIgSYCduty84iN+7i944mu+5mu/L3j33/wlB01gErri6bohGnZblpXdWvleCSYLMflensTyc9R+GGe1JTtf71himXu6UoMAE2RIwyLNCjTE3tz73TAXzndezyrd3lni1fp6CjuYmq+1rzVhsuMcJqtJww7sEAZ4AliVqx27T//uj//dP2wvwmNv4r5CBhhMzO3//odhLryU01UgRAxhhBbvttMsf7tjLX9ccyYYMnboxX6srGbJvFoma/EiYIS2pyTJxKwh44BAabYhBsAiX/6hG86I9GX/hmawagJIAIMJEAQkSRTGDR77lH/4s+++5Tv+3PfsH/4JP30HrAFbj7oiZAxJ7MQiJN61aPEuyw4W/Yid7xVTvsMq32GC3Zy5QRYXwzlzQNIkaYxBoAFuH7/3+8ALVx+/YYjhkO8MwWpZaM7Lro3VshoChDTkBAlIwtBAkCYokIg77PzKn/YlL8y+f3c+CmgywYSyPPjOf/MOcuElO4BxEMsBkMaqZYU5QmNlt7LDGbImsuSmacrPghah12FlZwdzxjqQ0pByFgSMFGzHIMYAFFKAxHAZt54R8negC5BgaArQBJQEJNAsA4TYMrtz97N+5hs/44f/pz//XT9poEYIAbcBWA5sURsf6zlsxdNnek6eQ88Hz1mTtXVsq2wXXl9bGYrnGjuY0pPlnTcsKu0AiwOG4jaSq8L62Au/H2a5/vq4MIMmtrrxCpa1nWlFTxiH19FbKYdg1UyI2VFaByAVQgkk6MBub379K//LtffD7t7hdgZhh4wG9g63f/p/AYuXrsCOYAMQgl7hOTaH59BzlnfYCl7hXeutW54PvZ14O2yVXuH5wKI9J9u1PHfEhOyYNZyDoQaygWxHMARIIRDr7HreWz0TeO7TmYaEQITQCYgJCBAMMi1idTSsdrvd/ITP/4cf/4YEI3FRgBBgBwMNK3mpPcl2zMLtnWXRJjwfvJ1m+V5WQ7aayc/Ykk3c3iXPB6adkKCjBQESg8SAnBf+BZhbrs7Tv3xpgMUO3oWhnrIIW1hzDdpCnkAwSInQNMFIkNUQSKChCfT2sd//d/5ivN8vex9zQYAUImf46v/+eXB5aQdy35D7LrRFlu+1rGhovvMik7ZdLJwt7r1LW7gt7k0W5I9Jk5+CrdMUAq4wLUw0kAZgyPUmMLNc++I3HTkjnmUPsIsm6YooBUpFDOkSEGoImlmgwdvbm9f85H3hwIliZllmFoKhVTA1m5sWa1+9FZ675fnMBFMv7zTL/WOjXt7Hu8Xyrtlcm7S13fLUvOsdIl0xl4OMBK+UGBfm8B3/KrB+ys98GY8/9eqPfYbLzZLHzPV6ujG3vMN2X9YNk03llV7eYTQmLTNBsrPoVDA7oWsdLCDCTuPlNb/9P32vPVjs42CLw14GRrn98j/1XYDLS/r2pinwCi6ufq3z2Jnssy3nkZ7p5rmtFrxc23aZnWnBc9pL77wjbzXjeuNsVF7JBbUag2XYY9PAgBCthp1iiNCggXDJvdtnwvpzkdBIgRjKrq6klcIOBSVa5LSzTjkgl8bjwjK4U0OBxg5YTLbUZtV7ufb/nN09OxuKvU+9f7xqm8s/4rO9fOal22tpL9eznH+kbJyNY+zydhigF2xsYSBSWFB2ckXe8c8wj/+kn/sJr7oQ53s3Ay3lxXnjTK/zXsnDx1vpoTY7/eNyPaEsggQcmw1QSs2O7YCxA+7FSVdm+dyP++Px4Paep9wjIKqbgbd/6V96LwjLS/tyeBk3GlkbMnZs6t477CXNqvdy2Xa79y731jpv3P0/XJspWzveujYyL2nE2s68uxm0mSwYiAaqMaOxECNrqpGShmXSVg3z9aNnwrVPIkpiYieCgWpDBAJikMWmBlxcJWJodRZZZw0hDCZCoKQJQ0OTV2vK1uyMnVkZ9drOtJaZwm7LK8M9dl5NeYTF9GogDdEOTBFjARIgMTzzJa/97Z//uncBrMHsEQmamklb05gzFqZM1Mh6ilnBMutsKCvS1KwsE7rpKkDHYoaE6+3jv/lPvPv9iHd/0+febCneHPC+H/7rX3qAxQfvPPHCvRflhbtmhiVISTc3Y9FWRqbR9JKR8Y72cjYfb4q1Xhm3zX1N2ktGBjExf2yMEokUAgnkMtYkARg5BbpY4xZz6JKPngm7CkgXUZIoUN2FKdFEIJJ1sFNHRCNrYgbDAtqUEiklWLOeeVdrWqbP1nYN5zXXZu54qW1uvm+v1Uw11m3z1dNnvLvNHNPoqe2mZJUAjXCommmFYRl95k//pj+yALfNASw6sWqsXlMM2RIja+uGWiaamt+mAcgKwgpDxBggLA3TTg4Buk781I/48/ZAePtvf8EXzgjQj3zXd/7t770BWT6YX/2KH3/Pi0YcLCiExKLe1z9MS5uVl/DCWvVQWBo7ZtdazFIb2TjRwiYsssXavUqSYCBAW3Bi95iFGHIZi4aSnBIM4MCj338m1BQgaAxYQgwSrE7osKMxNGBoEjLrzgpYQwlIgCs5CzEtu9mZ2jK35efCstvSu916sjQsZJobu81NnpZmmXturDQ/226TJCaQRQNXacoJOuytX/hbgYvMscke7VETWZpmt+Y2xCy9OG99MSnTFrUagR0JIwEjRIjEFZDzBIkxrC88/QV/bXnw4Xt+16f9pDe+9h1v+dEf/YEffPcAuHzwGnzCK7/9+RflXU/dvTQTBiQIGJZgbgtZs9Y6Rp7PcxYH8UTbZ+MsaItGJg2arGar1d4tIo2rU6RJGIOtGmBIWOMinNyjHj279oY+Aza2sQyRRCBBCIAJq7WSDDQJ0IiQkCRXA3EFLJA60uStGit20+BQtm6ZnTVismBqYYRWK4rJGspzlmUL51VbQ2gWBUkpxEBEkPaT30BxELoNi0gD7LTsmNN2a02Yw60gYTl2MC0NIUmAwZOc0yYUc8DSEhB40zvf/GDu+MP/7bd10TsAnuKD2fz8+YrbF8G++VUfYwMNkkgpaTfsDMvNOiZoyW235V2ktea2JkaNdUt+t5hkI9GwWiH3TzBSOR/ExAAiAZhhEgrTkGbvUc7ErggQsQADhYSE1WJHExDWkRKQlQFXwFXIAWoUMKSBM2SLRAhrDrM7Q5nK7ocjyPfKK0zOOt/jrGgoOOwcJAxJGjESCkyI3XpXbg8hJwakiUD9bIVabvssWXNGsqBFUL6PEDSQq0IyECiAZIABGICQDG+ab3qwytnnvvMdXDc+yJOP+Cnvfeu3vAjw7Xc+BVMwhrMwklErsiRLaWghs7IdJLY430GyFg35Yq3stni3tMLwSiIxCHJ1OcBAWBVkB2LA2AEJUH0mnBhrBpTC0FRTOujQCQaQrFOuWrJHO9sIi2YxAKvJMsDiRDHJu/Y+z1let/W6+Tm9bjyHzcc8Zz3d8rqn5+y2g9dtPZ8tr149Nz1HXi2PW0thccK0XJSz6TJ4bDOLaYvQUB3luvAOXlnT5NUy9/Sc5YWes7zC4yhrANajXCVZbQD3ClBTujPhoum+7GU/9mBAcZaA5YM+foZ80l+/ff/ife95Pa47xLAiLB/zXO+8wuu2PLe8M233yjvOK++85szhOTLi1TTBqzU7Nh/Lc7Lg+ViukuyQrAaNwXIYrrOyDMA6iwm5DE11nQn39iErdCQRKKBNQpME2kp0GSGcXZhpFYwQN6ajzAiOWBsrOArvE97FVm29WuPspWzrM1OzOVhtVm0otn/Y2OHt4qmG7LXitVrepw1MsJoU45LH5kVxaRzcbtZIKJiABkvxctvuHS/qyc2eO0y21u3d9uHltpzXOFhNyERWDZYhQgPECC3ToOPpd75f942XonB8xk+HX/z8XwN7MNi3fPRNrZdjLJxYlJlPXrXpHzuea2PXa2oen7FdmxUT1txMbW2fea14Ocyt2dLI2j6WEWJHSo0VIfIolwFiKkEXRYIJiLJrNnkG3PjxP6JxRIRAJ4DBSgskYiRoWFehVAJkJWczOeewpmwqZfa0fbzbrud1pu020qDe0gwfL8tEY/7hvbyaVrR9Nt71NG0JttND97IjUjeTTKwG2IN1ChIwIIG0ncyErWyfNbtZLCbOc4tJNjXj7N1EJrBMkkAAugxJYlOJizC76LQI8MoX7SX6ab/4Jxy39Wm/+Vu//K0vtD1YX/vGlyeWXO+gLXg5W8v3ziYNOw/XW+9qzhqy5+KtmOzs1mTvGkKrWUsbnzdpQ4DkekOr04IJYZINJWCha9ZRWFRzBi7f8/zZxLALooUFVBMJBguDTCVThzTLUFx1j+hYZHWPkgSIIbwI3WQfO2qHe47b+ywtljU392i7yZp777PcluVdy3f3irbbq9X03LDzDm0DQjSEkli2N+4MO6eGBmAdchuTHZrbzs+WV5hk72BpzbF29m56tTSuQy5TgIRNaDsgO8LQAJ0whiZthyee6yHSy37qG9i9HD/1n3rlX/oLPxrv51d+0kc14O6g7SH4zmojVvPZi3v7bNcu77BsH7te+Gxowk1qy7TbuyN453W0HdlZ2/t8qYwhCFc5W8PVY5kwpnSRAGG2Y80oGdMZED906OoprAakAl0REAqQAKRECjsp64Q1gTsBaRBoLpOsA7hn2XrH+5DVsIKm5x+MleemIWPCveVwZrVlguW7XmiLFnbz5x2BBFxJS5IdV2AW2TFIwDoqGTu/p8aupy1Y5F3DTqwGDQpZp8GMszVxXYidGoAJ1hFigCZe/t59iPB1//2b/qm7ufajvFre33fcfQrSwD0S9gg7a15BXm01Desd2buwxCu1HXlnseRvFw12W1aDXjXfqw2EFkqQCCEZCCDgZUxSYDmCWWU1ngHywdtem3ZEgVJiyqKrNBhWQrljsAwMO0NyHnZozKkBCRJwZ+pobzDdu+xD28c+LGtlH793LXPbZ+/jZdfa67zDkZ9L79Crdfbx+pjXme0T290KHSRJmGlpuA1ZHkgNyY4rDVfl3XaN12f7eOddMucdR21nx+xuZ4fsxtAY2QHVzCqYpjTtDSvrhHEQwgAJvOz5ew+Ty5v/l5/yi2ye+Y++A3m/n/vBN7hTBzRhHWS7nhu0nfdBz2fddtsZnNc6O0Qc2XGm5fm0ON/h5h+MXS9zMtfa+xjSOE9IU4iEe9MOYAm2B8hiBykQQFiMM4Ba/upr9yxKCk2AzgCMpCRAU8BkaDJJGrOMOzUA6wA0rKHsNAIk07QzmR07k7XQdNtny9wYDouFvNucd5ZXdi/P+fN25oYXeW4FwppgsBQoJwEsMGZxwtXE1YZyL1tlrO3ulUUTvM7yrlGxXd7HhMQ42oMmDCNJQkxSMq4nYbjKzke/+90PE3vLv/9xv+q1d//S9+O+f8//2V/2WDSQroZwzwn1TDErWAu9ej70aNk+00TPh7VY73hnmhtpsZoYR2M7Iivjpq6SMGVCNhSIwbGyCgQCdbOoVteZIL+y+XUz1IppkqAhoaEQqUDCsDkWpoVSE0xrGgwRHMAqhTJEtUlb1NoOsrwq42zWDbIVi2C16ZWJXulpma3i6WyRF/cwAxCCCUIDQVoPoDoQY0hgigYaq717fXyfxVpTNj6bZOODtdoOmTQ0ydlsNUUQEgglAiU0XMZK7lz2YdLsd/5Pb/xV3//lEO+3/b1P+IikdcpBWDtWwg6vYrUs3z0fvDsmNSt7OrwTo7DEaqbWpHl9sHXGxBhkBwwEQoMGLAFDQoRIsxgi0UA8I2r7v33DBT3SJl0YOiAhiAUgsYZmgpgIbUUDQyO5bmFDElLaTG0ttPJazW7b3d6t9q7laWeTbLHbK9v5XprF1KtH0HMb5LZCGwKyCEmYYQI7BqwCBJLAtEfc/zm7sTNzGy12a7QVllk30Vi7gKbGcDUBBBOoSYMEyJzCJEF585M8VLP3/eVXvuUxXsz44W/8BexkTCQ0TWsjsXY25Wf7+n63s+gJI2ivz5iypb3C1Lyz29oty/cUj90gq65CCYRoCWQICc2CAAYEMhsUZ6i8+/1/IaY0UNJFmbaETghSYOsAF8dIhDhbAqQNwciC0o7kmpnlNmKWfLd3ytppUG9hrfJqNadNc17KSFvtvNZ5+7S8ON95nU07gqW2Y8OuwzkHdnJYBahBsoNWYQttK7Zy283tUb117FXtuVe2W29HFEPDjrDmtGa4yhRIwTSFQApsanw/Dxng27/yY31R8Pn/+4tuSktlnXSWe2vd3tGXLLFXu/ZORu3eqrZ9sldktdbEvm5S73XOq+S52oQmBigrTAs4JeLmwErazpCRWqibkAXonBlj+d2veSHN6ETSBcaikxhWCxEBHCAYABsWGWzVJsYCsFXODUIZdlsr+7GsxjpCcOa7sW5wkJ/Z8DFWs2irMKexi7V8S0wYOCwoQBwBO0PcNwV2CERyup05htvI92G1ZGdzO618t5hKzHoUIjUkkAkmaQxnKQHShpW3PmTOz37bK6YXBb7qlZ+xzjokpEAmPLfz5Gy7sGTjwxLS2oJXztbCctYNCeuen2dSVvLzCDVxVZJSrgpIU4iADYUMIFgDhCN1RmTiru/7p/vBwugMxUSiA6MFISFA0hUShqadBBggTMgBY8gSyEyaIEgIxBogCBnjRmgwwhzJKeGXIUh8t2g14ZB6JK0GJOOWI00Bq5GSNDxxZCwgJRNrCeFAYABN5CaUmOTI5LsHLaHVSDIkAeIASGnSkoYCpYkDJCVzAHrvw8fe2fCi5vd99a85SoF1DBFaE6gHkAAGaQNokPkFCuFIEDCtCUlSMiRzIDiAYMgQMAQSww6CZlg5RwfkzoA0xOwArkOuExAV+rOckRLf+Iv/bm2ZdBGEInYVKCGo0UgJQlkOgHWsGqZlmFZFlpFq0EK5JnAOJAfBkBLkeEg9CBpwE6sHKwaBSCkSGvUHCRidDzuGFIrHA2oSNeFQjwYSD0ghSIR7wGJ4MKQUOFVOsZjUySKGxQTOITGkG5YIkgogUQfGWeIAQqST0Nh65bmHT8WLbX/rM1+bsKOwIxBDOAecjwiFY2AwrCYFAjGpnsA6SAy2egoRGqAcIMasAyBBSKQdzg1ZB8RyADQMNWCNWB1QDVOi1dTxW84MsPqHP/nNa9szi051aApDF0CnhOUISjpah1hNWG2oAWtI6gjrCBaGrBcUAw6FGkAIhcIxknNBaHJqxTupfaXE8YJzACfpueB4ITegGMgxOFxQE+LnDaAGcJrFEBIsFh5j1RCOeYgBN8NYcMyTY8AxgJvBOSusIMs07NgAxEAo0BAdJcus0hFx8/zzDx948eIbnv/prqusTKyGnMjfngvLZbmAG8hpcgyoF3AKLGMsQ8M6xCJSTrIMsMp5BZdJakxWG65aYxCussN5B1gnICRSIRWO3Xmm0PF7lv90fTnEInYIaIgFmCJAtkkIlKvDMq6sQihszkANrjvCMinQOCU7RwliieQtOUbreMHxDsOEelCghnwHBoKEmC0IFoFYLPEzsJBxnyeRUrKDmCXUOHbu4gWlEDRIsGMQgOPjMnrIoZYhB/Y6BVhNVwNDqY4GLiMFR7oohSgrRvPdtw+hePF85j/+Ha+5PSZKYUXgcMBnAsmPWftolkvOnRL+mBQyhHTAjpSC0cRJMsFIhR2ATAmQGpIVpcQhQSKnZUAS3GbWWWQFxBy994zBWn7L+Odr28WQSOhgEZSByJjAhCEraRgHQc4CAsKQ5E0CEyZiCJSCMUDOAS1AHt+jV4/e3QYhYjm+JVIxWEaDYmViIyURe+UiG1+Y5ALwkHgYyk8D9CAHeTOJETH5NoHXvXhjpAQOrJEnK0wZUigl26NMhOrIMGDVBCQEM+FbH38IfSDjq7/lHz9uHXQNqXe3lfXCU1rNkt5BOgBJQQE0aQJomAohBCKGR3tTNzXoZDUDMWWMNTDbsY1BMzWkTSC5nkASYR2QuBrYXp45WItvPf4du5vQGRIJRgZ2YVETCOEOYbJo2kCzTEwNSinEGNuIxGLdC4khx1ASMeRblBQ53rF43LiZHlNqJDezGMmN9GZ4jN9JjVYPxj3Qa2BJEzRIGj2AU1gt9F7INYEkuRmGhGAjFM4HlJL1aiEWgjSmIUgNSIORA8Ik28EKAtKx8qM8BA27jwTYi4X917/gky8NDTuG3Z8wDLmtUS8WI21yxtAALIV1TwgBacA6QFZXYwDEcBFgRyAFaQgQsY4IXKYEQ3KSWdkDLAUonDBkU0w5k0j/u4/9h702REJkRwOWqA2BJE0hzBJINE1NQAIZAqUQIBlCGCBpYSC/g/QWhkk5IDQDYWESkknasUASwkFwGgiU8m2Yid2QSktPb+lhZgLcQEgk43cS8i1kAobJb+GQnxYmuOhKAq6EBrDDfXc4N5RAkiId/ODDIIj7xjk+gN/zt//R4xbTSIwM0/gZAklgCLckkBCwUjjBMOSqZAgYUDIBacAOhCFJAihhJg0BTQmWLiZXQ1wDwfZISjC37j2DkPiDv/NvL8lypgNIpzDtCKQHUDM0dYDsALNOzXYDsBzgIrgMyCpCgtwfmudo3URvpMcDuydwk3aMRgM5hx6D0RBPwesJHqMdD3YNWI5WmjCQU9vdEzmHHiOvP6CH5vVAbornYNeDcS48ZuuewT3AU8EUOYXVvm4Dj8kUB7QjTA4gyLCDwI5gI7ocZI1Azg98x0vn5rGbp15+c5dXPvb8y3zP875wef7evsA++9zzl33xsv/hp/6kLh4wy4ieA2Ew7pk20VOzHuApcih4D6Qm1gim4DIw7SGZgssBdpmh2RGoAUlJEGBnwr0BpgYgDnA9YEDClB06QBobmP4PZ7Zj+r9/5G+8duZUZiIlhoDE6A7nMNkBWBRCyWXIUlgGcsdsBTlmwDkhEA4HnMohgxuME+Uag3PBoXiIcAw4eBTiOEUOByVIwiIEjsEJA06NQ8fpAkQ4EbhBnsgho1B2NOME4aNSuAobHCrXBpwMbgDXiCwjLArLsMPKADsIq8LiwCpQDPI9z3+QGfCq19889YpP/oxPePntPW557vbO8/vYDTccevPuFx5719ve9453v+d99+a5ev5el1u6fe6FZ5/tshBv/tu//uYWlgHYAQTpISvTQo2/PRSOR5AJx5RQWGRYRGBV2GmARFgVAmGZpCZhBVkUCYRlyGUSVpQwWRFIdkpXTLP1vjOMqfrt3/Pof3hFTe0cYDnShUDhCtNyLFOapU2r6aaN66wugrtjUxiG3J/S8HrN6xGetk4tbrZSIFZej5un4I2wWOsG7QANaaUp6VkSegM7l9Hi3T1an5k1atzXodKx43UM8gYW9DLD86t7ZCAQAqWt3CWNIGmeU7KaNUBpHawCrDBdBmQVSt1hnXX4Rj+IzLr5nE/6xJ/02uPy7As84OCdgzlubpyXPz4f8dFPveplTzx+Z+9wHDei7QvPv+cdlxfe+d73vvf7v/5td+dgFW0Hdml6ChAm4WnZOEbr3OkhruZZyg5JWJNuB1lDEJOwQwerTSkWkjWzkNKwQ1PMaoCwTJakqy6mq4XACtncPNPoeOx//vLf+qqZi4qk2kjAALOAJU0kSOQUMRlhWAcBwpKSod1OGzXyegQ1IIVbyolhpORpmYAlOzwWIcA9gpSIAYUkmXgCpB4gwT2IlAAM0iCxcwSEHiMPlPj2o7EyRiAUjDIxEoM0vg3AgB0jNEK3YxtzEdcUWrXA2Z0Y1j3e/bf4oLXgE37hT33theuVJGk8qOA4x8AhN3IczN2nX/66j7554tVPPvnYnZuveeH2LtaKcjZK0gLNbnICBqygwQnm0SDjXRkHax2z0hA0kWmcLUPXGAqUncQdwDIEUhdAcpEEElJKIEm3ASi8df8Zh5Qf/ZZdf/fpcxZWRSIUCiQk54YgjoU0CA3SMM4pYRLG31rGAjAkQE5PudW4eUgiJEkjDBqhlxhSWusUSAhQApMaEQJmGBCrfbVs5QKMBNNDTpDg1CzZ0QIDg5tJjSz5Nn43AhSDCcAgIYWVaZ06gpKQs7DKCig/8tYPFlnu/PRf/8kLbSWjhgQJhpARBMYyQO0oizF696M/k9ub3bFMWIQE8ttjCQFJkkAChgGtBPZxFsMYgrSkoyBd3QYmhAADcLVmlSSudmwa0JDBLFcNXY4ydFEoAX6Dh8Kmjv3kz7z6K560llZiYieWQEwYLsK0Hck6q5RpGK6ECQ3Jal87CK2dljSSQ1q9bpyAp+ExwhPbbUVKLQxL2CWxkDxmkZYpSQbEjh0CNA7BgJu0MOG0dX8432UsDDkNY3ejkdw8TDtNwwB26WlgXgp1EK6zTQ07pU071tSQMZClWUcwO/xpP0hc7nzBP/40XF64kzc0raGbIKFAZBJDYgl0VMbAssxyc8uRssKQxg5j186VHEKyIvEELEnD06ReSE2yHWBNuI3hMsuwx+5RekqwPbjMJCsxQeIO68SwuAcBExruHmbpdrNNDWtj6zbimQddfdN/ecezv/Slewk0EqAzBjEQYOwYrkzgKrlOkIDU2NrgglamxE9PLBbgPeIUubHkBEpG0MNDIASwBoSsUogG1jw935GBAItMwtBLFoV2A1NOgwRo8q1HaMRM6nFIsQAJyQywkFWujEeALsCEaUyrUDi7g1iom0rQhIDgu/4m9oEz987P+/WvhL03j9esruLaGNC0CrrAUMEAa3O00AFpBgPWIDXQziEx5AS8BkaC50rOQaHhOQ7PEffXxRACgwRwBws5NySr2aqsgBmuSCk7E4sAJhhGmEm6DDvA2wp5SOzI7T/5O7uvec4XXkAxJXRIYFw3ZgEJBt3EYEICJGZ3AHasOaFBiAWpwY7F946VIX+rtZJGQgMPEU6DHN8ClmAJ1mJ3vuvLGzaQQEDw0GtkerBD8xg3SBB2CJAgx4ByxvWAUwxggcS36C1uWM7uAZAnGrl/DRACLogBVkMN/9cdPghd+um/82noctzt0kRG4B6BK1iAiQHJOZMdmGJFqAETIIV2CqS3cHcvQIjvrJcnPwVIyFAgMVAwANcJXU41naQhBliOkKZIMOhYppSqEdKm0jJnjTRAoFLkreQhAoEce8NHP3bLk//EE/atMVHBGoxlDFIipWLMdia4OMKmNNucmgFuGmkQE66NpNEOJ8GMc1ifTThHdk+pDQq12uBgRvHgmlGO+PBnQZNKC3pf58jrrY7t4rORNILEypF3e1UT7px4nz9GDeWaUTO5YXY8ucbyJq3LAXS5McqBtkNgHWjxgL0cUim4e0AuN+/4I8zlAzYXPvKf/imww7FOuQzQOkaDuRzk7kxwOweyOxJpsmO6OxPdHoIXPare4nKc9ZBjZseEbuJ9XqNjyuXk/vrzdY2wTLKoWWPUMFUzRTNRTHLxCNpRWEa7OJA7Sjkx2wDcHge5arlq7AGEU7bHre9BHkKFHP3Q23/ns8/4O88u08QCgUBKgRIhycyEEClp4uxCA5IMQM4Fp7vMJGKUAoRY2MI+W3wXeoOEsrFPA2gBCRmIQaxcHsoZAoQ08tzhIVgCsRKM8Ga3DBYQ3nYAJ5KcNMjQMgGScocE2pCzukKChCVIUDaGGE0rCDD8cVg+wHLhF/5O2KbJGIKUDDBiCiaQnSSmVGCnkEACMwxJwMJTQjlEbotFnggxCFiQIQSuEFaDBRgw2QpGmoCsNWB7tEc7oYsxAWGSLpo07pAGLMcKCUlC0FCOm++Rh9zKdBsHb7liHSk7ClIgCbSdQMIwAAMS3HGlnAXQWngCD+wegSiFEphlsxSyG2BCJsbORQ1aBu8A+TYWK0wCJAON+tMpASMNNAI92GEYBqQBeCYGYIABnjsAacXfpiWWhoGepElIAiwDUkqQXJcAw3AWpPnxP4V9gKwn/6U3wR6QRGiWCItNDExhw4pN20ihBNCECYvTLKYQ6gl6Ga9qK8gVnka6vJQwiRghcMN1QVbMDA0TFhkgZG2MhkBCbJlhEaQaCcQSXGgoQQuYQk7AnRdez0NvJp7yvcteLpOQQgkalgnZoYNlFoE8kXE2iSHI2UBIW8AxAiTPxwFSIhSM0zQIkQMTaFmvW+jJbSdEg0aSI2tEaCBhKDdPwBAIJUggtKSdhieAyQ9gBAgZQoJQCyBBTon0xjkrEEuMqysallw1SK5LyWx3+fcgPrCzfey/F8tgA67UAIHICvKAKaQNK0kaExIgIa5gkGCwg4VQIw8Nw5OUU1jISQgr0sAO0sxkYieZZTJJzqElSCYIIQsOC4IBUyEhCRiWIKurKzALgyzz9dc/BE288J9hVwMdG2OAGnKWQUkaVhIypjwFEynZHgFpmNTAwADyxm8PGGcN1s0gSVLC0+AUq0nkyOhlN2C1hARMa0FCy4gFIcA9wlpIgoLHSwhYrPMrRErSEAwTwFh4jnPQTRJMShpIGEJgFV2v7HBVkATYA/7ad/GBdvmE/5Du3YGURMI6SIKOhXJSEpCmDvagIcmhqYmzIUwoBCAtWpBmwJDwBKmVIfEOYyZpiXLVmkV2AJIEEkjSECBzWAZYhoY9QoMkAQx2pkTDjIYwi9mBTI7b/56H3njhN9OOxDSxYmAnh3VnYOOwnR1kbYhwiAZ2KCXQAL1MyXIHYHKTyJEAaUiACbfEwtKThCU3yBiEDDkHAZI3rZtYPIjEVmIm5tGI1GpY9IcgrR1awspTT/g6BrcbRgiRevD4FshkK0i5Y5kaOYQCSbqAkA0QXO68/T/EPjDWp/87bHeSjQ6yBmAH13BqEqEBWLXogGp0i4MVhGYRXAeyAYpZMYl4JI1C5YxZNGoxroZwDGIdogEihzXmlJar0Hq04yrVDCsMCx0YO7rZWK4HsB5EoLkDWE4rTM02/r0fovohJhN/E6gOWEBgZlMIFgOZCasNicGq3DcUIPlttECM3ytLgR+A/JQwE5JbKCWCNyiWcC8GIcVuOxaUS2oQzSiVapgnwrmglAQQ8BaIlKaknKeApZCZhCQ0uAGkQb2AU64m5IqkJjQkaAlTuMMq7N1n/3U+ULJv/I+Jm40dEAIhkxosk4EVYZWGBFmROgKSDEMLYU1mRSDT8sQEMhM41gqUhOREIBAIJJAwU3ZMgNxJ7ms0kEwMmQIkrAgYZAKlCAmwYqSZuA6Jl+EPQ/OQ+8cfzTTAAKEx2lEoZYVh2YEhkBCYdoDgAJeztRW31UKTXOe5buSAE/xKaiHfSRrcPBYr6xEm5E3henrACkAC5AZgmSF4LL5vCPHtKRFKpMY5CG7CzfRmAFI0IHoG54i0H6QhpRJ1gKVGDFEHJQgEQ1NOCXO5w78Fc8sH0vZj/kPiJtkZih2NBBPIGqIGIEHICXbMoCNKCToSEmAFLAbdzG5KxwBuSKCNEyDXCCVPiUSyKzsGOwKsgjtgNRoMjaEETpBTNEOFE+0MSQjbAU0DBAjsSDUDzN/5LuJDTE2X/GV6bgeCzQEuA6w4QEOSQjmy4MAqQymwI1FOqCd2M7wmlsNC4RQ5FWoIx8ByEC64tnZN8BxYmscEaOL1hyQXxExObKfioVATPJSOPwQJcE4IR+QG10ahFrk4B3FbEDNrC84HuzYIFJcjWEcIAXYAaoQuh0aMBUo3/B8/jBc+sL32PyMOqAMgRqgZWFIIhR3JTS0asT0aFiV3BLYRtxGIsRLJlDy0jEmpcQgRz2jUjodETyiFYAw4wDoK1hFXhcUB4qDZRiBG3GYyHAiGZpEkDuhyo1EHESqEWAy5d/mvsXmIbf4i0I5CY1hJjQYrBVh1XXVpIFyFRQF2IBPgFIpXckpyA7hXUlOOAYSQWasR3m630PLUSqR4GacrTzlQIuVG6/QYEEIpwGmtZuGOPDUOx4EaKCennKBnQg0DmsEpQUqG5C0Jw0DBdthh1SAtkHA9wsViEhb9238Klw+k7N0/xA7rBGRaMQY7kAllQ7iDARjrBMtAwBSgsQzJimQ2a+jpqVHbScKZGuGuBY0beTQjBrADOy4SDVgIsEPZILBDsgOwDis7AInU7IQ7BjuEMJRNQAKsiKsAe4c/MsRDbHzMy1iMwgCGlHu0Q8yaSdiUwKwWUoqxzmIMAUnYPAwBEi+HAa84F5IFDuTjdtA8knfIZ0aNc7GSc8E54BwBdu7joNPEGnkYci8LDWpAYpgGu1czi13v5HgegXlDgoRAD8ldOwnJwM8fgpunu0MKlsDqOgvGUZAkewTszOb8wB/C+IDO8tuWPYI9WNxhlQyQqUywHcBwpyR0dad0nW1WWAdcDGxKQoDbjQSDdh6agCXADe4dLABDyvQQDMB2iNlxT4EJMTUkMatrSEPoMgE7dLSSAGnRCIHGBNFgNTsE8uP/DT505NGTgaIpVgUWlBJkBVwRWnEWQCL1gqEX1AzSvxx2AwtwH3boYVrAK0COdNwNSJAS8EA5FAvUC5VuZqElsCNY/A4xoHmk/sVoxbwk2YVmgEFiCVIiBEZNoMTDZh8GHi5+GoRYwwDCDAGkGGAbmnbYgxWadu/yln8e+MB44Yu/kOce38FCMIBZIGHHCMnZlHO6cl6mYXGwJpqKgxIkiIkddqdgNfNACEb8g7ZDbj/wQjk0YmSHs8SqBRqYrK6zAFPmbNZYhpAYkIQ0Jc2GWmACGGnMRdiby7/OQ/mJTdkEBEJ1IMuAbEOzaRYK60AgWU6wKNUNV/AkPa9nZO9YN5IGUA8oidqoc2GhcI4WWqXIKXAsJRcBK8CA1roe2c0vLMNFuezzTAJGp7RrCe0Fx8LrGSXjQlYI3m18JBcgyWlYwi5HWpVqwNZpKGcBca0J1rlcnuCdvx9cPrB96u/mhad2bW+WacVcBquDoIZmG6C9qdkd0xWxVSiPcEFrR6BECKH8c3EwKBFC5BApbRwiJ0g3c5ciobAz0ApYYxQTLiJrA26ChbpxBIFQzmINQKBLQ9YAiwiBQMzFvcsfgLk8fGbXAhRCIDrIOW0doT2wkiGhoWmVbCgZCCSbYB8nJUjGiIEBGvKdYiAgAokWKHVTCoVDAwSpDdIMSWrm3RQJJQApUZJGKuVAUAgGQoI1IV5AKEjsbgggsGJAqdWwYGQo7CiAQjCcxSSZamRXde/wTf8quHxA3bv/Knt3G5AJxGgwRK4OgYExWAOyHAgNQo0QKiACKZQDYbDLAcFK0oLRjRa55BSrybcYMSEOriqlnA+wdWA7EMohYqhmwEALJJcDCAbqAGgdKAcoJ5YD2svj/Dc/znGPh29mQDqJBgjkCRrWZDZRVpCrpmENaJIGMZyClBjfZuIxGgWDBAzuDwckkAYgAVKgUAJDoK/v5gESaSQ94lsAazXyGmBggpR8h5aEhGkJBAjjp+eAkhhgJhBiQJokGHREmIA0nAMFiYlgjAt394/+7+DyAXX5nYFBA5iCFEoDmKbkEEIakxiE7nAuNQshBBK00DI0k98SIO10IFINFoAkyElKApKAZEOQliDnIUB3QhhSIhR2BNrRhdBIScAkhQSLaTbDG/7y38JbHsLLey5KxBDBkLAKTRMh0ipWDJ2AYKqJYRVJG0pY/OOS46fEDTIBzAWxWox6YIEjYgT35ESgHGUuSX6O5MR+lIyymSTfSaECJECrJnK9m9zSMxjc0jjFw1ZyWyEG9awFNVqEGCQETGaaJIB7U7jiwVv+4HuR5QP9+l/F5VAgSQsbKBGgWUi5HoILMIQhJWMBhDFZCCtixEDck0ILEw/5mZD3KEDIVsSkbBQKCQg0XLVASdISBoIhSdIEVjRIY1YMkE7THmklSuFsszd833+M8TD2U48pEwMYVu2I60ZiSUhHJAmkITUAdmJIAm8k5qGtTOpB5tJaGjszBEtIknbynQCxjmUaBsSIHLFTboDcTvmWnwnQCiRBCJAbjd+nYMg9AhCyceP7XomdKwnEtEYDQ0iABAMaYGVIEMgOmrK9s3/+vwWXD/xvBAsBGoAQAwhQECJAQIgJuTrtAIKnJAEhGs6JkCBkAC8gLb+MhHGPk28D2N3AQhB2AAIBWQcMIFdXSUqFHQwpATNSCuyAFJAMIKEhIJQduuGHfy/wcOL6QwchIAlRaWAdqEE31RIGEy07YBEjlIhjM2Y1gBqrhlSuDAeEYAqcmuWKmB2PATErZ4DCoVAyiAk3EW4ItzFI7WTCMSiYhVogUgNIBokSskKlYEIySFukQjmiBwQIp4sYUChnhUZgHSCUYjL2sf1P/w7MhQ+0+zG/gNsbMhGpURYUQiGUSInriUIoJEMBU42uJWQ2EErIuSYBWIhwY8BNIJEAwUR2uSgVUggRihkINFKJlEBdEyGUQoUdJASpEQKFcoAUSoZtRL77d8FceDh/9N4Xxa6uaCCsNJZpzY4ETQQMsQ7kjkQMmRDHcnQDdqxxgnTDVu96BmkIJgwCMAXKFAg9RLuBAs3rgUTMoNktHkEapiXoCSNEuIGcngYNsmaJFjkCsIyV3DNo/JQbuUOQvGnQrKXtALPJQMYANCbJOQ24c+8/eDdy4QPXr6SjDFxt2IYhYA+3SdmRLE/Z0A7I4s5wltU0JmmHxoW0BAxgNYBQDBiHufLYTtJupIWjbF4DssJQcFDW4dLgNjmt5ARyTkmAcGfKnIKcxRgyxgJkJxEI9+Dv/1swtzyk773uJZLELiAgUIosIq0yAULSEMK0IxQCrjHtRGlhLDnGjSVoDCyBGH8rhECvHgESxrjRykTuBRzDThBO+Q75HQLeaFwDajTukXajRbJCoBQsBc8BrbS0lcNqYPwODUi7ASRgaQRimUkmFGoJ8PV/BYsPuJeXfy57JBGmYEBKw9kSIBBIgSQBlwFoCIGQ+woM9xVAuByGQoEQA8Ow8GYhQErh4vMWy6q4I1AOsMO0gU2XQ3CbU4KsgsuEi6AxYDvChA01EgJkpO1d/uQfRi48pOPrn3vVcmZCF4YdzkMacwKBFKAhSMG4GsN5Ak8CBi1Erwk0kOTnlwFJA2iQNIDAbAb0wO6R5MAQ8ATpy/pT7xpgCNAjpIH1ABqNWi2FdQrGb0ESxvXAQ8SAdjyAG8i5Rig/kxyABigFaBDChjCuaH8Z4oPy8+5iiNQBCUNMCewMuByEDAGyYxiFk6wKcZA0IDlkck6AGMAADGjHI/lpiNYIT8kUJBD/13/6ZwzDeS8NASLtDZZjWQc7JhBIukPMKlpDAsQkCAgGhOsB1rB753jh3/t2IB7W8qE3/u1Zl0noAjkPkMrKYMJEJmBm0gQmJDuDpd1Avg1AyBTgHsBNvgVIgVCIBWD8TLkHcBsIBiCAQIClfIsBJGACZgNDUs8ERRCIEcGsBST35GfGMlPAFEg564U15LdQQpI0xPVMaUBChORtX8MHpXvzi9kDEuScgKU7IEkTTUJTgpwFGEgDEHDlnMRQ7ggEMCTILQwBYgkJYbBo9QqwMCV7/8t//hef4HM+9cTTr/vIOwqDnKVy4MJgcawkqwI7xqwTgIQp5yFsAlDOAsaw3uWb/h2Q5eEd/8eTX8GUBANQjEAwJWKuA5ETy2DksIJA6wGllikHw0pWNCx8REzKrxrk8ZDjAaVATTp4dDgo0QtcxbBS49SSxokWNClVylk0yNATMwApxYxRwOvI7WpIpXA4K5W4LbhhheNo7IoxlkHKoUihZGJRCd/39g8O+KTP5nKws4qBUqnBqrQcsCpFI52MZQZWsQWnYqaAYa1xm2XAZQxjwc3g1qsYwakRWOawm0RolP7z/+l/fHM3PHuZl73mI+8c3Hn6la//6Fc/dhwgDjDCFIgtM2yoC41UDBFjhBAodIIYqNB1fO9/9ZdgLjzM5b7v+YeHEMiKkCQMIBlDsh6c90jQBYYEDAFjGiEtBEkAk+YBkoI1vuUfFiRAwmb3ON8hGAI2kIAW0kIYIGmihLQatAQkEBJGDVBQ4lvAGN8Keg3bDYFSSJAETEESNGAkDIukARLDjklKksi3v+qDI37GCw0M5wRBQmCSmCAtwRBkBQkBEwzkPCAJA8FQQDKABEjCSBACBFAQzAYIIMBNvL/+zf/wn5+VLi+883u/5c33Ltx7z/MvXDyOkZm7T7/88Y/8+I98xRN3dOYYFGBIrg4NAsMipNAYgCGpgMh28Nwf/18HufBwj2/58X+7d+mgiw4dAcsRwLHrAOsAqyDLACEIO+kqWCKdsk7rz/lFctvRWATvEvSYvR/jBHYIowEjZSWMc8ItXCf9gYYeIpwTCbFTdrfQGyCEcAM8MYqBJ8KhjHPIwbs/d0wglINmJ8ox2w2a3NITGc5C5izCQO5BksMyDHwFH6R3v4g1QVYbCjVyZ8AYEt2UCZJJYCC0wGFJpmV2XKGZEGOVKU0P70mery+vkXKK/PAU5FtuMfy//vz3//P3kEgAts++80ff9r4XbuOyL7zr3c+/8+3vvXfZO08++cqnX/Nxr3/13H36ZS8bgeFcgMgsxLAOuENNMbA2hQcv/KX/4QYsHvJW/9Qv/OcrpmUckG28DA1hTR3bGCzjYop7OYyWI47dw2rn2OZ6ZOcygNaPYuRfW71Lg5RID0O0fhwL6JG7ZlwP6vau9xcv8KTdbcD1TgKTzwb0ecY+zTPWzb+eB7dxpsn1IHJBiZUif23cOvd5/LUl14P4PIHP1kmrFYJ/OTG7NzXtSMQsR+tsurO6e9APf3DYndfDrLccACF6y802JStmWgpdDlcuI7RO6Y5B6E47YKG5w+ruDdAqEiSkn3kKXM/go63TMIW67dg1tI/yT/yH//r/jIircTbu33Pveff7Xrjce+973vaOt//oO95969Ov/bjXPfHY5cmXP/Hyj3/V7Ipy8WCHDNoDQhC6eNwCN8Pbv/JPPguz8fDv6l/5/n/+wnSaEkMCI2RY0QgTsobcIRSyAVlBFsEAKQYkRC7A+FuzxAWswASGtQMJwIQzhRUgDYSE+DYEoQQhIBd20wgQAj2M32bQwhoB6YlAwx2NQnjd+M5kEEAIBhJIkBK4QoKh3F+ouX37B0d8UmAN7NAQAhhY4zarpRCyGmicZUGuDqVWIulKJDYL5qLpcTxaGEjmzpD43Yh/cMTg3T/9V1974f2OF/nywr17PP9D3/dtP/7sC/Pcs7c+9vG/41NvPXZBbEWHBQkkWA5HuPfl//fXLzC3PBI7vu3fvPqvH6xezhwX0d0BZp1gOchowhVItIIDKyfbgyAXHibcFjEC0iwHxJAQI0aESSoZSIlhphcMu5mdrzxmuxQ6l4Fh9wjSsFPsfOExgpsRGpy8IkBPkG7gpbBj4N2AEImMlSaxsMa9Ghp3pqY9IHZMazBWgZ133fvggF++xBHuGIvStDPhjlhi1AAkyOborsrCwBIK6xiFBMiwHsg2aTeah2UxMg24V/syToZ3EwzSm43/eO/73r8PqBBLXm7vPfOd3/Ajv+81zx8ILSOWysUxSmaG2xee+6q/+b2C0vKINNz9ve//U192aMZytrGJswFTQEc1xFVtRVgBchBCKRG4CYcgIZQLOUHi5ymWIBlQDxRAvgWUW4SRGIgQwxaCALcaAeIBAiG0Sn5LBp4mIQZohEmAcMsAgcjFOdohYWZmQiCF6JK64Akh0KAmmOVrXv5BMm9iJ4UwZjWwmCDBELlvChKQGkyLXBeCqQ7SHYlzQwqFpYAHhjU4QThRMIYBoqXWTe4/fdxfsA+i5LqB/anv+JeffOFmoBwIQAjMy97tR9/y/X/rWy6vAqbiESpjeuv/vucrnvycPQxVA7IJNTZLB7EK1EywHDTLSMuALTMORxwzTseRWrDD40GcjzgFjhEiVMq9cuXN8O7PaB+XHLPiAaXJoXIMONTKpTWAY+mhQSKFi5NJp0C5INxRQw6EwgUJcsMgjRjE6egU3ByoAygHqQFYRtoO4Zv5IH3tk+zBchDhEDFQHVCNxDJDNGaN0HIArALLgItD5USiyzJCHQGhEUoc02JQDQkEjhc7HECixZ8qej/16275YO5kAa77H73yH7t5QQ5jcYJlwDr2zvv+yld+7zue4Kwbj9gpLt/6ozdf+6o3feLdUcDbZ+8+cdFowIChRHcnpx2Qq1OQSY5usJMcQS4kT2IeDQNYgBLAAhsBQjCAlEYsGgu8x5Et8Eb8rVKClEAilian4FcLRIAEknF484T7U8AA0yIeJ4wEdo1G7XphaZhASiRGUwJCc9Ep6IYf/WD53PewMwsdrMYAMS4xhjFkqxkC1rAaJDABDDA1BEM7NAHIKg2V89jpDcAgjRWAySligCRJ0rzSL3znN35QPbjrc//KT/vVx72jbljIWTGB5Ll/i+sWj2CJ3vfzv/M+j+Puzd2b29t3zG/7eQQWOSQwQXOUcLBMTplTgBb4SrRChZgh4gmjzJUg3yNFSHqkaPyDryD/FKAAUg8xQYseETOAkTV+ykkzpEeClowCJWAksAAkaQaw+LmSRYgHjHvlEpoQQwEToCRoibLkSDt37n2QvH6ZzQly2KEhQBM0BgaIoYQBc0oYihiTRgRZwylNAxQGtIS1ECtmiAImLSaAhoAUs4AnfdzN933wdSXQt/2+3/yzbhbqcIGBhpyLvHzeZaegRxAIsP293/vcvefvvXALvP4XAZlIYSaA20xAAiRQk1ICBGiIfFtCwj0JJMESQwCBU8sEEoFsQCiEpZEABidC8p2mQMgpBoEgAYQBpteglCyVkGCAWIIlyU3AQxAyucHhGiVAMIScE6khCQE6SkrkWT5IXwk3RIaEnKcEA5AsxcIBQoiJ+1oM2A7UEdgOCatAAoGQgAApB0KAEGKEWeM7RkLCbcyr3vrB94CrP/Yv/d43LkooEAgx9fjn/N34ENE4f/4LhDywFGhy3YYyMdsBJARCNCSElATSk98CGYbAzRTi+wYgJWlJObmloQlIJMkNsEAgSaQUxBo3kRuBQGKWEI1WckooASQ3vm87LMa3kfytkEZyjon7DgglBCgxP/DmD5bXsTISwmoakISnprTkHMj1HQMUDNjBZRCXBjCTBAI532h8t8BzZBpYCAlgQqMQWAgxn/D9vXRI/p8/8Ac+9TbkamJKCr/0q95qHxrE1Y9ZcBHWKdkxqJlwj7ivZFy1GGGYxThBIzTPJBQCQRIvxGECGZoJLTIk3pGAhxjCSjO+JRa57kmEQL2OkVIIGXLaI2lEAi2ATIBzQeJZL6BBxndoGRIsoEYSEmoGEogJk8RtvvXyQTJPEsg6NKym24hBCgFYDCVAiFIMUIwts2PsuCqwAhIxJ4yEAbHImFfTLNlxjpNEYvwMEIP8qd/9jpcQ2d//t/7gZ3fLnFbBtNz5LL4pPpScVy2GpREC5BTX3SnEwjQjCbMRSgkLwNIkdhh60miAQYMGjSxpfAsYxi2PecNIQw/B0EJAj/EtpUQjDJAQTE6TBPBGEpKxlJCQlBOTm7TSoIEENE75NgFMwiRNUjCGsJH3zAfJ8TgMCSKBAhiAJQnSGCDhqUTkvjEpYGCyiiRhIZIAQiDEAFokJIaNEqFzAUhSX/fiTT/61pcS2Tf8gT/4puOWZGdYEQR4+ud/6a19CLHvftpGVgRoZIdGQmQnh0KmUAo042e4bmAZGtI4xWL8lNCwGtwABII0RDhJwPhuNzCShBAjgYzBPbCA16lIiVwqpwjQjCUECAZyxuMUSeiRgAAJtAByJL+VZWhImISGAMUSqBt+kA/Sx+9AmnKWZMcs4YgECTQTqwNsFQg8iREyhTVkAplclevH5Du/cJAgBvK3cowaSGjYjcd64SVF+G2/65/9OTcLDCTnYOBnffePxYeSb3/lLHCw1DEVgwuNRTOb69TElKFlPQpWgBjmwmNR0zA9dyxJjVDa5YJceDwazQRoHO/Otk7aLo8/QWhwvg6ap+lJSMS8HY/OJhFqOa6dC2pLblIpEVvF5KwZhLTjkcd2IYarZI0FDCUgxc02y+TtB82dA2A9WmlcYmalccOdWUtZ3SFMt0lYULA9DHaAQIMdapbDhZhyR9bjQfS8M15BIzlelLNiBucKct1ulsO+tM7f9S//nN9+l1u3GS4ag+y87s4P8yHlW153sNNEQ4RgJJlc3eF6kqBlYXqS5oEAaYGwE0lOiTSJRTAyWAHyW4Ad6x4nBqdJaBApEAL5BQlGSgnhLUbJjhEmgbEiCVACkBKBNEiDkLQEMJG/jUGKcwJhansEAiXve+sHy3YMTSFmXE/OTUnCVDKsIJCwA7ggJZKkuQOFnHcwAgzk+5S/lUgLJME4tRshJGBJCBzHCy+15B3/9nt/3c+6s7c3CTuAKa989fd8aPE9L3u9MCFMgbYMSTCVCFkKgZBiAXqAhrFuICeMBBRsESiJWMKgASfNWlITBVg3JAPhRAvQACXJdbNxsxEgBONCDWhWjNJSzlcnagAGIAnjBA1knfSAeHATDGzYQUsREiFkIBiAt/zgB83egLATTJi2B02JCMZw1rDhrBEo0LhAQ4ZG6mJomcMKQ4ArUW4iQI9Y2A8DkASJxBAo5XjsfS810vf+r1/62f/ya+/cQ6SBxF7xxq/JPoT4rq//lbAqlFx30RBkx9USI0n2kWkSIzgHAQiwIg0EgTQEFJEaaHgigQQaCJKMSCxASoEAPISVBBh4mD9OSAmhVwCenvze3YSi7QIW1ggQEiABOUOAm6cgDXsQGCEdBaBAEzTxrvlguXBkSsZVkQx3WKYdgB0DA4wpZRbZw00hMEiQRa6gEUwJWoAWSK0USMiVAZYCYawbQa4AHn/uJUfYu/6bL/vHf9njXMRlIGs+6i3Fh47uf/MLP/nehEIggXFOwBJJORtIgM1ayAmZML5tJ/EOaiToAQKcMwABIWxAoEkCJJzWgDSIUZgGYJyzlgSmkVhyjxvgIY0Yhtc8vHnI8T5ar4BZP0AtMSATUoi/Na4byTklUIMOvurmg+Xe5fEAjetyfwMBjCZIsEQI2IEdMGgIYLaTq+AawwpoArSA/CLABL9Kg2z89PQQQEo0jrvPvvQgbm6/6j958rf99CNudTnaY/h2PsT8zj/5ux67p4EEJiGGCTvssBoCCRkaJ0I9ke4R3xINIA0zKUYhsIsRgIEBSMIJ2Jcnes0SQgJGmXLGA0iDRnwL5AokAA1vlplEI2ARMCPQOLVACySwQSJESiAhCQkQIEDoIsIe7/7r2AfH7XteOQ2lEAKsIIESEwKJIZIxUINJDWRI0JDZZGmWUyGWAnZDzhjQAqJ5wCABDh2ZEAgE6HH7MIBbef6P/tE3/JNvOg4gFP7iD2AfQjT7Pz3/2+7cGxcBkwR3YCBBwHAHQJYJCXZDwBZgBindI0wQWhKSJWCnxqkQJMuEU350L0IMSTAEkFLglADTODQBFFBoJZCA3M4bye+aMWIZ5gligMBpdmMEYqUEkICcFbkq9w2ff8cHzb7naa5KnEMwAAPJAGy4b8KqsAwZCVITkxCJEEIAhhnKOUY2Sonkb1ciSUqAJBiemMzj73s4EPLW/+PPfeSv/6nz+BMD3f6lv8KHmM1z/8pH/Y4nntc4ImcBpFnWkaBhJ3OZmk0Yh+wyzAwtQcIyFM6EGkkoWO4+TeRQ4JAkpdDM6PXRx30cacEoydATINZNIMgwXIfAKeN2STfRM+RE4Iz5QeAcZ7bTWhJIHksvJUACyABxgRQSWRD8vlexfJC+85UXREvkMtZwYdIgJJMkPDUsTABCCdKOmQTUQQYGCRKkBQKnGGAQJljjJIHQIPlODG+BN5/wvftwgLAf+Rt/9gdf9Ykf9fThO79twP3QIp/513783/+428vs5dCQBQQvh0swhQ0Zsloj/Ljw3ME5gtx5OS+0mx8H1EqTpEw5dxALEinmGRJej1v3OA2Mc8Q5gnNEKJUSMG58RoYGtBqfGTQg7gEcO+TeYbmDFPww40QLBU6MegRpQEMuQxDjxRAs5uINf5oX396ft7/izq2zxESzCokVaMVBsgwUQ7IcrTWuXg43SSkYaoCCYQHNZTJC5BDwWISLQikYFCM7F8E4YxzAeHOPh2fMvutH3/bt3/fMNoDLh5re/vE//s98/lPQ8x7ck8O5hQ63dLrg2K4cFs36pNtftdGh6xLtLze4c3I3xDv+2AdcAc3L4eeccA0rJhcMzhwXrvts80rXkY873e5uyoW++0u1j4N9MO1g6xPTCx50Pah75oeJH2HcjdFHHUe+LtROWAfOi2EXVZYcNgbdVHbR4WJ33v6N2Ivy1BPvvMf7++2v+qgNHDaObBt1EaZlmD3pJQ7dxZlW1As2to3TxuAFHC7BIReYacuDJRw61c855EC5Y6xjyMXkEl7XzLuJdxOh5+chAgvGFuf4UDPkK/7tJ375F77iFXeB9o7dHuss7kBoYYDFQCDEToIbP40F58q0MHYtAAmDZAdp7IB2SgaYYXwb1vtoYBKWBlLzdiBAIIRh/DRYIXZi1sIa4WnsbkI5jkGt2PHTEGoht5QzQAvJVSIBZtEgkPUv3RAvpj/77t+4fb++8fE3yuWGBQyEkgZZNJdMs1lyIoDZhtUm9IJJMptmZtIUJoGkHIa0S0IzgZDItMQwMINRaBDsu3nYxtn40DR95m/+me9+7c/4Ga/+mFfd2K0z2TISO2DrWCTSTegU4LYoMa4nXKqfVCqHlzv5KEAol/OIkZfihwEEwsEsb4sPLjgHnYP4+ODiQdy+zj8XpFzM4BT5TDJSr2GlUqFEyoWLs7FPDLnUAKHuGaTBcoSlRBzFMlKN+/jtX2XqxXj657757/J+v+e9H4FuKEHqlsfCOtkyApfRZR2IJiA0WJ0lDUJsdXJXjXUgEqFmHNvhKXE8qF60cxU9+MCMxIgGHOPeWx861+NDVVO9+blPvfEDfcm1l+aW+/74q5dAIWkHki4MWkYcyB2AMOEyJI0rIUkCIQQdJTuwQyvA0thhLEgIIVLWRwFuSVgjudWg9wEzIE3CsFwQ74IWmIGAlwhoooFSC3TQFkLSBIjQKTusRhxNcChY6RIixGDooikAB284joWn4VmHPnXb5v2arnvq+hR7YDTVQNKELoxWTYQuJF1ZZI+VutkkJJrZ1XSZlbAmJF0MiVmIyZCYFS9HO+zMmnuUJMsYMdtR1rjMxWNZ3PMQFUwJ9ua973vfbcIzX5wYwB6xA0FJEExYacgAC44yJELLGDKEAJdZhpplTmNljcO0TDlMkzAJgVKqyRmDQvNgeDAoFA9XOyYBkuVXGpiIFZqYKBAcUOUyODo0IxM4aGOBQCJQCiaYTrUQA8ZC0kk3s/4F0nLqceXR09FjW/eL9z9mv0m1kNBAIkKhUHSQShMLw2YNXWadbdqDkGR1hyAFV1xMwMWUVVgkQ4MYFkQWGIuOKLRMKRuLPnKuBchJIxtkBt1VQJOQtoiaAIGydQMsAywKrQMsA5UDpVAwsI203kYxgBiVDK4h1OP8+IeoDTqXHEqhcDmoJpQCNKBjQi48EaoH1YQzSZpElEo3tfm56eI96wPSbVJtRaCrol0FtClBktCmIAZCWxBNWuOMXz+MnM54bPeB+6g+tXjdZYcKaAqjCSgFNCE0FNApgB6RbYTNAdsbYBlhUQqFJQ5cFCiFUFgUWAbcBmGVWDWWEVwHCSZCoEhP52CnvLYLLVNN6IQmAU1iBHBBWBFIgNIkVwmkGM4JIQZNSQglaIiUIOUpJ+Yp5In1+AcDIZAwAZIyGEggWEYaQggnggToBKKEces//9CFj33Go3ddes1aBZiMwSKZCqDDjoagFB0iqwGJAUOwPvWfOY0GYXfv917jKcktR54QMNAlAYPBGBBCgC5ZTWkCpFHiCsIyQDkFDRAdEaalwIqsmARoBOYqkDGtYqwgIRAS2Z6dy8m0vSuaMtKDVYEIpAsUV7FEYEfCdJs9plUhaCIYQmAAhBAJmhwuMBXIAV+nJvdOqRzRxOhFpEQoHSKA0jIB5IwN0jxzGhwaKYPG8DE++sH33bjc/air9l/w2MftWwsYtC2qusuUAiFCgtIDiVaQdCCG+R3/AOL9WvXKV3Dpc3+1ub+bv/qV806ZLoAYKbosEIJ0WUaQshAKh/YwiJwChCCtMSiTRMCwhClILK9Yww5CoAUoO3YyCXLkUxecy8F0++V0CsBCOomkE5GQggkDw5gEpKEmpMTVmsDQTSE6LOEUdqCFnICAlQggWCxWGCRACJZ8ARKiUAItIUEvkFMWYEU7JIBBS+sPDhKWy8Wn33zD4aNb2Xvw4ic+/6IasxkEUCChQwAThKQrdiIYiELGPf8Q0tx/mb/8z7HY+03vfs/9GdMbnnxVJ5HVsBroYMAQsTB0Iuc0ECQxgExIEqbknAwLQiAMRRpC0EQISMNVCddAEBBWYwrenHO6+LnL5g3EBMuoAyIBNEIhQErcdwcJ0owmACnGwABMPRjEt6dAZgAJErQQCAi8CWSAiRESJmhAChhG7BDhGiTSAISEDmAC5TuCBCRs3/SJW+6+4+Y7nO158suvWd/Ys4sKIGAIAbC0BAjZIcA059P/GNKcxitf/Zq9sOyn/7lfecfi1Job3/U1rEYTgCARQ9AQOuwYhFCABAiByYwEUEISQJhNkEBIgQINGiQBSQMyIXNKctUQSD7NOf5vX/L0JlJgJICAAWI0ARqCGCIMCcxiQiBdBNjBBjBDktyxEyAEuUaCARiBcivNa2GCWBqkNRD8QvJMgwZpdrNiHJOiiUFK0o7pFgABJAgcueHu7cMf/uAd04VXPu5xhy644hCB2DZVYhkZbdIRRlvd87H1qz8IaU5jDj3nUpq17XrNE3/9xumUzPQrr76gOzGRpujCRKuhFIgMLYXGIJPFCReBHTASWEbKGGpngGWmAIF1KBBjh3RJA4FVjAlitqlj0zW97xyvPvP+L59txxAkQNQkNhSSmNEYJOFqszARAgRTTQiBzcJBKwIhHqAd8C4YySlwWxHsrI1LEqhXAjQ4rRgHuI4cBBrcAE4tYBSJYKpBSDD3rJxUTtF7Tyw/9/GP3HCsDl528cFrn3Dp7iIK2ik7ULpSS2fM/dB3CNWcTj/6i9Nfv7Dn47O/dcFFMzwV4PdPvKpLC4EAGmKMMWDSGAgo1mWGMMwaWGMI62AFV9eQZo8WkQBmCSXZIVeBwPAyEhhYYqTGKpBzx9a5nfCDL31ST0XswgQDkCkEaFDLOBmyAwTIyWyZpARLYSdZSSRoSRgoJzfCMIFD8ISk3Thc0YgbadzQPnovMEskQKAEpHfzMMQAdKyV0oybjxNPdhp7uXXXddfdcd89zPdccuUznrhrjDErKNpOmIqqWVj+/k9+DMjE6V186sdv/5fX8P7/WBBO3Tr++q9d2x5hJdEIELRATHXolCCWElPICmJAkklIBqAFGIY1hBmWsjKFYYC2A5kJkTCbYqcdL/P7u8/tMNf/x39zyRLsJGkDRUuCJoELIixiCXpBhBXdTN1QK0YuCBJOnLnrZnqiV1OupRdiAHLM6IZyCbvQk/RGoR4sCucdMwIpwXFM6LZoCNWASQN5wxrygMd7P37TXbfdduth9u6/9nlX7tu9vrF3FCRAH7nnLb+4BRE53fFnP/ivtv4rgPcD+dnxNbMlWAiGRA1EA7ETohBqQ4ZNpFAvCNMqwDJQ0gQgJVogkQKLTSQGKQS6gbKgtihuOMtZPsK5fvz113/f/l5SEWLEEEKzs7QDBiA16QISJIYhAboABqQlQg1IMgC9bF7AIBbxbc2PHoIErGBeisWOPwfwLkBKsHhBsdYhu0isBogAafIxgg9UJALL2289cd89119393Jtz8WPuvbAups4nfjEdTevQTLxAApvuOrA7UTut3X8P/7Vg8siUQhiiCZRICDB0AEJxAWcCgNwnVJbZGguMrAIBFhMBiDZrAEMCzALYlxGCBiCOLvO7h1uPufr+JO/+T2XDZmUEECSiGJgiHWyVZCVDGPagVxNINBFgwzZV5A0SJLT1vEOSfC0MBYlzWtJN8FDjmFpcMOTpEQ4DW9AYJKQnhizkwHcuPU6Ig+8AEEiHj1x4t67b/zojUe2s0ZqFoAoD/C9t+5ZQ06jvPe6PzNfJp2iCYZVY4BI7IRoSNuJhkxvR6AGIVxduTpLs0OAeZqwmCAmg6ZmG9hJkgTdFQzElpGNm2//7DkfxJ/9H3/iqy6sgW0aawB3v+tZV24nWDCRORcJzMQgrUSzYCgxoMliCpYQN26AkXoJEqUQI0MiUCINbhgYcCi7z0A+Djn0NLAUymhJrsFo0UXEGT9H9QMnOwrIakCnllM1D9jxm+brnFYzfduXPVeEYAwR42jTDI0E0ESJCUhjHUosLI9NkNKLs+4AhMY6FDYEZCCu7TEbIAkdS3kU0RGhUZPfXOd+Ej74Xz/+jK940uVVQALH7373z331n6FEJJhlFgkTMgOXoSG3AQjDmMXQII0X41bjese61ThNTkMIdoj20Vh4SSwsxTKEBAtvHPOsd+zQQASKq0CnOm0pmd/6epQHv+wYTwV5gNO/vX6agNv+xz/auyhKIkSC1RCQYKIlsYckTEKadlymAGvIkBoyoIMIXYupYTXmMhBnIQGSmjAkSZcJS+JO38b5QMnyut/9P1svePqu+YbbW8dvf+8ndnHoOXOCi0qcAzEaglWrcYVAagBWwcJZQqDYzgBL2qXINfTOr1DgFPmglCLdErqJnSOuPSqUSzF+1nZww8gkAgGaEX4G5MyVB/c776zTZPUvfewfri1LrYCSCJZBQ8QYTr4DVuqCPOAykDuzGUdQoK0IKVRjFgIxxuIUq8iiEQIsKgHH+uavJJ77gcSjn/6l67Z6UWPMCuDGXNUkADvkTuiCOyHpKrnIeZ0otZ0QWG1B2mlyA7theAKEQCDkDdilhRJAy5MMQ44BpZlgloRh724A3RAh6XQR6XHjL/KwKSeO5TTRY/reZ39BTTEIIW1JuUIkIARqk6sJBEw7hCcpJqCpIcCAaUVZk2QHCCRLkFWkBAIJEAhI6ODL73K+UCJTT0sBYrzvrV9aE4WsMQtmlBrJVGgQTDs2iysGoItoYFg2AhJAzxDwGKXt7sU4UQ/QIvFMLdDyHHcDOVPOzFbI3wqV9ujCLnTe3w3xYeKB7Tr8L//aE1sKTVfEaoCwAkHAEGKZzMYkCzaRHbtOww7YTjLt1MFazppYDbo74pJIqwCJJchODAtgMe/74+B5ApBIQgPiWP74qx+1ueYSww6rMctQJi45ATErGLkei7sjLCMcsWM1o/Z1GqRYjDjFS4SD0ToW1MtS8GAUDbiFEAawgBtEqPHbgFjIBt8XauJh1NNG+PB3f98Vy0JDlEAECI2FwayQCQmQXJWoYRawBYegCTJjFmna4WRCkpAYCZCWYIkrSTgXbP7qXXL+AAQ5efOxN/3F2XZG3MtNzqXhchOZEcPsNqCXgdlFZxf3hqKZWmndH24Xso6B11oEWMjrQu24vcoGp+YB7wqlRCu2K5TA5BiZfAdyuS5okui0wU98glpyNqjlO/73fzi4MNFASYekJYEOlE312ApCgothcWSl2DLMrkhhQwAGJjUwWzKtNLbYUGIxGRi22sBy5PG+P4pyvtLq//KCly3h1kEuHEAx4TI7LIpdOJJFZDvYYRkigCEhiBfdBD7zRg0gBGInN06JV8ROuj+dmcLlyhQ4bd4t4RQ4JUOA00wCaLUb/NJvkomzQ61+/Xv+9doWM4KdEJQCukxsK6RTIM6rxjJC60A7wLGr5Q4Ni2Z7ECwHeFGBkFwYaEcgELYByjEWGy7r8ZfDPm9B585v+5eXdMOOCSJAwo4QZ2cXTQBlJItJ1uH7WKFQA0ohaED4lQoYC5LSLHzB2SAQrhnk+HmjGHAowIEiUZrQ9Hz0D72Fs8mO/zV/bX0JBISAkkiPdhgMOxqrBoYuNJESyDKlUEpmCE0SZ0mMBNlJs5QwkMDh6gRhNy/8EbxwXvNt/+u7L4NN9yBmx2XqYAcsZGeKneVghzpighgSEqwViIfx6nGvRgjR4pWCYWnSuHliLYMHnK+TVpAwwYCbQXKDEikgybTGzd+xTeizB8yJf3Hon6wtR6wIWhGEELs6MdmcBARI09Udzg05YQImYDuGNTGEewSEhE1Ne7DKmlNiJjWscOweN/wFifOZxl/+z//+s7mYADKhAUwpQMQEICmyI80CzC4DlJSA1U6hB0aCJAhYIyWTb087RUK+rdFodjBIJEAM6BF2glh2VS1/7QcgytmkOfHtJ75t73YNEwEsCdFIQBMDUEAhAMOEONoRSWrSEgzQVkAwzgLUQGIIUzYSQIwxIXqZZ/5n/PAGVH/wH/3KX/0qwRKBGlnXAdYOlwZhGyOHckc2RSLGt8Ap5jnydAc5OBxHbNUwqAHxgmuDYtIpdkM7GKU5uCHFABpBZ3DrO37tPkhztlnL//je/3yJRENFTDCSSLoKAS2EZAcjhqIR3QaoQ9zGCFRiWFk1SyOUXMckRFeT0GDHoIbhv+LDnprc+Ad+7PP/gZ/wuAisE+xYsspOkiQkSbLKCrJMenis9EZy88QMSbiRnCIW2ikQSEgCHKOEXTutJRy7eRkLBJLvU5Dkzm++FUJztinx5370/7qSadCFiUgMWkGgSnbcHeOqZCmwKLBqmV5EXEmShsIkXEF2LGsAAmQnrpqBXsb8pr+CfZgDpG7/1l/4tk/55z8JCGEIUpoYYMcMk8ijMKZVpG6rlV4iYc3SBATLZkhCoJdoCXQv9AwlcmCuDIUED24GDQ7Fsged+z4JUc4608Q3/ad//fSxrGEnrKZLohSC1ACCIQQGyjItU4KUjRFODWkI0pCGO4RgGCABDKunkIzZ27vv+XexD38g0g/9rS/4hJRmG3BlyMVJkwinJF1Dw3VauSk2uuUokaJnZO4kDW6eXs8LWyWLhNViBPdIbv5ApEd4rJJ3cjyLUO2l174zzVmoYPXb/9kr/t6FtEQLoQTSKRodYjlkB2nFaWdzwpA1AYJZrAHWg4pxIY92VsBlZBErJ2EHCbQw3Lv3fhe4fBhUgJcFkjssA26arKaLLrMKxAQxJeuQpzV+FgNqQC2h3mEYlpjHIBrgCVDjpJHcuFnLIL0d4x6ZcAoc4/eeKz4hZ6sd7vyvb/sbX1bdJELASBACIeflWBKB1SRdhh3LVc5S7piyDsWwsmMQCKRBZgI7EKCrhBz8++CFD5t+1HOQrh1s0sR5ynBW20FXSomGjBDAohnfC2sBYYtMgzS7RyAZSIAnhFgKHLvBCXqAhAH3gBuHxEu6HBfd2WctmFm/7d9e8Q+vGVsjnchqOmABLEqkgRkGaRgQwwpgJBIJydUmLMGMc7oIkq5IiE2Ye/Cl34rLh08/8llyHUuQIMFVQJAA0lVXgEwDMPlHDW/49X0vpEx+G+AJWAjQAjkJBCzTBFIyjQSkRghE6Np3hLNYe9Sx//mrf/eL13s5iBFKokkzQZiWwKwAUjDUZABCJImrJZBGkmCZQkZiUua0aIbssHf4sj/Fh1df+xwB7rAMzeasway0R8gyWRwBO5z3IPg8gFMgQLvdKBc7du5uwqFF7OY10mOn10h+17BTqJ6R9weMZXFDr1EwXXs2p7MYaGfL6779KX/+itpOkEiCXV1p51igWWVh6DKzyGpyGXNujSFJCJFlVgPQzZ3ZBnBNZqFxG4CamOXOdpc/9cdgLh9OefUtCCvoXg60BFkxSJGAYRHdJF0EuNkuFE5zB2in4EkD4kUyrlQvaZwgR+4kYZcIsaSEBWjcxA53NQiyd3v7rEam8q5/984v/oYrXA6wmkA16LQDGMQUaGnM7oitdBRJnnBTWV0DAQNkAQRIw7BVZBFk7/JH/iZy4cMqQIrbuBaiF0S3IbiMNCXIIrYDEHrjGFSDHS6KBTWhc6fXO1az3c3wWFkM+csBhxBgeuP0WGEg1KNdvAMDsG86fjYjaMIHf+imv/ei0QZIT2MIjeAiTcuAMWVps5cRXEQ3BRbNEmZhiItDx64ipbaNuYhuWsax9564/IffgcWHVe/C7CwIOxKEZkkTBgY5G2iJuUoSSbLDAEYoJ4AnWN6AzBh4wRCSnxKLlUHQkhAJIAGMbzOWQNhbh89mdhTiG//jn/vKajJVLDsUmYGRwwszUgKWiUQCCZBIDZGmhBCZAAmkUAKWYuvQHjfP/cti8WFXTdfZsQTbw9Wd2SGn1R3WCdJVdlgBQw5vHt6jBisND9PAG6cBnwkcO2me68zX6c1DUvL0486dZmCNc+euRXUCF67ffNYDOFvedsfTiISuaNKDlUZO4rJDTVoTw0oTuCNBE9TInkqagCsuQ9RBTRiA2w2r8i1/EGbjw6x3IBNCMkwowXCHAISYXAkhzLy1YmWAnLTdKZR6nhICJD8zzTzZ5fIAhICVCeBhQvugSUs4eJFlzIG1O86GaK55MgZDGhJVBJZZg6HSCWIW2UFWwAUhDAlsFqbAHQloFgQyJBBCd4/hLf/Vl4MXPuw6JKxHO8tA7BjGLLAHRLLDTnIl6yD8DOB4fCFBktx2kBKNIKQdAgSiHyX+NhYQ87hB0ohzQfJdA8+MOty399azpJdsIhEK0xahmLXgDgjS1mQgUGOwTrgwYYalBA3AMtk6xDmtITL34PI4z/+p/xGGCx9+3dkBambl9pCssdgDbNWd5ShoAmKAZQSn4vUIGlEuiFd5jyBMuxd2yq5e7HNvd94z7AZwCz2BXQv6/JMRLYBlJEn3tL7vvrOhuP46OmW0R4yWGA00N3z3j/b4K179yuMAZGAZ4uIE7Y3hMuEyBDvTuoruDtgOLug6uzMLOXjz3F/9H+/AXJI+7PIYbjfTsgcYAhETkEZMHe0Y4RQkYXoYI0K5ZKNEzlgeepLQSuGEnQfMu2ckYJgQmMeAAwaRuZDvhoeFEM9+QvPyDUoLBEuiabBzww/9z1/1wrF3XvnRH/3kzZ2nX/+Jr747A4wETOzFIwtB9jBbB20nmFXCxOX65RDk9u99+19/HuQCxIddH0fOUwqtE7MjsB0kq0EOuA3YjklNKGgeg9WAnQLNE9LDWHYO8IRxvQKkcc/Y8cISMYTdBDgNUPJ6pV0kYUxnQ87/HKaaBDpE4aCLHV7+1P8E7Atv/Z5v/aFnL/eev/jE3cfuPPbkq1/5kz+JGa8CCNRsGjQmDTE7xgABq8vBALff9Oe++50ALkB8+FUykQYIUJpOZ2NAdgZIY4CU5P9uyPdpkqRAubKGnPztqeBNtJZwqNEIIDMzaCLU4EbKd5jqbEh4wn6mSnVhMKEp6HLc4Xv+k7eBxDl47m3f++b3PHvv+fe989m3X+Duq17+8o/9+I9+xZ057t65O8oMgANeuim4eGLhRmZgoHe/58f/3FcLGMSHay8HsMMOCVICJHuwSpYigUxAskN6Ggtr3DgXGtzAbsRqhzTQGoybZzet1OAeUgwEklIgDUwap2AAkWDOhtJ8FV1pqiudSCEsT/L9f+Svgiz3l2CI9vnv+wH2ubc/8+4f+/F3PDtz8/SrP+KjXv+0jz915876+NNP3Z1DYFAYGM6X23v33vmjb/+Wv/OWpwYwPsy7B2cJ3LkPNIQAKZaSKTsTpCRIqYRBCgwBTBoEmHDKSJCbWYwgPZNdgscDrBcLYwIpEIScAQjx7EdyLdtrkAgkTTpjj+NH//e/BMyFBw1gNUAC6Plnn33h+dvn3/qjP/Qjb39Pty9wdPPYU08/+ZGvuJnjzg1371xu596FvXfvmbe+57nb9777+ceHs0Uf1rkcrrJHOyyTswgGQjkEq2QCNdCQZGnKzxDgtEZy40bsXECQ5DhTYBFyPIJGt2MAASONJNIASYMEaJLqsyHvvnC2TWGggEysMc/+X/8jgBdexDjH+ym7t8vtvXvPce9dP/Ij7/zhd1+63FsuceyoI+9vfLh3xyCN8xQwiytxsIrsWEecgNlxZ3IBf7cYkAKkwc16ZMm59JAUSM5XAqWH8M4lx2j0wEKze5zclpZKOmZMZz/Aj73iMUzRKGFGDT/9p//m4wjFA3fyPu93XJdAiC1YLrec47p0vw//DpByzoGaQVJ2aGRFWdNIAAPClCwQzgc0AxOTLMkFkACPJlliaTSSioXBQiAINABLg5GAGWLRPHRH4kPFh37s71wZCARgedun3/h2weXFjQ9wAHFf4/2ODysndYA0pA1dyXJqJHasCWjYmZz4bY1A4FhyIt7MgBiELY4H9AWphyTJzQCJeMEBGLIOGyVyq42gKx0eOoPEkwQRJPhQEH/qp/7IRRdevHZs7eDdn7nrjs/deDwA8TCMD3sbnQhkyJwyFNIMpGyasDT8EZrxgtBuNCIEUixmZNoNuHlIrJbFgBoBnhzLJDlNzLBYWBAiPpQgq0FAanbRE69d/ObtVD8EGH7/x+7edjSz5azY0fh/QXeMBGqwiCMghOJwVzh2mQxMCwGCHd+LQCQFTi3Ew1iZwA5BEOSQPBFOGOVX5zv5LOV2owAkAQIBYfBQGhGE2r/ncU9/yuXj8Pb88n//ho5nHiZMR+48wfadnDz+39CERCKG+047IAG4IpZC7WFCA4HsEjMxrwnckC/hmujpTmhQAzw0S6HEPEECkAQ4FCmNkAQGNEmn+iFDVq+5Zu3ipzzjwruX7PiMv/v9b5SHRCkaIJ7k/y21ofUgYgx2kEjDlGBnXDqCEiMNa3qc41sykIzlRx5FgqVIrXUKkGI1jEODBplgpkTjW1ohSRIQJh4y59c+5cK9Fz1533K7AZwaOlf9s393Y3wIEJod5Q9VX7jLMulyrG7C0aK6Dc3uAXjpMFeNUvBYrFhyCDsWdPPmiechWIN2aTuzlaZ3LzyleY089PNIYoe0Q7ObucN6mWoeEjNq40nPv3bvnl2TgHZPhlTBWPazXv5ficQz7A9t3/UKLyiLU9BArEewDOEqkQnsAbkDhQIfHtJnJtcsYB4x6xzBPZJjUD08P3sd4M5uBikRg7jhAa+CQSYUDKgLYuKDLp5C9u1ef/wLHnfhxuGJ1TYOuyqdKUOSrfmf+/Dvhz+0/7FX3RlWkB2azGUM9oZwlQBdQEo4VkiL+2NwjIzZiXgAu2SFYci5w0aZcpqvdu7a8Qgy2IcBxMIWlAaJxC1agjzoZbWuuHzPhU946hWze5rV7gIKOkHioEOP6kuf+rtB/5DuLU+9fLZhBywmAWmKCWPKOGpYb2oWJkMah0kaXH8ATzm7Pxz77JW0w3qc5YAwDAlPaX2201hAO3a9boGnsZJ7nNZMsZgeJAHcqQ4951H7Ni66an9vN4BMncpomGk1pUEiWKN54ftPFMY/lHv3ncfTZYoUIjVSgiYzAJeB3ME1MWJQTA4Qzhi3tNMbAayA1Q4pFOGEoMl581owDlrQDDIhBAhJT5uS0A8Soea1ftmzn3xo94FJVtU2yCxohwgW6QgxJl34FeMXG+QP5d9+87SxoLAMUKY1lotCIESzQw1QCoRhMUiOccszNEJjl0JgeAy83GENOJaUK9LwcHm5k0DgWPy0GIjF8sGxa//sgq98xsb61jFWe0JikQrpTnUpMWgIuBKNce0v/tjhyB/OryJgTcIixg5GJi42LNiUNKwwXIIkZJiBSC1aSB7GSrtxAw8MD9ECdyBS0q4XcoLFAk7TQhJiB7Gm9AO1du3Fu3df8YxHHdhsVnuZULOuWG1shkEKo4QokVIgdMWXXvmzxj+cuwuXg7FEYUJYMXZECg0wDDRQIAwDeSWjUgzgAWLEygRJ0kNcaXiKeWIcE85whdIJvAPxcsChkDGReNpq/1VPvGb/VRftWiybnRvGUIqohREo7FDSKSwNELPSgV77cz95RM4tJWDsPnDhHtdy92ePtEA8//Djj79crib3DeWcgEkIyHUTBESAIUBo8lOIRphiSQqCLYg1vtNIgBRMSMAMbd0U9CQNkEgEZMcA7jTG7MJnPu2yA3uzyaogSJKwGjAEIgQMYTUQSyAQI6vhuY/52XhOMRe4e8UXvPACBUkWJ973c3cupfQ8w/uOx6bsoAR2QmZBJFK3GwJ2kBJZMEly4Q0ylURAEki5XB4ItENLEawRJIRIgADpgVqInMIKkbBFYrFcibK69+Dei5/6lEv35l5ZbcNqIEg6JDSJZSdEMJRSxqak2kCgi1JYrv/Zn7kvnjvIhdf+ol+xb5vVwAVXH9rzjGfc/HNvvruJ5xde2MdzdQ+DONghJpchXIbrO8QE67AClo1yN4IbxNdp42ZYxshuhrWwxmnuGr342TyWlIYlEganBmCQaYeshGZ2yeUH9j/mmVdxbJsdu5yqErvSiaCVDl3VREurKbokEaQw9tBg0gnEHuGFV/8c54yyvOLX/39ugUkK0IS1JzzjKy9+/Y/fafB8wr3nX0Y3OyXXpyYFSYAG0pSzsEopoCBASlAjYfTSEhaJhiASwgkLct0jAaG0mwRSglg84FADDC8RankCMK/6YxdujGWzcwMzEtGKlsSgKcQU0CmIEKNh1YJgEYQCTRkX63/8l47FcwNrfsVvXWByXkKToFOPPU/6xqf891+cUn0eYd/z9HFBLEl2QMqGECYCSUISYB2CpgyHpswhcjIEdtJyYgJhBYZkBzOOUjIlYbYxaArBkI5WaEqwHZCukmweI/JXvgiwe9lUkSGhUxosDSYQ0QogidERLSktLDvpKiwMIEUzSPnqg78o54Rjyf5/+hhsKmkK0pbE0cvkuf/g6Hd+2urzB737aYAMaSKUJEyAkCS0UhqCZAVJa0jInWGjiaEhCMTAhpJ0QWYnIRATdlgRV9YhQAIwoWEFyExAyH0L8LlfwoLMoArsEOkCyg6EDlpIECFUk2iMCSfvArq00iRGooOe/50fuLua4FleLXn6v4HlGN3D0CQJTWKgpz1/5su/6+1dfd5g3/VKRoJEEiNzCiUIJJRzDCFASpDATjKBsjRTKZKrUIOrqaxoK0OBSQy2OAkNUAOlZoYYmMVIUFIcXiAvXvacBgsRAuhAtAAkRAMRE2S17CJoICBFbFICBE0wAM962o91lLP8NK/4R7Bca2PSoQdBEoCeZTl7xr/4gd/oeL6gH/zIxyobWwVhFRJYaSQSSoRSCxBghyQh0BZtCpgCGQKODcQNlUVgx9W1nAAty9mpmTWEJGYzpxWcTYnBHN4CtmeJ6QCY0MQqwULAorNSAlEioUlAC0PHlB1SGi20WNVUj6//mU3O+qMv/XvorNNUk64ymtDBFD2Wdc33/NzPW32egO/+qCddadxpRxJ0JyZwmbCGlZRIwGXaASbmgjbLGHVEYCQ5QBPgHkSNAQilFhhYw05NQE47ISsIEBgwa67VVOcExHt27VmmOhGsUiBoYNiBCBBWuyJSGFaNCZYGAaKB0KUBA4anXv0bZ33Rl/19OiVSCBC7sDASuqC58Pt+6g0dzxM888SdHaAGkhVlxxo3tLRMI5CYBaVMqTEDF3CWWY1ZTtsYhrCiC0gYmITpIpAJlhYIRgiBCAFkAkQ2B3Dj+iWAqaZQElmNxoAETOyQSEwHiw4mWoJUZwUpDaaadAXjcu83/vCJeJYUTxNe/u0sazSBCEgAgkRjCHG68Du+54bzCR0XJqghKRuXYxuSZD0WagzSlQTcpsbLzOpyEO1BkibLhKXJItnesBIT1NGOa+giwA5AmF4UYDUha9gByulKU8dnxOuOPn9MPe9OtYmRIJEYTroCOpRYkqY6pKlOmgLSxKQdkp5GDBIJr7ng/+asOnh/0vw9OqOjDA0mnTTVVFMQu0Ae/ye/czueH7h3IxgxTdugm3EsKdWA0SQBRiitMgsGBEwhth0AMZQJEErsYAkSoBsiZcoixg7nBopjpTRYcZYcNoq2TlSaw5968gaRLgMmRrowrBgsQRKBLgAJYAAkDpcFpRaWU5WlXRGgpl1/4uePxLOh6L6v3/+znySeWuRFT6WHWGSCgEp1gCQiAallfcPyJ+X8YMMpYCJ3LNBqSBKgZNhQWNEIJGDgolipAWkLaivCilADLiBuSoDQlEAMtApemCYWDhbEkvOqUYxhu6T6Mwf2D5oA1caSLgJNgIhFWxDaIWgSBbIiAzSAISgmaJm0VOjX+HtyFjyW9dy/II/992+X+9HrfxmqmwLoWLDcgAGLAuhY1VjVa3/5p+48T/DccQcSKTFLXUACzACDGAgkS5CQQqwJXc6zoJUIoSwhso0lINFApCtAuiilGTQZKSwMRGI1SFuD40VqevcFT9yuiIHQQKgWSgNgTGKTGLRATEATwZhqY4gmQIeAUqCy8Y0/vB3PempR/+Q1tM/7K9/9qXhK8NrdLGclgoWIu7euP7Y88Ng900QFI+mIecHTfjCeF7h939PcziAXhWklvSiygJY23DrJIrqB05pwYi47Ey6M62pWgyzS0cpJxAvAtCpeECxkWkEviO6ieqtgIbKCbhqSsbwFMJ+96TnzhOqmSCbiaEmsSZJkaQUwEA2ENgl2qgeTIdUmYJOUbULsJNg11RfXr8tZb/NXLsWpZ8/4iu9ZcKrpfCXLQYgSSxyzT/2HGwJP+dtXLQPJZFG2Y3vtz7zxpng+4L0/+sk3uxIYAmFMAZ4WS7TIKZiAECAtYygQCyFgYEFbQcuUTQ3Wgc2hBCOTMC0QWdAygUCAhGYTyV2fBKjtNz31yu0iaYBEMIAkXbQF0AkCASFETWKXCWpFjAkihWAikljLPd/0A9tnPzz1q9ge62zNX3P7h08Jn3sxlAYkWNTyQ/8R4L7Xf/g7r1qCKRpTdPn0p/60nA983w98KtrqFISsCCw4rTGUCCvi0gA7matAJpQIi+i6CoviIljg7Iq4hragLiA1CSvCTkqEsiCWSTsIO4Zw12HA8D6eN4lVmcQBIKFDqumy0tMAMJLYIWGKRQQTuyRRSNQCjCENIVmMV2z8VjzrefmSCObSvZ86JXkxXUZ6JN0w+r//FhnLWS1/7b3/aGMyXSCEuLXxBW87dl7g8n2feOzRXDBhhyFKJlin2LFEZBM3hVlSCMAVmIU98CLnhNlEgmUk9vAioBdJrhugFwEDdDPBSAyMBK2cpYuurQVp5bbrXrSvEYhUU43VqTZANUDoQMBOgphqDGAgGgOR1WoDGCAIjq0L/sSPbXGWGjzJ7Pja6Ga4vueeU2L+VLogQqSafOrXgCVOs/6ZJz4zkGWFNKbgBfn9eO5nb3n93BCzQg0gKCRAzQCWYAAaEDBgDdDAijtgIHAsgIvoziyAwCQgCZIADUBNOUBDiKUADcyVhIEpILNtROJbLnqKyUqxWobIaCLGAoxBrJKSSGIgEqDoIUFCJAEpABNwBl904k3VDyfxQRKjkNnutUvWP3XHnupERy1O7dorKTBgOgn8TEjDRHPX1hUBByYQqD6070Y5H/juJ490GSDlHCeGrAFIyXUIUrAQYoBAhpKzADFACIQ5LELGaQcgBiATdkQ2bWoSknOThAmlsMaE7Rk7f+Sul43lMKAFdALRsGqxQgAhRAIgBIwBGQQ6BQgBJAASCnrva36l48OI8cEQxfnlj3/aow/M1hZ85lhXrMF7b+HUL59BCQbSphYfBdl5OnognUBEgqEuup3zgPECjwVGMhsihVgMw55sFUlgOBvXEywBTrJyfzvJIlgibiKdpgQkwEIjBsPgqBAQdAGhRDRwZDcEZfPdT7hk1mUgnRAlBCFEV9iByGoIJgJxpdoAhFOMGAIClvypD33ooSR4v2pWY8x37ducXbyxvv7B661+wEIzf+rXPXUca3ZeNnX0no3P/GfiKR3aNgYiJDR12c3Enbz+MQkCGEPSPOHTi/MA8LZnP5Z1AHIK6ACQAOQKUEM8qCclEAOUqyaYAJIpQQMJDIACaYkhNAYdFDEkYdJwfUpEQJDi42tgYvWH508kYmLEAjAWq6UxCRCAEHbeKQIEMIWBQmOCANFY0Je+5JeaM9tOEiCrNZuv7941n+3avf+yaw5t7Ns9czHn6GJyzw//YscHKM3ay77xMlYbK/RM2Djy/T9JNae8dylgCKvF+Fuf+BXjTp+9bD1giCU7PuPW288D2Jvf+SaGq4IkclXiHNKAgO/fA8qDChgk0CBMIMj7KykgiTQgCEKA7IDcN+UBE1hex8lv+Oxz94TVACFAOHkkAIbIalaCYTVmpwABDCaE1UAIRP78b99whsU5YL776sfONvYeOLRvvnvP+ny22DyxlJ0Hq4/92z/36/KAhs5L/+p+cEoKAhSY2dXPvvNNnXgq+1oIxB3ouupv/9gHZOdj8zUIQKydLj9x73kAeO8PfhqA3FceVECA5APplRdREJDrAsiLKEAi90+uylnOXkMAr60uPktEoE6889qrzcqp5ySEU8wOO1qc/h7hNBbXfvH/8AGyF23UO6/4mNe87hWPvfzo8cf3bax1t5yydjR00VVTLvqG/3k8PgDRPf/ghcAysy6KkwZ96rfd9G/uTjyFgx0DkJ0CT/pz//36kxzeWOOUJQz7PECzb3tNcX0WSffkCsOCyGLMvn+6GHZlFruPLgZgGIZ0MkxcwMCYmtICZq9dlYBZJBOSTpOxXEIJ9nz64KGrJkmlVyLB6i4ommoixCDVK6XVRGJXaSSABBk2EKleqYZqahp/4b3vHe3980pAPOhTd8aRmyee/MiP/8iPffq48Xj+3vMLyPUWQatJumKqQyyWzJb15CM38QCmueS7oGGmZbMaDaQW+/7Stf/yaDjFzQ3TJvbQSseefYG/DQS5fd+u3iEGDNPMcD7Q3vvEwKoRTRYzSybLJBSTZQMkEAg1qwQCy1jUAcUAJBApkUKgG4xlIBFDoQQImWQpRAO56pJCmGK5TaEJXbd+5BVr21VtCIgFXQCmQ2kMiCEgQWOCFhhNQAjQUEiaAroiQrJ9+df/XyfWpl7RTgFduTrzxKueeuzOzZNPvOFnPn3nmL3M5d4zzy0PXlvVBhJWh02kJtIVuzCw/7KP+wDAld8NyxlaocHi5Nb22jc97Z9ux5NFutKAFZuEnu2/l50XvU5TICaAkfOBxo+8/OnLQSXpyqztgAQkKS7MMguQICHRBKQltiO4QMeGXJdIDEBWzJI0IEka6rggSAYg4TqL5oIYuFSTzQVYpem1rV9/3BPTXRhWSwPVmK40gQgYTIBOCQaiJJZNIhgIErvYUQKhC77u7t8eiBAPevMRn/CKx+++/DGeeO2TL3vVk9QLz99y9uBqF4wpBhS60oUQ0MQIMUpJ6LDrwps4/emL/gMs5xKgC6sNRIgZi/lfXP6gnHzeBiKlQDByik1RNAS06OLo/HwA8J3zKTvGVQN0EzAQ1gQSJDBLsEBZZFoNA/CKgWGZGJKsADExG0qAuCCESZlAQwYgKyCBECnC7XswhQT4g5tePQSqOyEaIqtFs7pDoFnBhLRUUCyDJjQ7NEloA9UGSzOb9rz4d08ANTd089TrX/H6177yqccfe+IVj10utxtx//YCXBizneNgmVUuME1LgQYTIYKE0DA6Gmb77jl96fFvYJq3CUoigAEJZCzXv+VX3h5PcucFI3aFtDmZKxIXoyACpDGZccO+8wFNb+ZjSsQAbFWCEFeMTMsQmjDAsJQ4G4ARIq1KAAbI2kDsGNZApHG2zGk1MMAymQwhMIiJc+ADexgoBb1+z9ufc9EiQKIQoyEgQKATiQQ0IQ0EmgAIiYYgkaCJASGChe34o7fe8cy1Cy7+yCc8jun2vS/E9a2FoCbJAzQyZEEXEAgSOwSQIMYCsUKbmHJsnPB0Rb76AhZzCE0sgxYaSBc6tq/4M/91O+504yUbnUyJAZAAvbJqgYQ0BXTMBzkf6M773v06zhMYTSSS4SoBmJAh8YASIIFhAGacp0gkribmyqysgIRhiYEQmkCJhEHYRMKwmGEAH2IgQMKUt2+9whITEMPOQRJjOqETiUQpIQaBYJpCoLBDoCEECYAWxiu+5lm1vdU86MYFuDFA0TWmoKHAWQwhJBIoTeyACZ1YNAHo6iBZW+Bpkkv+LNvrWkiIdgUDBtOhWPoV9XpOevvGgSlJE0InRog7yKWbEINEKDt85rwAue99+axESoaE6xQ5rCCRCCwDSdYsBxdJy8bFkKAh6IgwiRxaYWhRCIaisQAj06BuWOsg2JGgIWgsuM99jCldsZPs+fjHX7YxVUegFEgaTDCaaEwwUhgtgK4InZLIoMEAyNDEVBsTlJFlvo7VSxwVMCMH0JoGTSGshknGEC4j50m6qq10CRAMXVFiYrIs1rfktBZd/4ReaxHKjikMVtpAEMaJC77m54+e5Ia7n1MCaUiU1fUtIOBLmogk6aQrWd5LPKew/18Y/PBH3t0ECzsikdaRljEChAAhJsgGQsBtLAQLwbUxgsldB4oRFidWmEqGVsElx10F1o4oFEthQZAY24H0cUBSCinfeunjmkiwwxC6AEMAOgPRApoUpiFoKOyEqAk7Bo0xSpE2SVuM0MTjCONgF5goZ6gcMATWKUNLwFhm1iCxSYF0QXUAhEC6JGZjk9Mb+QszVoNKAnQCWqxKHOXL7vxY3OHej7+gGiKJEExxxc2MifT+lyExkU7ZpD62iZwHNP7mGz6WAG0ZiJRCsWWQZYxidENhObBymm2aKMWWQ8o0EkASFgUWh5YBaiBLYTVdOnB3dqAcKmEKLFDcSA4fIZBqUvT2wbcdfmk6QqWNGXYSaUjSwZRTIDQFaQilFqCQoezQCWgIErDsMJiSKUMdZJ2cXQeKSSKFUtkYZhNpHXRjsCrAaKotQkNS3Um6WorAVKcnTI//YyznNhUzUYSGUC0FaUk1XnjJx2Q1fvLatSkIAYGy63U3fMQw8TfAGECgcBpv58Edz376/4z9Q65868s+HnM1qCMolRbFFYMdwAWBxMoJogH2KF3QSpMEXA2DjlgFQshVY8eSFEqMBIhJ2CMgBLsc7HjRCfOROYQB1jSyrBO/86KDbdAqNSZqARJLtAwCozUhSgx0EdLGpHtI6CTQBGKXQSiJXXSxaLYzVYdQIJSz1tC4B0AdROuA29RgYMWApqKdQgwGKYmnp7Y3/jE9TGwLQgeIGJBgqp2xXPuC393cAd609zlThS5NMF1w7df/x3uR1z2N7XUtLS17uL75FuKDSc5hX3jn6+cikLo0WXI1pmRnFhIgxgWGhfVojaEmzgmZQjQuZtgsroZWSpBTkLPQ2Aqy4ol0JadMaFxMVpGPjjUbkoJeVtbfMF5YU6qRlGKAkiAYoFMRAQwkIpSyGrqCkR1jECm60EpjABywTZkuE4ZBiNAOQgLhsMSQpGSIYBEFIjtGSygwQtfG5mnJkr/cTiOQpoygFQ1AjAUC03j+p+7eQT53y/MiRAATofPHvvjffWT9q17ItN4WhkAny/H+zyHn5n1JP3R94Vs/ayAMMZLroQEkGQKkkZCQRroIoWGNy9WYwmAWd3ZIIDktUwJpnI3IKdAApKYdQiEwsCDcx95lWzEYu3d99l1fOCOCQCJEhEQiEDEmdCHRABhJBBMN6UIDmAATRQQwJh1WLQ1DCJqSc6gbU0imWUMGCaAIAcOqhNUeqBUBM6bTkeYVL2U5n4BEQzoRIhA6ACYCB7ZP7ED8pZdfuiCRQDB2TfOv+VM3XrCkoZIpSBndmH6K84GyYH//M54SCLkcrCarQA0QGK5HOzVdjhIMWaeGlcvIzo41IavLQDRkOcEqTZC4uswqKx2bx4WDy5TusBoTsoKEe8w2OTnjc6wtMqbUxKzDNLbef+WlY7I6xRQcSqaqKWUPiCQdOsHRDqfC1DLVFJYmRki67LILK2hX2YWZUmmjExIgwDrbUYiLMa3DkpLsQRgaIJtYCpAoO6YZTXWIwQDBU4mAHPyHdFWaSEkgJk5DBx2axGiK+b67d4LfWb42BiNUU621rCd9MSwyl2qipcH8wQeI53L9iBX5/tc9OewgmIIg1zMJBWFCGHbY4eqsCHI1BARwgBVBGBDYAQRFwHRxhwQGOFaSHRJBEOYEgjCgjHzmJqYkpKoTZ8ONd93wRwIJpADKAAwIRBJ2tICCKsBUBwgkrAYYJJSgA2hLCpLuxMpiQ9IVQQFZhobGNAFLGs6SgEgIBhNAEimTpgw7zRdyyhKiXwuUAQRWiBSrIRjoQBXz9aM7yeLtL1ubQrFaTSU0qyPQiQGiFX6Y84MG8My8LA7OxvsvGFfj4DyAecrhvgLD+6kJUMPV4Sz3NweGDoAEJgcGBiABcnhRP31iPhUGq5oyHvj0W16+h+KkgUBhgEA4abifpjhFwyl2BhRgQle6AAKBAXNgeGBzABIQBkhBrgrDWQEJxJVoAmUKAgWByP0MaZ/2dTjYMSs7RmqFgmAKCqha7kT8sQu/ZGB2oKCgdiiguorV0vzGDaTP1ezLvnCld37vTzKAxAfIkwkYAiQQCHJ9T8vwoCGEAIHghYHSUwgh5wQagGgAdwD2lAmQpxAIT1vcPds7GcpMMUk72/f7R54lAQyABMAAuCIEkJxCZEezggEswGqIYbUzgO37du8JJ3UbIHwAXAVogBAgedAQVgNEgBhWDSABMBCZ6v5Q3Zd9O5KddjScoharBkwX88VJyH3/4W9e0AkCYdWsNAVgwIB18/cROfc3sHjPV/68g+sJ4QlCIAEhUa4KEEhKMhACyQOW7lEpc8E0ICWBTkPYwA5oCCR0sDKUICEpxBQIxfuza5lqYjo9Krjv+o+8cK0tCQZCJ5aABDBBYgFGE7B2ikQKCYAhQWgSMuCuI/d+/MBr1ttEBIxzQhICdEWuhgiZBIIl1grEABILAQMSQidmPvX9iNPub0bKrAjBgLFcCQYTgAA2p+A7f+/vzadIghCQCImEdFjt2fSviOdoRoAFRLoel+//uMmQpsaVVZpFIKwJJNkxAmPWSWrYIaRZBUkX6wY5j8Qs1iQCSBLTTjE7hAEHIevskIbssE6ZNsT59vdmfVlqmSyZ05k2lu+88OqyC9DCYAJIoVAAUoBFRBKjCUQLkyZILEmIBRy+9Y53feL4/ue94KnEACRSOBCyTuCQJCFgYbLDjovggqCFxY7RaAmFBuhKx6wtvB8s9/8rWc7RsGNXBCkCBqMJaIGZtk+m1f/+sV9BF2CiAUzAaAAdOPgvBXIe0CCwZ46n0pKmMA3ANUyyCZIkNHOwEGNnB9kDYwdgR5rv+nN3X3FMHvde+9NetUySwHIAQoilQoIRGiBlQu4YgJwTqLrv2BodoIUCpGv/e+56ASZCABkKxY4BOhSyswVoEtqECBJCMBBA68gnbrrr5psWVzzqsevztUGCCQQDEQo5GIlpGCTmHkgJEuJOKCYQMERMABOALgKGU4/0s/6RTGtCMCurJh0JYILBJGiy2DoZdE781699bDvoFJGuACaAiQlk+b9uAjkHNzwNa4DJasu3v/XzCxm2m5iApGGdYA+Xo2THPayJoVmGHXdmsQ6AZLGR5If/l7fMMt5710/77TdMq0FIhuuxe9RBuWPNMiU7xizHMuxB43bQbMc2rAd3799XNsMlmXBK9XAsPvSY3VRXuugqrSZSdgqxjAEwkhigMBCa6gx6aBFgeewzH/7MvWOkDj32iY+9aBY+d4cHwUAT1rjOag6rWZosUzes7sEqDCvC6h7tSIcmmDRlpZMuJDoi6cHu5XbcKdE9f/qVsJyB1YlUJ82wK5addEXKHnRhzHHu51vf/Hd2L6Ggqa4CJE1CFMIt3zaYL8/FTFIIBAzdJn3rt3weO1JDkk0QYnFETRJgsgqUAjsSkFAcRSotI089/fxz9y6XW3zm5XcggVIrQXYIS5vCpgCMBmIWLUxqsB0Ih99Zv3KiQaXsZoCjPrB+bYFWRAggMShFxICSAF1g0QnQiVEqBLzv9g+/69aNqy7eMw487VFr61ksTmztmd2XXYAosgrUQIRIgAGS5QSrRIwLDedMmhBAQtpABEjsFJpdbrJzMXnRP95DM6NNlxELoBMQCBiTjhYG2F6eWvmDn/6new1bvV5Ik4AB0VT1r/wvyDbn2BJgi3MljXZQLnjnhe/4hKduOWlApmFiJFOGZprNlWkM0nYAg8QkZJG3P/b03OH2MvPm41XXLFO3gTifAGvSDYWdVVkNIDVCAxBOvCsXHevqrmRKCqdq1mbXf+YF6YFAaNIVMQQhBgEiKxrQBDSFJADHb/rMRz9x5MorL7nmmov3bR3bnCYyBVlnAgJyfwnwVBO4uoIskxMGU2bEIAlBAnEFAYIGohCCnLSyzZO+FZDCaGLSQNBASTpFE1MSkOLm/adk1o7857u/pd5y6wWXXH5RIaQLSFoz5+7/8GmojudYYIaZsdKEzFXqqx77yTuhYUCS0JClaUxhhkIDIVd1kTCTDEOCd919egH07b4MCZMwcKUJhgwhMoaamAVJUgIhQQgmuGk5RwkaTBSGy/1bb772Ugw6hJgYY5ACMCtQ7GhiMNgzCEyHP3b9rXceG9c+4ckXXrCxfXi5mObpZs1lwdieBjsKmRlnAzGamCTjLGe5KsBKCkI0QIRSICAQhEgwrrAYf/RPQzPQoSWESGQ17ChJp1gNhHfWKdG9tvnfPrb/5guvPsijnnlhtEdbSKWy9Zs/AmEK59qJkbYLhWNIANadH3zHp7NqxJwSWZCmdAFJaoxlgASjFNgBMo0aF+HNH/nyF8w6nnnvayZcNNhJ2DEIgRBkxWzHMEjXxJLrRk3+xtol90WFUEyGRJO9H7jjBUSiASRBIVFJQCjRhChBBqnQx+68/oZbDm8c2HvVUx91YDZtb7fQwUg1oentDSGGNIghWA4KxiU57wAuTJBAMBBgICVoSpBYAhFX0hDmLCyNzRd+NU6zUqHSSDCYgFoRTARJpDOa5XXcz6nWjn3/fQf3f/rme29Zf+W1I1AFMC3ueMfrt0lN4jkXIeiHCdeDwonw9Px3/YTHbnOdIsZgHdZAIC3BEiRCFxphU7AkCQ2aePYtHz/sxt5973d+mjtJjUFokFYKuQqwCi5HLCqxA4S4uGPkfoALjmtF6BSqFbJYW7778YearEii6YrGAJFgMNFISazgkcU9N3zs+mNXXbT/sc+4amM6tlwsbWbVy8y6ErYylLG93GDnMKFwSHJaGmNFS6RITwmwTrCjliFCVzRdlGgF6aSMrNeJmoC47+thGsZUC4loViQRLQBJNF1RUyfuuj8sKWbHji5ObN7+wfdf8tQrDm7Vvq1p/qkPfPa2XZAsOQcXSgnOhSHBjlDMXL7yUz7CGnbIYFZA0qQmJqaOAjDdjtDVBEwmQpJlgve+7eNuLuvEzXM/9HGHyQoYQq7SFDCkMavg7rgCCmBc12Vido/nTlQtHDqbOt3FGE4Zi15bf8/a4wxEE0mntLoHBomWJg57xILavuUzn77pzuP7n/i0qw5duK+PHJ9qlCOpqWsy6KyXA80yuwkScnGa4ghralhdJWti6qAkl2OxhKkJ0km6MBi6ImmCiUn3aGIZd3jeGssZEBx2sDBgNDg0EqTswoLSafaRXcRT02K5jdN2H73+fZ/bnGZrs+Vi+8JdQNKdc7Fvg0OCya3TiLEGv+XVH+FsB0kS7hgnMqbVmpg62CENA1f34DwIMYvsePG5d77Gi8fNsd177xN3FQxjaGokUjJAiFknZrETNMQkNOXUhPHe3uVyGmmZksnMR6YpS9e9dboi0cSuSEwgEolThTSRJJDFZz5x001b65c9/tKrL9m1Nu7enC16zEesnmY1dWp7MUOIFMutPXsxmKQNNAZN6Sq4CJYCCZyIWYwJabIiQCQQAVOdaCQI05gkUpnyWqCqu9IUxiCFAdJEYsBYIDGZkreC3N8mJbBktnXXXUfrxH2zkEBaOHeR/h+wLwsY1cZhroJhJ2a2461veeNgKWeRVZLkrJwFyCH3EFxGEMASsA5AGO7deez2hm7HO/utr3w151CARgAFUHAZwFUwBQPBkLMAcvXv7LrmLpkyGrpKbEa6e3v/ifc9Z20agWgidAF0BaCrSAD6+O0f/vjtW7svfMxTrt0323Cxtd2jHSWQtE41hMmaTaSr1JoTgpx3BGjAGoE4ABohRjARyAFEgCaAKU5aTQGRQLQCsJ7NkK6ePwqGVMsATLFjAFOACQjFjoEefI7TKztOJGILAgII8cERV4L3L3ga4kp8cMSHpvh/0yBGNXbgvWia5ezj7/irX3w3LF2tIXdwAaSUToGlNEAdhREDkUIIrQxve83Ln0937e4PvP1TXSVXWUHKlEzOCblirrIasqasKUSDw9+bX3Vk2B2KLBOMkkxLLvz16TVjIunSQqJUh4A1gExH7r315s996thllz7qOY9b7yNbU5aSzKg2ZkJIF1RAEnpIKm0B4rC6E4CcF8GEFa40sLMTRkNyXinESBATViVGSCcAYZbFaKF3z1kOTLSQdIJI0UkXCBCBaAUMs+WdxNMgO4vEyJlsuP+GU4882OXhsx8BVk0vcHe63ESjvdNXf/Jr790BC8FloKSBCMMmAKGUNRHYAVgGWBhWtOSb3/Dqe+7OLE997/f8JHQZoBTKBlgmoCFCgR2yFKhBaiDZcaHjB7/34qNLCXbPiCKBaeZyecHdv/LaQ6BUNFgayg5UYPOeG9/zuRN7D1x45TWPvni+fd+xrghBrEHLqjorxYzYMgvqci2lFJg7JEkgSTQUQ5BCpOyEUCrUANgDkUKQWRMtgxaCjJVpVuneVdCJCUgkTWE0AaXSoROEiAnUx04gD7CcRh8k7oCnAe+HAO7gg+ThOTFpFw/gHqyXGyNmn/i+b/vC2Sk4iESIxgqPlpxKBAJXw5XQTCYyCeAoXvjON778gh3LHO948yfcbDhLIiXM4np0QgiO5SyhJSGLMEFj0vA1x6OPgzaJlkLEwqW9fuPeC011NRDTVAjg4s7PfvrW2+9df9Ljrzh4cO/ePrK5tT3bmEEmTKqR1YCkRJwhTWZNF9OYYYiQxxpMNcsANIVpRJOERDgFCNC4YIFAARhiJAiUINXsrqMpOy5qxHQCBpIOkEggQmGHIEAEesYH58QH6PyghBmhu8/QaphY1J78/q/+Bx/bFTATCyZLEpSdndAFZRnOqaykEMo6NDS8+flP53kdb4/1ie+Yj0gjDUuQdUcidEHLk2takpaJAQIC9/7W44c2YbKCmRyRNpnCjGXdfuPzZ5OVDlCsenxx9Lob7rh3sXf/FVdfccEYi+1ldWZMY97VVEwaloyVpoKdImkoMkkVS9ZWME2AZZIkgGviikzFQIKEScTYDiQ6EHtA7NIBmgTTVcrG7OjIFFkyLI0GEiOGHZUCujDlSrSQcAfVnNbgeYXmZT4+8wOnKdmu5TJ89+tekS42gWAB0x4FMXWsxFHGWNNQ0pisEqCroXzVR/3E9+0t081xufv0N77zDQctNwUwizGLgktKCLDCVHC0Q0q4QwaU/uCPfMTWdnrEDhk9DZadJWF3TR649Teffs0Aih372F13f+Sjy439ey+46ILL9lcdu2fqEWqNdgqzpOiiSQ2mTlIRCFPCDKnJwmJz924SjSmyQ2PZ1MkFkbCZDZQyjLNJusREStKSQgyrgUiw2LV+77BIHTl6qNphFEgkWHZBqQUlaKWNFbsojtI5tbgTBAyeH5AaUr6Dz7PbMcA2Yve6+3U//kWGQCqQJmAHGUx7NARgIQrIdQ2FBIxhv+WTPvI5XRvkyR/8sU+2oRWORYEQCI6kJgTQEBABS4GdQZI9+Csf8amHHd0jE5lSQAOdasrZ3je/6eVPXAvbR++983PLcdNth/uqazbmj75k164sFptTxqBTUjRCiE2gpAJQaCZqdEgi6cKm12ZALMMQLQ1IEQxDsDiAMiXEiEFqjKzGIEXYMchqsbpWm+XA+b1vedWaAAXQKSwMlBYGSYhSlgYSDn8MPJXASQQS5fxgy8jRKfsAjtxDCIbLy3/gq3/+0SpYyH2TGqEYYZ0ktAAzm3a4HkOCwA8/95OfXbDxnt688Pc/9ck4CmiMswVDCRaIkJKsQiIBGoCB7/vyp153bBg0ZLLLlJYyaS33bf7mu9cP7tm84/gyB3tx5dVXXXTRbDltWbPRPevZbFoqOAHO0vaghZSdkNghSUMihgqme60WgCWm7KSuE0mhkBIgJVADGDFAiAFBSVdMoKkAEqTshFAbx6smM+//+4rn06aEWBiaImAAg8GAFEHK8OE7ONWkdd+LnrRvLTU79oHfu49Unx8gSQQCW4mWCFCOx5/9iM9uWFBKhAiBTCCBEFmUsokVjcRAwEXyO17+pnce4AoDL/+Ky2cQCiHAKriGkOgmJAGmQA1Acg5EvvbJj3tXIwQaYksBqCQ9dh/5gw/ccmz/NZdceNHe+XyNXmyTJE3JtAAy35ivbVAeO3x0Yn0iNOmqNgYgJhJZjRUjQXa2RNZ0BYwEbEcgCbMJQ3ARCDRNTIwxQBQLwABpUjuYIXs+9kvfsGdZWGJACJFOCWlKowVoAhjeGuIpNPMv/5PK6p7H7PmtHz1sPC/gxQhyQQw4bijyKJhe8TXf8otnEdOkJo0GWAU31VIkxtgGJrB0B6iDBPnB133ke/cAl4PdV/z4N3/WcRkWsXTHVqWGJLRAsARZhwdcYQimP/fKz3xHdZiCaXtGR6qtnjKaZi1No25PcZkxyyyJPeI2G49+9KWXPv7S9c2jjDG/+fXvuGsrcyUCyRRhaOiBYIaankmWVoCuhGTCzqQBSoIkSZrQmCVICFATgJKyC0Oi0FUSLQwTYyxJFe6e/7ftr58vo4Vph0QDpCkJEMREIiUceSfISWviUd88B2zpcfB5X33ouz5sPA8gqxhdkwwXXjiOS3WoddP/9TkfTQrJOYEpxUCEwLgqCIgYOQCCwMDOvTe/QbmgUDM3N3/n9a+SHRNDREsecA9rWAETSKQhwQDcvfnWH/2E994CYSKlmiBApCE9UWNwYtFjXrRjjJ4KKZbT/q99xaFjmxNQM2DtSV+8/vbf+MDWqJA0mCiQhKbo0gKjg54YEElDgmA7pnWQJkgIwwkQMIQBKUtwQKAwrCYAkdVgijFVusdg9x3/4wueMjQQIEIJAZCBRY+YmEBJ8fMHiASBap/9bbCkrNE1LbP+um/6D2+yxHO9FEvQU/IEC5tpnWR57Zd9/xdPgOxBugq4Q84CSlM3rYZhI8mOK3G0A7Ca/MCzX/D229HxcjHlZd/xIz9x0hoaEkIA2WE9NpGrw0rjCmaIrBB3b//wGz/rx3eKUzKlLLpL1CKVpbCWRpK0KOBwgtQW13xrs9pNBFL7n/26Z733e+6sMRFMJ1V2yg6rnWYwNV2Z9WIeLHqIKyFXk2Q1uZIJsCiSICUjC0YTQiegCV10YUEX0BViNOHyN3/PV796PT0lDLoiO5h0dNAxgKELCSfWSkrBtE/7N/S0nq4Yqrvr8d/xI6/vknN3ie9kXr7wshV20GUOLOHo7rv/1Be+znI5Ykpilkm3QTYGWBXYAWNFSJJVWBvo4Ns+6pOeucdd8wJe2Cfe+/d+4hNSk1wPBEia9giKMWIAdszYkUCIG778vZ/7vnukbRlMoaAbCFKGZiQQlhW6pySGJJzgS/82NMSa0UnAqbzim570j28ZcaIopqqU2j3S6SQTaalmje0yYADCtAzZoWEFohkyE5K0BqKRCE3EACYgiQbTA7QC3bOSKqem5hf8n/+09xufOWpBCDGdANHC0AUGS9DCfM37P7muYmDa88/QuRLAHqH7iu/4H+/iXC4kjHXyswHswD2S61PHPP3Xf+znxSQmZ1kZ2AHBEImzIbiDWEqAMIXIs9/6BZfn75Qxhju94uve9hMBEjDAuC5kCcZ9BTARAiFI3vuln/bq9x6LgSaEJkR6oEDIIhKsNkW0QgE9vfjPw1TBhK40weosZ1/xuP+wNS81EIMlCiGSmki6hFkBGMBASAFCSEMIAeO68oCJiaxG6MQQgaTZ0WBSMjHmTTp0HbrxF99wzTddM2cyWATZOdAFQaEIBjj0pLf1zISu9lVzeqZgMCbA8oq/9t3H4rkbBBBIpEloGSMMcR2DV7z9T3/h6y8pa2g0DRsKLAqLwiJGMFiCyyQUSg3f6+c8d8ssBGLj4+/+sp/y5CqlK+FUngKkRFgFFjECcQ1lR/7Cqz//7bdihDRdyRQkmCbVABFiYoyRkHSdOPCXcJq3BXQBSgLV9ac/8fvpChJCGnS0sdIEIeqoRQUhxZCLYDGu644sGMIOrkwFSolrCCAFNAl0TFBCaCjQBKqZ0bGrJi9a/+hP/u4r/tihoUSTLppEJIEuIU0ssWav/d3js07FbPFMuhBCE6ox6bymf0/O8S1yfEbzklGa1BGmMVz8+D/7rb/6uDdyXdojWY9ykftbE4QACQYGpDWr+/c/6yPeNy0s7ljj86/9pu/9guN2XEzOSQikgQG4AgZgWM5mEvrmL/+pT75rsxSTllgNMXTSDJthlOrUVMBwIlb6C2b2XDmpQYcgufLpv2GRUG3paFNdtAHapCvLdFelK1OR4IoESSaWAFPpZQiTq56Y5ayAgSCxK4IJYgAMmWq+mEN194xkWl62780//vFnvuoJs2J7FFGSribppHsE7IoguXDzxGyRZObW2iWQtoBmYLTMcu/rfmlxrvc7BgHYTSAQ2QHEuDxx53/6lJ8orDYLYDW2InZtFiRAcAFZJWYByYDvfPvPvX3uLrelmLjuY/31T/6YWYQa1wAhIGnCALOYZkEgEMj0ff/tT/npb56bCxA1iVppVqXaBNIUXWXSkSTStTV/IV2aooEgIQ2EroP3Uj1LSXTKMLEjQQK0Pcs0h64IQmkSgItiCQQCshiAwDJQ2hXEJE01BDQkDQEkYBejx6wFEKq3Zo/qX3vDzRc//tGXXLZGxwCaCFiCVNSEzgV7PpuaVcPEnJI0JKgJVE/1tE+dOLeznCgmqKEphpSYpIOkM9y67CO/8I37lqkOXUg1RQdIV9popQuTDpAmUk0p1RRWW5jq33/qo++1jGaqaoKOE3vvfPNrdk8WhqaMJE2wlOqkA5YGky666FRbrBbLH3n8F967XYk97GSiFClBkx4tBWhhYYWyGTpcXHYQtGrpkBhkNGYls4mZVlOZOs3M0MxaTdLWxBrTxjZoVVOdaDXBpBPFRGKgCcSw2olJU01pVnrQSTuaYNJJF11AmmCgB7s3BR1Qmvn2FuuP2ffuN11/49e8gE6kmhiATiJpIoHIZQc/XJXhgplTYSJYmnTSpGuXmzvEcy0DJEtGNqXNkagbaCsDO9iQLLn4t2553axJh4AmIiSKFRALkQQlhCZUC4nGAE199O4v3dwaZtAEaWpaGtbfufnimhIJnYASABNEUi0E0pBAk4hQadj8r5d96dZ9a6awy4bGVDcBDFh0SGhTwU4GtjUGi11FkBLQULShpi5mbGV9CukGqXRqmeqeTampE1JqD2lGbKykMYQmhE5XEJOoKwjBWqa60JQrwbaKJiZpJFEIUVK0MaPZX/cuKp2MkSYUy+y9bOu6+55IFwKkupnRYcrQaIIS9qzdWyymUc3GGkKIAgmNVFjbOLzDubphe9PqGoKEdRQhNGVip0xtHVj8j2c9s1oSDSQKoYMJHQwGSBNTSiAGiESSNrN+24suuquGWumyC8PkcLZ8y2OvzEQ4aWkpEAFTAFbaMSUaEy2Eriz/26HX9j1zg8lUaYtOOjEampLoaFOABNIUU2YyP7a5b5oxpTQAnVhatXRsXcdsGnSQJGhsYspUA5nRy40cpwedaoLVFE1BNF1gCTGRICYSIYiJBoNUpxCDSVORdMqOKbrSCcKspmZ07FSnk1oenjZ2P+sIBDEBRMquWNIVdsKayTIjs8O3XVmaamJBW5YWm+zsOYq9CHalK+BicpkpyYRVApDQAxkTVbaHPvb6rz1ggSYGSCcYEwQLxMTSQIwrEKRaQjl4474vv3ORIJ2YtEXpNLLvU2/6I4c0aCHphKCBaAkEOlQHjAEE0jNO/PdLX7G4Y1SEdtZlTOhIIlpYLKuk2kToEc2UEWHtnhsev5splGKBGGPJ4DdrNsXuUFbZQ0lTBBymcDZ51eHDs1kLhIhFlxghUAhdrEaASBpGE4msJpguodpCEzpAAAwmWgLY8zSpDoKVNC4zu3KTYKwuO6lOcKhlqSRM1cyqmXXX7nve8owLKCAGNF1Ygz/Y2OnhPz40vaiBBAiFwy5zVDBeFgeqI7QkaeMYPUlq/dBvvftPbXRNlZA2YXRbqe5QVkOotoAowwhJ7EDRQPHxj35db8+cpMrVMZbNSLrnu9993ZfublPYgaIhKYVSTEFjEZsCAUod3P7Dj/0Cb3GGdCqTDMgySZhMCpquip0U3UXSkgQ1tevE79/4vEfNuq0YobAppjG48/Xj4OZSrHRMRQ0Dl2MWph6zTDXV+pHtGVImTQiNZZAC2sRZY5IGCEKMQCImIiSosSKQNKZEQxArUSJjIhl0Mwsux7C6M5IFOkhjSHVpCiNFG4oO224sZnQCu99x+6tHGxhMoUIny9n0W5z2eKbFB5k8NPdiPGAGNERMIU2sHEsCQkCojnTNa7GWXzzytbMuYwBjyY4SgloBuhKFxBUwBoKY2375G6/5HGWThGaqpJGKsmv9dz/9RQdpR8eAEcKOpVrsaAQShQHU9NbffOWXb95NqkMn0A5rKiFG4mzCMLoJlaaLsklmtlZl/gc/f+wLn7NBQ9F2MsQEP/oTFx3Y2mRMOJRBEBI6VEecpZq6d3Pv3EDoWEBoBh1JUArAgkiMYIpGCEKCWlQjFTsGkw4RGdBCcHSA7nlBF11FOtJS8+UinRAxZROn6mmWAV1QGNg6tm+JndHsufW3XnhVtRW6TNLRdX6licTTcebLWaS9P4EEAptDrNrGwWwNcunMhGYA3VWJU+fg8seP/Kk1GiRBLItmBiDVYErBBCSFQDWhMzq59Wf/+LNuhK7qmrpGx3YO2immXeMtn37JVUXPDJogEMEkRjPaQEWgFEhu+Ele9byjx011xbITwJ5F7ApID0hbMXQK2lRAU+rkriP3vPeNB5/7pEeNgiJAAYevf+eH9+/fODGbZZpgUFMXw9hVYZoyJ5P2Wm1vsqvUULTEkshohEIsIkDQgggQiRYKRUdTgqQMpgydMhqqCRaFbM7X7SkzpWsGSxnprB2Z1kshSGdkOlZd81RBAU0R7j16YLbl6Klmtfut7/7a/TWFrtHqiGP5A++lGoR4vzwz4imcPJ6G+HDzoiYkRHlKhOUmikGGBtFQFeMSHbONzV+8++v2REgATKAk7FisJphw0oBJoKT4+C98zYs/XXt6ctSSdFLYJunKmLbYP/vgux777LUCsDABE7CLECRgF4FmANz9gbc95UsvunWxRoeJCnQSYxeAIdApUCttOkNsK2EymdML64L5p95536GN2r13Yz7fPabF8bsO3/meO6+68GC2i+7ZzKmrFyCZDa00s3a4vT2SbG+P/SEACRoSkGI1QUgAKVbDDoFAApCwGgAJBIJDSNACME0VHcawpZ01s57GGGFredfGvmLHIKZOTNW6y64ZpZDwKxdevL3mMm3Mkbce/cL9AwLVBWTxA58kcg7ci0FAXC2CVoVNhnBQ6IrNSGxidKrd+YWPf9nj0gQwAUwMmEgMEguzg5hoCIStt3/gq1/wmc2NmaMbA50QuoOzdLqr6tZ3HX7qUzZCQyKETgANiUaKJjIDlp96z3VrL/+Cu+5e6x4IAkFiYhdWJkasJSEiidEQkRg6sxEXmD3j+vddv5nZ6M1lb0926rKLLt23XIzqNhXsrkgnKZsqot2VWkyz7t0G0JCIwcQAQgClDEIgHQhCAHcADDt2SUAhlpqAZadMM+Pu/ZujIjhsqns2Oum1m488BmgKE7umXu/Z5OZybeb2fB5g84ePrO8/PmfKaHsrd/3WPa97SrFawF3v/OX9oNnBhwhPh6fDh50PTpuLSUCkTAmmE2NTVpgismf+xt974mv3oiEgCRYQIKAFQQhgggZX+qM/t/cbn3TDNOsJ0hk0pMtIWwSqll27jn/iQ8ee9tR9FZFgcIcQgESTEJa3Xn/j7ccvfP4zDxw9EYcMehCRRAmrkhITo8QhgInBdAw0Jr3Y3t5k+8Q9R49usj45Znsv3HPg0tqa5rQj6SZQpItampgGgq5NVmZLSyKFAVboRCKRxEr3IBiDicFEgwGEGDSQAIaki7ZiSAC6oOD9d120vanliFMUWda8lgcXb7nyWqATiGPzDcf2LXA6sh2c6tDi+PbmRw5k32E7kWpqbH/uzR963HMu3rN7tr25edvH33MUIrjDecBZMnANWTFIutIdE6EM0OsHP/Urt7/qGfOAJiABOrEwYed0tIKl5QBv/43PfslrN+/sWexITCRTiANNUyYoNV9c9/57nvCiC4oAIW0IAQgQcHnvJ2647dg4eNlzH7exdXgRUqUJMUA6YKUdmIZY7JgOsdKWREPS29IxToses/lyWjirMXMaw6XzWUCrA10RYqYANWFMpamKLDMSCAEpgEiAxGLHAikIVggEoglIyWoCWEAACgoSdjbTtsdvvu79h649eqLTkS7TsOzAqAM3/cGjr9yowoLa/J3ju+8aC6eNXYvjW2vHb63F9sh84+iygkwhc6dZ3vne+7J7re+7fbDr4gPVnEcMBNsOshXTJkaE0M7SsStTzw761jfPX/aY3SRCgkBhIJAdQkgMwSQsr3/HDU//8mvuuMc1m0EyGUMnGKlaGiGJ3dPswOYffOjmA496zIXrazOgIOxoL7eOHb339hvvWuw5cMmTHndoHDu+UEaSqcpAM8RYRIlhNdCkQlsYAEFWlYmxXIz55HKR9dHl1nLKKKxZqK4kbRC0ALuYAqSTWGKylq2iK6wGCFDsHIBwcsMph9VAIOwcTq69PbHYXm51L+67gzp87MQ9R9f2X3lkW8i0HNUImcLmtNfs+cxdF1y8jyqWR2/70IFXjxPVJkyMnmq+a5ZaLFqhDDbJctp376duvvtoHzg09u3dW4XnEUhKZPco3GDo2AyargQBYjvtOnDzW9/n055z8XpYDavhNAag2L7jM++/76oXP2u6YzEq6cywk4ghCkFsqpokrdPsgiMfvOGWO6c9+y7av3tjbZa0bm8evuvI0e2JsfuiC6589IXry8XWZA0SpIcDJRgsMBR0IJh0SZcViVqRVVFQmgBNIhUmGZiayoQgaYjGjkHpKjuhE9tkuTZLWJXwAFpAIKdyynZcbLO9Pabt45uD7c0TW3feQ584mvni2Hav7cu0fqD27N594Mg0ioAqmrSTvZwW21u33lUXzNf2H73+8L2Xv+hi4xhja3MwH2FaX0+HsBpaCN29nflyk42N1mmE84oSXGbCCwf3wkEHqU6aYkFIEBhbfWDc/ukP3rr/iisuuXBjxulvp8Wxu++96zN37Xn80x4/u2MxGzOmMZZtp5wCRQcTGZpOCwaE+YE+fM9dd91z9+HtRU92xny4sX/fgQP79u7dt39tsbW96MAsiU1J6IJCQyGRQGTYoWu06SpBwhQgRgwNnWiEAAqBaAhdCEQx5QQSEshkoCwCfXS2PqALCEBDnZZwvwV7OW0d3loc3bYWW9vT4tjmtJhGFnEiu3avZeyGvXvX5msb9lhfm5dLqkRmte0wAlOXy63tbe743H2b64vNafeBK6/Ztdg7m1JVw5oqXc0sCghCQIkLewynKQnhfGMIkOQugBIwBOJkgCYJLrOxexz/1CdvPbyYz+qyyy86sD6bJ6ABXLbT9r2fuPPose3lqLVrn3zpofnmMZJR0bHcGqFYEiEpwQRwERuqTEjW1mqe5WZvT92g09i9vjZid5bb08QMiKFTWDE0hJJECAYsIQZjEgXCqoAhsrNAmpisRDSaJiayo2pqAithgi6pGJLuew9fPU9bANOgOL2qtE7LpdvHjy+3lyeOHln29gllVDNk1wZr6z1bX5vNmK2tr+3e1axtzEhnjE6mxcA0Y1pWMAAmSQtkibW4857teTYOrm/05HxGy9qIjUYSwslltdMypViV84lGABaQl4nQwS67lHRF04lkMqX22h6OHb/zlrvvve/ochqzvQf3rM3vPro2c+v4sWm5Pc0vO7S+vueCvfsPbtCLpSNT0ZbTCEUHqCYxGgGDSZMghiZdVaPoQJyiitiBwmRKmXQSQgdCpxBTEq0YppSUHQgdANlZAmYFQVBWZVUQjKwK0EmTqbShk6atbmoauw9f/6gLGUBgYFOATZvuabm9XC43T9x3dHt7q3taLhw5EapmVbq2Nts1y+51nc9lvmdWgzHbpmap6gpUdyIhQEmYimgndGwiPZWy3Mo8i8X2tLY2n7mYjRrVJlY6NHTCqQuCQbNy/jEpsMxEsGQqBcWEqZB0dYo2PUY5rxrH7rrz6PHjh+87vpwO7l5sM9t9YJ757oOX7l5bw0yLhV2hKY1dEAxBAqVC0gBFGwsNkCam2kAHsCKAMQEkJnSZaEEwMdEyQCQYTBRKDEROWcAddpbTKauCCLRg0V2SqaPQpnrXR2540b55Snrz8Jbbi9reXm5NHr9veXxzLKd1tmeztY1sm/neGd0e3M001vbujVlbK6RmOisQoImArCqnqqyaRkxoAAWinWWV9pRgQgHYnKqcRkHA8w8BZERoBBinJDIR0kJig4UgUYKEMZ/PsZZb0zTNxsSosUZmWR7fhO5RIJQBpSKAYEHSwKA1VBsSbSgkEjoEkpbECBJMBIsdS8AkTQUaKtgpgwSCJtARI2ewrHYiSjJJkJ6Gdm+t777r9UeuYq16OU2L9XmmY5awzMway9mBmfPMRuYba1UL1tecDUZN0apIJdLN6g7IA66AGtCQaAARoIOA7Kinch42ZBO9JKRBotFSDVGipsOOMW0xVdoxZiMuZaZT98g0MazYw4Cx0p1QalFNVwA6AS1LOzEtRQQtMFrq6NJCSgwlBqIJQahoYqJAKdWDliSaGGRVgHiGAFEIDRAF4tQDermYWfe86+7lds9ms7E+lpmNXeuZ2+t7ZhvrlWlzPg+zVJJlQwICymoDCMiDX1aAKKcs55MD2Bq3kKihtKVMS6AbkhYSxCIRkixLSDipEU3BRBI6TaUUEiUJHSnVJLGpsrFiIwGBUikEEiU9OkAikoghgDhih5RKKpOhaKEQkIdQAcWybAiqcblkfuS2wlm61rdcn9e0GLO1taJTI61ZbQBBTh55CAwNEoHgDufW8aHuHNFIJjJId2KYSMxk6HRTBYqCqYTOmERqmO6qKehMqy2msqkCq7rTqTJCGEwkXZMViw4VmtETbZLQEGqSMOwg2EXSpoydIrTVRq2BXQk1EaypK5gWQE7ZU4qnFB8wVxBCekpSPTGbtKmps2CwtLs2ZpXJkdCkUrYxNUFAVgO405kfNLADgEQiwQjxQRbPtPjw9DApERARiADpGNN0CCJF06akCcRphA6YqCQQxFAmCINOWzFiYcAyxtJoxTRJG1NKk3TAGBAIJoIpwZSWJpCm6JDQAYLEohOMEeJK3OEhUQIoJWBogNYmWkwZCKkoUK4EMQGIcoqecSYCRITSyLm3Dw8ByVRIeidDpBPTEKOGVTFpA6QTBDAgOwQCliECxKQJENQKRgpjkzSdkpIIdkhHAmAZ00mMlEEKTBemNAQtSTpCIGAMq7Iqp9FT80EEzWpbEgShocVGoUGQHQWxAWRVHloFA7LSICAIAj7YPON8mHo4jQB2YbXBaimTJk211Q4FA1NhQAhaMroDRTssMTESE7sioasLcZiOkWRKwBjADomdWHRXQAPVJpYQCQQDxkRD0hRdCBYSCYjIQ7gRZMfIKcofZgcGgRilmmiAdKklAhogXTSliWCwhKCjA5bBQoBogBgETCchmpqSJggEQaoThaQhpCkMEgwRCAYCQqKYcuXkaVbjQ1cDcrbo+bOzJo0SoxSKJTuaTBSkTYROiJoSIVbLMDQhGGIkCEiIENIYKGkKAYImO4EQBQsLWaErRAs5uQlIEBDAnWRHeciWVXfyYe+8u0DSpg0QrAkMMRDa6tRUY2LWhk616ZTQiUgXJBPRMmmCiSChaApgKiRSGkyaSNnRwsLSyhQmIoGkQwcMgkmDICCPrJWkAQlgBDplBOnESieQJhJNBIKIkdFWNCgUO2ogYkIASaYgJUiiEGO00gHSkYAQBCGArMpJ5ZG3sqNCUEDamJXVKNUaCi2LJhAMRAxEVqUhTcRghxgxQWOgIzESIBLBmNBQ7CgnlUcQCyAnF0BAwdDBYEAUQIMgNFGQkwp2kFWRsGrZwZQNCQogIBgN7vRIadlZAdlRAdlZTi73W+SksirQIAggpyygII/odkUeEuXz/v+8/z/v/8/7//P+/7z/P+9//vP/84KP/0+H/+ej/4+Hz/uf//znP//5z3/+85///Oc///nPf/7zn//85z//+c9//vOf//xfGQBWUDggnGAAAPAYAp0BKiADIAM+nUqgTKWkIy2jEin5sBOJZ27/5OavjQo/a7YCeFhBDNmU88Bc5xADh+Kxth+Gf6Aeqt0l/QDPXaJ3Ja/wl+Po9So/8jMSu48Ptn90fwfUPx9Owc8eyd6T/7H6hnPw/wHoD/az1mPSX/j/UA/xP+d62v/C+oV+4frRf/D2YP77/4PSN///sAf//1AP/H1k/a3+1/it+jP/7+r30P+h/6f5Cfth7K9mDul+tbB/8l/k92zPV/ed8v69/SegRdN7VThf+J6BHtn95/7/+A9hD7PzS/jv9d7AHfxeFd+N/6/sDf0j/F/tV7xH+t5Rfr/2Fv2P9OH//+6z92P//7wv7cf/8ZOrEfItXpK9ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmEhdNOaHNfiDyjlid3d3d3d3d3d3d3d3d3d3d3d3d3TEyiRRavSV6zMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMQU/JWnSNFojfXWZ2pOzc2U19x7Vk7bTW+StOkaLV6SvWZmZmYnZYnd3c8iVLf3cSQ1Vsn6t1Fx9Hacunpk2CnxM1TfM3GA+sO3PQkHWk1kQ4cl6K9JXrMzMzMzMzMzMzMzMzCQuqX0N5Z5sD7n6o8cmVADmnysAsNjEmuAt8aYFXpK9ZmZmZmZmZmZmZmZmE0oAbAGJ7TpMENjsBd8vOIAUnurcbpk8wqKriVFmV2Lpbt1SCVcgVLgnPIWaOa+Opw+6VlczEvd/PkiGoIUj6zaxPbjvYo+GtFVVVVVVUqFq6/uPqJ8xTg2Xt3NM+pdhfnW2+eCh2dhPonVaNKHlzxIfJ/1QGkjCfykTYmRM7K+qQdqBSXp/ermqy+pPSEuYMKApifFhipWiq6E4+qkhBUBDPOU/GKQpONPQecHqTP1hf11whNJLhyw8f1wyY8Veck1SGysl9Cf0LWPhZZQBICXTKQssagZX6EC2mtxU9nrvpMr1mZmZoNxF9XIbOazswQuwZOhx750GJz7UiCeIh247TiAuk50kc9/3+c8YVq2pFdjLeyV//2rQ4RHnjTnkGvIrb8x2BhYVYCcs7lz7pDQ79et8IsvOKHejeQaGLAFqrX1MmZLSNFq2q850lsqL11pKpK8V5FSRQmkT3pc4OipLyx2hv/79Ebp4CYNoB750MKaXHs/7j004k84h32VHIVgpnrtMBaoKUC29tQNcyhawfUw3LMzMzMzMy+ep4/JKr5XyV2N21j/jaXFWfCjuL0cKfgqrANYdDKkq0MobPBevkQJPU/qvNF+LHmBenJUXvwgk5n4zqH3KTaU9sWgbbdkRs1t2rBlRQfL6QWKZPJYKhwyVFf6fTHOBzrLZlFEBwAQ8jO0xwxHizGEC9GaiaGcrRhi0WYMHg4BbgwIHrOpRvp/4BuPs8TovN5TF8KW7M3fn1y2nM4VhL2zeJcvl/ORxDM4zR0bu632jI0xJvcl7u40egZ6yUszPquoMT42lcsBeQFjSPniCEq5E/tEX8TpHjS+hOXuwC4hf6LsR3MvWG40JQ70smMeC8zYkADxIsZwU6Y59cmSlqBAjq/x3UyOt3r+1acs34tZGM/tr57/kQPk6Dw+ORRUCPh6eGPNsK3n1BqPQZQ2zZXYj2lebQ3DTBqNFqAeW9Q9vWUnd//kgaKiqfaHjS6dHn5B3GqvsSrv3l2YND9acRq7hQThhn7lAOUfCJ858m1moCuTHMpdbpJN/Dpegalz8GNRJaPLIxOnadfDmWyyV6I96tSpgLr2EVXpa4yx6zUfeVQ+ys868Wlh1vXHr2NItHVNZ/qPi/XphbnKsAIygQRxYQ1tqTlXjQXQ7bZe1lyzYn02P7O8yRJVrQoGalhia+bEdqx7YAk9mvhphM0mUwoZBdf93kIV7HNoJDFqzlwgFaScVbthmFI1jxz7OJ0KqBt+rPpX7jKAvp6uMKQ0tB/c31yvnLCpYRCAogxV4u/1MRjMdXiNH8xV6VNdh8/pEWHsiLQWIs2PrhIF9j8QXSpEcrc+nUKyP97Buau/r8Xfse5jH6qIUugeb/V19s795m/9ZBnqRVVR1WmySBpv4vZ9uRXc92x223mUNbQRE0mVa1vtTGxOx8IZHgXDSN/F2ypMic7VcDxptF+gHCxE0FekDUJbgLkJf7wsIKLuAiY8GdPYaX++918fSqppwhGRCqEUyAdJshJgUl406q+kaiQE0NfERMvn1n6Sbm1xbq5OdMBMbq0UQa6fli5ovYcr6EKbDil9CETMX0N2IgXJ4we8E6ocmFk+Fjusv9n9bok82K+vwGweGkdWyCapHyUXOkx7t0gjiTM0icl3jqO2U3Ak/knqFx0Az4MBG8JavtNpIntLJY2mzhqxaGvtOhSmk4PojSRHXUidgR0Hyf6ttqA7nBH1FDB9ft6SxI3KAq465DSPpYqnFCctTW5a91U4XQhboLM+GP0fHHlm3mOQSA05y5SKYGx2uhWpq1zi2l6WRAXcTdeURrgMl7P7rZA3hV1Eu2GLmsoPtNMzEuecavJt+PPMgiCmyg2YGC5gqnXNPY/ysB8RyhieqtOJnXKKS/hAZijskJ/jlZAR+biheYIzEVKhhID4oJ2lD+kRHKVA1i2WtRMHGwOrmGc7FjIYSahSo4f/ksD1Wo1mkBgMQYUgbJfKPDTCHy7nZT/5C8q4i+OORIGJUlJP2S2c3ko5s75kEqmUMP82RAaANB+UBzUsgYXs5CJLBq3CO0W/DfCuDYgRVhd+HyQWKPsXxgPB5ZZRlUkO9wULbNtidwZ5d/iBI6yQXOph5/Mi2EDMPqkr4T92tXAhrv6EOhiDi0VfntNIAA+KmNxTv6rEFjlFX2WLm7iPxVAHy2eBc0eJfWs89dt9vAdaXZs4c/Yaoku59skUf9XITT/D2MLUyHiOywsi41rI094kiu1+/2cqrAQ9x+ivKu8H/RSFE9SQkE27AIGklIE+8ET6fIzIrTj3aHAh1dX4y7dYd1El0Xe6JnvaeR0raUX8Pko0Gf/4ZleAV+ZIWZ8zA75KlezFmK7iygg6i5L1CQb1WYBKv9zGs/MMG7WO0b/2rKSoXXv91PpfPMOPay1FV0nL4fxUcz7kte58drNmVxaHOWmjL7pHy52Hy8H+T82qhB274oUp0zMHFNXothW1rHCZyGVvfwh8AXg4xattyPm/tvTI+Ys3LfsK8IntFzVX0Wi4rS3SYMq5hLrv58AEj08TZof2KhFYJITP7jfJ+Yg9YiMQcl0vXlEbqd6pf/Xvmt1tuhYaJYgokKhQM/tSZFdIvgkbwzp7riKP4kudvlqmyKBa/iYzw7xap67Ai+/3FhlrEmigsyXbRuExTfX5lvTr9qXTZDaGvF/RnHgLNUAy0y2mpzvl8wEq52f/5YvWN0CBaS5aaZisBA2lUyCA/m10k38AWQOefRBpUuZuSeb7Tx74FKz6+EZG2eqFBawAUpvNcXJQvxPP9XpqMfIavAzOgh+RydNoJyb3vfxDytOkWuhFPOvnM0Q0V2CFNfsbLrQzyazvU/cxmBXituBPgrmnz5Gt3L/2gpmyvkLRU1BZTFk+hzmuAsQcT/EioxMqehG0ZAHRFhZarG9mNKtEZRKdlanx0ImB8pOnH0f8FFdDhoPzWMrf6R+1bLTxVaa0lHv9/FBXO5eBjs+t1LQMSY43K/bs3nlRGl4a7bx1w0+RBRxIVUanYaXPTRlCz5XDY3yVpyzXjtihqNOqHuoFOFOkdc2IK67RyAFCFMk4xgv5LK8O+E24anF92Th0DOqOI4tgw03JLWjxh70/Mq2rhRvzYO574QtiO2uCdU87aLrKIp3ofzUbv9wa+rCNPX4kGiFOshuh+T6L1hrjMDXKMugjyB5jZ+m+r0leszMzMTWfVIqO9c4bxT1sAOsRFv3P5VhbnLAemzvdibmnpqfyadxReG1ScgEJNSwtZErty/QAFtnZbJlURslLJZXnZRbKs9ROdFcnTWdyafg2qDXO4qMa+dvhly/3cisEQvPHxjcvLOfEJ8H9HO3yOdKKvWZmZmZmZmFJJqRTZhoDYpo6V+DsBUTmhJRheqpzB0NBF4yQpYZA210xXv008M3aCuXayJGbA9+D0Wz/LVM6LaMiyxnpWkvgqvWpYS4Xu8GpWR8+U0D3n5jhfPy96u29aDznlHLEgHLEspaBFnjl2WzNKqbT8XHscmrCaezVSIy3zJU3c7AwCipL24Jy6ahnx7prWnZXJ+0iQYAI71PfIl2q1THATMNQuhF9hnvvhoUT+iljyStOkaKInMyWt6tGOw+Bs4weK7ygK/riSyyby9GB6UBy0mhuGp6Fd+wdqD5bsCS8YqZRioLZ0DvA5PsbQbeL9n4G2TXtJ+2Ry18sCSgq4/0Dyvcza54v21cGaRx+tWlAB5XIF99vW2J3d3QglAsTcTOKD89mdeKE8FLwOXj7oCmIXgmeEYQuns0WVp2J5P3j0tFUqDn3WHEFtxOQUyIoO7hldJu5AnJl/zvQHOqHfmtOf6VOyXXydV3vqzE0qjXK0jeg9HyMTkOQnZsUCYaLxGMGFzoUJqETdX5te4b89+V9uOYiYTdA5jxajoKyDxcaXR5sqfJGYlLtku3ZgRGIujSRcD7r0ufhTIyUzbVaU+i3gQZza3mO2fzq+BMq+lSFKHYnJ0mW5EraOjYlWDwK1lLOLaCaWa9YNhXBlCR9YVSNMHbwX6tuNv83v+Xl4omP9jr6Sp1KMWI28qC33IeyeW/YriO8VNi3SzfLAvkpKKwB+OpL4myUBC4i1ANaeJ5PMU2JgUeYuuC/t7tCJDD3TYGJkUt5IvZZweQnoyzEWt4M2nN9ERljNEC+kqwVzSO2ngt1BtI6N2mzfR1gagbz/j0Tj7BQcuNBfjzQKo4T6E4JF0rnz4BCfmDcgwuAP8iyUlvYm2hgbgWPixZ04TqrxJxPvAZR6CbEQAQNv73v9txR5tU9xjiv3vD3yr4pPemzLukcJ0Oq+FyoF5MGET4zgrUBSCEkHXcoX1gNliNpA4DtRvUFngOGQ6xoTpFbWFiWQVzsHzqpCFmcbSkIcmMv63mz8GIWHALNIQXmdPxjFGQILPO4DnSTzQt6i1SFaiBjjBEaZQ7cPn7tu+mwF1lD2eoYWvTMmcunUN8wIBITN4AuH1+JyOdWRjHW0DAs4xiVU8CgUerxuuue27/ojqw4LTiSX9GwHQNVwQeIK4GH/19QatOkaLV6UaG6n3ILrSmSaDkqzvUWWd00AadI0Wsq2c8o5Ynd3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3Q1K6u+ZGi1ekr1mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYAAPwfyiAAAAAAAAAAAAAAAAAhwxr4A6V6B6YqZyCTl49vYr76aWVM8T7vO89Ni1/iUB9a3u7QOjhbaIyrKAAAAAAAAAAAAAAAAAAAAAJ77K8EUACrzae7AgiOiP7rJszxycsDhLlkRlifEQnjkI7e/zBGQvqry4WzAgF5YePfVgAAAAy8HnlYEcBA88Fad690NP8i+g5dWezAR12kgnbUG8carR8nq40I7sRhoF4HDjatpCoULyDo3gTA/Hjf41ZaT1nFmhUaD9WRselLMzOWo2g8cJDPBKFdk57mCWRZ//0bz6uIP14qAzpe+TE1sjU61FygZmSyEk2vG17/186WPnPLzbe7ukWIGEWv+hpfwWjt9AZqcdWUZYIHTdUCAbjp4Okc3jlxfxwtOw+0sfZi+FaaXqAAAVma2bg/dMBosJ6m3G0QQ51opJieQz6g0kn9I3gkhT0PY1/IvR1v+jLNsEMYEiqEgYypk1Qhpyhy5OlvOQKHMIBE+4kF44FnldDinAzY6CO6bwoVrDGR9J0TsuJA3Xt7XZWYXGARFCiSoOVD3uK1p6UM1wbd+T5r+Vt5Gqn3EltGvi9UN8YiYrtJFhEfCKTgq4Z+ZkD2VTEl4ogRfUvnKeWrmtz1gUzMKisjVVzjzkguCpbJl5ZOmOX+EkfmLlgAAERrtKMixqfzVaDsn6fsOFTZLKFxxKdMi24hG+v3Nri6wy63sLoKaOPqgT/KNN8o8iTp1Y+R/g0hhdG+g0bvy5GpjtWOyyRdkEh9ZYwnzAJPiPeMGwjxcUMpSTnc0iZ1RTLYKSTUy6PrYsR5Y2GUNvQZMMA4KNCAHGa6F86i3Vz1KmBuzIiGrypoEaEO1fSf5ttZUGkTU28EFqBRfnbg+LJW+v+rurA2tUr2VIb6TcwIsvUHchqxuiz3dpQcHIkori4aW+MqZOCHpg0dhTwH8wYGk7HTTWSJ80KP9EedfpFy2X6pJvMTfe00HLcNmG74i3dlLYmTjMKbRmrTufeOQAGte3thrxE99deE0lD5WL+/OMljI4+Cx02W0fQ9gqQtDZJtccUq62YS8+G0BvgkhVqK91heZOWX+Izm1T7je65uY1DSil9yuQ45x6n3SOCI8k4q0vLHxC1kqM/zJy6pSMBI6Pm7NDZiG0RnGXNSr/NHfKqP7udnjUTgmowJAeXo8pxENKsuG5C1K/ATqSj73rbv+7YGpbeLTs7U2oLnbqEgrLQ72c66OU7P71K3rHatxoMW70lFN7Q07kTxwMUbNq3q1cYYi7yskPAchIG8IS+WHgBo34n+DEpqiTXDaUH9ECBt3axvLHLFgg3RLFUckQO5AIBE5wlsroFgpwxqYR3UBa/QZatqfsNEkn1dhcpbwSdGQCYe+yoZQiH7YTSYcguoAXlXq9mcrKoreQmYc+3DdEKprAXp+vMzp7m17wbppZsyWT+vRaiEHzvDEsxWZIg3WU+5X85dj5DbhdP2QP57YN3S1b7z5PlNI2+6CZsHNin3KuiBkggTEVBH+w0he6v+FNzYoT0w2tmMbrtBdjQmiCK9qNkYB+KOAKqClJItCJP8sRKj6J4nEsjsvbwMchuhBkeeFe0964rzEmfN/1EBrdvNc6SthDaKGyHXMpkkRG6fvw7EHReYKYtBtQJ7tLBh6UKNtZ/o4sxiegND9W7d/P6j5P/Jr1auRJXdT3Kjamq0By9LBjDR0ZRuco60IWgfCBTELPV/CCx6g0RYFlIRXF5HUOE8XrBnXMBGm9Ccg2wkCixRPLK7//iIreWHGjKHBb0UBI9vRNf32FSITHmbpRTEOhDY39ZAJJr5zAsZpe604mLJlzQwAgG4F5i/1fOUYRWnpwz66mU6AxtQPE3VbrLAWOuepTp12lduHmRuPc1TdgohU8oNYjaByRC4bBIDMLWU1N/NfBQS7a3870BLDzZ04ABmPHueJtzmvycemaswRFdxGYuIpRyZDG5NCxfH+7K3eGKEV5UaITnbCTdByQ8quZCxub46y/wsv9yfdfIa4MkVskh5+eEnV1CDzit1g3urT9N/F/kYGbSvQ6G20aniJ4ODivf7pw1kaJLf4Y5YvmjbhnSPELWSpXNSgkC8C7HKyWsQwN4gr1hHu/Ko8ibdx+Z3NrI4nMts47MXT0Kb+zQ5Nfb/+rnXi2FS/6xYaA8I8d4IP1vq2eJCbJr+WvAFv5bzaEYr/NERhpyEWfL4wS1EQ81pD9VmVRnFMmmekVRBJl+vAaZUUD1dDO5rRDkEQ80fOV4LZD9uiFB9sLtqSg5qiEo8nmLG/Tm6PA7/nC7VAl9X5F/v1F7HJtJcDQQTfdFx9dYdVPR718wOCjl22Jh7RGRzF/IS2j3F6qVOeIdrcmEGwlK0gBwnhkB/RJvVcK8/in97wapuJm9IR594jk1VAfEw04/+4HQg2+lmZjYYrXapZ06Bwht0cbcSoGfx3DLirUGgwFuWV/clg9W9SgozkEBta0RIAAm4yUWSnC0KKkiZZslhThwDGx3Kzo4XwnIBa8qdWE76+DKxwjFEMZ/Y35AA8kz7sBmoOCsdaZVXfmMAns9BawmgvmilZ7AWKcFGBEmyepcq29GFG+y0KinUiLjFXFywFLvzrsGaVgySxRQpAyw+iItJkXbNu7xe3/I4SNxEqj08PgOCTjCSSKsYEYt+CwOd94OsDidw4op4p1+O7k6/jHZq8BOrGdW6vpxJx1Dy66eUTWRd8UjyNPb18MnJ0FWpTTPte0oZBhoaFBWl5QlCAmu//+yPfTSyq5jw76YfsZzd5HxIcC2g3F7uBum45IPNyaoh87pojXAKapvw9KCeFUA9oMLdPyNyf/09EGcdNtwt6JlBwCCNzUlrgquMsQyOlepmLtO2JrZaxYiX7LVv5T21W1m0FG8HgjVKuF79DtrXtdiQqSQJ+QgiVq1FpRJopQla2elzUCzuxcilVG7lxrw8toB1e6SU9Z8znuCIBze4AJsBwoi2x3u20V0WGY+ZbMfMejEcMcCYkcv0z70nTl3IKZ+1p8UIlsoDK/hItwijroQaw+ARE6aLbRGHGogaVTX8tMWQFzdEAiZy1i9TN+G/VhRig98WeYeTcT3zLJmHM2bOr0SvzfMvUiXOuOUO4t66Lb8I/DI3fUI2cNm45OgsFjPmvwhq6aNqEXtI2OoXjAte2lGznJ4u8O749TsUct/YdYH2gEIPmWhKFeNdG3aXc5hJKBa2GHzHRFXwomXRIwBt0T15uNLVWtUQB1fmBY7ylNvc6w7oOVu4LQorBzAzDxwCD0ehl4fym9HbN8p4dmavyHrCp0KmYqOClFjMF9SXUv+C+RRrwzIdtaCB4IwiL5zjplE1KDPdxoeTyFSk7goAz+BtP6HNlH895ph2X2W484BfJ5Vx2Yfh89YFRDMhtS+c9Y5xbKZ0+bOYkj30Y2LbnFkO262r+g/uy8WrqQWIiVbheit7dKjcfTZAjcazuRQp5X+nD1ysmc+adUqbiTf/XzHv24h189/EUkF2LBSi9MezlN7e//zo9/fsidPFbdku63GZohJNxtCSoQUHOP473pdzy+hOBJDp7eEV3m4ruy8xx0nRaC4uXzddSmxa7d002wyBe6PbO2qEgR/UsbHqqeHK2dbgFfDZB8yE0NbVjxMZL2Uq8rv1M7A0AYr4D8ljGDNccZwKxGR55qmL6SbgT5klcMpmvvy9tATNnVzlm/sG1PAYlAfbEB59uvbFW8IyNucS2sjHhR5uGYH9llEiQPg6jSrNBrBNqws3KJCr63jz0svElXTptiJMxV82P9WZu4kD63copxiSng07JgYfYbMtocjo8viT+Nfz6ENW63aDjk+miEkZDSzKg8YzUi1bGPMOupp72VT//cdXu5MNMvKVr+Q1qUo3XVs2Lf99v3O99CN0iC9t0fvkjL8RYk0dDQfU0bpVMb7NcmEh0OVu7p5n69ETOaAK0c3DvP1j6dRVg4b8/GTLrrafGHEjaS6mHjlK6JTRqp5W35QsFMCIWI+PqDm4auLeWJ8cFixIW7jL624kj8QAax4jhff7dE/ZjUFWK9s+RnCptf32Z/t+S48kJTab8J3PrPqof0NgudhBMwIXFKUQtrpKhGo/0YAeYVh5JCgy2MyOI1f5Ar/NCM4+Dt/oChio2jdD8AwzZR5eqjr5jS1yTLsYoVD/fZzy0KuArMnjnRIG3SB2C45yL+OBJbEnrkdcE8zuaW8ww0HeSCwo/p5DqrT/Cf3Lo+ysy1cNHKEPjpSXzJfntakGnafhbVsiLos24SimFmhuAxJ8kzwVvyRGplXsvB6mce5kNwJP9LFsX1K+cu7slhsPDZr9K+5+SGfW/58uLta7mulpvBpinbTvFkKCOLgVCXBMFRA6qyBwxGWuLf4D304YcStkGCAd0p4M0YovoExjmPDuRp+3KIrDPyv2chhTQeVw3rd1zHqmLIFgGo6XKHW+i+xYVrftmE57xe4bzvsPD+Mk2IyWAGIvmgS9tn//svHQ2nYcsW5aYvSPBWcxkmmxSJ+/mNd15ZOK/qC1YYDncedD4PwVWb+HuxfNCPPZLrnfqLTHIGyH3oQ7fyA+q2JUs7DvGMyoFq2JLFTBX7g5/kX+UAnQnPp34UmoEFoGszKz457ljf8AFAIojOUnmmUXq9czWCRtv46pgi7jyAvWTlz0bqimlF3mSMlfOfN+g6uTbwPNwCvRqiXEAFXIuprbnIg9RD2/SUH/eEFqSYz9iBIBSOTmOw0uX2aKgcCe43ybSZqb2Om28xp4jPS+DjUkUNpysYwhlQyL0+8B8dyuQCe4xPrQP17sHqEs0nG+8oDx031MZaFmVwPth7NfgLapq4o8pHg1FOa+TewKuhxIZhtrbYybMOoVEP9NOm/z7KCQMU1prfdUdkrYvnfvpAHeL2nAu8j8gCRf1fyPlbdbKdz9LETwKH6lREWgCd3jVIIwD2mWQHh1snUMQruc8onyswl982TgJWSDRbcjvWts44JmqUyNAMTxUfJ5CUaL+L3UuzqVtrLrqSO1PxIf2zZ4cTT+ObERVNhvA3dLPLtEKe3j+0CO38l2M7SqNJEWADm0fsI8yI5/pl24avbCgP75hY8AHvmrkQPiPd5RAnS4XHg88BBB9aQ284z1wsfBug6g35hMRmhwZMxl2eZCfLfGOuESquJil0PcM5Uajfi41979i+IBvz7qQY2eY8A4W+zzsTA1az80gg3Fy+psXVcLWubVLNiqP/AiIbKMYvNLur6dB/bOOh1+bojp0UxuM1yrU6ct9czT6NcVU6g0Astr1Ja5uewxqk3ACocgi7YWFLNBCyp+q/xMcFCEHa76EHGykpEm8c3ghOdgxftY5VeUVbySu85BmUDoLRNk5L49wrC4Szc0FAaJwMxrnyWuVp6xUZFIlRxEWRNjbiGnndsxmi/9bf2/4738HEt/DJzwJlVT2Lq6+OCKtAJdzK8wYPJQvnvkZxEAOaFFYK5aPU4YziaB6z0iFI2N1ncZJ1TSqWN4B0euwu1feT9UZt1OVm+MsDBJs5WvDbBhnU10nuECfqUSJdTmnmFvJ2dI+MtVd7bOzItd4hC0ScML2uSnQxXMzM78Jq2jFk3kBzpof4P7uDGpLcZwOSTqN6vrRaodoyE+bjakiX+RL5WtU8h9Xl7pbpEp0VL9X63C1mOjylyALvDIkm7xPvPW//1MpVoPq+QMmFyEnmGkZ3RHPjr6OsHVNDiD2ak2g0fYz1dqVJ6Ygourx4xjCKuM2Wwl5FVM8Irw5gvxH2lA6Gydahx7ghCXljibur/0JLFo5FwuZL9ouhBd1VMI6ypSXqoqkUvSz+009UQwDmJfI7Pcw4SJlVZ6cQ711Iwpbhkss7Yak3ZoNVSaSIRALXDeiMwHz7zGrJBa95h9EmIbMe0F/vzkZrYmQbGmvIUNQUDuu91JAkFpnx/vc+q2CYKP7BWcq710kOouwILEz0BYhUL+1dBjYZZ8U6Fpu9ksVZdGgQhlWnq4ICw6btAy8HQMCN20pk7wEcz7i+ysBwrgT34p9RU82K2C5g7gtKzZfSeI4z9PllkrK4acwe+nz0f2Y++rWZdfKKRmGfPJ8rBEGuPb2vgXa++RXc23HMP/5VlFDykD7BfFpcQ+gmSzNhGYS1/FHELWj+rfQdZHUh4x3TgHEx8uUPDhMA/IxjmR0SiVZovk/btgw5LL7X55Mm1IRnrjvNlTpDr+rme/0bYl4FxiR6/QFaSvqH65ixd7DcLEvwjs7ccujAxUKJERPRHi+rx6C/VdPDR0Qhi4LzOS19C89NtW5FLHAzi4BinGkshN1+upuO1pYZRFBobAmLQ+qb4cScC56OVoCfGDaQCBw5LEl+ai4LspyclXL8Mr0MF7wmulWvx2NxCZ69N/RRGJ1j2DqYbnLV5hfGOI36vMZdGEv/9llQ1a9Avd5eu9lO0ADHXq0C/fCM/TNkmYELo7Vd4nhtOfSGHJFvSVCAkgbDDSXhUR+f1utrh68k8XJk+fDPbkn7GaymUC7ymp/iJD76qhm6HS2AsS1CQUnsCssypMG8PAFUBgZP3T/OdIKCyl5O2XwzUDm3+8AjR3eXN04olHoui0Yg1kwI/QJJyGNMpMEIk1lTU+qGjrF01PidbBfO/AD+47cbeTzgLZzohC1zdZ0PSNQ1KzmJgo3kK+Eif6xJEru1MtTPiRVOhC5s+4On2DWMe7Znf18k1JCaPWyDJvpGqbKMLZE+YChVLxMXiDAZI2UlVlwaujkyy4tz9Ao8L0zc3Kjoark1tW8BdjrJrbACM/x8XWVxtmBOaAZClm8/aa9r1EKMWn5VeatILb8Ta3MRGwAbYbjcTleNGylFDvPikaWtEftE262DGMpJXZc525sk+4h2NrI6DGEaugcaEW1c7wRlDHvpgATFW+NGcS/btuBrMAtT48LL434GVDEZFcm+jykcPXp6TKxGt8ovXXgYC5hdwRl4H0cJOxDBulvye4pa8RqJHOiiLLtNbhtQGqlpw4NF37AkunEsNZBBzBvHDo/Wlb/qeXXwxlPDmu7fEBHz0FzYKD+vZwYNA9BkLnxfCzmwKoyEJgzVhxrfoWmbVFBR2lRdXf0h8zz/yJz9KRvOIwEt7neD8SxRQz9neGOY2wor7mfkuX29KC1/3M6sRfw4C2VcJrhJ4fU4d9uOkuYa/2i/IwKqmeSIGxnigbAY9kA+NnIMQkCuup27gBMb76QXdMgg45Hv4vK6YIjrCg6AoGHy0xmMWMU0Zg5o/ME0+chHJY4M44zHHcMWMBpOw5SPEUR697H4z6zC27mrls9aHnLSBNihFDqsiPoo51Tu8vaLjolgJPBCjpqIdOMgk913c2t/ZruTGmlsdAUHFIgBNo/JRQoJjgxLUg0miBMQN0HNxkXi+cb2M5BdCJ0+CqtqPoJdyhAUnvSGeJ7zTc/ZjCbOwfnH8vNI2w0rHcxH8+fUsEe0fcIuj8OOMk5n3wVlAAA6m6BVqqWIm1iE+/stpRofLRUkz/r2p8itcVdNK/6scg6bAnm+zOHEzvjzMeFMh5ARYvdPEHXg1TdiKOx4XUHcQUN5f+Ww1DYS7clJZIu8beDiqTYz50s5WTgf1cj8jRC1O6lgIX/hlY4BnI1oXqeJx8Pzuv55oWqzUBQtxydz/bBYloMGGDK3HYs4I9BqWvAUnar2elnqXm6nn4txIHbDxqenct14xIa7O0JTMmBdCAhiPp2bkbZIRS9sSWdSkcIzrqZ+7h2dx44VYMGRP3EKuhdqpkkySPzUFGFnfJKYN2+0JEIJZTOAVe6dLfMLHxR1V6XmnL3fRch388QvBrjCFu6JnwUtNH238qie29HXwo/kIcQGmqJfQqDLsbtoTTe1FjgHfc76bUfVjxBqgrnFDiMqhDLnUXhDbBK7tVmYXNSwpu5A0x5Km9G5/HwlIG7NJmOXz/My3aaeTF0mxc5mPNaLR6MFFsVgdBirdZKdY0u0vVjawJUjXWUEQnCKLn0I3IfAz9i2cx97zR4ZkFxty0OshkqicHtp8uNM8w6+UmZZ6ErfmpPBsmTayE1XaT4CQu2fs7W4aiGgsF3zjPoftgpUkPgNvc9HRBqzmUNfZhaA0UC+nZaqSkcTK8WJnE1nUwRR8fWf+s9vZzLEt0KSKGKiIJpf75BfVxHrzvXGttXRtbOXJaVVFLOtwWhbvLGNLa3KMLOyRQqyLsXzeYYF/k51soI/ZwECJLcOp2pMpT+Nba8jJr28s6Ux8B3iTkkXOdQ6N9O5B+bBiZcvYu9RdFhG+J4boiOHwfpT3Cy3zs/ngYZd/GFFapQfAwrAwT9JC2c5Z5N4IXsie+Zy0Vs8/Pvmdo2g/ibABhkFkjweJ8kX32COb/CT9BIwh0zbcQOFSAXkDVbqIngKYxyFWiivuOOlbnwX6yb5Ie71j2OuHZt3BeOko+dqjXUygVNZtrbkvjIE9ded+cdL/gfz3qB/Zl+fMz/jF1GGhjPRFYSBopTGmOtql0StXhHdC9zLTmUsjVuaJtsUTlVzaH7unYxr5p64ANLvCPwN2FVcJhNej7KcTpIsZ1+JE83pj7z47YIGJKV5inQlKKqTYxMJGZh/wlsuaAAbAxUp9vsYDQrzyd5hWy/6nxE7EdWgqFnTPwaEVZ09IGNwlDVxgQ/V2jDz+B8c/Gg5BtbdumQ6fme1j75NPL1vUlEawy2k+mTl3GdSl3JIlWCW3JuKFGftReiqLnKJYY8ZEwDB/b1kmaMhid63klpddK5a04syIr3fV4woHmF9v5c2cL4zZw/Uog0crBK7ZshnLjQnjB7lVBpoFje6JoXY5/vrbD/hhlF3ASTO7cu2jrPAJGJ/CDiUy0AzBjzl159Y9b4DzJ5Wt3Igujtq480zo54LPR+bbnUj3WIzoYckbkerqfQdEmQt2iOqkqeStW7Cv0BIjPsDrcuPs9eLi2lB8+eObqDXCkgiE5VNegdnN/i4t7yD8AkT/dhX6XNu2yN2QlnEvAit1aG5dyq3QwC4dlSTA2bh9eTo/9tvUlhQBxCeaegICouJ5lJC4KMdsTa6jucTjVjS76o4ghIA7jd8nUYyLVjfP2Aq6jQtUMhDCBu9Uu8Z3QVNSnIAAHEtUD1DF3sHSIccdz/WsOXEbm57ISyhpjzrbV+m4zp6XOSD+tEMI8jz1TXiufwGthmaXNzvLTslRJ1ARZetVfXTD4jdummPu/qVv2XGofEj1s5Ghvc1LewUEfr2cNGmZiRORbV5PwSpBnv1UT+D6WGiR8fcxzJiMiaTpnzXcEfLgM7UZlLduEL7w7EfeUXDziproD44hb9a0GxKZjL609qwFg/OUc60sA5FaltkUbGRJGxus3ZEL4xUGxDKZoVRLTFbpISqHZICOp2InSSuN521hWdBR723JmOY3ga13WGdP5SE8B+9tgdSrhrc1Zy7QM/WMvzSdqZ6FCq2UoToKuoCBKU+Px6j6H6Pvx11ZkMAdfsa2bvPgHofiNBbEYRNRMvtI7UGh8jMF5nAu6gMJ9vrkSdtHZ0+WpDHRjjIiuYpVsnE2qA/448YU84j3HOb83/5BEXfeyIA+ur/qklVuta1uIPBwAinf+4HUK56vubxlYsvP3e2p7fs/Jwnx0GImnKl0jcLTDNYNg2MWKSxH4WAxSY46dYBYACBTjwaMm4tDgOIqhtoEEUE1kzc7n7+Pxt5nMjqpUwbrsypN/oYipbsjqLWuveCG+sh8gF0EobcLaS7G1ZNEpdbkEjulCnU+Rk7H0YmQAAXg2hMx3rZFo7tdlGKmdWZ8FDLPKFFtYi3DYksGf+JTaaJI70yBePT1d/R0ZGlc0uFrGyAdKRvz2Z4/24sA8gNYVPhzwFjVwMENMUucSFW/OmiTnNdYdqeGwkRwYfrhXrKFWUcKkkJyNaO1VObe34h6eOJRQh6C+oas7uIrckeOmGPwpySOrXYCYzKB2N/PxNernhvrDkrmtW5BfGpUgJsm2evri9+Koa3YJGmmPBgj6dTAt3gfGR0qRatDPc51ujBq+HyhbYg7Q3bLs0NtMGqohl/oZZA7ZP02p3hyJPtjqmfjFuzeys/kL65qGB0mKfxDyKX8X4W9PzJc/4t2+a8ePzFUBPWn2aG5L/lTqEQ98sDzqTjEkQQku4Hn0aP/xTNwSI8A7mrLS0S6If+SaV3HPN5LfUnHdCTSzbk0/4quRBqWp979D73MYKFocR7TAhtXdI0UoT+711a5YyLq3o5IODQJViropFDpBI407O7Q4+pMlhRiUzqXVoW/M8KFvWmt/JAq1hCBgpQ2dAdgTVUPHJzOb25185mHv3+zaRfBAY3G3qjTJwNBc/jCN2/0wBqIKoOwKbuihJeBdgPFzBqsZDGrADlbSCwOdO3PwfF0Adk6WeZp3F1vF7QWP9pgbIvirnGY18kRNx31CXgQu+KjgTaReT7XT+qTIJxWjjJXAb7lxKg9HwZhdBkIHVwUM63nnk0EACMNlPWGdNgldSu1azlXGO0Hy/Hd/i+NUdw8Qw8FcDBMR7pSgzcvMYEAKE3VjAyfjMPfILWLyuixxHoqTsmMVtp8X4q+2Cz1hHZz1UYtaQERTg9PvTVePOO1kc3LpGJa4n+EvQICWIX7SaM88CWYmZoJugaum/5gcl/gdUTEw6fiWI5VZCU/oVUxbK3KtZiwNGxtwOMTk94JckFa/kiAgnd3Yx8lxXKqZAYgkQlAOBnA4JT6jDH1bWhecZYz9eoRIN4m9f5KWbmdWteNlPyv+7D52v1PUVcDhB9yKv3TMF7ZERamyedPZYfUOnlL6GWAMIn8v2EnO81rCwtGsREnG1yq3+Iir1n6J7HXAbNT4SVjoNeL1OH99hDCcbyM36JbC55lNZ0ShTsRlo6b/UU9KBGCzLTyBAccCQgH3StDJTrJD8ZlzS5G8h0AK0V8xtBDOSI9ZdCmOEyRTzCHBvtaESx3s0gORvYueRaYYAGVtD70rzxfcqU9l3Sr5AJW9f0kEv6gk17HEqmcvIKXnIcy/rEi+2znWYAnuR48IvhspZrzb7qDJMKGJbI9z2Q1VbLMMQ8EKOgwzWrqqIwKsr5ndV3eq1xmqDvhijYgUWxlMhMkw96axsp6ueAfLtZPmtfoInHru+k9zhqSwcuV7Gx7rwspgNEUftdykpyuHbxa1+o+jVrqukh/J6gOs5x/OSFHR2pD1VCh1XacIqTm5vu2E1IMiJaPNdIK5Q27RiHUCAvXO605ShAwJ2ODCPX+joZ7wTvkC14WuWZ9qy4CkYttNXET2X24NBXLBIVbyGuTGrfCzzscaZb1nzO9OxbQCnKGcxJv9QtU+h38JmDkAbJ5hNjJXkru2UoRpgOFF9DujhlKo+GngSTGwt2AdbMXbm52Uno/gVFR4U/SyxFqTvjh7+JC/hoe5xbalopZkmZ9VntTJC2ztnrp+loGLzWaA9UBYwMYKGsMFSSUTpzvCe+Lb6oytA7We0Dqv6km0w7gqHXQLzZSX6rvhseFrDpVOSHrASXe39OlqDv/1oRTIAuU2SWwMw1nloxIOA4+Otnt6562Dw4tuXAiBrtR3GzHYV4ctWeFrP3mRK8PENbeXIzJV9RSkFvQjpix9Pkiimy5OEuL22fZu13T6dSRb4a+do1C8ZFS2jZWSNEjR4nDHDDiIjbFN79I5O0y4uJzYPp4TSRlAPimLR9GTFJKA5gHZrVIDGmy1DQxxwikGXcjySvfmMT1r193BdRfpjCo3v4iGnLKyjQK0pLqLd4sqDX92/giA1Io2WwCQu6NTEoyf+fYnzQSbcxrBpBuwLA22D4BoWP1Y21L7zjMN06HJ/UELvfmcIkayK+RS1wODBtFkRYS9WgAfi3e5P59ZkEl8q/870aH+/7sfUuqrDURXAw92nk9cMuXvTCBcOWqlBHT2yMC46x7hwH819m0O8W1G/8wrH70RrqNK/Sa3WJNccFDXMBvEYv/bzCELkKnLxAlD4RvWZNylXZqRoLlANu+O2KGZIGz8xvbpO4c81uX7mIkItbMtsga9wtd7Uok2L3sGYTpsxMX1HqCVCMJXvR3kzptm5wDL6o2XqsAgVHY5UMtk0DID61U24D/etGC0MOW0MmNECxyUw29Iq805qoFifzlwVw4BxyWIsyR5cXVTB+KZcb7JOsTBuNnN+vGgJ/AOse5kTEIYnPDRQjDPCTXg+XmesrXSdkOjVIOsqUiEiOnVqzvj/QncRdFWUNaoWPbPbt1ymNbT/oZ6NCQNwHES5rs67dLXtpiLSr0v8u0HkEUF4tPaTWvefqm1w6tQLQ4O0lwZ/af3g5cBpBRONyN619ipLCskdN20fZCt0jhkT9vi8YqKCoyVbSWd3eLlAsU8c4vQF5DvHtxte9+SAlq0oZHbArqSldorwQgbMZmoJaQZy1sUx7XENvCwMxdf7WSxV8E4Y/fT5YwagMlnMlmx0yoXyd0SzOG/8+hq0Uc16t4WLLG5hpJe7SLVriSkSxVvQzu8YU03btoSbFZQIpCz+mr8ARS/3KC1/8u3Bx5h5Bglkd+Ob8Sw4+m7m6Gj0ZjB9aUqYHV5+e8VrT/DXwdKPHAmlKayIkrSo30srrkXrR2ch0I8pszlv9bOlaRSbK0a+FSn+z3lc1WpVVV5pW1V++yw5S4/zpXVO/m1rtYDe9q6oZD+dxIbyNz0GuE+fkY5x1wSEid6Zzc++F6mceU6ha2c2sNAJqtbvBxkfI0E35sMpcijFVdb23J0HXc7Lmy2mqna8Ci+6meweQTswMT3hooLsClvg6TwOSqrdLlqVw8H198L11d1b8hlzmY0fUXnxxJqhtOy6/zg/Xa0fRDUbuGxlzUKYdCzf56rlD0Stq5KZhCApjdVoTmnMSOpqZZbiM3fh12w1Sc2Cmlx++qopKrVR6Bi9Zokj7posQcwvIHJIqK3Qb1pA00xsdzaPRa06WCLXTJLYbFQ4j2q4LWJSb9e4XZdJYBWQhPNFDBkljE+313kwBd1lRSezDb65PHNiP4c9pprh0+niCFibuO9hmP6gUeFqSfK/jlHxgMQEqN06XdtrvX0O3zAuoPgZ/MYv9e8iKCrETbh5xQfcOjTN2jAffmS7yZuiSEGshCdNX4pvgTHhwwKKgvGGgTb7KEaK2RA9paAOzvC+xj+5uy+TkWSHAXMKzksSy1em5qMt4StUQ/qq/+G4QAWxNfkVdwnVndtTc0v1DSFhpjpTiXf+AsXpuN4MkJfk/qA2U7Ss+/JAbCrwWcU/VGARNLCQmxQQHdmX9NRTONIg2AhUnGd2sKaTyPqrBmcn9WFXDheWU1JzkBYgmpkO2IZkyQ4tWkvcO47nJ3Hx2Q5rKvyS3Id4zO0x4cImH1kbyeOwhhxJtRfSYwn+pDU0g0mDDVM/YspgiphP48dpxapa92pLMhKChkIBwCKaIpktZCHy17+fzUwE8cv4GQPYbU/vwQG/QLdU27MyRGHtdwqLSBq1YTL9pmEPzW93vK8cUQKuilqb2otgUurIDdj3cnQcA+dR3R+4CBgB/YGmdhi7QU1Ar1TBG2dWUE9Cxi0Qr1K5IDe73kaX2HC1tNVYQWJ4b1tBrqjO1nAKSleZKx9GQk4/vwexqN6imBs9uF0aIM+2+nM9zg5+sdoVPDqu0wdMGybpxC574SuaODfIAM5LziiTz65ptpKbJ27EGrsYkqBlQWycVF8yab+8XAQ8egbji123BhytHYD7vywcDzVBcU3ltOSVKv6lqRpa2NdquZZPdCBTfqnoHz2d+uCM+TnAEHCAZwfddO7TPjTpmCskrbz1Q8tmh0uDSf/xiZR52nou/6hi0vUMVjw0N7pY/FTOUjt12wvl0TwbQJ5jnUCMBM4L3CZ+jPDMpXwYcKw10lvYsFSPnHeQkxJB3E5/t6bSDz/pS/Crrcgch4U6G6PC2OZCYnimJ7UjxpvR4RjS92vH13pYnhJ1brDhzx8S5FzGC35BH8NTJfjst9Lbpl6T59YE5Gl3KJ5x8cCLv0cNLa1b8x6kM0122T6smKzi3lq0nU0niYQ3SoJ0k/YjcTGyEvmBnXnKV2JzuxofhBYC7rQS8o5dynTWRbogysvMz0L+vWskxfUp7So+q6beVUMEIH6HzFZy8j2yxpZkiyvTpqlBOqtB9S356SJ6BPVIC7VGn4Lt54vVOSFhG7HV6CuMvUbe/Z/iFpZ6mlbb/XRIlmfKqIFWq9Zi3LKYFCBhMtDIWrzX6bbumD2zl7xwU3DICmp6fimcDPsZ4aQ+cvWrr33hw301Y7fA/H87+JhmjmgiosXf4hS04uizFmYKdwVclFvladqPl/77iGp0u5rVBQr+4Zgy2QLD7zqYblo+il2R3aDpUYIj4Q02omk/a9KjHA2U8QzRE9C4HfbF28I/xKO2VxbHE2U4oPAdEtbvhmtrGoZ59b4E9UKjHizH6YKVMFNxJe4XfEMcGjFLEwN7EOjHOaWTfbUeWa/SeS229j8K4ANhCc6T5Aee2gtW7baiRykbDTTbXOrx/VVeRkwj0+/PVRLxSdkXWGwWFg8NANB9I316fguye0ys5jPzsKEOpC0R5lDQIe53Y/z/1PjnaCE4QhhaOpPjYkLjYbSTgCqOhkMhEEafXLXUW9yrsWv1rJdU7tYXgXtCVe3varkTLDveNPUi2xeCKGB5aymURDLRx6+4FE1gB8/D3cLAWc1ZvIbM1SPD1tDYjbkn8dHiHP5SvVVKROMEHua56WTUeogNT2LnlUUj3FLSWHJlkAk1Q+8CCnK07yOfykkUlZxFhxXg7mRnceVBFbq0cLXklnatZBGMtELiPJqJHhaWBJd1EJhYHgL5mSALFpu5kAkgwm3M4oZy0hKLlxtZi/MbVz7Ak5Cd6UqGb+7ZaEhRYElGIZlOS6L8/b3mDujxwK7PwHgXmcoobVPgzQLjXnGWGmB9j/RdDKKLoP6xcsDTt0ZoT+fQx00FTee+9WztH2SXk5fuAPZmX7ShCF1uJpr0ry7LnLUUBBXVCEg4TtG+ULamzeBusdUnjxmcvLA2cOk/djl8+Jumc6RakoU761J+Gkq610qz62wBUlNiOq1Eofk4TZ9KlkM7XkKMMQs/3EyXxSJYSetydgmiBgsGCj9wobtHRhQNUDIrWPVnbvmgySPKp80suSqDv6buM67AYTIAJ//7ftKx+zfFjuGXMSoPL79xWLvD4ReDID09XFh3ZIp0L4yF0O7OE8JKowAz/zdsl8hfTlxXAhI5acW0PN1WXfhEcmdVt4YlFjFH65cgIBJ2rTZKUxRvLOXpeYeuUOThFTRYplJ0iZ+8LUhpC2RDQrcAWBbT670I7Ubwwwddn99OiBimhYL0tIxjehw0Zf9wCTR7iYY5WNySbrOMN2jEb+hQoB47L8z/OLyt0G9M0XYukX/Hv++Jdsr8VccQoRoT68cN0gep7MSV2zu4gJvwNBMpyqGyx/a0jewGlqNLrhTjQJ1p9VNcruLA8dddXTqsSk4OYVZgonH+3dqMuux+xAp4QRti0WAewdYbaQNKP0ayBhybajYd0gocXW0e0TFifSjY70En+erhpEU4ZObQMrqlQBbmFQhFapz9Fs/Oys7VpktmCqPQThxQGUyIiJru5FjpHx+fAp3DmnDNkXUcLB8sjCna+8q9HQyIclig44K0MiQOLmnwbZgg3jqGUN7Ob3wr+6w0ARl9G7Ul/0Mrt/tJu1vGwVYsNC06+yUzJiEG3bsrOabdwQyAypd4XYtxC4LHob99IaLcwprAVIIQIcBFoOXWX61oKD9YxlNQlbGLIFQ7IUmyiOml+8hGQNuctLpu9W0gzhscf+Hw6prG54cVYszVLEGPRepTC5y35wpf1cpT17ts/a/J27URjMQYO7pNMknww543rpEOl9bCYBOsLqS5ZDF72hAtLevFcxYhwaZ+re9CD22LNXap/VseP1t+QNHN+ev21R35XIC3Oz+V++eVBnPxMMkgG2sqhHwAhuW5crZnlFQI1daEghfeh0B8j07xCI3bEwTVT7IoIYOhv52lWg9DAHZfi+uUCSGX2Zm2Uiua1knQ0xb72MOJ8ZwJtNuLu7F8ZwPobhEfXTbQIK8gtelpt9aj04XvGGcPp88JfMyerxMQJR7Qr/Lx+5hOur4jGyNkLcc4rpDrmceAw7vx8qlzUNZJbRX2xDGNeLE1hnVXlwKfwOeKasTGaWM/m1/BCmKfMvjeF4md9eRcEOoOnpSyXOnZ+bj5JbGzL4o5ekwHAet3YBn9mIJ3sjEF8MzgrEMtl6Aw81MLl7AbOUC1leCR+9qZ8NnclyFx76ggGtNL00CcQ02Lqww5uVaD8DzuWXZqOjxxMbJ1BzwDRss4hUU7XG1UVGJissAM3tI2zuIdRXuqcMweWME3U6beSLC3FBH7OQm1l7OFZb1tUVwMMcJVNnm9i5kbaZz2AAwx3DK7C/yx2p7E0MDyHpinomk2+Z+DXJsBfJPp8T+gpN0+cV2sATZmrrUHgXxmZ/3hKK29AUUKGmPgiNxzQ373ExvXbU5V5XPmttyZtrca3220P9vDJc8v5lQ/+Zgsvk9isy5w7l4FHwwY0gk9OdkvHfQGmqg1gHSB3SIuiXXv9SgeXBHMLl0hih2Gk7rS4G8oYJXKg5QeMa3UjImh7gmuK31M7mZq6OjZMwr0NE2EtCXG6sbT/Dv8Oy2J0UqDAOkltMZlSRrYAQIKFgHSZpOZuGdT2rQ6znU9oajYr6WfIu+NsZFiCSZSSsW/UHuzNG7cMr4luL8T5M2uDiR1cuBRDBvkANInqwpPYANf9CiNeQOfrgOinvbhYBX/0eKqn5pqIGMVuXeFFss+qYPL0wafZDjhqcww94+DKxZxOxwF3iegxwSdAutWhWD1HgSJi+UeTsVlbdZxX5lH712RRzxsBO20Yvhix0mlzUzIZehtOs2IfZ6b9NgndGaO2trX2+vEIa19qtsAKS+6fSK0W7I7adcXBPpS6rC/lk7gqNwqbPD4hYLhcSlHCgIxqrXgO0+d+Yg0eRVlkX2hZXuz1ffwTnVx5hLxx+6z0K8G8O1znx0zEma2bC3v9FjDVWWQAZjCKSIF2/xQuI4VQNZJTr4M14d7cvhFXpsMqX3ytVtCZDVUw3H//oBFZcY7iGrhhLvlujeWZ1BxnJvA3JAaQbgKyL4f/y4rTFWoaewML/vZObxHaqVQQLHbPARyTM5NVZ0h5R2722+5lW/ihhnnNWF6+2J5OmcvB7ggTxT+NL3Q8UEti1G6iywiHBYfgHbmW0XmHUQ49hq62XIY/FOdOQQpl9+gnqwVcwavPU+cCsnE/FT3EdMyWyU8JzUFh/7aw/KNejgwcJFJ0ijUUgtbSaZOWRRw6GMGS7jYRp9SiFI3pJNWkdl968fDPKtbjPrhLDQmNZ/PQYZRNNVXJ/EGlncg7zdt4yL/Y50LFlwa0VnjOtABRau37DfVdhENPUOxP0NYR9XPU0zKqzEI9VAKa077yxBAaHrBoVNzo9wMeInV5rebKzm2oJsPmxvXQq1K7pLoUNlxgNnvmBzFEBoyFrT9qmxOYXFD81LO8suxVqri8+kMBOKDAAu251lQGlKXzTGsBuP0wfnedYqHYufCrCHrphJ20qc+H1oNUJLWuDhlpAAUWNiLgOtWSs6McxUkyKKhFLjAPMSXTtxQ1A5r7g2/9fHlSrU34Ihj5NiNkWGuZtnWUZQ6SDK/V1C6vwsibhYLu5GqCJyy6hzAkfFsq5vCjhblPltFAMepi1QD01n4bDBk3HPAMYhPHT1T+AqI7yl83nUCt/CSUPEJgHOYIsxB+DYXXSuIkLRSsNtjC6hFGC3NAF/XSq1pdQFiRupa0cWTZtRyhv0+NIwVWHMfkGjtvPImmjMaWfsQioWQG4FfKKQcnp4c0UQstv/zTqi3dd6AJt/6L+Tr7kj2Ho/Y3kchUTj4N20sbK1/C6y0UsXEV3f7f6/46eZxjGj2cadEVR5BeaKL3Z6xm+jShOkMK5SHOTvhxqi1zhBd01Qm6XgYwF/vsCJJgaYHShqkvo6K+q3l8znroDzOx/xfHRIB7shIl7QRdLUXtJBeNt5kZK9z8rhSF93MIuaiW1+CCoaUtw3aOGf/9raQCV1zGBOBVBU6MysVvgwc7tfhZhnoQbIs483Hoy3Pr1zGJeAo9PX1gCKzPEmxydaqxM4x6O5JD+p0JI6+XXhiDMSYJAWZKPsWN1esaBFX/22tEHfekbspphktLkxEHIAAJ7wslOK8nkijOfEcrIxd4k9CGFoKWHZnrj1WKHMjxph8lsrSODwwMWAEnZ6K6/vVOT+mcbhNDD5uWKp+dVze+Qt0KpXRleGDABrDxJ9zm2jeELFGNLD9zr2HU6uVG+O2tuyJHBSgMSoca1GlQes6OGsTc5KhlCEIGamkdSJfg2yvIOaPh3Ffa+hyW44/vM+U87hzwu7xnrgOhmLL9Wkrr+p6BCYpb9pWunsgPiKeKnCOh8SW0ldf9qndTDVjReJqb1PnavSc9vpuC5GYVVnAtzKIJWYNX2AUuHIc45y/AQq6rsaYOem9kcQC46J0P0vUDFBco8FjI8FMvNfR5hYshOHFmcmNSA9R617He+JyTryLvGSYQfg61sIXYDwt2jA6zear6vjDP7SFe42cS97bLvnjcs/Nypq8iXnaPRwUZEaGuZjrVhTITuUK4wYljZiCTvmen+4g8dR53jcMmvY7Ad20Rb0RmCL/ZsBvLHFsyNdUxU/zCnm08U47aAb+LVf5B9vM+XY3st7MGPTGQntWMKUZ1M5zKPl/Iu+1XrrSM4J/bmbVB+0QBeRog9mY8Hy/zT3GCj0d34ab6wVPuKfbb+M7Zan7tu3b5pSG4zSh3mvKsyHQnLn2zPrDAAAQLnL+D9rxp45nwDZo9OT4rd+ITh9ClQyojdWS5iAZZbfmKbsovL7HUAfa85dwR/Jr0Hq3mTmLI6JZuCZwVkNY5ftY0BdR3X3QC5+qz1QR9OCMbZSA+QCSbNZxVTy8TQ/ovYV6w1zCKQG0woFTJLR8OMZ5fgAsXprvDCDoW56ntfbCV7rZZCHlBC1VELdrIcts1yDV9VqEBo/8D7dqZazgtkfHjnwyizlMUqNYOVdAAy7iIhEz22t4e5QZ8xy6ptfxY7/+7kyiC9wGgRVlNhiYsah1OFrfjg1G3ew+dTWEyAG2ME7UpOT1xZ3LIYiUr0LCQ1YJ3AP6jUQq1BCctY3Vs/8X0gDE9Z1k6BbyjH6aXUY4/HL2QszmL4nt5dbFyHEiDupxkyE2RnCE+JnOgHh/xOw4e1aL/UjXepBPc99ke2Ilnle+HJHS5qO7kNM4V8qR15+XhfDxWigx1ibL+8gRvpx+cNXJBCl9403PaL89dtOaXXXlCDUn5Khj4i8YrZwAxw8IfZEjLNYkP6X6Y8JFGvEjpHnmtznDRXDu4qrZWxGkGQezQ9vO07Ke4ApAKzXwaVAfnj9gjXAlkGYgDvZZFf8NRZXoocY3B5lowdhYoRqUXmKk9Jq96Ko4FfG46jy9nLyLfARgQxIxzMub6HSZqgIuHdWg1VL0jKhaxxcJvfZW0ydIUAML9m2pphBOW6edGDQmK0W5+lJbZm41xffNgYDFFNbC9eZGa22+qhMxkfZmsAf2fXcxJVpvA2iyeYOB/eKsv++iEwBCurfB3XFkef1/y8V0leThxqHEL+k3C5u7aEoSH2wUi7hJOyf/lwn0wyhL+XckrBcaqrAjnCF78h1nERi+Sz8rJFq+7pgYbmDXD5DVsYfEAQrLWo4pTKiwOoQro2zPveor0mj7SX+Nh1mcEFjVSqq2eH7FnhuNbCF8tFM7cF6RwVJqcWplMinQUMu1QjQUVjusKNobFRN35R608KxTAPOX2o1/9auv5O1YFbwBmPIrvB/Tj5uYiHCntjIKH35Moy/WlPLohQoWEIvaWTQQAk63hmZFdoQskhLK9cE0XNjvkE2gwPNjL5iH3LK3DREV5q4UFwAO120Ipui/kdM5RAkQcts9T4b5EXSgBArr4m59N6URe8sUPXWvMRjDAEUJ+q9IBNa+Z1SVweEjPSFOriqYcWqttzNCN0nc72GnMnQnY/VQtpWyWWii/u8fwX8x4cGdMO6ome4Zj+tgTMseHT8kVw7PudyAzvaOPoAyL6orlrcC0SFFyDEtUvvVZBtaaCr6VHkTYpa5X0qaoFxOd+53r6U8T6ZFXQeeHEPJ/hhGu7f7SdRSY+dLkhDsu7AHpnriFmyRKrzTJHeABMic8X3FDJuIZKdx8Q1Tl9g4MnNyCol5covypqDDQoFli1WEs4J3BDnooo9A5KGFhuksmWKXTSOFdEHn8Fwy77P/rFRbnzYdFWvVtPzbH3K6HfIN902vaH3fhpZCgNGxxJ81aqZ0UvBoIwsK/8foz1BoGUMelJnS9ScJrt8NZyCxk4uPdlN1fG6n+b+AhvV0h+5kEI28iben9XNSrSdZm7MhR6voWdZFwlBXRK6gM7k+lVukp73F3/jm5ZQQRQJW0NMXrXDtDW6h7Ex0bs/jpl61RmcfpSowDYDEKc2/CMHIVDA0XfQesKiqM46N7pajECnznNhuoxmwcDPTesg4aqIG8HY1c0VtZtAMhJsJGVnAMYrPhgBZUzKc1fBlzIPgHeGAGN0aIYkq2Gw9NNJ8/OlWoYhK3gEplEqayHWc6sMuM0D0GENDZYkIGlXCNaXWMTnO0QdJ4pJfmLqRen9wWOUD19Tdwe1AqDpKDdruq7OP5YV+XsV4EF7kzVzgrXH8w81DqvoBFNsaaEB+F8AM35yYJEE6qbBnxJKIxNGYqOuPumeZE+rCww5wLwdC0odYj7Urtvsg5ddvDcFZhwBob5Niz+qaR0dgvMSfo5R+TVAKuEA7FwNzfp6juARMszxNBHVOiORbrxeMvJkKuLA94m8+IjgH9Dv28hI32G7MLHT+ZiMQu4f8Nw8i1cdyzrZ8CnzVxLu4kqmxZG4EIycASWQQQjAhoPf8E6S7BtGSEdKeGP23MnXP5kOW76v2GnMIwFVAYOlEcY4uU07E9A7kSaXBFSUz1OauenQh8qlK4pUKFYb92RE3GNcUTPmKpBHA768LEpyIp0ozLAcq6keRRdIIB4NNBNG2hIfUhGlCSqc5zjZMAMgTl5HfNrLpQyZUC8pBSz9Yw2YWlLljZoMBeL4Ur7YugDKGGFhnlhjniBVB81kkfqKeCXFXeumGsOPOIZ4jrWNsO1V8klBa9LzqlboiERi7FvOYo5ipxiI7oegZ4y9EGD/tZo+ZQFZD+aUCiA+NtVPRrurwpekppvXqDYs9GFghHpgicLlvuqAwc5wQVwWaHJ11A2L2jNwe4/cW73Uw/pTMCkxpNJE5e96Pm/HhGVv4Jea6qbY2pLXZpl8fqr6EovJbXNatRk5tbA/lNGm4vksO2sr1EtRzWsgZ4C6Zd/gjFwKww/98aDCo8KtOcHzmFQg3b6SLfJzPa0TOfNKdgH3ncF+7N47PWFjnWKD3lTtV5SLXREjdTfPxkQetWJhPjKqCy6zUz0krye54TQTn0iWfM0SOeVcmy9Po/JzuMsJd4CvHbyfG3O1GkbSm5+uO4e+NGvInbL6voKZUTq6xXl1CzFYubCVw6aun7D5nAczblL9gjD8awwPaU7cZPtJncIMcNTOtqwC6uv0QA9NAoPgSd2VmuVnw5+dl8SAeDXRRozjfevLYFIXR7XPOjGePLiyiySd+z5mSV8S535Orf5j7heQm9zoBVgLYvBCX4cJlkGJw/2HWHnwaJF/nu0Sl8NCnXSmElcFk2F3zdN5L9c1XPK8oyBl7qe6nN9I7+6Dd5QPexez0HXpNj7SJ09gh1hHdXa+2CbHEOjgydMhazTIM7fQTYXhJjw3fBKVfd628+HV8HSMIqAixZGtaTzBk7GbgfqYC4PtCVw9xi26KFvhZwZ9zPzXU4ocZ7PrYK2nRu7l+cWsND3glhYnhzadm1tpCw2e9bXi+L8t9Ey+8t0sGyV3tPovFx3zabbag6BI55mzzeCx/O+BfPFTUmPHyY7Uhd+J/H+CudlVkpRc965LJCYjrivADfTCVa3tRK99euDTkFmmUGA9XlWYtqgY3ZumAkcsEFRjeVhBZ8VqQ/azEZcGLZhgaqG0AbEXHXtFgsaj2M1UyoGbdrYxhrTx/fEJB0Qm9oaOL7rgDCd4KQwT2Z/7xfkStSOCPzMATDdkw1nsWxCPfR/YBOUNcC/wcqwXLVAZ0pgQD9eWMRitCfeJtl3P2iuKBqvqhcVJnX+A6hiApbMcupPGB+jCFBw8dVFIaAVL4U8XJkQQ5GBbM3sot3S8HgGFhYmdKtbwGcCtQJkNs7MtTH8k6FFvA+WN9Hu8Z9FpzJ3DDJumfW4WIUarQXKikOLbJZcZhOoNI1cI2ap9/2tmSFxoN+xPmNkuaQjx7wsKpd9enSakigUWzyN/hifftSl3/jlKA1b4MTFJ2AmHk3PVxJIFUUQy9zJkrgVHrxigreqaY5EdIg3e+CBu/tyZPx8RY9vTFDHA95dJ7HHRxdGjUF2qP6pliQCuGZA4SLLeSGJDAyjqYYBdlr8Dk06ZyA+L/DvIHh4Rh4TxfnGNWlZETCuoDwuVQQsQLZEVmnarSuaWdCrIb0tQw6GLf3aV3kk726agmZtV0MQ3imSRTD7SsJcZGRqx9fqi/NLn/rI9buw98FGC/MfD7ukFWC7PGSmrWRQWUwOXHnUW6kFObGGNEMs911r/Gbs4txA98FhRymxo56jcI9w1Mf91RjN6OH/MLFIPh35G5xqfAJ5C2IDeHsv1GQxb2gVyILKy0au96E4LtqNmwzDJkx8d34YKmabeNGCkmO3PBTLo/Rra2Myrfg71Fckt44chu9h9PtEWKUy0o1cc1CogtsY+A2tyKd41XV1H6GGBlvz8p/z6LujYLJ4FiPGbsOF8W/qDRiOQRt7iLcX4+uaPe1ScgvbPuPkDU3Qj38cHPvwerYH6KslofABH5GrXFsm4696vHYwGrZLpoae17191im3sirz6tIp5biPJ4Vv1mRg1TGEfixc1vyqOW+gPYM458MzkCfywKhdh7ZzmFn0xB9Amt+NzOxkA6ELAxqmX6TVn1xW18/oqCk17Unpf9BvE51hlJENQUNWkQ+612tzSn/7PDWIHuILuqm0pFFI2qbv59y+yx+UST7HKy8N/p2aVSdraSziHxN6Y+xE0BBVw8Z575MelaVCIatTO/kKGLvSb4nuAU67QfZTnB36FhgF/bHQjjfWLk+km36y5Muj8GILMSREB/N3v8E9yMZ942vVS/Tv5hE4Kf1ujZnOm9+sROIZY9x+OjqwF7l0SMSzBO8F5t+p7xAlDVAxFIjKIlRRNNwOBes88mIViJGSE3GxHERtLpr8561kdXQaNeueQtj92hGiUTbYWa6BvCFeBxtWPkEvjeMFXQNEylMDefrnVJ48ZpKMxODXMB23SNi9oDnukEQTw6rwemyvUXbT5bX5d2wwjOOMhAsnrf1gqBGA/USc4ZfWxAmWEM+KtmEXN9rG44ErQPrTmbF5w2VU3wRrEsun1fEWWY6BXdkNux9HqvPtVwoV+b4m1HVs2mpxYD1gMjdG0waTUbFWMzSJjgrRiK4vgIH9WkdpQtt4LijBqskQilV3dJpqJRIWuCrOjNXjitucJJ581g1Go1IoCSVj25eKflyyIJ7rDLUAqgdx4TY1JTWp6qX0ckQ/mK3RgxkDmxqprZylOZWQkRfOhvB9NvXgREZ9PVk6YmCjXLGKFcsbZuY47Qj5HHQIlgrBd+0ovCZk3+jChd88CL5gvkxyK2rI6WVVgpzGGOe01F9WCM59CqVjR57n8nRVcl7lvaErNrUiSUBg6m8jYt790mLbl8Zi01ZZbke1Yf9G4KwoRFqqGEAJ56tkkm4Qi6REXKkUDw+ySImmrHMgwl1U0b1KyXJBOmSlZq57Q6ncE28vOe+GbBjYhLfjQy/RGFT7ttXCq97ouQuDAeXOiSEukiQYQi4U+SLrt35q1nUSmVXRAk7uIheC3eANrnsxZaz97HyMiK3QHU4Y29hYrTBMEPSXnce56GjHkYxaXonu/SiCWJ+THxl7HQxP/ab6ZlllAvXXGLUJ3g+nGms+ACaoa6sN20we3CpJvfj3nNOrYLlwSO9CYZTXeW0xBdixoiQsti14F+kGsXE0eeFR8b1DqNtWT5OTULjN3B0QHR/NaDEsx1vR35Yt6wBJqgFALneQv1zCTT4cXqQ0wJ1/u750McdlGwu/5qj4PXv6unC2xubM2nEFGHCDJ4QBPMQ7O3moxHSTpeYVysuCYaeCVIxvcMpiC5giwAiHKtRz7Dx3DOfltof1S+DWEJZ97nGgII4ite3DHO1osmLIUC1xTtv1Q7U4eq9KG/fauMZbUQMcH7z9zlCOoO322QqPLtU8KI2EJ5JvtxWrtsSynBFUIu/R/GLdqLk/y1M5VaDgWJeTdB/Mj3cQXw9nf9IJGEVHw8AT4qFtk0pCHAYV1hExINhm5oG99RZIva3dCptU80mgzIRXjCLg4vkmrf7okceU1YEf6hU5jLntUazGFb/VJyFA+z36+BGAdSX9Zdpldbqkfng7b1jL178fqeVDbINKqihx3pLIZcIJMQs+ut7i1ilhQnWSw0AFXXtUsjy+ng25IOKg4THW6+gvHgp9WeIKRgAQOmUOtMyGhn6eRJunZssfj4ZiWQxNK1HqCdcWTeVGg4fNogvtc9LVsi/QjM1SSD92yoOgE8Bsui2y7b+MDyOCOjeSQxyJAq+gmYu0IfZM/Pwo4vyEQBIOSggeHp5fljCJ8lHeJqlpGEJHttrb4L2VPHEFPLOAGel2vXfjEC9F2YMWByyNn/xfzqM3e1sLejmf69XM51DbK6sqqtm3R6kLxN64W6HJyHPpFNcLCeCiHORVifozBlIIIwmmFT95k57kEiWymkL79/woyncSHla4zM2ul2c4bNo8T8JP4eY2fdyexQP0muwIyvtmilKP+e6JFqwfZ2C0kLjbCx4KPbAdm7jvzlvVFIT1cYgrH9pGpZHoNCqTIhV7f2CRI6CwMdNguVIFAxf8e45OoVFV1URvwQ07ICOiJVuGCiOttIE8RybOK3dsrhq8D5DwbSptEUox7sZjtNmf408vKkFyPRKtUARXn452sq8ft98iEd6m/k88bi5p3FUAjWrQ8w3naRyL8i/lWWgGKj+TYmaRo1kEEav+1EXqwTdXAPxozDicxXesgJ4gqR7bCpjEJ84IpkDUqWhZYgQupUbDwZXz5VF9xOZWiVhm6ubsp4cyA4+/oyqLXuigmswT0DqidpfXBRdmG3D5asK20BVOd6SdXRhAMZDKyhhEry3hAvu+SNrwmA9COTGoDHN5CtWSAJGeSqZ0zMXhHO+CPUyUZmV+DhIEyqKM7Jgmuj7+59JBArzJlL3Jn0M24uJbTa6zNYFnOrNFpjw8awzhCdOlr3Q41o2EoAvStAjy1MyUIXqIuZdKbQECGVricgS53p9cUzCNlAw+Lw0LN6mCX+QHwi+z4ioNHcX1gjy91m+ZkLnlRbq+yPSJPgiDlm3NFX3T8/V+hVL3IR7GAJfV2Nj+0X6XJDk5YHqacoWfeE2XvXqQ2XHl99Lklblj0tKSocg7IiAzGj2/k7OzAgm9BlMBmPJMYSKhX1c2UhV48oeH7HMxj4chBW08ggLYGA/3eZahCkesl6xxn3BSHE7EFnPAwI4Ty2NGNQVIAVfiWSK6xAhIGIBQf1ttZlWGl6qU46WsQ0eWWVspGTUtkxvn5VEs0/+cYXoFOinWtLQGDEmrCzlu0/GrgrWcRx/QNXtFRj1q9oIzV5CzoUu37ii7/HxeMO4ZItkNlG6yu5TLJ31vb30mXXNxyVzpqPIKHBg80F4tqhOoGVdqXeHJqTRuiUX4PsrqqOhaU0rjMt+r2Gmhr5vz7xyQMK3m1vzbOzldEX1+8qEMoAKMkuszmY+0AOJsSydil0c98o3dvJ53SfC5EPyJUN59rNc1xTbX3tO2UnO+lcz4rPeviBxU+330b/njw1z0BQ/y75ZyUI+q7Shk0SHPJEvPlqrx54fMc9xvICM1N8eDWoAgXMWuEKmm8kGw06lUr0GgVa7FyrBvrNZSLOtcDC8R8E5ovy5x/USoEUSvtIuJVXaKkt7rRMxmocgTv/Sqr5oawNe6MtY7s5PUOof3YKfC85ZOhSkBYLIS1oZlRHHfgDB6ApcbRCi2T6GZy5MwnuXkHyB6NhWkraf6IDkYuZcjq/s5eAhbZR8aP1qCNGvnDn47u6Cr9Ij7pTb+2OvuLtugKA/U04cyZrtoyamZXWmD/9SWom2ZeR/uRu9tzTRmOn8i2kumNP0MKWvD9WvVwTZBkJbZ033SDi+tNYZ2eM1UDKOtYz6JC/pulFpjVD59krTelsrqxwosuIaAv1Mgb7EcsEHPqpHLoSPiMf38umx8QsQJrQpOflcTVLkK5dW6V1Y0M2OCgIct7B5srWYAmjC29HK0+fvY+wx33SW8qVO0IAj/bl09FXAy/xToeeudrAQqvCLZc6PDeiE88FQ862moLk7wOdhJIMhfReCLsUvRE7w1WuefXytGhGS2lHS/lOx60yqJrmc1O4HJJ7x7zamUWvPpBGyrAYeOgNozjjoD9r+P9VBBwfBEZ4rhsbAUuiqCb67Cf9aeA9uZxngo+XRRbHE9SLwLgiCPEIB2p/+WCzhIRHbzIS3yvItDRSUcFrcI3mEyYQKp59lh6DAplPdAn4NA6lSqHVoIlg2bii46aQyspkNTcdQ3Ju84U7AW0NUh+7ntv5jUiD9JM9V21TBe9ixdO7WatpnwMPDCc5OOZnEyiU6CpF4nIc6g/MJhbc9oAQ0ZC+/TI8b9uaPhroyu9xPhxYJQVoqBuMxoJWV9iFH5cTTVkgm9jdwGol/6xmeaMO1GBmbxrLOIpt1RRozsDmra1BLa5fLRnyFTKCjYJBR2ZUy889+WOI+lK/1NeTQgrnFQK03h02MN+mWTesVBA1Qg20YEMa5zXGY8vIr47KicHGY33F/Xhe9UabsnH/9GYOWU/N0fUtorkqJBGDlzSPDmUua8TKDv0ndSLFrFcddWaFvs3A+wL/hO/rpVf/PpCDrsTv/h2vFlLJIC5xlCiIDu6fbUeKFl7o/Z1x7+mKh9od4FZp/BPFHnG/C40/p5rPk25+D4F0SHPQSxY+4ySK8yGHaaK8UPNEo/8vnHM61eoOEYw0cSJQEFFH2tLTCRw/CRo7KO2cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAw8LAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==\"","<template>\n <div class=\" max-w-dvw w-full lg:w-90 lg:p-5 flex items-center justify-center \">\n <div class=\" w-full max-w-90\">\n <div class=\" flex items-center gap-x-3\">\n <BIcon icon=\"PhX\" class=\" w-5 h-5 cursor-pointer fill-on-surface/50 \" @click=\"close\" />\n <div class=\" text-on-surface text-label-sm select-none\">{{ t('chat.addMedic.title') }}</div>\n </div>\n <BSelect v-model=\"field\" :title=\"t('chat.addMedic.expertise')\" :placeholder=\"t('chat.addMedic.select')\"\n :loading=\"isLoadingServices\" :options=\"serviceOptions\" class=\" max-w-full min-w-full w-full pt-4\" />\n <BCheckBox :disabled=\"isLoadingServices\" v-model=\"autoSelect\" :label=\"t('chat.addMedic.autoSelect')\"\n mode=\"switch\" />\n <div class=\" w-full transition-all duration-200 ease-in-out whitespace-nowrap overflow-hidden\"\n :class=\"[autoSelect ? 'h-0 pt-0 opacity-0 pointer-events-none' : 'h-auto pt-4 opacity-100 pointer-events-auto']\">\n <BInput class=\" max-w-full min-w-full w-full\" icon=\"PhMagnifyingGlass\" v-model=\"searchText\"\n :placeholder=\"t('chat.addMedic.search')\" />\n <div class=\" flex items-center gap-x-2\">\n <BLabel class=\"cursor-pointer\" size=\"lg\" :text=\"filter.label\" @action=\"setFilter('')\"\n :color=\"filterProps(filter.key).color\" v-for=\"filter in filters\"\n :icon=\"filterProps(filter.key).icon\" :key=\"filter.key\" @click=\"setFilter(filter.key)\" />\n </div>\n <div class=\" w-full h-90.5 mt-4 relative\">\n <div v-if=\"isLoading || providers.length > 0\" class=\"w-full h-full\">\n <BVirtualVerticalList :items=\"providers\" @load-more=\"serviceStore.fetchProviders(true)\"\n :hasNextPage=\"serviceStore.hasProviderNextPage\" :loading=\"isLoading\">\n <template #item=\"{ item: medic }\">\n <div class=\" w-full pb-2\">\n <MedicDisplay @click=\"toggleSelect(medic)\" :isSelected=\"isSelected(medic.id)\"\n :medic=\"medic\" :loading=\"isLoading && serviceStore.currentResultPage === 1\" />\n </div>\n </template>\n </BVirtualVerticalList>\n </div>\n <div v-else-if=\"!isLoading && providers.length === 0\"\n class=\" w-full h-full flex items-center justify-center\">\n <NoDataDisplay :image-path=\"NoProviderImage\" :title=\"t('chat.noProviders')\" />\n </div>\n <div\n class=\"pt-6 bg-linear-to-b from-surface/0 via-surface to-surface absolute bottom-0 left-0 z-20 w-full\">\n\n </div>\n </div>\n </div>\n <BButton :disabled=\"buttonProps.disabled\" class=\" transition-all duration-200 ease-in-out min-w-full\"\n :class=\"[!autoSelect ? ' mt-0' : 'mt-4']\" :text=\"buttonProps.text\" @click=\"selectMedic\" />\n </div>\n </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, onMounted, watch } from 'vue';\nimport { useServiceStore, useI18n, useChatActionStore, useAppToast, useChatStore } from '~/nuxt-shims';\nimport MedicDisplay from './MedicDisplay.vue';\nimport NoDataDisplay from '~/components/general/NoDataDisplay.vue';\nimport NoProviderImage from '~/assets/lib-images/chat/no-provider-found.webp';\nimport type { Provider } from '~/types/service';\n\nexport default defineComponent({\n name: 'MedicSelector',\n emits: ['close'],\n components: {\n MedicDisplay,\n NoDataDisplay,\n },\n setup(_, { emit }) {\n const { t } = useI18n()\n const chatStore = useChatStore()\n const serviceStore = useServiceStore()\n const chatActionStore = useChatActionStore()\n const activeFilter = ref('')\n const autoSelect = ref(true)\n\n\n const { openToast } = useAppToast()\n\n const currentConversationId = computed(() => chatStore.activeConversationId ?? \"\");\n\n const field = computed({\n get: () => serviceStore.selectedServiceId,\n set: (val) => serviceStore.selectedServiceId = val\n })\n const searchText = computed({\n get: () => serviceStore.searchText,\n set: (val) => serviceStore.searchText = val\n })\n\n const isLoadingServices = computed(() => serviceStore.isLoadingServices)\n const isLoading = computed(() => serviceStore.isLoading)\n const providers = computed(() => serviceStore.providers)\n\n\n const selectedExpertiseLabel = computed(() => {\n const selected = serviceStore.services.find(s => s.id === field.value);\n return selected ? selected.label : t('chat.addMedic.select');\n });\n\n\n\n const filters = computed(() => [\n { key: 'available', label: t('chat.addMedic.available') },\n { key: 'online', label: t('chat.addMedic.online') },\n ]);\n\n const setFilter = (type: string) => {\n if (activeFilter.value === type) return;\n activeFilter.value = type;\n };\n\n const close = () => {\n emit('close')\n }\n\n const serviceOptions = computed(() =>\n serviceStore.services.map(service => ({\n label: service.label,\n value: service.id,\n }))\n );\n\n // Trigger the fetch when the selector opens\n onMounted(async () => {\n // 1. Fetch services first\n if (serviceStore.services.length === 0) {\n await serviceStore.fetchServices();\n }\n\n // 2. Set default expertise if none selected\n if (!field.value && serviceStore.services.length > 0) {\n field.value = serviceStore.services[0].id;\n }\n await serviceStore.fetchProviders(false);\n });\n\n // 2. Watcher: When filters, search, or expertise changes, reset and fetch providers\n watch([field, searchText, activeFilter], () => {\n serviceStore.resetProviderData();\n // Trigger initial fetch with explicit parameters for serviceId and searchString\n serviceStore.fetchProviders(false, field.value, searchText.value);\n }, { immediate: false });\n\n const filterProps = (type: string) => {\n return activeFilter.value === type\n ? { color: 'primary', icon: 'PhX' }\n : { color: 'neutral', icon: '' };\n };\n\n const selectedMedics = ref<Provider[]>([]);\n\n const toggleSelect = (medic: Provider) => {\n if (isLoading.value || !medic.id) return;\n\n const index = selectedMedics.value.findIndex(p => p.id === medic.id);\n\n if (index > -1) {\n selectedMedics.value.splice(index, 1);\n } else {\n if (selectedMedics.value.length >= 5) {\n openToast(t('chat.addMedic.error.maxMedics'), 'error');\n return;\n }\n selectedMedics.value.push(medic);\n }\n };\n\n const isSelected = (id: string) => selectedMedics.value.some(p => p.id === id);\n\n const buttonProps = computed(() => {\n let buttonText = t('chat.addMedic.buttonText.single')\n let disabled = !autoSelect.value && (selectedMedics.value.length > 5 || selectedMedics.value.length === 0);\n if (selectedMedics.value.length > 1) {\n buttonText = t('chat.addMedic.buttonText.multiple', { count: selectedMedics.value.length })\n }\n return {\n disabled: disabled,\n text: buttonText,\n }\n })\n\n\n\n\n const resetComponent = () => {\n if (!autoSelect.value) {\n searchText.value = ''\n activeFilter.value = ''\n selectedMedics.value = []\n }\n }\n\n\n\n\n const selectMedic = () => {\n if (!field.value) return;\n if (!autoSelect.value && selectedMedics.value.length === 0) return;\n\n // Directly use the stored objects\n const providersToSend = autoSelect.value ? [] : [...selectedMedics.value];\n\n chatActionStore.sendServiceRequest(\n currentConversationId.value,\n field.value,\n selectedExpertiseLabel.value,\n providersToSend\n );\n\n emit('close');\n setTimeout(() => {\n autoSelect.value = true;\n resetComponent();\n }, 300);\n };\n\n\n return {\n t,\n isLoading,\n isLoadingServices,\n filterProps,\n toggleSelect,\n selectMedic,\n selectedExpertiseLabel,\n filters,\n searchText,\n setFilter,\n close,\n providers,\n buttonProps,\n serviceStore,\n serviceOptions,\n autoSelect,\n field,\n NoProviderImage,\n isSelected,\n }\n }\n})\n</script>","<template>\n <!-- MOBILE FLOW -->\n <div v-if=\"isMobile && options.length === 0\" class=\"contents\" @click=\"handleMobileClick\">\n <!-- Change to named slot -->\n <slot name=\"trigger\" />\n </div>\n <!-- DESKTOP FLOW -->\n <BMenu @open=\"handleMenuState(true)\" v-else ref=\"menuRef\" :auto-close :options=\"displayOptions\"\n @select=\"handleSelect\" @close=\"resetMenuMode\">\n <template #trigger>\n <!-- Change to named slot -->\n <slot name=\"trigger\" />\n </template>\n\n <!-- Only render custom content if in medic mode -->\n <div class=\"p-1\" v-if=\"internalMenuMode === 'medic'\">\n <MedicSelectorContent @close=\"closeAll\" />\n </div>\n </BMenu>\n <BPopup ref=\"popupRef\">\n <MedicSelectorContent @close=\"closeAll\" />\n </BPopup>\n</template>\n\n<script lang=\"ts\">\n// @ts-nocheck — grandfathered legacy chat-tree type errors; lift incrementally\nimport { defineComponent, computed, ref, type PropType } from 'vue';\nimport { useWindowSize, useI18n } from '~/nuxt-shims';\nimport type { Popup } from '~/types/components/popup';\nimport type { Menu } from '~/types/components/menu';\nimport type { MenuOption } from '~/types/components/menu-options';\nimport MedicSelectorContent from './MedicSelectorContent.vue';\n\nexport default defineComponent({\n name: 'MedicSelector',\n props: {\n mode: {\n type: String as PropType<'medic' | 'options'>,\n default: 'options' // Default to options to allow for transition\n },\n options: { type: Array as PropType<MenuOption[]>, default: () => [] }\n },\n components: { MedicSelectorContent },\n emits: ['select'],\n setup(props, { emit }) {\n const { t } = useI18n();\n const popupRef = ref<Popup | null>(null);\n const menuRef = ref<Menu | null>(null);\n const isMenuOpenned = ref(false)\n const { width } = useWindowSize();\n const isTransitioning = ref(false);\n\n // FIX: Initialize based on props/options as you requested\n const internalMenuMode = ref<'options' | 'medic'>(\n (props.mode === 'medic' || props.options.length === 0) ? 'medic' : 'options'\n );\n\n const isMobile = computed(() => width.value < 768);\n\n const handleMenuState = (isOpen: boolean) => {\n isMenuOpenned.value = isOpen;\n }\n\n const handleSelect = (key: string) => {\n if (key === 'add-user') {\n if (!isMobile.value) {\n isTransitioning.value = true;\n menuRef.value?.close();\n setTimeout(() => {\n internalMenuMode.value = 'medic';\n setTimeout(() => {\n menuRef.value?.open();\n isTransitioning.value = false;\n }, 200);\n }, 200);\n } else {\n handleMobileClick()\n }\n } else {\n emit('select', key);\n closeAll();\n }\n };\n\n const resetMenuMode = () => {\n if (isTransitioning.value) return;\n setTimeout(() => {\n // Reset to initial mode\n handleMenuState(false)\n internalMenuMode.value = (props.mode === 'medic' || props.options.length === 0) ? 'medic' : 'options';\n }, 300);\n };\n\n const closeAll = () => {\n popupRef.value?.close();\n menuRef.value?.close();\n };\n\n const displayOptions = computed(() => {\n return internalMenuMode.value === 'medic' ? [] : props.options;\n });\n\n const handleMobileClick = () => {\n popupRef.value?.open();\n };\n\n return {\n isMobile, handleMobileClick, displayOptions, popupRef, menuRef,\n closeAll, t, internalMenuMode, handleSelect, resetMenuMode,\n handleMenuState,\n isMenuOpenned,\n };\n }\n});\n</script>","<template>\n <div class=\" relative z-20 w-full\">\n <div v-if=\"selectedChat\"\n class=\" h-16 w-full z-50 md:h-20 gap-x-4 relative bg-surface border-b border-b-outline-variant flex items-center justify-between py-4 px-5\">\n <div\n class=\" w-full md:flex-row flex-row-reverse relative items-center justify-end gap-x-4 md:justify-between flex\">\n <div @click=\"openProfile\" class=\"cursor-pointer flex items-center gap-x-3\">\n <div class=\"w-10 h-10 relative shrink-0\">\n <ContactAvatar v-if=\"contact\" :contact=\"contact\" />\n </div>\n <div class=\"select-none\">\n <div class=\"text-on-surface text-label-md\">{{ selectedChat.name }} {{ selectedChat.lastName }}\n </div>\n <div class=\"text-on-surface/50 text-body-sm\">\n {{ t('chat.lastSeen', { time: formatRelativeDate(selectedChat.lastSeen) }) }}\n </div>\n </div>\n </div>\n\n <div class=\" z-1001 relative h-6\">\n <div class=\"relative transition-all duration-200 ease-in-out\"\n :class=\"[isSelectMode ? '-translate-y-6' : 'translate-y-0']\">\n <div class=\"flex relative items-center gap-x-4 transition-all duration-200 ease-in-out\"\n :class=\"[isSelectMode ? ' pointer-events-none opacity-0' : ' opacity-100 pointer-events-auto']\">\n <div class=\" hidden md:block\">\n <BIcon @click=\"initCall\" icon=\"PhPhone\" v-if=\"selectedChat.serviceType !== 'chat'\"\n class=\"w-6 h-6 cursor-pointer\"\n :class=\"[contact?.isActive || isInCall ? 'cursor-pointer fill-on-surface/50' : 'fill-on-surface/25 cursor-not-allowed']\" />\n </div>\n <div class=\" w-6 h-6 overflow-visible\">\n <MedicSelector @select=\"handleMenuAction\" :options=\"options\">\n <template #trigger>\n <BIcon icon=\"PhDotsThreeVertical\"\n class=\"w-6 h-6 fill-on-surface/50 cursor-pointer\" />\n </template>\n </MedicSelector>\n </div>\n </div>\n <div :class=\"[!isSelectMode ? ' pointer-events-none opacity-0' : ' opacity-100 pointer-events-auto']\"\n class=\" hidden md:flex items-center gap-x-4 \">\n <BIcon @click=\"deleteMessages\" icon=\"PhTrash\" class=\" w-6 h-6 \"\n :class=\"[canDelete ? 'fill-error cursor-pointer' : 'cursor-not-allowed fill-on-surface/50']\" />\n <BIcon @click=\"copy\" icon=\"PhCopy\" class=\" w-6 h-6 cursor-pointer fill-on-surface\" />\n </div>\n </div>\n </div>\n </div>\n <BIcon @click=\"goBack\" icon=\"PhArrowLeft\" class=\" md:hidden fill-on-surface/50 w-6 h-6 cursor-pointer\" />\n </div>\n <div class=\" w-full absolute bottom-0 z-20 h-0 overflow-visible\">\n <div class=\" w-full flex items-center transition-all duration-200 ease-in-out overflow-hidden whitespace-nowrap text-wrap px-2 bg-diamond-primary-secondary\"\n :class=\"[callData.show ? ' h-11' : 'h-0']\">\n <div class=\" w-full flex items-center gap-x-3 transition-all duration-200 ease-in-out\"\n :class=\"[callData.show ? 'opacity-100' : 'opacity-0']\">\n <BIcon class=\" fill-white w-5 shrink-0 h-5\" icon=\"PhPhoneCall\" />\n <div class=\" flex-1 text-white select-none text-label-md\">{{ callData.duration }}</div>\n <BIcon class=\" fill-white cursor-pointer w-5 shrink-0 h-5\" @click=\"backToCall\"\n icon=\"PhFrameCorners\" />\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\n// @ts-nocheck — grandfathered legacy chat-tree type errors; lift incrementally\nimport { defineComponent, ref, computed, type PropType, useTemplateRef } from 'vue';\nimport { useCallStore, useChatActionStore, useChatStore, useI18n, useDate } from '~/nuxt-shims';\nimport type { Menu } from '~/types/components/menu';\nimport type { Contact } from '~/types/chat';\nimport type { Popup } from '~/types/components/popup';\nimport ContactAvatar from './contact/ContactAvatar.vue';\nimport type { MenuOption } from '~/types/components/menu-options';\nimport MedicSelector from './medic-features/MedicSelector.vue';\nimport { useEventBus } from '@vueuse/core';\nimport { formatDuration } from '~/utils/format'\nexport default defineComponent({\n name: 'PageBar',\n props: {\n contact: {\n type: Object as PropType<Contact | null>,\n required: true,\n },\n options: {\n type: Array as PropType<MenuOption[]>,\n default: () => [],\n required: true,\n }\n },\n components: {\n ContactAvatar,\n MedicSelector,\n },\n emits: ['call', 'open-profile'],\n setup(props, { emit }) {\n const chatActionStore = useChatActionStore()\n const { formatRelativeDate } = useDate();\n const { t } = useI18n();\n const callStore = useCallStore()\n const chatStore = useChatStore()\n\n const referBus = useEventBus('open-referral');\n\n\n const currentConversationId = computed(() => chatStore.activeConversationId)\n const menuRef = ref<Menu | null>(null)\n const selectedChat = computed(() => props.contact)\n const menuMode = ref<'medic' | 'options'>('options')\n\n const isSelectMode = computed(() => chatActionStore.isSelectMode)\n const canDelete = computed(() => chatActionStore.canDelete)\n // Template Ref for the Menu\n\n\n\n\n\n const actions = ref([\n { icon: 'PhPhone', key: 'call' },\n // { icon: 'PhMagnifyingGlass', key: 'search' },\n ]);\n\n const handleAction = (key: 'search' | 'call') => {\n switch (key) {\n case 'call':\n emit('call')\n break;\n case 'search':\n\n break;\n }\n };\n\n const handleMenuAction = (key: string) => {\n switch (key) {\n case 'add-user':\n menuRef.value?.close()\n setTimeout(() => {\n menuRef.value?.open()\n }, 200)\n break;\n case 'delete-all':\n\n break;\n case 'end-chat':\n\n break;\n case 'refer':\n referBus.emit();\n break;\n case 'prescribe-meds':\n\n if (currentConversationId.value) {\n if (props.contact?.nationalCode && props.contact.nationalCode.trim().length > 0) {\n\n } else {\n chatActionStore.triggerPersonalInfoRequest(currentConversationId.value ?? 0);\n }\n }\n break;\n }\n menuRef.value?.close()\n }\n\n\n const openProfile = () => {\n emit('open-profile')\n }\n\n const goBack = () => {\n chatStore.setSelectedChat(null)\n }\n\n const copy = () => {\n chatActionStore.copyMessageText()\n }\n\n const deleteMessages = () => {\n if (!canDelete.value) return\n chatActionStore.triggerDelete();\n }\n\n const isTransitioning = ref(false)\n\n const handleSelect = (key: string) => {\n if (key === 'add-user') {\n isTransitioning.value = true;\n menuRef.value?.close();\n setTimeout(() => {\n menuMode.value = 'medic';\n setTimeout(() => {\n menuRef.value?.open();\n isTransitioning.value = false;\n }, 200);\n }, 200)\n } else {\n switch (key) {\n case 'prescribe-meds':\n if (props.contact?.nationalCode && props.contact.nationalCode.trim().length > 0) {\n chatActionStore.triggerPrescription(props.contact.id);\n } else {\n chatActionStore.triggerPersonalInfoRequest(currentConversationId.value ?? 0);\n }\n break;\n }\n menuRef.value?.close();\n }\n };\n\n\n const closeMenu = () => {\n menuRef.value?.close()\n }\n\n const callData = computed(() => {\n return {\n show: callStore.isActive,\n duration: formatDuration(callStore.elapsedTime)\n }\n })\n\n const initCall = () => {\n const kind = props.contact?.serviceType\n if (\n props.contact?.isActive &&\n currentConversationId.value &&\n (kind === 'voice-call' || kind === 'video-call')\n ) {\n callStore.startCall(props.contact, currentConversationId.value, kind)\n }\n }\n\n const isInCall = computed(() => callStore.isActive)\n\n const backToCall = () => {\n callStore.maximize()\n }\n\n return {\n t,\n copy,\n selectedChat,\n callData,\n isInCall,\n backToCall,\n formatRelativeDate,\n deleteMessages,\n actions,\n handleMenuAction,\n handleAction,\n menuRef,\n isSelectMode,\n goBack,\n canDelete,\n closeMenu,\n openProfile,\n handleSelect,\n menuMode,\n initCall,\n };\n }\n})\n</script>","<template>\n <div class=\"w-full flex gap-x-2 select-none items-center\">\n <div class=\"flex text-left flex-col gap-y-0.5 flex-1 min-w-0\">\n <div class=\"text-on-surface text-label-md truncate\">{{ fileName }}</div>\n <div dir=\"ltr\" class=\"text-body-sm text-on-surface/70\">{{ formattedSize }}</div>\n </div>\n\n <div class=\"relative shrink-0 cursor-pointer active:scale-95 transition-transform\">\n <BIcon icon=\"PhFile\" class=\"fill-white w-10 h-10\" />\n <div class=\"absolute bottom-2 right-0 bg-error rounded-sm px-1 py-0.5 flex items-center justify-center\">\n <div class=\"text-center text-white text-[7px] font-bold leading-none uppercase tracking-wide\">\n {{ fileExt }}\n </div>\n </div>\n </div>\n </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, computed, type PropType } from 'vue';\nimport { formatBytes } from '~/nuxt-shims';\nexport default defineComponent({\n name: 'AttachementFileDisplay',\n props: {\n file: {\n type: Object as PropType<{ name: string; size: number; format: string; path: string }>,\n required: true\n }\n },\n setup(props) {\n // Extract up to 4 characters of the extension for the little UI badge\n const fileExt = computed(() => {\n if (!props.file?.name) return 'FILE';\n const parts = props.file.name.split('.');\n return parts.length > 1 ? (parts.pop()?.substring(0, 4) || 'FILE') : 'FILE';\n });\n\n const fileName = computed(() => props.file?.name || 'Unknown File');\n const fileSize = computed(() => props.file?.size || 0);\n\n\n\n const formattedSize = computed(() => {\n return formatBytes(fileSize.value);\n });\n\n return {\n formattedSize,\n fileExt,\n fileName,\n }\n }\n})\n</script>","<template>\n <div>\n <BMenu ref=\"attachementMenu\">\n <template #trigger>\n <BIcon icon=\"PhPaperclip\" class=\" cursor-pointer w-6 h-6 fill-on-surface shrink-0\" />\n </template>\n <div class=\" w-41 bg-surface rounded-2xl p-3 flex flex-col gap-y-1\">\n\n <div v-image-pick=\"{ multiple: true, onSelect: handleMediaSelected }\" @click=\"resetSelections\"\n class=\" px-3 transition-all duration-200 ease-in-out bg-surface-variant-2/0 hover:bg-surface-variant-2 cursor-pointer select-none w-full flex items-center gap-x-2 h-11 rounded-xl \">\n <BIcon icon=\"PhImage\" class=\" w-5 h-5 fill-on-surface/50\" />\n <div class=\" text-body-sm text-on-surface/70\">{{ t('chat.file.attachMedia') }}</div>\n </div>\n\n <div v-file-pick=\"{ multiple: true, onSelect: handleFilesSelected }\" @click=\"resetSelections\"\n class=\" px-3 transition-all duration-200 ease-in-out bg-surface-variant-2/0 hover:bg-surface-variant-2 cursor-pointer select-none w-full flex items-center gap-x-2 h-11 rounded-xl \">\n <BIcon icon=\"PhFile\" class=\" w-5 h-5 fill-on-surface/50\" />\n <div class=\" text-body-sm text-on-surface/70\">{{ t('chat.file.attachFile') }}</div>\n </div>\n\n </div>\n </BMenu>\n <BPopup @closed=\"resetSelections\" no-padding ref=\"popup\">\n <div class=\" md:max-w-114 w-dvw\">\n <div class=\" border-b border-b-outline-variant w-full flex items-center gap-x-3 p-5\">\n <BIcon @click=\"closePopup\" icon=\"PhX\" class=\" w-5 h-5 cursor-pointer fill-on-surface/50\" />\n <div class=\" select-none text-label-md text-on-surface\">{{ popupTitle }}</div>\n </div>\n <div class=\"md:max-w-114 items-center w-full pt-5 px-5 flex flex-col gap-y-3\">\n <div class=\" w-full\" v-if=\"popupMode === 'single-image'\">\n <div class=\" w-full\">\n <div class=\" w-full h-full\">\n <BImage auto-size fit=\"cover\" :src=\"selectedMedia[0]?.path\"\n class=\"w-full overflow-hidden rounded-xl\" />\n </div>\n </div>\n </div>\n <div v-else-if=\"popupMode === 'multi-image'\" class=\" max-h-109 overflow-y-auto w-full\">\n <div class=\" w-full grid grid-cols-4 gap-x-3\">\n <div class=\" h-25\" v-for=\"(image, index) in selectedMedia\" :key=\"index\">\n <BImage fit=\"cover\"\n class=\" overflow-hidden rounded-xl w-full h-full min-w-full min-h-full max-w-full max-h-full\"\n :src=\"image.path\" />\n </div>\n </div>\n </div>\n <div v-else-if=\"popupMode === 'file'\"\n class=\" flex flex-col gap-y-3 w-full max-h-109 overflow-y-auto\">\n <AttachementFileDisplay v-for=\"(file, index) in selectedFiles\" :key=\"index\" :file=\"file\" />\n </div>\n <BInput class=\" min-w-full\" textarea :placeholder=\"t('chat.caption')\" v-model=\"caption\" />\n </div>\n <div class=\"border-t border-t-outline-variant w-full p-5 flex items-center gap-x-3\">\n <div class=\" basis-1/2\">\n <BButton @click=\"sendMessages\" class=\" min-w-full\" :text=\"t('chat.send')\" />\n </div>\n <div class=\" basis-1/2\">\n <BButton @click=\"closePopup\" color=\"secondary\" class=\" min-w-full\"\n :text=\"t('chat.file.cancel')\" />\n </div>\n </div>\n </div>\n </BPopup>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, computed, watch } from 'vue';\nimport { useI18n, useAppToast } from '~/nuxt-shims';\nimport type { Menu } from '~/types/components/menu';\nimport type { Popup } from '~/types/components/popup';\nimport AttachementFileDisplay from './AttachementFileDisplay.vue';\ntype PopupMode = 'single-image' | 'multi-image' | 'file'\nexport default defineComponent({\n name: 'InputAttachement',\n components: {\n AttachementFileDisplay,\n },\n props: {\n initialCaption: {\n type: String,\n default: ''\n }\n },\n emits: ['send-attachments'],\n setup(props, { emit }) {\n const popup = ref<Popup | null>(null)\n const { t } = useI18n()\n const { openToast } = useAppToast()\n const attachementMenu = ref<Menu | null>(null)\n const popupMode = ref<PopupMode>('file')\n const caption = ref('')\n\n watch(() => props.initialCaption, (newVal) => {\n caption.value = newVal;\n }, { immediate: true });\n\n const selectedMedia = ref<any[]>([])\n const selectedFiles = ref<any[]>([])\n\n const handleMediaSelected = (pathOrArray: any, file?: File) => {\n let incoming: any[] = [];\n\n if (Array.isArray(pathOrArray)) {\n incoming = pathOrArray;\n } else if (typeof pathOrArray === 'string' && file) {\n incoming = [{ path: pathOrArray, file }];\n }\n\n const maxAllowed = 10;\n const remaining = maxAllowed - selectedMedia.value.length;\n\n if (remaining <= 0) {\n openToast(t('chat.errors.maxFilesReached'), 'error');\n return;\n }\n\n selectedMedia.value = [...selectedMedia.value, ...incoming.slice(0, remaining)];\n popupMode.value = selectedMedia.value.length === 1 ? 'single-image' : 'multi-image'\n popup.value?.open()\n \n }\n\n const handleFilesSelected = (files: any[]) => {\n selectedFiles.value = [...selectedFiles.value, ...files];\n popupMode.value = 'file'\n popup.value?.open()\n }\n\n const closePopup = () => {\n popup.value?.close()\n }\n\n const resetSelections = () => {\n selectedMedia.value = [];\n selectedFiles.value = [];\n attachementMenu.value?.close();\n }\n\n const popupTitle = computed(() => {\n switch (popupMode.value) {\n case 'file':\n return t('chat.file.sendFile')\n case 'multi-image':\n return t('chat.file.sendImages')\n case 'single-image':\n return t('chat.file.sendImage')\n\n }\n })\n\n const sendMessages = () => {\n const messagesToEmit = [];\n\n if (caption.value.trim()) {\n messagesToEmit.push({\n type: 'text',\n text: caption.value\n });\n }\n\n if (selectedMedia.value.length > 0) {\n messagesToEmit.push({\n type: 'image',\n imageUrl: selectedMedia.value.map(m => m.path),\n files: selectedMedia.value.map(m => m.file)\n });\n }\n\n if (selectedFiles.value.length > 0) {\n selectedFiles.value.forEach(fileData => {\n messagesToEmit.push({\n type: 'file',\n fileUrl: fileData.path,\n file: fileData.file,\n fileName: fileData.name\n });\n });\n }\n\n emit('send-attachments', messagesToEmit);\n\n popup.value?.close();\n resetSelections();\n };\n\n\n\n return {\n sendMessages,\n t,\n attachementMenu,\n resetSelections,\n handleMediaSelected,\n handleFilesSelected,\n closePopup,\n selectedMedia,\n selectedFiles,\n popupMode,\n caption,\n popup,\n popupTitle,\n }\n }\n})\n</script>","// @ts-nocheck — grandfathered legacy chat-tree type errors; lift incrementally\n// composables/useChatRecording.ts\nimport { ref, computed, type Ref } from \"vue\";\n\nexport function useChatRecording(\n inputWidth: Ref<number | undefined>,\n callbacks: {\n onStart: () => void;\n onCancel: () => void;\n onSend?: (mediaUrl: string) => void;\n requestPermission: () => Promise<boolean>;\n },\n) {\n const isRecording = ref(false);\n const isLocked = ref(false);\n const isPaused = ref(false);\n const recordingTime = ref(0);\n let timerInterval: ReturnType<typeof setInterval> | null = null;\n\n const mediaStream = ref<MediaStream | null>(null);\n const currentFacingMode = ref<\"user\" | \"environment\">(\"user\");\n\n const toggleCamera = async () => {\n if (!mediaStream.value || !isRecording.value) return;\n currentFacingMode.value =\n currentFacingMode.value === \"user\" ? \"environment\" : \"user\";\n\n const oldTrack = mediaStream.value.getVideoTracks()[0];\n if (oldTrack) oldTrack.stop();\n\n try {\n const newStream = await navigator.mediaDevices.getUserMedia({\n video: { facingMode: currentFacingMode.value },\n });\n if (mediaStream.value && newStream.getVideoTracks()[0]) {\n mediaStream.value.removeTrack(oldTrack);\n mediaStream.value.addTrack(newStream.getVideoTracks()[0]);\n }\n } catch (err) {\n console.error(\"Failed to flip camera:\", err);\n }\n };\n\n // Drag State\n const isDragging = ref(false);\n const startX = ref(0);\n const startY = ref(0);\n const dragOffset = ref({ x: 0, y: 0 });\n const dragAxis = ref<\"x\" | \"y\" | null>(null);\n\n const pressTimer = ref<ReturnType<typeof setTimeout> | null>(null);\n const isPointerDown = ref(false);\n const isLongPress = ref(false);\n\n const formattedTime = computed(() => {\n const m = Math.floor(recordingTime.value / 60)\n .toString()\n .padStart(2, \"0\");\n const s = (recordingTime.value % 60).toString().padStart(2, \"0\");\n return `${m}:${s}`;\n });\n\n const lockOpacity = computed(() => (dragAxis.value === \"x\" ? 0 : 1));\n const cancelOpacity = computed(() =>\n dragAxis.value === \"y\"\n ? 1\n : 1 - Math.min(Math.abs(dragOffset.value.x) / 80, 1),\n );\n\n const resetDrag = () => {\n isDragging.value = false;\n dragOffset.value = { x: 0, y: 0 };\n dragAxis.value = null;\n };\n\n const togglePause = () => {\n isPaused.value = !isPaused.value;\n if (!isPaused.value) {\n timerInterval = setInterval(() => recordingTime.value++, 1000);\n } else if (timerInterval) {\n clearInterval(timerInterval);\n }\n };\n\n const stopRecording = (triggerSend = false) => {\n if (timerInterval) clearInterval(timerInterval);\n\n if (mediaStream.value) {\n mediaStream.value.getTracks().forEach((t) => t.stop());\n mediaStream.value = null;\n }\n isRecording.value = false;\n isLocked.value = false;\n isPaused.value = false;\n recordingTime.value = 0;\n resetDrag();\n\n if (triggerSend) callbacks.onSend();\n else callbacks.onCancel();\n };\n\n const onPointerDown = (event: PointerEvent) => {\n isPointerDown.value = true;\n isLongPress.value = false;\n startX.value = event.clientX;\n startY.value = event.clientY;\n resetDrag();\n\n window.addEventListener(\"pointermove\", onPointerMove);\n window.addEventListener(\"pointerup\", onPointerUp);\n window.addEventListener(\"pointercancel\", onPointerUp);\n\n if (pressTimer.value) clearTimeout(pressTimer.value);\n\n pressTimer.value = setTimeout(async () => {\n isLongPress.value = true;\n // Await the permission UI\n const hasPermission = await callbacks.requestPermission();\n\n if (hasPermission && isPointerDown.value) {\n isDragging.value = true;\n isRecording.value = true;\n isPaused.value = false;\n recordingTime.value = 0;\n callbacks.onStart();\n timerInterval = setInterval(() => recordingTime.value++, 1000);\n\n try {\n mediaStream.value = await navigator.mediaDevices.getUserMedia({\n video: { facingMode: currentFacingMode.value },\n audio: true,\n });\n } catch (err) {\n console.error(\"Stream failed\", err);\n }\n }\n }, 400);\n };\n\n const onPointerMove = (event: PointerEvent) => {\n if (!isRecording.value || isLocked.value || !isDragging.value) return;\n\n const deltaX = event.clientX - startX.value;\n const deltaY = event.clientY - startY.value;\n\n if (!dragAxis.value) {\n if (deltaY < -10) dragAxis.value = \"y\";\n else if (deltaX < -10) dragAxis.value = \"x\";\n }\n\n if (dragAxis.value === \"y\") {\n dragOffset.value.y = Math.max(-100, Math.min(0, deltaY));\n if (dragOffset.value.y <= -60) {\n isLocked.value = true;\n resetDrag();\n }\n } else if (dragAxis.value === \"x\") {\n const cancelThreshold = inputWidth.value ? inputWidth.value / 3 : 150;\n dragOffset.value.x = Math.max(-cancelThreshold, Math.min(0, deltaX));\n if (deltaX <= -cancelThreshold) stopRecording(false);\n }\n };\n\n const onPointerUp = () => {\n isPointerDown.value = false;\n window.removeEventListener(\"pointermove\", onPointerMove);\n window.removeEventListener(\"pointerup\", onPointerUp);\n window.removeEventListener(\"pointercancel\", onPointerUp);\n\n if (pressTimer.value) {\n clearTimeout(pressTimer.value);\n pressTimer.value = null;\n }\n\n if (isRecording.value && !isLocked.value) {\n if (dragAxis.value === \"x\") stopRecording(false);\n else stopRecording(true);\n }\n resetDrag();\n };\n\n return {\n isRecording,\n isLocked,\n isPaused,\n formattedTime,\n dragOffset,\n isDragging,\n lockOpacity,\n cancelOpacity,\n isLongPress,\n onPointerDown,\n mediaStream,\n toggleCamera,\n togglePause,\n stopRecording,\n };\n}\n","<template>\n <div class=\"relative w-60.5 h-60.5 p-2 shrink-0 group select-none flex items-center justify-center\">\n\n <svg class=\"absolute w-57.5 h-57.5 -rotate-90 pointer-events-none z-20\" viewBox=\"0 0 230 230\">\n <circle cx=\"115\" cy=\"115\" r=\"113\"\n :class=\"[isUploading ? 'stroke-white/30' : 'stroke-white dark:stroke-surface']\" stroke-width=\"4\"\n fill=\"none\" />\n\n <circle cx=\"115\" cy=\"115\" r=\"113\" class=\"stroke-primary transition-all ease-linear\"\n :class=\"[isPlaying || isUploading ? 'duration-200' : 'duration-75']\" stroke-width=\"4\" fill=\"none\"\n stroke-linecap=\"round\" :stroke-dasharray=\"circumference\" :stroke-dashoffset=\"dashOffset\" />\n </svg>\n\n <div class=\"relative w-54.5 h-54.5 shrink-0 rounded-full overflow-hidden bg-[#1C1E22] z-10\"\n :class=\"[isUploading ? 'cursor-default' : 'cursor-pointer']\" @click=\"togglePlay\">\n\n <video ref=\"videoRef\" :src=\"mode === 'playback' ? videoUrl : undefined\" :poster=\"thumbnail\" playsinline loop\n muted class=\"w-full h-full object-cover transition-opacity duration-300\"\n :class=\"[isLoaded || mode === 'recording' ? 'opacity-100' : 'opacity-0']\" @timeupdate=\"handleTimeUpdate\"\n @ended=\"handleEnded\" @play=\"handlePlay\" @pause=\"handlePause\" @loadeddata=\"isLoaded = true\"></video>\n\n <div v-if=\"!isLoaded && mode === 'playback'\"\n class=\"absolute inset-0 flex items-center justify-center bg-surface \">\n </div>\n\n <div v-if=\"mode === 'playback' && !isUploading\"\n class=\"absolute inset-0 flex items-center justify-center transition-all duration-300\"\n :class=\"[isPlaying ? 'bg-transparent opacity-0' : ' bg-black/30 opacity-100']\">\n <BIcon :icon=\"isPlaying ? 'PhPause' : 'PhPlay'\" weight=\"light\"\n class=\"w-5 h-5 text-white transition-transform duration-300\"\n :class=\"[isPlaying ? 'scale-75' : 'scale-100 ml-1']\" />\n </div>\n\n <div v-if=\"isUploading\" class=\"absolute inset-0 flex items-center justify-center bg-black/40 z-20\">\n <BIcon icon=\"PhUploadSimple\" class=\"w-6 h-6 text-white\" />\n </div>\n\n <div v-if=\"mode === 'recording'\"\n class=\"absolute top-4 left-1/2 -translate-x-1/2 flex items-center justify-center gap-x-1\">\n <div class=\"w-2 h-2 rounded-full bg-error animate-pulse\"></div>\n </div>\n\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, computed, watch, onMounted, onBeforeUnmount, type PropType } from 'vue';\nimport { useChatActionStore } from '~/stores/chatActionStore';\n\nexport default defineComponent({\n name: 'VideoMessage',\n props: {\n videoUrl: {\n type: String,\n default: ''\n },\n thumbnail: {\n type: String,\n default: ''\n },\n mode: {\n type: String as () => 'playback' | 'recording',\n default: 'playback'\n },\n stream: {\n type: Object as PropType<MediaStream | null>,\n default: null\n },\n messageId: {\n type: String,\n required: false\n },\n isSent: {\n type: Boolean,\n default: true\n },\n isPaused: { type: Boolean, default: false },\n recordingTime: { type: Number, default: 0 },\n maxDuration: { type: Number, default: 60 }\n },\n setup(props) {\n const chatActionStore = useChatActionStore();\n const videoRef = ref<HTMLVideoElement | null>(null);\n const isPlaying = ref(false);\n const isLoaded = ref(false);\n const progress = ref(0);\n\n // --- Upload State ---\n const uploadData = computed(() => props.messageId ? chatActionStore.uploadProgress.get(props.messageId) : null);\n const isUploading = computed(() => !props.isSent && uploadData.value);\n\n // --- SVG Math ---\n const circumference = 2 * Math.PI * 115;\n const dashOffset = computed(() => {\n // Uploading progress\n if (isUploading.value && uploadData.value) {\n return circumference - (uploadData.value.progress / 100) * circumference;\n }\n\n // NEW: Live recording 60s progress\n if (props.mode === 'recording') {\n const progressPercent = Math.min((props.recordingTime / props.maxDuration) * 100, 100);\n return circumference - (progressPercent / 100) * circumference;\n }\n\n // Playback progress\n return circumference - (progress.value / 100) * circumference;\n });\n\n // --- Playback Logic ---\n const togglePlay = () => {\n if (props.mode === 'recording' || !videoRef.value || isUploading.value) return;\n\n if (isPlaying.value) {\n videoRef.value.pause();\n } else {\n videoRef.value.play();\n }\n };\n\n const handleTimeUpdate = () => {\n if (!videoRef.value || props.mode === 'recording' || isUploading.value) return;\n const current = videoRef.value.currentTime;\n const total = videoRef.value.duration;\n if (total) {\n progress.value = (current / total) * 100;\n }\n };\n\n const handleEnded = () => {\n isPlaying.value = false;\n progress.value = 0;\n if (videoRef.value) videoRef.value.currentTime = 0;\n };\n\n const handlePlay = () => { isPlaying.value = true; };\n const handlePause = () => { isPlaying.value = false; };\n\n // --- Recording Stream Logic ---\n watch(() => props.stream, (newStream) => {\n if (props.mode === 'recording' && videoRef.value) {\n if (newStream) {\n videoRef.value.srcObject = newStream;\n videoRef.value.play();\n } else {\n videoRef.value.srcObject = null;\n }\n }\n }, { immediate: true });\n\n watch(() => props.isPaused, (paused) => {\n if (props.mode === 'recording' && videoRef.value && videoRef.value.srcObject) {\n if (paused) {\n videoRef.value.pause();\n } else {\n videoRef.value.play();\n }\n }\n });\n\n onBeforeUnmount(() => {\n if (videoRef.value) {\n videoRef.value.srcObject = null;\n }\n });\n\n return {\n videoRef,\n isPlaying,\n isLoaded,\n circumference,\n dashOffset,\n isUploading,\n togglePlay,\n handleTimeUpdate,\n handleEnded,\n handlePlay,\n handlePause,\n };\n }\n});\n</script>","<template>\n <div class=\" pointer-events-none fixed top-0 left-0 md:w-full w-dvw md:absolute h-dvh md:backdrop-blur-none md:h-0 overflow-visible z-20\"\n :class=\"[isOpen ? 'backdrop-blur-lg md:bg-transparent bg-on-surface/10' : ' backdrop-blur-none']\">\n <div\n class=\" md:-translate-y-full pointer-events-none md:pb-4 md:block flex flex-col justify-between md:py-0 py-26 items-center md:h-auto h-full md:pr-4\">\n <div class=\" md:hidden\"></div>\n <div class=\" transition-all duration-200 ease-in-out \"\n :class=\"[isOpen ? ' opacity-100 scale-100 pointer-events-auto translate-y-0' : ' pointer-events-none scale-0 opacity-0 translate-y-1/4']\">\n <BubbleVideo mode=\"recording\" :stream=\"stream\" :is-paused=\"isPaused\" :recording-time=\"recordingTime\"\n :max-duration=\"60\" />\n </div>\n <div class=\" md:hidden px-4 py-3 flex items-center gap-x-6 rounded-full bg-surface shadow-floating origin-bottom\"\n :class=\"[isOpen ? ' opacity-100 scale-100 pointer-events-auto translate-y-0' : ' pointer-events-none scale-0 opacity-0 translate-y-1/4']\">\n <BIcon v-for=\"option in mobileOptions\" :key=\"option.key\" :icon=\"option.icon\"\n @click=\"handleOption(option.key)\" class=\" w-6 h-6 fill-on-surface\"\n :class=\"[option.disabled ? ' opacity-50 cursor-not-allowed' : 'cursor-pointer opacity-100']\" />\n </div>\n </div>\n </div>\n</template>\n<script lang=\"ts\">\nimport { ref, defineComponent, computed, onMounted, watch, type PropType } from 'vue';\nimport BubbleVideo from '../chat-bubbles/BubbleVideo.vue';\nimport { useDevice, useCallStore } from '~/nuxt-shims';\n\nexport interface PatientRefferalExposed {\n open: () => void;\n close: () => void;\n}\n\nexport default defineComponent({\n name: 'VideoRecordDisplay',\n components: {\n BubbleVideo,\n },\n props: {\n stream: { type: Object as PropType<MediaStream | null>, default: null },\n isPaused: { type: Boolean, default: false },\n recordingTime: { type: Number, default: 0 }\n },\n emits: ['flip-camera'],\n setup(props, { expose, emit }) {\n const callStore = useCallStore()\n const currentFacingMode = ref<\"user\" | \"environment\">(\"user\");\n const isFlashOn = ref(false);\n const { hardware } = useDevice();\n const isOpen = ref(false)\n const hasMultipleCameras = ref(false);\n const supportsTorch = ref(false);\n const flashIcon = computed(() => isFlashOn.value ? 'PhLightningSlash' : 'PhLightning')\n\n\n onMounted(async () => {\n try {\n const devices = await navigator.mediaDevices.enumerateDevices();\n const videoInputs = devices.filter(d => d.kind === 'videoinput');\n hasMultipleCameras.value = videoInputs.length > 1;\n } catch (err) {\n console.error(\"Failed to enumerate devices for camera count\", err);\n }\n });\n\n watch(() => props.stream, (newStream) => {\n if (newStream) {\n const track = newStream.getVideoTracks()[0];\n if (track && track.getCapabilities) {\n const caps = track.getCapabilities() as any;\n supportsTorch.value = !!caps.torch;\n } else {\n supportsTorch.value = false;\n }\n } else {\n supportsTorch.value = false;\n isFlashOn.value = false;\n }\n }, { immediate: true });\n\n const mobileOptions = computed(() => [\n {\n icon: 'PhArrowsClockwise',\n key: 'flip-camera',\n disabled: !hasMultipleCameras.value,\n },\n {\n icon: flashIcon.value,\n key: 'toggle-flash',\n disabled: !supportsTorch.value,\n }\n ]);\n\n const handleOption = async (key: string) => {\n const option = mobileOptions.value.find(o => o.key === key);\n if (option?.disabled) return;\n\n switch (key) {\n case 'toggle-flash':\n const track = props.stream?.getVideoTracks()[0];\n if (track) {\n try {\n isFlashOn.value = !isFlashOn.value;\n // Apply the native torch constraint to the existing track\n await track.applyConstraints({\n advanced: [{ torch: isFlashOn.value }]\n } as any);\n } catch (err) {\n console.error('Failed to toggle flash:', err);\n isFlashOn.value = !isFlashOn.value; // Revert UI if hardware rejects it\n }\n }\n break;\n case 'flip-camera':\n emit('flip-camera');\n break;\n }\n };\n\n\n const open = () => {\n isOpen.value = true;\n }\n\n const close = () => {\n isOpen.value = false;\n }\n expose({ close, open } as PatientRefferalExposed);\n\n\n return {\n mobileOptions,\n isOpen,\n handleOption,\n }\n }\n})\n</script>","<template>\n <div dir=\"rtl\" class=\" w-full relative\">\n <VideoRecordDisplay ref=\"videoDisplayRef\" :stream=\"mediaStream\" :is-paused=\"isPaused\"\n :recording-time=\"currentRecordingSeconds\" @flip-camera=\"handleFlipCamera\" />\n <div>\n <div :class=\"[textMode !== 'normal' ? ' h-10' : 'h-0']\"\n class=\" gap-x-3 px-3 w-full whitespace-nowrap overflow-hidden border-t select-none text-body-sm border-t-outline-variant flex relative z-30 justify-between items-center transition-all duration-200 ease-in-out bg-surface\">\n <BIcon :icon=\"textMode === 'edit' ? 'PhPencilSimpleLine' : 'PhArrowBendUpLeft'\"\n class=\" w-5 h-5 fill-on-surface shrink-0\" />\n <div class=\" flex-1 flex items-center gap-x-2\">\n <div v-if=\"textMode === 'reply'\" class=\" shrink-0 text-on-surface/50 \">{{\n displayActionName }} :</div>\n <div class=\" flex-1\">\n <div class=\" text-on-surface w-full overflow-hidden text-ellipsis line-clamp-1\">\n <SafeEmojiText :text=\"displayedActionText\" />\n </div>\n </div>\n </div>\n <BIcon icon=\"PhX\" class=\" cursor-pointer w-5 shrink-0 h-5 fill-on-surface/50\" @click=\"cancelAction\" />\n </div>\n </div>\n <div @contextmenu.prevent ref=\"rootElements\"\n :class=\"[(isRecording && !isLocked) || messageText.trim().length > 0 ? 'px-4' : 'px-4']\"\n class=\" transition-all duration-200 ease-in-out min-h-19 py-4 w-full bg-surface flex items-end border-t border-t-outline-variant gap-x-5 relative z-40 overflow-visible select-none \">\n\n <div class=\"relative flex items-center justify-center shrink-0 z-30 mb-0.5\" :style=\"{\n transform: `translate(${dragOffset.x}px, ${dragOffset.y}px)`,\n transition: isDragging ? 'none' : 'transform 0.2s cubic-bezier(0.4, 0, 0.2, 1)'\n }\">\n <div v-if=\"isRecording\"\n class=\"absolute -top-20 flex flex-col items-center justify-center bg-surface shadow-floating rounded-full w-9 transition-opacity\"\n :class=\"[isLocked ? 'pointer-events-auto py-1.5' : 'pointer-events-none py-3 gap-y-3']\"\n :style=\"{ opacity: lockOpacity }\">\n\n <template v-if=\"!isLocked\">\n <BIcon icon=\"PhLockKey\" class=\"w-5 h-5 fill-on-surface\" />\n </template>\n\n <template v-else>\n <div class=\"w-full h-9 flex items-center justify-center cursor-pointer\" @click=\"togglePause\">\n <BIcon :icon=\"isPaused ? 'PhPlayCircle' : 'PhPauseCircle'\"\n class=\"w-6 h-6 fill-on-surface\" />\n </div>\n </template>\n <BIcon icon=\"PhCaretUp\" class=\"w-4 h-4 fill-on-surface/60 animate-bounce\" />\n </div>\n\n <div class=\"flex items-center w-11 touch-none h-11 justify-center transition-all duration-200\"\n :class=\"[(isRecording && !isLocked) || messageText.trim().length > 0 ? ' rounded-full bg-primary/10' : 'w-6 h-6 bg-primary/0']\"\n @pointerdown=\"!isLocked ? handlePointerDown($event) : null\"\n @click=\"!isLocked ? toggleSecondaryMessageType() : null\">\n <BIcon v-if=\"!isLocked && messageText.trim().length == 0\" :icon=\"secondaryMessageIcon\"\n :weight=\"isRecording ? 'fill' : 'regular'\"\n class=\"cursor-pointer w-6 h-6 shrink-0 transition-colors\"\n :class=\"[isRecording ? ' fill-primary' : iconClass]\" />\n <div v-else\n class=\" min-w-11 min-h-11 aspect-square rounded-full bg-gradient-primary-secondary flex items-center justify-center cursor-pointer\">\n <BIcon icon=\"PhPaperPlaneTilt\" class=\" w-6 h-6 fill-white shrink-0 \" @click=\"sendRecording\" />\n </div>\n </div>\n </div>\n\n <div v-show=\"!isRecording\" class=\"flex-1 flex items-end gap-x-5\">\n <div class=\" min-h-11 flex items-center w-full\">\n <div ref=\"inputRef\" contenteditable=\"true\" @keydown.enter.exact.prevent=\"handleEnterKey\"\n @input=\"handleContentInput\" @focus=\"onInputFocus\" @blur=\"saveCursorPosition\"\n @keyup=\"saveCursorPosition\" @mouseup=\"saveCursorPosition\" :data-placeholder=\"inputPlaceholder\"\n class=\"text-body-md text-on-surface outline-none flex-1 bg-transparent z-10 max-h-[144px] overflow-y-auto hide-scrollbar leading-6 py-1 cursor-text whitespace-pre-wrap break-words empty:before:content-[attr(data-placeholder)] empty:before:text-on-surface/50 pointer-events-auto\">\n </div>\n </div>\n <div class=\"shrink-0 flex items-center gap-x-8 z-10 h-11\" :class=\"[iconClass]\">\n <div class=\"hidden md:block\">\n <BMenu ref=\"menuRef\">\n <template #trigger>\n <BIcon icon=\"PhSmiley\" class=\"cursor-pointer w-6 h-6 fill-on-surface\"\n @mousedown.prevent />\n </template>\n <div class=\"\">\n <BEmojiPicker @select=\"handleEmojiSelect\" />\n </div>\n </BMenu>\n </div>\n\n <!-- MOBILE: Toggle Button -->\n <BIcon icon=\"PhSmiley\" class=\"md:hidden cursor-pointer w-6 h-6 fill-on-surface\" @mousedown.prevent\n @click=\"toggleMobileEmoji\" />\n <InputAttachement :initial-caption=\"messageText\" @send-attachments=\"handleAttachments\" />\n </div>\n </div>\n\n <div v-show=\"isRecording\" class=\"flex-1 justify-between -translate-y-2 flex items-center \">\n <div></div>\n <div class=\" flex justify-center items-center text-body-md text-on-surface/70 transition-opacity\"\n :style=\"{ opacity: cancelOpacity }\">\n <span v-if=\"!isLocked\">{{ t('chat.swipeToCancel') }}</span>\n <span v-else class=\"text-primary cursor-pointer px-4 z-20\" @click=\"cancelRecording\">{{\n t('chat.cancel')\n }}</span>\n </div>\n\n <div class=\" left-6 flex items-center gap-x-2 shrink-0 z-10\">\n <div class=\"w-2.5 h-2.5 relative\">\n <div class=\"w-2.5 h-2.5 rounded-full bg-error\"></div>\n <div class=\"w-2.5 h-2.5 rounded-full bg-error animate-ping absolute top-0 left-0 inset-0\"></div>\n </div>\n <span class=\"text-body-md min-w-12 text-center text-on-surface tabular-nums mt-0.5\" dir=\"ltr\">{{\n formattedTime\n }}</span>\n </div>\n </div>\n </div>\n <div class=\"md:hidden w-full transition-all relative z-30 duration-300 ease-[cubic-bezier(0.33,1,0.68,1)] overflow-hidden\"\n :class=\"showMobileEmojiPicker ? 'max-h-60 opacity-100' : 'max-h-0 opacity-0'\">\n <BEmojiPicker @select=\"handleEmojiSelect\" />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, computed, nextTick, watch, onMounted, onUnmounted } from 'vue';\nimport { useI18n, useChatActionStore, useChatStore } from '~/nuxt-shims';\nimport { type Menu } from '~/types/components/menu';\nimport InputAttachement from './chat-input/InputAttachement.vue';\nimport { PopupState, useAppPermissions } from '~/composables/useAppPermissions';\nimport { useChatRecording } from '~/composables/chat/useChatRecording';\nimport { useCallStore } from '~/nuxt-shims';\nimport type { ExtendedMessage, Message } from '~/types/chat';\nimport SafeEmojiText from '../general/SafeEmojiText.vue';\nimport { parseEmojiArray } from '~/utils/emojiParser';\nimport VideoRecordDisplay from './chat-input/VideoRecordDisplay.vue';\nexport default defineComponent({\n name: 'ChatInput',\n components: { InputAttachement, SafeEmojiText, VideoRecordDisplay },\n props: { isActive: { type: Boolean, default: false } },\n emits: ['send', 'edit'],\n setup(props, { expose, emit }) {\n const { t } = useI18n();\n const { requestWithPopup, checkMediaStatus } = useAppPermissions();\n const chatActionStore = useChatActionStore();\n const chatStore = useChatStore()\n const callStore = useCallStore()\n const savedRange = ref<Range | null>(null);\n const isSelectingEmoji = ref(false);\n\n const textMode = ref<'normal' | 'edit' | 'reply'>('normal');\n const inputWidth = computed(() => rootElements.value?.clientWidth);\n const editingMessageData = ref<ExtendedMessage | null>(null); // Replace 'any' with ExtendedMessage if imported\n const replyingToMessageData = ref<ExtendedMessage | null>(null);\n\n chatActionStore.editBus.on((payload) => handleEditMessage(payload))\n // const saveEdit = chatActionStore.saveEdit;\n\n\n const videoDisplayRef = ref<any>(null);\n\n const recording = useChatRecording(inputWidth, {\n onStart: () => {\n if (secondaryMessageType.value === 'video') videoDisplayRef.value?.open();\n },\n onCancel: () => {\n if (secondaryMessageType.value === 'video') videoDisplayRef.value?.close();\n },\n onSend: ((mediaUrl?: string) => {\n const finalUrl = mediaUrl || 'placeholder';\n const msg = createBaseMessage();\n msg.type = secondaryMessageType.value as any;\n if (msg.type === 'voice') msg.voiceUrl = finalUrl;\n if (msg.type === 'video' as any) msg.videoUrl = finalUrl;\n\n chatActionStore.sendMessage([msg]);\n chatActionStore.clearActions();\n\n // Auto-close on send\n if (secondaryMessageType.value === 'video') videoDisplayRef.value?.close();\n }) as () => void,\n requestPermission: async () => await ensurePermissions()\n });\n\n // Parse formattedTime (\"00:15\") into exact seconds\n const currentRecordingSeconds = computed(() => {\n if (!recording.formattedTime.value) return 0;\n const [minutes, seconds] = recording.formattedTime.value.split(':').map(Number);\n return (minutes * 60) + (seconds || 0);\n });\n\n // Force-send at 60 seconds\n watch(currentRecordingSeconds, (sec) => {\n if (sec >= 60 && recording.isRecording.value) {\n recording.stopRecording(true); // true = send\n }\n });\n\n\n const handleEditMessage = (msg: ExtendedMessage) => {\n textMode.value = 'edit';\n editingMessageData.value = msg;\n messageText.value = msg.text || '';\n nextTick(() => {\n inputRef.value?.focus();\n adjustHeight();\n });\n }\n\n watch(() => chatActionStore.replyingTo, (msg) => {\n if (msg) {\n textMode.value = 'reply';\n replyingToMessageData.value = msg;\n\n nextTick(() => {\n inputRef.value?.focus();\n });\n } else if (textMode.value === 'reply') {\n // Only reset if we were actually in reply mode\n textMode.value = 'normal';\n replyingToMessageData.value = null;\n }\n });\n\n // 3. ADD THE CANCEL FUNCTION\n const cancelAction = () => {\n chatActionStore.clearActions();\n };\n\n watch(() => textMode.value, () => {\n })\n\n // Refs\n const rootElements = ref<HTMLElement | null>(null);\n const inputRef = ref<HTMLElement | null>(null);\n const menuRef = ref<Menu | null>(null);\n\n // State\n const messageText = ref('');\n const secondaryMessageType = ref<'video' | 'voice'>('voice');\n\n //const { requestMediaAccess, checkMediaStatus } = useAppPermissions();\n\n\n\n\n // --- Permission Flow ---\n let permissionResolver: ((value: boolean) => void) | null = null;\n\n const ensurePermissions = async () => {\n const isVideo = secondaryMessageType.value === 'video';\n const currentStatus = await checkMediaStatus();\n\n const status = isVideo ? currentStatus.cam : currentStatus.mic;\n\n // 1. If already granted, proceed immediately\n if (status === 'granted') return true;\n\n // 2. If denied or unknown, trigger the modular popup via the bus\n const state: PopupState = isVideo\n ? (status === 'denied' ? 'cam-error' : 'cam-permission')\n : (status === 'denied' ? 'mic-error' : 'mic-permission');\n\n // This waits for the popup to resolve (user clicks allow + browser prompt success)\n return await requestWithPopup(state);\n };\n\n const handlePopupCancel = () => {\n if (permissionResolver) permissionResolver(false);\n permissionResolver = null;\n };\n\n // --- Input Logistics ---\n const adjustHeight = () => {\n if (!inputRef.value) return;\n inputRef.value.style.height = 'auto';\n inputRef.value.style.height = `${inputRef.value.scrollHeight}px`;\n };\n\n const createBaseMessage = (): Message => {\n return {\n id: String(Date.now() + Math.floor(Math.random() * 1000)), // Temporary fake ID\n conversationId: chatStore.activeConversationId ?? \"\",\n date: new Date(),\n type: 'text', // default\n isEdited: false,\n senderId: chatStore.currentUserId,\n isSent: false,\n isRead: false, // Mine are always read\n repliedTo: chatActionStore.replyingTo || undefined // Inject reply data if active\n } as Message;\n };\n\n // 4. Update handleAttachments to map payloads\n const handleAttachments = (payloads: any[]) => {\n const newMessages: Message[] = payloads.map(payload => {\n const msg = createBaseMessage();\n msg.type = payload.type;\n if (payload.type === 'text') msg.text = payload.text;\n if (payload.type === 'image') msg.imageUrl = payload.imageUrl;\n if (payload.type === 'file') msg.fileUrl = payload.fileUrl;\n if (payload.type === 'voice') msg.voiceUrl = payload.voiceUrl;\n if (payload.type === 'video') msg.videoUrl = payload.videoUrl;\n return msg;\n });\n\n // Call Store directly!\n chatActionStore.sendMessage(newMessages);\n\n messageText.value = '';\n chatActionStore.clearActions();\n };\n\n // 5. Update sendMessage to use the same logic\n const sendMessage = () => {\n if (messageText.value.trim().length === 0) return;\n\n if (textMode.value === 'edit' && editingMessageData.value) {\n chatActionStore.saveEditMessage(editingMessageData.value.id, messageText.value);\n } else {\n const msg = createBaseMessage();\n msg.type = 'text';\n msg.text = messageText.value;\n chatActionStore.sendMessage([msg]);\n }\n\n messageText.value = '';\n if (inputRef.value) inputRef.value.innerHTML = ''; // MUST CLEAR DIV HTML\n textMode.value = 'normal'\n chatActionStore.clearActions();\n nextTick(() => adjustHeight());\n };\n\n\n const handlePointerDown = (event: PointerEvent) => {\n if (messageText.value.trim().length > 0) {\n sendMessage();\n return;\n }\n menuRef.value?.close();\n recording.onPointerDown(event);\n\n // NOTE: The 300ms setTimeout has been completely removed from here. \n // The @click event now handles the toggle safely!\n };\n\n const toggleSecondaryMessageType = () => {\n // Only toggle if we are NOT holding it down and NOT already recording\n if (!recording.isLongPress.value && !recording.isRecording.value) {\n secondaryMessageType.value = secondaryMessageType.value === 'voice' ? 'video' : 'voice';\n }\n };\n\n const handleGlobalKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n if (textMode.value !== 'normal') {\n cancelAction();\n } else if (chatActionStore.selectedArray.length > 0) {\n cancelAction()\n }\n else {\n handleEscapeNavigation()\n }\n }\n };\n\n const handleEscapeNavigation = () => {\n const isCallMode = callStore.isActive && !callStore.isPiP;\n const isProfileView = chatStore.profileViewOpen;\n\n if (isCallMode) {\n callStore.minimize();\n } else if (isProfileView) {\n chatStore.closeProfile();\n } else {\n chatStore.setSelectedChat(null);\n }\n };\n\n onMounted(() => {\n window.addEventListener('keydown', handleGlobalKeyDown);\n });\n\n onUnmounted(() => {\n window.removeEventListener('keydown', handleGlobalKeyDown);\n });\n\n expose({ focus: () => inputRef.value?.focus() });\n\n const displayedActionText = computed(() => {\n let message = textMode.value === 'edit' ? editingMessageData.value : replyingToMessageData.value\n if (message?.voiceUrl && message.voiceUrl.trim().length > 0) return t('chat.attachementTypes.voice')\n if (message?.videoUrl && message.videoUrl.trim().length > 0) return t('chat.attachementTypes.video')\n if (message?.imageUrl && message.imageUrl.length > 0) return t('chat.attachementTypes.image')\n if (message?.fileUrl && message.fileUrl.trim().length > 0) return t('chat.attachementTypes.file')\n return message?.text\n })\n\n const displayActionName = computed(() => {\n let message = replyingToMessageData.value?.senderId\n if (textMode.value === 'edit') return t('chat.you')\n if (chatStore.currentUserId === message) return t('chat.you')\n return `${replyingToMessageData.value?.contact?.name}`\n })\n\n // --- Add these new refs ---\n const showMobileEmojiPicker = ref(false);\n const lastCursorPos = ref({ start: 0, end: 0 });\n\n // --- Add these new methods ---\n const saveCursorPosition = () => {\n const selection = window.getSelection();\n if (selection && selection.rangeCount > 0 && inputRef.value) {\n // Ensure we are only saving the cursor if it's currently inside our input div\n if (inputRef.value.contains(selection.anchorNode)) {\n savedRange.value = selection.getRangeAt(0).cloneRange();\n }\n }\n };\n\n const onInputFocus = () => {\n if (isSelectingEmoji.value) return;\n showMobileEmojiPicker.value = false;\n };\n\n const toggleMobileEmoji = () => {\n showMobileEmojiPicker.value = !showMobileEmojiPicker.value;\n if (showMobileEmojiPicker.value) {\n saveCursorPosition(); // Save where we were typing\n inputRef.value?.blur(); // Telegram UX: Blur input to hide the mobile keyboard\n }\n };\n\n const handleEmojiSelect = (emoji: string) => {\n isSelectingEmoji.value = true;\n if (!inputRef.value) return;\n\n // Force focus on the div\n inputRef.value.focus();\n\n const selection = window.getSelection();\n let range;\n\n // Restore the exact cursor position\n if (savedRange.value) {\n range = savedRange.value;\n selection?.removeAllRanges();\n selection?.addRange(range);\n } else {\n // Fallback: If no cursor is saved, put the cursor at the very end\n range = document.createRange();\n range.selectNodeContents(inputRef.value);\n range.collapse(false);\n selection?.removeAllRanges();\n selection?.addRange(range);\n }\n\n // Delete any text the user currently has highlighted\n range.deleteContents();\n\n // Parse the incoming emoji to get the Hex code\n const parsed = parseEmojiArray(emoji);\n if (parsed.length > 0 && parsed[0].type === 'emoji') {\n const chunk = parsed[0];\n\n // Create the physical image element\n const img = document.createElement('img');\n img.src = `/emojis/apple/webp/${chunk.hex}.webp`;\n img.alt = chunk.content;\n img.className = \"inline-block w-5 h-5 mx-0.5 align-middle select-text pointer-events-none\";\n\n // Drop it at the cursor\n range.insertNode(img);\n\n // Move the blinking cursor to the right side of the newly inserted image\n range.setStartAfter(img);\n range.collapse(true);\n selection?.removeAllRanges();\n selection?.addRange(range);\n\n // Save this new position so the next emoji doesn't reset\n savedRange.value = range.cloneRange();\n }\n\n // Immediately trigger your existing text extractor so messageText state updates\n handleContentInput();\n\n nextTick(() => {\n // Only keep focus if we aren't using the mobile pop-up picker\n if (showMobileEmojiPicker.value) {\n inputRef.value?.blur();\n }\n adjustHeight();\n });\n isSelectingEmoji.value = false;\n };\n\n const handleEnterKey = (e: KeyboardEvent) => {\n if (e.shiftKey) return; // Allow Shift+Enter for new lines\n e.preventDefault();\n sendMessage();\n };\n\n const handleContentInput = () => {\n if (!inputRef.value) return;\n let rawText = '';\n\n // Loop through DOM nodes to grab text and emoji alt tags\n inputRef.value.childNodes.forEach((node: any) => {\n if (node.nodeType === 3) {\n rawText += node.textContent; // Standard text\n } else if (node.nodeName === 'IMG') {\n rawText += node.alt; // Native emoji from the image alt tag\n } else if (node.nodeName === 'DIV' || node.nodeName === 'BR') {\n rawText += '\\n'; // Handle line breaks\n }\n });\n messageText.value = rawText;\n adjustHeight();\n };\n\n const placeCaretAtEnd = (el: HTMLElement) => {\n el.focus();\n if (typeof window.getSelection !== \"undefined\" && typeof document.createRange !== \"undefined\") {\n const range = document.createRange();\n range.selectNodeContents(el);\n range.collapse(false);\n const sel = window.getSelection();\n sel?.removeAllRanges();\n sel?.addRange(range);\n }\n };\n\n const handleFlipCamera = () => {\n if (typeof (recording as any).toggleCamera === 'function') {\n (recording as any).toggleCamera();\n } else {\n console.warn(\"Camera flip requested, but toggleCamera method is missing in useChatRecording\");\n }\n };\n\n\n return {\n t, rootElements, inputRef, menuRef, messageText, handlePopupCancel,\n secondaryMessageIcon: computed(() => secondaryMessageType.value === 'voice' ? 'PhMicrophone' : 'PhCamera'),\n inputDisabled: computed(() => !props.isActive),\n inputPlaceholder: computed(() => props.isActive ? t('chat.placeholder') : t('chat.chatLocked')),\n iconClass: computed(() => !props.isActive ? 'opacity-50 fill-on-surface pointer-events-none' : 'fill-on-surface opacity-100 pointer-events-auto'),\n\n adjustHeight, handleEmojiSelect, handlePointerDown, sendMessage,\n sendRecording: () => recording.stopRecording(true),\n cancelRecording: () => recording.stopRecording(false),\n toggleSecondaryMessageType,\n handleEnterKey,\n cancelAction,\n textMode,\n editingMessageData,\n replyingToMessageData,\n displayedActionText,\n displayActionName,\n handleAttachments,\n showMobileEmojiPicker,\n onInputFocus,\n handleContentInput,\n handleFlipCamera,\n videoDisplayRef,\n currentRecordingSeconds,\n saveCursorPosition,\n toggleMobileEmoji,\n ...recording // Spreads all the recording refs (isRecording, dragOffset, formattedTime, etc.) to the template\n };\n }\n});\n</script>\n","export default \"data:image/webp;base64,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\"","<template>\n <div class=\"w-full flex gap-x-2 select-none items-center\">\n <div class=\"flex text-left flex-col gap-y-0.5 flex-1 min-w-0\">\n <div class=\"text-on-surface text-label-md truncate\" v-loading=\"isLoading\">{{ fileName }}</div>\n <div dir=\"ltr\" class=\"text-body-sm text-on-surface/70\" v-loading=\"isLoading\">{{ formattedSize }}</div>\n </div>\n\n <div v-loading=\"isLoading\" class=\"relative shrink-0 cursor-pointer active:scale-95 transition-transform\">\n <BIcon icon=\"PhFile\" class=\" fill-surface-variant-3 w-10 h-10\" weight=\"fill\" />\n <div class=\"absolute bottom-2 right-0 bg-error rounded-sm px-1 py-0.5 flex items-center justify-center\">\n <div class=\"text-center text-white text-[7px] font-bold leading-none uppercase tracking-wide\">\n {{ fileExt }}\n </div>\n </div>\n </div>\n </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, computed } from 'vue';\nimport { useI18n, formatBytes } from '~/nuxt-shims';\n\nexport default defineComponent({\n name: 'ProfileFileDisplay',\n props: {\n url: {\n type: String,\n required: true\n },\n loading: {\n type: Boolean,\n default: true,\n }\n },\n setup(props) {\n const { t } = useI18n()\n const fetchedSize = ref<number | null>(null);\n const isLoading = computed(() => props.loading)\n\n\n\n const fileName = computed(() => {\n try {\n const urlObj = new URL(props.url);\n const path = urlObj.pathname;\n return decodeURIComponent(path.split('/').pop() || 'Unknown_File');\n } catch {\n return 'File';\n }\n });\n\n // Fix 2: Robust extension extraction and forced Uppercase\n const fileExt = computed(() => {\n const name = fileName.value;\n const lastDot = name.lastIndexOf('.');\n if (lastDot !== -1) {\n return name.substring(lastDot + 1).toUpperCase().substring(0, 4);\n }\n return 'FILE';\n });\n\n const getFileSize = async () => {\n try {\n // Perform a lightweight HEAD request just to get the size\n const res = await fetch(props.url, { method: 'HEAD' });\n const length = res.headers.get('Content-Length');\n if (length) fetchedSize.value = parseInt(length, 10);\n } catch (e) {\n console.warn('Could not fetch file size upfront:', e);\n fetchedSize.value = 0; // Fallback\n }\n };\n\n\n\n const formattedSize = computed(() => {\n\n return fetchedSize.value ? formatBytes(fetchedSize.value) : t('chat.file.calculating');\n });\n\n onMounted(() => {\n getFileSize()\n })\n\n\n return {\n formattedSize,\n fileExt,\n fileName,\n isLoading,\n }\n }\n})\n</script>","<template>\n <div class=\" transition-none md:transition-all duration-300 ease-in-out h-full overflow-hidden rtl:border-l-surface-variant ltr:border-surface-variant ltr:border-r rtl:border-l bg-surface shrink-0\"\n :class=\"[isOpen ? ' w-dvw md:w-80' : 'w-0 border-none!']\">\n <div class=\" w-full h-full flex flex-col\">\n <div class=\" flex flex-col md:pt-16.5 md:px-2 w-full h-full\">\n <div class=\" shrink-0 w-full relative\">\n <div class=\" w-full h-29\">\n <BImage\n class=\" md:rounded-xl overflow-hidden w-full h-full max-w-full min-w-full max-h-full min-h-full\"\n :src=\"profileBackground\">\n <div class=\" w-full h-full p-2\">\n <BIcon icon=\"PhX\" class=\" fill-white w-5 h-5 cursor-pointer\" @click=\"closeSidebar\" />\n </div>\n </BImage>\n </div>\n <div class=\" w-full absolute z-20 flex justify-center items-center -translate-y-1/2\">\n <div class=\" w-25 h-25 rounded-full overflow-hidden\">\n <ContactAvatar v-if=\"profile\" :contact=\"profile\" />\n </div>\n </div>\n <div class=\" h-12.5 w-full\"></div>\n </div>\n <div class=\" shrink-0 w-full mt-2 flex flex-col items-center select-none justify-center gap-y-2\">\n <div v-loading=\"isLoading\" class=\" text-title-md text-on-surface\">{{ localProfile.name }}</div>\n <BLabel v-loading=\"isLoading\" color=\"primary\" :text=\"t('chat.online')\"\n v-if=\"localProfile.isOnline\" />\n </div>\n <div class=\" shrink-0 w-full px-6\">\n <div class=\" w-full py-4 flex items-center justify-center gap-x-2\">\n <div v-loading=\"isLoading\" @click=\"handleAction(action)\"\n class=\" w-15.5 aspect-square flex items-center flex-col gap-y-0.5 justify-center rounded-xl bg-surface-variant transition-all duration-200 ease-in-out\"\n v-for=\"action in actionButtons\" :key=\"action.key\"\n :class=\"[action.active ? 'opacity-100 cursor-pointer' : ' cursor-not-allowed opacity-50']\">\n <BIcon :class=\"[action.color === 'error' ? 'fill-error' : 'fill-primary']\" class=\" w-6 h-6\"\n :icon=\"action.icon\" weight=\"fill\" />\n <div class=\" text-center text-on-surface text-[10px] select-none\">{{ action.title }}\n </div>\n </div>\n </div>\n <div class=\" w-full \">\n <div class=\" h-0.5 bg-surface-variant rounded-full w-full\"></div>\n </div>\n <div class=\" w-full flex flex-col gap-y-4 py-4\">\n <div v-for=\"(info, index) in displayedInfo\" :key=\"index\"\n class=\" w-full flex flex-col select-none gap-y-1\">\n <div v-loading=\"isLoading\" class=\" text-body-sm text-on-surface/50\">{{ info.title }}</div>\n <div v-loading=\"isLoading\" class=\" text-body-md text-on-surface\">{{ info.value }}</div>\n </div>\n </div>\n </div>\n <div class=\" w-full flex-1 flex flex-col min-h-0 select-none\">\n <div v-if=\"!shouldShowTabs\" class=\" flex min-h-0 flex-col gap-y-1 w-full h-full\">\n <div v-if=\"fileAttachements.length > 0\" class=\" w-full shrink-0 flex flex-col gap-y-1\">\n <div class=\" text-on-surface/50 text-body-sm\">{{ t('chat.info.files') }}</div>\n <FileDisplay :loading=\"isLoadingAttachements\" v-for=\"(file, index) in fileAttachements\"\n :key=\"index\" :url=\"file\" />\n </div>\n <div v-if=\"mediaAttachements.length > 0\" class=\" flex-1 flex-col gap-y-1\">\n <div class=\" shrink-0 text-on-surface/50 text-body-sm\">{{ t('chat.info.media') }}</div>\n <div class=\" flex-1 w-full \" ref=\"imagesSection\">\n <div class=\" w-full grid grid-cols-4 gap-x-4 gap-y-3 \">\n <div v-for=\"(media, index) in mediaAttachements\" :key=\"index\"\n class=\" aspect-square md:w-14 md:h-14 overflow-hidden rounded-xl\">\n <BImage :src=\"media\"\n class=\" w-full h-full min-w-full max-w-full max-h-full min-h-full\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n <div v-else class=\" w-full min-h-0 h-full flex flex-col gap-y-2\">\n <BTab v-model=\"currentTab\" :tabs=\"tabs\" class=\"min-h-0 shrink-0\" />\n <div class=\" w-full overflow-hidden flex-1 min-h-0\">\n <div :class=\"[currentTab === 0 ? ' translate-x-0' : ' ltr:-translate-x-1/2 rtl:translate-x-1/2']\"\n class=\" flex transition-all min-h-0 duration-200 ease-in-out w-[200%] h-full\">\n\n <div class=\" h-full min-h-0 w-1/2 px-1\">\n <BVirtualVerticalList :items=\"chunkedMedia\" :loading=\"isLoadingMedia\"\n :has-next-page=\"hasMediaNextPage\" @load-more=\"fetchMoreMedia\">\n <template #item=\"{ item: row }\">\n <div class=\"w-full grid grid-cols-4 gap-4 pb-3\">\n <div v-for=\"(media, idx) in row\" :key=\"idx\"\n class=\" aspect-square md:w-14 md:h-14 overflow-hidden rounded-xl\">\n <BImage :src=\"media\"\n class=\"w-full h-full min-w-full max-w-full max-h-full min-h-full\" />\n </div>\n </div>\n </template>\n </BVirtualVerticalList>\n </div>\n\n <div class=\" h-full min-h-0 w-1/2 px-1\">\n <BVirtualVerticalList :items=\"fileAttachements\" :loading=\"isLoadingAttachements\"\n :has-next-page=\"hasFileNextPage\" @load-more=\"fetchMoreFiles\">\n <template #item=\"{ item: file }\">\n <div class=\"pb-2\">\n <FileDisplay :loading=\"isLoadingAttachements && currentFilePage === 0\"\n :url=\"file\" />\n </div>\n </template>\n </BVirtualVerticalList>\n </div>\n\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\n// @ts-nocheck — grandfathered legacy chat-tree type errors; lift incrementally\nimport { defineComponent, type PropType, ref, watch, onMounted } from 'vue';\nimport type { Contact } from '~/types/chat';\nimport { useDate, useI18n, useCallStore, useChatStore } from '~/nuxt-shims';\nimport profileBackground from '~/assets/lib-images/chat/profile-background.webp'\nimport ContactAvatar from './contact/ContactAvatar.vue';\nimport FileDisplay from './profile/FileDisplay.vue';\n\ninterface Action {\n title: string;\n icon: string;\n key: 'end' | 'refer' | 'voice-call' | 'video-call';\n active: boolean | null;\n color?: string;\n}\n\nexport default defineComponent({\n name: 'ChatProfileOverview',\n props: {\n profile: {\n type: Object as PropType<Contact | null>,\n required: true,\n }\n },\n components: {\n ContactAvatar,\n FileDisplay,\n },\n setup(props) {\n const { getYearsPassed } = useDate()\n const callStore = useCallStore()\n const { t } = useI18n()\n const chatStore = useChatStore()\n const imageList = ref<HTMLElement | null>(null)\n const isLoadingAttachements = ref(false)\n const isLoadingMedia = ref(false)\n const hasMediaNextPage = ref(false)\n const hasFileNextPage = ref(false)\n const currentFilePage = ref(0)\n const currentMediaPage = ref(1)\n\n const role = computed(() => chatStore.chosenRole)\n const listHeight = computed(() => {\n if (!imageList.value) return 12;\n return imageList.value.clientHeight;\n })\n const maxImageCounts = computed(() => {\n return Math.max(Math.floor(listHeight.value / 62) * 4, 12);\n });\n const imagesPerPage = computed(() => maxImageCounts.value * 4)\n const filesPerPage = computed(() => maxImageCounts.value)\n const maxFileCounts = ref(2)\n const tabs = computed(() => [t('chat.info.media'), t('chat.info.files')])\n const currentTab = ref(0)\n const shouldShowTabs = computed(() => fileAttachements.value.length > maxFileCounts.value || mediaAttachements.value.length > maxImageCounts.value)\n\n\n const mockProfile = ref<Contact>(\n {\n id: 1,\n name: \"امیر\",\n lastName: \"سعیدی\",\n isOnline: true,\n lastSeen: new Date(),\n imageUrl: \"https://i.pravatar.cc/150?u=1\",\n isActive: false,\n unreadCount: 2,\n serviceType: \"chat\",\n birthDate: new Date(),\n phoneNumber: \"09134168227\",\n nationalCode: \"1235678901\",\n lastMessage: {\n id: 101,\n conversationId: 1,\n date: new Date(new Date().getTime() - 1000 * 60 * 5),\n type: \"text\",\n text: \"سلام، وقت بخیر؟\",\n senderId: 1,\n isEdited: false,\n isSent: true,\n isRead: false,\n },\n },\n )\n\n const isOpen = ref(false)\n const localProfile = ref<Contact>(\n mockProfile.value\n )\n\n\n const isInCall = computed(() => callStore.isActive)\n\n const actionButtons = computed((): Action[] => [\n {\n title: t('chat.options.end'),\n icon: 'PhX',\n active: localProfile.value == undefined ? false : localProfile.value?.isActive,\n key: 'end',\n color: 'error'\n },\n {\n title: t('chat.options.refer'),\n icon: 'PhTreeStructure',\n active: localProfile.value == undefined ? false : localProfile.value?.isActive,\n key: 'refer'\n },\n {\n title: t('chat.options.voiceCall'),\n icon: 'PhPhoneCall',\n active: localProfile.value == undefined || isInCall.value ? false : localProfile.value?.isActive && (localProfile.value.serviceType !== 'chat'),\n key: 'voice-call'\n },\n {\n title: t('chat.options.videoCall'),\n icon: 'PhVideoCamera',\n active: localProfile.value == undefined || isInCall.value ? false : localProfile.value?.isActive && localProfile.value.serviceType === 'video-call',\n key: 'video-call'\n },\n ])\n\n // Watch the store to open/close the profile sidebar\n watch(() => chatStore.profileViewOpen, (isProfileOpen) => {\n if (isProfileOpen) {\n // FIX: Populate local data immediately when opening \n // This prevents the blank screen when reopening the same profile\n if (props.profile) {\n localProfile.value = props.profile\n }\n isOpen.value = true\n } else {\n isOpen.value = false\n // Wait for animation to finish before clearing local data\n setTimeout(() => {\n // Only clear if the sidebar is still closed (prevents race conditions)\n if (!isOpen.value) {\n localProfile.value = mockProfile.value\n }\n }, 300)\n }\n }, { immediate: true })\n\n // Update localProfile if the user switches chats while the sidebar is already open\n watch(() => props.profile, (newVal) => {\n if (newVal) {\n localProfile.value = newVal\n }\n })\n\n const isLoading = computed(() => props.profile === null)\n\n\n const closeSidebar = () => {\n chatStore.closeProfile()\n }\n\n\n const fileAttachements = ref<string[]>(new Array(imagesPerPage.value).fill(''));\n const mediaAttachements = ref<string[]>(new Array(filesPerPage.value).fill(''));\n const showPersonalInfo = computed(() => role.value !== 'user')\n\n const handleAction = (action: Action) => {\n if (!action.active) return\n switch (action.key) {\n case 'end':\n\n break;\n case 'refer':\n\n break;\n case 'voice-call':\n case 'video-call':\n if (chatStore.activeConversationId && props.profile) {\n callStore.startCall(props.profile, chatStore.activeConversationId, action.key)\n }\n break;\n }\n }\n\n const chunkedMedia = computed(() => {\n const rows = [];\n for (let i = 0; i < mediaAttachements.value.length; i += 4) {\n rows.push(mediaAttachements.value.slice(i, i + 4));\n }\n return rows;\n });\n\n // Mock API Functions\n const fetchMoreMedia = async () => {\n if (isLoadingMedia.value || !hasMediaNextPage.value) return;\n isLoadingMedia.value = true;\n\n await new Promise(resolve => setTimeout(resolve, 1000));\n\n // Get the length from the computed property\n const count = imagesPerPage.value\n\n const newMedia = Array.from({ length: count }).map((_, i) =>\n `https://picsum.photos/id/${110 + (currentMediaPage.value * count) + i}/400/400`\n );\n\n // If we only have empty strings (initial state), replace them.\n // Otherwise, append the new page.\n if (mediaAttachements.value.length > 0 && mediaAttachements.value.every(i => i === '')) {\n mediaAttachements.value = newMedia;\n } else {\n mediaAttachements.value.push(...newMedia);\n }\n\n currentMediaPage.value++;\n if (currentMediaPage.value >= 5) hasMediaNextPage.value = false;\n isLoadingMedia.value = false;\n };\n\n const fetchMoreFiles = async () => {\n if (isLoadingAttachements.value || !hasFileNextPage.value) return;\n isLoadingAttachements.value = true;\n\n // Mock API Delay\n await new Promise(resolve => setTimeout(resolve, 1000));\n\n const count = filesPerPage.value;\n\n // Procedurally populate with the same URL as requested\n const newFiles = new Array(count).fill('https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf');\n\n // Procedural swap if we are in the initial skeleton state\n if (fileAttachements.value === '') {\n fileAttachements.value = newFiles;\n } else {\n fileAttachements.value.push(...newFiles);\n }\n\n currentFilePage.value++;\n\n // End pagination after 4 pages\n if (currentFilePage.value >= 4) hasFileNextPage.value = false;\n isLoadingAttachements.value = false;\n };\n onMounted(async () => {\n // Wait for DOM to paint so imageList.value has height\n await nextTick();\n\n\n // Populate with empty strings as initial value\n const initialCount = maxImageCounts.value;\n mediaAttachements.value = Array(initialCount).fill('');\n\n // Trigger the first actual data load\n hasMediaNextPage.value = true;\n hasFileNextPage.value = true;\n fetchMoreMedia();\n fetchMoreFiles()\n });\n\n const displayedInfo = computed(() => {\n let items = [\n {\n title: t('chat.info.nationalCode'),\n value: localProfile.value?.nationalCode,\n canDisplay: showPersonalInfo.value\n },\n {\n title: t('chat.info.phoneNumber'),\n value: localProfile.value?.phoneNumber,\n canDisplay: showPersonalInfo.value\n },\n {\n title: t('chat.info.age'),\n value: getYearsPassed(localProfile.value?.birthDate || new Date()),\n canDisplay: true\n },\n ]\n\n return items.filter((item) => item.canDisplay)\n })\n\n\n return {\n isOpen,\n localProfile,\n t,\n closeSidebar,\n profileBackground,\n actionButtons,\n handleAction,\n displayedInfo,\n showPersonalInfo,\n isLoading,\n mediaAttachements,\n fileAttachements,\n tabs,\n currentTab,\n imageList,\n shouldShowTabs,\n chunkedMedia,\n fetchMoreMedia,\n fetchMoreFiles,\n isLoadingAttachements,\n isLoadingMedia,\n hasMediaNextPage,\n currentMediaPage,\n currentFilePage,\n hasFileNextPage,\n }\n\n }\n})\n</script>\n","<template>\n <div \n class=\"relative shrink-0 group flex items-center justify-center\"\n :style=\"{ width: `${size}px`, height: `${size}px` }\"\n >\n <svg \n class=\"absolute inset-0 w-full h-full -rotate-90 pointer-events-none\" \n :viewBox=\"`0 0 ${size} ${size}`\"\n >\n <circle \n :cx=\"center\" \n :cy=\"center\" \n :r=\"radius\" \n class=\"stroke-on-surface/20\" \n :stroke-width=\"strokeWidth\" \n fill=\"none\" \n />\n <circle \n :cx=\"center\" \n :cy=\"center\" \n :r=\"radius\" \n class=\"stroke-on-surface transition-all duration-200 ease-linear\"\n :stroke-width=\"strokeWidth\" \n fill=\"none\" \n stroke-linecap=\"round\" \n :stroke-dasharray=\"circumference\"\n :stroke-dashoffset=\"dashOffset\" \n />\n </svg>\n\n <div class=\"flex items-center justify-center transition-colors\">\n <BIcon \n v-if=\"isUploading\" \n icon=\"PhUploadSimple\" \n :style=\"{ width: `${iconSize}px`, height: `${iconSize}px` }\"\n class=\"fill-on-surface\" \n />\n <BIcon \n v-else-if=\"isDownloading\" \n icon=\"PhX\" \n :style=\"{ width: `${iconSize}px`, height: `${iconSize}px` }\"\n class=\"fill-on-surface\" \n />\n <BIcon \n v-else \n icon=\"PhDownloadSimple\" \n :style=\"{ width: `${iconSize}px`, height: `${iconSize}px` }\"\n class=\"fill-on-surface\" \n />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed } from 'vue';\n\nexport default defineComponent({\n name: 'LoadingStatus',\n props: {\n progress: {\n type: Number,\n default: 0,\n validator: (val: number) => val >= 0 && val <= 1\n },\n size: { type: Number, default: 40 }, // Default 40px\n strokeWidth: { type: Number, default: 2 }, // Default 2px\n isUploading: { type: Boolean, default: false },\n isDownloading: { type: Boolean, default: false }\n },\n setup(props) {\n // SVG Geometry Calculations\n const center = computed(() => props.size / 2);\n \n // Ensure the circle stays within the SVG box by subtracting half the stroke\n const radius = computed(() => (props.size / 2) - (props.strokeWidth / 2));\n \n // Math for the progress ring\n const circumference = computed(() => 2 * Math.PI * radius.value);\n \n const dashOffset = computed(() => {\n return circumference.value - (props.progress * circumference.value);\n });\n\n // Dynamic Icon Sizing (40% of container size)\n const iconSize = computed(() => props.size * 0.4);\n\n return {\n center,\n radius,\n circumference,\n dashOffset,\n iconSize\n };\n }\n});\n</script>","<template>\n <div dir=\"ltr\" class=\" relative cursor-pointer\">\n <svg :width=\"finalWidth\" :height=\"finalHeight\" viewBox=\"0 0 65 72\" fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M47.564 4.21766C44.8552 1.51714 41.1812 0 37.3502 0H14.4444C6.467 0 0 6.4471 0 14.4V57.6C0 65.5529 6.467 72 14.4444 72H50.5556C58.533 72 65 65.5529 65 57.6V27.5647C65 23.7456 63.4782 20.0829 60.7693 17.3823L47.564 4.21766Z\"\n :fill=\"mainColor\" />\n\n <path fill-rule=\"evenodd\" clip-rule=\"evenodd\"\n d=\"M44 1C45.5315 1.7318 46.9413 2.75075 48.154 4.02411L61.1199 17.6383C61.1203 17.6387 61.1207 17.6392 61.1211 17.6396C62.3333 18.9127 63.3033 20.3924 64 22H52.8641C47.9686 22 44 17.833 44 12.6927V1Z\"\n :fill=\"accentColor\" />\n </svg>\n <div class=\" absolute right-0 top-1/2 rounded-sm px-1 py-0.5 flex items-center justify-center \"\n :style=\"{ backgroundColor: accentColor }\">\n <div class=\"text-center text-white text-[7px] font-bold leading-none uppercase tracking-wide\">{{ label }}</div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue';\n\nconst props = defineProps({\n width: { type: [Number, String], default: 40 },\n height: { type: [Number, String], default: 40 },\n label: { type: String, default: '' },\n // Colors\n mainColor: { type: String, default: '#FFFFFF' },\n accentColor: { type: String, default: '#F24E1E' },\n labelColor: { type: String, default: '#333333' }\n});\n\nconst ASPECT_RATIO = 65 / 72;\n\nconst finalWidth = computed(() => {\n if (props.width) return props.width;\n if (props.height) return Number(props.height) * ASPECT_RATIO;\n return 65; // Fallback to original\n});\n\nconst finalHeight = computed(() => {\n if (props.height) return props.height;\n if (props.width) return Number(props.width) / ASPECT_RATIO;\n return 72; // Fallback to original\n});\n</script>","<template>\n <div class=\"px-3 flex gap-x-2 select-none items-center\">\n <div dir=\"ltr\" class=\"flex text-left flex-col gap-y-0.5 flex-1 min-w-0\">\n <div class=\"text-on-surface text-label-md truncate\">{{ fileName }}</div>\n <div class=\" w-20\">\n <div \n class=\"text-body-sm text-left text-on-surface/70 w-full line-clamp-1 text-ellipsis overflow-hidden\">{{\n formattedSize }}</div>\n </div>\n </div>\n <FileFormatDisplay :width=\"30\" :height=\"33\" :label=\"fileExt\" v-if=\"status === 'downloaded' && !isUploading\"\n @click=\"toggleDownload\" />\n <LoadingStatus v-else :class=\"[isUploading ? 'cursor-default' : 'cursor-pointer']\" :progress=\"displayProgress\"\n :is-uploading=\"isUploading\" :is-downloading=\"status === 'downloading'\" @click=\"toggleDownload\" />\n </div>\n</template>\n\n<script lang=\"ts\">\n// @ts-nocheck — grandfathered legacy chat-tree type errors; lift incrementally\nimport { defineComponent, ref, computed, onMounted } from 'vue';\nimport { useI18n, useLocale, formatBytes } from '~/nuxt-shims';\nimport { useChatActionStore } from '~/stores/chatActionStore';\nimport LoadingStatus from '~/components/general/LoadingStatus.vue';\nimport FileFormatDisplay from '~/components/general/FileFormatDisplay.vue';\n\nexport default defineComponent({\n name: 'FileDisplay',\n components: {\n LoadingStatus,\n FileFormatDisplay,\n },\n props: {\n url: { type: String, required: true },\n isMine: { type: Boolean, default: true },\n messageId: { type: Number, required: false },\n isSent: { type: Boolean, default: true }\n },\n setup(props) {\n const { t } = useI18n();\n const { dir } = useLocale();\n const chatActionStore = useChatActionStore();\n\n const status = ref<'idle' | 'downloading' | 'downloaded'>('idle');\n const progress = ref(0); // This is 0-100 internally\n const fetchedSize = ref<number | null>(null);\n let abortController: AbortController | null = null;\n const dbName = 'ChatFileCache';\n\n const uploadData = computed(() => props.messageId ? chatActionStore.uploadProgress.get(props.messageId) : null);\n const isUploading = computed(() => !props.isSent && uploadData.value);\n\n // FIX: Progress logic must handle both Uploading and Downloading\n const displayProgress = computed(() => {\n if (isUploading.value && uploadData.value) {\n return uploadData.value.progress / 100;\n }\n if (status.value === 'downloading') {\n return progress.value / 100;\n }\n return 0; // Idle/Default\n });\n\n // REMOVED: circumference and dashOffset (The new component handles this now)\n\n const getDB = () => new Promise<IDBDatabase>((resolve, reject) => {\n const request = indexedDB.open(dbName, 1);\n request.onupgradeneeded = () => request.result.createObjectStore('files');\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n });\n\n const checkLocalExistence = async () => {\n const db = await getDB();\n const tx = db.transaction('files', 'readonly');\n const store = tx.objectStore('files');\n const request = store.get(props.url);\n request.onsuccess = () => { if (request.result) status.value = 'downloaded'; };\n };\n\n const fileName = computed(() => {\n try {\n const urlObj = new URL(props.url);\n return decodeURIComponent(urlObj.pathname.split('/').pop() || 'Unknown_File');\n } catch { return 'File'; }\n });\n\n const fileExt = computed(() => {\n const name = fileName.value;\n const lastDot = name.lastIndexOf('.');\n return lastDot !== -1 ? name.substring(lastDot + 1).toUpperCase().substring(0, 4) : 'FILE';\n });\n\n const formattedSize = computed(() => {\n if (isUploading.value && uploadData.value) {\n const realTotal = fetchedSize.value || uploadData.value.total;\n const currentUploaded = (uploadData.value.progress / 100) * realTotal;\n return `${formatBytes(currentUploaded)} / ${formatBytes(realTotal)}`;\n }\n if (status.value === 'downloading' && fetchedSize.value) {\n const downloaded = (progress.value / 100) * fetchedSize.value;\n return `${formatBytes(downloaded)} / ${formatBytes(fetchedSize.value)}`;\n }\n return fetchedSize.value ? formatBytes(fetchedSize.value) : t('chat.file.calculating');\n });\n\n const getFileSize = async () => {\n try {\n if (props.url.startsWith('blob:')) {\n const res = await fetch(props.url);\n const blob = await res.blob();\n fetchedSize.value = blob.size;\n } else {\n const res = await fetch(props.url, { method: 'HEAD' });\n const length = res.headers.get('Content-Length');\n if (length) fetchedSize.value = parseInt(length, 10);\n }\n } catch (e) {\n fetchedSize.value = 0;\n }\n };\n\n const toggleDownload = async () => {\n if (isUploading.value) return;\n\n if (status.value === 'downloaded') {\n const db = await getDB();\n const tx = db.transaction('files', 'readonly');\n const store = tx.objectStore('files');\n const fileBlob = await new Promise<Blob | undefined>((res) => {\n store.get(props.url).onsuccess = (e: any) => res(e.target.result);\n });\n\n if (fileBlob) {\n const blobUrl = URL.createObjectURL(fileBlob);\n const a = document.createElement('a');\n a.href = blobUrl;\n a.download = fileName.value;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n setTimeout(() => URL.revokeObjectURL(blobUrl), 1000);\n } else {\n status.value = 'idle';\n toggleDownload();\n }\n return;\n }\n\n if (status.value === 'downloading') {\n abortController?.abort();\n status.value = 'idle';\n progress.value = 0;\n return;\n }\n\n status.value = 'downloading';\n progress.value = 0;\n abortController = new AbortController();\n\n try {\n const response = await fetch(props.url, { signal: abortController.signal });\n const total = parseInt(response.headers.get('content-length') || '0', 10);\n let loaded = 0;\n const chunks: Uint8Array[] = [];\n const reader = response.body?.getReader();\n\n if (reader) {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n if (value) {\n chunks.push(value);\n loaded += value.length;\n if (total) progress.value = Math.round((loaded / total) * 100);\n }\n }\n }\n\n const blob = new Blob(chunks, { type: response.headers.get('content-type') || 'application/octet-stream' });\n const db = await getDB();\n const tx = db.transaction('files', 'readwrite');\n tx.objectStore('files').put(blob, props.url);\n status.value = 'downloaded';\n } catch (error: any) {\n status.value = 'idle';\n progress.value = 0;\n }\n };\n\n onMounted(() => {\n getFileSize();\n checkLocalExistence();\n });\n\n return {\n status, progress, fileName, fileExt, formattedSize,\n dir, toggleDownload, isUploading, displayProgress,\n };\n }\n});\n</script>","<template>\n <div class=\"w-55 p-2 flex items-center gap-x-2.5 select-none text-on-surface\">\n <div class=\"flex-1 h-7 relative flex items-center cursor-pointer overflow-hidden\" @click=\"seekAudio\">\n <audio ref=\"audioRef\" :src=\"audioSrc\" @timeupdate=\"onTimeUpdate\" @ended=\"onEnded\"></audio>\n\n <div class=\"absolute inset-0 flex items-center justify-between opacity-30\">\n <div v-for=\"(h, idx) in staticWaveform\" :key=\"'base-' + idx\" :style=\"{ height: h + '%' }\"\n class=\"w-0.5 rounded-full bg-on-surface\">\n </div>\n </div>\n\n <div class=\"absolute inset-0 flex items-center justify-between transition-all ease-linear\"\n :class=\"[isPlaying ? 'duration-100' : 'duration-75']\"\n :style=\"{ clipPath: `inset(0 ${100 - playProgress}% 0 0)` }\">\n <div v-for=\"(h, idx) in staticWaveform\" :key=\"'active-' + idx\" :style=\"{ height: h + '%' }\"\n class=\"w-0.5 rounded-full bg-on-surface\">\n </div>\n </div>\n </div>\n\n <div class=\"shrink-0 w-11 h-11 relative flex items-center justify-center transition-colors duration-200\"\n :class=\"[status === 'downloaded' && !isUploading ? 'bg-diamond-surface rounded-xl cursor-pointer' : 'rounded-full group', !isUploading ? 'cursor-pointer' : 'cursor-default']\"\n @click=\"handleAction\">\n\n <LoadingStatus v-if=\"status !== 'downloaded' || isUploading\" :size=\"44\" :stroke-width=\"2.5\"\n :progress=\"displayProgress\" :is-uploading=\"isUploading\" :is-downloading=\"status === 'downloading'\" />\n\n <BIcon v-else-if=\"status === 'downloaded' && !isUploading\" :icon=\"isPlaying ? 'PhPause' : 'PhPlay'\"\n weight=\"light\" class=\"w-5 h-5 text-surface transition-transform duration-300\"\n :class=\"[isPlaying ? 'scale-90' : 'scale-100']\" />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\n// @ts-nocheck — grandfathered legacy chat-tree type errors; lift incrementally\nimport { defineComponent, ref, computed, onMounted, onBeforeUnmount } from 'vue';\nimport LoadingStatus from '~/components/general/LoadingStatus.vue';\nimport { useChatActionStore } from '~/stores/chatActionStore';\n\nexport default defineComponent({\n name: 'VoiceDisplay',\n props: {\n url: { type: String, required: true },\n messageId: { type: Number, required: false },\n isSent: { type: Boolean, default: true }\n },\n components: {\n LoadingStatus,\n },\n setup(props) {\n const chatActionStore = useChatActionStore();\n const status = ref<'idle' | 'downloading' | 'downloaded'>('idle');\n const downloadProgress = ref(0);\n const playProgress = ref(0);\n const isPlaying = ref(false);\n const audioSrc = ref<string>('');\n\n const audioRef = ref<HTMLAudioElement | null>(null);\n let abortController: AbortController | null = null;\n const dbName = 'ChatFileCache';\n\n const uploadData = computed(() => props.messageId ? chatActionStore.uploadProgress.get(props.messageId) : null);\n const isUploading = computed(() => !props.isSent && uploadData.value);\n\n const displayProgress = computed(() => {\n if (isUploading.value && uploadData.value) {\n return uploadData.value.progress / 100;\n }\n if (status.value === 'downloading') {\n return downloadProgress.value / 100;\n }\n return 0;\n });\n\n const staticWaveform = [\n 20, 50, 90, 60, 30, 40, 80, 50, 30, 50, 80, 80,\n 90, 30, 60, 40, 70, 90, 40, 70, 40, 60, 20\n ];\n\n const getDB = () => new Promise<IDBDatabase>((resolve, reject) => {\n const request = indexedDB.open(dbName, 1);\n request.onupgradeneeded = () => request.result.createObjectStore('files');\n request.onsuccess = () => resolve(request.result);\n request.onerror = () => reject(request.error);\n });\n\n const checkLocalExistence = async () => {\n try {\n const db = await getDB();\n const tx = db.transaction('files', 'readonly');\n const store = tx.objectStore('files');\n store.get(props.url).onsuccess = (e: any) => {\n if (e.target.result) {\n audioSrc.value = URL.createObjectURL(e.target.result);\n status.value = 'downloaded';\n }\n };\n } catch (e) { console.warn('IDB check failed', e); }\n };\n\n const handleAction = async () => {\n if (isUploading.value) return;\n\n if (status.value === 'downloaded' && audioRef.value) {\n if (isPlaying.value) {\n audioRef.value.pause();\n isPlaying.value = false;\n } else {\n // FIX: Catch the NotSupportedError from the fake mock blob and fall back to the network URL\n\n audioRef.value.play().then(() => {\n isPlaying.value = true;\n }).catch((err) => {\n console.warn('Cached blob invalid (likely mock data). Falling back to URL.', err);\n if (audioRef.value) {\n audioRef.value.src = props.url;\n audioRef.value.play().then(() => {\n isPlaying.value = true;\n });\n }\n });\n }\n return;\n }\n\n if (status.value === 'downloading') {\n abortController?.abort();\n status.value = 'idle';\n downloadProgress.value = 0;\n return;\n }\n\n status.value = 'downloading';\n downloadProgress.value = 0;\n abortController = new AbortController();\n\n try {\n const response = await fetch(props.url, { signal: abortController.signal });\n if (!response.ok) throw new Error('Network response failed');\n\n const contentType = response.headers.get('content-type') || 'audio/mpeg';\n const total = parseInt(response.headers.get('content-length') || '0', 10);\n let loaded = 0;\n const chunks: Uint8Array[] = [];\n const reader = response.body?.getReader();\n\n if (reader) {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n if (value) {\n chunks.push(value);\n loaded += value.length;\n if (total) downloadProgress.value = Math.round((loaded / total) * 100);\n }\n }\n }\n\n const blob = new Blob(chunks, { type: contentType });\n const db = await getDB();\n const tx = db.transaction('files', 'readwrite');\n tx.objectStore('files').put(blob, props.url);\n\n audioSrc.value = URL.createObjectURL(blob);\n status.value = 'downloaded';\n } catch (error: any) {\n if (error.name !== 'AbortError') console.error('Voice download error:', error);\n status.value = 'idle';\n downloadProgress.value = 0;\n }\n };\n\n const onTimeUpdate = () => {\n if (!audioRef.value) return;\n const current = audioRef.value.currentTime;\n const total = audioRef.value.duration;\n if (total) playProgress.value = (current / total) * 100;\n };\n\n const onEnded = () => {\n isPlaying.value = false;\n playProgress.value = 0;\n };\n\n const seekAudio = (e: MouseEvent) => {\n if (status.value !== 'downloaded' || !audioRef.value || isUploading.value) return;\n const rect = (e.currentTarget as HTMLElement).getBoundingClientRect();\n const clickPosition = Math.max(0, Math.min(1, (e.clientX - rect.left) / rect.width));\n const newTime = clickPosition * audioRef.value.duration;\n if (isFinite(newTime)) {\n audioRef.value.currentTime = newTime;\n playProgress.value = clickPosition * 100;\n }\n };\n\n onMounted(() => checkLocalExistence());\n onBeforeUnmount(() => {\n if (audioSrc.value) URL.revokeObjectURL(audioSrc.value);\n abortController?.abort();\n });\n\n return {\n status, downloadProgress, playProgress, isPlaying, audioSrc, audioRef,\n displayProgress, staticWaveform, handleAction, onTimeUpdate, onEnded, seekAudio, isUploading\n };\n }\n});\n</script>","<template>\n <div class=\"relative w-full h-full overflow-hidden pointer-events-none\" ref=\"containerRef\"\n :dir=\"isRtl ? 'rtl' : 'ltr'\">\n\n <div class=\"flex w-[300%] h-full ease-out pointer-events-none\" :style=\"{\n transform: `translate3d(${baseTranslate + touchTranslate}%, 0, 0)`,\n transitionDuration: isDragging ? '0ms' : `${slideTime}ms`\n }\">\n\n <div class=\"w-1/3 h-full flex items-center justify-center relative pointer-events-none\">\n <div class=\"pointer-events-auto max-w-full max-h-full flex items-center justify-center\"\n @touchstart=\"onTouchStart\" @touchmove=\"onTouchMove\" @touchend=\"onTouchEnd\" @click.stop>\n <slot name=\"slide\" :item=\"leftItem\" :index=\"leftIndex\" v-if=\"leftItem\"></slot>\n </div>\n </div>\n\n <div class=\"w-1/3 h-full flex items-center justify-center relative pointer-events-none\">\n <div class=\"pointer-events-auto max-w-full max-h-full flex items-center justify-center\"\n @touchstart=\"onTouchStart\" @touchmove=\"onTouchMove\" @touchend=\"onTouchEnd\" @click.stop>\n <slot name=\"slide\" :item=\"centerItem\" :index=\"centerIndex\" v-if=\"centerItem\"></slot>\n </div>\n </div>\n\n <div class=\"w-1/3 h-full flex items-center justify-center relative pointer-events-none\">\n <div class=\"pointer-events-auto max-w-full max-h-full flex items-center justify-center\"\n @touchstart=\"onTouchStart\" @touchmove=\"onTouchMove\" @touchend=\"onTouchEnd\" @click.stop>\n <slot name=\"slide\" :item=\"rightItem\" :index=\"rightIndex\" v-if=\"rightItem\"></slot>\n </div>\n </div>\n\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, watch, nextTick, computed } from 'vue';\nimport { useLocale } from '~/nuxt-shims';\n\nexport default defineComponent({\n name: 'BCarousel',\n props: {\n items: { type: Array, required: true },\n modelValue: { type: Number, required: true },\n slideTime: { type: Number, default: 300 }\n },\n emits: ['update:modelValue'],\n setup(props, { emit, expose }) {\n const { dir } = useLocale();\n const isRtl = computed(() => dir.value === 'rtl');\n\n const containerRef = ref<HTMLElement | null>(null);\n\n // Virtual Track Indexes\n const centerIndex = ref(props.modelValue);\n const leftIndex = ref(props.modelValue - 1);\n const rightIndex = ref(props.modelValue + 1);\n\n const leftItem = computed(() => props.items[leftIndex.value]);\n const centerItem = computed(() => props.items[centerIndex.value]);\n const rightItem = computed(() => props.items[rightIndex.value]);\n\n // Math: RTL flex layout flips the track. \n // LTR needs -33.333% to center the middle item. RTL needs +33.333% to center the middle item.\n const baseTranslate = computed(() => isRtl.value ? 33.3333 : -33.3333);\n const touchTranslate = ref(0);\n const isDragging = ref(false);\n const isAnimating = ref(false);\n\n let startX = 0;\n let containerWidth = 0;\n\n // --- Touch Event Handlers ---\n const onTouchStart = (e: TouchEvent) => {\n if (isAnimating.value) return;\n startX = e.touches[0].clientX;\n if (containerRef.value) containerWidth = containerRef.value.offsetWidth;\n isDragging.value = true;\n };\n\n const onTouchMove = (e: TouchEvent) => {\n if (!isDragging.value || containerWidth === 0) return;\n const deltaX = e.touches[0].clientX - startX;\n let percent = (deltaX / containerWidth) * 33.3333;\n\n // Add resistance at the absolute start/end of the gallery array\n if (!isRtl.value) {\n if (centerIndex.value === 0 && percent > 0) percent *= 0.3;\n if (centerIndex.value === props.items.length - 1 && percent < 0) percent *= 0.3;\n } else {\n if (centerIndex.value === 0 && percent < 0) percent *= 0.3;\n if (centerIndex.value === props.items.length - 1 && percent > 0) percent *= 0.3;\n }\n\n touchTranslate.value = percent;\n };\n\n const onTouchEnd = (e: TouchEvent) => {\n if (!isDragging.value) return;\n isDragging.value = false;\n\n const deltaX = e.changedTouches[0].clientX - startX;\n\n if (Math.abs(deltaX) > 50) {\n const swipedLeft = deltaX < 0;\n const goNext = isRtl.value ? !swipedLeft : swipedLeft;\n\n if (goNext && centerIndex.value < props.items.length - 1) {\n emit('update:modelValue', centerIndex.value + 1);\n return;\n }\n if (!goNext && centerIndex.value > 0) {\n emit('update:modelValue', centerIndex.value - 1);\n return;\n }\n }\n touchTranslate.value = 0; // Snap back if threshold not met\n };\n\n // --- The Virtual Jump Logic ---\n watch(() => props.modelValue, async (newIdx, oldIdx) => {\n if (newIdx === centerIndex.value || newIdx < 0 || newIdx >= props.items.length) return;\n isAnimating.value = true;\n\n const isNext = newIdx > centerIndex.value;\n\n // Silently preload the incoming slide into the correct neighbor slot\n if (isNext) rightIndex.value = newIdx;\n else leftIndex.value = newIdx;\n\n await nextTick();\n\n // Trigger CSS Slide\n let offset = isRtl.value ? 33.3333 : -33.3333;\n if (!isNext) offset = -offset;\n touchTranslate.value = offset;\n\n // Wait for transition, then silently reset the track geometry instantly\n setTimeout(() => {\n isDragging.value = true; // Kills the CSS transition for an instant reset\n centerIndex.value = newIdx;\n leftIndex.value = newIdx - 1;\n rightIndex.value = newIdx + 1;\n touchTranslate.value = 0;\n\n requestAnimationFrame(() => {\n isDragging.value = false; // Restores transition\n isAnimating.value = false;\n });\n }, props.slideTime);\n });\n\n expose({\n next: () => { if (props.modelValue < props.items.length - 1) emit('update:modelValue', props.modelValue + 1); },\n prev: () => { if (props.modelValue > 0) emit('update:modelValue', props.modelValue - 1); }\n });\n\n return {\n isRtl, containerRef,\n leftItem, leftIndex, centerItem, centerIndex, rightItem, rightIndex,\n baseTranslate, touchTranslate, isDragging,\n onTouchStart, onTouchMove, onTouchEnd\n };\n }\n});\n</script>","<template>\n <Teleport to=\"body\">\n <div @click.self=\"closeImage\"\n :class=\"[isOpen ? ' md:bg-black/10 dark:md:bg-white/10 bg-black dark:bg-white md:backdrop-blur-lg pointer-events-auto visible opacity-100' : 'md:bg-black/0 dark:md:bg-white/0 bg-black/0 dark:bg-white/0 backdrop-blur-none pointer-events-none invisible opacity-0']\"\n class=\" transition-all flex flex-col duration-200 ease-in-out fixed top-0 left-0 z-100 w-dvw h-dvh\">\n\n <div :style=\"isMobile ? { transform: `translateY(${translateY}px)` } : {}\"\n :class=\"[isDragging ? 'transition-none' : 'transition-transform duration-300 ease-in-out']\"\n class=\"w-full h-full flex flex-col\">\n\n <div class=\" w-full p-3 flex justify-between items-center pointer-events-auto\">\n <BIcon icon=\"PhX\" :class=\"[isOpen ? 'scale-100 opacity-100' : 'scale-0 opacity-0']\"\n class=\" transition-all duration-200 ease-in-out shrink-0 w-6 h-6 fill-surface cursor-pointer md:fill-on-surface\"\n @click=\"closeImage\" />\n </div>\n\n <div @click.self=\"closeImage\" @touchstart.self=\"startDrag\" @mousedown.self=\"startDrag\"\n class=\" w-full gap-y-6 flex-1 flex flex-col items-center justify-center overflow-hidden pointer-events-auto\">\n\n <div @click.self=\"closeImage\" @touchstart.self=\"startDrag\" @mousedown.self=\"startDrag\"\n class=\" w-full shrink-0 flex-1 md:flex-auto md:h-[75vh] flex justify-center items-center\">\n\n <div @click.self=\"closeImage\" @touchstart.self=\"startDrag\" @mousedown.self=\"startDrag\"\n class=\" transition-all pointer-events-none duration-300 flex items-center justify-center ease-in-out overflow-hidden origin-center w-full\"\n :class=\"[isOpen ? 'h-full opacity-100' : 'h-0 opacity-0']\">\n\n <BCarousel v-if=\"isMobile && images.length > 0 && selectedImage !== -1\" :items=\"images\"\n v-model=\"selectedImage\" class=\"w-full h-full pointer-events-auto\" @touchstart.stop\n @mousedown.stop>\n <template #slide=\"{ item }\">\n <BImage no-loading auto-aspect\n class=\"w-full md:rounded-xl overflow-hidden min-h-[50vh] min-w-dvw md:min-w-auto md:w-[70vw] h-full md:max-h-[75vh] md:h-[75vh] max-w-dvw md:max-w-[70vw] max-h-[50vh] pointer-events-none\"\n :src=\"item\" />\n </template>\n </BCarousel>\n\n <BImage v-else-if=\"!isMobile && images.length > 0\" auto-aspect\n class=\"w-full md:rounded-xl overflow-hidden min-h-[50vh] min-w-dvw md:min-w-auto md:w-[70vw] h-full md:max-h-[75vh] md:h-[75vh] max-w-dvw md:max-w-[70vw] max-h-[50vh] pointer-events-auto\"\n :src=\"selectedImage !== -1 ? images[selectedImage] : ''\" />\n\n </div>\n </div>\n\n <div v-if=\"images.length > 1\"\n class=\" pb-3 px-4 shrink-0 flex items-center justify-start md:justify-center transition-all duration-200 ease-in-out gap-x-3 w-full max-w-full overflow-x-auto scrollbar-hide snap-x pointer-events-auto\"\n :class=\"[isOpen ? 'translate-y-0 opacity-100' : 'translate-y-10 opacity-0']\" @touchstart.stop\n @mousedown.stop>\n\n <div @click=\"selectImage(index)\"\n class=\"cursor-pointer h-20 shrink-0 transition-all duration-200 ease-in-out rounded-xl overflow-hidden aspect-square border-2 snap-center\"\n :class=\"[selectedImage === index ? 'border-primary' : 'border-primary/0']\"\n v-for=\"(image, index) in images\" :key=\"index\">\n <BImage fit=\"cover\" :src=\"image\" class=\"w-full h-full pointer-events-none\" />\n </div>\n\n </div>\n </div>\n </div>\n </div>\n </Teleport>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, type PropType, onUnmounted, onMounted, ref, watch, computed } from 'vue';\nimport { useWindowSize } from '~/nuxt-shims';\nimport BCarousel from '~/components/global/BCarousel.vue';\n\nexport default defineComponent({\n name: 'ImageDisplay',\n components: { BCarousel },\n props: {\n images: {\n type: Array as PropType<String[]>,\n default: () => []\n }\n },\n setup(props, { expose }) {\n const isOpen = ref(false);\n const selectedImage = ref(0);\n\n // --- Drag to Close State ---\n const isDragging = ref(false);\n const startY = ref(0);\n const translateY = ref(0);\n\n const { width } = useWindowSize();\n const isMobile = computed(() => width.value < 768);\n\n watch(() => props.images, (newImages) => {\n if (selectedImage.value >= newImages.length) {\n selectedImage.value = 0;\n }\n });\n\n const downloadImage = async () => {\n if (selectedImage.value === -1 || !props.images[selectedImage.value]) return;\n const url = props.images[selectedImage.value] as string;\n\n try {\n const response = await fetch(url);\n const blob = await response.blob();\n const blobUrl = window.URL.createObjectURL(blob);\n\n const link = document.createElement('a');\n link.href = blobUrl;\n link.download = url.split('/').pop() || 'dope-image.jpg';\n document.body.appendChild(link);\n link.click();\n\n document.body.removeChild(link);\n window.URL.revokeObjectURL(blobUrl);\n } catch (error) {\n console.error(\"Failed to download image:\", error);\n }\n };\n\n // --- Core Drag Logic (Mapped exactly from your ThePopup) ---\n const startDrag = (event: MouseEvent | TouchEvent) => {\n if (!isMobile.value) return;\n isDragging.value = true;\n startY.value = event instanceof MouseEvent ? event.clientY : event.touches[0].clientY;\n\n window.addEventListener('mousemove', onDrag);\n window.addEventListener('mouseup', endDrag);\n window.addEventListener('touchmove', onDrag);\n window.addEventListener('touchend', endDrag);\n };\n\n const onDrag = (event: MouseEvent | TouchEvent) => {\n if (!isDragging.value) return;\n const currentY = event instanceof MouseEvent ? event.clientY : event.touches[0].clientY;\n const deltaY = currentY - startY.value;\n // Only allow dragging downwards\n translateY.value = deltaY > 0 ? deltaY : 0;\n };\n\n const endDrag = () => {\n if (!isDragging.value) return;\n isDragging.value = false;\n\n // Close threshold\n if (translateY.value > 100) {\n closeImage();\n } else {\n translateY.value = 0;\n }\n\n window.removeEventListener('mousemove', onDrag);\n window.removeEventListener('mouseup', endDrag);\n window.removeEventListener('touchmove', onDrag);\n window.removeEventListener('touchend', endDrag);\n };\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && isOpen.value) closeImage();\n if (e.key === 'ArrowRight' && isOpen.value && selectedImage.value < props.images.length - 1) {\n selectedImage.value++;\n }\n if (e.key === 'ArrowLeft' && isOpen.value && selectedImage.value > 0) {\n selectedImage.value--;\n }\n };\n\n const handlePopState = () => {\n if (isOpen.value) isOpen.value = false;\n };\n\n const openImage = (index: number) => {\n selectedImage.value = index;\n translateY.value = 0;\n isOpen.value = true;\n window.history.pushState({ viewerOpen: true }, '');\n window.addEventListener('popstate', handlePopState);\n };\n\n const closeImage = () => {\n if (!isOpen.value) return;\n isOpen.value = false;\n window.removeEventListener('popstate', handlePopState);\n if (window.history.state?.viewerOpen) {\n window.history.back();\n }\n setTimeout(() => {\n selectedImage.value = -1;\n translateY.value = 0;\n }, 300);\n };\n\n onMounted(() => window.addEventListener('keydown', handleKeyDown));\n\n onUnmounted(() => {\n window.removeEventListener('keydown', handleKeyDown);\n window.removeEventListener('popstate', handlePopState);\n window.removeEventListener('mousemove', onDrag);\n window.removeEventListener('mouseup', endDrag);\n window.removeEventListener('touchmove', onDrag);\n window.removeEventListener('touchend', endDrag);\n if (isOpen.value && window.history.state?.viewerOpen) {\n window.history.back();\n }\n });\n\n expose({\n open: (index: number) => { openImage(index) },\n close: () => { closeImage() },\n download: () => { downloadImage() }\n });\n\n return {\n isOpen,\n selectedImage,\n closeImage,\n openImage,\n selectImage: (index: number) => { selectedImage.value = index },\n downloadImage,\n isMobile,\n // Drag State\n isDragging,\n translateY,\n startDrag\n };\n }\n});\n</script>","<template>\n <Teleport to=\"body\">\n <div :style=\"{ position: 'fixed', top: `${position.y}px`, left: `${position.x}px`, zIndex: 99999, pointerEvents: 'none' }\"\n dir=\"rtl\">\n\n <BMenu @select=\"handleOption\" :options=\"options\" ref=\"menuRef\" @close=\"onMenuClosed\">\n <template #trigger>\n <div style=\"width: 1px; height: 1px;\"></div>\n </template>\n </BMenu>\n </div>\n </Teleport>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, computed, nextTick, type PropType } from 'vue';\nimport { useI18n } from '~/nuxt-shims';\nimport { useChatActionStore } from '~/stores/chatActionStore';\nimport type { Menu } from '~/types/components/menu';\nimport type { ExtendedMessage } from '~/types/chat';\nexport default defineComponent({\n name: 'BubbleOptions',\n props: {\n message: {\n type: Object as PropType<ExtendedMessage>,\n required: true,\n }\n },\n setup(props, { expose }) {\n const { t } = useI18n();\n const chatActionStore = useChatActionStore();\n const isOpen = ref(false);\n\n const menuRef = ref<Menu | null>(null);\n const position = ref({ x: 0, y: 0 });\n\n const openMenu = (x: number, y: number) => {\n // Adjust bounds so the menu doesn't clip off the right/bottom edges of the screen\n const adjustedX = Math.min(x, window.innerWidth - 250);\n const adjustedY = Math.min(y, window.innerHeight - 300);\n\n position.value = { x: adjustedX, y: adjustedY };\n isOpen.value = true;\n chatActionStore.isMenuOpen = true;\n\n // Wait 1 frame for the wrapper to mount at the coordinates, then fire BMenu\n nextTick(() => {\n menuRef.value?.open();\n });\n };\n\n const closeMenu = () => {\n menuRef.value?.close();\n chatActionStore.isMenuOpen = false;\n };\n\n const onMenuClosed = () => {\n isOpen.value = false;\n chatActionStore.isMenuOpen = false;\n };\n\n expose({ openMenu, closeMenu });\n\n\n const showAsDeselect = computed(() => {\n return chatActionStore.isSelectMode && chatActionStore.selectedMessages.has(props.message.id);\n });\n const options = computed(() => {\n const allOptions = [\n { icon: 'PhArrowBendUpLeft', key: 'reply', label: t('chat.messageOptions.reply'), canShow: props.message.isSent },\n { icon: 'PhPencilSimpleLine', key: 'edit', label: t('chat.messageOptions.edit'), canShow: chatActionStore.canEdit },\n { icon: 'PhCopy', key: 'copy', label: t('chat.messageOptions.copy'), canShow: true },\n {\n icon: showAsDeselect.value ? 'PhXCircle' : 'PhCheckCircle',\n key: 'select_toggle',\n label: showAsDeselect.value ? t('chat.messageOptions.deselect') : t('chat.messageOptions.select'),\n canShow: true\n },\n { icon: 'PhTrash', key: 'delete', label: t('chat.messageOptions.delete'), canShow: chatActionStore.canDelete, color: 'error' }\n ];\n return allOptions.filter((option) => option.canShow);\n });\n\n const handleOption = (key: string) => {\n\n const targetIds = chatActionStore.isSelectMode && chatActionStore.selectedMessages.has(props.message.id)\n ? chatActionStore.selectedArray.map(m => m.id)\n : [props.message.id];\n\n\n closeMenu();\n\n setTimeout(() => {\n switch (key) {\n case 'delete':\n chatActionStore.triggerDelete(targetIds);\n break;\n case 'select_toggle':\n if (!chatActionStore.isSelectMode) {\n chatActionStore.startSelectMode(props.message);\n } else {\n chatActionStore.toggleSelection(props.message);\n }\n break;\n case 'edit':\n chatActionStore.triggerEdit(props.message);\n break;\n case 'reply':\n if (!props.message.isSent) return;\n chatActionStore.replyingTo = props.message;\n break;\n case 'copy':\n chatActionStore.copyMessageText();\n break;\n }\n }, 300);\n };\n\n\n return {\n t, options, position, menuRef,\n closeMenu, openMenu, handleOption, onMenuClosed, isOpen,\n };\n }\n});\n</script>","<template>\n <div class=\"w-full flex items-center gap-x-2\">\n <div class=\"w-10 h-10 shrink-0\">\n <ContactAvatar :contact=\"provider\" />\n </div>\n <div class=\"flex-1 text-on-surface\">\n <div class=\"text-label-md\" v-loading=\"isLoading\">\n {{ `${provider.name} ${provider.lastName}` }}\n </div>\n <div\n class=\"text-body-sm max-w-full text-ellipsis overflow-hidden line-clamp-1 opacity-50\"\n v-loading=\"isLoading\"\n >\n {{ fellowshipString }}\n </div>\n </div>\n <div class=\"shrink-0 select-none text-on-surface text-label-md\">\n <div class=\"flex items-center gap-x-2\" v-if=\"!isPending\">\n <div>{{ formatCurrency(provider.service.price) }}</div>\n <div>{{ t(\"general.currency\") }}</div>\n </div>\n <div v-else class=\"flex items-center gap-x-1\">\n <BIcon icon=\"PhClock\" class=\"w-4 h-4 fill-primary\" />\n <div class=\"text-primary text-[10px]\">\n {{ t(\"chat.requestCard.addMedic.pending\") }}\n </div>\n </div>\n </div>\n </div>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, type PropType, computed } from \"vue\";\nimport type { RequestProvider } from \"~/types/chat\";\nimport ContactAvatar from \"../../contact/ContactAvatar.vue\";\nimport { useI18n } from \"~/nuxt-shims\";\nimport { formatCurrency } from \"~/nuxt-shims\";\nexport default defineComponent({\n name: \"ProviderDisplay\",\n components: {\n ContactAvatar,\n },\n props: {\n provider: {\n type: Object as PropType<RequestProvider>,\n required: true,\n },\n loading: {\n type: Boolean,\n default: false,\n },\n },\n setup(props) {\n const { t } = useI18n();\n const provider = computed(() => props.provider);\n const isLoading = computed(() => props.loading);\n\n const fellowshipString = computed(() => {\n if (\n !provider.value.fellowships ||\n provider.value.fellowships.length === 0\n ) {\n return provider.value.expertise || \"\";\n }\n return provider.value.fellowships.map((f) => f.title).join(\", \");\n });\n\n const isPending = computed(() => {\n return props.provider.status === \"pending\";\n });\n\n return {\n fellowshipString,\n isPending,\n t,\n isLoading,\n formatCurrency,\n };\n },\n});\n</script>\n","<template>\n <div class=\" p-3 w-80 flex flex-col gap-y-3 select-none bg-surface rounded-2xl shadow-floating\">\n <div class=\" w-full flex flex-col gap-y-3 h-full\" v-if=\"isServiceRequest\">\n <div class=\" transition-all duration-200 ease-in-out select-none text-label-sm\"\n :class=\"[isPending ? 'text-on-surface/50' : 'text-on-surface']\">{{ t('chat.addMedic.title') }}</div>\n <div v-if=\"providers.length > 0\" class=\" w-full flex flex-col gap-y-3\">\n <ProviderDisplay v-for=\"provider in providers\" :key=\"provider.id\" :provider=\"provider\" />\n </div>\n <div v-else class=\" h-14 w-full rounded-full flex items-center justify-center gap-x-2\">\n <div class=\" shrink-0 w-10 h-10 rounded-full bg-surface-variant flex items-center justify-center\">\n <BIcon icon=\"PhIdentificationCard\" class=\" fill-primary w-6 h-6\" />\n </div>\n <div class=\"flex-1 flex-col h-full flex select-none text-on-surface justify-center\">\n <div class=\" text-label-md\" v-loading=\"isPending\">\n <div class=\" h-7 w-30\"></div>\n </div>\n <div class=\" text-body-sm opacity-50\">{{ request?.request.service.label }}</div>\n </div>\n <div class=\" h-7 w-20 \" v-loading=\"isPending\"></div>\n </div>\n <div class=\" w-full text-center select-none text-label-sm\"\n :class=\"[isCanceled ? 'text-error' : 'text-primary']\">{{ cardSubText }}\n </div>\n\n </div>\n <div class=\" w-full flex flex-col justify-center gap-y-3 items-center\" v-else>\n <div v-if=\"infoAccessContent && request?.request.status == 'pending'\" class=\"w-full flex flex-col gap-y-2\">\n <div class=\"text-label-sm text-on-surface opacity-50 select-none\">\n {{ infoAccessContent.title }}\n </div>\n <div class=\"text-body-sm text-on-surface leading-relaxed\">\n {{ infoAccessContent.description }}\n </div>\n </div>\n <div v-else-if=\"infoAccessContent\"\n class=\"w-full flex flex-col gap-y-3 items-center select-none justify-center py-2\">\n <BIcon weight=\"fill\" :icon=\"infoAccessContent.icon\" :class=\"[`fill-${infoAccessContent.color}`]\"\n class=\"w-14 h-14\" />\n <div :class=\"[`text-${infoAccessContent.color}`]\" class=\"text-label-md font-medium text-center\">\n {{ infoAccessContent.text }}\n </div>\n </div>\n </div>\n <div class=\" w-full flex items-center gap-x-3\">\n <BButton v-loading=\"isSending\" class=\" shrink-0 flex-1 \" v-for=\"button in requestButtonProps\"\n :key=\"button.key\" :disabled=\"button.disabled || !!chatActionStore.processingActions.get(message.id)\"\n :loading=\"button.loading\" :color=\"button.color\" :type=\"button.type\" :text=\"button.text\"\n @click=\"handleAction(button.key)\" />\n </div>\n <div @click=\"handleCopyCode\" class=\" gap-x-3 w-full flex items-center justify-center cursor-pointer\"\n v-if=\"isMedic && message.request?.type === 'add-person' && message.request.request.status === 'approved'\">\n <div class=\" text-on-surface text-label-lg select-none\">{{ contact.nationalCode }}</div>\n <BIcon :icon=\"isCopied ? 'PhCheckCircle' : 'PhCopy'\" class=\" w-4.5 h-4.5 fill-on-surface/50\" />\n </div>\n <BModal @action=\"handleModalAction\" ref=\"modal\" />\n </div>\n</template>\n<script lang=\"ts\">\n// @ts-nocheck — grandfathered legacy chat-tree type errors; lift incrementally\nimport { defineComponent, type PropType, computed } from 'vue';\nimport type { Message, Contact } from '~/types/chat';\nimport { useI18n, useChatStore, useChatActionStore, useAppToast } from '~/nuxt-shims';\nimport ContactAvatar from '../contact/ContactAvatar.vue';\nimport type { Modal } from '~/types/components/modal';\nimport ProviderDisplay from './request-card/ProviderDisplay.vue';\nexport default defineComponent({\n name: 'RequestCard',\n props: {\n message: {\n type: Object as PropType<Message>,\n required: true,\n },\n contact: {\n type: Object as PropType<Contact>,\n required: true,\n }\n },\n components: {\n ContactAvatar,\n ProviderDisplay,\n },\n setup(props) {\n const { t } = useI18n()\n const { openToast } = useAppToast()\n const modal = ref<Modal | null>(null)\n const isCopied = ref(false)\n\n\n\n\n const isSending = computed(() => !props.message.isSent)\n const chatActionStore = useChatActionStore()\n const chatStore = useChatStore()\n const role = computed(() => chatStore.chosenRole)\n const request = computed(() => props.message.request)\n const isServiceRequest = computed(() => request.value?.type === 'add-person');\n const providers = computed(() => {\n if (request.value?.type !== 'add-person') return null\n return request.value.request.provider\n })\n\n const handleCopyCode = async () => {\n if (!props.contact.nationalCode) return\n try {\n await navigator.clipboard.writeText(props.contact.nationalCode);\n isCopied.value = true;\n openToast(t('chat.requestCard.infoAccess.copySuccess'), 'success');\n setTimeout(() => {\n isCopied.value = false;\n }, 2000);\n } catch (err) {\n console.error('Failed to copy text: ', err);\n }\n };\n\n\n const isPending = computed(() => {\n if (request.value?.type === 'add-person') {\n if (!request.value?.request.status) return true\n let finalKeys = ['approved', 'rejected', 'expired']\n const providers = request.value.request.provider;\n return !finalKeys.includes(request.value.request.status) && providers && providers.length !== 1\n } else {\n\n }\n })\n\n\n const isMedic = computed(() => chatStore.currentUserId == props.message.senderId && chatStore.chosenRole !== 'user')\n\n const cardSubText = computed(() => {\n let text = ''\n let status = request.value.request.status\n if (request.value?.type === 'add-person') {\n switch (status) {\n case 'payment':\n text = isMedic.value ? t('chat.requestCard.addMedic.awaitingPayment') : t('chat.requestCard.addMedic.awaitingPatientPayment')\n break;\n case 'searching':\n text = t('chat.requestCard.addMedic.searching')\n break;\n case 'pending':\n text = !isMedic.value ? t('chat.requestCard.addMedic.awaitingApproval') : t('chat.requestCard.addMedic.awaitingMedicApproval')\n break;\n case 'rejected':\n text = t('chat.requestCard.addMedic.rejected')\n break;\n case 'expired':\n text = t('chat.requestCard.addMedic.expired')\n }\n }\n return text\n })\n\n const isCanceled = computed(() => {\n if (request.value?.type === 'personal-info') return false\n return request.value?.request.status === 'expired' || request.value?.request.status === 'rejected'\n })\n\n\n const messageId = computed(() => props.message.id)\n const chatId = computed(() => chatStore.activeConversationId)\n\n\n const requestButtonProps = computed(() => {\n const isBusy = (key: string) => chatActionStore.isActionBusy(messageId.value, key);\n if (request.value?.type === 'add-person') {\n\n\n\n\n const status = request.value.request.status;\n const isSelf = isMedic.value;\n const providersList = providers.value || [];\n\n // 1. Handle Failed/Ended states\n if (['expired', 'rejected'].includes(status)) {\n return [{ type: 'fill', color: 'secondary', text: t('chat.requestCard.addMedic.retry'), key: 'resend-request' }];\n }\n\n // 2. Handle Active/Searching states\n if (['pending', 'searching'].includes(status)) {\n return isSelf\n ? [{\n type: 'outline', color: 'error', text: t('chat.requestCard.addMedic.cancel'), key: 'cancel-request',\n loading: isBusy('cancel-request')\n }]\n : [\n { type: 'fill', color: 'primary', text: t('chat.requestCard.addMedic.confirmRequest'), key: 'approve-request-user' },\n { type: 'fill', color: 'secondary', text: t('chat.requestCard.addMedic.reject'), key: 'reject-medic-request' }\n ];\n }\n\n // 3. Handle Payment state (Only shown to the patient)\n if (status === 'payment' && !isSelf) {\n // Condition: Disabled if NO provider has reached the 'payment' status\n const hasPaymentProvider = providersList.some(p => p.status === 'payment');\n\n return [{\n type: 'fill',\n color: 'primary',\n text: t('chat.requestCard.addMedic.pay'),\n key: 'pay-request',\n disabled: !hasPaymentProvider\n }];\n }\n } else {\n const status = request.value?.request.status\n\n if (status !== 'pending') return null;\n\n if (isMedic.value) {\n return [{\n type: 'fill',\n color: 'secondary',\n text: t('chat.requestCard.infoAccess.cancelRequest'),\n key: 'cancel-request',\n loading: isBusy('cancel-request')\n }];\n } else {\n return [\n {\n type: 'fill',\n color: 'primary',\n text: t('chat.requestCard.infoAccess.confirmAndShare'),\n key: 'confirm-access',\n loading: isBusy('confirm-access'),\n },\n {\n type: 'fill',\n color: 'secondary',\n text: t('chat.requestCard.infoAccess.cancel'),\n key: 'reject-access',\n loading: isBusy('reject-access'),\n }\n ];\n }\n }\n\n return null;\n });\n\n const handleAction = (key: string) => {\n if (isSending.value) return\n if (chatActionStore.processingActions.has(props.message.id)) return;\n switch (key) {\n case 'cancel-request':\n // Pass the current message ID in an array to trigger the delete flow\n chatActionStore.triggerDelete([props.message.id]);\n break;\n case 'confirm-access':\n chatActionStore.handleAccessResponse(\n messageId.value,\n chatId.value,\n key as 'confirm-access',\n request.value\n );\n break;\n case 'reject-access':\n modal.value?.openModal(t('chat.requestCard.infoAccess.rejectModal.title'), t('chat.requestCard.infoAccess.rejectModal.description'), 'error', true, t('chat.requestCard.infoAccess.rejectModal.reject'))\n break;\n case 'approve-request-user':\n // Handle approval logic\n break;\n\n case 'reject-medic-request':\n // Handle rejection logic\n break;\n\n case 'pay-request':\n // Handle payment logic\n break;\n\n case 'resend-request':\n // Handle retry/resend logic\n break;\n }\n };\n\n const infoAccessContent = computed(() => {\n const req = request.value;\n if (req?.type !== 'personal-info') return null;\n\n const status = req.request.status\n const isSelf = isMedic.value;\n\n if (status === 'pending') {\n return {\n title: isSelf\n ? t('chat.requestCard.infoAccess.medicTitle')\n : t('chat.requestCard.infoAccess.patientTitle'),\n description: isSelf\n ? t('chat.requestCard.infoAccess.medicDescription')\n : t('chat.requestCard.infoAccess.patientDescription')\n };\n } else {\n let icon = 'PhXSquare';\n let color = 'error';\n let text = '';\n\n if (status === 'approved') {\n color = 'secondary';\n icon = 'PhCheckSquare';\n }\n\n switch (status) {\n case 'approved':\n text = isSelf\n ? t('chat.requestCard.infoAccess.medicSuccess')\n : t('chat.requestCard.infoAccess.patientSuccess');\n break;\n case 'expired':\n text = t('chat.requestCard.infoAccess.requestExpired');\n break;\n case 'rejected':\n text = t('chat.requestCard.infoAccess.medicReject');\n break;\n }\n\n return { icon, color, text };\n }\n });\n\n const handleModalAction = () => {\n modal.value?.closeModal()\n chatActionStore.handleAccessResponse(\n messageId.value,\n chatId.value,\n 'reject-access',\n request.value\n );\n }\n\n\n return {\n handleAction,\n t,\n isPending,\n role,\n isServiceRequest,\n request,\n cardSubText,\n providers,\n isSending,\n chatActionStore,\n handleCopyCode,\n requestButtonProps,\n isMedic,\n modal,\n isCanceled,\n handleModalAction,\n isCopied,\n infoAccessContent,\n }\n }\n})\n</script>\n","<template>\n <div @contextmenu.prevent=\"handleRightClick\" class=\"w-full transition-all duration-300 ease-in-out\"\n :class=\"[isDeleting ? 'max-h-0 opacity-0 overflow-hidden' : 'max-h-250 opacity-100']\">\n <div v-if=\"message.isFirstInDate || isFirstUnread\" class=\" py-5 w-full flex items-center justify-center\">\n <div class=\" rounded-full bg-on-surface/10 flex items-center justify-center px-4 py-0.5\">\n <div class=\" text-on-surface select-none text-body-sm\">{{ !isFirstUnread ?\n formatDateShort(message.date) : t('chat.unreadMessages') }}</div>\n </div>\n </div>\n <div class=\" w-full px-5 pt-2 transition-all duration-200 flex items-center ease-in-out\"\n :class=\"[isSelectMode && isSelected ? ' bg-on-surface/5 gap-x-3' : ' bg-on-surface/0 gap-x-0', isSelectMode ? 'cursor-pointer select-none' : '']\">\n <div v-if=\"!message.request\"\n class=\" shrink-0 transition-all duration-200 overflow-hidden ease-in-out whitespace-nowrap\"\n :class=\"[isSelectMode && isSelected ? 'w-auto' : ' w-0']\">\n <div :class=\"[isSelectMode && isSelected ? ' opacity-100 scale-100' : ' opacity-0 scale-0']\"\n class=\" transition-all duration-200 ease-in-out w-5 h-5 rounded-full bg-gradient-primary-secondary flex items-center justify-center\">\n <div class=\"w-2.5 h-2.5 rounded-full bg-surface\"></div>\n </div>\n </div>\n <div v-if=\"!message.request\" :class=\"[isMine ? ' justify-start' : 'justify-end']\"\n class=\" flex items-center flex-1 relative\" @click=\"handleLeftClick\" @pointerdown=\"onPointerDown\"\n @pointermove=\"onPointerMove\" @pointerup=\"onPointerUp\" @pointercancel=\"onPointerUp\">\n <div class=\" select-none md:select-auto w-full\">\n <div class=\" w-full flex items-center\" :class=\"[isMine ? 'justify-start' : 'justify-end']\">\n <div class=\" flex max-w-4/5 items-end gap-x-3\">\n <div class=\" flex-1\">\n <div v-if=\"messageType === 'text' || messageType === 'file' || messageType === 'voice'\"\n class=\" p-1 rounded-xl \"\n :class=\"[roundingClasses, isMine ? 'bg-surface-variant-2' : 'bg-surface', messageType === 'text' ? 'text-body-sm text-on-surface' : '']\">\n <div v-if=\"messageType === 'text' && message.repliedTo\"\n class=\" text-body-sm select-none w-full h-10 gap-x-2 flex items-center rounded-lg justify-between p-2\"\n :class=\"[isMine ? ' bg-surface-variant-3' : 'bg-surface-variant']\">\n <div class=\" text-on-surface/50 shrink-0\">{{ replyName }} :</div>\n <div class=\" text-on-surface flex-1\">\n <div class=\" w-full overflow-hidden text-ellipsis line-clamp-1\">{{\n replyContent }}</div>\n </div>\n <BIcon icon=\"PhArrowUUpLeft\" class=\" w-5 h-5 fill-on-surface/20\"\n weight=\"fill\" />\n </div>\n <p v-if=\"messageType === 'text'\" class=\" p-3 max-w-full\">\n <SafeEmojiText :text=\"message.text\" />\n </p>\n <FileDisplay :is-mine=\"isMine\" v-else-if=\"message.fileUrl && messageType === 'file'\"\n :url=\"message.fileUrl\" :message-id=\"message.id\" :is-sent=\"message.isSent\" />\n\n <VoiceDisplay v-else-if=\"message.voiceUrl && messageType === 'voice'\"\n :url=\"message.voiceUrl\" :message-id=\"message.id\" :is-sent=\"message.isSent\" />\n </div>\n <div v-else-if=\"message.imageUrl && messageType === 'image'\" @click.stop=\"previewImage(0)\"\n class=\"relative cursor-pointer overflow-hidden rounded-xl max-w-4/5 md:max-w-85 w-85 h-40.5\">\n <BImage fit=\"cover\" :src=\"message.imageUrl[0]\"\n class=\"w-full rounded-xl overflow-hidden h-full max-w-full max-h-full min-w-full min-h-full\" />\n\n <div v-if=\"!message.isSent && uploadData\"\n class=\"absolute inset-0 flex items-center justify-center bg-black/40 z-10 pointer-events-none\">\n <svg class=\"absolute w-12 h-12 -rotate-90\" viewBox=\"0 0 48 48\">\n <circle cx=\"24\" cy=\"24\" r=\"22\" class=\"stroke-white/30\" stroke-width=\"3\"\n fill=\"none\" />\n <circle cx=\"24\" cy=\"24\" r=\"22\"\n class=\"stroke-white transition-all duration-200 ease-linear\"\n stroke-width=\"3\" fill=\"none\" stroke-linecap=\"round\"\n stroke-dasharray=\"138.2\"\n :stroke-dashoffset=\"138.2 - (uploadData.progress / 100) * 138.2\" />\n </svg>\n <BIcon icon=\"PhUploadSimple\" class=\"w-5 h-5 text-white absolute\" />\n </div>\n </div>\n\n <div v-else-if=\"message.imageUrl && messageType === 'multiImage'\"\n class=\"max-w-75 flex items-center gap-x-3 h-16\">\n <div @click=\"previewImage(3)\" v-if=\"message.imageUrl.length > 3\"\n class=\" h-full rounded-xl cursor-pointer overflow-hidden aspect-square flex items-center justify-center bg-surface-variant-2\">\n <div class=\"text-on-surface select-none text-label-md\">+{{\n message.imageUrl.length - 3 }}</div>\n </div>\n <div v-for=\"(image, index) in displayedImages\" :key=\"index\" @click.stop=\"previewImage(index)\"\n class=\"relative h-full rounded-xl cursor-pointer overflow-hidden aspect-square\">\n <BImage :src=\"image\" \n class=\"cursor-pointer min-w-full min-h-full max-w-full max-h-full h-full w-full\" />\n\n\n\n <div v-if=\"!message.isSent && uploadData\"\n class=\"absolute inset-0 flex items-center justify-center bg-black/40 z-10 pointer-events-none\">\n <svg class=\"absolute w-8 h-8 -rotate-90\" viewBox=\"0 0 32 32\">\n <circle cx=\"16\" cy=\"16\" r=\"14\" class=\"stroke-white/30\"\n stroke-width=\"2.5\" fill=\"none\" />\n <circle cx=\"16\" cy=\"16\" r=\"14\"\n class=\"stroke-white transition-all duration-200 ease-linear\"\n stroke-width=\"2.5\" fill=\"none\" stroke-linecap=\"round\"\n stroke-dasharray=\"87.9\"\n :stroke-dashoffset=\"87.9 - (uploadData.progress / 100) * 87.9\" />\n </svg>\n <BIcon icon=\"PhUploadSimple\" class=\"w-3.5 h-3.5 text-white absolute\" />\n </div>\n </div>\n\n </div>\n <div v-else-if=\"messageType === 'video'\">\n <BubbleVideo :video-url=\"message.videoUrl\" mode=\"playback\" />\n </div>\n <div v-if=\"shouldShowStatus\" class=\" w-full pt-2 flex items-center gap-x-2.5\"\n :class=\"[isMine ? 'justify-start' : 'justify-end']\">\n <BIcon v-if=\"isMine\" :icon=\"checkIcon\" class=\" w-4 h-4\"\n :class=\"[message.isRead && message.isSent ? 'fill-primary' : 'fill-on-surface/50']\" />\n <div class=\" select-none text-body-sm text-on-surface/50\">{{\n formatTime(message.date)\n }}\n </div>\n </div>\n </div>\n <div class=\" shrink-0 w-10 pb-8\">\n <div v-if=\"!isMine && (!isSameSenderNext || !isSameDayNext)\" class=\" w-10 h-10 \">\n <ContactAvatar :contact=\"contact\" :show-online=\"false\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n <ImageGroupDisplay v-show=\"message.imageUrl && message.imageUrl.length > 0\" ref=\"imageDisplayRef\"\n :images=\"message.imageUrl\" />\n\n <BubbleOptions :message=\"message\" ref=\"bubbleOptionsRef\" />\n </div>\n <div v-if=\"message.request\" class=\" py-3 w-full flex justify-center\">\n <RequestCard :message=\"message\" :contact=\"contact\" />\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\n// @ts-nocheck — grandfathered legacy chat-tree type errors; lift incrementally\nimport { defineComponent, computed, ref, type PropType } from 'vue';\nimport type { Contact, ExtendedMessage } from '~/types/chat';\nimport { useChatStore, useDate, useI18n } from '~/nuxt-shims';\nimport { useChatActionStore } from '~/stores/chatActionStore';\nimport BubbleVideo from './chat-bubbles/BubbleVideo.vue';\nimport FileDisplay from './chat-bubbles/FileDisplay.vue';\nimport VoiceDisplay from './chat-bubbles/VoiceDisplay.vue';\nimport ContactAvatar from './contact/ContactAvatar.vue';\nimport ImageGroupDisplay from './chat-bubbles/ImageGroupDisplay.vue';\nimport BubbleOptions from './chat-bubbles/BubbleOptions.vue';\nimport RequestCard from './chat-bubbles/RequestCard.vue';\nimport SafeEmojiText from '../general/SafeEmojiText.vue';\n\ntype ImageDisplayInstance = InstanceType<typeof ImageGroupDisplay>\n\nexport default defineComponent({\n name: 'ChatBubble',\n props: {\n message: {\n type: Object as PropType<ExtendedMessage>,\n required: true,\n },\n contact: {\n type: Object as PropType<Contact>,\n required: true,\n },\n isFirstUnread: {\n type: Boolean,\n default: false\n },\n isDeleting: {\n type: Boolean,\n default: false\n }\n },\n components: {\n ImageGroupDisplay,\n BubbleVideo,\n FileDisplay,\n SafeEmojiText,\n VoiceDisplay,\n ContactAvatar,\n BubbleOptions,\n RequestCard,\n },\n setup(props) {\n const chatStore = useChatStore()\n const chatActionStore = useChatActionStore()\n const { formatDateShort, formatTime } = useDate()\n const { t } = useI18n()\n\n const isMine = computed(() => props.message.senderId === chatStore.currentUserId)\n const imageDisplayRef = ref<ImageDisplayInstance | null>(null);\n\n // Typing as any to forcefully bypass the TypeScript compilation error for \"openMenu does not exist\"\n const bubbleOptionsRef = ref<any>(null);\n\n const messageType = computed(() => {\n if (props.message.voiceUrl && props.message.voiceUrl.trim().length > 0) return 'voice'\n if (props.message.imageUrl && props.message.imageUrl.length > 1) return 'multiImage'\n if (props.message.imageUrl && props.message.imageUrl.length === 1 && props.message.imageUrl[0]?.trim().length > 0) return 'image'\n if (props.message.videoUrl && props.message.videoUrl.trim().length > 0) return 'video'\n if (props.message.fileUrl && props.message.fileUrl.trim().length > 0) return 'file'\n return 'text'\n })\n\n const isSameDayPrev = computed(() => {\n if (!props.message.prevMessage) return false;\n return new Date(props.message.date).toDateString() === new Date(props.message.prevMessage.date).toDateString();\n });\n\n const isSameDayNext = computed(() => {\n if (!props.message.nextMessage) return false;\n return new Date(props.message.date).toDateString() === new Date(props.message.nextMessage.date).toDateString();\n });\n\n const roundingClasses = computed(() => {\n const isPrevSameSender = props.message.prevMessage?.senderId === props.message.senderId;\n if (isMine.value) {\n if (!isPrevSameSender) return 'rounded-br-none';\n return 'rounded-r-none';\n } else {\n if (isPrevSameSender) return 'rounded-l-none';\n return 'rounded-bl-none';\n }\n });\n\n const shouldShowStatus = computed(() => {\n const nextMsg = props.message.nextMessage;\n\n // 1. If there is no next message, it's the last one, so show status\n if (!nextMsg) return true;\n\n const isNextSameSender = nextMsg.senderId === props.message.senderId;\n\n // 2. If the next message is from a different person or on a different day, show status\n if (!isNextSameSender || !isSameDayNext.value) return true;\n\n // 3. Check the 10-minute threshold\n const currentTime = new Date(props.message.date).getTime();\n const nextTime = new Date(nextMsg.date).getTime();\n const tenMinutesInMs = 2 * 60 * 1000;\n\n // Show status only if the next message is sent MORE than 10 minutes later\n return (nextTime - currentTime) > tenMinutesInMs;\n });\n\n const isSameSenderPrev = computed(() => props.message.prevMessage?.senderId === props.message.senderId);\n const isSameSenderNext = computed(() => props.message.nextMessage?.senderId === props.message.senderId);\n\n const displayedImages = computed(() => {\n return props.message.imageUrl?.slice(0, 3) || [];\n });\n\n const previewImage = (index: number) => {\n console.log(imageDisplayRef.value)\n imageDisplayRef.value?.open(index)\n }\n\n // --- Context Menu & Select Logic ---\n const handleRightClick = (event: MouseEvent) => {\n if (props.message.request) return\n if (!props.message.isSent) return\n if (!chatActionStore.isSelectMode) {\n chatActionStore.selectedMessages.clear();\n chatActionStore.toggleSelection(props.message);\n }\n\n // when openning the menu remember to make also a mode for vibrate\n bubbleOptionsRef.value?.openMenu(event.clientX, event.clientY);\n };\n\n const handleLeftClick = () => {\n if (chatActionStore.isSelectMode) {\n chatActionStore.toggleSelection(props.message);\n }\n };\n\n const isSelected = computed(() => chatActionStore.selectedMessages.has(props.message.id));\n const isSelectMode = computed(() => chatActionStore.isSelectMode)\n\n const checkIcon = computed(() => {\n if (props.message.isSent) {\n return props.message.isRead ? 'PhChecks' : 'PhCheck'\n } else {\n return 'PhClock'\n }\n })\n\n const replyName = computed(() => {\n if (!props.message.repliedTo) return ''\n let message = props.message.repliedTo\n if (message.senderId === chatStore.currentUserId) return t('chat.you')\n return props.contact.name\n })\n\n const replyContent = computed(() => {\n if (!props.message.repliedTo) return ''\n let message = props.message.repliedTo\n if (message.videoUrl && message.videoUrl.trim().length > 0) return t('chat.attachementTypes.video')\n if (message.voiceUrl && message.voiceUrl.trim().length > 0) return t('chat.attachementTypes.voice')\n if (message.fileUrl && message.fileUrl.trim().length > 0) return t('chat.attachementTypes.file')\n if (message.imageUrl && message.imageUrl.length > 0) return t('chat.attachementTypes.image')\n return message.text\n })\n\n const longPressTimer = ref<ReturnType<typeof setTimeout> | null>(null);\n const touchStartPos = ref({ x: 0, y: 0 });\n\n const onPointerDown = (event: PointerEvent) => {\n // Only handle primary pointer (left click or single finger)\n if (event.button !== 0 && event.pointerType === 'mouse') return;\n if (chatActionStore.isSelectMode) return;\n\n // Store starting position to detect if the user moves too much (scrolling)\n touchStartPos.value = { x: event.clientX, y: event.clientY };\n\n // Start the 1-second timer\n longPressTimer.value = setTimeout(() => {\n // Vibrate for feedback if available on mobile\n if ('vibrate' in navigator) navigator.vibrate(50);\n\n handleRightClick(event as unknown as MouseEvent);\n longPressTimer.value = null;\n }, 1000); // 1 Second as requested\n };\n\n const onPointerMove = (event: PointerEvent) => {\n if (!longPressTimer.value) return;\n\n // If the user moves more than 10px, they are likely scrolling. Cancel the timer.\n const deltaX = Math.abs(event.clientX - touchStartPos.value.x);\n const deltaY = Math.abs(event.clientY - touchStartPos.value.y);\n\n if (deltaX > 10 || deltaY > 10) {\n clearTimeout(longPressTimer.value);\n longPressTimer.value = null;\n }\n };\n\n const onPointerUp = () => {\n if (longPressTimer.value) {\n clearTimeout(longPressTimer.value);\n longPressTimer.value = null;\n }\n };\n\n const uploadData = computed(() => chatActionStore.uploadProgress.get(props.message.id));\n\n return {\n onPointerMove,\n onPointerDown,\n onPointerUp,\n formatTime,\n isMine,\n replyContent,\n messageType,\n replyName,\n checkIcon,\n formatDateShort,\n roundingClasses,\n shouldShowStatus,\n isSameSenderNext,\n displayedImages,\n isSameDayNext,\n imageDisplayRef,\n isSameSenderPrev,\n previewImage,\n bubbleOptionsRef,\n handleRightClick,\n handleLeftClick,\n isSelected,\n uploadData,\n isSelectMode,\n t,\n }\n }\n})\n</script>\n<style scoped>\n@keyframes slide-out-right {\n 0% {\n transform: scaleY(-1) translateX(0);\n opacity: 1;\n }\n\n 100% {\n transform: scaleY(-1) translateX(40px);\n opacity: 0;\n }\n}\n\n/* Animation for 'Their' messages exiting (Left) */\n@keyframes slide-out-left {\n 0% {\n transform: scaleY(-1) translateX(0);\n opacity: 1;\n }\n\n 100% {\n transform: scaleY(-1) translateX(-40px);\n opacity: 0;\n }\n}\n\n.animate-delete-right {\n animation: slide-out-right 300ms ease-in forwards;\n white-space: nowrap;\n}\n\n.animate-delete-left {\n animation: slide-out-left 300ms ease-in forwards;\n white-space: nowrap;\n}\n\n.msg-slide-enter-active {\n transition: all 0.3s ease-out;\n}\n\n.msg-slide-enter-from {\n opacity: 0;\n transform: translateX(20px);\n}\n\n.msg-grow-enter-active {\n transition: grid-template-rows 0.4s ease, opacity 0.4s ease;\n display: grid;\n grid-template-rows: 1fr;\n}\n\n.msg-grow-enter-from {\n grid-template-rows: 0fr;\n opacity: 0;\n}\n\n.msg-grow-enter-active>div {\n overflow: hidden;\n}\n</style>\n","export default \"data:image/webp;base64,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\"","<template>\n <div v-if=\"contact\" class=\"relative w-full h-full overflow-hidden\">\n\n <div :class=\"[hasCall ? 'top-12' : 'top-4']\"\n class=\"absolute left-0 right-0 z-20 flex justify-center pointer-events-none transition-opacity duration-200\"\n :style=\"{ opacity: headerOpacity }\">\n <div v-if=\"floatingHeader\"\n class=\"rounded-full bg-on-surface/10 flex items-center justify-center px-4 py-0.5\">\n <div class=\"text-on-surface select-none text-label-sm\">{{ floatingHeader }}</div>\n </div>\n </div>\n <div dir=\"rtl\" id=\"list\" ref=\"scrollContainer\"\n class=\"h-full w-full max-w-dvw overflow-x-hidden overflow-y-auto pb-4 hide-scrollbar flip-vertical bg-surface-variant/30\"\n :class=\"[!showOptionsBar ? 'pt-16' : 'pt-4', lockScroll ? 'overflow-hidden' : '']\" @scroll=\"handleScroll\"\n @wheel.prevent=\"handleWheel\">\n\n <div class=\" w-full max-w-dvw overflow-x-hidden\" v-show=\"messages.length\">\n <div :style=\"{ height: virtualizer.getTotalSize() + 'px', width: '100%', position: 'relative' }\">\n <div v-for=\"virtualRow in virtualizer.getVirtualItems()\"\n :key=\"reversedMessages[virtualRow.index].id\" :data-index=\"virtualRow.index\"\n :ref=\"(el) => el && virtualizer.measureElement(el)\" :style=\"{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n transform: `translateY(${virtualRow.start}px)`\n }\">\n\n <div class=\"flip-vertical\" :class=\"[\n getSpacingClass(virtualRow.index, reversedMessages[virtualRow.index]),\n virtualRow.index === 0 ? 'pb-2' : '',\n animatingIds.has(reversedMessages[virtualRow.index].id)\n ? (reversedMessages[virtualRow.index]?.request\n ? 'animate-request-in'\n : (reversedMessages[virtualRow.index].senderId === currentUserId ? 'animate-slide-right' : 'animate-slide-left'))\n : ''\n ]\">\n\n <ChatBubble :is-deleting=\"deletingIds.has(reversedMessages[virtualRow.index].id)\"\n :is-first-unread=\"reversedMessages[virtualRow.index].id === firstUnreadId\"\n :message=\"reversedMessages[virtualRow.index]\"\n :is-self=\"reversedMessages[virtualRow.index].senderId === currentUserId\"\n :contact=\"contact\" />\n </div>\n\n </div>\n </div>\n\n <div ref=\"loaderRef\" v-show=\"isLoading\"\n class=\"w-full flex h-16 justify-center items-center shrink-0 overflow-hidden transition-all duration-300 flip-vertical py-4\">\n <div>\n <LottieAnimation :animation-data=\"loading\" :height=\"52\" :width=\"52\" :loop=\"true\"\n :auto-play=\"true\" />\n </div>\n </div>\n </div>\n\n <div v-show=\"messages.length === 0 && !isLoading\"\n class=\"h-full flex items-center justify-center text-on-surface/50 text-body-md flip-vertical\">\n <NoDataDisplay :title=\"t('chat.noMessages')\" :image-path=\"NoMessages\" />\n </div>\n <div v-show=\"messages.length === 0 && isLoading\"\n class=\" w-full flex h-full flip-vertical items-center justify-center\">\n <LottieAnimation :animation-data=\"loading\" :height=\"52\" :width=\"52\" :loop=\"true\" :auto-play=\"true\" />\n </div>\n <div class=\" transition-all duration-200 ease-in-out pointer-events-none\"\n :class=\"[canScroll ? 'h-16' : 'h-0']\"></div>\n </div>\n <div class=\"absolute pointer-events-none bottom-0 right-0 w-full transition-all duration-300 ease-in-out\"\n @click.self.stop>\n\n <div class=\"flex flex-col pointer-events-none\" @click.self.stop>\n <div class=\"pr-3 pb-1 w-11\">\n <div @click=\"resetScroll\"\n :class=\"[canScroll ? ' scale-100 pointer-events-auto opacity-100' : ' opacity-0 pointer-events-none scale-0']\"\n class=\"w-11 origin-bottom transition-all duration-200 ease-in-out h-11 rounded-full overflow-hidden bg-surface shadow-floating flex items-center justify-center cursor-pointer\">\n <BIcon icon=\"PhArrowDown\" class=\"fill-on-surface w-6 h-6\" />\n </div>\n </div>\n <div class=\"grid transition-all pointer-events-none duration-200 ease-in-out\"\n :class=\"[!showOptionsBar ? 'grid-rows-[1fr] opacity-100' : 'grid-rows-[0fr] opacity-0']\">\n\n <!-- 2. This wrapper with 'min-h-0' is required for the grid trick to work -->\n <div class=\"min-h-0\">\n <!-- 3. Your original content wrapper -->\n <div :class=\"[!showOptionsBar ? 'translate-y-0 opacity-100 pointer-events-none' : '-translate-y-2 opacity-0 pointer-events-none']\"\n class=\"transition-all duration-200 w-full lg:max-w-full max-w-dvw p-2 flex items-center gap-x-3 overflow-x-auto lg:overflow-visible hide-scrollbar whitespace-nowrap\">\n\n <div v-for=\"option in mappedOptions\" :key=\"option.key\" @click=\"handleOption(option.key)\"\n class=\"px-2.5 pointer-events-auto flex items-center gap-x-2 cursor-pointer bg-surface-variant-3 rounded-lg h-9 shrink-0\">\n <BIcon :icon=\"option.icon\" class=\"w-5 h-5 fill-on-surface/50\" />\n <div class=\"text-body-sm select-none text-on-surface/70\">{{ option.label }}</div>\n </div>\n <div class=\"pointer-events-auto\">\n <MedicSelector mode=\"medic\">\n <template #trigger>\n <div\n class=\"px-2.5 flex items-center gap-x-2 cursor-pointer bg-surface-variant-3 rounded-lg h-9 shrink-0\">\n <BIcon icon=\"PhUserPlus\" class=\"w-5 h-5 fill-on-surface/50\" />\n <div class=\"text-body-sm select-none text-on-surface/70\">\n {{ t('chat.barOptions.addPerson') }}\n </div>\n </div>\n </template>\n </MedicSelector>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <BModal ref=\"modal\" @action=\"handleModalConfirm\" />\n</template>\n<script lang=\"ts\">\n// @ts-nocheck — grandfathered legacy chat-tree type errors; lift incrementally\nimport { defineComponent, ref, computed, onMounted, onBeforeUnmount, watch, type PropType, nextTick } from 'vue';\nimport { useI18n, useChatActionStore, useChatStore, useCallStore, useDate } from '~/nuxt-shims';\nimport { useVirtualizer } from '@tanstack/vue-virtual';\nimport ChatBubble from './ChatBubble.vue';\nimport type { Message, MessageType, Contact, ExtendedMessage } from '~/types/chat';\nimport loading from '~/assets/lottie/loading.json';\nimport NoDataDisplay from '../general/NoDataDisplay.vue';\nimport NoMessages from '~/assets/lib-images/chat/no-messages.webp';\nimport type { Modal } from '~/types/components/modal';\nimport type { MenuOption } from '~/types/components/menu-options';\nimport MedicSelector from './medic-features/MedicSelector.vue';\nimport type { Menu } from '~/types/components/menu';\nimport { useEventBus } from '@vueuse/core';\nexport default defineComponent({\n name: 'ChatMessages',\n components: { ChatBubble, NoDataDisplay, MedicSelector },\n props: {\n contact: {\n type: Object as PropType<Contact | null>,\n required: true,\n },\n options: {\n type: Array as PropType<MenuOption[]>,\n default: () => [],\n required: true,\n }\n },\n setup(props) {\n const menuRef = ref<Menu | null>(null)\n const modal = ref<Modal | null>(null);\n const chatStore = useChatStore();\n const callStore = useCallStore()\n const { t } = useI18n();\n const chatActionStore = useChatActionStore();\n const { formatDateShort } = useDate();\n const chatId = computed(() => chatStore.activeConversationId)\n const hasCall = computed(() => callStore.isActive)\n\n\n\n const referBus = useEventBus('open-referral');\n const scrollContainer = ref<HTMLElement | null>(null);\n const loaderRef = ref<HTMLElement | null>(null);\n let observer: IntersectionObserver | null = null;\n\n const messages = ref<Message[]>([]);\n const isLoading = ref(false);\n const currentPage = ref(1);\n const maxPages = 5;\n const currentUserId = chatStore.currentUserId;\n\n const MENU_KEYS = ['add-user'];\n\n const mappedOptions = computed(() => {\n return props.options.filter(option => !MENU_KEYS.includes(option.key));\n });\n\n // --- BUS SUBSCRIPTIONS ---\n let unsubSend: () => void;\n let unsubDelete: () => void;\n let unsubUpdate: () => void;\n\n const pendingRequestConversationId = ref<number | null>(null);\n let unsubPersonalInfo: () => void;\n\n onMounted(() => {\n\n console.log('id')\n if (chatId.value) chatStore.markAsRead(chatId.value);\n fetchMessages(1);\n\n // 1. Listen for new messages to send\n unsubSend = chatActionStore.sendBus.on((newMsgs) => {\n addMessages(newMsgs);\n });\n\n unsubPersonalInfo = chatActionStore.personalInfoBus.on((conversationId) => {\n pendingRequestConversationId.value = conversationId;\n modal.value?.openModal(\n t('chat.requestCard.infoAccess.requestModal.title'),\n t('chat.requestCard.infoAccess.requestModal.description'),\n 'success',\n true,\n t('chat.requestCard.infoAccess.requestModal.action')\n );\n });\n\n // 2. Listen for delete triggers to open the modal\n unsubDelete = chatActionStore.deleteBus.on((ids) => {\n handleDeleteMessages(ids);\n });\n\n // 3. Listen for targeted patches (e.g. swapping temp IDs, toggling isSent, handling edits)\n unsubUpdate = chatActionStore.updateBus.on(({ id, updates }) => {\n const index = messages.value.findIndex(m => m.id === id);\n if (index !== -1) {\n messages.value[index] = { ...messages.value[index], ...updates };\n }\n });\n\n // Intersection Observer setup\n setTimeout(() => {\n observer = new IntersectionObserver(([entry]) => {\n if (entry.isIntersecting && !isLoading.value && messages.value.length > 0) {\n fetchMessages(currentPage.value + 1);\n }\n }, { root: scrollContainer.value, threshold: 0, rootMargin: '150px' });\n\n if (loaderRef.value) observer.observe(loaderRef.value);\n }, 500);\n });\n\n onBeforeUnmount(() => {\n if (observer) observer.disconnect();\n if (animationFrame) cancelAnimationFrame(animationFrame);\n if (scrollTimer) clearTimeout(scrollTimer);\n if (unsubSend) unsubSend();\n if (unsubDelete) unsubDelete();\n if (unsubUpdate) unsubUpdate();\n if (unsubPersonalInfo) unsubPersonalInfo();\n });\n\n // --- ENRICHMENT LOGIC ---\n const reversedMessages = computed(() => {\n const raw = messages.value;\n const enriched: ExtendedMessage[] = raw.map((msg, idx) => {\n const prev = raw[idx - 1];\n const next = raw[idx + 1];\n const isFirstInDate = !prev || new Date(msg.date).toDateString() !== new Date(prev.date).toDateString();\n\n return {\n ...msg,\n prevMessage: prev,\n nextMessage: next,\n isFirstInDate,\n contact: chatStore.getContactById(msg.senderId)\n };\n });\n return enriched.reverse();\n });\n\n // --- TANSTACK VIRTUALIZER ---\n const virtualizer = useVirtualizer(computed(() => ({\n count: reversedMessages.value.length,\n getScrollElement: () => scrollContainer.value,\n estimateSize: () => 80,\n overscan: 15,\n })));\n\n const getSpacingClass = (index: number, item: ExtendedMessage) => {\n if (item.isFirstInDate) return 'pt-0';\n if (index === reversedMessages.value.length - 1) return 'pt-0';\n const msgBelow = reversedMessages.value[index - 1];\n if (msgBelow && msgBelow.senderId === item.senderId) return 'pt-0';\n return 'pt-0';\n };\n\n const firstUnreadId = computed(() => {\n const unreadMsg = messages.value.find(m => !m.isRead && m.senderId !== currentUserId);\n return unreadMsg ? unreadMsg.id : null;\n });\n\n // --- MOCK DATA GENERATION ---\n const generateMockMessages = (page: number): Message[] => {\n const scenarios = [\"text\", \"voice\", \"text\", \"image\", \"file\", \"multiImage\", \"text\", \"video\", \"text\", \"voice\"];\n\n return Array.from({ length: 20 }).map((_, i) => {\n const globalIndex = (page - 1) * 20 + (19 - i);\n const id = 1000 - globalIndex;\n const scenario = scenarios[id % scenarios.length];\n\n const isMe = Math.floor(globalIndex / 2) % 2 === 0;\n const senderId = isMe ? chatStore.currentUserId : 2;\n\n const daysOffset = Math.floor(globalIndex / 5) * 1.5;\n const minutesOffset = (globalIndex % 5) * 15;\n const totalOffset = daysOffset * 24 * 60 * 60 * 1000 + minutesOffset * 60 * 1000 + 30 * 60 * 1000;\n const messageDate = new Date(Date.now() - totalOffset);\n\n const isRead = globalIndex > 3;\n\n let repliedTo: any = undefined;\n if (id % 3 === 0) {\n const repliedId = id - 2;\n const repliedIsMe = Math.floor((globalIndex + 2) / 2) % 2 === 0;\n\n repliedTo = {\n id: repliedId,\n conversationId: chatStore.activeConversationId ?? 101,\n date: new Date(messageDate.getTime() - 15 * 60 * 1000),\n type: 'text',\n text: `This is the original message ${repliedId} that got replied to.`,\n isEdited: false,\n senderId: repliedIsMe ? chatStore.currentUserId : 2,\n isSent: true,\n isRead: true,\n };\n }\n\n return {\n id,\n conversationId: chatStore.activeConversationId ?? 101,\n date: messageDate,\n type: (scenario === 'multiImage' ? 'image' : scenario) as MessageType,\n text: scenario === \"text\" ? `Message ${id}: ${isMe ? 'Sent by me.' : 'Received from them.'}` : undefined,\n imageUrl: scenario === \"image\" ? [`https://picsum.photos/600/600?sig=${id}`] : scenario === \"multiImage\" ? [`https://picsum.photos/600/600?sig=${id}_1`, `https://picsum.photos/600/600?sig=${id}_2`, `https://picsum.photos/600/600?sig=${id}_3`] : undefined,\n fileUrl: scenario === \"file\" ? `https://upload.wikimedia.org/wikipedia/commons/d/d3/Test.pdf` : undefined,\n voiceUrl: scenario === \"voice\" ? `https://interactive-examples.mdn.mozilla.net/media/cc0-audio/t-rex-roar.mp3?id=${id}` : undefined,\n videoUrl: scenario === \"video\" ? 'https://www.w3schools.com/html/mov_bbb.mp4' : undefined,\n isEdited: id % 8 === 0,\n senderId: senderId,\n isSent: true,\n isRead: isMe ? true : isRead,\n repliedTo: repliedTo\n } as Message;\n });\n };\n\n const fetchMessages = async (page: number) => {\n\n if (isLoading.value || page > maxPages) return;\n isLoading.value = true;\n await new Promise(resolve => setTimeout(resolve, 800));\n const newBatch = generateMockMessages(page);\n messages.value = [...newBatch, ...messages.value];\n currentPage.value = page;\n isLoading.value = false;\n };\n\n // --- SCROLL LOGIC ---\n const headerOpacity = ref(0);\n let scrollTimer: any = null;\n const scrollOffset = ref(0);\n const topVisibleMessageIndex = ref(0);\n const targetScroll = ref(0);\n let animationFrame: number | null = null;\n const showOptionsBar = ref(false);\n let lastScrollTop = 0;\n const lockScroll = computed(() => chatActionStore.isMenuOpen)\n\n const handleScroll = () => {\n if (lockScroll.value) return\n const el = scrollContainer.value;\n if (!el) return;\n\n scrollOffset.value = el.scrollTop;\n const currentScroll = el.scrollTop;\n headerOpacity.value = 1;\n if (scrollTimer) clearTimeout(scrollTimer);\n\n scrollTimer = setTimeout(() => { headerOpacity.value = 0; }, 3000);\n\n if ((el.scrollHeight - el.scrollTop - el.clientHeight < 100) && !isLoading.value && messages.value.length > 0) {\n fetchMessages(currentPage.value + 1);\n }\n\n if (currentScroll < lastScrollTop) {\n showOptionsBar.value = false;\n } else {\n showOptionsBar.value = chatStore.chosenRole !== 'user';\n }\n lastScrollTop = currentScroll;\n\n const items = virtualizer.value.getVirtualItems();\n if (items.length > 0) {\n // CHANGE: Calculate dynamic offset based on call state\n // Base offset is 44px (top-4). If call is active (top-12), we add 44px.\n const targetOffset = hasCall.value ? 88 : 44;\n\n // We look for the message at the viewport bottom minus the dynamic header offset\n const visualTopPhysical = el.scrollTop + el.clientHeight - targetOffset;\n\n let closestIndex = items[0].index;\n let minDiff = Infinity;\n\n for (const item of items) {\n const diff = Math.abs(item.start - visualTopPhysical);\n if (diff < minDiff) {\n minDiff = diff;\n closestIndex = item.index;\n }\n }\n topVisibleMessageIndex.value = closestIndex;\n }\n };\n\n const canScroll = computed(() => scrollOffset.value > 100);\n\n const handleWheel = (e: WheelEvent) => {\n if (lockScroll.value) return\n if (!scrollContainer.value || messages.value.length === 0) return;\n if (targetScroll.value === 0) targetScroll.value = scrollContainer.value.scrollTop;\n targetScroll.value -= e.deltaY;\n const maxScroll = scrollContainer.value.scrollHeight - scrollContainer.value.clientHeight;\n targetScroll.value = Math.max(0, Math.min(targetScroll.value, maxScroll));\n if (!animationFrame) smoothScrollLoop();\n };\n\n const smoothScrollLoop = () => {\n if (!scrollContainer.value) return;\n const current = scrollContainer.value.scrollTop;\n const target = targetScroll.value;\n const distance = (target - current) * 0.22;\n if (Math.abs(distance) > 0.5) {\n scrollContainer.value.scrollTop += distance;\n animationFrame = requestAnimationFrame(smoothScrollLoop);\n } else {\n scrollContainer.value.scrollTop = target;\n animationFrame = null;\n }\n };\n\n const resetScroll = () => {\n if (scrollContainer.value) {\n targetScroll.value = 0;\n if (!animationFrame) smoothScrollLoop();\n }\n };\n\n // --- ACTIONS & ANIMATIONS ---\n const animatingIds = ref<Set<string>>(new Set());\n const deletingIds = ref<Set<string>>(new Set());\n let selectedToDelete = ref<string[]>([]);\n\n const addMessages = (newMsgs: Message[]) => {\n if (!newMsgs || newMsgs.length === 0) return;\n const hasMyMessage = newMsgs.some(msg => msg.senderId === currentUserId);\n\n newMsgs.forEach(msg => animatingIds.value.add(msg.id));\n setTimeout(() => { newMsgs.forEach(msg => animatingIds.value.delete(msg.id)); }, 400);\n\n messages.value.push(...newMsgs);\n\n if (hasMyMessage) {\n nextTick(() => resetScroll());\n }\n };\n\n const handleDeleteMessages = (idsToDelete: string[]) => {\n selectedToDelete.value = idsToDelete;\n\n const isRequestDeletion = idsToDelete.length === 1 &&\n messages.value.find(m => m.id === idsToDelete[0])?.request;\n\n const modalTitle = isRequestDeletion\n ? t('chat.delete.requestTitle')\n : t('chat.delete.title');\n\n const modalDescription = isRequestDeletion ? t('chat.delete.request') : (idsToDelete.length === 1\n ? t('chat.delete.singleMessage')\n : t('chat.delete.multipleMessages', { count: idsToDelete.length }))\n\n // 2. Open the modal with the dynamic title\n modal.value?.openModal(\n modalTitle,\n modalDescription,\n 'error',\n true,\n t('chat.delete.confirm')\n );\n };\n\n const confirmPersonalInfoRequest = () => {\n if (pendingRequestConversationId.value) {\n chatActionStore.sendPersonalInfoRequest(pendingRequestConversationId.value);\n pendingRequestConversationId.value = null;\n modal.value?.closeModal();\n }\n };\n\n const handleModalConfirm = () => {\n // Determine if we are deleting or sending a request based on which ref is populated\n if (selectedToDelete.value.length > 0) {\n deleteMessages();\n } else if (pendingRequestConversationId.value) {\n confirmPersonalInfoRequest();\n }\n };\n\n const deleteMessages = () => {\n modal.value?.closeModal();\n\n setTimeout(() => {\n // Trigger exit animation\n selectedToDelete.value.forEach(id => deletingIds.value.add(id));\n\n setTimeout(() => {\n // 1. Filter out the deleted messages locally\n const remainingMessages = messages.value.filter(m => !selectedToDelete.value.includes(m.id));\n messages.value = remainingMessages;\n\n // 2. Update the sidebar Contact List in the store\n if (chatId.value) {\n // messages.value is chronological, so index [length-1] is the newest message\n const newLastMessage = remainingMessages.length > 0\n ? remainingMessages[remainingMessages.length - 1]\n : null;\n\n if (newLastMessage) {\n chatStore.updateLastMessage(chatId.value, newLastMessage);\n } else {\n chatStore.patchLastMessage(chatId.value, -1, { text: '', date: new Date() } as any);\n }\n }\n\n chatActionStore.clearActions();\n selectedToDelete.value = []; // Reset the selection\n }, 300);\n }, 300);\n };\n\n const floatingHeader = computed(() => {\n const msg = reversedMessages.value[topVisibleMessageIndex.value];\n if (!msg) return null;\n if (msg.id === firstUnreadId.value) return t('chat.unreadMessages');\n return formatDateShort(msg.date);\n });\n\n watch(\n () => chatId.value,\n (newId, oldId) => {\n if (newId && newId !== oldId) {\n chatStore.markAsRead(chatId.value);\n\n messages.value = [];\n currentPage.value = 1;\n\n if (scrollContainer.value) {\n scrollContainer.value.scrollTop = 0;\n }\n\n console.log('fetch new page for fucks sake')\n fetchMessages(1);\n }\n }\n );\n\n const closeMenu = (key: string) => {\n switch (key) {\n case 'add-user':\n menuRef.value?.close()\n break;\n }\n }\n\n const handleOption = (key: string) => {\n switch (key) {\n case 'prescribe-meds':\n if (props.contact?.nationalCode && props.contact.nationalCode.trim().length > 0) {\n chatActionStore.triggerPrescription(props.contact.id);\n } else if (props.contact) {\n chatActionStore.triggerPersonalInfoRequest(props.contact.id);\n }\n break;\n case 'refer':\n referBus.emit();\n }\n }\n\n return {\n floatingHeader, t, scrollContainer, loaderRef, virtualizer, reversedMessages,\n messages, handleWheel, isLoading, currentUserId, loading, NoMessages,\n getSpacingClass, handleScroll, firstUnreadId, headerOpacity, addMessages,\n animatingIds, handleDeleteMessages, modal, deleteMessages, deletingIds,\n canScroll, resetScroll, showOptionsBar, mappedOptions, closeMenu,\n menuRef, handleModalConfirm, handleOption, hasCall,\n lockScroll,\n };\n }\n});\n</script>\n<style scoped>\n/* Add this to your existing styles */\n.flip-vertical {\n transform: scaleY(-1);\n /* Optimization for smooth virtual scrolling */\n will-change: scroll-position;\n}\n\n/* Force hardware acceleration on the bubbles */\n[data-index] {\n will-change: transform;\n backface-visibility: hidden;\n}\n\n.hide-scrollbar::-webkit-scrollbar {\n display: none;\n}\n\n@keyframes slide-in-right {\n 0% {\n opacity: 0;\n transform: scaleY(-1) translateX(30px);\n }\n\n 100% {\n opacity: 1;\n transform: scaleY(-1) translateX(0);\n }\n}\n\n/* Animation for 'Their' messages (Left to Right) */\n@keyframes slide-in-left {\n 0% {\n opacity: 0;\n transform: scaleY(-1) translateX(-30px);\n }\n\n 100% {\n opacity: 1;\n transform: scaleY(-1) translateX(0);\n }\n}\n\n.animate-slide-right {\n animation: slide-in-right 300ms ease-out forwards;\n will-change: transform, opacity;\n}\n\n.animate-slide-left {\n animation: slide-in-left 300ms ease-out forwards;\n will-change: transform, opacity;\n}\n\n#list {\n will-change: padding-top;\n}\n\n.animate-request-in {\n animation: request-in 0.4s ease-out forwards;\n overflow: hidden;\n /* Ensure the base state is also flipped to avoid flickering at the end */\n transform: scaleY(-1);\n}\n\n@keyframes request-in {\n 0% {\n opacity: 0;\n max-height: 0;\n /* Include scaleY(-1) here to maintain the flip */\n transform: scaleY(-1) translateY(10px);\n }\n\n 100% {\n opacity: 1;\n max-height: 1000px;\n /* Keep scaleY(-1) here as well */\n transform: scaleY(-1) translateY(0);\n }\n}\n</style>\n","<template>\n <BPopup @closed=\"resetFields\" no-padding ref=\"popup\">\n <div class=\"md:max-w-86 w-dvw flex flex-col items-center py-4 px-6\">\n <div class=\" pb-4 flex items-center gap-x-3 w-full\">\n <BIcon icon=\"PhX\" class=\" cursor-pointer w-4 h-4 fill-on-surface/50\" @click=\"close\" />\n <div class=\" text-label-sm text-on-surface\">{{ t('chat.patientReferral.referTo') }}</div>\n </div>\n <BSelect :placeholder=\"t('chat.patientReferral.select')\" :title=\"t('chat.patientReferral.speciality')\"\n :loading=\"isLoading\" v-model=\"field.value\" :color=\"field.color\" :message=\"field.message\"\n :options=\"serviceOptions\" />\n <BSelect :placeholder=\"t('chat.patientReferral.select')\" :title=\"t('chat.patientReferral.priority.title')\"\n :loading=\"isLoading\" v-model=\"priority.value\" :color=\"priority.color\" :message=\"priority.message\"\n :options=\"referStates\" />\n <BInput :placeholder=\"t('chat.patientReferral.write')\" :title=\"t('chat.patientReferral.description')\"\n textarea v-model=\"description.value\" :color=\"description.color\" :message=\"description.message\" />\n <BButton @click=\"validateFields\" class=\" min-w-full w-full\" color=\"primary\" :disabled=\"hasErrors\"\n :loading=\"isSending\" :text=\"t('chat.patientReferral.submit')\" />\n </div>\n </BPopup>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, watch, type PropType } from 'vue';\nimport type { Popup } from '~/types/components/popup';\nimport { useServiceStore, useI18n, useAppToast } from '~/nuxt-shims';\nimport { useEventBus } from '@vueuse/core';\nimport type { Contact } from '~/types/chat';\nexport interface PatientRefferalExposed {\n open: () => void;\n close: () => void;\n}\n\nexport default defineComponent({\n name: 'PatientReferral',\n props: {\n contact: {\n type: Object as PropType<Contact>,\n required: true,\n }\n },\n setup(props, { expose }) {\n const serviceStore = useServiceStore()\n const { openToast } = useAppToast()\n const { t } = useI18n()\n\n const referBus = useEventBus('open-referral');\n referBus.on(() => open());\n\n const field = ref({\n value: [],\n message: '',\n color: 'primary'\n })\n\n const priority = ref({ value: 'high', color: 'primary', message: '' })\n\n const referStates = computed(() => [\n {\n label: t('chat.patientReferral.priority.high'),\n value: 'high'\n },\n {\n label: t('chat.patientReferral.priority.medium'),\n value: 'medium'\n },\n {\n label: t('chat.patientReferral.priority.low'),\n value: 'low'\n },\n ])\n\n const description = ref({\n value: '', color: 'primary', message: ''\n })\n\n const popup = ref<Popup | null>(null)\n const isLoading = computed(() => serviceStore.isLoadingServices)\n const isSending = ref(false)\n const hasErrors = ref(false)\n\n const serviceOptions = computed(() =>\n serviceStore.services.map(service => ({\n label: service.label,\n value: service.id,\n }))\n );\n\n\n const validateFields = () => {\n let errorsFound = false;\n\n if (!field.value.value || (Array.isArray(field.value.value) && field.value.value.length === 0)) {\n field.value.color = 'error';\n field.value.message = t('validation.required', { field: t('chat.patientReferral.speciality') });\n errorsFound = true;\n }\n\n if (!priority.value.value) {\n priority.value.color = 'error';\n priority.value.message = t('validation.required', { field: t('chat.patientReferral.priority.title') });\n errorsFound = true;\n }\n\n if (!description.value.value || !description.value.value.trim()) {\n description.value.color = 'error';\n description.value.message = t('validation.required', { field: t('chat.patientReferral.description') });\n errorsFound = true;\n }\n\n hasErrors.value = errorsFound;\n\n if (!errorsFound && !isSending.value) {\n submitReferral();\n }\n }\n\n watch(\n [\n () => field.value.value,\n () => priority.value.value,\n () => description.value.value\n ],\n ([newField, newPriority, newDesc], [oldField, oldPriority, oldDesc]) => {\n hasErrors.value = false;\n\n if (JSON.stringify(newField) !== JSON.stringify(oldField)) {\n field.value.color = 'primary';\n field.value.message = '';\n }\n if (newPriority !== oldPriority) {\n priority.value.color = 'primary';\n priority.value.message = '';\n }\n if (newDesc !== oldDesc) {\n description.value.color = 'primary';\n description.value.message = '';\n }\n },\n { deep: true }\n );\n\n const submitReferral = async () => {\n if (isSending.value || hasErrors.value) return\n try {\n isSending.value = true;\n openToast(t('chat.patientReferral.submitSuccess'), 'success')\n popup.value?.close()\n } catch (error) {\n openToast(t('chat.patientReferral.submitFail'), 'error')\n\n } finally {\n isSending.value = false;\n }\n }\n\n const open = () => {\n popup.value?.open()\n }\n\n const close = () => {\n popup.value?.close()\n }\n\n expose({ close, open } as PatientRefferalExposed);\n\n const resetFields = () => {\n field.value.value = []\n priority.value.value = 'high'\n description.value.value = ''\n }\n\n\n return {\n popup,\n t,\n isLoading,\n close,\n resetFields,\n field,\n description,\n priority,\n serviceOptions,\n hasErrors,\n isSending,\n validateFields,\n referStates,\n }\n }\n})\n</script>","<template>\n <div class=\" w-full h-full relative rounded-2xl p-2 flex flex-col bg-black-600 gap-y-2 items-center border-2 overflow-hidden justify-center transition-all duration-200 ease-in-out\"\n :class=\"[contact.isSpeaking ? ' border-primary' : ' border-primary/0']\">\n\n <!-- Video Background Feature -->\n <video v-show=\"hasActiveStream\" ref=\"videoRef\" autoplay playsinline :muted=\"isMine\"\n class=\"absolute inset-0 w-full h-full object-cover \"></video>\n\n <div class=\" absolute p-2 w-full h-full z-0 top-0 left-0 flex flex-col justify-between\" >\n <div class=\" w-full flex justify-end items-center\">\n <div :class=\"[contact.isSpeaking ? 'opacity-100' : 'opacity-0']\"\n class=\"cursor-pointer rounded-full bg-black-500 transition-all duration-200 ease-in-out w-10 h-10 flex items-center justify-center\">\n <BIcon icon=\"PhWaveform\" class=\" w-4 h-4 fill-white\" />\n </div>\n </div>\n <div class=\" w-full flex items-center\">\n <div @click=\"toggleFullScreen\"\n class=\" rounded-full w-10 h-10 cursor-pointer flex items-center justify-center bg-black-500\">\n <BIcon :icon=\"!isFullScreen ? 'PhFrameCorners' : 'PhCornersIn'\" class=\" w-4 h-4 fill-white\" />\n </div>\n </div>\n </div>\n\n <!-- Avatar Fallback Logic -->\n <div v-if=\"!hasActiveStream\" class=\" w-18 h-18\">\n <ContactAvatar :showOnline=\"false\" :contact=\"contact\" />\n </div>\n\n <!-- Name Label (Z-index ensures visibility over video) -->\n <div :class=\"{ 'absolute bottom-4 left-4 z-20': hasActiveStream }\"\n class=\" text-white text-label-md sm:text-title-lg select-none\">\n {{ contact.name }} {{ contact.lastName }}\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { type PropType, defineComponent, computed, ref, watch, onMounted } from 'vue';\nimport type { CallMember } from '~/types/call';\nimport ContactAvatar from '../chat/contact/ContactAvatar.vue';\nimport { useChatStore } from '~/nuxt-shims';\n\nexport default defineComponent({\n name: 'CallMemberDisplay',\n props: {\n contact: {\n type: Object as PropType<CallMember>,\n required: true,\n },\n isFullScreen: {\n type: Boolean,\n default: false\n }\n },\n components: {\n ContactAvatar,\n },\n emits: ['toggle-fullscreen'],\n setup(props, { emit }) {\n const chatStore = useChatStore();\n const videoRef = ref<HTMLVideoElement | null>(null);\n const isMine = computed(() => chatStore.currentUserId === props.contact.id);\n\n // Detect if camera is on or screen is being shared\n const hasActiveStream = computed(() => {\n return props.contact.stream !== null && (props.contact.isCameraOn || props.contact.isScreenSharing);\n });\n\n const toggleFullScreen = () => {\n emit('toggle-fullscreen');\n };\n\n // watch(() => hasActiveStream.value, () => {\n // if (hasActiveStream.value) {\n // toggleFullScreen()\n // } else {\n // if (!isMine.value && props.isFullScreen) {\n // toggleFullScreen()\n // }\n // }\n // })\n\n // Manual binding for the MediaStream object\n const updateStream = () => {\n if (videoRef.value) {\n videoRef.value.srcObject = props.contact.stream;\n }\n };\n\n // Handle stream changes (e.g., swapping camera to screen share)\n watch(() => props.contact.stream, updateStream);\n onMounted(updateStream);\n\n return {\n isMine,\n videoRef,\n hasActiveStream,\n toggleFullScreen,\n };\n }\n})\n</script>\n","<template>\n <div dir=\"ltr\" ref=\"sliderRef\"\n class=\"relative w-12 h-44 bg-surface rounded-full shadow-[0_4px_16px_rgba(0,0,0,0.1)] flex justify-center touch-none select-none overflow-visible cursor-pointer\"\n @pointerdown.stop.prevent=\"startDrag\">\n\n <!-- Tapered Track (Thin at top, thick at bottom) -->\n <div class=\"absolute inset-y-4 inset-x-0 flex justify-center pointer-events-none\">\n <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 48 144\" preserveAspectRatio=\"none\">\n <path d=\"M22,0 L26,0 L34,134 A 10 10 0 0 1 14,134 Z\" class=\" fill-surface-variant\" />\n </svg>\n </div>\n\n <!-- Dynamic Handle (Scales with value) -->\n <div class=\"absolute left-1/2 rounded-full pointer-events-none transition-none shadow-sm\" :style=\"{\n top: `calc(${thumbPositionPercent}% + 1rem - ${thumbPositionPercent * 0.32}px)`,\n width: `${handleSize}px`,\n height: `${handleSize}px`,\n backgroundColor: color,\n transform: `translate(-50%, -50%)`\n }\">\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, computed, onBeforeUnmount } from 'vue';\n\nexport default defineComponent({\n name: 'BrushSizeSlider',\n props: {\n modelValue: { type: Number, required: true },\n min: { type: Number, default: 1 },\n max: { type: Number, default: 20 },\n color: { type: String, default: '#000000' }\n },\n emits: ['update:modelValue'],\n setup(props, { emit }) {\n const sliderRef = ref<HTMLElement | null>(null);\n\n // Top is MIN (thinnest), Bottom is MAX (thickest)\n const thumbPositionPercent = computed(() => {\n const range = props.max - props.min;\n const val = props.modelValue - props.min;\n return (val / range) * 100; // 0% at top, 100% at bottom\n });\n\n // Handle grows dynamically (e.g., from 6px to 22px)\n const handleSize = computed(() => {\n const range = props.max - props.min;\n const val = props.modelValue - props.min;\n return 6 + (val / range) * 16;\n });\n\n const updateValueFromEvent = (e: PointerEvent) => {\n if (!sliderRef.value) return;\n const rect = sliderRef.value.getBoundingClientRect();\n const padding = 16; // 1rem padding top and bottom\n const trackHeight = rect.height - (padding * 2);\n\n let y = e.clientY - rect.top - padding;\n y = Math.max(0, Math.min(y, trackHeight));\n\n const percent = y / trackHeight;\n const range = props.max - props.min;\n const newValue = Math.round(props.min + (percent * range));\n\n emit('update:modelValue', newValue);\n };\n\n const onPointerMove = (e: PointerEvent) => updateValueFromEvent(e);\n const onPointerUp = () => {\n window.removeEventListener('pointermove', onPointerMove);\n window.removeEventListener('pointerup', onPointerUp);\n };\n\n const startDrag = (e: PointerEvent) => {\n updateValueFromEvent(e);\n window.addEventListener('pointermove', onPointerMove);\n window.addEventListener('pointerup', onPointerUp);\n };\n\n onBeforeUnmount(() => onPointerUp());\n\n return { sliderRef, thumbPositionPercent, handleSize, startDrag };\n }\n});\n</script>","<template>\n <div @click.self.stop=\"close\" class=\" top-0 left-0 absolute z-20 w-full h-full\"\n :class=\"[isOpen ? ' pointer-events-auto' : 'pointer-events-none']\">\n <div ref=\"colorPickerWrapper\"\n :class=\"[isOpen ? ' shadow-medium pointer-events-auto bg-surface' : ' pointer-events-none bg-surface/0 shadow-none']\"\n class=\"rounded-t-2xl py-3 absolute z-30 transition-all duration-200 ease-in-out left-0 w-full bottom-0 origin-bottom h-auto\">\n <div class=\" w-full transition-all duration-200 px-3 whitespace-nowrap overflow-hidden \"\n :class=\"[isOpen ? ' h-auto opacity-100' : 'h-0 pointer-events-none opacity-0']\">\n <div class=\" w-full mb-4 flex items-center gap-x-1 \">\n <div v-for=\"(color, index) in colors\" @click=\"changeSelection(index)\"\n class=\" aspect-square rounded-lg cursor-pointer transition-all duration-200 ease-in-out border-2\"\n :class=\"[index === selectedColor ? ' border-primary' : ' border-primary/0']\"\n :style=\"{ backgroundColor: color, width: `${100 / colors.length}%` }\"></div>\n </div>\n <BButton :disabled=\"!canSelect\" class=\" min-w-full\" color=\"primary\" :text=\"t('chat.board.confirm')\"\n @click=\"submitSelection\" />\n </div>\n </div>\n </div>\n</template>\n<script lang=\"ts\">\n// @ts-nocheck — grandfathered legacy chat-tree type errors; lift incrementally\nimport { defineComponent, onMounted, onUnmounted, type PropType } from 'vue';\nimport { useI18n } from '~/nuxt-shims';\nexport interface BoardColorPickerExposed {\n open: () => void;\n close: () => void;\n}\n\nexport default defineComponent({\n name: 'BoardColorPicker',\n props: {\n modelValue: {\n type: String,\n default: \"#000000\"\n },\n colors: {\n type: Array as PropType<String[]>,\n default: () => [],\n }\n },\n emits: ['update:modelValue'],\n setup(props, { emit, expose }) {\n const { t } = useI18n()\n const isOpen = ref(false)\n const selectedColor = ref(0)\n const isTransitioning = ref(true)\n const colorPickerWrapper = ref<HTMLElement | null>(null)\n const previousSelectedColor = ref(0)\n const colors = computed(() => props.colors)\n\n\n // const colors = ref([\n // '#2C2727', '#F49AA6', '#F897F6', '#CF40F3', '#555CEE',\n // '#40F3E4', '#8CE25E', '#E9EF37', '#F37040', '#F34040'\n // ])\n\n const handleGlobalKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n close();\n }\n };\n\n onMounted(() => {\n window.addEventListener('keydown', handleGlobalKeyDown);\n });\n\n onUnmounted(() => {\n window.removeEventListener('keydown', handleGlobalKeyDown);\n });\n\n const open = () => {\n const index = colors.value.indexOf(props.modelValue);\n previousSelectedColor.value = index !== -1 ? index : 0;\n selectedColor.value = previousSelectedColor.value;\n\n setTimeout(() => {\n isTransitioning.value = false;\n }, 300)\n nextTick(() => {\n isOpen.value = true;\n });\n }\n\n const canSelect = computed(() => selectedColor.value !== previousSelectedColor.value)\n\n\n const close = () => {\n if (isOpen.value && !isTransitioning.value) {\n isTransitioning.value = true\n isOpen.value = false;\n emit('update:modelValue', colors.value[previousSelectedColor.value]);\n }\n }\n\n\n const changeSelection = (index: number) => {\n selectedColor.value = index;\n emit('update:modelValue', colors.value[index]);\n }\n\n const submitSelection = () => {\n previousSelectedColor.value = selectedColor.value;\n isOpen.value = false;\n }\n\n\n expose({ open, close })\n\n return {\n changeSelection,\n submitSelection,\n isOpen,\n colorPickerWrapper,\n colors,\n t,\n canSelect,\n close,\n selectedColor,\n }\n }\n})\n</script>","<template>\n <div class=\"whitespace-nowrap overflow-hidden relative text-wrap select-none w-dvw md:max-w-135 \">\n <div class=\" flex flex-col p-4 w-full h-full \">\n <div class=\"flex items-center gap-x-3 shrink-0\">\n <BIcon icon=\"PhX\" class=\"cursor-pointer fill-on-surface/50 w-5 h-5\" @click=\"$emit('close')\" />\n <div class=\"text-on-surface text-label-sm\">{{ t('chat.board.title') }}</div>\n </div>\n\n <!-- CANVAS WRAPPER -->\n <div\n class=\"flex-1 shrink-0 min-h-117 w-full border-2 rounded-2xl border-primary mt-4 relative overflow-hidden bg-white\">\n <canvas ref=\"canvasRef\" class=\"w-full h-full absolute top-0 left-0 touch-none\"></canvas>\n </div>\n\n <div class=\"flex items-center justify-between mt-2 shrink-0\">\n <BButton icon=\"PhTrayArrowDown\" color=\"primary\" type=\"fill\" @click=\"saveToFiles\" />\n <div dir=\"rtl\" class=\"flex items-center gap-x-2\">\n <!-- Color Picker (You can attach an input type=\"color\" or a menu here later) -->\n <div v-if=\"pages.length === 1\" @click.stop=\"handleAction('add-page')\"\n class=\"aspect-square w-11 rounded-full flex items-center justify-center cursor-pointer bg-surface-variant\">\n <BIcon icon=\"PhPlus\" class=\"w-6 h-6 fill-on-surface\" />\n </div>\n <BMenu v-else :options=\"pageOptions\" @select=\"handlePageSelect\">\n <template #trigger>\n <div\n class=\"rounded-full gap-x-2.5 p-2.5 flex items-center justify-center cursor-pointer bg-surface-variant relative h-11\">\n <div class=\" text-label-sm text-on-surface select-none\">+{{ pages.length - 1 }}</div>\n <BIcon icon=\"PhFiles\" class=\" fill-on-surface w-6 h-6\" />\n </div>\n </template>\n\n </BMenu>\n <BMenu :align=\"'top'\" ref=\"colorPickerMenu\">\n <template #trigger>\n <div @click.stop=\"handleAction('color')\"\n class=\"aspect-square w-11 rounded-full flex items-center justify-center cursor-pointer bg-surface-variant relative overflow-hidden\">\n <div class=\"rounded-full aspect-square w-6 h-6 pointer-events-none\"\n :style=\"{ backgroundColor: selectedColor }\">\n </div>\n </div>\n </template>\n <div class=\" p-3 flex flex-col gap-y-4\">\n <div class=\" text-on-surface select-none text-label-md\">{{ t('chat.board.selectColor') }}\n </div>\n <div class=\" w-50 hidden md:grid grid-cols-5 gap-1\">\n <div @click=\"setColor(color)\"\n :class=\"[selectedColor === color ? 'border-primary' : 'border-primary/0']\"\n class=\" cursor-pointer transition-all duration-200 ease-in-out border w-8 aspect-square rounded-lg\"\n v-for=\"(color, index) in colors\" :style=\"{ backgroundColor: color }\">\n </div>\n </div>\n </div>\n </BMenu>\n <div @click=\"handleAction('erase')\"\n class=\"aspect-square w-11 rounded-full flex items-center justify-center cursor-pointer bg-surface-variant\">\n <BIcon icon=\"PhEraser\" class=\"w-6 h-6 fill-on-surface\" />\n </div>\n <!-- VERTICAL BRUSH SIZE SLIDER IN BMENU -->\n <BMenu align=\"top\">\n <template #trigger=\"{ isOpen }\">\n <div\n class=\"aspect-square w-11 rounded-full flex items-center justify-center cursor-pointer bg-surface-variant\">\n <BIcon icon=\"PhPencilLine\" class=\"w-6 h-6 fill-on-surface\" />\n </div>\n </template>\n\n <!-- @click.stop prevents the BPopup from closing when you click the menu -->\n <div class=\"py-2\" @click.stop @pointerdown.stop>\n <BrushSizeSlider v-model=\"brushSize\" :color=\"selectedColor\" />\n </div>\n </BMenu>\n <div @click=\"handleAction('redo')\"\n class=\"aspect-square w-11 rounded-full flex items-center justify-center cursor-pointer bg-surface-variant\">\n <BIcon icon=\"PhArrowUUpRight\" class=\"w-6 h-6 fill-on-surface\" />\n </div>\n <div @click=\"handleAction('undo')\"\n class=\"aspect-square w-11 rounded-full flex items-center justify-center cursor-pointer bg-surface-variant\">\n <BIcon icon=\"PhArrowUUpLeft\" class=\"w-6 h-6 fill-on-surface\" />\n </div>\n </div>\n </div>\n </div>\n <BoardColorPicker :colors=\"colors\" v-show=\"isMobile\" ref=\"boardColorPicker\" class=\" md:hidden\"\n v-model=\"selectedColor\" />\n </div>\n</template>\n\n<script lang=\"ts\">\n// @ts-nocheck — grandfathered legacy chat-tree type errors; lift incrementally\nimport { defineComponent, ref, onMounted, onBeforeUnmount, watch } from 'vue';\nimport { useI18n, useCallStore, useAppToast, useWindowSize } from '~/nuxt-shims';\nimport BrushSizeSlider from './BrushSizeSlider.vue';\nimport BoardColorPicker from './BoardColorPicker.vue';\nimport type { BoardColorPickerExposed } from './BoardColorPicker.vue';\nimport type { Menu } from '~/types/components/menu';\nimport { storeToRefs } from 'pinia';\nexport default defineComponent({\n name: 'CallPaintBoard',\n emits: ['close'],\n props: {\n isOpen: {\n type: Boolean,\n default: false,\n }\n },\n components: {\n BrushSizeSlider,\n BoardColorPicker,\n },\n setup(props) {\n const { t } = useI18n();\n const callStore = useCallStore();\n const { openToast } = useAppToast()\n const { width } = useWindowSize()\n const isMobile = computed(() => width.value < 768)\n const boardColorPicker = useTemplateRef<BoardColorPickerExposed>('boardColorPicker');\n const colorPickerMenu = useTemplateRef<Menu>('colorPickerMenu')\n\n const colors = ref([\n '#2C2727', '#F49AA6', '#F897F6', '#CF40F3', '#555CEE',\n '#40F3E4', '#8CE25E', '#E9EF37', '#F37040', '#F34040'\n ])\n\n const setColor = (color: string) => {\n selectedColor.value = color\n colorPickerMenu.value?.close()\n }\n\n const {\n boardPages: pages,\n boardSelectedPage: selectedPage,\n boardSelectedColor: selectedColor,\n boardBrushSize: brushSize,\n boardHistory: history,\n boardRedoHistory: redoHistory\n } = storeToRefs(callStore);\n\n\n // State\n const canvasRef = ref<HTMLCanvasElement | null>(null);\n let signaturePadInstance: any = null;\n\n //const selectedColor = ref('#2C2727');\n //const brushSize = ref(3);\n\n // History for Undo/Redo\n //const history = ref<any[]>([]);\n //const redoHistory = ref<any[]>([]);\n\n // Handle Canvas Resizing correctly to prevent stretching\n const resizeCanvas = () => {\n const canvas = canvasRef.value;\n if (!canvas) return;\n\n // Prevent resizing to 0x0 if the menu is closed/hidden\n if (canvas.offsetWidth === 0 || canvas.offsetHeight === 0) return;\n\n const ratio = Math.max(window.devicePixelRatio || 1, 1);\n canvas.width = canvas.offsetWidth * ratio;\n canvas.height = canvas.offsetHeight * ratio;\n canvas.getContext(\"2d\")?.scale(ratio, ratio);\n\n if (signaturePadInstance) {\n if (history.value.length > 0) {\n signaturePadInstance.fromData(history.value);\n } else {\n // Crucial: Re-apply the white background color after resizing\n signaturePadInstance.clear();\n }\n }\n };\n onMounted(async () => {\n const SignaturePadModule = await import('signature_pad');\n const SignaturePad = SignaturePadModule.default;\n\n if (canvasRef.value) {\n signaturePadInstance = new SignaturePad(canvasRef.value, {\n minWidth: brushSize.value,\n maxWidth: brushSize.value + 2,\n penColor: selectedColor.value,\n backgroundColor: 'rgb(255, 255, 255)'\n });\n\n resizeCanvas();\n window.addEventListener(\"resize\", resizeCanvas);\n\n signaturePadInstance.addEventListener(\"endStroke\", () => {\n history.value = signaturePadInstance.toData();\n redoHistory.value = [];\n });\n }\n });\n\n\n onBeforeUnmount(() => {\n stopStreaming();\n window.removeEventListener(\"resize\", resizeCanvas);\n if (signaturePadInstance) {\n signaturePadInstance.off();\n }\n });\n\n\n watch(brushSize, (newSize) => {\n if (signaturePadInstance) {\n signaturePadInstance.minWidth = newSize;\n signaturePadInstance.maxWidth = newSize + 2;\n }\n });\n\n watch(selectedColor, (newColor) => {\n if (signaturePadInstance) {\n signaturePadInstance.penColor = newColor;\n }\n });\n\n const saveToFiles = () => {\n if (!signaturePadInstance || signaturePadInstance.isEmpty()) return;\n\n // Save as JPEG (which relies on the backgroundColor we set to white)\n const dataUrl = signaturePadInstance.toDataURL(\"image/jpeg\");\n\n const a = document.createElement(\"a\");\n a.href = dataUrl;\n a.download = `drawing-${Date.now()}.jpg`;\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n openToast(t('chat.board.savedSuccessfully'), 'success')\n };\n\n const handleAction = (action: string) => {\n if (!signaturePadInstance) return;\n\n switch (action) {\n case 'erase':\n if (signaturePadInstance.isEmpty()) return;\n const snapshot = signaturePadInstance.toData();\n history.value.push({ isClearAction: true, snapshot });\n signaturePadInstance.clear();\n redoHistory.value = [];\n break;\n case 'color':\n if (isMobile.value) {\n boardColorPicker.value?.open()\n } else {\n colorPickerMenu.value?.open()\n }\n break;\n case 'add-page':\n pages.value[selectedPage.value] = {\n data: signaturePadInstance.toData(),\n history: [...history.value],\n redo: [...redoHistory.value]\n };\n pages.value.push({ data: [], history: [], redo: [] });\n selectedPage.value = pages.value.length - 1;\n\n signaturePadInstance.clear();\n\n history.value = [];\n redoHistory.value = [];\n break;\n case 'undo':\n if (history.value.length > 0) {\n const lastAction = history.value.pop();\n redoHistory.value.push(lastAction);\n signaturePadInstance.fromData(history.value);\n }\n break;\n\n case 'redo':\n if (redoHistory.value.length > 0) {\n const nextAction = redoHistory.value.pop();\n history.value.push(nextAction);\n signaturePadInstance.fromData(history.value);\n }\n break;\n }\n };\n\n const pageOptions = computed(() => {\n const options = pages.value.map((_, index) => ({\n key: (index + 1).toString(),\n label: t('chat.board.page', { page: index + 1 }),\n icon: 'PhFiles'\n }));\n\n options.push({\n key: 'add-new-page',\n label: t('chat.board.addPage'),\n icon: 'PhPlus',\n color: 'primary'\n });\n\n return options;\n });\n\n // 2. Add the switching logic\n const switchPage = (index: number) => {\n if (!signaturePadInstance || index === selectedPage.value) return;\n\n // Save current page state before leaving\n pages.value[selectedPage.value] = {\n data: signaturePadInstance.toData(),\n history: [...history.value],\n redo: [...redoHistory.value]\n };\n\n // Load target page state\n selectedPage.value = index;\n const target = pages.value[index];\n\n signaturePadInstance.fromData(target.data || []);\n history.value = [...(target.history || [])];\n redoHistory.value = [...(target.redo || [])];\n };\n\n // 3. Handle the menu selection event\n const handlePageSelect = (key: string) => {\n if (key === 'add-new-page') {\n setTimeout(() => {\n handleAction('add-page');\n }, 300)\n } else {\n const targetIndex = Number(key) - 1;\n switchPage(targetIndex);\n }\n };\n\n const startStreaming = () => {\n if (!canvasRef.value || !signaturePadInstance) return;\n\n const stream = (canvasRef.value as any).captureStream(30);\n callStore.setScreenStream(stream);\n\n if (history.value && history.value.length > 0) {\n signaturePadInstance.fromData(history.value);\n } else {\n signaturePadInstance.clear();\n }\n };\n const stopStreaming = () => {\n callStore.stopScreenShare();\n };\n\n watch(() => props.isOpen, (val) => {\n if (val) {\n setTimeout(() => {\n resizeCanvas();\n startStreaming();\n }, 50);\n } else {\n callStore.stopScreenShare();\n }\n }, { immediate: true });\n\n return {\n t,\n canvasRef,\n saveToFiles,\n selectedColor,\n setColor,\n brushSize,\n boardColorPicker,\n handleAction,\n pages,\n selectedPage,\n pageOptions,\n colorPickerMenu,\n handlePageSelect,\n switchPage,\n colors,\n isMobile,\n };\n }\n})\n</script>\n","<template>\n <div v-show=\"isMobile\" class=\"contents\" @click=\"handleMobileClick\">\n <slot name=\"trigger\" :isOpen=\"isPopupOpen\" />\n </div>\n <BMenu ignore-global \n :align=\"'top-right'\" v-show=\"!isMobile\" ref=\"menuRef\">\n <template #trigger=\"{ isOpen }\">\n <slot name=\"trigger\" :isOpen=\"isOpen\" />\n </template>\n\n <template #default=\"{ isOpen }\">\n <div class=\"p-1\">\n <CallPaintBoard :is-open=\"isOpen\" @close=\"closeAll\" />\n </div>\n </template>\n </BMenu>\n <BPopup no-padding ref=\"popupRef\" @close=\"isPopupOpen = false\">\n <!-- CHANGE: Render the Content component, not yourself -->\n <CallPaintBoard :is-open=\"isPopupOpen\" @close=\"closeAll\" />\n </BPopup>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, ref } from 'vue';\nimport { useWindowSize } from '~/nuxt-shims';\n// CHANGE: Import the Content component specifically\nimport type { Menu } from '~/types/components/menu';\nimport type { Popup } from '~/types/components/popup';\nimport CallPaintBoard from './paint-board/CallPaintBoard.vue';\n\nexport default defineComponent({\n name: 'CallBoard', // CHANGE: Rename to prevent recursion\n components: { CallPaintBoard }, // CHANGE: Register the Content component\n emits: ['close'], // FIX: Declare emits to resolve the Vue warning\n setup(props, { emit }) {\n const popupRef = ref<Popup | null>(null);\n const menuRef = ref<Menu | null>(null);\n const isPopupOpen = ref(false);\n const isMenuOpen = ref(false)\n const { width } = useWindowSize();\n const isMobile = computed(() => width.value < 768);\n\n const handleMenuState = (open: boolean) => {\n isMenuOpen.value = open;\n }\n\n const handleMobileClick = () => {\n isPopupOpen.value = true;\n popupRef.value?.open();\n };\n\n const closeAll = () => {\n isPopupOpen.value = false;\n popupRef.value?.close();\n menuRef.value?.close();\n emit('close'); // Forward the close event if needed\n };\n\n return { isMobile, isPopupOpen, isMenuOpen, handleMenuState, handleMobileClick, closeAll, popupRef, menuRef };\n }\n});\n</script>","<template>\n <div v-show=\"isReady\" class=\" flex flex-col w-full h-full bg-diamond-black \">\n <div class=\" h-16 sm:h-20 flex items-center justify-between px-4\">\n <div class=\"md:block hidden text-white select-none text-label-lg\">{{ t('chat.call.title') }}</div>\n <div class=\" bg-black-500 md:hidden rounded-full flex items-center gap-x-4 h-10 px-3\">\n <!--<BIcon icon=\"PhLightning\" @click=\"handleOptions('toggle-flash')\"\n class=\" cursor-pointer fill-white w-6 h-6\" />\n <BIcon icon=\"PhArrowsClockwise\" @click=\"handleOptions('flip-camera')\"\n class=\" cursor-pointer fill-white w-6 h-6\" />-->\n <div v-for=\"option in mobileOptions\" :key=\"option.key\">\n <BIcon :icon=\"option.icon\" @click=\"handleOptions(option.key)\" class=\" fill-white w-6 h-6\"\n :class=\"[option.disabled === true ? ' cursor-not-allowed opacity-50' : ' opacity-100 cursor-pointer']\" />\n </div>\n </div>\n <div class=\" flex items-center gap-x-4.5\">\n <div\n class=\" h-6 flex items-center justify-center bg-diamond-error rounded-full px-2 text-white select-none\">\n <div class=\" text-body-sm\">{{ callTimeDisplay }}</div>\n </div>\n <BIcon icon=\"PhArrowLeft\" @click=\"goBack\" class=\" w-5 h-5 fill-white cursor-pointer\" />\n </div>\n </div>\n <div class=\" w-full p-3 sm:p-6 flex-1\">\n <div class=\"w-full h-full min-h-0 relative\">\n <TransitionGroup name=\"layout\" tag=\"div\" :class=\"wrapperClasses\">\n <CallMemberDisplay v-for=\"(member, index) in callMembers.slice(0, 6)\" :key=\"member.id\"\n :contact=\"member\" :is-full-screen=\"fullScreenId === member.id\"\n @toggle-fullscreen=\"toggleFullScreen(member.id)\" :class=\"getMemberClass(member, index)\" />\n </TransitionGroup>\n </div>\n </div>\n <div\n class=\" w-full h-21 bg-black-600 flex justify-center gap-x-1.5 sm:gap-x-3 items-center border-t border-t-[#2C2C2E]\">\n\n <CallBoard>\n <template #trigger=\"{ isOpen }\">\n <div class=\"w-9 sm:w-12 transition-all duration-200 aspect-square rounded-full flex items-center justify-center\"\n :class=\"[isOpen ? 'bg-white' : 'bg-black-500']\">\n <BIcon :icon=\"isOpen ? 'PhX' : 'PhPalette'\" class=\"sm:w-6 sm:h-6 w-4 h-4\"\n :class=\"[isOpen ? 'fill-black-500' : 'fill-white']\" />\n </div>\n </template>\n </CallBoard>\n <MedicSelector mode=\"medic\">\n <template #trigger=\"{ isOpen }\">\n <div class=\"w-9 sm:w-12 transition-all duration-200 aspect-square rounded-full flex items-center justify-center\"\n :class=\"[isOpen ? 'bg-white' : 'bg-black-500']\">\n <BIcon :icon=\"isOpen ? 'PhX' : 'PhUserPlus'\" class=\"sm:w-6 sm:h-6 w-4 h-4\"\n :class=\"[isOpen ? 'fill-black-500' : 'fill-white']\" />\n </div>\n </template>\n </MedicSelector>\n <div class=\" w-9 sm:w-12 transition-all duration-200 ease-in-out aspect-square rounded-full flex items-center justify-center\"\n :class=\"[option.isActive ? ' bg-white cursor-pointer' : (option.hasErrors ? 'bg-error-900 cursor-not-allowed' : 'cursor-pointer bg-black-500')]\"\n @click=\"handleOptions(option.key)\" v-for=\"option in optionButtons\" :key=\"option.key\">\n <BIcon :icon=\"option.icon\" class=\" sm:w-6 sm:h-6 w-4 h-4 \"\n :class=\"[option.isActive ? ' fill-black-500' : (option.hasErrors ? ' fill-error-200' : ' fill-white')]\" />\n </div>\n <div @click=\"handleOptions('leave-call')\"\n class=\" rounded-full w-12 sm:w-15 aspect-square bg-diamond-error cursor-pointer flex items-center justify-center\">\n <BIcon icon=\"PhPhoneX\" class=\" w-5 h-5 sm:w-7 sm:h-7 fill-white\" />\n </div>\n </div>\n </div>\n</template>\n<script lang=\"ts\">\nimport { type PropType, defineComponent, onBeforeMount, onMounted, computed } from 'vue';\nimport type { Contact } from '~/types/chat';\nimport { useI18n, useCallStore, useAppToast, useWindowSize, useAppPermissions, useDevice } from '~/nuxt-shims';\nimport CallMemberDisplay from './CallMemberDisplay.vue';\nimport { formatDuration } from '~/utils/format'\nimport CallBoard from './CallBoard.vue';\nimport MedicSelector from '../chat/medic-features/MedicSelector.vue';\nexport default defineComponent({\n name: 'CallPageOverlay',\n props: {\n contacts: {\n type: Object as PropType<Contact[]>,\n required: true,\n default: () => []\n }\n },\n components: {\n CallMemberDisplay,\n CallBoard,\n MedicSelector,\n },\n setup(props) {\n const { t } = useI18n()\n const isReady = ref(false)\n const { openToast } = useAppToast()\n const callStore = useCallStore()\n const { width } = useWindowSize()\n const { requestWithPopup, checkMediaStatus } = useAppPermissions()\n const { hardware } = useDevice();\n const isFlashOn = ref(false);\n const isBoardOpen = ref(false)\n const hasMultipleCameras = ref(false);\n const supportsTorch = ref(false);\n\n const flashIcon = computed(() => isFlashOn.value ? 'PhLightningSlash' : 'PhLightning')\n const boardIcon = computed(() => isBoardOpen.value ? 'PhX' : 'PhPencilCircle')\n\n const chatContact = computed(() => {\n return callStore.chatContact\n })\n\n const callTimeDisplay = computed(() => formatDuration(callStore.elapsedTime))\n\n\n const isMobile = computed(() => width.value < 768);\n\n const fullScreenId = ref<string | null>(null);\n\n const toggleFullScreen = (id: string) => {\n fullScreenId.value = fullScreenId.value === id ? null : id;\n };\n\n const mobileOptions = computed(() => [\n {\n icon: 'PhArrowsClockwise',\n key: 'flip-camera',\n disabled: !hasMultipleCameras.value,\n },\n {\n icon: flashIcon.value,\n key: 'toggle-flash',\n disabled: !supportsTorch.value,\n }\n ]);\n\n const getNativeDeviceRequirements = async () => {\n try {\n const devices = await navigator.mediaDevices.enumerateDevices();\n const videoInputs = devices.filter(d => d.kind === 'videoinput');\n hasMultipleCameras.value = videoInputs.length > 1;\n\n } catch (err) {\n console.error(\"Failed to enumerate devices for camera count\", err);\n } finally {\n }\n }\n\n\n // Replace gridLayoutClasses with wrapperClasses\n const wrapperClasses = computed(() => {\n if (!fullScreenId.value) {\n // Grid Layout Mode\n const count = callMembers.value.length;\n const gap = isMobile.value ? 'gap-3' : 'gap-4';\n let gridLayout = 'grid-cols-2';\n\n if (count === 1) gridLayout = 'grid-cols-1 grid-rows-1';\n else if (count === 2) gridLayout = 'grid-cols-1 grid-rows-2';\n else if (count === 3) gridLayout = 'grid-cols-1 grid-rows-3';\n else if (count === 4) gridLayout = 'grid-cols-2 grid-rows-2';\n else if (count === 6) gridLayout = 'grid-cols-2 grid-rows-3';\n\n return `grid ${gridLayout} ${gap} w-full h-full p-4 relative`;\n }\n\n // Full Screen Mode Wrapper\n // 'block' is used instead of grid to prevent CSS grid from interfering with absolute positioning\n return isMobile.value\n ? `block relative w-full h-full`\n : `flex flex-row flex-wrap content-start w-full h-full p-4 gap-4 relative overflow-hidden`;\n });\n\n const getMemberClass = (member: Contact, index: number) => {\n const base = 'transition-all duration-300 ease-in-out origin-center';\n\n if (!fullScreenId.value) {\n if (callMembers.value.length === 5 && index === 0) return `${base} col-span-2`;\n return base;\n }\n\n if (isMobile.value) {\n if (member.id === fullScreenId.value) {\n // 1. Target Full Screen\n // !absolute overrides the child's 'relative' class.\n // top/left/right/bottom-4 gives it a perfect 16px margin around the whole screen.\n return `${base} !absolute top-0 left-0 right-0 bottom-0 z-0`;\n }\n if (index === 0) {\n // 2. Local User PIP (You)\n // Placed at the bottom-right cleanly. !w and !h override the child's w-full/h-full.\n return `${base} !absolute bottom-8 right-6 z-20 !w-[110px] !h-[150px] shadow-2xl rounded-2xl`;\n }\n // 3. Hidden Members\n // They shrink into the center and fade out so the transition looks smooth\n return `${base} !absolute top-1/2 left-1/2 opacity-0 scale-0 pointer-events-none z-[-1]`;\n } else {\n // Desktop Layout\n if (member.id === fullScreenId.value) {\n return `${base} !w-full !h-[calc(100%-11rem)] order-1`;\n }\n return `${base} flex-1 min-w-[140px] max-w-[200px] !h-36 order-2`;\n }\n };\n\n const callMembers = computed(() => callStore.callMembers)\n\n const optionButtons = computed(() => [\n // {\n // icon: 'PhX',\n // key: 'minimize-call'\n // },\n {\n icon: 'PhMonitorArrowUp',\n key: 'share-screen',\n isActive: callStore.isSharingScreen\n },\n // {\n // icon: 'PhUserPlus',\n // key: 'add-user'\n // },\n {\n icon: callStore.isSoundMuted ? 'PhSpeakerSlash' : 'PhSpeakerHigh',\n key: 'toggle-sound'\n },\n {\n icon: callStore.isMicMuted ? 'PhMicrophoneSlash' : 'PhMicrophone',\n key: 'toggle-mic',\n hasErrors: !hardware.hasMicrophone\n },\n {\n icon: !callStore.isCamDisabled ? 'PhVideoCameraSlash' : 'PhVideoCamera',\n key: 'toggle-video',\n hasErrors: !hardware.hasCamera,\n },\n ]);\n const goBack = () => {\n callStore.minimize()\n }\n\n watch(() => chatContact.value, () => {\n if (chatContact.value) {\n initPermissions()\n }\n })\n\n watch(callMembers, (newMembers, oldMembers) => {\n const justStartedStreaming = newMembers.find((member, index) => {\n const wasStreaming = oldMembers?.[index]\n ? (oldMembers[index].isCameraOn || oldMembers[index].isScreenSharing)\n : false;\n const isStreaming = member.isCameraOn || member.isScreenSharing;\n\n return isStreaming && !wasStreaming;\n });\n\n if (justStartedStreaming) {\n fullScreenId.value = justStartedStreaming.id;\n return;\n }\n\n if (fullScreenId.value) {\n const currentFullScreenMember = newMembers.find(m => m.id === fullScreenId.value);\n const isStillStreaming = currentFullScreenMember\n ? (currentFullScreenMember.isCameraOn || currentFullScreenMember.isScreenSharing)\n : false;\n\n if (!isStillStreaming) {\n fullScreenId.value = null;\n }\n }\n }, { deep: true });\n\n\n onBeforeMount(() => {\n callStore.maximize();\n isReady.value = callStore.isActive;\n })\n\n onMounted(async () => {\n getNativeDeviceRequirements()\n if (chatContact.value) {\n await initPermissions();\n }\n });\n\n // --- REPLACEMENT FOR initPermissions ---\n const initPermissions = async () => {\n if (!callStore.chatContact) return;\n const service = callStore.chatContact.serviceType;\n const isVideo = service === 'video-call';\n\n await callStore.syncMediaSettings(service);\n\n // Query browser natively without triggering prompts\n const status = await checkMediaStatus();\n\n const needsMic = status.mic !== 'granted';\n const needsCam = isVideo && status.cam !== 'granted';\n\n // If we are missing permissions, trigger the CUSTOM popup\n if (needsMic || needsCam) {\n const state = isVideo ? 'permission' : 'mic-permission';\n\n // WAIT for the user to interact with PermissionPopup.vue\n const granted = await requestWithPopup(state);\n\n // If user clicks \"Not Now\" or denies it, kick them back safely\n if (!granted) {\n callStore.isActive = false;\n return; // Stop execution\n }\n }\n\n // CRITICAL FIX: The popup has been cleared. WE NOW safely start the hardware.\n await callStore.initCall(isVideo);\n };\n\n const handleOptions = async (key: string) => {\n\n const option = mobileOptions.value.find(o => o.key === key);\n if (option?.disabled) {\n openToast(t('chat.call.deviceDoesntSupport'), 'error')\n return\n };\n\n const button = optionButtons.value.find(btn => btn.key === key);\n if (button?.hasErrors) return;\n switch (key) {\n case 'minimize-call':\n callStore.minimize();\n break;\n case 'share-screen':\n if (callStore.isSharingScreen) {\n callStore.stopScreenShare();\n return;\n }\n if (isMobile.value) {\n await requestWithPopup('screen-share-error');\n return;\n }\n await requestWithPopup('screen-share-permission');\n break;\n case 'add-user':\n\n break;\n case 'toggle-sound':\n callStore.toggleSound();\n break;\n case 'toggle-mic':\n callStore.toggleMic();\n break;\n case 'toggle-video':\n await callStore.toggleCam();\n break;\n case 'leave-call':\n callStore.stopCall();\n break;\n case 'flip-camera':\n if (isMobile.value) {\n await callStore.toggleCamera();\n }\n break;\n\n case 'toggle-flash':\n if (isMobile.value && callStore.currentFacingMode === 'environment') {\n await callStore.toggleFlash();\n }\n break;\n }\n }\n\n return {\n t,\n wrapperClasses,\n optionButtons,\n callMembers,\n goBack,\n handleOptions,\n getMemberClass,\n isMobile,\n fullScreenId,\n callTimeDisplay,\n toggleFullScreen,\n isBoardOpen,\n boardIcon,\n mobileOptions,\n isReady,\n }\n }\n})\n</script>","<template>\n <BPopup no-padding ref=\"popup\">\n <div class=\" w-dvw max-w-120\">\n <div class=\" flex items-center p-5 gap-x-2 w-full border-b border-b-outline-variant\">\n <BIcon :icon=\"popupIcon.icon\" :class=\"[popupIcon.color]\" class=\" w-7 h-7\" weight=\"fill\" />\n <div class=\" select-none text-on-surface text-label-lg\">{{ popupContent.title }}</div>\n </div>\n <div class=\"border-b text-wrap border-b-outline-variant w-full p-5 select-none\">\n <p class=\" text-body-md text-on-surface/50\">{{ popupContent.description }}</p>\n </div>\n <div class=\" w-full flex items-center p-5 gap-x-3\">\n <BButton :text=\"actionButtonText\" :loading=\"isLoading\" @click=\"handleAction\" />\n <BButton @click=\"closePopup\" color=\"secondary\" type=\"outline\" :text=\"t('chat.permissions.notNow')\" />\n </div>\n </div>\n </BPopup>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, nextTick } from 'vue';\nimport { useCallStore, useI18n } from '~/nuxt-shims';\nimport type { Popup } from '~/types/components/popup';\nimport { useAppPermissions, type PopupState } from '~/composables/useAppPermissions';\nimport { useEventBus } from '@vueuse/core';\nexport default defineComponent({\n name: 'PermissionPopup',\n emits: ['action', 'cancel'],\n setup(_, { expose, emit }) {\n const popup = ref<Popup | null>(null)\n const { t } = useI18n()\n const { requestMediaAccess, getNativeScreenShare } = useAppPermissions();\n const callStore = useCallStore();\n const popupMode = ref<PopupState>('mic-permission');\n const bus = useEventBus<any>('global-permission-popup');\n const isLoading = ref(false)\n const currentResolver = ref<((v: boolean) => void) | null>(null);\n\n\n bus.on((payload) => {\n currentResolver.value = payload.resolve;\n switchMode(payload.state);\n });\n\n const switchMode = async (newMode: PopupState) => {\n popup.value?.close();\n\n // 300ms delay for a clean exit animation\n await new Promise(resolve => setTimeout(resolve, 300));\n\n popupMode.value = newMode;\n isLoading.value = false;\n\n nextTick(() => {\n popup.value?.open();\n });\n };\n\n\n\n const popupIcon = computed(() => {\n return {\n icon: popupMode.value.endsWith('permission') ? 'PhWarningCircle' : 'PhWarningOctagon',\n color: popupMode.value.endsWith('permission') ? 'fill-primary' : 'fill-error'\n }\n })\n\n const actionButtonText = computed(() => popupMode.value.endsWith('permission') ? t('chat.permissions.allow') : t('chat.permissions.retry'))\n\n const popupContent = computed(() => {\n switch (popupMode.value) {\n case 'permission':\n return {\n title: t('chat.permissions.permissionTitle'),\n description: t('chat.permissions.description')\n }\n case 'cam-error':\n return {\n title: t('chat.permissions.camError.title'),\n description: t('chat.permissions.camError.description')\n }\n case 'mic-error':\n return {\n title: t('chat.permissions.micError.title'),\n description: t('chat.permissions.micError.description')\n }\n case 'cam-permission':\n return {\n title: t('chat.permissions.cam.title'),\n description: t('chat.permissions.cam.description')\n }\n case 'mic-permission':\n return {\n title: t('chat.permissions.mic.title'),\n description: t('chat.permissions.mic.description')\n }\n case 'screen-share-error':\n return {\n title: t('chat.permissions.screenError.title'),\n description: t('chat.permissions.screenError.description')\n }\n case 'screen-share-permission':\n return {\n title: t('chat.permissions.screen.title'),\n description: t('chat.permissions.screen.description')\n }\n }\n })\n\n const openPopup = (state: PopupState) => {\n popupMode.value = state;\n isLoading.value = false;\n nextTick(() => {\n popup.value?.open()\n })\n }\n\n expose({\n open: (state: PopupState) => { openPopup(state) },\n close: () => { closePopup() },\n setLoading: (state: boolean) => { isLoading.value = state; }\n });\n\n const closePopup = () => {\n popup.value?.close();\n currentResolver.value?.(false);\n currentResolver.value = null;\n };\n\n const handleAction = async () => {\n isLoading.value = true;\n let success = false;\n\n // --- 1. SCREEN SHARE FLOW (Standalone) ---\n if (popupMode.value === 'screen-share-permission') {\n try {\n const stream = await getNativeScreenShare();\n if (stream) {\n callStore.screenStream = stream;\n callStore.isSharingScreen = true;\n\n // Native Browser \"Stop Sharing\" handler\n stream.getVideoTracks()[0].onended = () => {\n callStore.stopScreenShare();\n };\n success = true;\n }\n } catch (err: any) {\n console.error(\"Screen Share Error:\", err.name);\n success = false;\n }\n\n isLoading.value = false;\n if (success) {\n popup.value?.close();\n currentResolver.value?.(true);\n } else {\n // macOS often throws NotAllowedError if System Settings are off\n return await switchMode('screen-share-error');\n }\n return; // EXIT HERE so it doesn't run the Mic/Cam logic below\n }\n\n // --- 2. MIC / CAM FLOW ---\n let need: 'audio' | 'video' | 'both' = 'audio';\n if (popupMode.value.startsWith('cam')) need = 'video';\n if (popupMode.value === 'permission') need = 'both';\n\n const result = await requestMediaAccess(need);\n\n isLoading.value = false;\n if (result.success) {\n popup.value?.close();\n currentResolver.value?.(true);\n } else {\n // If hardware is missing (Mac Mini), show a specific error\n const errorMode = (need === 'video' || need === 'both') ? 'cam-error' : 'mic-error';\n return await switchMode(errorMode);\n }\n };\n\n return {\n actionButtonText,\n popup,\n closePopup,\n t,\n popupIcon,\n popupContent,\n isLoading,\n handleAction,\n }\n }\n})\n\n</script>","<template>\n <BPopup ref=\"popup\" no-padding :has-close=\"false\" @closed=\"onClosed\">\n <div ref=\"popupContent\" :class=\"[selectedPeriod.value !== '' ? 'overflow-y-auto ' : ' overflow-visible']\"\n class=\"w-full flex lg:gap-y-0 gap-y-4 gap-x-4 px-6 flex-col lg:pt-4 lg:flex-row max-h-[85vh] pb-6 items-start lg:justify-center transition-all duration-300 ease-in-out\">\n\n <div v-show=\"!isMobile || step === 1\" class=\"w-full relative lg:w-86 shrink-0 transition-all\">\n <div class=\" w-full \">\n\n <div class=\"mb-4 flex items-center gap-x-3\">\n <BIcon icon=\"PhX\" class=\"cursor-pointer w-4 h-4 fill-on-surface\" @click=\"closePopup\" />\n <div class=\"select-none text-on-surface text-label-sm\">{{ t('chat.prescription.title') }}</div>\n </div>\n <!-- Customizable section requested by parent components -->\n <slot name=\"prescription-content\" v-bind=\"prescriptionContentSlotProps\">\n <div class=\"w-full flex max-h-[85vh] relative overflow-y-auto flex-col\">\n <BSelect :placeholder=\"t('general.select')\" :title=\"t('chat.prescription.period')\"\n :options=\"periodOptions\" v-model=\"selectedPeriod.value\" :color=\"selectedPeriod.color\"\n :message=\"selectedPeriod.message\" />\n\n <div v-if=\"selectedPeriod.value === 'hospitalization'\" class=\"w-full flex flex-col\">\n <BInput :title=\"t('chat.prescription.timePeriod')\" :placeholder=\"t('general.write')\"\n v-model=\"hospitalizationPeriod\" />\n <BInput textarea :title=\"t('chat.prescription.descriptions')\"\n :placeholder=\"t('general.write')\" v-model=\"hospitalizationDescriptions\" />\n <BButton class=\"min-w-full mt-2\" :loading=\"isSending\"\n :text=\"t('chat.prescription.submit')\" @click=\"handleHospitalization({\n period: hospitalizationPeriod,\n descriptions: hospitalizationDescriptions\n })\" />\n </div>\n\n <div v-if=\"selectedPeriod.value === 'prescription'\" class=\"w-full flex flex-col\">\n <BInput :title=\"t('chat.prescription.medicationName')\" :placeholder=\"t('general.write')\"\n v-model=\"fallbackMedicationName\" />\n <BInput :title=\"t('chat.prescription.dose')\" :placeholder=\"t('general.write')\"\n v-model=\"fallbackDose\" />\n <BInput :title=\"t('chat.prescription.repetitionAmount')\"\n :placeholder=\"t('general.write')\" v-model=\"fallbackRepetitionAmount\" />\n <BInput textarea :title=\"t('chat.prescription.usageMethod')\"\n :placeholder=\"t('general.write')\" v-model=\"fallbackUsageMethod\" />\n <BButton class=\"mt-2 lg:min-w-auto min-w-full w-full lg:w-auto\" right-icon=\"PhPlus\"\n :text=\"t('chat.prescription.addMedications')\" type=\"outline\"\n @click=\"addFallbackMedication\" />\n </div>\n </div>\n </slot>\n </div>\n <div v-if=\"selectedPeriod.value === 'prescription'\"\n class=\" right-0 px-6 bg-linear-to-b z-10005 py-4 w-full fixed min-w-full lg:hidden bottom-0\"\n :class=\"[prescribedMeds.length === 0 ? 'from-surface/0 to-surface/0 pointer-events-none' : ' pointer-events-auto from-surface/0 to-surface']\">\n <BButton class=\"w-full min-w-full transition-all duration-200 ease-in-out \"\n :class=\"[prescribedMeds.length === 0 ? ' translate-y-[200%]' : 'translate-y-0']\"\n :text=\"t('chat.prescription.continue')\" @click=\"goToStep(2)\" />\n </div>\n </div>\n\n <Transition :name=\"isMobile ? '' : 'width-expand'\">\n <div v-show=\"(!isMobile || step === 2) && selectedPeriod.value === 'prescription' && prescribedMeds.length > 0\"\n class=\"lg:w-102 w-full flex flex-col lg:h-160 max-h-[75vh] h-auto\">\n\n <div class=\"w-full h-full min-h-full flex flex-col gap-y-4\">\n <div\n class=\"w-full overflow-y-auto md:overflow-hidden rounded-xl bg-surface-variant select-none px-3 pt-3 flex flex-col gap-y-3 flex-1 min-h-0\">\n <div class=\"shrink-0 text-body-sm text-on-surface/50\">\n {{ t('chat.prescription.medicine') }}\n </div>\n <div class=\"w-full flex flex-col flex-1 gap-y-2 pb-3 overflow-y-auto hide-scrollbar\">\n <div v-for=\"(medicine, index) in prescribedMeds\" :key=\"medicine.id\"\n class=\"w-full p-3 rounded-xl bg-surface border border-outline-variant\">\n <div class=\"w-full flex items-start justify-between gap-x-3\">\n <div class=\"text-label-md text-on-surface\">\n {{ medicine.medication.title }}\n </div>\n <BIcon icon=\"PhTrash\" class=\"cursor-pointer w-5 h-5 fill-on-surface/60\"\n @click=\"deleteMedicine(index)\" />\n </div>\n <div class=\"mt-2 text-body-sm text-on-surface/80\">\n {{ t('chat.prescription.dose') }}: {{ medicine.dose }}\n </div>\n <div class=\"mt-1 text-body-sm text-on-surface/80\">\n {{ t('chat.prescription.usageMethod') }}: {{ medicine.usageMethod }}\n </div>\n <div class=\"mt-1 text-body-sm text-on-surface/80\">\n {{ t('chat.prescription.usage', {\n amount: medicine.period.amount,\n period: medicine.period.period === 'day'\n ? t('calendar.form.repetition.day')\n : t('calendar.form.repetition.hour')\n }) }}\n </div>\n <div v-if=\"medicine.warning\" class=\"mt-1 text-body-sm text-on-surface/80\">\n {{ t('chat.prescription.warning') }}: {{ medicine.warning }}\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"w-full flex gap-x-3 justify-end items-center mt-4 shrink-0\">\n <BButton v-if=\"isMobile && step === 2\" color=\"secondary\" :disabled=\"isSending\"\n class=\"flex-1 lg:hidden\" :text=\"t('chat.prescription.back')\" @click=\"goToStep(1)\" />\n\n <BButton class=\"flex-1 lg:max-w-90 w-full\" :loading=\"isSending\"\n :text=\"t('chat.prescription.submit')\" @click=\"handlePrescription\" />\n </div>\n </div>\n </Transition>\n </div>\n </BPopup>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, useTemplateRef, computed, ref, watch, nextTick, onUnmounted, type SlotsType } from 'vue';\nimport { useChatActionStore, useI18n, useWindowSize, useAppToast } from '~/nuxt-shims';\nimport type { Popup } from '~/types/components/popup';\nimport type { PrescribedMedication } from '~/types/medication';\nimport type { DropdownOption } from '~/types/components/select';\n\ninterface PeriodValueState {\n value: '' | 'hospitalization' | 'prescription';\n color: 'primary' | 'error';\n message: string;\n}\n\n/**\n * Props exposed by the `prescription-content` slot.\n * Parent components can use these to render a custom form while preserving\n * the shared popup state and submission flow.\n */\ninterface PrescriptionContentSlotProps {\n selectedPeriod: PeriodValueState;\n periodOptions: DropdownOption[];\n prescribedMeds: PrescribedMedication[];\n addMedication: (medication: PrescribedMedication) => void;\n deleteMedicine: (index: number) => void;\n setPeriodValue: (value: PeriodValueState['value']) => void;\n goToStep: (targetStep: number) => void;\n isMobile: boolean;\n step: number;\n}\n\nexport default defineComponent({\n name: 'PrescriptionDisplay',\n slots: Object as SlotsType<{\n 'prescription-content': (props: PrescriptionContentSlotProps) => any;\n }>,\n setup() {\n const { t } = useI18n();\n const chatActionStore = useChatActionStore();\n const { width } = useWindowSize();\n const { openToast } = useAppToast();\n\n const popup = useTemplateRef<Popup>('popup');\n const popupContent = useTemplateRef<HTMLElement>('popupContent');\n\n const isMobile = computed(() => width.value < 1024);\n const step = ref(1);\n const isTransitioning = ref(false);\n const isSending = ref(false);\n\n const prescribedMeds = ref<PrescribedMedication[]>([]);\n const selectedPeriod = ref<PeriodValueState>({\n value: '',\n color: 'primary',\n message: '',\n });\n const fallbackMedicationName = ref('');\n const fallbackDose = ref('');\n const fallbackRepetitionAmount = ref('');\n const fallbackUsageMethod = ref('');\n const hospitalizationPeriod = ref('');\n const hospitalizationDescriptions = ref('');\n\n const periodOptions = computed<DropdownOption[]>(() => [\n { value: 'hospitalization', label: t('chat.prescription.periodOptions.hospitalization') },\n { value: 'prescription', label: t('chat.prescription.periodOptions.prescriptionDrugs') }\n ]);\n\n watch(() => selectedPeriod.value.value, () => {\n if (selectedPeriod.value.color === 'error') {\n selectedPeriod.value.color = 'primary';\n selectedPeriod.value.message = '';\n }\n });\n\n // Bus listener\n const unsubscribe = chatActionStore.prescriptionBus.on(() => {\n popup.value?.open();\n });\n onUnmounted(() => unsubscribe());\n\n const addMedication = (med: PrescribedMedication) => {\n prescribedMeds.value.push(med);\n };\n\n const addFallbackMedication = () => {\n const name = fallbackMedicationName.value.trim();\n const dose = fallbackDose.value.trim();\n const repetition = fallbackRepetitionAmount.value.trim();\n const usageMethod = fallbackUsageMethod.value.trim();\n\n if (!name || !dose || !repetition || !usageMethod) {\n openToast(t('validation.required', { field: t('chat.prescription.medicationName') }), 'error');\n return;\n }\n\n addMedication({\n id: String(Date.now()),\n medication: {\n id: String(Date.now()),\n title: name,\n englishTitle: name,\n brands: [],\n },\n repetitionAmount: repetition,\n usageMethod,\n dose,\n period: {\n period: 'day',\n amount: Number(repetition) || 1,\n },\n });\n\n fallbackMedicationName.value = '';\n fallbackDose.value = '';\n fallbackRepetitionAmount.value = '';\n fallbackUsageMethod.value = '';\n };\n\n const scrollToBottom = () => {\n nextTick(() => {\n if (popupContent.value) {\n popupContent.value.scrollTo({\n top: popupContent.value.scrollHeight,\n behavior: 'smooth'\n });\n }\n });\n };\n\n watch(\n () => prescribedMeds.value.length,\n (newLength, oldLength) => {\n if (newLength === 1 && oldLength === 0) {\n setTimeout(() => {\n scrollToBottom();\n }, 200)\n }\n }\n );\n\n const goToStep = (targetStep: number) => {\n if (isTransitioning.value) return;\n isTransitioning.value = true;\n popup.value?.close();\n setTimeout(() => {\n step.value = targetStep;\n popup.value?.open();\n setTimeout(() => { isTransitioning.value = false; }, 300);\n }, 300);\n };\n\n const setPeriodValue = (value: PeriodValueState['value']) => {\n selectedPeriod.value.value = value;\n };\n\n const handleHospitalization = async (data: any) => {\n if (!data.period?.trim() || !data.descriptions?.trim()) {\n openToast(t('validation.required', { field: t('chat.prescription.descriptions') }), 'error');\n return;\n }\n isSending.value = true;\n try {\n // Mock API Delay\n await new Promise(res => setTimeout(res, 1500));\n openToast(t('chat.prescription.hospitalizationSuccess'), 'success');\n closePopup();\n } finally {\n isSending.value = false;\n }\n };\n\n const handlePrescription = async () => {\n if (prescribedMeds.value.length === 0) {\n openToast(t('chat.prescription.emptyList'), 'error');\n return;\n }\n isSending.value = true;\n try {\n // Mock API Delay\n await new Promise(res => setTimeout(res, 1500));\n openToast(t('chat.prescription.success'), 'success');\n closePopup();\n } finally {\n isSending.value = false;\n }\n };\n\n const deleteMedicine = (index: number) => {\n prescribedMeds.value.splice(index, 1);\n };\n\n const prescriptionContentSlotProps = computed<PrescriptionContentSlotProps>(() => ({\n selectedPeriod: selectedPeriod.value,\n periodOptions: periodOptions.value,\n prescribedMeds: prescribedMeds.value,\n addMedication,\n deleteMedicine,\n setPeriodValue,\n goToStep,\n isMobile: isMobile.value,\n step: step.value,\n }));\n\n const onClosed = () => {\n if (isTransitioning.value) return;\n // Fully reset state when user explicitly closes or after success\n selectedPeriod.value = { value: '', color: 'primary', message: '' };\n prescribedMeds.value = [];\n step.value = 1;\n fallbackMedicationName.value = '';\n fallbackDose.value = '';\n fallbackRepetitionAmount.value = '';\n fallbackUsageMethod.value = '';\n hospitalizationPeriod.value = '';\n hospitalizationDescriptions.value = '';\n };\n\n const closePopup = () => {\n popup.value?.close();\n };\n\n return {\n t, periodOptions, popup,\n selectedPeriod, prescribedMeds, step, isMobile, isSending,\n addMedication, goToStep, handleHospitalization, handlePrescription,\n closePopup, onClosed, popupContent, deleteMedicine,\n addFallbackMedication, fallbackMedicationName, fallbackDose,\n fallbackRepetitionAmount, fallbackUsageMethod, hospitalizationPeriod,\n hospitalizationDescriptions, prescriptionContentSlotProps,\n };\n }\n});\n</script>\n<style scoped>\n/* Vertical Form Animation */\n.form-fade-enter-active,\n.form-fade-leave-active {\n transition: opacity 0.2s ease-in-out;\n}\n\n.form-fade-enter-from,\n.form-fade-leave-to {\n opacity: 0;\n}\n\n.form-fade-enter-to,\n.form-fade-leave-from {\n opacity: 1;\n}\n\n/* Horizontal List Animation */\n.width-expand-enter-active,\n.width-expand-leave-active {\n transition: all 0.3s ease-in-out;\n overflow: hidden;\n white-space: nowrap;\n}\n\n.width-expand-enter-from,\n.width-expand-leave-to {\n opacity: 0;\n max-width: 0;\n padding-left: 0 !important;\n padding-right: 0 !important;\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n.width-expand-enter-to,\n.width-expand-leave-from {\n opacity: 1;\n max-width: 408px;\n /* lg:w-102 equates to approx 25.5rem or 408px */\n}\n</style>\n\n","<template>\n <div class=\"w-full bg-surface-variant h-full\">\n <div\n v-show=\"canShowMessagingSection || isProfile\"\n class=\"h-full w-full flex\"\n >\n <ChatProfileOverview :profile=\"selectedChat\" />\n <div\n class=\"flex flex-1 flex-col justify-between items-center h-full\"\n v-show=\"chatId && isChatMode\"\n >\n <div class=\"w-full bg-surface h-16 md:h-20\">\n <ChatPageBar\n :options=\"medicOptions\"\n @open-profile=\"openProfile\"\n :contact=\"selectedChat\"\n />\n </div>\n <div class=\"flex-1 w-full min-h-0 overflow-hidden\">\n <ChatMessages\n :options=\"medicOptions\"\n v-show=\"selectedChat\"\n :contact=\"selectedChat\"\n />\n </div>\n <ChatInput ref=\"chatInput\" :is-active=\"selectedChat?.isActive\" />\n </div>\n <div\n v-show=\"!chatId\"\n class=\"w-full h-full flex items-center justify-center\"\n ></div>\n </div>\n <CallPageOverlay\n v-show=\"isCallMode && selectedChat\"\n :contact=\"selectedChat\"\n />\n <PatientReferral ref=\"patientRefferal\" :contact=\"selectedChat\" />\n <PermissionPopup />\n <PrescribtionDisplay />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, ref, nextTick, watch, useTemplateRef, type DefineComponent } from \"vue\";\nimport { useI18n, useWindowSize, useChatStore, useCallStore } from \"~/nuxt-shims\";\nimport ChatPageBar from \"~/components/chat/ChatPageBar.vue\";\nimport ChatInput from \"~/components/chat/ChatInput.vue\";\nimport { type ChatTextField } from \"~/types/components/chat-input\";\nimport ChatProfileOverview from \"~/components/chat/ChatProfileOverview.vue\";\nimport ChatMessages from \"~/components/chat/ChatMessages.vue\";\nimport { type MenuOption } from \"~/types/components/menu-options\";\nimport PatientReferral from \"~/components/chat/PatientReferral.vue\";\nimport type { PatientRefferalExposed } from \"~/components/chat/PatientReferral.vue\";\nimport CallPageOverlay from \"~/components/call/CallPageOverlay.vue\";\nimport PermissionPopup from \"~/components/chat/chat-input/PermissionPopup.vue\";\nimport PrescribtionDisplay from \"~/components/chat/medic-features/PrescribtionDisplay.vue\";\n\nconst ChatView = defineComponent({\n name: \"ChatView\",\n components: {\n ChatPageBar,\n CallPageOverlay,\n ChatInput,\n ChatProfileOverview,\n ChatMessages,\n PermissionPopup,\n PrescribtionDisplay,\n PatientReferral,\n },\n setup() {\n const chatStore = useChatStore();\n const callStore = useCallStore();\n const { t } = useI18n();\n const chatInput = ref<ChatTextField | null>(null);\n const { width } = useWindowSize();\n const isMobile = computed(() => width.value < 768);\n\n const chatId = computed(() => chatStore.activeConversationId);\n const isProfile = computed(() => chatStore.profileViewOpen);\n const isCallMode = computed(() => callStore.isActive && !callStore.isPiP);\n\n const selectedChat = computed(() => {\n if (!chatId.value) return null;\n return chatStore.getContactById(chatId.value);\n });\n\n const chatMessagesRef = ref<any>(null);\n const patientRefferal =\n useTemplateRef<PatientRefferalExposed>(\"patientRefferal\");\n\n const canShowMessagingSection = computed(() => {\n if (isCallMode.value) return false;\n if (isMobile.value) return !isProfile.value;\n return true;\n });\n\n const isChatMode = computed(() => {\n if (isMobile.value) {\n return !isProfile.value;\n }\n return canShowMessagingSection.value;\n });\n\n watch(\n () => chatStore.activeConversationId,\n () => {\n if (chatId.value && selectedChat.value?.isActive) {\n nextTick(() => {\n chatInput.value?.focus();\n });\n }\n },\n );\n\n const openProfile = () => {\n chatStore.openProfile();\n };\n\n const handleNewMessages = (newMsgs: any[]) => {\n if (!newMsgs || newMsgs.length === 0) return;\n chatMessagesRef.value?.addMessages(newMsgs);\n };\n\n const handleEditMessage = (_payload: { id: string; text: string }) => {\n // hook for future use\n };\n\n const medicOptions = computed<MenuOption[]>(() => [\n {\n label: t(\"chat.barOptions.prescribeMedications\"),\n icon: \"PhPencilSimpleLine\",\n key: \"prescribe-meds\",\n },\n {\n label: t(\"chat.barOptions.addPerson\"),\n icon: \"PhUserPlus\",\n key: \"add-user\",\n },\n {\n label: t(\"chat.barOptions.refer\"),\n icon: \"PhTreeStructure\",\n key: \"refer\",\n },\n {\n label: t(\"chat.barOptions.endChat\"),\n icon: \"PhXSquare\",\n key: \"end-chat\",\n },\n {\n label: t(\"chat.barOptions.deleteMessages\"),\n icon: \"PhTrash\",\n key: \"delete-all\",\n color: \"error\",\n },\n ]);\n\n return {\n medicOptions,\n t,\n chatId,\n chatInput,\n isProfile,\n isCallMode,\n openProfile,\n patientRefferal,\n chatMessagesRef,\n selectedChat,\n isMobile,\n isChatMode,\n canShowMessagingSection,\n handleNewMessages,\n handleEditMessage,\n };\n },\n});\n\n// Cast at the export boundary: Volar still uses the inferred bindings inside\n// the SFC's template, but the public type erases the deep slot-tree inference\n// that names private types from child components (and trips TS4082 on emit).\nexport default ChatView as unknown as DefineComponent<{}, {}, any>;\n</script>\n","<template>\n <div class=\"flex w-full h-full max-h-full overflow-hidden\">\n <div v-if=\"showMessagingSection\" class=\"h-full flex-1 relative\">\n <ChatView v-if=\"isInChat\" />\n <div v-else class=\" w-full h-full flex items-center justify-center \">\n <NoDataDisplay :image-path=\"NoChatSelected\" :title=\"t('chat.noConversationSelected')\" />\n </div>\n </div>\n\n <div v-if=\"showContactList\" class=\"md:w-80 w-full h-full shrink-0 border-l border-outline-variant\">\n <ChatList />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, computed, type DefineComponent } from 'vue';\nimport { useI18n } from 'vue-i18n';\nimport { useWindowSize } from '@vueuse/core';\nimport { useChatStore } from '../stores/chatStore';\nimport NoDataDisplay from './general/NoDataDisplay.vue';\nimport NoChatSelected from '../assets/lib-images/chat/no-chat-selected.webp';\nimport ChatList from './chat/contact/ChatList.vue';\nimport ChatView from './chat/ChatView.vue';\n\nconst ChatPage = defineComponent({\n name: 'ChatPage',\n components: {\n ChatList,\n ChatView,\n NoDataDisplay,\n },\n setup() {\n const { width } = useWindowSize();\n const { t } = useI18n();\n const chatStore = useChatStore();\n\n const isMobile = computed(() => width.value < 768);\n const isInChat = computed(() => chatStore.activeConversationId !== null);\n\n const showContactList = computed(() => {\n if (isMobile.value) return !isInChat.value;\n return true;\n });\n\n const showMessagingSection = computed(() => {\n if (isMobile.value) return isInChat.value;\n return true;\n });\n\n return {\n isInChat,\n isMobile,\n showContactList,\n showMessagingSection,\n NoChatSelected,\n t,\n };\n },\n});\n\n// Cast at the export boundary so vue-tsc widens the public type and stops\n// inferring private types from descendants (ChatView -> PrescribtionDisplay\n// etc.) — that inference is what was tripping TS4082 during .d.ts emit.\nexport default ChatPage as unknown as DefineComponent<{}, {}, any>;\n</script>\n","<template>\n<button\n @click=\"handleClick\"\n class=\"b-btn\"\n :class=\"[`b-btn--${type}`,'select-none', { 'is-disabled': disabled , 'is-loading': loading }]\"\n :style=\"buttonStyle\"\n >\n\n <div class=\"b-btn__ghost-layer\" aria-hidden=\"true\">\n <BIcon v-if=\"!text && icon\" :icon=\"icon\" :size=\"ICON_SIZE\" class=\"shrink-0\" />\n <span v-if=\"text\" class=\"whitespace-nowrap font-medium\">{{ text }}</span>\n <BIcon v-if=\"text && rightIcon\" :icon=\"rightIcon\" :size=\"ICON_SIZE\" class=\"shrink-0\" />\n </div>\n\n <div class=\"b-btn__content-wrapper\">\n <Transition name=\"fade\">\n <div v-if=\"!loading\" class=\"b-btn__content absolute inset-0\">\n <BIcon v-if=\"!text && icon\" :icon=\"icon\" :size=\"ICON_SIZE\" class=\"fill-current shrink-0\" />\n <span v-if=\"text\" class=\"whitespace-nowrap font-medium\">{{ text }}</span>\n <BIcon v-if=\"text && rightIcon\" :icon=\"rightIcon\" :size=\"ICON_SIZE\" class=\"fill-current shrink-0\" />\n </div>\n </Transition>\n\n <Transition name=\"fade-delay\">\n <div v-if=\"loading\" class=\"b-btn__loading absolute inset-0\">\n <BIcon icon=\"PhCircleNotch\" class=\"animate-spin fill-current\" :size=\"ICON_SIZE\" />\n </div>\n </Transition>\n </div>\n </button>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, type PropType } from 'vue';\n\nconst COLOR_MAP: Record<string, any> = {\n primary: {\n fillBgImage: 'var(--background-image-diamond-primary-secondary)',\n fillBgColor: 'var(--color-primary)',\n fillBorder: 'var(--color-primary)',\n fillText: 'var(--color-on-primary)',\n text: 'var(--color-primary)'\n },\n error: {\n fillBgImage: 'var(--background-image-diamond-error)',\n fillBgColor: 'var(--color-error)',\n fillBorder: 'var(--color-error)',\n fillText: 'var(--color-on-error)',\n text: 'var(--color-error)'\n },\n secondary: {\n fillBgImage: 'none',\n fillBgColor: 'var(--color-surface-variant-2)',\n fillBorder: 'var(--color-surface-variant-2)',\n fillText: 'var(--color-on-surface)',\n text: 'var(--color-secondary)'\n }\n};\n\nconst SIZE = { px: '20px', py: '10px', radius: '10px', fontSize: 'var(--text-label-md)', iconOnly: '40px' };\nconst ICON_SIZE = 20;\n\nconst FOCUS = { width: '3px', offset: '2px' };\n\nconst VARIANTS = {\n fill: (c: string) => {\n const map = COLOR_MAP[c] || COLOR_MAP.primary;\n return {\n base: { bgImage: map.fillBgImage, bg: map.fillBgColor, text: map.fillText, border: map.fillBorder, opacity: '1' },\n hover: { bgImage: map.fillBgImage, bg: map.fillBgColor, text: map.fillText, border: map.fillBorder, opacity: '1' },\n active: { bgImage: map.fillBgImage, bg: map.fillBgColor, text: map.fillText, border: map.fillBorder, opacity: '1' },\n disabled: { bgImage: map.fillBgImage, bg: map.fillBgColor, text: map.fillText, border: map.fillBorder, opacity: '0.65' }\n }\n },\n outline: (c: string) => {\n const map = COLOR_MAP[c] || COLOR_MAP.primary;\n return {\n base: { bgImage: 'none', bg: 'transparent', text: map.text, border: 'var(--color-outline)', opacity: '1' },\n hover: { bgImage: 'none', bg: 'var(--color-surface-variant-3)', text: map.text, border: map.text, opacity: '1' },\n active: { bgImage: 'none', bg: 'var(--color-outline)', text: map.text, border: map.text, opacity: '1' },\n disabled: { bgImage: 'none', bg: 'transparent', text: map.text, border: 'var(--color-outline)', opacity: '0.5' }\n }\n },\n ghost: (c: string) => {\n const map = COLOR_MAP[c] || COLOR_MAP.primary;\n return {\n base: { bgImage: 'none', bg: 'transparent', text: map.text, border: 'transparent', opacity: '1' },\n hover: { bgImage: 'none', bg: 'var(--color-surface-variant-3)', text: map.text, border: 'transparent', opacity: '1' },\n active: { bgImage: 'none', bg: 'var(--color-outline)', text: map.text, border: 'transparent', opacity: '1' },\n disabled: { bgImage: 'none', bg: 'transparent', text: map.text, border: 'transparent', opacity: '0.5' }\n }\n }\n};\n\nconst props = defineProps({\n color: { type: String as PropType<'primary' | 'secondary' | 'error' | 'warning'>, default: 'primary' },\n type: { type: String as PropType<'fill' | 'outline' | 'ghost'>, default: 'fill' },\n text: { type: String, default: '' },\n rightIcon: { type: String, default: '' },\n icon: { type: String, default: '' },\n disabled: { type: Boolean, default: false },\n loading: { type: Boolean, default: false }\n});\n\nconst emit = defineEmits(['click']);\n\nconst handleClick = (event: MouseEvent) => {\n if (props.disabled || props.loading) return event.preventDefault();\n emit('click', event);\n};\n\nconst isIconOnly = computed(() => !props.text && !!props.icon);\n\nconst buttonStyle = computed(() => {\n const variantMap = VARIANTS[props.type](props.color);\n\n return {\n '--b-pad-inline': isIconOnly.value ? '0' : SIZE.px,\n '--b-pad-block': isIconOnly.value ? '0' : SIZE.py,\n '--b-width': isIconOnly.value ? SIZE.iconOnly : 'auto',\n '--b-height': isIconOnly.value ? SIZE.iconOnly : 'auto',\n '--b-radius': SIZE.radius,\n '--b-font-size': SIZE.fontSize,\n\n '--b-focus-width': FOCUS.width,\n '--b-focus-offset': FOCUS.offset,\n '--b-focus-color': `var(--color-${props.color})`,\n\n '--b-bg-image': variantMap.base.bgImage,\n '--b-bg-color': variantMap.base.bg,\n '--b-text': variantMap.base.text,\n '--b-border': variantMap.base.border,\n '--b-opacity': variantMap.base.opacity,\n\n '--b-hover-bg-color': variantMap.hover.bg,\n '--b-hover-text': variantMap.hover.text,\n '--b-hover-border': variantMap.hover.border,\n\n '--b-active-bg-color': variantMap.active.bg,\n '--b-active-text': variantMap.active.text,\n '--b-active-border': variantMap.active.border,\n\n '--b-disabled-bg-color': variantMap.disabled.bg,\n '--b-disabled-text': variantMap.disabled.text,\n '--b-disabled-border': variantMap.disabled.border,\n '--b-disabled-opacity': variantMap.disabled.opacity,\n };\n});\n</script>\n\n<style scoped>\n.b-btn {\n position: relative;\n display: inline-grid;\n place-items: center;\n box-sizing: border-box;\n transition: all 0.3s ease-in-out;\n cursor: pointer;\n overflow: hidden;\n\n border-width: 1px;\n border-style: solid;\n\n padding-inline: var(--b-pad-inline);\n padding-block: var(--b-pad-block);\n width: var(--b-width);\n height: var(--b-height);\n border-radius: var(--b-radius);\n font-size: var(--b-font-size);\n\n background-image: var(--b-bg-image);\n background-color: var(--b-bg-color);\n color: var(--b-text);\n border-color: var(--b-border);\n opacity: var(--b-opacity);\n --b-hover-overlay: rgba(0, 0, 0, 0.1);\n}\n\n.b-btn:focus-visible {\n outline: var(--b-focus-width) solid var(--b-focus-color);\n outline-offset: var(--b-focus-offset);\n}\n\n:where(.dark) .b-btn {\n --b-hover-overlay: rgba(255, 255, 255, 0.1);\n}\n\n.b-btn--fill::after {\n content: '';\n position: absolute;\n inset: 0;\n background-color: var(--b-hover-overlay);\n opacity: 0;\n transition: opacity 0.3s ease-in-out;\n pointer-events: none;\n z-index: 1;\n}\n\n.b-btn--fill:hover:not(.is-disabled)::after {\n opacity: 1;\n}\n\n.b-btn__content-wrapper {\n z-index: 2;\n}\n\n.b-btn:hover:not(.is-disabled) {\n background-color: var(--b-hover-bg-color);\n color: var(--b-hover-text);\n border-color: var(--b-hover-border);\n}\n\n.b-btn:active:not(.is-disabled) {\n background-color: var(--b-active-bg-color);\n color: var(--b-active-text);\n border-color: var(--b-active-border);\n transition: all 0.1s ease-out;\n}\n\n.b-btn--fill:active:not(.is-disabled) {\n filter: brightness(0.9);\n transition: filter 0.1s ease-out;\n}\n\n.b-btn.is-disabled {\n cursor: not-allowed;\n background-color: var(--b-disabled-bg-color);\n color: var(--b-disabled-text);\n border-color: var(--b-disabled-border);\n opacity: var(--b-disabled-opacity);\n}\n\n.b-btn__ghost-layer {\n grid-column: 1; grid-row: 1; visibility: hidden;\n display: flex; align-items: center; gap: 8px; pointer-events: none;\n}\n.b-btn__content-wrapper {\n grid-column: 1; grid-row: 1; position: relative;\n display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;\n}\n.b-btn__content, .b-btn__loading {\n display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; height: 100%;\n}\n\n.fade-enter-active, .fade-leave-active, .fade-delay-enter-active {\n transition: opacity 0.3s ease; position: absolute;\n}\n.fade-delay-enter-active { transition-delay: 0.1s; }\n.fade-enter-from, .fade-leave-to, .fade-delay-enter-from { opacity: 0; }\n.fade-enter-to, .fade-leave-from, .fade-delay-enter-to { opacity: 100; }\n</style>\n","<template>\n <div @click=\"toggleCheck\" class=\"group inline-flex items-center transition-all duration-200\"\n :class=\"{ 'gap-x-3': hasContent, 'cursor-pointer': !disabled, 'opacity-50 cursor-not-allowed': disabled }\">\n <div class=\"shrink-0 flex items-center justify-center\">\n\n <div\n class=\"w-5 h-5 p-0.5 relative rounded-md flex justify-center items-center overflow-hidden transition-all duration-200 bg-outline\">\n <div class=\"absolute inset-0 transition-opacity duration-200 ease-in-out bg-diamond-primary-secondary\"\n :class=\"[isActive ? 'opacity-100' : 'opacity-0']\">\n </div>\n <div\n class=\"z-10 w-full h-full bg-surface relative rounded-[3px] overflow-hidden flex justify-center items-center\">\n <div class=\"absolute inset-0 transition-all duration-200 flex justify-center items-center ease-in-out bg-diamond-primary-secondary\"\n :class=\"[isActive ? 'scale-100 opacity-100' : 'scale-0 opacity-0']\">\n <BIcon class=\"w-3.5 h-3.5 fill-white\" weight=\"bold\" icon=\"PhCheck\" />\n </div>\n </div>\n </div>\n </div>\n\n <div v-if=\"hasContent\" class=\"select-none flex-1\">\n <slot>\n <span class=\"text-body-md text-on-surface\">{{ label }}</span>\n </slot>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, watch, useSlots } from 'vue';\n\nconst props = defineProps({\n modelValue: {\n type: Boolean,\n default: false,\n required: true,\n },\n label: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false,\n }\n});\n\nconst emit = defineEmits(['update:modelValue']);\nconst slots = useSlots();\n\nconst isActive = ref(props.modelValue);\n\nwatch(() => props.modelValue, (newVal) => {\n isActive.value = newVal;\n});\n\nconst toggleCheck = () => {\n if (props.disabled) return\n emit('update:modelValue', !isActive.value);\n};\n\nconst hasContent = computed(() => !!props.label || !!slots.default);\n</script>\n","<template>\n <div class=\"md:w-87.5 flex bg-surface md:rounded-2xl flex-col \" dir=\"rtl\">\n\n <!-- Emoji Grid (Search Removed) -->\n <!-- Added pt-3 so it doesn't look cramped at the top without the search bar -->\n <div class=\" h-49.5 md:h-94.5 overflow-y-auto hide-scrollbar px-3 pt-3 pb-3 grid grid-cols-8 gap-x-1 gap-y-2 content-start\">\n <div v-for=\"emoji in currentEmojis\" :key=\"emoji.hex\" @click=\"$emit('select', emoji.native)\"\n class=\"flex items-center justify-center w-8 h-8 cursor-pointer hover:bg-surface-variant rounded-md transition-colors\">\n <!-- Loads exactly from your specified WebP path -->\n <img :src=\"`/emojis/apple/webp/${emoji.hex}.webp`\" :alt=\"emoji.native\" class=\"w-6 h-6 object-contain\"\n loading=\"lazy\" />\n </div>\n </div>\n\n <!-- Bottom Navigation (With the exact purple border) -->\n <div class=\"flex h-10 items-center justify-between px-2 bg-surface-variant\">\n <button v-for=\"cat in categories\" :key=\"cat.id\" @click=\"activeCategory = cat.id\"\n class=\"p-1.5 rounded-md hover:bg-surface-variant transition-colors\">\n <BIcon :icon=\"cat.icon\" class=\"w-6 h-6 cursor-pointer transition-colors\"\n :class=\"activeCategory === cat.id ? 'fill-primary' : 'fill-on-surface/50'\" />\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed } from 'vue';\n// We only import the raw category and hex data from emoji-mart\nimport dataRaw from '@emoji-mart/data';\n// `@emoji-mart/data` no longer ships top-level typings for `.categories` /\n// `.emojis`; cast at the import boundary.\nconst data = dataRaw as unknown as {\n emojis: Record<string, { skins: Array<{ unified: string; native: string }> }>;\n categories: Array<{ id: string; emojis: string[] }>;\n};\n\nconst emit = defineEmits(['select']);\nconst activeCategory = ref('people'); // Default starting category\n\n// Maps your bottom icons to the exact category IDs in the emoji-mart JSON\nconst categories = [\n { id: 'recent', icon: 'PhClock' }, // Note: We mock 'recent' below\n { id: 'people', icon: 'PhSmiley' },\n { id: 'nature', icon: 'PhPawPrint' },\n { id: 'foods', icon: 'PhHamburger' },\n { id: 'activity', icon: 'PhSoccerBall' },\n { id: 'places', icon: 'PhBuildings' },\n { id: 'objects', icon: 'PhLightbulb' },\n { id: 'symbols', icon: 'PhMusicNotes' },\n { id: 'flags', icon: 'PhFlag' }\n];\n\n// Dynamically grab the emojis for the selected category\nconst currentEmojis = computed(() => {\n // Mock logic for \"Recent\" since we don't have a database saving them yet\n if (activeCategory.value === 'recent') {\n const peopleCat = data.categories.find(c => c.id === 'people');\n return peopleCat.emojis.slice(0, 24).map(getEmojiData);\n }\n\n // Normal category loading\n const cat = data.categories.find(c => c.id === activeCategory.value);\n if (!cat) return [];\n\n return cat.emojis.map(getEmojiData);\n});\n\n// Helper to extract the hex code and native character from the raw JSON\nconst getEmojiData = (emojiId: string) => {\n const e = data.emojis[emojiId];\n return {\n // e.skins[0].unified is the hex code (e.g., '1f600')\n hex: e.skins[0].unified,\n // e.skins[0].native is the actual character (e.g., '😀')\n native: e.skins[0].native\n };\n};\n</script>\n\n<style scoped>\n/* Hides the ugly native scrollbar but allows scrolling */\n.hide-scrollbar::-webkit-scrollbar {\n display: none;\n}\n\n.hide-scrollbar {\n -ms-overflow-style: none;\n scrollbar-width: none;\n}\n</style>","<template>\n <component \n :is=\"iconComponent\" \n :weight=\"weight\" \n :size=\"size\" \n v-bind=\"$attrs\" \n :class=\"[\n 'inline-block fill-current transition-all duration-200',\n $attrs.class\n ]\" \n />\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from \"vue\";\n// This imports the whole library so any string will work\nimport * as PhosphorIcons from \"@phosphor-icons/vue\";\n\nconst props = defineProps({\n icon: {\n type: String,\n required: true\n },\n weight: {\n type: String,\n default: \"regular\"\n },\n size: {\n type: [String, Number],\n default: \"1em\"\n }\n});\n\nconst iconComponent = computed(() => {\n if (!props.icon) return \"span\";\n\n let name = props.icon;\n // Ensure the name matches the Phosphor component naming (e.g., PhUser)\n if (!name.startsWith('Ph')) {\n name = 'Ph' + name.charAt(0).toUpperCase() + name.slice(1);\n } else {\n name = name.charAt(0).toUpperCase() + name.slice(1);\n }\n\n return (PhosphorIcons as any)[name] || \"span\";\n});\n</script>","<template>\n <div id=\"image\" ref=\"rootEl\" :class=\"rootClasses\">\n <div id=\"piece-of-shit\" :style=\"[wrapperStyles, { borderRadius: 'inherit' }]\" :class=\"wrapperClasses\">\n\n <div id=\"not-piece-of-shit\" v-if=\"autoAspect\" :style=\"autoAspectStyles\" :class=\"autoAspectContainerClasses\">\n <img :key=\"displayedImage\" :alt=\"alt\" @load=\"loadImage\" :src=\"displayedImage\"\n :class=\"autoAspectImageClasses\" style=\"border-radius: inherit;\" />\n </div>\n\n <template v-else>\n <div :class=\"standardContainerClasses\" style=\"border-radius: inherit;\">\n <img :key=\"displayedImage\" :alt=\"alt\" @load=\"loadImage\" :src=\"displayedImage\"\n style=\"border-radius: inherit;\" :class=\"standardImageClasses\" />\n </div>\n </template>\n\n </div>\n\n <div :title=\"title\" :class=\"overlayClasses\" style=\"border-radius: inherit;\">\n <div class=\"relative w-full h-full\"\n :class=\"[!!$slots.default ? 'pointer-events-auto' : 'pointer-events-none']\"\n style=\"border-radius: inherit;\">\n <div ref=\"content\" style=\"border-radius: inherit;\" :class=\"contentClasses\">\n <slot></slot>\n </div>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, onUnmounted, onMounted, watch, ref, computed } from 'vue'\n\nexport default defineComponent({\n name: 'DopeImage',\n props: {\n src: { type: String, default: '' },\n title: { type: String, default: '' },\n alt: { type: String, default: '' },\n fit: { type: String, default: 'fit' },\n fitToContent: { type: Boolean, default: false },\n hasFade: { type: Boolean, default: false },\n noLoading: { type: Boolean, default: false },\n autoSize: { type: Boolean, default: false },\n autoAspect: { type: Boolean, default: false },\n imageClass: { type: String, default: '' }\n },\n emits: ['load'],\n setup(props, { emit }) {\n const rootEl = ref<HTMLElement | null>(null)\n const content = ref<HTMLElement | null>(null)\n\n // Exact pixel math references\n const containerWidth = ref(0)\n const containerHeight = ref(0)\n const imgRatio = ref<number | null>(null)\n\n const isLoaded = ref(false)\n const imageTransitionComplete = ref(true)\n const elementHeight = ref(0)\n const displayedImage = ref(props.src)\n\n let resizeObserver: ResizeObserver | null = null\n\n const showImage = computed(() => isLoaded.value && props.src !== '' && imageTransitionComplete.value)\n\n const rootClasses = computed(() => [\n // Added pointer-events-none\n 'relative transition-all duration-500 ease-in-out flex justify-center items-center pointer-events-none',\n props.autoSize && !props.autoAspect ? 'w-auto h-auto' : 'w-full h-full'\n ])\n\n const wrapperClasses = computed(() => [\n // Added pointer-events-none\n 'w-full transition-all duration-500 ease-in-out flex justify-center items-center pointer-events-none',\n props.autoSize && !props.autoAspect ? 'relative' : 'absolute inset-0 h-full'\n ])\n\n const wrapperStyles = computed(() => props.fitToContent ? { height: `${elementHeight.value}px` } : {})\n\n // THE FIX: Math-based boundary detection\n const autoAspectStyles = computed(() => {\n // Default placeholder size until we have the measurements\n if (!props.autoAspect || !imgRatio.value || !containerWidth.value || !containerHeight.value) {\n return { width: '100%', height: '100%', borderRadius: 'inherit' };\n }\n\n const cRatio = containerWidth.value / containerHeight.value;\n\n if (imgRatio.value > cRatio) {\n // Image is mathematically wider than container -> Force width 100%, let height scale down\n return {\n width: '100%',\n height: 'auto',\n aspectRatio: `${imgRatio.value}`,\n borderRadius: 'inherit'\n };\n } else {\n // Image is mathematically taller than container -> Force height 100%, let width scale down\n return {\n width: 'auto',\n height: '100%',\n aspectRatio: `${imgRatio.value}`,\n borderRadius: 'inherit'\n };\n }\n })\n\n const autoAspectContainerClasses = computed(() => [\n 'overflow-hidden relative flex justify-center items-center transition-all duration-500',\n showImage.value ? 'bg-transparent' : !props.noLoading ? 'bg-black/20 animate-pulse' : ''\n ])\n\n const autoAspectImageClasses = computed(() => [\n 'select-none block w-full h-full object-cover ',\n showImage.value ? 'opacity-100' : 'opacity-0',\n props.noLoading ? ' transition-none' : 'transition-all duration-500 ease-in-out',\n props.imageClass\n ])\n\n const standardContainerClasses = computed(() => [\n 'w-full h-full relative transition-all duration-500 overflow-hidden',\n showImage.value ? 'bg-transparent' : !props.noLoading ? 'bg-black/20 animate-pulse' : ''\n ])\n\n const standardImageClasses = computed(() => [\n 'select-none block transition-all duration-500 ease-in-out',\n props.autoSize ? 'w-full h-auto' : 'w-full h-full',\n `object-${props.fit}`,\n showImage.value ? 'opacity-100' : 'opacity-0',\n props.imageClass\n ])\n\n const overlayClasses = computed(() => [\n 'absolute inset-0 flex z-10 justify-center items-center pointer-events-none',\n props.autoSize || props.autoAspect ? 'h-full' : ''\n ])\n\n const contentClasses = computed(() => [\n 'content',\n props.fitToContent ? '' : 'w-full h-full'\n ])\n\n const updateDimensions = () => {\n // Actively measures the actual pixel size of your viewer container\n if (rootEl.value) {\n containerWidth.value = rootEl.value.clientWidth\n containerHeight.value = rootEl.value.clientHeight\n }\n if (content.value) {\n elementHeight.value = content.value.offsetHeight - 13\n }\n }\n\n const loadImage = (e: Event) => {\n isLoaded.value = true\n emit('load')\n const target = e.target as HTMLImageElement\n if (target && target.naturalWidth && target.naturalHeight) {\n imgRatio.value = target.naturalWidth / target.naturalHeight\n }\n }\n\n const swapImage = (newSrc: string) => {\n if (props.hasFade) {\n isLoaded.value = false;\n imageTransitionComplete.value = false;\n setTimeout(() => {\n imageTransitionComplete.value = true;\n displayedImage.value = newSrc;\n updateDimensions();\n }, 200);\n } else {\n isLoaded.value = false;\n displayedImage.value = newSrc;\n updateDimensions();\n }\n }\n\n // Silent pre-loader prevents layout shifts during image swaps\n watch(() => props.src, (newSrc) => {\n if (!newSrc) return;\n if (props.autoAspect) {\n const img = new Image();\n img.onload = () => {\n imgRatio.value = img.naturalWidth / img.naturalHeight;\n swapImage(newSrc);\n };\n img.onerror = () => swapImage(newSrc);\n img.src = newSrc;\n } else {\n swapImage(newSrc);\n }\n })\n\n onMounted(() => {\n resizeObserver = new ResizeObserver(updateDimensions)\n if (rootEl.value) resizeObserver.observe(rootEl.value)\n if (content.value) resizeObserver.observe(content.value)\n\n updateDimensions()\n\n if (props.autoAspect && props.src) {\n const img = new Image();\n img.onload = () => {\n imgRatio.value = img.naturalWidth / img.naturalHeight;\n };\n img.src = props.src;\n }\n })\n\n onUnmounted(() => {\n if (resizeObserver) resizeObserver.disconnect()\n })\n\n return {\n rootEl,\n content,\n loadImage,\n displayedImage,\n rootClasses,\n wrapperClasses,\n wrapperStyles,\n autoAspectStyles,\n autoAspectContainerClasses,\n autoAspectImageClasses,\n standardContainerClasses,\n standardImageClasses,\n overlayClasses,\n contentClasses,\n showImage\n }\n }\n})\n</script>","<template>\n <div class=\"b-input-wrapper\">\n\n <div class=\" text-label-sm mb-1.5 select-none text-on-surface\">{{ title }}</div>\n <div :style=\"inputStyle\" class=\"w-full relative\">\n <div v-if=\"options.length > 0\"\n class=\" rtl:origin-left ltr:origin-right flex items-center ltr:rtl:rounded-r-(--i-radius) rtl:rounded-l-(--i-radius) h-full absolute z-10 rtl:left-0 ltr:right-0\">\n <BMenu @select=\"handleOptionSelect\" :options=\"options\">\n <template #trigger=\"{ isOpen }\">\n <div class=\"flex rtl:pl-4 ltr:pr-4 cursor-pointer text-on-surface/50 items-center gap-x-3\">\n <div class=\" border h-5 border-outline\"></div>\n <div class=\" text-body-md select-none\">{{ selectedOption }}</div>\n <BIcon class=\" transition-all duration-200 ease-in-out \"\n :class=\"[isOpen ? 'rotate-180' : 'rotate-0']\" icon=\"PhCaretDown\" />\n </div>\n </template>\n </BMenu>\n </div>\n <input v-if=\"!textarea\" ref=\"inputField\" :id=\"`b-input-${uniqueId}`\"\n :name=\"`field-${uniqueId}`\"\n :readonly=\"readonly\" :maxlength=\"maxlength\"\n type=\"text\" v-model=\"inputValue\" class=\"b-input\" :class=\"[\n {\n 'is-focused': isFocus,\n 'is-readonly': readonly,\n 'is-disabled': disabled,\n },\n ]\" :tabindex=\"tabindex\" :autocomplete=\"autocomplete\" :enterkeyhint=\"enterkeyhint\"\n :inputmode=\"type === 'number' ? 'numeric' : undefined\" :placeholder=\"placeholder\"\n @keypress=\"handleKeypress\" @keydown.enter=\"handleSubmit\" @paste=\"handlePaste\" @focus=\"handleFocus\"\n @blur=\"handleBlur\" :disabled=\"disabled\" />\n\n <textarea v-if=\"textarea\" ref=\"inputField\" :readonly=\"readonly\" :maxlength=\"maxlength\"\n v-model=\"inputValue\" class=\"b-input b-input--textarea\"\n :class=\"{ 'is-focused': isFocus, 'is-readonly': readonly, 'is-disabled': disabled }\"\n :tabindex=\"tabindex\" :autocomplete=\"autocomplete\" :enterkeyhint=\"enterkeyhint\"\n :inputmode=\"type === 'number' ? 'numeric' : undefined\" :placeholder=\"placeholder\"\n @keypress=\"handleKeypress\" @keydown.enter=\"handleSubmit\" @paste=\"handlePaste\" @focus=\"handleFocus\"\n @blur=\"handleBlur\" :disabled=\"disabled\"></textarea>\n\n <div class=\"b-input-slots-wrapper max-h-full hide-scrollbar absolute inset-0 pointer-events-none flex justify-between items-center\"\n :style=\"{ paddingInline: inputStyle['--i-pad-internal'] }\">\n <div ref=\"startSlotRef\" class=\"pointer-events-auto flex items-center shrink-0\">\n\n <span v-if=\"prefix.trim().length > 0\" class=\"b-input-prefix select-none\">\n {{ prefix }}\n </span>\n\n <BIcon v-else-if=\"icon.trim().length > 0\" :icon=\"icon\"\n class=\"b-input-icon shrink-0\" />\n </div>\n\n <div ref=\"endSlotRef\" class=\"pointer-events-auto flex items-center shrink-0\">\n <BIcon v-if=\"prefix.trim().length > 0 && icon.trim().length > 0\"\n :icon=\"icon\" class=\"b-input-icon shrink-0\" />\n </div>\n </div>\n </div>\n <div v-if=\"caption.trim().length > 0\" class=\"b-input-caption select-none\">\n {{ caption }}\n </div>\n\n <div class=\"b-input-message-wrapper -translate-y-0 overflow-hidden h-4\">\n <div class=\"flex items-center gap-x-1.5 transition-all duration-200 ease-in-out\"\n :class=\"[showMessage ? 'translate-y-0 opacity-100' : '-translate-y-4 opacity-0']\"\n :style=\"{ color: messageColor }\">\n <BIcon :icon=\"messageIcon\" class=\"b-input-message-icon shrink-0\" />\n <span class=\"text-xs select-none\">{{ displayedMessage }}</span>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { useTemplateRef, type PropType, watch, computed, ref, onMounted, onUnmounted, useId } from 'vue';\nimport type { MenuOption } from '~/types/components/menu-options';\nconst uniqueId = useId();\n\n\nconst INPUT_CONFIG = {\n sizing: {\n height: '44px',\n textareaHeight: '94px',\n radius: '10px',\n borderWidth: '1px',\n paddingInternal: '12px',\n gap: '8px',\n fontSize: 'var(--text-body-md)',\n fontFamily: 'inherit',\n titleSize: 'var(--text-label-sm)',\n captionSize: '12px',\n iconSize: '20px',\n messageIconSize: '24px'\n },\n\n colors: {\n bgDisabled: 'var(--color-surface-variant)',\n text: 'var(--color-on-surface)',\n placeholder: 'var(--color-outline)',\n icon: 'var(--color-on-surface)',\n title: 'var(--color-on-surface)',\n caption: 'var(--color-outline)'\n },\n\n focus: {\n borderGradient: 'var(--background-image-diamond-primary-secondary)'\n },\n\n variants: (c: string) => {\n const map: Record<string, { bg: string, border: string, message: string }> = {\n error: {\n bg: 'color-mix(in srgb, var(--color-error) 10%, transparent)',\n border: 'var(--color-error)',\n message: 'var(--color-error)'\n },\n warning: {\n bg: 'color-mix(in srgb, var(--color-warning) 10%, transparent)',\n border: 'var(--color-warning)',\n message: 'var(--color-warning)'\n },\n success: {\n bg: 'color-mix(in srgb, var(--color-secondary) 10%, transparent)',\n border: 'var(--color-secondary)',\n message: 'var(--color-secondary)'\n },\n secondary: {\n bg: 'color-mix(in srgb, var(--color-secondary) 10%, transparent)',\n border: 'var(--color-secondary)',\n message: 'var(--color-secondary)'\n },\n primary: {\n bg: 'var(--color-surface)',\n border: 'var(--color-outline)',\n message: 'var(--color-primary)'\n }\n };\n return map[c] || map.primary;\n },\n\n addon: {\n bg: 'transparent',\n text: 'var(--color-on-surface)',\n radius: '6px',\n height: '32px'\n }\n};\n\nconst props = defineProps({\n modelValue: { type: String, default: '' },\n type: { type: String as PropType<'text' | 'number'>, default: 'text' },\n title: { type: String, default: '' },\n placeholder: { type: String, default: '' },\n message: { type: String, default: '' },\n color: { type: String, default: 'primary' },\n icon: { type: String, default: '' },\n tabindex: { type: [Number, String], default: 0 },\n autocomplete: { type: String, default: 'on' },\n enterkeyhint: { type: String as PropType<\"enter\" | \"search\" | \"done\" | \"go\" | \"next\" | \"previous\" | \"send\" | undefined>, default: 'enter' },\n maxlength: { type: [Number, String], default: undefined },\n required: { type: Boolean, default: false },\n readonly: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n textarea: { type: Boolean, default: false },\n prefix: { type: String, default: '' },\n caption: { type: String, default: '' },\n selectedOptionKey: { type: String, default: '' },\n options: {\n type: Array as PropType<MenuOption[]>,\n default: () => []\n },\n});\n\nconst emit = defineEmits(['update:modelValue', 'focus', 'blur', 'submit', 'paste', 'select']);\n\nconst inputValue = ref(props.modelValue);\nconst isFocus = ref(false);\nconst inputField = useTemplateRef<HTMLInputElement | HTMLTextAreaElement>('inputField');\n\nconst startSlotRef = ref<HTMLElement | null>(null);\nconst endSlotRef = ref<HTMLElement | null>(null);\nconst startSlotWidth = ref(0);\nconst endSlotWidth = ref(0);\nlet resizeObserver: ResizeObserver | null = null;\nconst selectedOptionIndex = ref(0)\nconst selectedOption = computed(() => {\n if (props.options.length === 0) return ''\n return props.options[selectedOptionIndex.value]?.label\n})\n\nconst handleOptionSelect = (key: string) => {\n selectedOptionIndex.value = props.options.findIndex((option) => option.key === key)\n emit('select', key)\n}\n\nonMounted(() => {\n if (typeof window !== \"undefined\") {\n resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target === startSlotRef.value) startSlotWidth.value = entry.contentRect.width;\n if (entry.target === endSlotRef.value) endSlotWidth.value = entry.contentRect.width;\n }\n });\n if (startSlotRef.value) resizeObserver.observe(startSlotRef.value);\n if (endSlotRef.value) resizeObserver.observe(endSlotRef.value);\n }\n});\n\nonUnmounted(() => {\n if (resizeObserver) resizeObserver.disconnect();\n});\n\nconst inputStyle = computed(() => {\n const padInt = parseInt(INPUT_CONFIG.sizing.paddingInternal);\n const gap = parseInt(INPUT_CONFIG.sizing.gap);\n\n const startPad = startSlotWidth.value > 0 ? startSlotWidth.value + padInt + gap : padInt;\n const endPad = endSlotWidth.value > 0 ? endSlotWidth.value + padInt + gap : padInt;\n\n const variantMap = INPUT_CONFIG.variants(props.color);\n\n return {\n '--i-pad-start': `${startPad}px`,\n '--i-pad-end': `${endPad}px`,\n '--i-pad-internal': INPUT_CONFIG.sizing.paddingInternal,\n\n '--i-height': INPUT_CONFIG.sizing.height,\n '--i-textarea-height': INPUT_CONFIG.sizing.textareaHeight,\n '--i-radius': INPUT_CONFIG.sizing.radius,\n '--i-border-width': INPUT_CONFIG.sizing.borderWidth,\n '--i-font-size': INPUT_CONFIG.sizing.fontSize,\n\n '--i-bg': variantMap.bg,\n '--i-bg-disabled': INPUT_CONFIG.colors.bgDisabled,\n '--i-text': INPUT_CONFIG.colors.text,\n '--i-placeholder': INPUT_CONFIG.colors.placeholder,\n '--i-border': variantMap.border,\n '--i-border-focus-gradient': INPUT_CONFIG.focus.borderGradient,\n\n '--i-addon-bg': INPUT_CONFIG.addon.bg,\n '--i-addon-text': INPUT_CONFIG.addon.text,\n '--i-addon-radius': INPUT_CONFIG.addon.radius,\n '--i-addon-height': INPUT_CONFIG.addon.height,\n\n '--i-title-color': INPUT_CONFIG.colors.title,\n '--i-title-size': INPUT_CONFIG.sizing.titleSize,\n '--i-caption-color': INPUT_CONFIG.colors.caption,\n '--i-caption-size': INPUT_CONFIG.sizing.captionSize,\n '--i-icon-color': INPUT_CONFIG.colors.icon,\n '--i-icon-size': INPUT_CONFIG.sizing.iconSize,\n '--i-msg-icon-size': INPUT_CONFIG.sizing.messageIconSize,\n };\n});\n\nwatch(() => props.selectedOptionKey, (newKey) => {\n if (props.options.length > 0 && newKey) {\n const idx = props.options.findIndex(opt => opt.key === newKey);\n if (idx > -1) selectedOptionIndex.value = idx;\n }\n}, { immediate: true });\n\nwatch(() => props.modelValue, (val) => {\n if (props.options.length > 0 && props.selectedOptionKey) {\n const idx = props.options.findIndex(opt => opt.key === props.selectedOptionKey);\n if (idx > -1) selectedOptionIndex.value = idx;\n }\n inputValue.value = String(val);\n}, { immediate: true });\n\nwatch(() => inputValue.value, (newVal) => {\n if (!newVal) return emit('update:modelValue', '');\n\n if (props.type === 'number') {\n const filtered = newVal.replace(/[^0-9]/g, '');\n if (filtered !== newVal) { inputValue.value = filtered; return; }\n }\n emit('update:modelValue', inputValue.value);\n});\n\nconst handleKeypress = (e: KeyboardEvent) => {\n if (props.type === 'number' && !/[0-9]/.test(e.key)) {\n e.preventDefault();\n }\n};\n\nconst handlePaste = (e: ClipboardEvent) => {\n emit('paste', e);\n const pasteData = e.clipboardData?.getData('text') || '';\n if (props.type === 'number' && !/^[0-9]+$/.test(pasteData)) {\n e.preventDefault();\n }\n};\n\nconst handleFocus = () => { isFocus.value = true; emit('focus'); };\nconst handleBlur = () => { isFocus.value = false; emit('blur'); };\nconst handleSubmit = () => emit('submit', inputValue.value);\n\nconst showMessage = ref(props.message.trim().length > 0);\nconst displayedMessage = ref(props.message);\nconst messageColor = computed(() => INPUT_CONFIG.variants(props.color).message);\n\nwatch(() => props.message, (newMsg) => {\n if (newMsg.trim().length > 0) {\n displayedMessage.value = newMsg;\n showMessage.value = true;\n } else {\n showMessage.value = false;\n }\n});\n\nconst messageIcon = computed(() => {\n switch (props.color) {\n case 'success': return 'PhCheckCircle';\n case 'error':\n case 'warning': return 'PhWarning';\n default: return 'PhWarningCircle';\n }\n});\n\ndefineExpose({ focus: () => inputField.value?.focus(), blur: () => inputField.value?.blur() });\n</script>\n\n<style scoped>\n.b-input-wrapper {\n width: 100%;\n max-width: 500px;\n display: flex;\n flex-direction: column;\n position: relative;\n}\n\n.b-input-title {\n color: var(--i-title-color);\n font-size: var(--i-title-size);\n font-weight: 500;\n margin-bottom: 4px;\n}\n\n.b-input-required {\n color: var(--color-error, red);\n}\n\n.b-rounded {\n border-radius: var(--i-radius);\n}\n\n.b-input {\n width: 100%;\n box-sizing: border-box;\n outline: none;\n transition: background-color 0.3s ease, border-color 0.3s ease;\n\n height: var(--i-height);\n border-radius: var(--i-radius);\n font-size: var(--i-font-size);\n font-family: var(--i-font-family);\n font-weight: 500;\n\n background-color: var(--i-bg);\n color: var(--i-text);\n\n border: var(--i-border-width) solid var(--i-border);\n padding-inline-start: var(--i-pad-start);\n padding-inline-end: var(--i-pad-end);\n}\n\n.b-input-focus-border {\n position: absolute;\n inset: 0;\n border-radius: var(--i-radius);\n padding: var(--i-border-width);\n background: var(--i-border-focus-gradient);\n\n -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);\n -webkit-mask-composite: xor;\n mask-composite: exclude;\n\n opacity: 0;\n transition: opacity 0.3s ease;\n pointer-events: none;\n z-index: 1;\n}\n\n.b-input-focus-border.is-active {\n opacity: 1;\n}\n\n.b-input.is-focused {\n background-color: transparent;\n border-color: var(--color-primary);\n}\n\n.b-input--textarea {\n height: var(--i-textarea-height);\n resize: none;\n padding-top: var(--i-pad-internal);\n}\n\n.b-input::placeholder {\n color: var(--color-on-surface);\n opacity: 0.5;\n}\n\n.b-input.is-readonly {\n opacity: 0.7;\n}\n\n.b-input.is-disabled {\n background-color: var(--i-bg-disabled);\n border-color: var(--color-outline);\n cursor: not-allowed;\n opacity: 0.6;\n}\n\n.b-input-slots-wrapper {\n padding-inline: var(--i-pad-internal);\n overflow: visible;\n}\n\n.b-input-prefix {\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: var(--i-font-size);\n font-weight: 500;\n color: var(--color-on-surface);\n opacity: 0.5;\n}\n\n.b-input-icon {\n width: var(--i-icon-size);\n height: var(--i-icon-size);\n fill: var(--color-on-surface);\n color: var(--i-icon-color);\n opacity: 0.5;\n}\n\n.b-input-message-icon {\n width: var(--i-msg-icon-size);\n height: var(--i-msg-icon-size);\n fill: currentColor;\n}\n\n.b-input-caption {\n padding-top: 6px;\n width: 100%;\n color: var(--color-on-surface);\n font-size: var(--i-caption-size);\n}\n</style>\n","<template>\n <div>\n <div @click=\"emit('click')\" :class=\"[\n 'relative inline-flex items-center justify-center select-none rounded-full transition-all duration-200 ease-in-out text-primary bg-primary/10 border-gradient-active',\n sizeClasses,\n paddingClasses,\n icon.trim().length == 0 ? 'gap-x-0' : 'gap-x-1',\n ]\">\n\n <Transition name=\"icon-expand\">\n <div v-if=\"icon\"\n :class=\"['shrink-0 z-10 flex items-center justify-center overflow-hidden', iconSizeClass, { 'rtl:ml-0 ltr:mr-0': !text }]\"\n :style=\"{ order: isRtl ? 2 : 1 }\">\n <BIcon @click.stop=\"emit('action')\" :icon=\"icon\" class=\"w-full h-full\" />\n </div>\n </Transition>\n\n <span v-if=\"text\" :class=\"['z-10 truncate transition-all duration-200 ease-in-out', textSizeClass]\"\n :style=\"{ order: isRtl ? 1 : 2, marginInlineStart: icon ? '8px' : '0' }\">\n {{ text }}\n </span>\n\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, type PropType } from 'vue';\nimport { useLocale } from '~/nuxt-shims';\n\nconst props = defineProps({\n size: {\n type: String as PropType<'md' | 'lg'>,\n default: 'md'\n },\n icon: {\n type: String,\n default: ''\n },\n text: {\n type: String,\n default: ''\n }\n});\n\nconst { dir } = useLocale();\nconst isRtl = computed(() => dir.value === 'rtl');\n\nconst emit = defineEmits(['click', 'action']);\n\nconst sizeClasses = computed(() => props.size === 'lg' ? 'h-[32px]' : 'h-[28px]');\nconst iconSizeClass = computed(() => props.size === 'lg' ? 'w-4.5 h-4.5' : 'w-4 h-4');\nconst textSizeClass = computed(() => props.size === 'lg' ? 'text-label-md' : 'text-label-sm');\n\nconst paddingClasses = computed(() => {\n if (props.icon && props.text) return 'ltr:pl-2 ltr:pr-3 rtl:pr-2 rtl:pl-3';\n if (props.icon) return 'px-1.5';\n return 'px-3';\n});\n</script>\n\n<style scoped>\n.border-gradient-active {\n position: relative;\n border: none !important;\n}\n\n.border-gradient-active::after {\n content: \"\";\n position: absolute;\n inset: 0;\n border-radius: 9999px;\n padding: 1px;\n background: var(--background-image-diamond-primary-secondary);\n -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);\n -webkit-mask-composite: xor;\n mask-composite: exclude;\n pointer-events: none;\n}\n\n.icon-expand-enter-active,\n.icon-expand-leave-active {\n transition: width 200ms ease-in-out, opacity 200ms ease-in-out, transform 200ms ease-in-out;\n}\n\n.icon-expand-enter-from,\n.icon-expand-leave-to {\n width: 0 !important;\n opacity: 0;\n transform: scale(0.5);\n}\n</style>\n","<template>\n <div ref=\"menuWrapper\" id=\"menu\" class=\"relative\">\n <div @click.stop=\"toggleMenu\" class=\"cursor-pointer relative\" :class=\"[overlay ? 'z-10100' : '']\">\n <slot name=\"trigger\" :isOpen=\"isOpen\" />\n </div>\n\n <div v-if=\"overlay\" @click=\"closeMenu\"\n class=\"w-dvw h-dvh fixed top-0 left-0 transition-all duration-300 ease-in-out z-10060\"\n :class=\"[isOpen ? 'bg-on-background/20 backdrop-blur-sm pointer-events-auto' : 'backdrop-blur-none bg-on-background/0 pointer-events-none']\">\n </div>\n\n <div ref=\"panelRef\" @click=\"handleContentClick\"\n class=\"absolute z-10110 bg-surface shadow-floating rounded-xl border border-outline-variant transition-all duration-200 ease-in-out\"\n :style=\"panelPositionStyles\"\n :class=\"[isOpen ? 'shadow-[0px_8px_24px_rgba(149,157,165,0.2)]' : 'shadow-none', !hasCustomContent && options && options.length > 0 ? 'w-50' : '']\">\n\n <div v-if=\"hasCustomContent\" key=\"menu-custom\">\n <slot :isOpen=\"isOpen\" :close=\"closeMenu\" />\n </div>\n\n <div v-else-if=\"options && options.length > 0\" key=\"menu-list\"\n class=\"flex p-3 max-h-75 overflow-y-auto flex-col gap-y-1\">\n <template v-for=\"(opt, idx) in options\" :key=\"opt.key\">\n <div class=\"pointer-events-auto\">\n <div @click=\"handleSelect(opt.key)\"\n class=\"bg-surface-variant-2/0 hover:bg-surface-variant-2 transition-all duration-200 ease-in-out h-11 flex items-center cursor-pointer rounded-lg px-2 gap-x-2 w-full\">\n <BIcon v-if=\"opt.icon\" :icon=\"opt.icon\" class=\"w-5 h-5\"\n :class=\"[opt.color ? `fill-${opt.color}` : 'fill-on-surface/50']\" />\n <div class=\"select-none text-label-sm\"\n :class=\"[opt.color ? `text-${opt.color}` : 'text-on-surface/50']\">\n {{ opt.label }}\n </div>\n </div>\n </div>\n <div v-if=\"idx < options.length - 1\" class=\"px-2\">\n <div class=\"h-px w-full bg-outline-container\" />\n </div>\n </template>\n </div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, computed, nextTick, watch, type PropType, useSlots, Comment, Fragment, Text } from 'vue';\nimport { useClickOutside } from '~/nuxt-shims';\n\nconst globalActiveMenuId = ref<string | null>(null);\nexport interface Option {\n key: string;\n label: string;\n icon?: string;\n color?: string;\n}\n\nexport default defineComponent({\n name: 'BMenu',\n props: {\n options: { type: Array as PropType<Option[]>, default: () => [] },\n overlay: { type: Boolean, default: false },\n autoClose: {\n type: Boolean, default: true,\n },\n align: {\n type: String as PropType<'top' | null>,\n default: null\n },\n ignoreGlobal: { type: Boolean, default: false },\n },\n emits: ['select', 'open', 'close'],\n setup(props, { emit, expose }) {\n const isOpen = ref(false);\n const menuWrapper = ref<HTMLElement | null>(null);\n const panelRef = ref<HTMLElement | null>(null);\n\n const slots = useSlots(); // Add this\n\n const hasCustomContent = computed(() => {\n return !props.options || props.options.length === 0;\n });\n\n\n\n // New reactive alignment states\n const verticalAlign = ref<'bottom' | 'top'>('bottom');\n const horizontalAlign = ref<'left' | 'right'>('left');\n\n const instanceId = useId();\n\n const calculateAlignment = async () => {\n await nextTick();\n if (!menuWrapper.value || !panelRef.value) return;\n\n const triggerRect = menuWrapper.value.getBoundingClientRect();\n const panelWidth = panelRef.value.offsetWidth;\n const panelHeight = panelRef.value.offsetHeight;\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n // 1. VERTICAL CHECK: If opening below hits bottom, and there's room above, go TOP.\n if (triggerRect.bottom + panelHeight > viewportHeight && triggerRect.top > panelHeight) {\n verticalAlign.value = 'top';\n } else {\n verticalAlign.value = 'bottom';\n }\n\n // 2. HORIZONTAL CHECK: If opening to the right hits edge, go RIGHT (meaning align right edges).\n if (triggerRect.left + panelWidth > viewportWidth) {\n horizontalAlign.value = 'right';\n } else {\n horizontalAlign.value = 'left';\n }\n };\n\n const toggleMenu = () => {\n if (!isOpen.value) {\n globalActiveMenuId.value = instanceId;\n emit('open')\n isOpen.value = true;\n calculateAlignment();\n } else {\n closeMenu();\n }\n };\n\n const panelPositionStyles = computed(() => {\n const isVisible = isOpen.value;\n\n const v = props.align === 'top' ? 'top' : verticalAlign.value;\n const h = horizontalAlign.value;\n\n const styles: any = {\n opacity: isVisible ? '1' : '0',\n pointerEvents: isVisible ? 'auto' : 'none',\n visibility: isVisible ? 'visible' : 'hidden',\n whiteSpace: 'nowrap',\n position: 'absolute'\n };\n\n // Vertical Positioning\n if (v === 'bottom') {\n styles.top = '100%';\n styles.bottom = 'auto';\n styles.transform = isVisible ? 'translateY(12px)' : 'translateY(0px)';\n } else {\n styles.bottom = '100%';\n styles.top = 'auto';\n styles.transform = isVisible ? 'translateY(-12px)' : 'translateY(0px)';\n }\n\n if (h === 'left') {\n styles.left = '0';\n styles.right = 'auto';\n } else {\n styles.right = '0';\n styles.left = 'auto';\n }\n\n return styles;\n });\n\n // Rest of your logic...\n const closeMenu = () => {\n isOpen.value = false;\n emit('close');\n if (globalActiveMenuId.value === instanceId) globalActiveMenuId.value = null;\n };\n watch(globalActiveMenuId, (newId) => {\n if (props.ignoreGlobal) return;\n\n if (newId !== instanceId && isOpen.value) {\n closeMenu();\n }\n });\n\n useClickOutside(menuWrapper, () => {\n if (props.autoClose) {\n closeMenu()\n }\n });\n const handleSelect = (key: string) => { emit('select', key); closeMenu(); };\n\n const handleContentClick = () => {\n if (hasCustomContent.value) return\n }\n\n expose({ open: () => { globalActiveMenuId.value = instanceId; isOpen.value = true; calculateAlignment(); }, close: closeMenu });\n\n return { isOpen, handleContentClick, menuWrapper, panelRef, toggleMenu, closeMenu, handleSelect, panelPositionStyles, hasCustomContent };\n }\n});\n</script>","<template>\n <BPopup @closed=\"handleOnClosed\" :auto-close=\"!isLoading\" ref=\"popup\" no-padding>\n <div v-if=\"!card\" class=\" p-6 w-dvw md:max-w-120 flex flex-col items-center text-wrap\">\n <div class=\" w-16 h-16 rounded-full flex items-center justify-center \" :class=\"[modalColorings?.bgColor]\">\n <BIcon :icon=\"modalIcon\" class=\" w-8 h-8\" :class=\"[modalColorings?.iconColor]\" weight=\"fill\" />\n </div>\n <div class=\" mt-4 flex flex-col w-full gap-y-3 items-center select-none\">\n <div v-if=\"modalTitle.trim().length > 0\" class=\" text-label-lg text-on-surface\">{{ modalTitle }}</div>\n <div class=\" text-body-md text-on-surface/50\" v-if=\"modalText.trim().length > 0\">{{ modalText }}</div>\n </div>\n <div class=\" w-full min-w-full flex items-center mt-8 gap-x-3\">\n <div :class=\"[hasAction ? 'basis-1/2' : 'basis-full']\">\n <BButton class=\" max-w-full w-full min-w-full\" @click=\"handleAction\" :loading=\"isLoading\"\n :text=\"actionButtonText\" :type=\"primaryButtonMode.type\" :color=\"primaryButtonMode.color\" />\n </div>\n <div :class=\"[hasAction ? 'basis-1/2' : 'basis-0']\">\n <BButton class=\" max-w-full w-full min-w-full\" @click=\"closeModal\" type=\"outline\" color=\"primary\"\n :text=\"t('general.cancel')\" />\n </div>\n </div>\n </div>\n <div v-else class=\" w-dvw max-w-120\">\n <div class=\" flex items-center p-5 gap-x-2 w-full border-b border-b-outline-variant\">\n <BIcon :icon=\"modalIcon\" :class=\"[modalColorings?.iconColor]\" class=\" w-7 h-7\" weight=\"fill\" />\n <div class=\" select-none text-on-surface text-label-lg\">{{ modalTitle }}</div>\n </div>\n <div class=\"border-b text-wrap border-b-outline-variant w-full p-5 select-none\">\n <p class=\" text-body-md text-on-surface/50\">{{ modalText }}</p>\n </div>\n <div class=\" w-full flex items-center p-5 gap-x-3\">\n <BButton :text=\"actionButtonText\" :type=\"primaryButtonMode.type\" :color=\"primaryButtonMode.color\"\n :loading=\"isLoading\" @click=\"handleAction\" />\n <BButton @click=\"closeModal\" color=\"secondary\" type=\"outline\" :text=\"t('chat.permissions.notNow')\" />\n </div>\n </div>\n </BPopup>\n</template>\n<script lang=\"ts\">\nimport { computed, defineComponent, type PropType } from 'vue';\nimport { type Popup } from '~/types/components/popup';\nimport { useI18n } from '~/nuxt-shims';\nimport type { ModalState } from '~/types/components/modal';\nexport default defineComponent({\n name: 'TheModal',\n props: {\n loading: {\n type: Boolean,\n default: false,\n },\n card: {\n type: Boolean,\n default: false\n }\n },\n emits: ['cancel', 'action', 'closed'],\n setup(props, { emit, expose }) {\n const { t } = useI18n()\n const popup = ref<Popup | null>(null)\n const modalState = ref<ModalState>('success')\n const modalText = ref('')\n const modalTitle = ref('')\n const hasAction = ref(false)\n const actionButtonText = ref(t('general.confirm'))\n const isLoading = computed(() => props.loading)\n\n const modalIcon = computed(() => {\n switch (modalState.value) {\n case 'error':\n return 'PhWarningOctagon'\n case 'warning':\n return 'PhWarning'\n case 'success':\n return 'PhCheckCircle'\n }\n })\n\n const primaryButtonMode = computed(() => {\n let buttonType = ''\n let buttonColor = ''\n if (hasAction.value && modalState.value !== 'success') {\n buttonType = 'outline'\n buttonColor = modalState.value\n } else {\n buttonType = 'fill'\n buttonColor = 'primary'\n }\n return {\n color: buttonColor,\n type: buttonType\n }\n })\n\n const modalColorings = computed(() => {\n let finalColor = modalState.value === 'success' ? 'secondary' : modalState.value\n return {\n bgColor: `bg-${finalColor}/10`,\n iconColor: `fill-${finalColor}`\n }\n })\n\n const closeModal = () => {\n popup.value?.close()\n }\n\n const openModal = (title: string, description: string, color: ModalState, action: boolean = false, actionText?: string\n ) => {\n modalText.value = description\n modalTitle.value = title;\n modalState.value = color;\n hasAction.value = action;\n actionButtonText.value = actionText || t('general.confirm')\n popup.value?.open()\n }\n\n expose({\n openModal, closeModal\n })\n\n const handleAction = () => {\n if (hasAction.value) {\n emit('action')\n } else {\n closeModal()\n emit('cancel')\n }\n }\n\n\n const handleOnClosed = () => {\n emit('closed')\n }\n\n\n return {\n popup,\n modalColorings,\n modalIcon,\n isLoading,\n primaryButtonMode,\n modalTitle,\n modalText,\n actionButtonText,\n t,\n handleAction,\n closeModal,\n hasAction,\n handleOnClosed,\n }\n }\n}) \n</script>","// app/composables/.ts\nimport { ref, onMounted, onUnmounted } from 'vue';\n\nexport const useWindowSize = () => {\n const width = ref(0);\n const height = ref(0);\n\n const updateSize = () => {\n width.value = window.innerWidth;\n height.value = window.innerHeight;\n };\n\n onMounted(() => {\n updateSize(); // Initial set\n window.addEventListener('resize', updateSize);\n });\n\n onUnmounted(() => {\n window.removeEventListener('resize', updateSize);\n });\n\n return { width, height };\n};","<template>\n <ClientOnly>\n <Teleport to=\"body\">\n <div id=\"popup-el\" @mousedown.self=\"onBackdropMouseDown\" @mouseup=\"onBackdropMouseUp\"\n @touchstart.self=\"onBackdropTouchDown\" @touchend=\"onBackdropTouchUp\" :class=\"['fixed flex w-dvw h-dvh z-9999 transition-all duration-300 ease-in-out',\n isMobile ? 'items-end' : 'items-center justify-center',\n isOpen\n ? 'backdrop-blur-sm bg-[#0A0A0A]/20 dark:bg-white/20 pointer-events-auto visible'\n : 'pointer-events-none bg-[#0A0A0A]/0 dark:bg-white/0 backdrop-blur-none invisible']\">\n\n <div ref=\"tabContent\" :style=\"isMobile ? { transform: `translateY(${translateY}px)` } : {}\" :class=\"[\n 'relative bg-surface rounded-t-xl md:rounded-xl',\n isMobile ? 'w-full' : 'max-w-[90vw] lg:max-w-max',\n isDragging ? 'transition-none' : 'transition-all duration-300 ease-in-out',\n\n // FIX 2: Grouped visibility and opacity logic\n isOpen ? 'opacity-100 visible pointer-events-auto' : 'opacity-0 invisible pointer-events-none',\n\n // FIX 3: Removed p-0 toggle to prevent layout jumping during close animation\n !noPadding ? 'p-3' : 'p-0',\n\n // Desktop Animation\n !isMobile && isOpen ? 'scale-100' : (!isMobile ? 'scale-95' : ''),\n // Mobile Animation\n isMobile && isOpen ? 'translate-y-0' : (isMobile ? 'translate-y-full' : '')\n ]\">\n <div v-if=\"isMobile\" @mousedown=\"startDrag\" @touchstart=\"startDrag\"\n class=\"w-full flex justify-center pb-4 pt-2 cursor-grab active:cursor-grabbing\">\n <div class=\"h-1.5 w-12 bg-outline rounded-full\"></div>\n </div>\n <div v-if=\"hasClose || title.trim().length > 0\"\n class=\"w-full pb-3 flex justify-start gap-x-3 items-center \">\n <div v-if=\"hasClose\" @click=\"close\"\n class=\"w-7 h-7 flex items-center justify-center cursor-pointer transition-colors\">\n <BIcon icon=\"PhX\" class=\"w-4 h-4 fill-on-surface\" />\n </div>\n <div v-if=\"title.trim().length > 0\" class=\" text-label-sm text-on-surface select-none\">\n {{ title }}\n </div>\n </div>\n\n <div class=\"whitespace-nowrap text-wrap\">\n <slot></slot>\n </div>\n </div>\n </div>\n </Teleport>\n </ClientOnly>\n</template>\n\n<script lang=\"ts\">\nimport { ref, defineComponent, watch, computed, onUnmounted } from 'vue';\nimport type { Popup } from '~/types/components/popup';\nimport { useWindowSize } from '~/composables/useWindowSize'\nexport default defineComponent({\n name: 'ThePopup',\n emits: ['closed', 'close'],\n props: {\n noPadding: {\n type: Boolean,\n default: false,\n },\n hasClose: {\n type: Boolean,\n default: false,\n },\n title: {\n type: String,\n default: ''\n },\n autoClose: {\n type: Boolean,\n default: true,\n }\n },\n setup(props, { emit, expose }) {\n const isOpen = ref(false);\n const { width } = useWindowSize();\n const isMobile = computed(() => width.value < 768);\n\n const isDragging = ref(false);\n const startY = ref(0);\n const translateY = ref(0);\n const tabContent = ref<HTMLElement | null>(null);\n\n\n const open = () => {\n translateY.value = 0;\n isOpen.value = true;\n }\n\n const close = () => {\n if (!props.autoClose) return\n isOpen.value = false\n backdropDown.value = false\n emit('close')\n setTimeout(() => {\n if (!isOpen.value) {\n emit('closed')\n translateY.value = 0\n }\n }, 300)\n }\n\n const startDrag = (event: MouseEvent | TouchEvent) => {\n if (!isMobile.value) return;\n isDragging.value = true;\n startY.value = event instanceof MouseEvent ? event.clientY : event.touches[0].clientY;\n\n window.addEventListener('mousemove', onDrag);\n window.addEventListener('mouseup', endDrag);\n window.addEventListener('touchmove', onDrag);\n window.addEventListener('touchend', endDrag);\n };\n\n const onDrag = (event: MouseEvent | TouchEvent) => {\n if (!isDragging.value) return;\n const currentY = event instanceof MouseEvent ? event.clientY : event.touches[0].clientY;\n const deltaY = currentY - startY.value;\n // Only allow dragging down\n translateY.value = deltaY > 0 ? deltaY : 0;\n };\n\n const endDrag = () => {\n if (!isDragging.value) return;\n isDragging.value = false;\n\n // If dragged down enough, close it\n if (translateY.value > 100) {\n if (props.autoClose) {\n close();\n }\n } else {\n translateY.value = 0;\n }\n\n window.removeEventListener('mousemove', onDrag);\n window.removeEventListener('mouseup', endDrag);\n window.removeEventListener('touchmove', onDrag);\n window.removeEventListener('touchend', endDrag);\n };\n\n watch(isOpen, (val) => {\n if (typeof window === \"undefined\") return;\n const html = document.documentElement;\n if (val) {\n setTimeout(() => {\n html.style.overflow = 'visible';\n }, 300)\n } else {\n html.style.overflow = 'hidden';\n }\n });\n\n // Cleanup global listeners if component is destroyed while dragging\n onUnmounted(() => {\n window.removeEventListener('mousemove', onDrag);\n window.removeEventListener('mouseup', endDrag);\n window.removeEventListener('touchmove', onDrag);\n window.removeEventListener('touchend', endDrag);\n });\n\n const backdropDown = ref(false)\n\n const onBackdropMouseDown = (event: MouseEvent) => {\n // Mark that the initial press was on the backdrop\n backdropDown.value = true\n }\n\n const onBackdropMouseUp = (event: MouseEvent) => {\n // Only close if both the press and the release were on the backdrop\n if (backdropDown.value && event.target === event.currentTarget) {\n close()\n }\n backdropDown.value = false\n }\n\n // Same for touch events\n const onBackdropTouchDown = (event: TouchEvent) => {\n backdropDown.value = true\n }\n\n const onBackdropTouchUp = (event: TouchEvent) => {\n if (backdropDown.value && event.target === event.currentTarget) {\n close()\n }\n backdropDown.value = false\n }\n\n expose({ open, close } as Popup);\n\n return {\n isOpen, isMobile, isDragging, translateY, tabContent,\n open, close, startDrag, onBackdropTouchUp, onBackdropTouchDown,\n onBackdropMouseUp, onBackdropMouseDown,\n }\n }\n})\n</script>\n\n<style scoped>\n#popup-el {\n position: fixed !important;\n top: 0px !important;\n left: 0px !important;\n}\n\n/* Visibility is the key. \n Transitions work on visibility: it stays 'visible' until the timer hits 0.\n*/\n.visible {\n visibility: visible !important;\n}\n\n.invisible {\n visibility: hidden !important;\n}\n</style>","<template>\n <div :class=\"[disabled ? 'opacity-50 cursor-not-allowed' : 'opacity-100 ']\"\n class=\" w-full max-w-90 flex flex-col outline-none\" :tabindex=\"tabindex\" @keyup.tab=\"openOnTab\"\n @keydown.down.prevent=\"highlightNext\" @keydown.up.prevent=\"highlightPrev\"\n @keydown.enter.prevent=\"selectHighlighted\" @keydown.esc.prevent=\"closeDropdown\">\n\n <span v-if=\"title\" class=\" pointer-events-none text-label-md mb-1.5 select-none text-on-surface\">\n {{ title }}\n </span>\n\n <div ref=\"dropdownRef\" class=\"relative w-full\">\n\n <div @click=\"toggleDropdown\"\n class=\"h-12 w-full px-3 py-2.5 rounded-[10px] border flex items-center gap-x-1.5 transition-all duration-300 cursor-pointer \"\n :class=\"containerClasses\">\n\n <div class=\"flex-1 flex items-center gap-x-2 overflow-x-auto overflow-y-hidden hide-scrollbar h-full\">\n\n <BImage class=\" max-w-6 max-h-6 min-w-6 min-h-6 w-6 h-6 rounded-full overflow-hidden\"\n v-if=\"selectedItem?.image && selectedItem\" :src=\"selectedItem.image\" />\n <div v-if=\"selectedItem?.color && selectedItem\"\n class=\"w-6 aspect-square rounded-full shrink-0\" :style=\"{ background: selectedItem.color }\">\n </div>\n <span v-if=\"selectedItem && (!searchable || !isOpen)\"\n class=\"text-sm font-medium select-none truncate text-on-surface opacity-100 shrink-0\">\n {{ selectedItem.label }}\n </span>\n\n <span v-if=\"showPlaceholder\"\n class=\"text-sm font-medium select-none truncate text-on-surface opacity-50 shrink-0\">\n {{ placeholder }}\n </span>\n\n <input v-if=\"searchable && isOpen\" ref=\"searchInput\" v-model=\"searchQuery\" @click.stop\n @keydown.down.prevent=\"highlightNext\" @keydown.up.prevent=\"highlightPrev\"\n @keydown.enter.prevent=\"selectHighlighted\"\n class=\"flex-1 min-w-15 max-w-full bg-transparent outline-none text-sm font-medium text-on-surface placeholder:text-on-surface/50 h-full\"\n :placeholder=\"placeholder\" />\n </div>\n\n <BIcon icon=\"PhCaretDown\"\n class=\"w-5 h-5 fill-on-surface/50 shrink-0 fill-on-surface transition-transform duration-300\"\n :class=\"[isOpen ? 'rotate-180' : '', disabled ? 'opacity-40' : '']\" />\n </div>\n\n <transition name=\"dropdown-fade\">\n <div v-if=\"isOpen\" :class=\"[\n 'absolute border overflow-hidden border-outline left-0 right-0 bg-surface rounded-xl z-50 flex flex-col shadow-[0_12px_16px_-4px_rgba(13,13,18,0.08)] dark:shadow-[0_12px_16px_-4px_rgba(0,0,0,0.4)]',\n openDirection === 'up' ? 'bottom-[calc(100%+6px)] origin-bottom' : 'top-[calc(100%+6px)] origin-top'\n ]\">\n\n <div v-if=\"isLoading\" class=\"flex items-center justify-center h-18.75 w-full\">\n <BIcon icon=\"PhCircleNotch\" class=\"w-7 h-7 animate-spin fill-outline\" />\n </div>\n\n <template v-else>\n <div v-if=\"filteredOptions.length === 0 && !isLoading\"\n class=\"flex items-center justify-center gap-x-2 py-6 text-on-surface/50\">\n <span class=\"text-sm select-none font-medium\">{{\n t('general.noResultFound', {\n search: searchQuery, item: noResultText !== '' ? noResultText :\n t('general.result')\n }) }}</span>\n </div>\n\n <div v-if=\"filteredOptions.length > 0\" class=\"overflow-y-auto max-h-50 \" ref=\"optionsListRef\">\n <div\n :style=\"{ height: `${virtualizer.getTotalSize()}px`, position: 'relative', width: '100%' }\">\n <div v-for=\"virtualRow in virtualizer.getVirtualItems()\" :key=\"virtualRow.key\" :style=\"{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: `${virtualRow.size - 2}px`,\n transform: `translateY(${virtualRow.start}px)`\n }\" @click.stop=\"toggleOption(filteredOptions[virtualRow.index])\" :class=\"[\n 'flex items-center gap-x-2 px-2 cursor-pointer transition-colors duration-200 ease-in-out',\n isSelected(filteredOptions[virtualRow.index]) || highlightedIndex === virtualRow.index ? ' bg-surface-variant-2' : 'bg-transparent'\n ]\">\n\n <BImage v-if=\"filteredOptions[virtualRow.index].image\"\n :src=\"filteredOptions[virtualRow.index].image\"\n class=\"w-6 max-w-6 max-h-6 min-h-6 min-w-6 rounded-sm h-6 shrink-0 object-cover\" />\n <div v-else-if=\"filteredOptions[virtualRow.index]?.color\"\n class=\"rounded-full overflow-hidden w-6 aspect-square shrink-0\"\n :style=\"{ background: filteredOptions[virtualRow.index]?.color }\">\n </div>\n <BIcon v-else-if=\"filteredOptions[virtualRow.index].icon\"\n :icon=\"filteredOptions[virtualRow.index].icon\" class=\"w-6 h-6 shrink-0\"\n :class=\"isSelected(filteredOptions[virtualRow.index]) ? 'fill-primary' : 'fill-on-surface'\" />\n\n <span class=\"text-sm font-medium line-clamp-1 text-ellipsis overflow-hidden flex-1\"\n :class=\"isSelected(filteredOptions[virtualRow.index]) ? 'text-primary' : 'text-on-surface'\">\n {{ filteredOptions[virtualRow.index].label }}\n </span>\n\n <BIcon v-if=\"isSelected(filteredOptions[virtualRow.index])\" icon=\"PhCheck\"\n class=\"w-5 h-5 fill-primary ms-auto shrink-0\" />\n </div>\n </div>\n </div>\n </template>\n </div>\n </transition>\n </div>\n\n <div class=\"w-full overflow-hidden transition-all h-5 duration-300 ease-in-out\"\n :class=\"[message ? ' opacity-100 mt-1.5' : ' opacity-0 mt-0']\">\n <div class=\"flex items-center gap-x-1.5\">\n <BIcon v-if=\"message\" :icon=\"messageIcon\" class=\"w-4 h-4 shrink-0\" :class=\"messageColorClass\" />\n <span class=\"text-xs select-none\" :class=\"messageColorClass\">{{ message }}</span>\n </div>\n </div>\n\n </div>\n</template>\n\n<script lang=\"ts\">\n// @ts-nocheck — grandfathered legacy chat-tree type errors; lift incrementally\nimport { defineComponent, ref, computed, watch, onMounted, onUnmounted, type PropType, nextTick } from 'vue';\nimport { useI18n } from '~/nuxt-shims';\nimport { useVirtualizer } from '@tanstack/vue-virtual';\nimport type { DropdownOption } from '~/types/components/select';\n\nexport default defineComponent({\n name: 'DopeDropDown',\n emits: ['update:modelValue', 'search'],\n props: {\n modelValue: {\n type: [String, Number] as PropType<any>,\n default: ''\n },\n options: {\n type: Array as PropType<DropdownOption[]>,\n default: () => []\n },\n tabindex: { type: Number, default: 0 },\n title: { type: String, default: '' },\n placeholder: { type: String, default: 'Select...' },\n message: { type: String, default: '' },\n disabled: { type: Boolean, default: false },\n searchable: { type: Boolean, default: false },\n hasError: { type: Boolean, default: false },\n color: { type: String, default: 'primary' },\n loading: { type: Boolean, default: false },\n remoteSearch: { type: Boolean, default: false },\n noResultText: { type: String, default: '' },\n },\n setup(props, { emit }) {\n const { t } = useI18n();\n const isOpen = ref(false);\n const searchQuery = ref('');\n const dropdownRef = ref<HTMLElement | null>(null);\n const searchInput = ref<HTMLInputElement | null>(null);\n const optionsListRef = ref<HTMLElement | null>(null);\n const isLoading = computed(()=> props.loading)\n const highlightedIndex = ref(-1);\n let searchTimeout: ReturnType<typeof setTimeout> | null = null;\n\n\n const openDirection = ref<'down' | 'up'>('down');\n\n const calculatePosition = () => {\n if (!dropdownRef.value) return;\n const rect = dropdownRef.value.getBoundingClientRect();\n const spaceBelow = window.innerHeight - rect.bottom;\n const requiredSpace = 260;\n\n if (spaceBelow < requiredSpace && rect.top > requiredSpace) {\n openDirection.value = 'up';\n } else {\n openDirection.value = 'down';\n }\n };\n\n const messageColorClass = computed(() => {\n if (props.hasError || props.color === 'error') return 'text-error fill-error';\n if (props.color === 'success') return 'text-secondary fill-secondary';\n if (props.color === 'warning') return 'text-warning fill-warning';\n return 'text-on-surface/50 fill-on-surface/50';\n });\n\n const messageIcon = computed(() => {\n if (props.hasError || props.color === 'error') return 'PhWarningCircle';\n if (props.color === 'success') return 'PhCheckCircle';\n if (props.color === 'warning') return 'PhWarning';\n return 'PhInfo';\n });\n\n watch(searchQuery, (newVal) => {\n highlightedIndex.value = -1;\n if (props.remoteSearch && props.searchable) {\n if (searchTimeout) clearTimeout(searchTimeout);\n searchTimeout = setTimeout(() => { emit('search', newVal); }, 300);\n }\n });\n\n const filteredOptions = computed(() => {\n if (!props.searchable || props.remoteSearch || !searchQuery.value) return props.options;\n const query = searchQuery.value.toLowerCase();\n return props.options.filter(opt => opt.label.toLowerCase().includes(query));\n });\n\n const virtualizerOptions = computed(() => {\n const el = optionsListRef.value;\n return {\n count: filteredOptions.value.length,\n getScrollElement: () => el,\n estimateSize: () => 42,\n overscan: 5,\n };\n });\n\n const virtualizer = useVirtualizer(virtualizerOptions);\n\n const highlightNext = () => {\n if (!isOpen.value) return toggleDropdown();\n if (highlightedIndex.value < filteredOptions.value.length - 1) {\n highlightedIndex.value++;\n scrollToHighlighted();\n }\n };\n\n const highlightPrev = () => {\n if (!isOpen.value) return;\n if (highlightedIndex.value > 0) {\n highlightedIndex.value--;\n scrollToHighlighted();\n }\n };\n\n const selectHighlighted = () => {\n if (!isOpen.value) return;\n if (highlightedIndex.value >= 0 && filteredOptions.value[highlightedIndex.value]) {\n toggleOption(filteredOptions.value[highlightedIndex.value]);\n }\n };\n\n const scrollToHighlighted = () => {\n nextTick(() => {\n if (highlightedIndex.value >= 0 && virtualizer.value) {\n virtualizer.value.scrollToIndex(highlightedIndex.value, { align: 'auto' });\n }\n });\n };\n\n const isSelected = (option: DropdownOption) => {\n return props.modelValue === option.value;\n };\n\n const selectedItem = computed(() => {\n return props.options.find(opt => opt.value === props.modelValue) || null;\n });\n\n const showPlaceholder = computed(() => {\n if (props.searchable && isOpen.value) return false;\n return !selectedItem.value;\n });\n\n const toggleDropdown = () => {\n if (props.disabled) return;\n if (!isOpen.value) {\n calculatePosition();\n isOpen.value = true;\n\n if (selectedItem.value) {\n const idx = filteredOptions.value.findIndex(opt => opt.value === selectedItem.value!.value);\n highlightedIndex.value = idx >= 0 ? idx : 0;\n } else {\n highlightedIndex.value = 0;\n }\n\n if (props.searchable) {\n setTimeout(() => searchInput.value?.focus(), 50);\n if (props.remoteSearch && !searchQuery.value) emit('search', '');\n }\n\n nextTick(() => {\n scrollToHighlighted();\n });\n } else {\n closeDropdown();\n }\n };\n\n const closeDropdown = () => {\n isOpen.value = false;\n searchQuery.value = '';\n highlightedIndex.value = -1;\n };\n\n const toggleOption = (option: DropdownOption) => {\n emit('update:modelValue', option.value);\n closeDropdown();\n };\n\n const handleClickOutside = (event: MouseEvent) => {\n if (isOpen.value && dropdownRef.value && !dropdownRef.value.contains(event.target as Node)) {\n closeDropdown();\n }\n };\n\n onMounted(() => document.addEventListener('mousedown', handleClickOutside));\n onUnmounted(() => document.removeEventListener('mousedown', handleClickOutside));\n const openOnTab = () => {\n if (!isOpen.value) toggleDropdown();\n };\n\n const containerClasses = computed(() => {\n const classes = [];\n const c = props.color;\n const isError = props.hasError || c === 'error';\n\n if (isOpen.value) {\n classes.push('bg-surface');\n } else if (isError) {\n classes.push('bg-error/10');\n } else if (c === 'warning') {\n classes.push('bg-warning/10');\n } else if (c === 'success' || c === 'secondary') {\n classes.push('bg-secondary/10');\n } else {\n classes.push('bg-surface-rest');\n }\n\n if (isError) {\n classes.push('border-error');\n } else if (c === 'warning') {\n classes.push('border-warning');\n } else if (c === 'success' || c === 'secondary') {\n classes.push('border-secondary');\n } else if (isOpen.value) {\n classes.push('border-primary');\n } else {\n classes.push('border-outline');\n }\n\n if (isOpen.value) {\n classes.push('shadow-[0_8px_10px_-3px_rgba(13,13,18,0.05)] dark:shadow-[0_8px_10px_-3px_rgba(0,0,0,0.26)]');\n } else {\n classes.push('shadow-none');\n }\n\n if (props.disabled) {\n classes.push('opacity-50 pointer-events-none');\n }\n\n return classes;\n });\n\n return {\n t, isOpen, searchQuery, dropdownRef, searchInput, optionsListRef, highlightedIndex,\n filteredOptions, isSelected,\n selectedItem, showPlaceholder,\n messageColorClass, messageIcon, virtualizer,\n toggleDropdown, closeDropdown, toggleOption,\n highlightNext, highlightPrev, selectHighlighted, openOnTab, containerClasses,\n openDirection,isLoading,\n };\n }\n});\n</script>\n\n<style scoped>\n.dropdown-fade-enter-active,\n.dropdown-fade-leave-active {\n transition: all 0.2s ease-in-out;\n}\n\n.dropdown-fade-enter-from,\n.dropdown-fade-leave-to {\n opacity: 0;\n transform: scaleY(0.95);\n}\n\n.hide-scrollbar::-webkit-scrollbar {\n display: none;\n}\n\n.hide-scrollbar {\n -ms-overflow-style: none;\n scrollbar-width: none;\n}\n</style>\n","<template>\n <div class=\"flex flex-col gap-y-2\">\n <div class=\"flex items-center gap-x-5 select-none text-label-md relative\">\n <div v-for=\"(tab, index) in tabs\" :key=\"index\" ref=\"tabRefs\" @click=\"setTab(index)\"\n class=\"cursor-pointer transition-colors duration-200 py-1\"\n :class=\"[modelValue === index ? 'text-on-surface' : 'text-on-surface/50']\">\n {{ tab }}\n </div>\n </div>\n\n <div class=\"w-full relative h-0.5 rounded-full bg-outline-variant\">\n <div class=\"absolute bottom-0 h-full bg-gradient-primary-secondary rounded-full transition-all duration-200 ease-in-out\"\n :style=\"indicatorStyle\"></div>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, type PropType, ref, watch, onMounted, nextTick, onBeforeUnmount } from 'vue';\n\nexport default defineComponent({\n name: 'TheTab',\n props: {\n modelValue: {\n type: Number,\n default: 0\n },\n tabs: {\n type: Array as PropType<string[]>,\n default: () => []\n }\n },\n emits: ['update:modelValue'],\n setup(props, { emit }) {\n const tabRefs = ref<HTMLElement[]>([]);\n const indicatorStyle = ref({\n width: '0px',\n left: '0px'\n });\n\n const updateIndicator = () => {\n const activeEl = tabRefs.value[props.modelValue];\n if (activeEl) {\n const width = activeEl.offsetWidth;\n const left = activeEl.offsetLeft;\n\n indicatorStyle.value = {\n width: `${width}px`,\n left: `${left}px`\n };\n }\n };\n\n const setTab = (index: number) => {\n emit('update:modelValue', index);\n };\n\n watch(() => props.modelValue, () => {\n nextTick(() => {\n updateIndicator();\n });\n });\n\n onMounted(() => {\n nextTick(() => {\n updateIndicator();\n });\n\n setTimeout(updateIndicator, 100);\n\n window.addEventListener('resize', updateIndicator);\n });\n\n onBeforeUnmount(() => {\n window.removeEventListener('resize', updateIndicator);\n });\n\n return {\n setTab,\n tabRefs,\n indicatorStyle\n };\n }\n})\n</script>\n\n<style scoped>\n.bg-gradient-primary-secondary {\n min-height: 2px;\n z-index: 10;\n}\n\n.transition-all {\n will-change: left, width;\n}\n</style>\n","<template>\n <Teleport to=\"body\">\n <ClientOnly>\n <div class=\"w-full bg-transparent pointer-events-none md:max-w-203 max-w-dvw p-5 fixed bottom-0 z-10000 \">\n <!-- \n OUTER DIV: Preserves your exact original positioning and mount animation.\n This prevents the drag logic from breaking Tailwind's coordinate system.\n -->\n <div class=\"transition-all duration-300 ease-in-out pointer-events-auto\"\n :class=\"isOpen ? 'translate-y-0 opacity-100' : 'translate-y-15 opacity-0'\">\n <!-- \n INNER DIV: Handles the drag transform, background color, and touch events.\n -->\n <div class=\"py-3 px-4 rounded-xl flex items-center pointer-events-auto gap-x-2 touch-none select-none cursor-grab active:cursor-grabbing md:cursor-default md:active:cursor-default\"\n :class=\"[\n backgroundColor,\n isDragging ? 'transition-none' : 'transition-transform duration-300 ease-in-out'\n ]\" :style=\"{ transform: `translateY(${dragY}px)` }\" @pointerdown=\"onPointerDown\"\n @pointermove=\"onPointerMove\" @pointerup=\"onPointerUp\" @pointercancel=\"onPointerUp\">\n <BIcon :icon=\"toastIcon\" class=\"w-5 h-5 fill-white shrink-0\" />\n <div class=\"flex-1 select-none text-white text-label-md\">{{ toastMessage }}</div>\n <BIcon icon=\"PhX\" @click=\"closeToast\"\n class=\"cursor-pointer w-5 h-5 fill-white shrink-0 hover:opacity-70 transition-opacity\" />\n </div>\n </div>\n </div>\n </ClientOnly>\n </Teleport>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed } from 'vue';\nimport { useWindowSize } from '~/nuxt-shims';\nconst isOpen = ref(false);\nconst toastType = ref<'success' | 'error' | 'warning' | 'info'>('info');\nconst toastMessage = ref('');\nlet timer: any = null;\nconst currentDuration = ref(4000);\nconst { width } = useWindowSize()\n// Drag State\nconst dragY = ref(0);\nconst isDragging = ref(false);\nlet startY = 0;\nconst threshold = 50; // Drag down 50px to close\nconst isMobile = computed(() => width.value < 768)\nconst onPointerDown = (e: PointerEvent) => {\n if (!isMobile.value) return\n isDragging.value = true;\n startY = e.clientY;\n\n // Pause auto-close timer while holding\n if (timer) clearTimeout(timer);\n\n // Capture pointer so fast swipes don't break tracking\n (e.currentTarget as HTMLElement).setPointerCapture(e.pointerId);\n};\n\n\nconst onPointerMove = (e: PointerEvent) => {\n if (!isMobile.value) return\n if (!isDragging.value) return;\n\n const deltaY = e.clientY - startY;\n // Only allow dragging downwards to dismiss\n if (deltaY > 0) {\n dragY.value = deltaY;\n }\n};\n\nconst onPointerUp = () => {\n if (!isMobile.value) return\n if (!isDragging.value) return;\n isDragging.value = false;\n\n // Check if user dragged past the closing threshold\n if (dragY.value > threshold) {\n closeToast();\n } else {\n // Snap back to original position\n dragY.value = 0;\n\n // Resume the auto-close timer\n timer = setTimeout(() => {\n closeToast();\n }, currentDuration.value);\n }\n};\n\nconst openToast = (\n message: string,\n type: 'success' | 'error' | 'warning' | 'info' = 'info',\n duration: number = 4000\n) => {\n if (timer) clearTimeout(timer);\n\n currentDuration.value = duration;\n dragY.value = 0;\n isDragging.value = false;\n\n toastType.value = type;\n toastMessage.value = message;\n isOpen.value = true;\n\n timer = setTimeout(() => {\n closeToast();\n }, duration);\n};\n\nconst closeToast = () => {\n isOpen.value = false;\n if (timer) clearTimeout(timer);\n setTimeout(() => {\n dragY.value = 0;\n }, 300);\n};\n\nconst backgroundColor = computed(() => {\n switch (toastType.value) {\n case 'success': return 'bg-primary';\n case 'error': return 'bg-error';\n case 'warning': return 'bg-orange-500';\n case 'info': return 'bg-on-surface';\n default: return 'bg-on-surface';\n }\n});\n\nconst toastIcon = computed(() => {\n switch (toastType.value) {\n case 'success': return 'PhCheckCircle';\n case 'error': return 'PhWarningOctagon';\n case 'warning': return 'PhWarning';\n case 'info': return 'PhInfo';\n default: return 'PhInfo';\n }\n});\n\n// Expose methods for the composable\ndefineExpose({\n openToast,\n closeToast\n});\n</script>","<template>\n <div ref=\"parentRef\" class=\"w-full h-full overflow-y-auto \" :class=\"[scrollbar ? '' : 'hide-scrollbar']\">\n <div :style=\"{\n height: `${virtualizer.getTotalSize()}px`,\n width: '100%',\n position: 'relative',\n }\">\n <div v-for=\"virtualRow in virtualizer.getVirtualItems()\" :key=\"virtualRow.key\"\n :data-index=\"virtualRow.index\" :ref=\"el => virtualizer.measureElement(el as HTMLElement)\" :style=\"{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n transform: `translateY(${virtualRow.start}px)`,\n }\">\n <slot name=\"item\" :item=\"items[virtualRow.index]\" :index=\"virtualRow.index\" />\n </div>\n </div>\n\n <div v-show=\"pagination && hasNextPage\" ref=\"sentinelRef\" class=\"w-full h-13 flex items-center justify-center\">\n <slot name=\"loader\" v-if=\"hasNextPage\">\n <LottieAnimation :animation-data=\"loading\" :height=\"52\" :width=\"52\" :loop=\"true\" :auto-play=\"true\" />\n </slot>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n// @ts-nocheck — grandfathered legacy chat-tree type errors; lift incrementally\nimport { ref, onMounted, onUnmounted, watch } from 'vue';\nimport { useVirtualizer } from '@tanstack/vue-virtual';\nimport loading from '~/assets/lottie/loading.json'\nconst props = withDefaults(defineProps<{\n items: any[];\n loading: boolean;\n hasNextPage: boolean;\n scrollbar?: boolean;\n pagination?: boolean;\n}>(), {\n scrollbar: false,\n pagination: true\n});\nconst emit = defineEmits(['load-more']);\n\nconst parentRef = ref<HTMLElement | null>(null);\nconst sentinelRef = ref<HTMLElement | null>(null);\nlet observer: IntersectionObserver | null = null;\n\nconst virtualizer = useVirtualizer({\n get count() { return props.items.length },\n getScrollElement: () => parentRef.value,\n // Internal default guess. TanStack will correct this instantly upon rendering.\n estimateSize: () => 45,\n overscan: 10,\n});\n\ndefineExpose({\n resetScroll() {\n if (parentRef.value) {\n parentRef.value.scrollTop = 0;\n }\n },\n});\n\n// Auto-trigger load-more when reaching the bottom\nonMounted(() => {\n observer = new IntersectionObserver(([entry]) => {\n if (entry.isIntersecting && props.hasNextPage && !props.loading && props.pagination) {\n emit('load-more');\n }\n }, { threshold: 0.1 });\n\n if (sentinelRef.value) observer.observe(sentinelRef.value);\n});\n\nonUnmounted(() => {\n if (observer) observer.disconnect();\n});\n</script>","import { defineStore } from \"pinia\";\nimport { ref, computed } from \"vue\";\nimport { useEventBus } from \"@vueuse/core\";\nimport type {\n Message,\n Contact,\n ExtendedMessage,\n FilterKeys,\n UserRoleKey,\n RequestProvider,\n ServiceRequest,\n AccessRequest,\n} from \"~/types/chat\";\nimport type { Provider, Service } from \"~/types/service\";\nimport type { Medication } from \"~/types/medication\";\nimport type { CallMember } from \"~/types/call\";\nimport type { DropdownOption } from \"~/types/components/select\";\nimport type { HostAdapter } from \"~/adapter\";\nimport type { CallKind } from \"~/adapter\";\nimport { useDate, useI18n, useAppToast, useAppPermissions } from \"~/nuxt-shims\";\nimport { useWindowSize } from \"~/composables/useWindowSize\";\n\nexport interface CreateStoresOptions {\n adapter: HostAdapter;\n}\n\nexport type AppStores = ReturnType<typeof createStores>;\n\nexport const createStores = ({ adapter }: CreateStoresOptions) => {\n const useChatStore = defineStore(\"chat\", () => {\n const { height: windowHeight } = useWindowSize();\n\n const chatsPerPage = computed(() => {\n const h = windowHeight.value || 800;\n return Math.floor((h - 138) / 76) + 1;\n });\n\n const currentUserId = ref<string>(\"\");\n const chosenRole = ref<UserRoleKey>(\"user\");\n const currentUserBirthDate = ref<Date | null>(\n new Date(\"1999-11-25T00:00:00Z\"),\n );\n const activeConversationId = ref<string | null>(null);\n const profileViewOpen = ref(false);\n const messagesMap = ref<Record<string, Message[]>>({});\n const typingByConversation = ref<Record<string, string | null>>({});\n\n const conversationStates = ref<\n Record<\n FilterKeys,\n {\n data: Contact[];\n loading: boolean;\n page: number;\n hasNextPage: boolean;\n }\n >\n >({\n \"\": { data: [], loading: false, page: 0, hasNextPage: true },\n online: { data: [], loading: false, page: 0, hasNextPage: true },\n ended: { data: [], loading: false, page: 0, hasNextPage: true },\n active: { data: [], loading: false, page: 0, hasNextPage: true },\n });\n\n const setSelectedChat = (id: string | null) => {\n activeConversationId.value = id;\n profileViewOpen.value = false;\n };\n\n const openProfile = () => {\n profileViewOpen.value = true;\n };\n\n const closeProfile = () => {\n profileViewOpen.value = false;\n };\n\n const fetchConversations = async (\n filter: FilterKeys = \"\",\n page = 1,\n search = \"\",\n ) => {\n const state = conversationStates.value[filter];\n if (state.loading) return;\n state.loading = true;\n try {\n const result = await adapter.chat.fetchContacts({\n filter,\n page,\n pageSize: chatsPerPage.value,\n search,\n });\n state.data =\n page === 1 ? result.data : [...state.data, ...result.data];\n state.page = page;\n state.hasNextPage = result.hasNextPage;\n } finally {\n state.loading = false;\n }\n };\n\n const loadNextPage = async (filter: FilterKeys) => {\n const state = conversationStates.value[filter];\n if (state.hasNextPage && !state.loading) {\n await fetchConversations(filter, state.page + 1);\n }\n };\n\n const isSkeletonId = (id: string) => id.startsWith(\"skeleton-\");\n const isTempId = (id: string) => id.startsWith(\"tmp-\");\n\n const getDisplayedContacts = (filter: FilterKeys): Contact[] => {\n const state = conversationStates.value[filter];\n if (state.loading && state.page === 0) {\n return Array.from(\n { length: chatsPerPage.value },\n (_, i) =>\n ({\n id: `skeleton-${i}`,\n name: \"در حال\",\n lastName: \"بارگذاری...\",\n imageUrl: \"https://i.pravatar.cc/150?u=loading\",\n isOnline: false,\n lastSeen: new Date(),\n isActive: true,\n unreadCount: 0,\n serviceType: \"chat\",\n userType: [\"user\"],\n lastMessage: {\n id: \"skeleton-msg\",\n conversationId: `skeleton-${i}`,\n date: new Date(),\n type: \"text\",\n text: \"در حال بارگذاری پیام...\",\n isEdited: false,\n senderId: \"skeleton-sender\",\n isSent: true,\n isRead: true,\n },\n }) as Contact,\n );\n }\n return [...state.data].sort((a, b) => {\n const dateA = a.lastMessage ? new Date(a.lastMessage.date).getTime() : 0;\n const dateB = b.lastMessage ? new Date(b.lastMessage.date).getTime() : 0;\n return dateB - dateA;\n });\n };\n\n const getContactById = (id: string): Contact | null => {\n for (const key in conversationStates.value) {\n const contact = conversationStates.value[key as FilterKeys].data.find(\n (c) => c.id === id,\n );\n if (contact) return contact;\n }\n return null;\n };\n\n const markAsRead = (conversationId: string) => {\n for (const key in conversationStates.value) {\n const contact = conversationStates.value[key as FilterKeys].data.find(\n (c) => c.id === conversationId,\n );\n if (contact) {\n contact.unreadCount = 0;\n if (contact.lastMessage) contact.lastMessage.isRead = true;\n }\n }\n void adapter.chat.markRead(conversationId);\n };\n\n const updateLastMessage = (conversationId: string, message: Message) => {\n for (const key in conversationStates.value) {\n const state = conversationStates.value[key as FilterKeys];\n const contact = state.data.find((c) => c.id === conversationId);\n if (contact) contact.lastMessage = { ...message };\n }\n };\n\n const patchLastMessage = (\n conversationId: string,\n messageId: string,\n updates: Partial<Message>,\n ) => {\n for (const key in conversationStates.value) {\n const contact = conversationStates.value[key as FilterKeys].data.find(\n (c) => c.id === conversationId,\n );\n if (\n contact &&\n contact.lastMessage &&\n contact.lastMessage.id === messageId\n ) {\n contact.lastMessage = { ...contact.lastMessage, ...updates };\n }\n }\n };\n\n const unreadCount = computed(() => {\n const uniqueContacts = new Map<string, Contact>();\n for (const key in conversationStates.value) {\n const state = conversationStates.value[key as FilterKeys];\n state.data.forEach((c) => {\n if (!uniqueContacts.has(c.id)) uniqueContacts.set(c.id, c);\n });\n }\n return Array.from(uniqueContacts.values()).filter(\n (c) => c.lastMessage && c.lastMessage.isRead === false,\n ).length;\n });\n\n return {\n currentUserId,\n chosenRole,\n currentUserBirthDate,\n conversationStates,\n activeConversationId,\n profileViewOpen,\n messagesMap,\n typingByConversation,\n chatsPerPage,\n unreadCount,\n setSelectedChat,\n openProfile,\n closeProfile,\n fetchConversations,\n loadNextPage,\n getDisplayedContacts,\n getContactById,\n markAsRead,\n updateLastMessage,\n patchLastMessage,\n };\n });\n\n const useServiceStore = defineStore(\"service\", () => {\n const isLoading = ref(false);\n const isLoadingServices = ref(false);\n const currentResultPage = ref(1);\n const searchText = ref(\"\");\n const selectedServiceId = ref<string | null>(null);\n const providersPerPage = ref(10);\n const hasProviderNextPage = ref(true);\n\n const services = ref<Service[]>([]);\n\n const createSkeletonProvider = (i: number = 0): Provider =>\n ({\n id: `skeleton-provider-${i}`,\n name: \"...\",\n lastName: \"...\",\n isOnline: false,\n lastSeen: new Date(),\n imageUrl: \"\",\n phoneNumber: \"\",\n isActive: false,\n birthDate: new Date(),\n serviceType: \"chat\",\n userType: [\"business\"],\n expertise: \"...\",\n type: \"public\",\n service: {} as Service,\n clinics: [],\n fellowships: [],\n }) as Provider;\n\n const providers = ref<Provider[]>(\n new Array(10).fill(null).map((_, i) => createSkeletonProvider(i)),\n );\n\n const resetProviderData = () => {\n providers.value = new Array(10).fill(null).map((_, i) => createSkeletonProvider(i));\n currentResultPage.value = 1;\n hasProviderNextPage.value = true;\n };\n\n const fetchServices = async () => {\n isLoadingServices.value = true;\n try {\n services.value = await adapter.service.fetchServices();\n } finally {\n isLoadingServices.value = false;\n }\n };\n\n const fetchProviders = async (\n isLoadMore = false,\n serviceId?: string,\n searchString?: string,\n ) => {\n if (isLoading.value || (!hasProviderNextPage.value && isLoadMore)) return;\n isLoading.value = true;\n const effectiveServiceId = serviceId ?? selectedServiceId.value;\n if (!isLoadMore) resetProviderData();\n try {\n const result = await adapter.service.fetchProviders({\n serviceId: effectiveServiceId || \"\",\n page: currentResultPage.value,\n pageSize: providersPerPage.value,\n search: searchString,\n });\n providers.value =\n currentResultPage.value === 1\n ? result.data\n : [...providers.value, ...result.data];\n hasProviderNextPage.value = result.hasNextPage;\n currentResultPage.value++;\n } finally {\n isLoading.value = false;\n }\n };\n\n return {\n isLoading,\n isLoadingServices,\n currentResultPage,\n searchText,\n selectedServiceId,\n providersPerPage,\n hasProviderNextPage,\n services,\n providers,\n fetchServices,\n fetchProviders,\n resetProviderData,\n };\n });\n\n const useChatActionStore = defineStore(\"chatAction\", () => {\n const { t } = useI18n();\n const { openToast } = useAppToast();\n const { formatDateShort, formatTime } = useDate();\n const chatStore = useChatStore();\n const serviceStore = useServiceStore();\n\n const uploadProgress = ref<\n Map<string, { progress: number; uploaded: number; total: number }>\n >(new Map());\n\n const processingActions = ref(new Map<string, string>());\n\n const isActionBusy = (messageId: string, actionKey: string) =>\n processingActions.value.get(messageId) === actionKey;\n\n const isSelectMode = ref(false);\n const selectedMessages = ref<Map<string, ExtendedMessage>>(new Map());\n const isMenuOpen = ref(false);\n const replyingTo = ref<ExtendedMessage | null>(null);\n const editingMessage = ref<ExtendedMessage | null>(null);\n const editWindowHours = ref(6);\n\n const deleteBus = useEventBus<string[]>(\"chat-delete\");\n const sendBus = useEventBus<Message[]>(\"chat-send\");\n const editBus = useEventBus<ExtendedMessage>(\"edit-message\");\n const personalInfoBus = useEventBus<string>(\"personal-info-request\");\n const prescriptionBus = useEventBus<string>(\"prescription\");\n const updateBus = useEventBus<{ id: string; updates: Partial<Message> }>(\n \"chat-update\",\n );\n\n const triggerPersonalInfoRequest = (conversationId: string) => {\n personalInfoBus.emit(conversationId);\n };\n\n const triggerPrescription = (conversationId: string) => {\n prescriptionBus.emit(conversationId);\n };\n\n const selectedArray = computed(() =>\n Array.from(selectedMessages.value.values()),\n );\n const canReply = computed(() => selectedMessages.value.size <= 1);\n const canEdit = computed(() => {\n if (selectedMessages.value.size !== 1) return false;\n const msg = selectedArray.value[0];\n if (!msg) return false;\n const isMine = msg.senderId === chatStore.currentUserId;\n const hoursPassed =\n (Date.now() - new Date(msg.date).getTime()) / (1000 * 60 * 60);\n return isMine && hoursPassed < editWindowHours.value;\n });\n const canDelete = computed(() => {\n if (selectedMessages.value.size === 0) return false;\n return selectedArray.value.every((msg) => {\n const isMine = msg.senderId === chatStore.currentUserId;\n const hoursPassed =\n (Date.now() - new Date(msg.date).getTime()) / (1000 * 60 * 60);\n return isMine && hoursPassed < editWindowHours.value;\n });\n });\n\n const clearActions = () => {\n isSelectMode.value = false;\n selectedMessages.value.clear();\n replyingTo.value = null;\n editingMessage.value = null;\n };\n\n const triggerDelete = async (specificIds?: string[]) => {\n const targets = specificIds?.length\n ? specificIds\n : selectedArray.value.map((m) => m.id);\n if (targets.length === 0) return;\n\n targets.forEach((id) =>\n processingActions.value.set(id, \"cancel-request\"),\n );\n deleteBus.emit(targets);\n clearActions();\n\n try {\n await adapter.chatAction.deleteMessages(targets);\n } finally {\n targets.forEach((id) => processingActions.value.delete(id));\n }\n };\n\n const handleRemoteAction = async (\n messageId: string,\n actionKey: string,\n apiCall: () => Promise<void>,\n ) => {\n processingActions.value.set(messageId, actionKey);\n try {\n await apiCall();\n } finally {\n processingActions.value.delete(messageId);\n }\n };\n\n const sendMessage = async (messages: Message[]) => {\n const tempMessages = messages.map((m) => ({\n ...m,\n id: `tmp-${crypto.randomUUID()}`,\n isSent: false,\n }));\n\n sendBus.emit(tempMessages);\n if (tempMessages.length > 0) {\n const latest = tempMessages[tempMessages.length - 1]!;\n chatStore.updateLastMessage(latest.conversationId, latest);\n }\n\n await Promise.all(\n tempMessages.map(async (tempMsg) => {\n const tracksProgress = tempMsg.type !== \"text\";\n try {\n const canonical = await adapter.chatAction.sendMessage(tempMsg, {\n onProgress: tracksProgress\n ? (e) => {\n if (e.progress >= 100) {\n uploadProgress.value.delete(tempMsg.id);\n } else {\n uploadProgress.value.set(tempMsg.id, {\n progress: e.progress,\n uploaded: e.uploaded,\n total: e.total,\n });\n }\n }\n : undefined,\n });\n\n uploadProgress.value.delete(tempMsg.id);\n const updates = { id: canonical.id, isSent: true };\n updateBus.emit({ id: tempMsg.id, updates });\n chatStore.patchLastMessage(tempMsg.conversationId, tempMsg.id, updates);\n } catch {\n uploadProgress.value.delete(tempMsg.id);\n updateBus.emit({ id: tempMsg.id, updates: { isSent: false } });\n chatStore.patchLastMessage(tempMsg.conversationId, tempMsg.id, {\n isSent: false,\n });\n }\n }),\n );\n };\n\n const saveEditMessage = async (id: string, text: string) => {\n const conversationId = editingMessage.value?.conversationId;\n\n updateBus.emit({ id, updates: { text, isSent: false } });\n if (conversationId)\n chatStore.patchLastMessage(conversationId, id, { text, isSent: false });\n\n clearActions();\n\n try {\n await adapter.chatAction.editMessage(id, text);\n updateBus.emit({ id, updates: { isSent: true, isEdited: true } });\n if (conversationId)\n chatStore.patchLastMessage(conversationId, id, {\n isSent: true,\n isEdited: true,\n });\n } catch {\n updateBus.emit({ id, updates: { isSent: false } });\n if (conversationId)\n chatStore.patchLastMessage(conversationId, id, { isSent: false });\n }\n };\n\n const triggerEdit = (message: ExtendedMessage) => {\n editingMessage.value = message;\n editBus.emit(editingMessage.value);\n };\n\n const toggleSelection = (message: ExtendedMessage) => {\n const newMap = new Map(selectedMessages.value);\n if (newMap.has(message.id)) {\n newMap.delete(message.id);\n if (newMap.size === 0) isSelectMode.value = false;\n } else {\n newMap.set(message.id, message);\n }\n selectedMessages.value = newMap;\n };\n\n const startSelectMode = (message: ExtendedMessage) => {\n isSelectMode.value = true;\n const newMap = new Map();\n newMap.set(message.id, message);\n selectedMessages.value = newMap;\n };\n\n const copyMessageText = () => {\n const textToCopy = selectedArray.value\n .map((msg) => {\n const isMine = msg.senderId === chatStore.currentUserId;\n const senderName = isMine\n ? t(\"chat.you\")\n : msg.contact?.name || \"User\";\n const dateTime = `${formatDateShort(msg.date)}, ${formatTime(msg.date)}`;\n const content =\n msg.text ||\n (msg.imageUrl ? \"[Image]\" : msg.voiceUrl ? \"[Voice]\" : \"[File]\");\n return `${senderName} [${dateTime}]:\\n${content}`;\n })\n .join(\"\\n\\n\");\n\n navigator.clipboard.writeText(textToCopy).then(() => {\n openToast(t(\"chat.copiedMessage\"), \"success\");\n });\n clearActions();\n };\n\n const sendServiceRequest = (\n conversationId: string,\n serviceId: string,\n serviceLabel: string,\n selectedProviders: Provider[],\n ) => {\n const isAutoSelect = selectedProviders.length === 0;\n const requestStatus = isAutoSelect ? \"searching\" : \"pending\";\n\n const mappedProviders: RequestProvider[] = selectedProviders.map((p) => ({\n ...p,\n status: \"pending\",\n }));\n\n const fullServiceData = serviceStore.services.find(\n (s) => s.id === serviceId,\n );\n\n const newRequestMessage: Message = {\n id: `tmp-${crypto.randomUUID()}`,\n conversationId,\n date: new Date(),\n type: \"text\",\n senderId: chatStore.currentUserId,\n isSent: false,\n isRead: false,\n isEdited: false,\n repliedTo: null as any,\n request: {\n id: `tmp-${crypto.randomUUID()}`,\n type: \"add-person\",\n request: {\n ...fullServiceData,\n id: serviceId,\n label: serviceLabel,\n status: requestStatus,\n provider: mappedProviders,\n service: fullServiceData,\n } as ServiceRequest,\n },\n };\n\n void sendMessage([newRequestMessage]);\n };\n\n const sendPersonalInfoRequest = (conversationId: string) => {\n const newRequestMessage: Message = {\n id: `tmp-${crypto.randomUUID()}`,\n conversationId,\n date: new Date(),\n type: \"text\",\n senderId: chatStore.currentUserId,\n isSent: false,\n isRead: false,\n isEdited: false,\n repliedTo: null as any,\n request: {\n id: `tmp-${crypto.randomUUID()}`,\n type: \"personal-info\",\n request: {\n id: `tmp-${crypto.randomUUID()}`,\n date: new Date(),\n status: \"pending\",\n } as AccessRequest,\n },\n };\n\n void sendMessage([newRequestMessage]);\n };\n\n const handleAccessResponse = async (\n messageId: string,\n conversationId: string,\n key: \"confirm-access\" | \"reject-access\",\n currentRequest: any,\n ) => {\n processingActions.value.set(messageId, key);\n try {\n const decision = key === \"confirm-access\" ? \"approved\" : \"rejected\";\n await adapter.chatAction.respondToAccessRequest(messageId, decision);\n\n const updatedRequest = {\n ...currentRequest,\n request: { ...currentRequest.request, status: decision },\n };\n\n updateBus.emit({ id: messageId, updates: { request: updatedRequest } });\n chatStore.patchLastMessage(conversationId, messageId, {\n request: updatedRequest,\n });\n } catch (error) {\n console.error(\"Action failed\", error);\n } finally {\n processingActions.value.delete(messageId);\n }\n };\n\n return {\n isSelectMode,\n selectedMessages,\n isMenuOpen,\n replyingTo,\n editingMessage,\n editWindowHours,\n selectedArray,\n canReply,\n canEdit,\n canDelete,\n deleteBus,\n sendBus,\n updateBus,\n triggerDelete,\n sendMessage,\n saveEditMessage,\n triggerEdit,\n toggleSelection,\n startSelectMode,\n clearActions,\n copyMessageText,\n editBus,\n uploadProgress,\n triggerPersonalInfoRequest,\n sendServiceRequest,\n prescriptionBus,\n sendPersonalInfoRequest,\n triggerPrescription,\n personalInfoBus,\n processingActions,\n isActionBusy,\n handleRemoteAction,\n handleAccessResponse,\n };\n });\n\n const useMedicationStore = defineStore(\"medication\", () => {\n const { locale } = useI18n();\n\n const medications = ref<Medication[]>([]);\n const searchResults = ref<Medication[]>([]);\n const isLoading = ref(false);\n let debounceTimeout: ReturnType<typeof setTimeout> | null = null;\n let searchToken = 0;\n\n const mapToDropdown = (med: Medication): DropdownOption => ({\n label: String(locale.value === \"en\" ? med.englishTitle : med.title),\n value: med.id,\n });\n\n const medicationOptions = computed((): DropdownOption[] =>\n medications.value.map((med) => mapToDropdown(med)),\n );\n\n const getMedicationOptionById = computed(\n () =>\n (id: string): DropdownOption | null => {\n const med = medications.value.find((m) => m.id === id);\n return med ? mapToDropdown(med) : null;\n },\n );\n\n const fetchMedications = async () => {\n medications.value = await adapter.medication.fetchMedications();\n };\n\n const searchMedications = (query: string) => {\n if (debounceTimeout) clearTimeout(debounceTimeout);\n\n if (!query.trim()) {\n searchResults.value = [];\n isLoading.value = false;\n return;\n }\n\n isLoading.value = true;\n const token = ++searchToken;\n\n debounceTimeout = setTimeout(async () => {\n try {\n const results = await adapter.medication.searchMedications(query);\n if (token === searchToken) {\n searchResults.value = results;\n }\n } finally {\n if (token === searchToken) {\n isLoading.value = false;\n }\n }\n }, 500);\n };\n\n return {\n medications,\n searchResults,\n isLoading,\n medicationOptions,\n getMedicationOptionById,\n fetchMedications,\n searchMedications,\n };\n });\n\n const useCallStore = defineStore(\"call\", () => {\n const chatStore = useChatStore();\n const { checkMediaStatus, requestWithPopup } = useAppPermissions();\n\n const boardPages = ref<{ data: any[]; history: any[]; redo: any[] }[]>([\n { data: [], history: [], redo: [] },\n ]);\n const boardSelectedPage = ref(0);\n const boardSelectedColor = ref(\"#2C2727\");\n const boardBrushSize = ref(3);\n const boardHistory = ref<any[]>([]);\n const boardRedoHistory = ref<any[]>([]);\n\n const isPiP = ref(false);\n\n const isActive = ref(false);\n const localStream = ref<MediaStream | null>(null);\n const remoteStream = ref<MediaStream | null>(null);\n\n const currentFacingMode = ref<\"user\" | \"environment\">(\"user\");\n const isFlashOn = ref(false);\n\n const isSharingScreen = ref(false);\n const screenStream = ref<MediaStream | null>(null);\n\n const chatContact = ref<CallMember | null>();\n\n const startTime = ref<number | null>(null);\n const elapsedTime = ref(0);\n const timerInterval = ref<NodeJS.Timeout | null>(null);\n\n const isMicMuted = ref(false);\n const isCamDisabled = ref(false);\n const isSoundMuted = ref(false);\n\n const syncMediaSettings = async (serviceType: string) => {\n const status = await checkMediaStatus();\n isMicMuted.value = status.mic !== \"granted\";\n if (serviceType === \"voice-call\") {\n isCamDisabled.value = true;\n } else {\n isCamDisabled.value = status.cam !== \"granted\";\n }\n };\n\n const toggleMic = async () => {\n if (isMicMuted.value) {\n const status = await checkMediaStatus();\n if (status.mic === \"granted\") {\n isMicMuted.value = false;\n localStream.value?.getAudioTracks().forEach((t) => (t.enabled = true));\n return;\n }\n const granted = await requestWithPopup(\"mic-permission\");\n if (granted) {\n isMicMuted.value = false;\n localStream.value?.getAudioTracks().forEach((t) => (t.enabled = true));\n }\n } else {\n isMicMuted.value = true;\n localStream.value?.getAudioTracks().forEach((t) => (t.enabled = false));\n }\n };\n\n const toggleCam = async () => {\n if (isCamDisabled.value) {\n const status = await checkMediaStatus();\n if (status.cam === \"granted\") {\n isCamDisabled.value = false;\n localStream.value?.getVideoTracks().forEach((t) => (t.enabled = true));\n return;\n }\n const granted = await requestWithPopup(\"cam-permission\");\n if (granted) {\n isCamDisabled.value = false;\n localStream.value?.getVideoTracks().forEach((t) => (t.enabled = true));\n }\n } else {\n isCamDisabled.value = true;\n localStream.value?.getVideoTracks().forEach((t) => (t.enabled = false));\n }\n };\n\n const toggleSound = () => {\n if (remoteStream.value) {\n const remoteAudio = remoteStream.value.getAudioTracks();\n isSoundMuted.value = !isSoundMuted.value;\n remoteAudio.forEach((track) => (track.enabled = !isSoundMuted.value));\n }\n };\n\n const isMockAdapter = \"isMockCall\" in adapter.call && (adapter.call as any).isMockCall === true;\n\n let pc: RTCPeerConnection | null = null;\n let activeCallId: string | null = null;\n let unsubscribeSignals: (() => void) | null = null;\n\n const participants = ref<CallMember[]>(\n isMockAdapter\n ? Array.from({ length: 4 }, (_, i) => ({\n id: String(i + 2),\n name: \"امیر\",\n lastName: \"سعیدی\",\n isOnline: true,\n lastSeen: new Date(),\n imageUrl: `https://i.pravatar.cc/150?u=${i + 2}`,\n isActive: false,\n unreadCount: 2,\n serviceType: \"chat\",\n userType: [\"user\"],\n birthDate: new Date(),\n stream: null,\n isScreenSharing: false,\n isCameraOn: false,\n isSpeaking: false,\n isMuted: false,\n }))\n : [],\n );\n\n const callMembers = computed<CallMember[]>(() => {\n const currentUser: CallMember = {\n id: chatStore.currentUserId,\n name: \"امیر\",\n lastName: \"صفری\",\n imageUrl: \"\",\n phoneNumber: \"09133877121\",\n nationalCode: \"1234567890\",\n isOnline: true,\n lastSeen: new Date(),\n isActive: false,\n unreadCount: 0,\n serviceType: \"chat\",\n userType: [chatStore.chosenRole],\n birthDate: chatStore.currentUserBirthDate || new Date(),\n stream: isSharingScreen.value ? screenStream.value : localStream.value,\n isScreenSharing: isSharingScreen.value,\n isCameraOn: !isCamDisabled.value,\n isSpeaking: !isMicMuted.value && isActive.value,\n isMuted: isMicMuted.value,\n };\n return [currentUser, ...participants.value];\n });\n\n const initCall = async (withVideo: boolean) => {\n try {\n const stream = await navigator.mediaDevices.getUserMedia({\n video: withVideo,\n audio: true,\n });\n localStream.value = stream;\n isActive.value = true;\n stream.getAudioTracks().forEach((t) => (t.enabled = !isMicMuted.value));\n stream\n .getVideoTracks()\n .forEach((t) => (t.enabled = !isCamDisabled.value));\n } catch (err) {\n console.error(\"Init call failed\", err);\n }\n };\n\n const startTimer = () => {\n startTime.value = Date.now();\n timerInterval.value = setInterval(() => {\n elapsedTime.value = Math.floor(\n (Date.now() - (startTime.value || 0)) / 1000,\n );\n }, 1000);\n };\n\n const stopScreenShare = () => {\n if (screenStream.value) {\n screenStream.value.getTracks().forEach((track) => track.stop());\n screenStream.value = null;\n }\n isSharingScreen.value = false;\n };\n\n const stopCall = () => {\n if (timerInterval.value) clearInterval(timerInterval.value);\n\n localStream.value?.getTracks().forEach((t) => t.stop());\n localStream.value = null;\n\n stopScreenShare();\n if (pc) { pc.close(); pc = null; }\n if (unsubscribeSignals) { unsubscribeSignals(); unsubscribeSignals = null; }\n if (activeCallId) { void adapter.call.end(activeCallId); activeCallId = null; }\n isPiP.value = false;\n isActive.value = false;\n elapsedTime.value = 0;\n\n boardPages.value = [{ data: [], history: [], redo: [] }];\n boardSelectedPage.value = 0;\n boardSelectedColor.value = \"#2C2727\";\n boardBrushSize.value = 3;\n boardHistory.value = [];\n boardRedoHistory.value = [];\n };\n\n const toggleCamera = async () => {\n if (!localStream.value) return;\n\n currentFacingMode.value =\n currentFacingMode.value === \"user\" ? \"environment\" : \"user\";\n\n const videoTracks = localStream.value.getVideoTracks();\n videoTracks.forEach((track) => track.stop());\n\n try {\n const newStream = await navigator.mediaDevices.getUserMedia({\n video: { facingMode: currentFacingMode.value },\n audio: true,\n });\n localStream.value = newStream;\n if (currentFacingMode.value === \"user\") isFlashOn.value = false;\n } catch (err) {\n console.error(\"Failed to flip camera:\", err);\n }\n };\n\n const toggleFlash = async () => {\n const videoTrack = localStream.value?.getVideoTracks()[0];\n if (!videoTrack || currentFacingMode.value !== \"environment\") return;\n\n try {\n const capabilities = videoTrack.getCapabilities() as any;\n if (capabilities.torch) {\n isFlashOn.value = !isFlashOn.value;\n await videoTrack.applyConstraints({\n advanced: [{ torch: isFlashOn.value }],\n } as any);\n }\n } catch (err) {\n console.error(\"Flash toggle failed:\", err);\n }\n };\n\n const startCall = async (\n contact: CallMember,\n conversationId: string,\n serviceType: CallKind,\n ) => {\n chatContact.value = contact;\n chatStore.setSelectedChat(conversationId);\n await syncMediaSettings(serviceType);\n await initCall(serviceType === \"video-call\"); // populates localStream\n\n const { callId } = await adapter.call.initiate(conversationId, serviceType);\n activeCallId = callId;\n\n pc = new RTCPeerConnection();\n for (const track of localStream.value!.getTracks()) pc.addTrack(track, localStream.value!);\n pc.onicecandidate = (ev) => {\n if (ev.candidate) void adapter.call.sendIce(callId, ev.candidate.toJSON());\n };\n pc.ontrack = (ev) => { remoteStream.value = ev.streams[0] ?? null; };\n\n unsubscribeSignals = adapter.call.onSignal(async (e) => {\n if (!pc || e.callId !== callId) return;\n if (e.type === \"offer\") {\n await pc.setRemoteDescription(e.sdp);\n const answer = await pc.createAnswer();\n await pc.setLocalDescription(answer);\n await adapter.call.sendAnswer(callId, answer);\n } else if (e.type === \"answer\") {\n await pc.setRemoteDescription(e.sdp);\n } else if (e.type === \"ice\") {\n await pc.addIceCandidate(e.candidate);\n } else if (e.type === \"end\") {\n stopCall();\n }\n });\n\n // Caller side: emit the initial offer.\n const offer = await pc.createOffer({ offerToReceiveAudio: true, offerToReceiveVideo: serviceType === \"video-call\" });\n await pc.setLocalDescription(offer);\n await adapter.call.sendOffer(callId, offer);\n\n isActive.value = true;\n isPiP.value = false;\n startTimer();\n };\n\n const maximize = () => {\n isPiP.value = false;\n };\n\n const minimize = () => {\n isPiP.value = true;\n };\n\n const setScreenStream = (stream: MediaStream) => {\n screenStream.value = stream;\n isSharingScreen.value = true;\n };\n\n return {\n chatContact,\n isActive,\n localStream,\n startCall,\n remoteStream,\n elapsedTime,\n callMembers,\n initCall,\n stopCall,\n setScreenStream,\n syncMediaSettings,\n isMicMuted,\n isCamDisabled,\n isSoundMuted,\n isPiP,\n maximize,\n minimize,\n toggleMic,\n toggleCam,\n toggleSound,\n stopScreenShare,\n isSharingScreen,\n screenStream,\n currentFacingMode,\n isFlashOn,\n toggleCamera,\n toggleFlash,\n boardPages,\n boardSelectedPage,\n boardSelectedColor,\n boardBrushSize,\n boardHistory,\n boardRedoHistory,\n };\n });\n\n return {\n useChatStore,\n useServiceStore,\n useChatActionStore,\n useMedicationStore,\n useCallStore,\n };\n};\n","export const delay = (ms = 400): Promise<void> =>\n new Promise((resolve) => setTimeout(resolve, ms));\n\nexport const randomId = (): string =>\n String(Date.now() + Math.floor(Math.random() * 1000));\n","import type { Contact, FilterKeys, Message, MessageType } from \"~/types/chat\";\n\nconst now = new Date();\n\nconst getRandomBirthDate = (): Date => {\n const yearsAgo = Math.floor(Math.random() * (50 - 18 + 1)) + 18;\n const d = new Date();\n d.setFullYear(now.getFullYear() - yearsAgo);\n d.setMonth(Math.floor(Math.random() * 12));\n d.setDate(Math.floor(Math.random() * 28) + 1);\n return d;\n};\n\nconst buildPool = (currentUserId: string): Contact[] => {\n const basePool: Contact[] = [\n {\n id: \"1\",\n name: \"امیر\",\n lastName: \"سعیدی\",\n isOnline: true,\n lastSeen: now,\n imageUrl: \"https://i.pravatar.cc/150?u=1\",\n isActive: false,\n unreadCount: 2,\n serviceType: \"chat\",\n userType: [\"user\"],\n birthDate: getRandomBirthDate(),\n phoneNumber: \"09134168227\",\n nationalCode: \"1235678901\",\n lastMessage: {\n id: \"101\",\n conversationId: \"1\",\n date: new Date(now.getTime() - 1000 * 60 * 5),\n type: \"text\",\n text: \"سلام، وقت بخیر؟\",\n senderId: \"1\",\n isEdited: false,\n isSent: true,\n isRead: false,\n } as Message,\n },\n {\n id: \"2\",\n name: \"سارا\",\n lastName: \"احمدی\",\n isOnline: false,\n lastSeen: new Date(now.getTime() - 3600000),\n imageUrl: \"https://i.pravatar.cc/150?u=2\",\n isActive: true,\n unreadCount: 0,\n serviceType: \"voice-call\",\n userType: [\"user\"],\n birthDate: getRandomBirthDate(),\n phoneNumber: \"09134168227\",\n nationalCode: \"1235678901\",\n lastMessage: {\n id: \"102\",\n conversationId: \"2\",\n date: new Date(now.getTime() - 1000 * 3600 * 2),\n type: \"text\",\n text: \"بله، فایل رو بررسی کردم.\",\n senderId: currentUserId,\n isEdited: false,\n isSent: true,\n isRead: true,\n } as Message,\n },\n ];\n\n const pool: Contact[] = [];\n for (let i = 0; i < 70; i++) {\n const template = basePool[i % basePool.length] as Contact;\n const uniqueId = i + 1;\n const messageDate = new Date(\n now.getTime() - Math.floor(Math.random() * 10000) * 60000,\n );\n pool.push({\n ...template,\n id: String(uniqueId),\n name: `${template.name} ${uniqueId}`,\n lastMessage: template.lastMessage\n ? ({\n ...template.lastMessage,\n id: String(10000 + uniqueId),\n conversationId: String(uniqueId),\n date: messageDate,\n } as Message)\n : undefined,\n });\n }\n return pool;\n};\n\nexport interface ContactsSeedParams {\n filter: FilterKeys;\n page: number;\n pageSize: number;\n search?: string;\n currentUserId?: string;\n}\n\nexport const seedContacts = (\n params: ContactsSeedParams,\n): { data: Contact[]; hasNextPage: boolean } => {\n const { filter, page, pageSize, search, currentUserId = \"1\" } = params;\n const pool = buildPool(currentUserId);\n\n let filtered = pool;\n if (search) {\n const q = search.toLowerCase();\n filtered = pool.filter(\n (c) =>\n c.name.toLowerCase().includes(q) ||\n c.lastName.toLowerCase().includes(q),\n );\n }\n if (filter === \"online\") filtered = filtered.filter((c) => c.isOnline);\n if (filter === \"active\") filtered = filtered.filter((c) => c.isActive);\n if (filter === \"ended\") filtered = filtered.filter((c) => !c.isActive);\n\n const start = (page - 1) * pageSize;\n const data = filtered.slice(start, start + pageSize);\n return { data, hasNextPage: data.length >= pageSize };\n};\n\nexport interface MessagesSeedParams {\n conversationId: string;\n page: number;\n pageSize: number;\n currentUserId?: string;\n}\n\nexport const seedMessages = (params: MessagesSeedParams): Message[] => {\n const { conversationId, page, pageSize, currentUserId = \"1\" } = params;\n const out: Message[] = [];\n const scenarios: MessageType[] = [\"text\", \"text\", \"text\", \"image\"];\n\n for (let i = 0; i < pageSize; i++) {\n const globalIndex = (page - 1) * pageSize + i;\n const id = String(parseInt(conversationId, 10) * 1000 + globalIndex);\n const isMe = Math.floor(globalIndex / 2) % 2 === 0;\n const senderId = isMe ? currentUserId : \"2\";\n const scenario = scenarios[globalIndex % scenarios.length]!;\n const messageDate = new Date(Date.now() - globalIndex * 5 * 60 * 1000);\n\n out.push({\n id,\n conversationId,\n date: messageDate,\n type: scenario,\n text:\n scenario === \"text\"\n ? `Message ${id}: ${isMe ? \"Sent by me.\" : \"Received from them.\"}`\n : undefined,\n imageUrl:\n scenario === \"image\"\n ? [`https://picsum.photos/600/600?sig=${id}`]\n : undefined,\n isEdited: parseInt(id, 10) % 8 === 0,\n senderId,\n isSent: true,\n isRead: isMe ? true : globalIndex > 3,\n } as Message);\n }\n return out;\n};\n","import type { Clinic } from \"~/types/clinic\";\nimport type { Provider, Service, Fellowship } from \"~/types/service\";\n\nconst FELLOWSHIPS: Fellowship[] = [\n { id: \"101\", title: \"فلوشیپ اینترونشنال کاردیولوژی\" },\n { id: \"102\", title: \"فلوشیپ اکوکاردیوگرافی\" },\n { id: \"103\", title: \"فلوشیپ جراحی زانو\" },\n { id: \"104\", title: \"فلوشیپ سم‌شناسی\" },\n];\n\nconst CLINICS: Clinic[] = [\n { id: \"501\", title: 120, latitude: 35.7219, longitude: 51.3347 },\n { id: \"502\", title: 130, latitude: 35.7, longitude: 51.4 },\n];\n\nconst FIRST_NAMES = [\n \"Amir\",\n \"Sara\",\n \"Mohammad\",\n \"Elena\",\n \"Mehdi\",\n \"Zahra\",\n \"Arash\",\n \"Niloufar\",\n];\nconst LAST_NAMES = [\n \"Safari\",\n \"Rossi\",\n \"Ahmadi\",\n \"Bianchi\",\n \"Kermani\",\n \"Ricci\",\n \"Hosseini\",\n];\nconst IMAGES = [\n \"https://i.pravatar.cc/150?u=1\",\n \"https://i.pravatar.cc/150?u=2\",\n \"https://i.pravatar.cc/150?u=3\",\n \"https://i.pravatar.cc/150?u=4\",\n \"https://i.pravatar.cc/150?u=5\",\n];\n\nexport const seedServices = (): Service[] => [\n {\n id: \"1\",\n label: \"پزشک قلب\",\n expertiseLevel: \"speciality\",\n fellowships: [FELLOWSHIPS[0]!, FELLOWSHIPS[1]!],\n price: 100000,\n },\n {\n id: \"2\",\n label: \"پزشک متخصص ریه\",\n expertiseLevel: \"speciality\",\n fellowships: [],\n price: 200000,\n },\n {\n id: \"3\",\n label: \"متخصص ارتوپدی\",\n expertiseLevel: \"sub-speciality\",\n fellowships: [FELLOWSHIPS[2]!],\n price: 300000,\n },\n {\n id: \"4\",\n label: \"متخصص مغز و اعصاب\",\n expertiseLevel: \"speciality\",\n fellowships: [],\n price: 100000,\n },\n {\n id: \"5\",\n label: \"متخصص گوش، حلق و بینی\",\n expertiseLevel: \"speciality\",\n fellowships: [],\n price: 200000,\n },\n {\n id: \"6\",\n label: \"چشم پزشک\",\n expertiseLevel: \"speciality\",\n fellowships: [FELLOWSHIPS[3]!],\n price: 400000,\n },\n];\n\nexport interface ProvidersSeedParams {\n serviceId: string;\n page: number;\n pageSize: number;\n search?: string;\n}\n\nconst MAX_PAGES = 5;\n\nexport const seedProviders = (\n params: ProvidersSeedParams,\n): { data: Provider[]; hasNextPage: boolean } => {\n const { serviceId, page, pageSize } = params;\n if (page > MAX_PAGES) return { data: [], hasNextPage: false };\n\n const services = seedServices();\n const service = services.find((s) => s.id === serviceId) ?? services[0]!;\n\n const data: Provider[] = Array.from({ length: pageSize }).map(() => ({\n id: String(Math.floor(Math.random() * 10000)),\n name: FIRST_NAMES[Math.floor(Math.random() * FIRST_NAMES.length)]!,\n lastName: LAST_NAMES[Math.floor(Math.random() * LAST_NAMES.length)]!,\n isOnline: Math.random() > 0.5,\n lastSeen: new Date(),\n imageUrl: IMAGES[Math.floor(Math.random() * IMAGES.length)]!,\n phoneNumber: \"0913\" + Math.floor(1000000 + Math.random() * 9000000),\n isActive: true,\n birthDate: new Date(1990, 0, 1),\n unreadCount: 0,\n serviceType: \"chat\",\n userType: [\"business\"],\n expertise: service.label,\n type: \"public\",\n service,\n clinics: [CLINICS[0]!],\n fellowships: service.fellowships,\n }));\n\n return { data, hasNextPage: page < MAX_PAGES };\n};\n","import type { Medication } from \"~/types/medication\";\n\nconst POOL: Medication[] = [\n {\n id: \"1\",\n title: \"استامینوفن\",\n englishTitle: \"Acetaminophen\",\n brands: [\n { id: \"101\", title: \"Calyptol\" },\n { id: \"102\", title: \"Panadol\" },\n ],\n },\n {\n id: \"2\",\n title: \"ایبوپروفن\",\n englishTitle: \"Ibuprofen\",\n brands: [{ id: \"201\", title: \"Advil\" }],\n },\n {\n id: \"3\",\n title: \"آموکسی‌سیلین\",\n englishTitle: \"Amoxicillin\",\n brands: [{ id: \"301\", title: \"Amoxil\" }],\n },\n {\n id: \"4\",\n title: \"آتورواستاتین\",\n englishTitle: \"Atorvastatin\",\n brands: [{ id: \"401\", title: \"Lipitor\" }],\n },\n {\n id: \"5\",\n title: \"متفورمین\",\n englishTitle: \"Metformin\",\n brands: [{ id: \"501\", title: \"Glucophage\" }],\n },\n];\n\nexport const seedMedications = (): Medication[] => POOL.map((m) => ({ ...m }));\n\nexport const seedMedicationSearch = (query: string): Medication[] => {\n const q = query.trim().toLowerCase();\n if (!q) return [];\n return POOL.filter(\n (m) =>\n String(m.title).toLowerCase().includes(q) ||\n String(m.englishTitle).toLowerCase().includes(q),\n ).map((m) => ({ ...m }));\n};\n","import type {\n ChatAdapter,\n FetchContactsParams,\n ContactsPage,\n FetchMessagesParams,\n} from \"../ports/ChatAdapter\";\nimport type { Message } from \"~/types/chat\";\nimport { seedContacts, seedMessages, delay } from \"~/mock\";\n\nexport interface MockChatAdapterOptions {\n latencyMs?: number;\n currentUserId?: string;\n}\n\nexport const createMockChatAdapter = (\n opts: MockChatAdapterOptions = {},\n): ChatAdapter => {\n const { latencyMs = 400, currentUserId = \"1\" } = opts;\n\n return {\n async fetchContacts(params: FetchContactsParams): Promise<ContactsPage> {\n await delay(latencyMs);\n return seedContacts({ ...params, currentUserId });\n },\n\n async fetchMessages(params: FetchMessagesParams): Promise<Message[]> {\n await delay(latencyMs);\n return seedMessages({ ...params, currentUserId });\n },\n\n async markRead(_conversationId: string): Promise<void> {\n // no-op\n },\n };\n};\n","import type {\n ChatActionAdapter,\n SendMessageOptions,\n AccessDecision,\n} from \"../ports/ChatActionAdapter\";\nimport type { Message } from \"~/types/chat\";\nimport { delay, randomId } from \"~/mock\";\n\nexport interface MockChatActionAdapterOptions {\n latencyMs?: number;\n uploadDurationMs?: number;\n uploadTicks?: number;\n cacheUploadsInIndexedDb?: boolean;\n}\n\nconst sizeForType = (type: Message[\"type\"]): number => {\n if (type === \"video\") return 1024 * 1024 * 15;\n if (type === \"file\") return 1024 * 1024 * 5;\n if (type === \"voice\") return 1024 * 1024 * 2;\n if (type === \"image\") return 1024 * 1024 * 2;\n return 0;\n};\n\nconst cacheToIndexedDb = async (msg: Message): Promise<void> => {\n if (typeof indexedDB === \"undefined\") return;\n const dbName = \"ChatFileCache\";\n const db = await new Promise<IDBDatabase>((resolve, reject) => {\n const req = indexedDB.open(dbName, 1);\n req.onupgradeneeded = () => req.result.createObjectStore(\"files\");\n req.onsuccess = () => resolve(req.result);\n req.onerror = () => reject(req.error);\n });\n const tx = db.transaction(\"files\", \"readwrite\");\n const mockBlob = new Blob([\"mock content\"], {\n type: \"application/octet-stream\",\n });\n const urls = [\n msg.fileUrl,\n msg.voiceUrl,\n msg.videoUrl,\n ...(msg.imageUrl || []),\n ].filter(Boolean) as string[];\n urls.forEach((url) => tx.objectStore(\"files\").put(mockBlob, url));\n};\n\nexport const createMockChatActionAdapter = (\n opts: MockChatActionAdapterOptions = {},\n): ChatActionAdapter => {\n const {\n latencyMs = 1000,\n uploadDurationMs = 2500,\n uploadTicks = 10,\n cacheUploadsInIndexedDb = true,\n } = opts;\n\n return {\n async sendMessage(\n msg: Message,\n sendOpts: SendMessageOptions = {},\n ): Promise<Message> {\n const total = sizeForType(msg.type);\n const isUpload = total > 0;\n\n if (isUpload && sendOpts.onProgress) {\n const tickMs = uploadDurationMs / uploadTicks;\n const chunk = total / uploadTicks;\n await new Promise<void>((resolve) => {\n let uploaded = 0;\n const id = setInterval(() => {\n uploaded += chunk;\n if (uploaded >= total) {\n clearInterval(id);\n sendOpts.onProgress!({\n uploaded: total,\n total,\n progress: 100,\n });\n resolve();\n } else {\n sendOpts.onProgress!({\n uploaded,\n total,\n progress: Math.round((uploaded / total) * 100),\n });\n }\n }, tickMs);\n });\n } else {\n await delay(latencyMs);\n }\n\n if (isUpload && cacheUploadsInIndexedDb) {\n try {\n await cacheToIndexedDb(msg);\n } catch (e) {\n console.warn(\"MockChatActionAdapter: IDB cache failed\", e);\n }\n }\n\n return { ...msg, id: randomId(), isSent: true };\n },\n\n async editMessage(id: string, text: string): Promise<Message> {\n await delay(latencyMs);\n return {\n id,\n conversationId: \"0\",\n date: new Date(),\n type: \"text\",\n text,\n isEdited: true,\n senderId: \"0\",\n isSent: true,\n isRead: false,\n } as Message;\n },\n\n async deleteMessages(_ids: string[]): Promise<void> {\n await delay(latencyMs);\n },\n\n async respondToAccessRequest(\n _messageId: string,\n _decision: AccessDecision,\n ): Promise<void> {\n await delay(latencyMs * 1.5);\n },\n };\n};\n","import type {\n ServiceAdapter,\n FetchProvidersParams,\n ProvidersPage,\n} from \"../ports/ServiceAdapter\";\nimport type { Service } from \"~/types/service\";\nimport { seedServices, seedProviders, delay } from \"~/mock\";\n\nexport interface MockServiceAdapterOptions {\n latencyMs?: number;\n}\n\nexport const createMockServiceAdapter = (\n opts: MockServiceAdapterOptions = {},\n): ServiceAdapter => {\n const { latencyMs = 800 } = opts;\n\n return {\n async fetchServices(): Promise<Service[]> {\n await delay(latencyMs);\n return seedServices();\n },\n\n async fetchProviders(\n params: FetchProvidersParams,\n ): Promise<ProvidersPage> {\n await delay(latencyMs * 1.5);\n return seedProviders(params);\n },\n };\n};\n","import type { MedicationAdapter } from \"../ports/MedicationAdapter\";\nimport type { Medication } from \"~/types/medication\";\nimport { seedMedications, seedMedicationSearch, delay } from \"~/mock\";\n\nexport interface MockMedicationAdapterOptions {\n latencyMs?: number;\n searchLatencyMs?: number;\n}\n\nexport const createMockMedicationAdapter = (\n opts: MockMedicationAdapterOptions = {},\n): MedicationAdapter => {\n const { latencyMs = 200, searchLatencyMs = 250 } = opts;\n\n return {\n async fetchMedications(): Promise<Medication[]> {\n await delay(latencyMs);\n return seedMedications();\n },\n\n async searchMedications(query: string): Promise<Medication[]> {\n await delay(searchLatencyMs);\n return seedMedicationSearch(query);\n },\n };\n};\n","import type { CallAdapter, CallSignalEvent } from \"../ports/CallAdapter\";\n\nexport class MockCallAdapter implements CallAdapter {\n public readonly isMockCall = true;\n private handler: ((e: CallSignalEvent) => void) | null = null;\n\n async initiate(_conversationId: string, _kind: \"voice-call\" | \"video-call\") {\n return { callId: `mock-${crypto.randomUUID()}` };\n }\n async sendOffer() { /* no-op */ }\n async sendAnswer() { /* no-op */ }\n async sendIce() { /* no-op */ }\n async end() { /* no-op */ }\n onSignal(h: (e: CallSignalEvent) => void) {\n this.handler = h;\n return () => { this.handler = null; };\n }\n}\n","import type { HostAdapter } from \"../HostAdapter\";\nimport {\n createMockChatAdapter,\n type MockChatAdapterOptions,\n} from \"./MockChatAdapter\";\nimport {\n createMockChatActionAdapter,\n type MockChatActionAdapterOptions,\n} from \"./MockChatActionAdapter\";\nimport {\n createMockServiceAdapter,\n type MockServiceAdapterOptions,\n} from \"./MockServiceAdapter\";\nimport {\n createMockMedicationAdapter,\n type MockMedicationAdapterOptions,\n} from \"./MockMedicationAdapter\";\nimport { MockCallAdapter } from \"./MockCallAdapter\";\n\nexport interface MockAdapterOptions {\n chat?: MockChatAdapterOptions;\n chatAction?: MockChatActionAdapterOptions;\n service?: MockServiceAdapterOptions;\n medication?: MockMedicationAdapterOptions;\n}\n\nexport const createMockAdapter = (\n opts: MockAdapterOptions = {},\n): HostAdapter => ({\n chat: createMockChatAdapter(opts.chat),\n chatAction: createMockChatActionAdapter(opts.chatAction),\n service: createMockServiceAdapter(opts.service),\n medication: createMockMedicationAdapter(opts.medication),\n call: new MockCallAdapter(),\n});\n","import type { App } from \"vue\";\nimport { createStores } from \"./stores/createStores\";\nimport { createMockAdapter } from \"./adapter/mock\";\nimport type { HostAdapter } from \"./adapter\";\nimport { APP_STORES_KEY } from \"./nuxt-shims\";\n\nconst globalComponents = import.meta.glob<{ default: any }>(\n \"./components/global/*.vue\",\n { eager: true },\n);\n\nexport interface BehayandChatOptions {\n /**\n * Host application adapter that provides chat/service/medication ports.\n * If omitted, a mock adapter is used (useful for previewing the UI).\n */\n adapter?: HostAdapter;\n}\n\n/**\n * Vue plugin that wires up the chat stores. The consumer must `app.use(...)`\n * this before rendering <ChatPage />. Pinia must already be installed on the\n * app instance.\n */\nexport const BehayandChat = {\n install(app: App, options: BehayandChatOptions = {}) {\n const adapter: HostAdapter = options.adapter ?? createMockAdapter();\n const appStores = createStores({ adapter });\n app.provide(APP_STORES_KEY, appStores);\n\n for (const [path, mod] of Object.entries(globalComponents)) {\n const name = path.split(\"/\").pop()!.replace(/\\.vue$/, \"\");\n app.component(name, mod.default);\n }\n },\n};\n\nexport type AppStores = ReturnType<typeof createStores>;\n","import type { Message } from \"~/types/chat\";\nimport { injectAppStores } from \"~/nuxt-shims\";\n\nexport interface ChatPushPort {\n appendMessage(message: Message): void;\n markMessageDeleted(conversationId: string, id: string): void;\n setMessageEdited(conversationId: string, id: string, text: string): void;\n setTyping(conversationId: string, name: string | null): void;\n updateLastMessage(conversationId: string, message: Message): void;\n}\n\nexport function useChatPushPort(): ChatPushPort {\n const chat = injectAppStores().useChatStore();\n\n return {\n appendMessage(message) {\n const list = chat.messagesMap[message.conversationId] ?? [];\n // dedupe by id\n if (!list.some((m) => m.id === message.id)) {\n chat.messagesMap[message.conversationId] = [...list, message];\n }\n chat.updateLastMessage(message.conversationId, message);\n },\n markMessageDeleted(conversationId, id) {\n const list = chat.messagesMap[conversationId] ?? [];\n chat.messagesMap[conversationId] = list.filter((m) => m.id !== id);\n },\n setMessageEdited(conversationId, id, text) {\n const list = chat.messagesMap[conversationId] ?? [];\n chat.messagesMap[conversationId] = list.map((m) =>\n m.id === id ? { ...m, text, isEdited: true } : m,\n );\n chat.patchLastMessage(conversationId, id, { text, isEdited: true });\n },\n setTyping(conversationId, name) {\n const current = chat.typingByConversation ?? {};\n chat.typingByConversation = { ...current, [conversationId]: name };\n },\n updateLastMessage(conversationId, message) {\n chat.updateLastMessage(conversationId, message);\n },\n };\n}\n"],"names":["useClickOutside","elRef","callback","listener","event","onMounted","onUnmounted","useDevice","platform","reactive","hardware","detectPlatform","ua","isAndroid","isIOS","isTauriEnv","isStandalone","detectHardware","devices","device","err","readonly","formatCurrency","value","locale","num","targetLocale","replaceDigitsByLocale","str","persianDigits","digit","formatBytes","bytes","k","sizes","i","formatDuration","totalSeconds","hours","minutes","seconds","padded","val","useDate","useI18n","dict","g2j","gy","gm","gd","g_d_m","jy","gy2","days","jm","jd","j2g","sal_a","v","getLang","current","localizeDigits","lang","d","parseDate","dateInput","getJalaaliMonthName","monthIndex","getJalaaliDayOfWeekName","date","formatTime","formatDate","options","opts","separator","prefix","now","yesterday","isToday","isYesterday","body","result","formatNumericDate","y","m","formatDateTime","dir","useLocale","timeStr","combinedStr","getAbsoluteDate","today","years","monthDiff","datePart","timePart","combined","nowJy","isSameYear","diffInSeconds","mins","hrs","isCurrentYear","startTime","endH","endM","h","endDateObj","endObj","hourLabel","finalString","useAppToast","toastRef","useState","message","type","permissionBus","useEventBus","useAppPermissions","checkMediaStatus","mic","cam","requestMediaAccess","need","constraints","track","error","t","requestLocation","resolve","reject","requestScreenShare","requestWithPopup","state","flagUs","flagIr","flagAe","FLAG_BY_COUNTRY","DEFAULT_LOCALES","i18n","localeToCountryMap","localeTitles","sourceLocales","computed","_b","_a","languages","loc","countryCode","currentCountry","flagUrl","currentLocaleObj","l","watchEffect","switchLocale","newLocale","otherLanguages","useChatActionStore","injectAppStores","useCallStore","useServiceStore","_useI18n","APP_STORES_KEY","stores","inject","stateMap","key","init","ref","useChatStore","_sfc_main$O","defineComponent","_hoisted_1","_hoisted_2","_hoisted_3","_openBlock","_createElementBlock","_createElementVNode","_createVNode","_component_BImage","_ctx","_toDisplayString","NoChatSelected","_sfc_main$N","props","hasImage","initials","first","last","_d","_c","firstInitial","lastInitial","_createBlock","_cache","_withModifiers","_hoisted_4","_createCommentVNode","emojiData","emojiDataRaw","nativeToHex","skins","skin","parseEmojiArray","text","segmenter","graphemes","s","emojiRegex","currentText","grapheme","hexFilename","char","hex","__props","parsedText","_resolveDynamicComponent","_normalizeClass","_Fragment","_renderList","chunk","index","_sfc_main$L","SafeEmojiText","ContactAvatar","formatRelativeDate","chatStore","isActive","openChat","isFromMe","lastMessageIcon","msg","attachmentIcon","icons","lastMessageText","content","lastMessageColor","isLoading","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","args","_withDirectives","_component_ContactAvatar","_createTextVNode","_hoisted_5","_component_BIcon","_component_SafeEmojiText","_hoisted_10","_hoisted_11","_sfc_main$K","emit","isOpen","inputRef","toggleSearch","watch","nextTick","searchText","$event","NoData","_sfc_main$J","ChatContactDisplay","ChatListSearch","NoDataDisplay","activeFilter","listRef","currentState","currentPage","chats","filters","setFilter","newFilter","scrollEl","filterProps","searchTimeout","newQuery","_component_ChatListSearch","filter","_component_BLabel","_component_BVirtualVerticalList","_withCtx","item","_component_ChatContactDisplay","_component_NoDataDisplay","_sfc_main$I","f","NoProviderImage","_sfc_main$H","MedicDisplay","_","serviceStore","chatActionStore","autoSelect","openToast","currentConversationId","field","isLoadingServices","providers","selectedExpertiseLabel","selected","close","serviceOptions","service","selectedMedics","toggleSelect","medic","p","isSelected","id","buttonProps","buttonText","disabled","resetComponent","providersToSend","_component_BSelect","_component_BCheckBox","_component_BInput","_component_MedicDisplay","_component_BButton","_sfc_main$G","MedicSelectorContent","popupRef","menuRef","isMenuOpenned","width","useWindowSize","isTransitioning","internalMenuMode","isMobile","handleMenuState","handleSelect","handleMobileClick","closeAll","resetMenuMode","displayOptions","_renderSlot","_component_BMenu","_component_MedicSelectorContent","_component_BPopup","_sfc_main$F","MedicSelector","callStore","referBus","selectedChat","menuMode","isSelectMode","canDelete","actions","handleAction","handleMenuAction","openProfile","goBack","copy","deleteMessages","closeMenu","callData","initCall","kind","isInCall","_hoisted_12","_component_MedicSelector","_sfc_main$E","fileExt","parts","fileName","fileSize","_sfc_main$D","AttachementFileDisplay","popup","attachementMenu","popupMode","caption","newVal","selectedMedia","selectedFiles","handleMediaSelected","pathOrArray","file","incoming","remaining","handleFilesSelected","files","closePopup","resetSelections","popupTitle","messagesToEmit","fileData","_hoisted_14","_hoisted_15","_hoisted_16","image","_hoisted_13","_component_AttachementFileDisplay","useChatRecording","inputWidth","callbacks","isRecording","isLocked","isPaused","recordingTime","timerInterval","mediaStream","currentFacingMode","toggleCamera","oldTrack","newStream","isDragging","startX","startY","dragOffset","dragAxis","pressTimer","isPointerDown","isLongPress","formattedTime","lockOpacity","cancelOpacity","resetDrag","togglePause","stopRecording","triggerSend","onPointerDown","onPointerMove","onPointerUp","deltaX","deltaY","cancelThreshold","_sfc_main$C","videoRef","isPlaying","isLoaded","progress","uploadData","isUploading","circumference","dashOffset","progressPercent","togglePlay","handleTimeUpdate","total","handleEnded","handlePlay","handlePause","paused","onBeforeUnmount","_sfc_main$B","BubbleVideo","expose","isFlashOn","hasMultipleCameras","supportsTorch","flashIcon","videoInputs","caps","mobileOptions","handleOption","option","o","_component_BubbleVideo","_sfc_main$A","InputAttachement","VideoRecordDisplay","savedRange","isSelectingEmoji","textMode","rootElements","editingMessageData","replyingToMessageData","payload","handleEditMessage","videoDisplayRef","recording","secondaryMessageType","mediaUrl","finalUrl","createBaseMessage","ensurePermissions","currentRecordingSeconds","sec","messageText","adjustHeight","cancelAction","permissionResolver","isVideo","currentStatus","status","handlePopupCancel","handleAttachments","payloads","newMessages","sendMessage","handlePointerDown","toggleSecondaryMessageType","handleGlobalKeyDown","handleEscapeNavigation","isCallMode","isProfileView","displayedActionText","displayActionName","showMobileEmojiPicker","saveCursorPosition","selection","onInputFocus","toggleMobileEmoji","handleEmojiSelect","emoji","range","parsed","img","handleContentInput","handleEnterKey","e","rawText","node","handleFlipCamera","_component_VideoRecordDisplay","_normalizeStyle","_component_BEmojiPicker","_component_InputAttachement","profileBackground","_sfc_main$z","fetchedSize","path","name","lastDot","getFileSize","length","formattedSize","_sfc_main$y","FileDisplay","getYearsPassed","imageList","isLoadingAttachements","isLoadingMedia","hasMediaNextPage","hasFileNextPage","currentFilePage","currentMediaPage","role","listHeight","maxImageCounts","imagesPerPage","filesPerPage","maxFileCounts","tabs","currentTab","shouldShowTabs","fileAttachements","mediaAttachements","mockProfile","localProfile","actionButtons","isProfileOpen","closeSidebar","showPersonalInfo","action","chunkedMedia","rows","fetchMoreMedia","count","newMedia","fetchMoreFiles","newFiles","initialCount","displayedInfo","_hoisted_17","_hoisted_20","_hoisted_22","_hoisted_24","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","info","_hoisted_25","_component_BTab","row","media","idx","_component_FileDisplay","_hoisted_18","_hoisted_19","_hoisted_21","_hoisted_23","_sfc_main$x","center","radius","iconSize","ASPECT_RATIO","finalWidth","finalHeight","_sfc_main$v","LoadingStatus","FileFormatDisplay","abortController","dbName","displayProgress","getDB","request","checkLocalExistence","urlObj","realTotal","currentUploaded","downloaded","blob","toggleDownload","store","fileBlob","res","blobUrl","a","response","loaded","chunks","reader","done","_component_FileFormatDisplay","_component_LoadingStatus","_sfc_main$u","downloadProgress","playProgress","audioSrc","audioRef","staticWaveform","contentType","onTimeUpdate","onEnded","seekAudio","rect","clickPosition","newTime","_sfc_main$t","isRtl","containerRef","centerIndex","leftIndex","rightIndex","leftItem","centerItem","rightItem","baseTranslate","touchTranslate","isAnimating","containerWidth","onTouchStart","onTouchMove","percent","onTouchEnd","swipedLeft","goNext","newIdx","oldIdx","isNext","offset","_sfc_main$s","BCarousel","selectedImage","translateY","newImages","downloadImage","url","link","startDrag","onDrag","endDrag","closeImage","handleKeyDown","handlePopState","openImage","_Teleport","_component_BCarousel","_sfc_main$r","position","openMenu","x","adjustedX","adjustedY","onMenuClosed","showAsDeselect","targetIds","_sfc_main$q","provider","fellowshipString","isPending","_sfc_main$p","ProviderDisplay","modal","isCopied","isSending","isServiceRequest","handleCopyCode","finalKeys","isMedic","cardSubText","isCanceled","messageId","chatId","requestButtonProps","isBusy","isSelf","providersList","hasPaymentProvider","infoAccessContent","req","icon","color","_component_ProviderDisplay","_directive_loading","button","_component_BModal","_sfc_main$o","ImageGroupDisplay","VoiceDisplay","BubbleOptions","RequestCard","formatDateShort","isMine","imageDisplayRef","bubbleOptionsRef","messageType","isSameDayNext","roundingClasses","isPrevSameSender","shouldShowStatus","nextMsg","currentTime","nextTime","tenMinutesInMs","isSameSenderPrev","isSameSenderNext","displayedImages","previewImage","handleRightClick","handleLeftClick","checkIcon","replyName","replyContent","longPressTimer","touchStartPos","_component_VoiceDisplay","_component_ImageGroupDisplay","_component_BubbleOptions","_component_RequestCard","NoMessages","_sfc_main$n","ChatBubble","hasCall","scrollContainer","loaderRef","observer","messages","maxPages","currentUserId","MENU_KEYS","mappedOptions","unsubSend","unsubDelete","unsubUpdate","pendingRequestConversationId","unsubPersonalInfo","fetchMessages","newMsgs","addMessages","conversationId","ids","handleDeleteMessages","updates","entry","animationFrame","scrollTimer","reversedMessages","raw","prev","next","isFirstInDate","virtualizer","useVirtualizer","getSpacingClass","msgBelow","firstUnreadId","unreadMsg","generateMockMessages","page","scenarios","globalIndex","scenario","isMe","senderId","daysOffset","minutesOffset","totalOffset","messageDate","isRead","repliedTo","repliedId","repliedIsMe","newBatch","headerOpacity","scrollOffset","topVisibleMessageIndex","targetScroll","showOptionsBar","lastScrollTop","lockScroll","handleScroll","el","currentScroll","items","targetOffset","visualTopPhysical","closestIndex","minDiff","diff","canScroll","handleWheel","maxScroll","smoothScrollLoop","target","distance","resetScroll","animatingIds","deletingIds","selectedToDelete","hasMyMessage","idsToDelete","isRequestDeletion","modalTitle","modalDescription","confirmPersonalInfoRequest","handleModalConfirm","remainingMessages","newLastMessage","floatingHeader","newId","oldId","loading","virtualRow","_component_ChatBubble","_component_LottieAnimation","_vShow","_sfc_main$m","open","priority","referStates","description","hasErrors","validateFields","errorsFound","submitReferral","newField","newPriority","newDesc","oldField","oldPriority","oldDesc","_sfc_main$l","hasActiveStream","toggleFullScreen","updateStream","_sfc_main$k","sliderRef","thumbPositionPercent","handleSize","updateValueFromEvent","padding","trackHeight","newValue","_sfc_main$j","selectedColor","colorPickerWrapper","previousSelectedColor","colors","canSelect","changeSelection","submitSelection","_sfc_main$i","BrushSizeSlider","BoardColorPicker","boardColorPicker","useTemplateRef","colorPickerMenu","setColor","pages","selectedPage","brushSize","history","redoHistory","storeToRefs","canvasRef","signaturePadInstance","resizeCanvas","canvas","ratio","SignaturePad","stopStreaming","newSize","newColor","saveToFiles","dataUrl","snapshot","lastAction","nextAction","pageOptions","switchPage","handlePageSelect","targetIndex","startStreaming","stream","_component_BrushSizeSlider","_component_BoardColorPicker","_sfc_main$h","CallPaintBoard","isPopupOpen","isMenuOpen","_component_CallPaintBoard","_sfc_main$g","CallMemberDisplay","CallBoard","isReady","isBoardOpen","boardIcon","chatContact","callTimeDisplay","fullScreenId","getNativeDeviceRequirements","wrapperClasses","callMembers","gap","gridLayout","getMemberClass","member","base","optionButtons","initPermissions","newMembers","oldMembers","justStartedStreaming","wasStreaming","currentFullScreenMember","onBeforeMount","needsMic","needsCam","btn","_TransitionGroup","_component_CallMemberDisplay","_component_CallBoard","_sfc_main$f","getNativeScreenShare","bus","currentResolver","switchMode","newMode","popupIcon","actionButtonText","popupContent","openPopup","success","_sfc_main$e","step","prescribedMeds","selectedPeriod","fallbackMedicationName","fallbackDose","fallbackRepetitionAmount","fallbackUsageMethod","hospitalizationPeriod","hospitalizationDescriptions","periodOptions","unsubscribe","addMedication","med","addFallbackMedication","dose","repetition","usageMethod","scrollToBottom","newLength","oldLength","goToStep","targetStep","setPeriodValue","handleHospitalization","data","handlePrescription","deleteMedicine","prescriptionContentSlotProps","onClosed","_normalizeProps","_guardReactiveProps","_Transition","medicine","ChatView","ChatPageBar","CallPageOverlay","ChatInput","ChatProfileOverview","ChatMessages","PermissionPopup","PrescribtionDisplay","PatientReferral","chatInput","isProfile","chatMessagesRef","patientRefferal","canShowMessagingSection","isChatMode","handleNewMessages","_payload","_component_ChatProfileOverview","_component_ChatPageBar","_component_ChatMessages","_component_ChatInput","_component_CallPageOverlay","_component_PatientReferral","_component_PermissionPopup","_component_PrescribtionDisplay","ChatPage","ChatList","isInChat","showContactList","showMessagingSection","_component_ChatView","_component_ChatList","ICON_SIZE","COLOR_MAP","SIZE","FOCUS","VARIANTS","map","__emit","handleClick","isIconOnly","buttonStyle","variantMap","slots","useSlots","toggleCheck","hasContent","dataRaw","activeCategory","categories","currentEmojis","c","getEmojiData","cat","emojiId","$emit","iconComponent","PhosphorIcons","_mergeProps","$attrs","_sfc_main$9","rootEl","containerHeight","imgRatio","imageTransitionComplete","elementHeight","displayedImage","resizeObserver","showImage","rootClasses","wrapperStyles","autoAspectStyles","cRatio","autoAspectContainerClasses","autoAspectImageClasses","standardContainerClasses","standardImageClasses","overlayClasses","contentClasses","updateDimensions","loadImage","swapImage","newSrc","uniqueId","useId","INPUT_CONFIG","inputValue","isFocus","inputField","startSlotRef","endSlotRef","startSlotWidth","endSlotWidth","selectedOptionIndex","selectedOption","handleOptionSelect","entries","inputStyle","padInt","startPad","endPad","newKey","opt","filtered","handleKeypress","handlePaste","pasteData","handleFocus","handleBlur","handleSubmit","showMessage","displayedMessage","messageColor","newMsg","messageIcon","__expose","_unref","sizeClasses","iconSizeClass","textSizeClass","paddingClasses","globalActiveMenuId","_sfc_main$6","menuWrapper","panelRef","hasCustomContent","verticalAlign","horizontalAlign","instanceId","calculateAlignment","triggerRect","panelWidth","panelHeight","viewportWidth","viewportHeight","toggleMenu","panelPositionStyles","isVisible","styles","handleContentClick","_sfc_main$5","modalState","modalText","hasAction","modalIcon","primaryButtonMode","buttonType","buttonColor","modalColorings","finalColor","closeModal","title","actionText","height","updateSize","_sfc_main$4","tabContent","backdropDown","html","onBackdropMouseDown","onBackdropMouseUp","onBackdropTouchDown","onBackdropTouchUp","_component_ClientOnly","_sfc_main$3","searchQuery","dropdownRef","searchInput","optionsListRef","highlightedIndex","openDirection","calculatePosition","spaceBelow","requiredSpace","messageColorClass","filteredOptions","query","virtualizerOptions","highlightNext","toggleDropdown","scrollToHighlighted","highlightPrev","selectHighlighted","toggleOption","selectedItem","showPlaceholder","closeDropdown","handleClickOutside","openOnTab","containerClasses","classes","isError","_withKeys","_sfc_main$2","tabRefs","indicatorStyle","updateIndicator","activeEl","left","setTab","tab","threshold","toastType","toastMessage","timer","currentDuration","dragY","closeToast","duration","backgroundColor","toastIcon","parentRef","sentinelRef","createStores","adapter","defineStore","windowHeight","chatsPerPage","chosenRole","currentUserBirthDate","activeConversationId","profileViewOpen","messagesMap","typingByConversation","conversationStates","setSelectedChat","closeProfile","fetchConversations","search","loadNextPage","getDisplayedContacts","b","dateA","getContactById","contact","markAsRead","updateLastMessage","patchLastMessage","unreadCount","uniqueContacts","currentResultPage","selectedServiceId","providersPerPage","hasProviderNextPage","services","createSkeletonProvider","resetProviderData","isLoadMore","serviceId","searchString","effectiveServiceId","uploadProgress","processingActions","isActionBusy","actionKey","selectedMessages","replyingTo","editingMessage","editWindowHours","deleteBus","sendBus","editBus","personalInfoBus","prescriptionBus","updateBus","triggerPersonalInfoRequest","triggerPrescription","selectedArray","canReply","canEdit","hoursPassed","clearActions","triggerDelete","specificIds","targets","handleRemoteAction","apiCall","tempMessages","latest","tempMsg","tracksProgress","canonical","newMap","textToCopy","senderName","dateTime","serviceLabel","selectedProviders","requestStatus","mappedProviders","fullServiceData","newRequestMessage","currentRequest","decision","updatedRequest","useMedicationStore","medications","searchResults","debounceTimeout","searchToken","mapToDropdown","medicationOptions","getMedicationOptionById","token","results","boardPages","boardSelectedPage","boardSelectedColor","boardBrushSize","boardHistory","boardRedoHistory","isPiP","localStream","remoteStream","isSharingScreen","screenStream","elapsedTime","isMicMuted","isCamDisabled","isSoundMuted","syncMediaSettings","serviceType","toggleMic","toggleCam","toggleSound","remoteAudio","isMockAdapter","pc","activeCallId","unsubscribeSignals","participants","withVideo","startTimer","stopScreenShare","stopCall","callId","ev","answer","offer","videoTrack","delay","ms","randomId","getRandomBirthDate","yearsAgo","buildPool","basePool","pool","template","seedContacts","params","pageSize","q","start","seedMessages","out","FELLOWSHIPS","CLINICS","FIRST_NAMES","LAST_NAMES","IMAGES","seedServices","MAX_PAGES","seedProviders","POOL","seedMedications","seedMedicationSearch","createMockChatAdapter","latencyMs","_conversationId","sizeForType","cacheToIndexedDb","tx","mockBlob","createMockChatActionAdapter","uploadDurationMs","uploadTicks","cacheUploadsInIndexedDb","sendOpts","isUpload","tickMs","uploaded","_ids","_messageId","_decision","createMockServiceAdapter","createMockMedicationAdapter","searchLatencyMs","MockCallAdapter","__publicField","_kind","createMockAdapter","globalComponents","__vite_glob_0_0","__vite_glob_0_1","__vite_glob_0_2","__vite_glob_0_3","__vite_glob_0_4","__vite_glob_0_5","__vite_glob_0_6","__vite_glob_0_7","__vite_glob_0_8","__vite_glob_0_9","__vite_glob_0_10","__vite_glob_0_11","__vite_glob_0_12","__vite_glob_0_13","__vite_glob_0_14","BehayandChat","app","appStores","mod","useChatPushPort","chat","list"],"mappings":"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"}