@tilde-nlp/ngx-translate 1.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 (541) hide show
  1. package/README.md +2 -0
  2. package/esm2020/lib/components/shared/extension-dialog/components/index.mjs +2 -0
  3. package/esm2020/lib/components/shared/extension-dialog/components/open-extension-dialog/open-extension-dialog.component.mjs +24 -0
  4. package/esm2020/lib/components/shared/extension-dialog/extension-dialog.component.mjs +133 -0
  5. package/esm2020/lib/components/shared/extension-dialog/extension-dialog.module.mjs +51 -0
  6. package/esm2020/lib/components/shared/extension-dialog/index.mjs +6 -0
  7. package/esm2020/lib/components/shared/extension-dialog/models/enums/file-categories.enum.mjs +9 -0
  8. package/esm2020/lib/components/shared/extension-dialog/models/enums/file-extensions.enum.mjs +35 -0
  9. package/esm2020/lib/components/shared/extension-dialog/models/enums/file-type-icons.enum.mjs +13 -0
  10. package/esm2020/lib/components/shared/extension-dialog/models/enums/file-types.enum.mjs +13 -0
  11. package/esm2020/lib/components/shared/extension-dialog/models/enums/index.mjs +5 -0
  12. package/esm2020/lib/components/shared/extension-dialog/models/index.mjs +3 -0
  13. package/esm2020/lib/components/shared/extension-dialog/models/interfaces/config.mjs +2 -0
  14. package/esm2020/lib/components/shared/extension-dialog/models/interfaces/dialog-data.model.mjs +2 -0
  15. package/esm2020/lib/components/shared/extension-dialog/models/interfaces/index.mjs +3 -0
  16. package/esm2020/lib/components/shared/extension-dialog/services/extension-dialog.service.mjs +22 -0
  17. package/esm2020/lib/components/shared/extension-dialog/services/index.mjs +2 -0
  18. package/esm2020/lib/components/shared/text-to-speech/index.mjs +3 -0
  19. package/esm2020/lib/components/shared/text-to-speech/models/text-to-speech-settings.model.mjs +2 -0
  20. package/esm2020/lib/components/shared/text-to-speech/text-to-speech.component.mjs +62 -0
  21. package/esm2020/lib/components/shared/text-to-speech/text-to-speech.module.mjs +36 -0
  22. package/esm2020/lib/components/shared/vendor-disclaimer/vendor-disclaimer.component.mjs +39 -0
  23. package/esm2020/lib/components/shared/vendor-disclaimer/vendor-disclaimer.module.mjs +28 -0
  24. package/esm2020/lib/factories/file-api-service.factory.mjs +12 -0
  25. package/esm2020/lib/factories/system-service.factory.mjs +12 -0
  26. package/esm2020/lib/factories/text-api-service.factory.mjs +12 -0
  27. package/esm2020/lib/i18n/available-languages.mjs +19 -0
  28. package/esm2020/lib/i18n/de.mjs +378 -0
  29. package/esm2020/lib/i18n/en.mjs +426 -0
  30. package/esm2020/lib/i18n/et.mjs +378 -0
  31. package/esm2020/lib/i18n/fi.mjs +383 -0
  32. package/esm2020/lib/i18n/lt.mjs +378 -0
  33. package/esm2020/lib/i18n/lv.mjs +391 -0
  34. package/esm2020/lib/i18n/models/available-languages.model.mjs +2 -0
  35. package/esm2020/lib/i18n/pl.mjs +378 -0
  36. package/esm2020/lib/i18n/sv.mjs +242 -0
  37. package/esm2020/lib/injection-tokens/file-api-service.token.mjs +2 -0
  38. package/esm2020/lib/injection-tokens/index.mjs +6 -0
  39. package/esm2020/lib/injection-tokens/system-service.token.mjs +2 -0
  40. package/esm2020/lib/injection-tokens/text-api-service.token.mjs +2 -0
  41. package/esm2020/lib/injection-tokens/tld-translate-config.token.mjs +2 -0
  42. package/esm2020/lib/injection-tokens/translation-api-version.token.mjs +2 -0
  43. package/esm2020/lib/modules/material.module.mjs +97 -0
  44. package/esm2020/lib/modules/tld-audio/index.mjs +4 -0
  45. package/esm2020/lib/modules/tld-audio/models/audio-error-case.model.mjs +13 -0
  46. package/esm2020/lib/modules/tld-audio/models/dictate-configurationi.model.mjs +2 -0
  47. package/esm2020/lib/modules/tld-audio/models/index.mjs +3 -0
  48. package/esm2020/lib/modules/tld-audio/models/transcription-update.model.mjs +2 -0
  49. package/esm2020/lib/modules/tld-audio/services/audio-record.service.mjs +116 -0
  50. package/esm2020/lib/modules/tld-audio/services/index.mjs +4 -0
  51. package/esm2020/lib/modules/tld-audio/services/tld-voice-input-api.service.mjs +48 -0
  52. package/esm2020/lib/modules/tld-audio/services/tld-voice-input.service.mjs +60 -0
  53. package/esm2020/lib/modules/tld-audio/tld-audio.module.mjs +41 -0
  54. package/esm2020/lib/modules/tld-audio/tld-dictate/tld-dictate.component.mjs +151 -0
  55. package/esm2020/lib/modules/tld-audio/tld-record/tld-record.component.mjs +87 -0
  56. package/esm2020/lib/modules/tld-common/animations/pulse.animation.mjs +11 -0
  57. package/esm2020/lib/modules/tld-common/components/index.mjs +10 -0
  58. package/esm2020/lib/modules/tld-common/components/open-close-button/open-close-button.component.mjs +41 -0
  59. package/esm2020/lib/modules/tld-common/components/source-and-target-wrapper/source-and-target-wrapper.component.mjs +44 -0
  60. package/esm2020/lib/modules/tld-common/components/tld-file-upload/tld-file-upload.component.mjs +103 -0
  61. package/esm2020/lib/modules/tld-common/components/tld-lang-list/tld-lang-list.component.mjs +193 -0
  62. package/esm2020/lib/modules/tld-common/components/tld-list-menu/tld-list-menu.component.mjs +60 -0
  63. package/esm2020/lib/modules/tld-common/components/tld-loader/tld-loader.component.mjs +12 -0
  64. package/esm2020/lib/modules/tld-common/components/tld-message/tld-message.component.mjs +49 -0
  65. package/esm2020/lib/modules/tld-common/components/tld-translate-achievement/tld-translate-achievement.component.mjs +17 -0
  66. package/esm2020/lib/modules/tld-common/components/translate-button/tld-translate-button.service.mjs +30 -0
  67. package/esm2020/lib/modules/tld-common/components/translate-button/translate-button.component.mjs +59 -0
  68. package/esm2020/lib/modules/tld-common/directives/drag-and-drop.directive.mjs +57 -0
  69. package/esm2020/lib/modules/tld-common/directives/index.mjs +2 -0
  70. package/esm2020/lib/modules/tld-common/index.mjs +2 -0
  71. package/esm2020/lib/modules/tld-common/models/auth-options.model.mjs +2 -0
  72. package/esm2020/lib/modules/tld-common/models/common.mjs +107 -0
  73. package/esm2020/lib/modules/tld-common/models/configs/tld-audio-config.model.mjs +2 -0
  74. package/esm2020/lib/modules/tld-common/models/configs/tld-term-config.model.mjs +2 -0
  75. package/esm2020/lib/modules/tld-common/models/configs/tld-text-to-speech-config.model.mjs +2 -0
  76. package/esm2020/lib/modules/tld-common/models/configs/tld-translate-api-v2-config.model.mjs +2 -0
  77. package/esm2020/lib/modules/tld-common/models/configs/tld-translate-config.model.mjs +2 -0
  78. package/esm2020/lib/modules/tld-common/models/configs/tld-translate-core-config.model.mjs +2 -0
  79. package/esm2020/lib/modules/tld-common/models/configs/tld-translate-file-config.model.mjs +2 -0
  80. package/esm2020/lib/modules/tld-common/models/configs/tld-translate-text-config.model.mjs +2 -0
  81. package/esm2020/lib/modules/tld-common/models/configs/tld-translate-web-config.model.mjs +2 -0
  82. package/esm2020/lib/modules/tld-common/models/core/index.mjs +3 -0
  83. package/esm2020/lib/modules/tld-common/models/core/language-menu-version.enum.mjs +6 -0
  84. package/esm2020/lib/modules/tld-common/models/core/translation-api-version.model.mjs +6 -0
  85. package/esm2020/lib/modules/tld-common/models/errors/error-codes.enum.mjs +27 -0
  86. package/esm2020/lib/modules/tld-common/models/errors/error-codes.type.mjs +2 -0
  87. package/esm2020/lib/modules/tld-common/models/errors/error.model.mjs +2 -0
  88. package/esm2020/lib/modules/tld-common/models/file-upload.model.mjs +10 -0
  89. package/esm2020/lib/modules/tld-common/models/index.mjs +22 -0
  90. package/esm2020/lib/modules/tld-common/models/lang-list-item.model.mjs +2 -0
  91. package/esm2020/lib/modules/tld-common/models/language-with-translation.model.mjs +2 -0
  92. package/esm2020/lib/modules/tld-common/models/message.model.mjs +7 -0
  93. package/esm2020/lib/modules/tld-common/models/selected-language.model.mjs +2 -0
  94. package/esm2020/lib/modules/tld-common/models/services/file-api/download-file-params.model.mjs +2 -0
  95. package/esm2020/lib/modules/tld-common/models/services/file-api/file-api-service.model.mjs +2 -0
  96. package/esm2020/lib/modules/tld-common/models/services/file-api/file-meta.model.mjs +2 -0
  97. package/esm2020/lib/modules/tld-common/models/services/file-api/file-translation-substatus.model.mjs +9 -0
  98. package/esm2020/lib/modules/tld-common/models/services/file-api/get-file-status-params.model.mjs +2 -0
  99. package/esm2020/lib/modules/tld-common/models/services/file-api/get-file-translation-status-response.model.mjs +2 -0
  100. package/esm2020/lib/modules/tld-common/models/services/file-api/remove-file-params.model.mjs +2 -0
  101. package/esm2020/lib/modules/tld-common/models/services/file-api/source-file-preview-response.model.mjs +2 -0
  102. package/esm2020/lib/modules/tld-common/models/services/file-api/start-file-translation-params.model.mjs +2 -0
  103. package/esm2020/lib/modules/tld-common/models/services/file-api/translated-document-preview-params.model.mjs +2 -0
  104. package/esm2020/lib/modules/tld-common/models/services/index.mjs +19 -0
  105. package/esm2020/lib/modules/tld-common/models/services/system/system.model.mjs +2 -0
  106. package/esm2020/lib/modules/tld-common/models/services/system/tld-system-api-service.model.mjs +2 -0
  107. package/esm2020/lib/modules/tld-common/models/services/text-api/check-grammar-response.model.mjs +2 -0
  108. package/esm2020/lib/modules/tld-common/models/services/text-api/tld-translate-text-api-service.model.mjs +2 -0
  109. package/esm2020/lib/modules/tld-common/models/services/text-api/translate-paragraph-request-params.model.mjs +2 -0
  110. package/esm2020/lib/modules/tld-common/models/services/voice-to-text/voice-to-text-job-state.model.mjs +7 -0
  111. package/esm2020/lib/modules/tld-common/models/services/voice-to-text/voice-to-text-job.model.mjs +2 -0
  112. package/esm2020/lib/modules/tld-common/models/services/voice-to-text/voice-to-text-start-job-request-params.model.mjs +2 -0
  113. package/esm2020/lib/modules/tld-common/pipes/index.mjs +2 -0
  114. package/esm2020/lib/modules/tld-common/pipes/translate-domain.pipe.mjs +27 -0
  115. package/esm2020/lib/modules/tld-common/services/icon-service/icon.service.mjs +30 -0
  116. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/excel.icon.mjs +22 -0
  117. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/index.mjs +10 -0
  118. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/interchange.icon.mjs +6 -0
  119. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/office-other.icon.mjs +6 -0
  120. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/other.icon.mjs +6 -0
  121. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/pdf.icon.mjs +12 -0
  122. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/powerpoint.icon.mjs +10 -0
  123. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/scanned.icon.mjs +6 -0
  124. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/web.icon.mjs +6 -0
  125. package/esm2020/lib/modules/tld-common/services/icon-service/icons/file-types/word.icon.mjs +11 -0
  126. package/esm2020/lib/modules/tld-common/services/icon-service/icons.mjs +52 -0
  127. package/esm2020/lib/modules/tld-common/services/index.mjs +5 -0
  128. package/esm2020/lib/modules/tld-common/services/scroll/tld-scroll.service.mjs +43 -0
  129. package/esm2020/lib/modules/tld-common/services/tld-alert.service.mjs +139 -0
  130. package/esm2020/lib/modules/tld-common/services/tld-highlight.service.mjs +25 -0
  131. package/esm2020/lib/modules/tld-common/services/tld-translate-config.service.mjs +226 -0
  132. package/esm2020/lib/modules/tld-common/services/wtw-link-params.service.mjs +33 -0
  133. package/esm2020/lib/modules/tld-common/tld-common.module.mjs +97 -0
  134. package/esm2020/lib/modules/tld-document/download-button/download-button.component.mjs +78 -0
  135. package/esm2020/lib/modules/tld-document/image-conversion-help/image-conversion-help.component.mjs +32 -0
  136. package/esm2020/lib/modules/tld-document/index.mjs +8 -0
  137. package/esm2020/lib/modules/tld-document/models/file-conversion-types.model.mjs +6 -0
  138. package/esm2020/lib/modules/tld-document/models/index.mjs +6 -0
  139. package/esm2020/lib/modules/tld-document/models/start-translation.model.mjs +2 -0
  140. package/esm2020/lib/modules/tld-document/models/translate-file.model.mjs +2 -0
  141. package/esm2020/lib/modules/tld-document/models/translation-statuss.model.mjs +15 -0
  142. package/esm2020/lib/modules/tld-document/models/upload-response.model.mjs +2 -0
  143. package/esm2020/lib/modules/tld-document/pdf-conversion-help/pdf-conversion-help.component.mjs +32 -0
  144. package/esm2020/lib/modules/tld-document/services/api/file-api.service.mjs +166 -0
  145. package/esm2020/lib/modules/tld-document/services/api/models/file-preview-v1-progress-response.model.mjs +2 -0
  146. package/esm2020/lib/modules/tld-document/services/api/models/file-preview-v1-response-body.model.mjs +2 -0
  147. package/esm2020/lib/modules/tld-document/services/api/models/get-file-translation-status-v1-response.model.mjs +2 -0
  148. package/esm2020/lib/modules/tld-document/services/api-v2/file-api-v2.service.mjs +87 -0
  149. package/esm2020/lib/modules/tld-document/services/api-v2/models/file-category-v2.model.mjs +6 -0
  150. package/esm2020/lib/modules/tld-document/services/api-v2/models/file-translation-status-v2-response.model.mjs +2 -0
  151. package/esm2020/lib/modules/tld-document/services/index.mjs +3 -0
  152. package/esm2020/lib/modules/tld-document/services/tld-translate-file.service.mjs +398 -0
  153. package/esm2020/lib/modules/tld-document/tld-document.module.mjs +70 -0
  154. package/esm2020/lib/modules/tld-document/tld-file-translate-base.component.mjs +76 -0
  155. package/esm2020/lib/modules/tld-document/tld-translate-file-multiple/tld-translate-file-multiple.component.mjs +94 -0
  156. package/esm2020/lib/modules/tld-term/index.mjs +7 -0
  157. package/esm2020/lib/modules/tld-term/models/converted-collection-tooltip-key.model.mjs +7 -0
  158. package/esm2020/lib/modules/tld-term/models/converted-collection-type.model.mjs +9 -0
  159. package/esm2020/lib/modules/tld-term/models/index.mjs +7 -0
  160. package/esm2020/lib/modules/tld-term/models/mt-api/tld-mt-term-collection.model.mjs +2 -0
  161. package/esm2020/lib/modules/tld-term/models/mt-collection-status.model.mjs +7 -0
  162. package/esm2020/lib/modules/tld-term/models/term-api/tld-term-collection-languages.model.mjs +2 -0
  163. package/esm2020/lib/modules/tld-term/models/term-api/tld-term-collection.model.mjs +2 -0
  164. package/esm2020/lib/modules/tld-term/models/tld-converted-collection.model.mjs +114 -0
  165. package/esm2020/lib/modules/tld-term/services/index.mjs +4 -0
  166. package/esm2020/lib/modules/tld-term/services/mt-collections-api.service.mjs +33 -0
  167. package/esm2020/lib/modules/tld-term/services/term-api.service.mjs +34 -0
  168. package/esm2020/lib/modules/tld-term/services/tld-term-collections.service.mjs +253 -0
  169. package/esm2020/lib/modules/tld-term/tld-term-collection/tld-term-collection.component.mjs +19 -0
  170. package/esm2020/lib/modules/tld-term/tld-term-collection-list/tld-term-collection-list.component.mjs +99 -0
  171. package/esm2020/lib/modules/tld-term/tld-term-create-collection-dialog/tld-term-create-collection-dialog.component.mjs +47 -0
  172. package/esm2020/lib/modules/tld-term/tld-term-menu/tld-term-menu.component.mjs +36 -0
  173. package/esm2020/lib/modules/tld-term/tld-term-promotion/tld-term-promotion.component.mjs +35 -0
  174. package/esm2020/lib/modules/tld-term/tld-term.module.mjs +67 -0
  175. package/esm2020/lib/modules/tld-text/components/highlight-tree/highlight-tree.component.mjs +109 -0
  176. package/esm2020/lib/modules/tld-text/components/progress-indicator/progress-indicator.component.mjs +35 -0
  177. package/esm2020/lib/modules/tld-text/components/textarea-with-background/textarea-with-background.component.mjs +153 -0
  178. package/esm2020/lib/modules/tld-text/components/tld-dictionary/tld-dictionary.component.mjs +56 -0
  179. package/esm2020/lib/modules/tld-text/components/tld-translate-source/tld-translate-source.component.mjs +60 -0
  180. package/esm2020/lib/modules/tld-text/components/tld-translate-suggest/dialog/suggest-translation.model.mjs +2 -0
  181. package/esm2020/lib/modules/tld-text/components/tld-translate-suggest/dialog/tld-translate-suggest-dialog.component.mjs +92 -0
  182. package/esm2020/lib/modules/tld-text/components/tld-translate-suggest/tld-translate-suggest.component.mjs +60 -0
  183. package/esm2020/lib/modules/tld-text/components/tld-translate-text/tld-translate-text.component.mjs +272 -0
  184. package/esm2020/lib/modules/tld-text/index.mjs +9 -0
  185. package/esm2020/lib/modules/tld-text/models/check-grammar-response-v2.model.mjs +2 -0
  186. package/esm2020/lib/modules/tld-text/models/dictionary.model.mjs +2 -0
  187. package/esm2020/lib/modules/tld-text/models/get-sentence-v1-response.model.mjs +2 -0
  188. package/esm2020/lib/modules/tld-text/models/grammar-check-base.model.mjs +2 -0
  189. package/esm2020/lib/modules/tld-text/models/grammar-check-meta.model.mjs +2 -0
  190. package/esm2020/lib/modules/tld-text/models/grammar-check-replacement.model.mjs +2 -0
  191. package/esm2020/lib/modules/tld-text/models/grammar-correction-v2.model.mjs +2 -0
  192. package/esm2020/lib/modules/tld-text/models/highlight-params.model.mjs +11 -0
  193. package/esm2020/lib/modules/tld-text/models/highlight-tree-type.model.mjs +12 -0
  194. package/esm2020/lib/modules/tld-text/models/highlight-tree.model.mjs +2 -0
  195. package/esm2020/lib/modules/tld-text/models/highlight.model.mjs +2 -0
  196. package/esm2020/lib/modules/tld-text/models/index.mjs +11 -0
  197. package/esm2020/lib/modules/tld-text/models/retranslate-params.model.mjs +2 -0
  198. package/esm2020/lib/modules/tld-text/models/source-text-changed.model.mjs +2 -0
  199. package/esm2020/lib/modules/tld-text/models/translate-paragraph-params.model.mjs +2 -0
  200. package/esm2020/lib/modules/tld-text/models/translate-paragraph-response-v1.model.mjs +2 -0
  201. package/esm2020/lib/modules/tld-text/models/translate-paragraph-response-v2.model.mjs +2 -0
  202. package/esm2020/lib/modules/tld-text/models/translate-paragraph-response.model.mjs +2 -0
  203. package/esm2020/lib/modules/tld-text/models/untranslated-paragraph.model.mjs +2 -0
  204. package/esm2020/lib/modules/tld-text/services/api/tld-translate-text-api.service.mjs +187 -0
  205. package/esm2020/lib/modules/tld-text/services/api-v2/tld-translate-text-api-v2.service.mjs +110 -0
  206. package/esm2020/lib/modules/tld-text/services/index.mjs +2 -0
  207. package/esm2020/lib/modules/tld-text/services/tld-translate-text.service.mjs +380 -0
  208. package/esm2020/lib/modules/tld-text/tld-text.module.mjs +95 -0
  209. package/esm2020/lib/modules/tld-text/utils/index.mjs +2 -0
  210. package/esm2020/lib/modules/tld-text/utils/models/existing-paragraph-info.model.mjs +2 -0
  211. package/esm2020/lib/modules/tld-text/utils/models/index.mjs +2 -0
  212. package/esm2020/lib/modules/tld-text/utils/tld-translate-text.utils.mjs +56 -0
  213. package/esm2020/lib/modules/tld-tooltip/index.mjs +5 -0
  214. package/esm2020/lib/modules/tld-tooltip/models/active-data.model.mjs +2 -0
  215. package/esm2020/lib/modules/tld-tooltip/models/domain.model.mjs +2 -0
  216. package/esm2020/lib/modules/tld-tooltip/models/index.mjs +5 -0
  217. package/esm2020/lib/modules/tld-tooltip/models/switcher-options.model.mjs +2 -0
  218. package/esm2020/lib/modules/tld-tooltip/models/system-metadata-keys.model.mjs +7 -0
  219. package/esm2020/lib/modules/tld-tooltip/models/vendor.model.mjs +2 -0
  220. package/esm2020/lib/modules/tld-tooltip/services/api/models/description.model.mjs +2 -0
  221. package/esm2020/lib/modules/tld-tooltip/services/api/models/language.model.mjs +2 -0
  222. package/esm2020/lib/modules/tld-tooltip/services/api/models/metadata.model.mjs +2 -0
  223. package/esm2020/lib/modules/tld-tooltip/services/api/models/name.model.mjs +2 -0
  224. package/esm2020/lib/modules/tld-tooltip/services/api/models/system.model.mjs +2 -0
  225. package/esm2020/lib/modules/tld-tooltip/services/api/tld-system-api.service.mjs +57 -0
  226. package/esm2020/lib/modules/tld-tooltip/services/api-v2/models/error.model.mjs +2 -0
  227. package/esm2020/lib/modules/tld-tooltip/services/api-v2/models/get-langauge-direction.mjs +2 -0
  228. package/esm2020/lib/modules/tld-tooltip/services/api-v2/models/language-direction.model.mjs +2 -0
  229. package/esm2020/lib/modules/tld-tooltip/services/api-v2/tld-system-api-v2.service.mjs +60 -0
  230. package/esm2020/lib/modules/tld-tooltip/services/index.mjs +2 -0
  231. package/esm2020/lib/modules/tld-tooltip/services/tld-system.service.mjs +302 -0
  232. package/esm2020/lib/modules/tld-tooltip/tld-domain-list/tld-domain-list.component.mjs +69 -0
  233. package/esm2020/lib/modules/tld-tooltip/tld-tooltip.module.mjs +95 -0
  234. package/esm2020/lib/modules/tld-tooltip/tld-translate-switcher/tld-translate-switcher.component.mjs +188 -0
  235. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/dropdown/translation-system-picker-dropdown.component.mjs +179 -0
  236. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/dropdown-body/translation-system-picker-dropdown-body.component.mjs +209 -0
  237. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/filter/translation-system-picker-filter.component.mjs +48 -0
  238. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/index.mjs +8 -0
  239. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/language-list/translation-system-picker-language-list.component.mjs +31 -0
  240. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/models/dropdown-body-config.model.mjs +2 -0
  241. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/models/grouped-language-item.mjs +3 -0
  242. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/models/index.mjs +6 -0
  243. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/models/opened-menu.mjs +7 -0
  244. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/models/translated-language.model.mjs +2 -0
  245. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/models/translated-system.model.mjs +2 -0
  246. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/services/index.mjs +2 -0
  247. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/services/translation-system-picker.service.mjs +58 -0
  248. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/system-list/translation-system-picker-system-list.component.mjs +31 -0
  249. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/system-picker-button/translation-system-picker-button.component.mjs +27 -0
  250. package/esm2020/lib/modules/tld-tooltip/translation-system-picker/translation-system-picker.component.mjs +79 -0
  251. package/esm2020/lib/modules/tld-translate-file/tld-translate-file.component.mjs +65 -0
  252. package/esm2020/lib/modules/tld-web/index.mjs +3 -0
  253. package/esm2020/lib/modules/tld-web/tld-translate-web/tld-translate-web.component.mjs +499 -0
  254. package/esm2020/lib/modules/tld-web/tld-translate-web.service.mjs +16 -0
  255. package/esm2020/lib/modules/tld-web/tld-web.module.mjs +52 -0
  256. package/esm2020/lib/tld-translate-body/tld-translate-body.component.mjs +60 -0
  257. package/esm2020/lib/tld-translate.component.mjs +229 -0
  258. package/esm2020/lib/tld-translate.module.mjs +118 -0
  259. package/esm2020/public-api.mjs +43 -0
  260. package/esm2020/tilde-nlp-ngx-translate.mjs +5 -0
  261. package/fesm2015/tilde-nlp-ngx-translate.mjs +11019 -0
  262. package/fesm2015/tilde-nlp-ngx-translate.mjs.map +1 -0
  263. package/fesm2020/tilde-nlp-ngx-translate.mjs +10912 -0
  264. package/fesm2020/tilde-nlp-ngx-translate.mjs.map +1 -0
  265. package/index.d.ts +5 -0
  266. package/lib/components/shared/extension-dialog/components/index.d.ts +1 -0
  267. package/lib/components/shared/extension-dialog/components/open-extension-dialog/open-extension-dialog.component.d.ts +12 -0
  268. package/lib/components/shared/extension-dialog/extension-dialog.component.d.ts +15 -0
  269. package/lib/components/shared/extension-dialog/extension-dialog.module.d.ts +15 -0
  270. package/lib/components/shared/extension-dialog/index.d.ts +5 -0
  271. package/lib/components/shared/extension-dialog/models/enums/file-categories.enum.d.ts +7 -0
  272. package/lib/components/shared/extension-dialog/models/enums/file-extensions.enum.d.ts +33 -0
  273. package/lib/components/shared/extension-dialog/models/enums/file-type-icons.enum.d.ts +11 -0
  274. package/lib/components/shared/extension-dialog/models/enums/file-types.enum.d.ts +11 -0
  275. package/lib/components/shared/extension-dialog/models/enums/index.d.ts +4 -0
  276. package/lib/components/shared/extension-dialog/models/index.d.ts +2 -0
  277. package/lib/components/shared/extension-dialog/models/interfaces/config.d.ts +18 -0
  278. package/lib/components/shared/extension-dialog/models/interfaces/dialog-data.model.d.ts +3 -0
  279. package/lib/components/shared/extension-dialog/models/interfaces/index.d.ts +2 -0
  280. package/lib/components/shared/extension-dialog/services/extension-dialog.service.d.ts +9 -0
  281. package/lib/components/shared/extension-dialog/services/index.d.ts +1 -0
  282. package/lib/components/shared/text-to-speech/index.d.ts +2 -0
  283. package/lib/components/shared/text-to-speech/models/text-to-speech-settings.model.d.ts +23 -0
  284. package/lib/components/shared/text-to-speech/text-to-speech.component.d.ts +18 -0
  285. package/lib/components/shared/text-to-speech/text-to-speech.module.d.ts +11 -0
  286. package/lib/components/shared/vendor-disclaimer/vendor-disclaimer.component.d.ts +17 -0
  287. package/lib/components/shared/vendor-disclaimer/vendor-disclaimer.module.d.ts +9 -0
  288. package/lib/factories/file-api-service.factory.d.ts +7 -0
  289. package/lib/factories/system-service.factory.d.ts +6 -0
  290. package/lib/factories/text-api-service.factory.d.ts +6 -0
  291. package/lib/i18n/available-languages.d.ts +2 -0
  292. package/lib/i18n/de.d.ts +377 -0
  293. package/lib/i18n/en.d.ts +425 -0
  294. package/lib/i18n/et.d.ts +377 -0
  295. package/lib/i18n/fi.d.ts +382 -0
  296. package/lib/i18n/lt.d.ts +377 -0
  297. package/lib/i18n/lv.d.ts +390 -0
  298. package/lib/i18n/models/available-languages.model.d.ts +10 -0
  299. package/lib/i18n/pl.d.ts +377 -0
  300. package/lib/i18n/sv.d.ts +241 -0
  301. package/lib/injection-tokens/file-api-service.token.d.ts +1 -0
  302. package/lib/injection-tokens/index.d.ts +5 -0
  303. package/lib/injection-tokens/system-service.token.d.ts +1 -0
  304. package/lib/injection-tokens/text-api-service.token.d.ts +1 -0
  305. package/lib/injection-tokens/tld-translate-config.token.d.ts +1 -0
  306. package/lib/injection-tokens/translation-api-version.token.d.ts +1 -0
  307. package/lib/modules/material.module.d.ts +27 -0
  308. package/lib/modules/tld-audio/index.d.ts +3 -0
  309. package/lib/modules/tld-audio/models/audio-error-case.model.d.ts +11 -0
  310. package/lib/modules/tld-audio/models/dictate-configurationi.model.d.ts +6 -0
  311. package/lib/modules/tld-audio/models/index.d.ts +2 -0
  312. package/lib/modules/tld-audio/models/transcription-update.model.d.ts +4 -0
  313. package/lib/modules/tld-audio/services/audio-record.service.d.ts +35 -0
  314. package/lib/modules/tld-audio/services/index.d.ts +3 -0
  315. package/lib/modules/tld-audio/services/tld-voice-input-api.service.d.ts +16 -0
  316. package/lib/modules/tld-audio/services/tld-voice-input.service.d.ts +20 -0
  317. package/lib/modules/tld-audio/tld-audio.module.d.ts +14 -0
  318. package/lib/modules/tld-audio/tld-dictate/tld-dictate.component.d.ts +43 -0
  319. package/lib/modules/tld-audio/tld-record/tld-record.component.d.ts +32 -0
  320. package/lib/modules/tld-common/animations/pulse.animation.d.ts +1 -0
  321. package/lib/modules/tld-common/components/index.d.ts +9 -0
  322. package/lib/modules/tld-common/components/open-close-button/open-close-button.component.d.ts +15 -0
  323. package/lib/modules/tld-common/components/source-and-target-wrapper/source-and-target-wrapper.component.d.ts +19 -0
  324. package/lib/modules/tld-common/components/tld-file-upload/tld-file-upload.component.d.ts +28 -0
  325. package/lib/modules/tld-common/components/tld-lang-list/tld-lang-list.component.d.ts +52 -0
  326. package/lib/modules/tld-common/components/tld-list-menu/tld-list-menu.component.d.ts +24 -0
  327. package/lib/modules/tld-common/components/tld-loader/tld-loader.component.d.ts +5 -0
  328. package/lib/modules/tld-common/components/tld-message/tld-message.component.d.ts +18 -0
  329. package/lib/modules/tld-common/components/tld-translate-achievement/tld-translate-achievement.component.d.ts +6 -0
  330. package/lib/modules/tld-common/components/translate-button/tld-translate-button.service.d.ts +12 -0
  331. package/lib/modules/tld-common/components/translate-button/translate-button.component.d.ts +22 -0
  332. package/lib/modules/tld-common/directives/drag-and-drop.directive.d.ts +14 -0
  333. package/lib/modules/tld-common/directives/index.d.ts +1 -0
  334. package/lib/modules/tld-common/index.d.ts +1 -0
  335. package/lib/modules/tld-common/models/auth-options.model.d.ts +4 -0
  336. package/lib/modules/tld-common/models/common.d.ts +28 -0
  337. package/lib/modules/tld-common/models/configs/tld-audio-config.model.d.ts +22 -0
  338. package/lib/modules/tld-common/models/configs/tld-term-config.model.d.ts +27 -0
  339. package/lib/modules/tld-common/models/configs/tld-text-to-speech-config.model.d.ts +11 -0
  340. package/lib/modules/tld-common/models/configs/tld-translate-api-v2-config.model.d.ts +11 -0
  341. package/lib/modules/tld-common/models/configs/tld-translate-config.model.d.ts +18 -0
  342. package/lib/modules/tld-common/models/configs/tld-translate-core-config.model.d.ts +42 -0
  343. package/lib/modules/tld-common/models/configs/tld-translate-file-config.model.d.ts +25 -0
  344. package/lib/modules/tld-common/models/configs/tld-translate-text-config.model.d.ts +39 -0
  345. package/lib/modules/tld-common/models/configs/tld-translate-web-config.model.d.ts +10 -0
  346. package/lib/modules/tld-common/models/core/index.d.ts +2 -0
  347. package/lib/modules/tld-common/models/core/language-menu-version.enum.d.ts +4 -0
  348. package/lib/modules/tld-common/models/core/translation-api-version.model.d.ts +4 -0
  349. package/lib/modules/tld-common/models/errors/error-codes.enum.d.ts +21 -0
  350. package/lib/modules/tld-common/models/errors/error-codes.type.d.ts +4 -0
  351. package/lib/modules/tld-common/models/errors/error.model.d.ts +3 -0
  352. package/lib/modules/tld-common/models/file-upload.model.d.ts +13 -0
  353. package/lib/modules/tld-common/models/index.d.ts +21 -0
  354. package/lib/modules/tld-common/models/lang-list-item.model.d.ts +6 -0
  355. package/lib/modules/tld-common/models/language-with-translation.model.d.ts +6 -0
  356. package/lib/modules/tld-common/models/message.model.d.ts +11 -0
  357. package/lib/modules/tld-common/models/selected-language.model.d.ts +4 -0
  358. package/lib/modules/tld-common/models/services/file-api/download-file-params.model.d.ts +5 -0
  359. package/lib/modules/tld-common/models/services/file-api/file-api-service.model.d.ts +17 -0
  360. package/lib/modules/tld-common/models/services/file-api/file-meta.model.d.ts +8 -0
  361. package/lib/modules/tld-common/models/services/file-api/file-translation-substatus.model.d.ts +7 -0
  362. package/lib/modules/tld-common/models/services/file-api/get-file-status-params.model.d.ts +6 -0
  363. package/lib/modules/tld-common/models/services/file-api/get-file-translation-status-response.model.d.ts +13 -0
  364. package/lib/modules/tld-common/models/services/file-api/remove-file-params.model.d.ts +4 -0
  365. package/lib/modules/tld-common/models/services/file-api/source-file-preview-response.model.d.ts +8 -0
  366. package/lib/modules/tld-common/models/services/file-api/start-file-translation-params.model.d.ts +6 -0
  367. package/lib/modules/tld-common/models/services/file-api/translated-document-preview-params.model.d.ts +4 -0
  368. package/lib/modules/tld-common/models/services/index.d.ts +18 -0
  369. package/lib/modules/tld-common/models/services/system/system.model.d.ts +17 -0
  370. package/lib/modules/tld-common/models/services/system/tld-system-api-service.model.d.ts +5 -0
  371. package/lib/modules/tld-common/models/services/text-api/check-grammar-response.model.d.ts +6 -0
  372. package/lib/modules/tld-common/models/services/text-api/tld-translate-text-api-service.model.d.ts +26 -0
  373. package/lib/modules/tld-common/models/services/text-api/translate-paragraph-request-params.model.d.ts +6 -0
  374. package/lib/modules/tld-common/models/services/voice-to-text/voice-to-text-job-state.model.d.ts +5 -0
  375. package/lib/modules/tld-common/models/services/voice-to-text/voice-to-text-job.model.d.ts +21 -0
  376. package/lib/modules/tld-common/models/services/voice-to-text/voice-to-text-start-job-request-params.model.d.ts +7 -0
  377. package/lib/modules/tld-common/pipes/index.d.ts +1 -0
  378. package/lib/modules/tld-common/pipes/translate-domain.pipe.d.ts +13 -0
  379. package/lib/modules/tld-common/services/icon-service/icon.service.d.ts +12 -0
  380. package/lib/modules/tld-common/services/icon-service/icons/file-types/excel.icon.d.ts +1 -0
  381. package/lib/modules/tld-common/services/icon-service/icons/file-types/index.d.ts +9 -0
  382. package/lib/modules/tld-common/services/icon-service/icons/file-types/interchange.icon.d.ts +1 -0
  383. package/lib/modules/tld-common/services/icon-service/icons/file-types/office-other.icon.d.ts +1 -0
  384. package/lib/modules/tld-common/services/icon-service/icons/file-types/other.icon.d.ts +1 -0
  385. package/lib/modules/tld-common/services/icon-service/icons/file-types/pdf.icon.d.ts +1 -0
  386. package/lib/modules/tld-common/services/icon-service/icons/file-types/powerpoint.icon.d.ts +1 -0
  387. package/lib/modules/tld-common/services/icon-service/icons/file-types/scanned.icon.d.ts +1 -0
  388. package/lib/modules/tld-common/services/icon-service/icons/file-types/web.icon.d.ts +1 -0
  389. package/lib/modules/tld-common/services/icon-service/icons/file-types/word.icon.d.ts +1 -0
  390. package/lib/modules/tld-common/services/icon-service/icons.d.ts +3 -0
  391. package/lib/modules/tld-common/services/index.d.ts +4 -0
  392. package/lib/modules/tld-common/services/scroll/tld-scroll.service.d.ts +12 -0
  393. package/lib/modules/tld-common/services/tld-alert.service.d.ts +33 -0
  394. package/lib/modules/tld-common/services/tld-highlight.service.d.ts +14 -0
  395. package/lib/modules/tld-common/services/tld-translate-config.service.d.ts +39 -0
  396. package/lib/modules/tld-common/services/wtw-link-params.service.d.ts +13 -0
  397. package/lib/modules/tld-common/tld-common.module.d.ts +23 -0
  398. package/lib/modules/tld-document/download-button/download-button.component.d.ts +30 -0
  399. package/lib/modules/tld-document/image-conversion-help/image-conversion-help.component.d.ts +21 -0
  400. package/lib/modules/tld-document/index.d.ts +7 -0
  401. package/lib/modules/tld-document/models/file-conversion-types.model.d.ts +4 -0
  402. package/lib/modules/tld-document/models/index.d.ts +5 -0
  403. package/lib/modules/tld-document/models/start-translation.model.d.ts +16 -0
  404. package/lib/modules/tld-document/models/translate-file.model.d.ts +33 -0
  405. package/lib/modules/tld-document/models/translation-statuss.model.d.ts +12 -0
  406. package/lib/modules/tld-document/models/upload-response.model.d.ts +8 -0
  407. package/lib/modules/tld-document/pdf-conversion-help/pdf-conversion-help.component.d.ts +21 -0
  408. package/lib/modules/tld-document/services/api/file-api.service.d.ts +26 -0
  409. package/lib/modules/tld-document/services/api/models/file-preview-v1-progress-response.model.d.ts +6 -0
  410. package/lib/modules/tld-document/services/api/models/file-preview-v1-response-body.model.d.ts +8 -0
  411. package/lib/modules/tld-document/services/api/models/get-file-translation-status-v1-response.model.d.ts +11 -0
  412. package/lib/modules/tld-document/services/api-v2/file-api-v2.service.d.ts +22 -0
  413. package/lib/modules/tld-document/services/api-v2/models/file-category-v2.model.d.ts +4 -0
  414. package/lib/modules/tld-document/services/api-v2/models/file-translation-status-v2-response.model.d.ts +20 -0
  415. package/lib/modules/tld-document/services/index.d.ts +2 -0
  416. package/lib/modules/tld-document/services/tld-translate-file.service.d.ts +60 -0
  417. package/lib/modules/tld-document/tld-document.module.d.ts +19 -0
  418. package/lib/modules/tld-document/tld-file-translate-base.component.d.ts +29 -0
  419. package/lib/modules/tld-document/tld-translate-file-multiple/tld-translate-file-multiple.component.d.ts +40 -0
  420. package/lib/modules/tld-term/index.d.ts +6 -0
  421. package/lib/modules/tld-term/models/converted-collection-tooltip-key.model.d.ts +5 -0
  422. package/lib/modules/tld-term/models/converted-collection-type.model.d.ts +7 -0
  423. package/lib/modules/tld-term/models/index.d.ts +6 -0
  424. package/lib/modules/tld-term/models/mt-api/tld-mt-term-collection.model.d.ts +15 -0
  425. package/lib/modules/tld-term/models/mt-collection-status.model.d.ts +5 -0
  426. package/lib/modules/tld-term/models/term-api/tld-term-collection-languages.model.d.ts +11 -0
  427. package/lib/modules/tld-term/models/term-api/tld-term-collection.model.d.ts +46 -0
  428. package/lib/modules/tld-term/models/tld-converted-collection.model.d.ts +43 -0
  429. package/lib/modules/tld-term/services/index.d.ts +3 -0
  430. package/lib/modules/tld-term/services/mt-collections-api.service.d.ts +13 -0
  431. package/lib/modules/tld-term/services/term-api.service.d.ts +15 -0
  432. package/lib/modules/tld-term/services/tld-term-collections.service.d.ts +57 -0
  433. package/lib/modules/tld-term/tld-term-collection/tld-term-collection.component.d.ts +9 -0
  434. package/lib/modules/tld-term/tld-term-collection-list/tld-term-collection-list.component.d.ts +39 -0
  435. package/lib/modules/tld-term/tld-term-create-collection-dialog/tld-term-create-collection-dialog.component.d.ts +20 -0
  436. package/lib/modules/tld-term/tld-term-menu/tld-term-menu.component.d.ts +13 -0
  437. package/lib/modules/tld-term/tld-term-promotion/tld-term-promotion.component.d.ts +17 -0
  438. package/lib/modules/tld-term/tld-term.module.d.ts +22 -0
  439. package/lib/modules/tld-text/components/highlight-tree/highlight-tree.component.d.ts +27 -0
  440. package/lib/modules/tld-text/components/progress-indicator/progress-indicator.component.d.ts +20 -0
  441. package/lib/modules/tld-text/components/textarea-with-background/textarea-with-background.component.d.ts +40 -0
  442. package/lib/modules/tld-text/components/tld-dictionary/tld-dictionary.component.d.ts +24 -0
  443. package/lib/modules/tld-text/components/tld-translate-source/tld-translate-source.component.d.ts +36 -0
  444. package/lib/modules/tld-text/components/tld-translate-suggest/dialog/suggest-translation.model.d.ts +11 -0
  445. package/lib/modules/tld-text/components/tld-translate-suggest/dialog/tld-translate-suggest-dialog.component.d.ts +33 -0
  446. package/lib/modules/tld-text/components/tld-translate-suggest/tld-translate-suggest.component.d.ts +24 -0
  447. package/lib/modules/tld-text/components/tld-translate-text/tld-translate-text.component.d.ts +104 -0
  448. package/lib/modules/tld-text/index.d.ts +8 -0
  449. package/lib/modules/tld-text/models/check-grammar-response-v2.model.d.ts +4 -0
  450. package/lib/modules/tld-text/models/dictionary.model.d.ts +28 -0
  451. package/lib/modules/tld-text/models/get-sentence-v1-response.model.d.ts +5 -0
  452. package/lib/modules/tld-text/models/grammar-check-base.model.d.ts +6 -0
  453. package/lib/modules/tld-text/models/grammar-check-meta.model.d.ts +5 -0
  454. package/lib/modules/tld-text/models/grammar-check-replacement.model.d.ts +5 -0
  455. package/lib/modules/tld-text/models/grammar-correction-v2.model.d.ts +9 -0
  456. package/lib/modules/tld-text/models/highlight-params.model.d.ts +10 -0
  457. package/lib/modules/tld-text/models/highlight-tree-type.model.d.ts +10 -0
  458. package/lib/modules/tld-text/models/highlight-tree.model.d.ts +22 -0
  459. package/lib/modules/tld-text/models/highlight.model.d.ts +10 -0
  460. package/lib/modules/tld-text/models/index.d.ts +10 -0
  461. package/lib/modules/tld-text/models/retranslate-params.model.d.ts +4 -0
  462. package/lib/modules/tld-text/models/source-text-changed.model.d.ts +6 -0
  463. package/lib/modules/tld-text/models/translate-paragraph-params.model.d.ts +6 -0
  464. package/lib/modules/tld-text/models/translate-paragraph-response-v1.model.d.ts +15 -0
  465. package/lib/modules/tld-text/models/translate-paragraph-response-v2.model.d.ts +9 -0
  466. package/lib/modules/tld-text/models/translate-paragraph-response.model.d.ts +7 -0
  467. package/lib/modules/tld-text/models/untranslated-paragraph.model.d.ts +4 -0
  468. package/lib/modules/tld-text/services/api/tld-translate-text-api.service.d.ts +24 -0
  469. package/lib/modules/tld-text/services/api-v2/tld-translate-text-api-v2.service.d.ts +17 -0
  470. package/lib/modules/tld-text/services/index.d.ts +1 -0
  471. package/lib/modules/tld-text/services/tld-translate-text.service.d.ts +104 -0
  472. package/lib/modules/tld-text/tld-text.module.d.ts +27 -0
  473. package/lib/modules/tld-text/utils/index.d.ts +1 -0
  474. package/lib/modules/tld-text/utils/models/existing-paragraph-info.model.d.ts +5 -0
  475. package/lib/modules/tld-text/utils/models/index.d.ts +1 -0
  476. package/lib/modules/tld-text/utils/tld-translate-text.utils.d.ts +9 -0
  477. package/lib/modules/tld-tooltip/index.d.ts +4 -0
  478. package/lib/modules/tld-tooltip/models/active-data.model.d.ts +24 -0
  479. package/lib/modules/tld-tooltip/models/domain.model.d.ts +8 -0
  480. package/lib/modules/tld-tooltip/models/index.d.ts +4 -0
  481. package/lib/modules/tld-tooltip/models/switcher-options.model.d.ts +14 -0
  482. package/lib/modules/tld-tooltip/models/system-metadata-keys.model.d.ts +5 -0
  483. package/lib/modules/tld-tooltip/models/vendor.model.d.ts +4 -0
  484. package/lib/modules/tld-tooltip/services/api/models/description.model.d.ts +4 -0
  485. package/lib/modules/tld-tooltip/services/api/models/language.model.d.ts +5 -0
  486. package/lib/modules/tld-tooltip/services/api/models/metadata.model.d.ts +4 -0
  487. package/lib/modules/tld-tooltip/services/api/models/name.model.d.ts +4 -0
  488. package/lib/modules/tld-tooltip/services/api/models/system.model.d.ts +14 -0
  489. package/lib/modules/tld-tooltip/services/api/tld-system-api.service.d.ts +15 -0
  490. package/lib/modules/tld-tooltip/services/api-v2/models/error.model.d.ts +4 -0
  491. package/lib/modules/tld-tooltip/services/api-v2/models/get-langauge-direction.d.ts +6 -0
  492. package/lib/modules/tld-tooltip/services/api-v2/models/language-direction.model.d.ts +7 -0
  493. package/lib/modules/tld-tooltip/services/api-v2/tld-system-api-v2.service.d.ts +15 -0
  494. package/lib/modules/tld-tooltip/services/index.d.ts +1 -0
  495. package/lib/modules/tld-tooltip/services/tld-system.service.d.ts +57 -0
  496. package/lib/modules/tld-tooltip/tld-domain-list/tld-domain-list.component.d.ts +33 -0
  497. package/lib/modules/tld-tooltip/tld-tooltip.module.d.ts +25 -0
  498. package/lib/modules/tld-tooltip/tld-translate-switcher/tld-translate-switcher.component.d.ts +64 -0
  499. package/lib/modules/tld-tooltip/translation-system-picker/dropdown/translation-system-picker-dropdown.component.d.ts +44 -0
  500. package/lib/modules/tld-tooltip/translation-system-picker/dropdown-body/translation-system-picker-dropdown-body.component.d.ts +65 -0
  501. package/lib/modules/tld-tooltip/translation-system-picker/filter/translation-system-picker-filter.component.d.ts +17 -0
  502. package/lib/modules/tld-tooltip/translation-system-picker/index.d.ts +7 -0
  503. package/lib/modules/tld-tooltip/translation-system-picker/language-list/translation-system-picker-language-list.component.d.ts +14 -0
  504. package/lib/modules/tld-tooltip/translation-system-picker/models/dropdown-body-config.model.d.ts +11 -0
  505. package/lib/modules/tld-tooltip/translation-system-picker/models/grouped-language-item.d.ts +8 -0
  506. package/lib/modules/tld-tooltip/translation-system-picker/models/index.d.ts +5 -0
  507. package/lib/modules/tld-tooltip/translation-system-picker/models/opened-menu.d.ts +5 -0
  508. package/lib/modules/tld-tooltip/translation-system-picker/models/translated-language.model.d.ts +4 -0
  509. package/lib/modules/tld-tooltip/translation-system-picker/models/translated-system.model.d.ts +4 -0
  510. package/lib/modules/tld-tooltip/translation-system-picker/services/index.d.ts +1 -0
  511. package/lib/modules/tld-tooltip/translation-system-picker/services/translation-system-picker.service.d.ts +24 -0
  512. package/lib/modules/tld-tooltip/translation-system-picker/system-list/translation-system-picker-system-list.component.d.ts +13 -0
  513. package/lib/modules/tld-tooltip/translation-system-picker/system-picker-button/translation-system-picker-button.component.d.ts +10 -0
  514. package/lib/modules/tld-tooltip/translation-system-picker/translation-system-picker.component.d.ts +34 -0
  515. package/lib/modules/tld-translate-file/tld-translate-file.component.d.ts +37 -0
  516. package/lib/modules/tld-web/index.d.ts +2 -0
  517. package/lib/modules/tld-web/tld-translate-web/tld-translate-web.component.d.ts +85 -0
  518. package/lib/modules/tld-web/tld-translate-web.service.d.ts +7 -0
  519. package/lib/modules/tld-web/tld-web.module.d.ts +14 -0
  520. package/lib/tld-translate-body/tld-translate-body.component.d.ts +23 -0
  521. package/lib/tld-translate.component.d.ts +65 -0
  522. package/lib/tld-translate.module.d.ts +23 -0
  523. package/package.json +40 -0
  524. package/public-api.d.ts +28 -0
  525. package/src/assets/webcomponent/styles.css +1 -0
  526. package/src/assets/webcomponent/tld-translate.js +3 -0
  527. package/src/assets/webtranslate/page-translate-widget.js +4934 -0
  528. package/src/assets/webtranslate/remove.png +0 -0
  529. package/src/assets/webtranslate/tilde_logo.png +0 -0
  530. package/src/assets/webtranslate/translate-website.js +393 -0
  531. package/src/assets/webtranslate/widget.css +139 -0
  532. package/src/styles/colors.scss +15 -0
  533. package/src/styles/fonts.scss +3 -0
  534. package/src/styles/mixin/border-default.scss +10 -0
  535. package/src/styles/mixin/tld-translate-accent-colors.scss +46 -0
  536. package/src/styles/mixin/tld-translate-colors.scss +7 -0
  537. package/src/styles/mixin/tld-translate-placeholders.scss +5 -0
  538. package/src/styles/mixin/tld-translate-primary-colors.scss +5 -0
  539. package/src/styles/styles.scss +377 -0
  540. package/src/styles/translator-borders.scss +28 -0
  541. package/tilde-nlp-ngx-translate-1.0.0.tgz +0 -0
@@ -0,0 +1,380 @@
1
+ import { Inject, Injectable } from '@angular/core';
2
+ import { of, Subject, timer } from 'rxjs';
3
+ import { catchError, debounce, distinctUntilChanged, mergeMap, tap } from 'rxjs/operators';
4
+ import { TEXT_API_SERVICE_TOKEN } from '../../../injection-tokens';
5
+ import { Common, ErrorCode } from '../../tld-common/models';
6
+ import { HighlightTreeType } from '../models/highlight-tree-type.model';
7
+ import { TldTranslateTextUtils } from '../utils/tld-translate-text.utils';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "../../tld-tooltip/services";
10
+ import * as i2 from "../../tld-common/services/scroll/tld-scroll.service";
11
+ import * as i3 from "../../tld-common/services";
12
+ import * as i4 from "@ngx-translate/core";
13
+ export class TldTranslateTextService {
14
+ constructor(api, systemService, tldScrollService, configService, translate, highlightService, alertsService) {
15
+ this.api = api;
16
+ this.systemService = systemService;
17
+ this.tldScrollService = tldScrollService;
18
+ this.configService = configService;
19
+ this.translate = translate;
20
+ this.highlightService = highlightService;
21
+ this.alertsService = alertsService;
22
+ this._sourceChange = new Subject();
23
+ this._sourceScroll = new Subject();
24
+ this._translateButtonClick = new Subject();
25
+ this._onClear = new Subject();
26
+ this.paragraphs = [];
27
+ this.sourceParagraphs = [];
28
+ this.targetParagraphs = [];
29
+ this.paragraphTranslationsSubject = new Subject();
30
+ this.debouncer = new Subject();
31
+ /** How many paragraphs can be translated at the same time. */
32
+ this.CONCURRENT_UPLOADS = 5;
33
+ this.DEBOUNCE_TIME = 1000;
34
+ /** Whether progress indicator should be shown. This value must be set to true only if configured time has passed. */
35
+ this._shouldShowProgressIndicator = false;
36
+ this._untranslatedParagraphCount = 0;
37
+ }
38
+ get sourceText() {
39
+ return this._sourceText;
40
+ }
41
+ get sourceTextHypothesis() {
42
+ return this._sourceTextHypothesis;
43
+ }
44
+ get sourceChange() { return this._sourceChange.asObservable(); }
45
+ get sourceScroll() { return this._sourceScroll.asObservable(); }
46
+ get translateButtonClick() { return this._translateButtonClick.asObservable(); }
47
+ get hasDictionary() { return this._hasDictionary; }
48
+ set hasDictionary(val) {
49
+ this._hasDictionary = val;
50
+ if (!val) {
51
+ this._dictionaryEntry = null;
52
+ }
53
+ }
54
+ get dictionaryEntry() { return this._dictionaryEntry; }
55
+ set dictionaryEntry(val) {
56
+ this._dictionaryEntry = val;
57
+ if (this.dictionaryEntry) {
58
+ this.hasDictionary = true;
59
+ }
60
+ }
61
+ get translatedText() {
62
+ return this.targetParagraphs.map(line => line.originalText).join("\n");
63
+ }
64
+ get firstParagraphTranslated() {
65
+ return this._firstParagraphTranslated;
66
+ }
67
+ get shouldShowProgressIndicator() { return this._shouldShowProgressIndicator; }
68
+ get untranslatedParagraphCount() { return this._untranslatedParagraphCount; }
69
+ set untranslatedParagraphCount(value) {
70
+ this._untranslatedParagraphCount = value;
71
+ // When translation finished, progress indicator should not be shown.
72
+ if (value === 0) {
73
+ this.toggleTextToSpeech();
74
+ this.hideProgressIndicator();
75
+ }
76
+ }
77
+ get isTranslating() { return this.untranslatedParagraphCount > 0; }
78
+ // getters from config service.
79
+ get allowWebsiteTranslation() { return this.configService.textConfig.allowWebsiteTranslation; }
80
+ ;
81
+ get autoRedirectToWebTranslate() { return this.configService.textConfig.autoRedirectToWebTranslate; }
82
+ ;
83
+ get webWidgetRedirectUrlPrefix() { return this.configService.textConfig.webWidgetRedirectUrlPrefix; }
84
+ ;
85
+ get webWidgetRedirectUrlPosfix() { return this.configService.textConfig.webWidgetRedirectUrlPosfix; }
86
+ ;
87
+ get useDictionary() { return this.configService.textConfig.useDictionary; }
88
+ ;
89
+ get progressIndicatorTimeoutMiliSeconds() { return this.configService.textConfig.progressIndicatorTimeoutMiliSeconds; }
90
+ // -----------------------------
91
+ get activeData() {
92
+ return this.systemService.getActiveSystemObj();
93
+ }
94
+ get translateUrlRedirect() {
95
+ if (this.webWidgetRedirectUrlPrefix === '') {
96
+ return `${this.webWidgetRedirectUrlPrefix}${this.webWidgetRedirectUrlPosfix}${encodeURIComponent(this.urlToTranslate)}`;
97
+ }
98
+ else {
99
+ return `${this.webWidgetRedirectUrlPrefix}${this.translate.currentLang}${this.webWidgetRedirectUrlPosfix}${this.urlToTranslate}`;
100
+ }
101
+ }
102
+ dictionaryTranslation(text, srcCode, trgCode) {
103
+ return this.api.dictionaryTranslation(text, srcCode, trgCode);
104
+ }
105
+ changeSource(event) {
106
+ this._sourceText = event.phrase;
107
+ this._sourceChange.next(event);
108
+ this.debouncer.next(event);
109
+ }
110
+ changeSourceHypothesis(text) {
111
+ this._sourceTextHypothesis = text;
112
+ }
113
+ onSourceScroll(offsetTop) {
114
+ this._sourceScroll.next(offsetTop);
115
+ }
116
+ onTranslateButtonClick() {
117
+ this._translateButtonClick.next(null);
118
+ this.retranslate({ buttonClicked: true });
119
+ }
120
+ clearSource() {
121
+ this._onClear.next(null);
122
+ this.changeSource({ phrase: "" });
123
+ }
124
+ onClear() {
125
+ return this._onClear.asObservable();
126
+ }
127
+ updateTranslation(options, systemID, text, translation) {
128
+ return this.api.updateTranslation(options, systemID, text, translation);
129
+ }
130
+ listenOnChanges() {
131
+ if (this.debouncerSubscription) {
132
+ return;
133
+ }
134
+ this.debouncerSubscription = this.debouncer.pipe(distinctUntilChanged((previous) => {
135
+ return previous.phrase == this.sourceText;
136
+ }), debounce(ev => ev.phrase?.length > 0 ? timer(this.DEBOUNCE_TIME) : timer(0)))
137
+ .subscribe((event) => {
138
+ this.highlightService.changeSelectedTargetSentence(null);
139
+ if (!event.disableAutomaticTranslation) {
140
+ this.retranslate();
141
+ }
142
+ });
143
+ }
144
+ stopListeningToChanges() {
145
+ if (!this.debouncerSubscription) {
146
+ return;
147
+ }
148
+ this.debouncerSubscription.unsubscribe();
149
+ this.debouncerSubscription = null;
150
+ }
151
+ // if method gets called because of button click and url entered - go to web translation
152
+ retranslate(params) {
153
+ if (!this.sourceText || this.sourceText == "") {
154
+ this.clearSourceParams();
155
+ return;
156
+ }
157
+ if (params?.buttonClicked || params?.systemChanged) {
158
+ this.clearSourceParams();
159
+ }
160
+ const maxSourceCharacterDictionary = 200;
161
+ const maxDictionaryWords = 12;
162
+ const wordsInSource = Common.getWordCount(this.sourceText);
163
+ this.urlToTranslate = Common.isTextUrl(this.sourceText);
164
+ if (this.allowWebsiteTranslation && this.urlToTranslate) {
165
+ this.paragraphs = [];
166
+ this.sourceParagraphs = [];
167
+ this.targetParagraphs = [];
168
+ if (this.autoRedirectToWebTranslate || params?.buttonClicked) {
169
+ window.open(this.translateUrlRedirect, "_blank");
170
+ }
171
+ return;
172
+ }
173
+ else {
174
+ this.urlToTranslate = null;
175
+ }
176
+ // TODO. Letonika dictionary?
177
+ if (this.useDictionary && this.sourceText.length < maxSourceCharacterDictionary && wordsInSource <= maxDictionaryWords) {
178
+ this.prepareAndTranslateWords();
179
+ return;
180
+ }
181
+ this.translateText(this.sourceText);
182
+ }
183
+ /** Stops text translation if it is active. */
184
+ stopTranslation() {
185
+ this.untranslatedParagraphCount = 0;
186
+ if (this.paragraphTranslationSubscription) {
187
+ this.paragraphTranslationSubscription.unsubscribe();
188
+ }
189
+ if (this.dictionarySubscription) {
190
+ this.dictionarySubscription.unsubscribe();
191
+ }
192
+ }
193
+ recreateParagraphTranslationSubject() {
194
+ this._firstParagraphTranslated = false;
195
+ this.paragraphTranslationsSubject = new Subject();
196
+ const source = this.sourceText;
197
+ this.untranslatedParagraphCount = 0;
198
+ this.paragraphTranslationSubscription = this.paragraphTranslationsSubject.asObservable().pipe(mergeMap((untranslatedParagraph) => {
199
+ this.untranslatedParagraphCount += 1;
200
+ return this.translateParagraph(untranslatedParagraph).pipe(tap((response) => {
201
+ // No need to handle response if source text has changed.
202
+ if (source != this.sourceText) {
203
+ return;
204
+ }
205
+ this.handleTranslatedParagraph(response);
206
+ this.updateParagraphs(untranslatedParagraph.ix, response);
207
+ this.untranslatedParagraphCount -= 1;
208
+ }), catchError(err => {
209
+ this.untranslatedParagraphCount -= 1;
210
+ if (err.status === 500) {
211
+ this.alertsService.unhandeledError({ ErrorCode: ErrorCode.TRANSLATION_FAILED });
212
+ }
213
+ this.alertsService.unhandeledError(err);
214
+ // after calling this method, subject is destroyed and unsubscribed, so thrown error wont have any effect.
215
+ this.stopTranslation();
216
+ this.alertsService.unhandeledError(err);
217
+ throw err;
218
+ }));
219
+ }, this.CONCURRENT_UPLOADS)).subscribe();
220
+ }
221
+ translateParagraph(paragraph) {
222
+ const params = {
223
+ paragraphIx: paragraph.ix,
224
+ text: paragraph.line,
225
+ system: this.activeData
226
+ };
227
+ if (!params.text || params.text.length === 0) {
228
+ return of({
229
+ sourceTree: { text: "", paragraphIx: params.paragraphIx, type: HighlightTreeType.PARAGRAPH, root: null, originalText: "" },
230
+ targetTree: { text: "", paragraphIx: params.paragraphIx, type: HighlightTreeType.PARAGRAPH, root: null, originalText: "" }
231
+ });
232
+ }
233
+ return this.api.translateParagraph(params);
234
+ }
235
+ handleTranslatedParagraph(paragraph) {
236
+ //if auto domain detection is on, system api service sets system id to `${srcLang}-${targetLang}` so we need to validate if that is the case
237
+ if (paragraph.systemId && this.activeData.id !== paragraph.systemId
238
+ && this.activeData.id === `${this.activeData.sourceLanguage}-${this.activeData.targetLanguage}`) {
239
+ this.systemService.changeSystem(paragraph.systemId);
240
+ }
241
+ // Needs to scroll to top after first paragraph is translated.
242
+ if (!this._firstParagraphTranslated) {
243
+ // if empty paragraph is 'translated' first, no need to do any scrolling. Wait for real text to be translated.
244
+ if (paragraph.targetTree.text.trim().length > 0) {
245
+ this._firstParagraphTranslated = true;
246
+ this.tldScrollService.syncScrollbars(null, 0);
247
+ }
248
+ }
249
+ }
250
+ updateParagraphs(paragraphIx, response) {
251
+ let paragraph = {
252
+ ix: paragraphIx,
253
+ target: response.targetTree,
254
+ source: response.sourceTree
255
+ };
256
+ this.paragraphs.splice(paragraphIx, 1, paragraph);
257
+ this.sourceParagraphs.splice(paragraphIx, 1, response.sourceTree);
258
+ this.targetParagraphs.splice(paragraphIx, 1, response.targetTree);
259
+ this.paragraphs.sort((a, b) => (a.ix > b.ix) ? 1 : -1);
260
+ }
261
+ clearSourceParams() {
262
+ this._dictionaryEntry = null;
263
+ this._hasDictionary = false;
264
+ this.paragraphs = [];
265
+ this.targetParagraphs = [];
266
+ this.sourceParagraphs = [];
267
+ this.urlToTranslate = null;
268
+ this.textToSpeechTargetSettings = null;
269
+ this.textToSpeechSourceSettings = null;
270
+ this.stopTranslation();
271
+ }
272
+ prepareAndTranslateWords() {
273
+ const activeSystemObject = this.activeData;
274
+ this.dictionarySubscription = this.dictionaryTranslation(this.sourceText.trim(), activeSystemObject.sourceLanguage, activeSystemObject.targetLanguage)
275
+ .subscribe((response) => {
276
+ this.dictionarySubscription = null;
277
+ if (!response || !response[0] || !response[0].translations || response[0].translations.length == 0) {
278
+ this.translateText(this.sourceText);
279
+ this.hasDictionary = false;
280
+ return;
281
+ }
282
+ this.dictionaryEntry = response;
283
+ }, () => {
284
+ this.translateText(this.sourceText);
285
+ this.hasDictionary = false;
286
+ });
287
+ }
288
+ translateText(text) {
289
+ const paragraphs = Common.splitInParagraphs(text);
290
+ const newParagraphs = [];
291
+ const newSourceParagraphs = [];
292
+ const newTargetParagraphs = [];
293
+ // source text changed. Previously made observables aren't necessary anymore;
294
+ this.recreateParagraphTranslationSubject();
295
+ paragraphs.forEach((paragraph, ix) => {
296
+ // Check if paragraph with same text exists (so you don't have to translate it again).
297
+ // If it does, you can clone it.
298
+ const existingParagraphInfo = TldTranslateTextUtils.findExistingParagraph(paragraph, ix, this.paragraphs);
299
+ const existingParagraph = existingParagraphInfo.existingParagraph;
300
+ if (existingParagraphInfo.existingParagraph) {
301
+ if (!existingParagraphInfo.hasSameIx) {
302
+ TldTranslateTextUtils.changeRootAndParagraphIx(existingParagraph.source, existingParagraph.source, existingParagraph.ix);
303
+ TldTranslateTextUtils.changeRootAndParagraphIx(existingParagraph.target, existingParagraph.target, existingParagraph.ix);
304
+ }
305
+ newParagraphs.splice(ix, 0, existingParagraph);
306
+ newTargetParagraphs.splice(ix, 0, existingParagraph.target);
307
+ newSourceParagraphs.splice(ix, 0, existingParagraph.source);
308
+ }
309
+ else {
310
+ const newParagraph = TldTranslateTextUtils.createEmptyParagraphInfo(ix);
311
+ newParagraphs.splice(ix, 0, newParagraph);
312
+ newSourceParagraphs.splice(ix, 0, newParagraph.source);
313
+ newTargetParagraphs.splice(ix, 0, newParagraph.target);
314
+ this.paragraphTranslationsSubject.next({ ix: ix, line: paragraph });
315
+ }
316
+ });
317
+ if (this.isTranslating) {
318
+ this.setProgressIndicatorTimeout();
319
+ }
320
+ this.paragraphs = newParagraphs;
321
+ this.targetParagraphs = newTargetParagraphs;
322
+ this.sourceParagraphs = newSourceParagraphs;
323
+ }
324
+ /** Creates timeout which enables progress indicator after given miliseconds */
325
+ setProgressIndicatorTimeout() {
326
+ if (this.progressIndicatorTimeoutMiliSeconds === null || this.progressIndicatorTimeoutMiliSeconds === undefined) {
327
+ return;
328
+ }
329
+ if (this.configService.textConfig.progressIndicatorVisible) {
330
+ this.progressIndicatorTimeout = setTimeout(() => {
331
+ this.showProgressIndicator();
332
+ }, this.progressIndicatorTimeoutMiliSeconds);
333
+ }
334
+ }
335
+ /** Method for setting necessary properties to make progress indicator visible. */
336
+ showProgressIndicator() {
337
+ this._shouldShowProgressIndicator = true;
338
+ }
339
+ /** Method for setting necessary properties to make progress indicator hidden. */
340
+ hideProgressIndicator() {
341
+ if (this.progressIndicatorTimeout) {
342
+ clearTimeout(this.progressIndicatorTimeout);
343
+ }
344
+ this._shouldShowProgressIndicator = false;
345
+ }
346
+ toggleTextToSpeech() {
347
+ // if nothing translated, tts should not be available
348
+ if (!this.targetParagraphs.length) {
349
+ return;
350
+ }
351
+ const activeSystem = this.activeData;
352
+ this.textToSpeechTargetSettings = this.findTextToSpeechSettings(activeSystem.targetLanguage, this.translatedText);
353
+ this.textToSpeechSourceSettings = this.findTextToSpeechSettings(activeSystem.sourceLanguage, this.sourceText);
354
+ }
355
+ findTextToSpeechSettings(languageCode, text) {
356
+ const settings = this.configService.textToSpeechConfig.languages[languageCode];
357
+ if (settings) {
358
+ return {
359
+ text,
360
+ url: settings.url,
361
+ voice: settings.voice,
362
+ langBpc47: settings.langBpc47,
363
+ maxCharsInText: this.configService.textToSpeechConfig.maxCharsInText
364
+ };
365
+ }
366
+ return null;
367
+ }
368
+ }
369
+ TldTranslateTextService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TldTranslateTextService, deps: [{ token: TEXT_API_SERVICE_TOKEN }, { token: i1.TldSystemService }, { token: i2.TldScrollService }, { token: i3.TldTranslateConfigService }, { token: i4.TranslateService }, { token: i3.TldHighlightService }, { token: i3.TldAlertService }], target: i0.ɵɵFactoryTarget.Injectable });
370
+ TldTranslateTextService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TldTranslateTextService, providedIn: 'root' });
371
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TldTranslateTextService, decorators: [{
372
+ type: Injectable,
373
+ args: [{
374
+ providedIn: 'root'
375
+ }]
376
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
377
+ type: Inject,
378
+ args: [TEXT_API_SERVICE_TOKEN]
379
+ }] }, { type: i1.TldSystemService }, { type: i2.TldScrollService }, { type: i3.TldTranslateConfigService }, { type: i4.TranslateService }, { type: i3.TldHighlightService }, { type: i3.TldAlertService }]; } });
380
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRyYW5zbGF0ZS10ZXh0LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtdGV4dC9zZXJ2aWNlcy90bGQtdHJhbnNsYXRlLXRleHQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQWMsRUFBRSxFQUFFLE9BQU8sRUFBZ0IsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNuRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBaUUsTUFBTSx5QkFBeUIsQ0FBQztBQUszSCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQU14RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQzs7Ozs7O0FBSzFFLE1BQU0sT0FBTyx1QkFBdUI7SUE4R2xDLFlBQTZELEdBQWdDLEVBQzFFLGFBQStCLEVBQy9CLGdCQUFrQyxFQUNsQyxhQUF3QyxFQUN4QyxTQUEyQixFQUMzQixnQkFBcUMsRUFDckMsYUFBOEI7UUFOWSxRQUFHLEdBQUgsR0FBRyxDQUE2QjtRQUMxRSxrQkFBYSxHQUFiLGFBQWEsQ0FBa0I7UUFDL0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxrQkFBYSxHQUFiLGFBQWEsQ0FBMkI7UUFDeEMsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFxQjtRQUNyQyxr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QU0sRUFBRTtZQUNqQyxPQUFPO1NBQ1I7UUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3JDLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbEgsSUFBSSxDQUFDLDBCQUEwQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoSCxDQUFDO0lBRU8sd0JBQXdCLENBQUMsWUFBb0IsRUFBRSxJQUFZO1FBQ2pFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQy9FLElBQUksUUFBUSxFQUFFO1lBQ1osT0FBTztnQkFDTCxJQUFJO2dCQUNKLEdBQUcsRUFBRSxRQUFRLENBQUMsR0FBRztnQkFDakIsS0FBSyxFQUFFLFFBQVEsQ0FBQyxLQUFLO2dCQUNyQixTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVM7Z0JBQzdCLGNBQWMsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLGNBQWM7YUFDckUsQ0FBQTtTQUNGO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOztvSEFuYlUsdUJBQXVCLGtCQThHZCxzQkFBc0I7d0hBOUcvQix1QkFBdUIsY0FGdEIsTUFBTTsyRkFFUCx1QkFBdUI7a0JBSG5DLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkErR2MsTUFBTTsyQkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCB0aW1lciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWJvdW5jZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1lcmdlTWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IFRleHRUb1NwZWVjaFNldHRpbmdzIH0gZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9zaGFyZWQvdGV4dC10by1zcGVlY2gvbW9kZWxzL3RleHQtdG8tc3BlZWNoLXNldHRpbmdzLm1vZGVsJztcclxuaW1wb3J0IHsgVEVYVF9BUElfU0VSVklDRV9UT0tFTiB9IGZyb20gJy4uLy4uLy4uL2luamVjdGlvbi10b2tlbnMnO1xyXG5pbXBvcnQgeyBDb21tb24sIEVycm9yQ29kZSwgSVRsZFRyYW5zbGF0ZVRleHRBcGlTZXJ2aWNlLCBJVHJhbnNsYXRlUGFyYWdyYXBoUmVxdWVzdFBhcmFtcyB9IGZyb20gJy4uLy4uL3RsZC1jb21tb24vbW9kZWxzJztcclxuaW1wb3J0IHsgVGxkQWxlcnRTZXJ2aWNlLCBUbGRIaWdobGlnaHRTZXJ2aWNlLCBUbGRUcmFuc2xhdGVDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdGxkLWNvbW1vbi9zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IFRsZFNjcm9sbFNlcnZpY2UgfSBmcm9tICcuLi8uLi90bGQtY29tbW9uL3NlcnZpY2VzL3Njcm9sbC90bGQtc2Nyb2xsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUbGRTeXN0ZW1TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdGxkLXRvb2x0aXAvc2VydmljZXMnO1xyXG5pbXBvcnQgeyBJRGljdGlvbmFyeUVudHJ5LCBJU291cmNlQ2hhbmdlRXZlbnQgfSBmcm9tICcuLi9tb2RlbHMvZGljdGlvbmFyeS5tb2RlbCc7XHJcbmltcG9ydCB7IEhpZ2hsaWdodFRyZWVUeXBlIH0gZnJvbSAnLi4vbW9kZWxzL2hpZ2hsaWdodC10cmVlLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBJSGlnaGxpZ2h0VHJlZSB9IGZyb20gJy4uL21vZGVscy9oaWdobGlnaHQtdHJlZS5tb2RlbCc7XHJcbmltcG9ydCB7IElQYXJhZ3JhcGhJbmZvIH0gZnJvbSAnLi4vbW9kZWxzL2hpZ2hsaWdodC5tb2RlbCc7XHJcbmltcG9ydCB7IElSZXRyYW5zbGF0ZVBhcmFtcyB9IGZyb20gJy4uL21vZGVscy9yZXRyYW5zbGF0ZS1wYXJhbXMubW9kZWwnO1xyXG5pbXBvcnQgeyBJVHJhbnNsYXRlUGFyYWdyYXBoUmVzcG9uc2UgfSBmcm9tICcuLi9tb2RlbHMvdHJhbnNsYXRlLXBhcmFncmFwaC1yZXNwb25zZS5tb2RlbCc7XHJcbmltcG9ydCB7IElVbnRyYW5zbGF0ZWRQYXJhZ3JhcGggfSBmcm9tICcuLi9tb2RlbHMvdW50cmFuc2xhdGVkLXBhcmFncmFwaC5tb2RlbCc7XHJcbmltcG9ydCB7IFRsZFRyYW5zbGF0ZVRleHRVdGlscyB9IGZyb20gJy4uL3V0aWxzL3RsZC10cmFuc2xhdGUtdGV4dC51dGlscyc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUbGRUcmFuc2xhdGVUZXh0U2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgX3NvdXJjZVRleHQ6IHN0cmluZztcclxuICBnZXQgc291cmNlVGV4dCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9zb3VyY2VUZXh0O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc291cmNlVGV4dEh5cG90aGVzaXM6IHN0cmluZztcclxuICBnZXQgc291cmNlVGV4dEh5cG90aGVzaXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fc291cmNlVGV4dEh5cG90aGVzaXM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zb3VyY2VDaGFuZ2U6IFN1YmplY3Q8SVNvdXJjZUNoYW5nZUV2ZW50PiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgZ2V0IHNvdXJjZUNoYW5nZSgpIHsgcmV0dXJuIHRoaXMuX3NvdXJjZUNoYW5nZS5hc09ic2VydmFibGUoKTsgfVxyXG5cclxuICBwcml2YXRlIF9zb3VyY2VTY3JvbGw6IFN1YmplY3Q8bnVtYmVyPiA9IG5ldyBTdWJqZWN0KCk7XHJcbiAgZ2V0IHNvdXJjZVNjcm9sbCgpIHsgcmV0dXJuIHRoaXMuX3NvdXJjZVNjcm9sbC5hc09ic2VydmFibGUoKTsgfVxyXG5cclxuICBwcml2YXRlIF90cmFuc2xhdGVCdXR0b25DbGljazogU3ViamVjdDxhbnk+ID0gbmV3IFN1YmplY3QoKTtcclxuICBnZXQgdHJhbnNsYXRlQnV0dG9uQ2xpY2soKSB7IHJldHVybiB0aGlzLl90cmFuc2xhdGVCdXR0b25DbGljay5hc09ic2VydmFibGUoKTsgfVxyXG5cclxuICBwcml2YXRlIF9oYXNEaWN0aW9uYXJ5OiBib29sZWFuO1xyXG4gIGdldCBoYXNEaWN0aW9uYXJ5KCkgeyByZXR1cm4gdGhpcy5faGFzRGljdGlvbmFyeTsgfVxyXG4gIHNldCBoYXNEaWN0aW9uYXJ5KHZhbCkge1xyXG4gICAgdGhpcy5faGFzRGljdGlvbmFyeSA9IHZhbDtcclxuICAgIGlmICghdmFsKSB7XHJcbiAgICAgIHRoaXMuX2RpY3Rpb25hcnlFbnRyeSA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9kaWN0aW9uYXJ5RW50cnk6IElEaWN0aW9uYXJ5RW50cnlbXTtcclxuICBnZXQgZGljdGlvbmFyeUVudHJ5KCkgeyByZXR1cm4gdGhpcy5fZGljdGlvbmFyeUVudHJ5OyB9XHJcbiAgc2V0IGRpY3Rpb25hcnlFbnRyeSh2YWwpIHtcclxuICAgIHRoaXMuX2RpY3Rpb25hcnlFbnRyeSA9IHZhbDtcclxuICAgIGlmICh0aGlzLmRpY3Rpb25hcnlFbnRyeSkge1xyXG4gICAgICB0aGlzLmhhc0RpY3Rpb25hcnkgPSB0cnVlO1xyXG4gICAgfVxyXG4gIH1cclxuICBnZXQgdHJhbnNsYXRlZFRleHQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRhcmdldFBhcmFncmFwaHMubWFwKGxpbmUgPT4gbGluZS5vcmlnaW5hbFRleHQpLmpvaW4oXCJcXG5cIilcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX29uQ2xlYXIgPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcblxyXG4gIHVybFRvVHJhbnNsYXRlOiBzdHJpbmc7XHJcbiAgcGFyYWdyYXBoczogSVBhcmFncmFwaEluZm9bXSA9IFtdO1xyXG4gIHNvdXJjZVBhcmFncmFwaHM6IElIaWdobGlnaHRUcmVlW10gPSBbXTtcclxuICB0YXJnZXRQYXJhZ3JhcGhzOiBJSGlnaGxpZ2h0VHJlZVtdID0gW107XHJcblxyXG4gIC8vIFNldCB0aGlzIG9iamVjdCB3aXRoIG5lY2Vzc2FyeSB2YWx1ZXMgdG8gZGlzcGxheSBUVFMgY29tcG9uZW50XHJcbiAgdGV4dFRvU3BlZWNoU291cmNlU2V0dGluZ3M6IFRleHRUb1NwZWVjaFNldHRpbmdzO1xyXG4gIHRleHRUb1NwZWVjaFRhcmdldFNldHRpbmdzOiBUZXh0VG9TcGVlY2hTZXR0aW5ncztcclxuXHJcbiAgcHJpdmF0ZSBfZmlyc3RQYXJhZ3JhcGhUcmFuc2xhdGVkOiBib29sZWFuO1xyXG4gIGdldCBmaXJzdFBhcmFncmFwaFRyYW5zbGF0ZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZmlyc3RQYXJhZ3JhcGhUcmFuc2xhdGVkO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBkaWN0aW9uYXJ5U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSBwYXJhZ3JhcGhUcmFuc2xhdGlvbnNTdWJqZWN0ID0gbmV3IFN1YmplY3Q8SVVudHJhbnNsYXRlZFBhcmFncmFwaD4oKTtcclxuICBwcml2YXRlIHBhcmFncmFwaFRyYW5zbGF0aW9uU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZWJvdW5jZXI6IFN1YmplY3Q8SVNvdXJjZUNoYW5nZUV2ZW50PiA9IG5ldyBTdWJqZWN0PElTb3VyY2VDaGFuZ2VFdmVudD4oKTtcclxuICBwcml2YXRlIGRlYm91bmNlclN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xyXG4gIC8qKiBIb3cgbWFueSBwYXJhZ3JhcGhzIGNhbiBiZSB0cmFuc2xhdGVkIGF0IHRoZSBzYW1lIHRpbWUuICovXHJcbiAgcHJpdmF0ZSByZWFkb25seSBDT05DVVJSRU5UX1VQTE9BRFMgPSA1O1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgREVCT1VOQ0VfVElNRSA9IDEwMDA7XHJcblxyXG4gIC8qKiBXaGV0aGVyIHByb2dyZXNzIGluZGljYXRvciBzaG91bGQgYmUgc2hvd24uIFRoaXMgdmFsdWUgbXVzdCBiZSBzZXQgdG8gdHJ1ZSBvbmx5IGlmIGNvbmZpZ3VyZWQgdGltZSBoYXMgcGFzc2VkLiAqL1xyXG4gIHByaXZhdGUgX3Nob3VsZFNob3dQcm9ncmVzc0luZGljYXRvciA9IGZhbHNlO1xyXG4gIGdldCBzaG91bGRTaG93UHJvZ3Jlc3NJbmRpY2F0b3IoKSB7IHJldHVybiB0aGlzLl9zaG91bGRTaG93UHJvZ3Jlc3NJbmRpY2F0b3I7IH1cclxuICAvL05vZGVKUy5UaW1lb3V0XHJcbiAgcHJpdmF0ZSBwcm9ncmVzc0luZGljYXRvclRpbWVvdXQ6IGFueTtcclxuXHJcbiAgcHJpdmF0ZSBfdW50cmFuc2xhdGVkUGFyYWdyYXBoQ291bnQgPSAwO1xyXG4gIGdldCB1bnRyYW5zbGF0ZWRQYXJhZ3JhcGhDb3VudCgpIHsgcmV0dXJuIHRoaXMuX3VudHJhbnNsYXRlZFBhcmFncmFwaENvdW50OyB9XHJcbiAgc2V0IHVudHJhbnNsYXRlZFBhcmFncmFwaENvdW50KHZhbHVlOiBudW1iZXIpIHtcclxuICAgIHRoaXMuX3VudHJhbnNsYXRlZFBhcmFncmFwaENvdW50ID0gdmFsdWU7XHJcbiAgICAvLyBXaGVuIHRyYW5zbGF0aW9uIGZpbmlzaGVkLCBwcm9ncmVzcyBpbmRpY2F0b3Igc2hvdWxkIG5vdCBiZSBzaG93bi5cclxuICAgIGlmICh2YWx1ZSA9PT0gMCkge1xyXG4gICAgICB0aGlzLnRvZ2dsZVRleHRUb1NwZWVjaCgpO1xyXG4gICAgICB0aGlzLmhpZGVQcm9ncmVzc0luZGljYXRvcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0IGlzVHJhbnNsYXRpbmcoKSB7IHJldHVybiB0aGlzLnVudHJhbnNsYXRlZFBhcmFncmFwaENvdW50ID4gMDsgfVxyXG5cclxuICAvLyBnZXR0ZXJzIGZyb20gY29uZmlnIHNlcnZpY2UuXHJcbiAgZ2V0IGFsbG93V2Vic2l0ZVRyYW5zbGF0aW9uKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5jb25maWdTZXJ2aWNlLnRleHRDb25maWcuYWxsb3dXZWJzaXRlVHJhbnNsYXRpb247IH07XHJcbiAgZ2V0IGF1dG9SZWRpcmVjdFRvV2ViVHJhbnNsYXRlKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5jb25maWdTZXJ2aWNlLnRleHRDb25maWcuYXV0b1JlZGlyZWN0VG9XZWJUcmFuc2xhdGU7IH07XHJcbiAgZ2V0IHdlYldpZGdldFJlZGlyZWN0VXJsUHJlZml4KCk6IHN0cmluZyB7IHJldHVybiB0aGlzLmNvbmZpZ1NlcnZpY2UudGV4dENvbmZpZy53ZWJXaWRnZXRSZWRpcmVjdFVybFByZWZpeDsgfTtcclxuICBnZXQgd2ViV2lkZ2V0UmVkaXJlY3RVcmxQb3NmaXgoKTogc3RyaW5nIHsgcmV0dXJuIHRoaXMuY29uZmlnU2VydmljZS50ZXh0Q29uZmlnLndlYldpZGdldFJlZGlyZWN0VXJsUG9zZml4OyB9O1xyXG4gIGdldCB1c2VEaWN0aW9uYXJ5KCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5jb25maWdTZXJ2aWNlLnRleHRDb25maWcudXNlRGljdGlvbmFyeTsgfTtcclxuICBnZXQgcHJvZ3Jlc3NJbmRpY2F0b3JUaW1lb3V0TWlsaVNlY29uZHMoKTogbnVtYmVyIHsgcmV0dXJuIHRoaXMuY29uZmlnU2VydmljZS50ZXh0Q29uZmlnLnByb2dyZXNzSW5kaWNhdG9yVGltZW91dE1pbGlTZWNvbmRzOyB9XHJcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuXHJcbiAgZ2V0IGFjdGl2ZURhdGEoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zeXN0ZW1TZXJ2aWNlLmdldEFjdGl2ZVN5c3RlbU9iaigpO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHRyYW5zbGF0ZVVybFJlZGlyZWN0KCkge1xyXG4gICAgaWYgKHRoaXMud2ViV2lkZ2V0UmVkaXJlY3RVcmxQcmVmaXggPT09ICcnKSB7XHJcbiAgICAgIHJldHVybiBgJHt0aGlzLndlYldpZGdldFJlZGlyZWN0VXJsUHJlZml4fSR7dGhpcy53ZWJXaWRnZXRSZWRpcmVjdFVybFBvc2ZpeH0ke2VuY29kZVVSSUNvbXBvbmVudCh0aGlzLnVybFRvVHJhbnNsYXRlKX1gO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGAke3RoaXMud2ViV2lkZ2V0UmVkaXJlY3RVcmxQcmVmaXh9JHt0aGlzLnRyYW5zbGF0ZS5jdXJyZW50TGFuZ30ke3RoaXMud2ViV2lkZ2V0UmVkaXJlY3RVcmxQb3NmaXh9JHt0aGlzLnVybFRvVHJhbnNsYXRlfWA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogSWYgZGljdGF0dGlvbiBpcyBhY3RpdmUuIEJhc2VkIG9uIHRoaXMsIGV4dGVuc2lvbnMgYXJlIGhpZGRlbi4gKi9cclxuICBpc0RpY3RhdGluZzogYm9vbGVhbjtcclxuXHJcbiAgY29uc3RydWN0b3IoQEluamVjdChURVhUX0FQSV9TRVJWSUNFX1RPS0VOKSBwcml2YXRlIHJlYWRvbmx5IGFwaTogSVRsZFRyYW5zbGF0ZVRleHRBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzeXN0ZW1TZXJ2aWNlOiBUbGRTeXN0ZW1TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0bGRTY3JvbGxTZXJ2aWNlOiBUbGRTY3JvbGxTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb25maWdTZXJ2aWNlOiBUbGRUcmFuc2xhdGVDb25maWdTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhpZ2hsaWdodFNlcnZpY2U6IFRsZEhpZ2hsaWdodFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsZXJ0c1NlcnZpY2U6IFRsZEFsZXJ0U2VydmljZSkgeyB9XHJcblxyXG4gIGRpY3Rpb25hcnlUcmFuc2xhdGlvbih0ZXh0OiBzdHJpbmcsIHNyY0NvZGU6IHN0cmluZywgdHJnQ29kZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hcGkuZGljdGlvbmFyeVRyYW5zbGF0aW9uKHRleHQsIHNyY0NvZGUsIHRyZ0NvZGUpO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlU291cmNlKGV2ZW50OiBJU291cmNlQ2hhbmdlRXZlbnQpIHtcclxuICAgIHRoaXMuX3NvdXJjZVRleHQgPSBldmVudC5waHJhc2U7XHJcbiAgICB0aGlzLl9zb3VyY2VDaGFuZ2UubmV4dChldmVudCk7XHJcbiAgICB0aGlzLmRlYm91bmNlci5uZXh0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVNvdXJjZUh5cG90aGVzaXModGV4dDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLl9zb3VyY2VUZXh0SHlwb3RoZXNpcyA9IHRleHQ7XHJcbiAgfVxyXG5cclxuICBvblNvdXJjZVNjcm9sbChvZmZzZXRUb3A6IG51bWJlcikge1xyXG4gICAgdGhpcy5fc291cmNlU2Nyb2xsLm5leHQob2Zmc2V0VG9wKTtcclxuICB9XHJcblxyXG4gIG9uVHJhbnNsYXRlQnV0dG9uQ2xpY2soKSB7XHJcbiAgICB0aGlzLl90cmFuc2xhdGVCdXR0b25DbGljay5uZXh0KG51bGwpXHJcbiAgICB0aGlzLnJldHJhbnNsYXRlKHsgYnV0dG9uQ2xpY2tlZDogdHJ1ZSB9KTtcclxuICB9XHJcblxyXG4gIGNsZWFyU291cmNlKCkge1xyXG4gICAgdGhpcy5fb25DbGVhci5uZXh0KG51bGwpXHJcbiAgICB0aGlzLmNoYW5nZVNvdXJjZSh7IHBocmFzZTogXCJcIiB9KVxyXG4gIH1cclxuXHJcbiAgb25DbGVhcigpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX29uQ2xlYXIuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVUcmFuc2xhdGlvbihvcHRpb25zOiBzdHJpbmcsIHN5c3RlbUlEOiBzdHJpbmcsIHRleHQ6IHN0cmluZywgdHJhbnNsYXRpb246IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuYXBpLnVwZGF0ZVRyYW5zbGF0aW9uKG9wdGlvbnMsIHN5c3RlbUlELCB0ZXh0LCB0cmFuc2xhdGlvbik7XHJcbiAgfVxyXG5cclxuICBsaXN0ZW5PbkNoYW5nZXMoKSB7XHJcbiAgICBpZiAodGhpcy5kZWJvdW5jZXJTdWJzY3JpcHRpb24pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGVib3VuY2VyU3Vic2NyaXB0aW9uID0gdGhpcy5kZWJvdW5jZXIucGlwZShcclxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKHByZXZpb3VzKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHByZXZpb3VzLnBocmFzZSA9PSB0aGlzLnNvdXJjZVRleHQ7XHJcbiAgICAgIH0pLFxyXG4gICAgICBkZWJvdW5jZShldiA9PiBldi5waHJhc2U/Lmxlbmd0aCA+IDAgPyB0aW1lcih0aGlzLkRFQk9VTkNFX1RJTUUpIDogdGltZXIoMCkpXHJcbiAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgdGhpcy5oaWdobGlnaHRTZXJ2aWNlLmNoYW5nZVNlbGVjdGVkVGFyZ2V0U2VudGVuY2UobnVsbCk7XHJcblxyXG4gICAgICAgIGlmICghZXZlbnQuZGlzYWJsZUF1dG9tYXRpY1RyYW5zbGF0aW9uKSB7XHJcbiAgICAgICAgICB0aGlzLnJldHJhbnNsYXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHN0b3BMaXN0ZW5pbmdUb0NoYW5nZXMoKSB7XHJcbiAgICBpZiAoIXRoaXMuZGVib3VuY2VyU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuZGVib3VuY2VyU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB0aGlzLmRlYm91bmNlclN1YnNjcmlwdGlvbiA9IG51bGw7XHJcbiAgfVxyXG5cclxuICAvLyBpZiBtZXRob2QgZ2V0cyBjYWxsZWQgYmVjYXVzZSBvZiBidXR0b24gY2xpY2sgYW5kIHVybCBlbnRlcmVkIC0gZ28gdG8gd2ViIHRyYW5zbGF0aW9uXHJcbiAgcmV0cmFuc2xhdGUocGFyYW1zPzogSVJldHJhbnNsYXRlUGFyYW1zKSB7XHJcbiAgICBpZiAoIXRoaXMuc291cmNlVGV4dCB8fCB0aGlzLnNvdXJjZVRleHQgPT0gXCJcIikge1xyXG4gICAgICB0aGlzLmNsZWFyU291cmNlUGFyYW1zKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocGFyYW1zPy5idXR0b25DbGlja2VkIHx8IHBhcmFtcz8uc3lzdGVtQ2hhbmdlZCkge1xyXG4gICAgICB0aGlzLmNsZWFyU291cmNlUGFyYW1zKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbWF4U291cmNlQ2hhcmFjdGVyRGljdGlvbmFyeSA9IDIwMDtcclxuICAgIGNvbnN0IG1heERpY3Rpb25hcnlXb3JkcyA9IDEyO1xyXG5cclxuICAgIGNvbnN0IHdvcmRzSW5Tb3VyY2UgPSBDb21tb24uZ2V0V29yZENvdW50KHRoaXMuc291cmNlVGV4dCk7XHJcbiAgICB0aGlzLnVybFRvVHJhbnNsYXRlID0gQ29tbW9uLmlzVGV4dFVybCh0aGlzLnNvdXJjZVRleHQpO1xyXG4gICAgaWYgKHRoaXMuYWxsb3dXZWJzaXRlVHJhbnNsYXRpb24gJiYgdGhpcy51cmxUb1RyYW5zbGF0ZSkge1xyXG4gICAgICB0aGlzLnBhcmFncmFwaHMgPSBbXTtcclxuICAgICAgdGhpcy5zb3VyY2VQYXJhZ3JhcGhzID0gW107XHJcbiAgICAgIHRoaXMudGFyZ2V0UGFyYWdyYXBocyA9IFtdO1xyXG5cclxuICAgICAgaWYgKHRoaXMuYXV0b1JlZGlyZWN0VG9XZWJUcmFuc2xhdGUgfHwgcGFyYW1zPy5idXR0b25DbGlja2VkKSB7XHJcbiAgICAgICAgd2luZG93Lm9wZW4odGhpcy50cmFuc2xhdGVVcmxSZWRpcmVjdCwgXCJfYmxhbmtcIik7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMudXJsVG9UcmFuc2xhdGUgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgLy8gVE9ETy4gTGV0b25pa2EgZGljdGlvbmFyeT9cclxuICAgIGlmICh0aGlzLnVzZURpY3Rpb25hcnkgJiYgdGhpcy5zb3VyY2VUZXh0Lmxlbmd0aCA8IG1heFNvdXJjZUNoYXJhY3RlckRpY3Rpb25hcnkgJiYgd29yZHNJblNvdXJjZSA8PSBtYXhEaWN0aW9uYXJ5V29yZHMpIHtcclxuICAgICAgdGhpcy5wcmVwYXJlQW5kVHJhbnNsYXRlV29yZHMoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50cmFuc2xhdGVUZXh0KHRoaXMuc291cmNlVGV4dCk7XHJcbiAgfVxyXG5cclxuICAvKiogU3RvcHMgdGV4dCB0cmFuc2xhdGlvbiBpZiBpdCBpcyBhY3RpdmUuICovXHJcbiAgc3RvcFRyYW5zbGF0aW9uKCkge1xyXG4gICAgdGhpcy51bnRyYW5zbGF0ZWRQYXJhZ3JhcGhDb3VudCA9IDA7XHJcbiAgICBpZiAodGhpcy5wYXJhZ3JhcGhUcmFuc2xhdGlvblN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLnBhcmFncmFwaFRyYW5zbGF0aW9uU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZGljdGlvbmFyeVN1YnNjcmlwdGlvbikge1xyXG4gICAgICB0aGlzLmRpY3Rpb25hcnlTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVjcmVhdGVQYXJhZ3JhcGhUcmFuc2xhdGlvblN1YmplY3QoKSB7XHJcbiAgICB0aGlzLl9maXJzdFBhcmFncmFwaFRyYW5zbGF0ZWQgPSBmYWxzZTtcclxuICAgIHRoaXMucGFyYWdyYXBoVHJhbnNsYXRpb25zU3ViamVjdCA9IG5ldyBTdWJqZWN0PElVbnRyYW5zbGF0ZWRQYXJhZ3JhcGg+KCk7XHJcblxyXG4gICAgY29uc3Qgc291cmNlID0gdGhpcy5zb3VyY2VUZXh0O1xyXG4gICAgdGhpcy51bnRyYW5zbGF0ZWRQYXJhZ3JhcGhDb3VudCA9IDA7XHJcbiAgICB0aGlzLnBhcmFncmFwaFRyYW5zbGF0aW9uU3Vic2NyaXB0aW9uID0gdGhpcy5wYXJhZ3JhcGhUcmFuc2xhdGlvbnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpLnBpcGUoXHJcbiAgICAgIG1lcmdlTWFwKCh1bnRyYW5zbGF0ZWRQYXJhZ3JhcGgpID0+IHtcclxuICAgICAgICB0aGlzLnVudHJhbnNsYXRlZFBhcmFncmFwaENvdW50ICs9IDE7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlUGFyYWdyYXBoKHVudHJhbnNsYXRlZFBhcmFncmFwaCkucGlwZShcclxuICAgICAgICAgIHRhcCgocmVzcG9uc2U6IElUcmFuc2xhdGVQYXJhZ3JhcGhSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICAvLyBObyBuZWVkIHRvIGhhbmRsZSByZXNwb25zZSBpZiBzb3VyY2UgdGV4dCBoYXMgY2hhbmdlZC5cclxuICAgICAgICAgICAgaWYgKHNvdXJjZSAhPSB0aGlzLnNvdXJjZVRleHQpIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5oYW5kbGVUcmFuc2xhdGVkUGFyYWdyYXBoKHJlc3BvbnNlKTtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVQYXJhZ3JhcGhzKHVudHJhbnNsYXRlZFBhcmFncmFwaC5peCwgcmVzcG9uc2UpO1xyXG4gICAgICAgICAgICB0aGlzLnVudHJhbnNsYXRlZFBhcmFncmFwaENvdW50IC09IDE7XHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcclxuICAgICAgICAgICAgdGhpcy51bnRyYW5zbGF0ZWRQYXJhZ3JhcGhDb3VudCAtPSAxO1xyXG4gICAgICAgICAgICBpZiAoZXJyLnN0YXR1cyA9PT0gNTAwKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5hbGVydHNTZXJ2aWNlLnVuaGFuZGVsZWRFcnJvcih7IEVycm9yQ29kZTogRXJyb3JDb2RlLlRSQU5TTEFUSU9OX0ZBSUxFRCB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmFsZXJ0c1NlcnZpY2UudW5oYW5kZWxlZEVycm9yKGVycik7XHJcblxyXG4gICAgICAgICAgICAvLyBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kLCBzdWJqZWN0IGlzIGRlc3Ryb3llZCBhbmQgdW5zdWJzY3JpYmVkLCBzbyB0aHJvd24gZXJyb3Igd29udCBoYXZlIGFueSBlZmZlY3QuXHJcbiAgICAgICAgICAgIHRoaXMuc3RvcFRyYW5zbGF0aW9uKCk7XHJcbiAgICAgICAgICAgIHRoaXMuYWxlcnRzU2VydmljZS51bmhhbmRlbGVkRXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgdGhyb3cgZXJyO1xyXG4gICAgICAgICAgfSkpXHJcbiAgICAgIH0sIHRoaXMuQ09OQ1VSUkVOVF9VUExPQURTKSxcclxuICAgICkuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRyYW5zbGF0ZVBhcmFncmFwaChwYXJhZ3JhcGg6IElVbnRyYW5zbGF0ZWRQYXJhZ3JhcGgpOiBPYnNlcnZhYmxlPElUcmFuc2xhdGVQYXJhZ3JhcGhSZXNwb25zZT4ge1xyXG4gICAgY29uc3QgcGFyYW1zOiBJVHJhbnNsYXRlUGFyYWdyYXBoUmVxdWVzdFBhcmFtcyA9IHtcclxuICAgICAgcGFyYWdyYXBoSXg6IHBhcmFncmFwaC5peCxcclxuICAgICAgdGV4dDogcGFyYWdyYXBoLmxpbmUsXHJcbiAgICAgIHN5c3RlbTogdGhpcy5hY3RpdmVEYXRhXHJcbiAgICB9O1xyXG4gICAgaWYgKCFwYXJhbXMudGV4dCB8fCBwYXJhbXMudGV4dC5sZW5ndGggPT09IDApIHtcclxuICAgICAgcmV0dXJuIG9mKHtcclxuICAgICAgICBzb3VyY2VUcmVlOiB7IHRleHQ6IFwiXCIsIHBhcmFncmFwaEl4OiBwYXJhbXMucGFyYWdyYXBoSXgsIHR5cGU6IEhpZ2hsaWdodFRyZWVUeXBlLlBBUkFHUkFQSCwgcm9vdDogbnVsbCwgb3JpZ2luYWxUZXh0OiBcIlwiIH0sXHJcbiAgICAgICAgdGFyZ2V0VHJlZTogeyB0ZXh0OiBcIlwiLCBwYXJhZ3JhcGhJeDogcGFyYW1zLnBhcmFncmFwaEl4LCB0eXBlOiBIaWdobGlnaHRUcmVlVHlwZS5QQVJBR1JBUEgsIHJvb3Q6IG51bGwsIG9yaWdpbmFsVGV4dDogXCJcIiB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLmFwaS50cmFuc2xhdGVQYXJhZ3JhcGgocGFyYW1zKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlVHJhbnNsYXRlZFBhcmFncmFwaChwYXJhZ3JhcGg6IElUcmFuc2xhdGVQYXJhZ3JhcGhSZXNwb25zZSkge1xyXG4gICAgLy9pZiBhdXRvIGRvbWFpbiBkZXRlY3Rpb24gaXMgb24sIHN5c3RlbSBhcGkgc2VydmljZSBzZXRzIHN5c3RlbSBpZCB0byBgJHtzcmNMYW5nfS0ke3RhcmdldExhbmd9YCBzbyB3ZSBuZWVkIHRvIHZhbGlkYXRlIGlmIHRoYXQgaXMgdGhlIGNhc2VcclxuICAgIGlmIChwYXJhZ3JhcGguc3lzdGVtSWQgJiYgdGhpcy5hY3RpdmVEYXRhLmlkICE9PSBwYXJhZ3JhcGguc3lzdGVtSWRcclxuICAgICAgJiYgdGhpcy5hY3RpdmVEYXRhLmlkID09PSBgJHt0aGlzLmFjdGl2ZURhdGEuc291cmNlTGFuZ3VhZ2V9LSR7dGhpcy5hY3RpdmVEYXRhLnRhcmdldExhbmd1YWdlfWApIHtcclxuICAgICAgdGhpcy5zeXN0ZW1TZXJ2aWNlLmNoYW5nZVN5c3RlbShwYXJhZ3JhcGguc3lzdGVtSWQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIE5lZWRzIHRvIHNjcm9sbCB0byB0b3AgYWZ0ZXIgZmlyc3QgcGFyYWdyYXBoIGlzIHRyYW5zbGF0ZWQuXHJcbiAgICBpZiAoIXRoaXMuX2ZpcnN0UGFyYWdyYXBoVHJhbnNsYXRlZCkge1xyXG4gICAgICAvLyBpZiBlbXB0eSBwYXJhZ3JhcGggaXMgJ3RyYW5zbGF0ZWQnIGZpcnN0LCBubyBuZWVkIHRvIGRvIGFueSBzY3JvbGxpbmcuIFdhaXQgZm9yIHJlYWwgdGV4dCB0byBiZSB0cmFuc2xhdGVkLlxyXG4gICAgICBpZiAocGFyYWdyYXBoLnRhcmdldFRyZWUudGV4dC50cmltKCkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuX2ZpcnN0UGFyYWdyYXBoVHJhbnNsYXRlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy50bGRTY3JvbGxTZXJ2aWNlLnN5bmNTY3JvbGxiYXJzKG51bGwsIDApO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVBhcmFncmFwaHMocGFyYWdyYXBoSXg6IG51bWJlciwgcmVzcG9uc2U6IElUcmFuc2xhdGVQYXJhZ3JhcGhSZXNwb25zZSkge1xyXG4gICAgbGV0IHBhcmFncmFwaDogSVBhcmFncmFwaEluZm8gPSB7XHJcbiAgICAgIGl4OiBwYXJhZ3JhcGhJeCxcclxuICAgICAgdGFyZ2V0OiByZXNwb25zZS50YXJnZXRUcmVlLFxyXG4gICAgICBzb3VyY2U6IHJlc3BvbnNlLnNvdXJjZVRyZWVcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5wYXJhZ3JhcGhzLnNwbGljZShwYXJhZ3JhcGhJeCwgMSwgcGFyYWdyYXBoKTtcclxuICAgIHRoaXMuc291cmNlUGFyYWdyYXBocy5zcGxpY2UocGFyYWdyYXBoSXgsIDEsIHJlc3BvbnNlLnNvdXJjZVRyZWUpO1xyXG4gICAgdGhpcy50YXJnZXRQYXJhZ3JhcGhzLnNwbGljZShwYXJhZ3JhcGhJeCwgMSwgcmVzcG9uc2UudGFyZ2V0VHJlZSk7XHJcblxyXG4gICAgdGhpcy5wYXJhZ3JhcGhzLnNvcnQoKGEsIGIpID0+IChhLml4ID4gYi5peCkgPyAxIDogLTEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjbGVhclNvdXJjZVBhcmFtcygpIHtcclxuICAgIHRoaXMuX2RpY3Rpb25hcnlFbnRyeSA9IG51bGw7XHJcbiAgICB0aGlzLl9oYXNEaWN0aW9uYXJ5ID0gZmFsc2U7XHJcbiAgICB0aGlzLnBhcmFncmFwaHMgPSBbXTtcclxuICAgIHRoaXMudGFyZ2V0UGFyYWdyYXBocyA9IFtdO1xyXG4gICAgdGhpcy5zb3VyY2VQYXJhZ3JhcGhzID0gW107XHJcbiAgICB0aGlzLnVybFRvVHJhbnNsYXRlID0gbnVsbDtcclxuICAgIHRoaXMudGV4dFRvU3BlZWNoVGFyZ2V0U2V0dGluZ3MgPSBudWxsO1xyXG4gICAgdGhpcy50ZXh0VG9TcGVlY2hTb3VyY2VTZXR0aW5ncyA9IG51bGw7XHJcbiAgICB0aGlzLnN0b3BUcmFuc2xhdGlvbigpO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgcHJlcGFyZUFuZFRyYW5zbGF0ZVdvcmRzKCkge1xyXG4gICAgY29uc3QgYWN0aXZlU3lzdGVtT2JqZWN0ID0gdGhpcy5hY3RpdmVEYXRhO1xyXG4gICAgdGhpcy5kaWN0aW9uYXJ5U3Vic2NyaXB0aW9uID0gdGhpcy5kaWN0aW9uYXJ5VHJhbnNsYXRpb24odGhpcy5zb3VyY2VUZXh0LnRyaW0oKSxcclxuICAgICAgYWN0aXZlU3lzdGVtT2JqZWN0LnNvdXJjZUxhbmd1YWdlLCBhY3RpdmVTeXN0ZW1PYmplY3QudGFyZ2V0TGFuZ3VhZ2UpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlOiBJRGljdGlvbmFyeUVudHJ5W10pID0+IHtcclxuICAgICAgICB0aGlzLmRpY3Rpb25hcnlTdWJzY3JpcHRpb24gPSBudWxsO1xyXG4gICAgICAgIGlmICghcmVzcG9uc2UgfHwgIXJlc3BvbnNlWzBdIHx8ICFyZXNwb25zZVswXS50cmFuc2xhdGlvbnMgfHwgcmVzcG9uc2VbMF0udHJhbnNsYXRpb25zLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVRleHQodGhpcy5zb3VyY2VUZXh0KTtcclxuICAgICAgICAgIHRoaXMuaGFzRGljdGlvbmFyeSA9IGZhbHNlO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRpY3Rpb25hcnlFbnRyeSA9IHJlc3BvbnNlO1xyXG4gICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGVUZXh0KHRoaXMuc291cmNlVGV4dCk7XHJcbiAgICAgICAgdGhpcy5oYXNEaWN0aW9uYXJ5ID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0cmFuc2xhdGVUZXh0KHRleHQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgcGFyYWdyYXBocyA9IENvbW1vbi5zcGxpdEluUGFyYWdyYXBocyh0ZXh0KTtcclxuICAgIGNvbnN0IG5ld1BhcmFncmFwaHM6IElQYXJhZ3JhcGhJbmZvW10gPSBbXTtcclxuICAgIGNvbnN0IG5ld1NvdXJjZVBhcmFncmFwaHM6IElIaWdobGlnaHRUcmVlW10gPSBbXTtcclxuICAgIGNvbnN0IG5ld1RhcmdldFBhcmFncmFwaHM6IElIaWdobGlnaHRUcmVlW10gPSBbXTtcclxuXHJcbiAgICAvLyBzb3VyY2UgdGV4dCBjaGFuZ2VkLiBQcmV2aW91c2x5IG1hZGUgb2JzZXJ2YWJsZXMgYXJlbid0IG5lY2Vzc2FyeSBhbnltb3JlO1xyXG4gICAgdGhpcy5yZWNyZWF0ZVBhcmFncmFwaFRyYW5zbGF0aW9uU3ViamVjdCgpO1xyXG5cclxuICAgIHBhcmFncmFwaHMuZm9yRWFjaCgocGFyYWdyYXBoLCBpeCkgPT4ge1xyXG4gICAgICAvLyBDaGVjayBpZiBwYXJhZ3JhcGggd2l0aCBzYW1lIHRleHQgZXhpc3RzIChzbyB5b3UgZG9uJ3QgaGF2ZSB0byB0cmFuc2xhdGUgaXQgYWdhaW4pLlxyXG4gICAgICAvLyBJZiBpdCBkb2VzLCB5b3UgY2FuIGNsb25lIGl0LlxyXG4gICAgICBjb25zdCBleGlzdGluZ1BhcmFncmFwaEluZm8gPSBUbGRUcmFuc2xhdGVUZXh0VXRpbHMuZmluZEV4aXN0aW5nUGFyYWdyYXBoKHBhcmFncmFwaCwgaXgsIHRoaXMucGFyYWdyYXBocyk7XHJcbiAgICAgIGNvbnN0IGV4aXN0aW5nUGFyYWdyYXBoID0gZXhpc3RpbmdQYXJhZ3JhcGhJbmZvLmV4aXN0aW5nUGFyYWdyYXBoO1xyXG4gICAgICBpZiAoZXhpc3RpbmdQYXJhZ3JhcGhJbmZvLmV4aXN0aW5nUGFyYWdyYXBoKSB7XHJcbiAgICAgICAgaWYgKCFleGlzdGluZ1BhcmFncmFwaEluZm8uaGFzU2FtZUl4KSB7XHJcbiAgICAgICAgICBUbGRUcmFuc2xhdGVUZXh0VXRpbHMuY2hhbmdlUm9vdEFuZFBhcmFncmFwaEl4KGV4aXN0aW5nUGFyYWdyYXBoLnNvdXJjZSwgZXhpc3RpbmdQYXJhZ3JhcGguc291cmNlLCBleGlzdGluZ1BhcmFncmFwaC5peCk7XHJcbiAgICAgICAgICBUbGRUcmFuc2xhdGVUZXh0VXRpbHMuY2hhbmdlUm9vdEFuZFBhcmFncmFwaEl4KGV4aXN0aW5nUGFyYWdyYXBoLnRhcmdldCwgZXhpc3RpbmdQYXJhZ3JhcGgudGFyZ2V0LCBleGlzdGluZ1BhcmFncmFwaC5peCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG5ld1BhcmFncmFwaHMuc3BsaWNlKGl4LCAwLCBleGlzdGluZ1BhcmFncmFwaCk7XHJcbiAgICAgICAgbmV3VGFyZ2V0UGFyYWdyYXBocy5zcGxpY2UoaXgsIDAsIGV4aXN0aW5nUGFyYWdyYXBoLnRhcmdldCk7XHJcbiAgICAgICAgbmV3U291cmNlUGFyYWdyYXBocy5zcGxpY2UoaXgsIDAsIGV4aXN0aW5nUGFyYWdyYXBoLnNvdXJjZSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc3QgbmV3UGFyYWdyYXBoID0gVGxkVHJhbnNsYXRlVGV4dFV0aWxzLmNyZWF0ZUVtcHR5UGFyYWdyYXBoSW5mbyhpeCk7XHJcblxyXG4gICAgICAgIG5ld1BhcmFncmFwaHMuc3BsaWNlKGl4LCAwLCBuZXdQYXJhZ3JhcGgpO1xyXG4gICAgICAgIG5ld1NvdXJjZVBhcmFncmFwaHMuc3BsaWNlKGl4LCAwLCBuZXdQYXJhZ3JhcGguc291cmNlKTtcclxuICAgICAgICBuZXdUYXJnZXRQYXJhZ3JhcGhzLnNwbGljZShpeCwgMCwgbmV3UGFyYWdyYXBoLnRhcmdldCk7XHJcbiAgICAgICAgdGhpcy5wYXJhZ3JhcGhUcmFuc2xhdGlvbnNTdWJqZWN0Lm5leHQoeyBpeDogaXgsIGxpbmU6IHBhcmFncmFwaCB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNUcmFuc2xhdGluZykge1xyXG4gICAgICB0aGlzLnNldFByb2dyZXNzSW5kaWNhdG9yVGltZW91dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMucGFyYWdyYXBocyA9IG5ld1BhcmFncmFwaHM7XHJcbiAgICB0aGlzLnRhcmdldFBhcmFncmFwaHMgPSBuZXdUYXJnZXRQYXJhZ3JhcGhzO1xyXG4gICAgdGhpcy5zb3VyY2VQYXJhZ3JhcGhzID0gbmV3U291cmNlUGFyYWdyYXBocztcclxuICB9XHJcblxyXG4gIC8qKiBDcmVhdGVzIHRpbWVvdXQgd2hpY2ggZW5hYmxlcyBwcm9ncmVzcyBpbmRpY2F0b3IgYWZ0ZXIgZ2l2ZW4gbWlsaXNlY29uZHMgKi9cclxuICBwcml2YXRlIHNldFByb2dyZXNzSW5kaWNhdG9yVGltZW91dCgpIHtcclxuICAgIGlmICh0aGlzLnByb2dyZXNzSW5kaWNhdG9yVGltZW91dE1pbGlTZWNvbmRzID09PSBudWxsIHx8IHRoaXMucHJvZ3Jlc3NJbmRpY2F0b3JUaW1lb3V0TWlsaVNlY29uZHMgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuY29uZmlnU2VydmljZS50ZXh0Q29uZmlnLnByb2dyZXNzSW5kaWNhdG9yVmlzaWJsZSkge1xyXG4gICAgICB0aGlzLnByb2dyZXNzSW5kaWNhdG9yVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2hvd1Byb2dyZXNzSW5kaWNhdG9yKCk7XHJcbiAgICAgIH0sIHRoaXMucHJvZ3Jlc3NJbmRpY2F0b3JUaW1lb3V0TWlsaVNlY29uZHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIE1ldGhvZCBmb3Igc2V0dGluZyBuZWNlc3NhcnkgcHJvcGVydGllcyB0byBtYWtlIHByb2dyZXNzIGluZGljYXRvciB2aXNpYmxlLiAqL1xyXG4gIHByaXZhdGUgc2hvd1Byb2dyZXNzSW5kaWNhdG9yKCkge1xyXG4gICAgdGhpcy5fc2hvdWxkU2hvd1Byb2dyZXNzSW5kaWNhdG9yID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8qKiBNZXRob2QgZm9yIHNldHRpbmcgbmVjZXNzYXJ5IHByb3BlcnRpZXMgdG8gbWFrZSBwcm9ncmVzcyBpbmRpY2F0b3IgaGlkZGVuLiAqL1xyXG4gIGhpZGVQcm9ncmVzc0luZGljYXRvcigpIHtcclxuICAgIGlmICh0aGlzLnByb2dyZXNzSW5kaWNhdG9yVGltZW91dCkge1xyXG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5wcm9ncmVzc0luZGljYXRvclRpbWVvdXQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fc2hvdWxkU2hvd1Byb2dyZXNzSW5kaWNhdG9yID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRvZ2dsZVRleHRUb1NwZWVjaCgpIHtcclxuICAgIC8vIGlmIG5vdGhpbmcgdHJhbnNsYXRlZCwgdHRzIHNob3VsZCBub3QgYmUgYXZhaWxhYmxlXHJcbiAgICBpZiAoIXRoaXMudGFyZ2V0UGFyYWdyYXBocy5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFjdGl2ZVN5c3RlbSA9IHRoaXMuYWN0aXZlRGF0YTtcclxuICAgIHRoaXMudGV4dFRvU3BlZWNoVGFyZ2V0U2V0dGluZ3MgPSB0aGlzLmZpbmRUZXh0VG9TcGVlY2hTZXR0aW5ncyhhY3RpdmVTeXN0ZW0udGFyZ2V0TGFuZ3VhZ2UsIHRoaXMudHJhbnNsYXRlZFRleHQpO1xyXG4gICAgdGhpcy50ZXh0VG9TcGVlY2hTb3VyY2VTZXR0aW5ncyA9IHRoaXMuZmluZFRleHRUb1NwZWVjaFNldHRpbmdzKGFjdGl2ZVN5c3RlbS5zb3VyY2VMYW5ndWFnZSwgdGhpcy5zb3VyY2VUZXh0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZmluZFRleHRUb1NwZWVjaFNldHRpbmdzKGxhbmd1YWdlQ29kZTogc3RyaW5nLCB0ZXh0OiBzdHJpbmcpOiBUZXh0VG9TcGVlY2hTZXR0aW5ncyB7XHJcbiAgICBjb25zdCBzZXR0aW5ncyA9IHRoaXMuY29uZmlnU2VydmljZS50ZXh0VG9TcGVlY2hDb25maWcubGFuZ3VhZ2VzW2xhbmd1YWdlQ29kZV07XHJcbiAgICBpZiAoc2V0dGluZ3MpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICB0ZXh0LFxyXG4gICAgICAgIHVybDogc2V0dGluZ3MudXJsLFxyXG4gICAgICAgIHZvaWNlOiBzZXR0aW5ncy52b2ljZSxcclxuICAgICAgICBsYW5nQnBjNDc6IHNldHRpbmdzLmxhbmdCcGM0NyxcclxuICAgICAgICBtYXhDaGFyc0luVGV4dDogdGhpcy5jb25maWdTZXJ2aWNlLnRleHRUb1NwZWVjaENvbmZpZy5tYXhDaGFyc0luVGV4dFxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,95 @@
1
+ import { ClipboardModule } from '@angular/cdk/clipboard';
2
+ import { LayoutModule } from '@angular/cdk/layout';
3
+ import { CommonModule } from '@angular/common';
4
+ import { NgModule } from '@angular/core';
5
+ import { FormsModule } from '@angular/forms';
6
+ import { MatProgressBarModule } from '@angular/material/progress-bar';
7
+ import { TranslateModule } from '@ngx-translate/core';
8
+ import { CloseButtonModule } from '@tilde-nlp/ngx-common';
9
+ import { ExtensionDialogModule } from '../../components/shared/extension-dialog';
10
+ import { TextToSpeechModule } from '../../components/shared/text-to-speech/text-to-speech.module';
11
+ import { VendorDisclaimerModule } from '../../components/shared/vendor-disclaimer/vendor-disclaimer.module';
12
+ import { MaterialModule } from '../material.module';
13
+ import { TldAudioModule } from '../tld-audio';
14
+ import { TldCommonModule } from '../tld-common/tld-common.module';
15
+ import { HighlightTreeComponent } from './components/highlight-tree/highlight-tree.component';
16
+ import { ProgressIndicatorComponent } from './components/progress-indicator/progress-indicator.component';
17
+ import { TextareaWithBackgroundComponent } from './components/textarea-with-background/textarea-with-background.component';
18
+ import { TldDictionaryComponent } from './components/tld-dictionary/tld-dictionary.component';
19
+ import { TldTranslateSourceComponent } from './components/tld-translate-source/tld-translate-source.component';
20
+ import { TldTranslateSuggestDialogComponent } from './components/tld-translate-suggest/dialog/tld-translate-suggest-dialog.component';
21
+ import { TldTranslateSuggestComponent } from './components/tld-translate-suggest/tld-translate-suggest.component';
22
+ import { TldTranslateTextComponent } from './components/tld-translate-text/tld-translate-text.component';
23
+ import * as i0 from "@angular/core";
24
+ export class TldTextModule {
25
+ }
26
+ TldTextModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TldTextModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
27
+ TldTextModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: TldTextModule, declarations: [TldTranslateSourceComponent,
28
+ TldTranslateSuggestComponent,
29
+ TldTranslateSuggestDialogComponent,
30
+ TldTranslateTextComponent,
31
+ TldDictionaryComponent,
32
+ TextareaWithBackgroundComponent,
33
+ HighlightTreeComponent,
34
+ ProgressIndicatorComponent], imports: [CommonModule,
35
+ TranslateModule,
36
+ MaterialModule,
37
+ FormsModule,
38
+ TldCommonModule,
39
+ ClipboardModule,
40
+ TldAudioModule,
41
+ CloseButtonModule,
42
+ ExtensionDialogModule,
43
+ LayoutModule,
44
+ MatProgressBarModule,
45
+ VendorDisclaimerModule,
46
+ TextToSpeechModule], exports: [TldTranslateSourceComponent,
47
+ TldTranslateSuggestComponent,
48
+ TldTranslateTextComponent] });
49
+ TldTextModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TldTextModule, imports: [CommonModule,
50
+ TranslateModule,
51
+ MaterialModule,
52
+ FormsModule,
53
+ TldCommonModule,
54
+ ClipboardModule,
55
+ TldAudioModule,
56
+ CloseButtonModule,
57
+ ExtensionDialogModule,
58
+ LayoutModule,
59
+ MatProgressBarModule,
60
+ VendorDisclaimerModule,
61
+ TextToSpeechModule] });
62
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TldTextModule, decorators: [{
63
+ type: NgModule,
64
+ args: [{
65
+ declarations: [TldTranslateSourceComponent,
66
+ TldTranslateSuggestComponent,
67
+ TldTranslateSuggestDialogComponent,
68
+ TldTranslateTextComponent,
69
+ TldDictionaryComponent,
70
+ TextareaWithBackgroundComponent,
71
+ HighlightTreeComponent,
72
+ ProgressIndicatorComponent],
73
+ imports: [
74
+ CommonModule,
75
+ TranslateModule,
76
+ MaterialModule,
77
+ FormsModule,
78
+ TldCommonModule,
79
+ ClipboardModule,
80
+ TldAudioModule,
81
+ CloseButtonModule,
82
+ ExtensionDialogModule,
83
+ LayoutModule,
84
+ MatProgressBarModule,
85
+ VendorDisclaimerModule,
86
+ TextToSpeechModule
87
+ ],
88
+ exports: [
89
+ TldTranslateSourceComponent,
90
+ TldTranslateSuggestComponent,
91
+ TldTranslateTextComponent
92
+ ]
93
+ }]
94
+ }] });
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGxkLXRleHQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGxkLXRyYW5zbGF0ZS9zcmMvbGliL21vZHVsZXMvdGxkLXRleHQvdGxkLXRleHQubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUNqRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUNsRyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUM1RyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDOUYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDMUcsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sMEVBQTBFLENBQUM7QUFDM0gsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFDOUYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDL0csT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sa0ZBQWtGLENBQUM7QUFDdEksT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0VBQW9FLENBQUM7QUFDbEgsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sOERBQThELENBQUM7O0FBaUN6RyxNQUFNLE9BQU8sYUFBYTs7MEdBQWIsYUFBYTsyR0FBYixhQUFhLGlCQTVCVCwyQkFBMkI7UUFDeEMsNEJBQTRCO1FBQzVCLGtDQUFrQztRQUNsQyx5QkFBeUI7UUFDekIsc0JBQXNCO1FBQ3RCLCtCQUErQjtRQUMvQixzQkFBc0I7UUFDdEIsMEJBQTBCLGFBRTFCLFlBQVk7UUFDWixlQUFlO1FBQ2YsY0FBYztRQUNkLFdBQVc7UUFDWCxlQUFlO1FBQ2YsZUFBZTtRQUNmLGNBQWM7UUFDZCxpQkFBaUI7UUFDakIscUJBQXFCO1FBQ3JCLFlBQVk7UUFDWixvQkFBb0I7UUFDcEIsc0JBQXNCO1FBQ3RCLGtCQUFrQixhQUdsQiwyQkFBMkI7UUFDM0IsNEJBQTRCO1FBQzVCLHlCQUF5QjsyR0FFaEIsYUFBYSxZQW5CdEIsWUFBWTtRQUNaLGVBQWU7UUFDZixjQUFjO1FBQ2QsV0FBVztRQUNYLGVBQWU7UUFDZixlQUFlO1FBQ2YsY0FBYztRQUNkLGlCQUFpQjtRQUNqQixxQkFBcUI7UUFDckIsWUFBWTtRQUNaLG9CQUFvQjtRQUNwQixzQkFBc0I7UUFDdEIsa0JBQWtCOzJGQU9ULGFBQWE7a0JBN0J6QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLDJCQUEyQjt3QkFDeEMsNEJBQTRCO3dCQUM1QixrQ0FBa0M7d0JBQ2xDLHlCQUF5Qjt3QkFDekIsc0JBQXNCO3dCQUN0QiwrQkFBK0I7d0JBQy9CLHNCQUFzQjt3QkFDdEIsMEJBQTBCLENBQUM7b0JBQzdCLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGVBQWU7d0JBQ2YsY0FBYzt3QkFDZCxXQUFXO3dCQUNYLGVBQWU7d0JBQ2YsZUFBZTt3QkFDZixjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIscUJBQXFCO3dCQUNyQixZQUFZO3dCQUNaLG9CQUFvQjt3QkFDcEIsc0JBQXNCO3dCQUN0QixrQkFBa0I7cUJBQ25CO29CQUNELE9BQU8sRUFBRTt3QkFDUCwyQkFBMkI7d0JBQzNCLDRCQUE0Qjt3QkFDNUIseUJBQXlCO3FCQUFDO2lCQUM3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENsaXBib2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jbGlwYm9hcmQnO1xyXG5pbXBvcnQgeyBMYXlvdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdFByb2dyZXNzQmFyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcHJvZ3Jlc3MtYmFyJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IENsb3NlQnV0dG9uTW9kdWxlIH0gZnJvbSAnQHRpbGRlLW5scC9uZ3gtY29tbW9uJztcclxuaW1wb3J0IHsgRXh0ZW5zaW9uRGlhbG9nTW9kdWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9zaGFyZWQvZXh0ZW5zaW9uLWRpYWxvZyc7XHJcbmltcG9ydCB7IFRleHRUb1NwZWVjaE1vZHVsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvc2hhcmVkL3RleHQtdG8tc3BlZWNoL3RleHQtdG8tc3BlZWNoLm1vZHVsZSc7XHJcbmltcG9ydCB7IFZlbmRvckRpc2NsYWltZXJNb2R1bGUgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL3NoYXJlZC92ZW5kb3ItZGlzY2xhaW1lci92ZW5kb3ItZGlzY2xhaW1lci5tb2R1bGUnO1xyXG5pbXBvcnQgeyBNYXRlcmlhbE1vZHVsZSB9IGZyb20gJy4uL21hdGVyaWFsLm1vZHVsZSc7XHJcbmltcG9ydCB7IFRsZEF1ZGlvTW9kdWxlIH0gZnJvbSAnLi4vdGxkLWF1ZGlvJztcclxuaW1wb3J0IHsgVGxkQ29tbW9uTW9kdWxlIH0gZnJvbSAnLi4vdGxkLWNvbW1vbi90bGQtY29tbW9uLm1vZHVsZSc7XHJcbmltcG9ydCB7IEhpZ2hsaWdodFRyZWVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvaGlnaGxpZ2h0LXRyZWUvaGlnaGxpZ2h0LXRyZWUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUHJvZ3Jlc3NJbmRpY2F0b3JDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvcHJvZ3Jlc3MtaW5kaWNhdG9yL3Byb2dyZXNzLWluZGljYXRvci5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUZXh0YXJlYVdpdGhCYWNrZ3JvdW5kQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3RleHRhcmVhLXdpdGgtYmFja2dyb3VuZC90ZXh0YXJlYS13aXRoLWJhY2tncm91bmQuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGxkRGljdGlvbmFyeUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90bGQtZGljdGlvbmFyeS90bGQtZGljdGlvbmFyeS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUbGRUcmFuc2xhdGVTb3VyY2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGxkLXRyYW5zbGF0ZS1zb3VyY2UvdGxkLXRyYW5zbGF0ZS1zb3VyY2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlU3VnZ2VzdERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90bGQtdHJhbnNsYXRlLXN1Z2dlc3QvZGlhbG9nL3RsZC10cmFuc2xhdGUtc3VnZ2VzdC1kaWFsb2cuY29tcG9uZW50JztcclxuaW1wb3J0IHsgVGxkVHJhbnNsYXRlU3VnZ2VzdENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy90bGQtdHJhbnNsYXRlLXN1Z2dlc3QvdGxkLXRyYW5zbGF0ZS1zdWdnZXN0LmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRsZFRyYW5zbGF0ZVRleHRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvdGxkLXRyYW5zbGF0ZS10ZXh0L3RsZC10cmFuc2xhdGUtdGV4dC5jb21wb25lbnQnO1xyXG5cclxuXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW1RsZFRyYW5zbGF0ZVNvdXJjZUNvbXBvbmVudCxcclxuICAgIFRsZFRyYW5zbGF0ZVN1Z2dlc3RDb21wb25lbnQsXHJcbiAgICBUbGRUcmFuc2xhdGVTdWdnZXN0RGlhbG9nQ29tcG9uZW50LFxyXG4gICAgVGxkVHJhbnNsYXRlVGV4dENvbXBvbmVudCxcclxuICAgIFRsZERpY3Rpb25hcnlDb21wb25lbnQsXHJcbiAgICBUZXh0YXJlYVdpdGhCYWNrZ3JvdW5kQ29tcG9uZW50LFxyXG4gICAgSGlnaGxpZ2h0VHJlZUNvbXBvbmVudCxcclxuICAgIFByb2dyZXNzSW5kaWNhdG9yQ29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBNYXRlcmlhbE1vZHVsZSxcclxuICAgIEZvcm1zTW9kdWxlLFxyXG4gICAgVGxkQ29tbW9uTW9kdWxlLFxyXG4gICAgQ2xpcGJvYXJkTW9kdWxlLFxyXG4gICAgVGxkQXVkaW9Nb2R1bGUsXHJcbiAgICBDbG9zZUJ1dHRvbk1vZHVsZSxcclxuICAgIEV4dGVuc2lvbkRpYWxvZ01vZHVsZSxcclxuICAgIExheW91dE1vZHVsZSxcclxuICAgIE1hdFByb2dyZXNzQmFyTW9kdWxlLFxyXG4gICAgVmVuZG9yRGlzY2xhaW1lck1vZHVsZSxcclxuICAgIFRleHRUb1NwZWVjaE1vZHVsZVxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgVGxkVHJhbnNsYXRlU291cmNlQ29tcG9uZW50LFxyXG4gICAgVGxkVHJhbnNsYXRlU3VnZ2VzdENvbXBvbmVudCxcclxuICAgIFRsZFRyYW5zbGF0ZVRleHRDb21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUbGRUZXh0TW9kdWxlIHsgfVxyXG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './models';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtdGV4dC91dGlscy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbW9kZWxzJzsiXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhpc3RpbmctcGFyYWdyYXBoLWluZm8ubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtdGV4dC91dGlscy9tb2RlbHMvZXhpc3RpbmctcGFyYWdyYXBoLWluZm8ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElQYXJhZ3JhcGhJbmZvIH0gZnJvbSBcIi4uLy4uL21vZGVscy9oaWdobGlnaHQubW9kZWxcIjtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSUV4aXN0aW5nUGFyYWdyYXBoSW5mb3tcclxuICAgIGhhc1NhbWVJeDogYm9vbGVhbjtcclxuICAgIGV4aXN0aW5nUGFyYWdyYXBoOiBJUGFyYWdyYXBoSW5mbztcclxufSJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './existing-paragraph-info.model';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90bGQtdHJhbnNsYXRlL3NyYy9saWIvbW9kdWxlcy90bGQtdGV4dC91dGlscy9tb2RlbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxpQ0FBaUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZXhpc3RpbmctcGFyYWdyYXBoLWluZm8ubW9kZWwnOyJdfQ==