@yonus_amire01/chat 1.0.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.mjs","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,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=\"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,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\"","<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","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","s","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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"}