monkey-front-core 0.0.410 → 0.0.411

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 (356) hide show
  1. package/README.md +24 -24
  2. package/esm2020/lib/components/alerts/alerts.component.mjs +45 -45
  3. package/esm2020/lib/components/alerts/alerts.module.mjs +21 -21
  4. package/esm2020/lib/components/alerts/index.mjs +3 -3
  5. package/esm2020/lib/components/closed-to-maintenance/closed-to-maintenance.component.mjs +29 -29
  6. package/esm2020/lib/components/closed-to-maintenance/closed-to-maintenance.module.mjs +43 -43
  7. package/esm2020/lib/components/closed-to-maintenance/index.mjs +3 -3
  8. package/esm2020/lib/components/currency-config/currency-config.component.mjs +39 -39
  9. package/esm2020/lib/components/currency-config/currency-config.module.mjs +39 -39
  10. package/esm2020/lib/components/currency-config/index.mjs +3 -3
  11. package/esm2020/lib/components/index.mjs +6 -6
  12. package/esm2020/lib/components/progress-bar/index.mjs +4 -4
  13. package/esm2020/lib/components/progress-bar/progress-bar.component.mjs +23 -23
  14. package/esm2020/lib/components/progress-bar/progress-bar.module.mjs +18 -18
  15. package/esm2020/lib/components/progress-bar/progress-bar.service.mjs +50 -50
  16. package/esm2020/lib/components/version-changed/index.mjs +3 -3
  17. package/esm2020/lib/components/version-changed/version-changed.component.mjs +24 -24
  18. package/esm2020/lib/components/version-changed/version-changed.module.mjs +39 -39
  19. package/esm2020/lib/core/decorators/index.mjs +5 -5
  20. package/esm2020/lib/core/decorators/monkeyecx-charts-decorators.mjs +40 -40
  21. package/esm2020/lib/core/decorators/monkeyecx-decorators.mjs +111 -111
  22. package/esm2020/lib/core/decorators/monkeyecx-download-decorators.mjs +26 -26
  23. package/esm2020/lib/core/decorators/monkeyecx-upload-decorators.mjs +26 -26
  24. package/esm2020/lib/core/directives/index.mjs +13 -13
  25. package/esm2020/lib/core/directives/monkeyecx-directives-module.mjs +73 -73
  26. package/esm2020/lib/core/directives/monkeyecx-drag-drop.mjs +57 -57
  27. package/esm2020/lib/core/directives/monkeyecx-feature-by-program-directive.mjs +54 -54
  28. package/esm2020/lib/core/directives/monkeyecx-feature-directive.mjs +68 -68
  29. package/esm2020/lib/core/directives/monkeyecx-format-currency.mjs +44 -44
  30. package/esm2020/lib/core/directives/monkeyecx-format-upper.mjs +67 -67
  31. package/esm2020/lib/core/directives/monkeyecx-only-alpha-numeric-directive.mjs +28 -28
  32. package/esm2020/lib/core/directives/monkeyecx-only-number-directive.mjs +28 -28
  33. package/esm2020/lib/core/directives/monkeyecx-popover-options.directive.mjs +39 -39
  34. package/esm2020/lib/core/directives/monkeyecx-popover.directive.mjs +212 -212
  35. package/esm2020/lib/core/directives/monkeyecx-security-directive.mjs +75 -75
  36. package/esm2020/lib/core/directives/monkeyecx-tooltip-directive.mjs +123 -123
  37. package/esm2020/lib/core/index.mjs +10 -10
  38. package/esm2020/lib/core/interceptors/index.mjs +6 -6
  39. package/esm2020/lib/core/interceptors/monkeyecx-http-config-error.interceptor.mjs +49 -49
  40. package/esm2020/lib/core/interceptors/monkeyecx-http-config-header.interceptor.mjs +59 -59
  41. package/esm2020/lib/core/interceptors/monkeyecx-http-config-interceptor.module.mjs +47 -47
  42. package/esm2020/lib/core/interceptors/monkeyecx-http-config-loading-in-progress.interceptor.mjs +43 -43
  43. package/esm2020/lib/core/interceptors/monkeyecx-http-config-queue.interceptor.mjs +37 -37
  44. package/esm2020/lib/core/interfaces/index.mjs +31 -31
  45. package/esm2020/lib/core/interfaces/monkeyecx-auth-credentials.mjs +2 -2
  46. package/esm2020/lib/core/interfaces/monkeyecx-company-pendencies.mjs +2 -2
  47. package/esm2020/lib/core/interfaces/monkeyecx-company.mjs +2 -2
  48. package/esm2020/lib/core/interfaces/monkeyecx-config-bootstrap.mjs +2 -2
  49. package/esm2020/lib/core/interfaces/monkeyecx-config.mjs +2 -2
  50. package/esm2020/lib/core/interfaces/monkeyecx-country-security.mjs +2 -2
  51. package/esm2020/lib/core/interfaces/monkeyecx-error-response.mjs +2 -2
  52. package/esm2020/lib/core/interfaces/monkeyecx-filter.mjs +2 -2
  53. package/esm2020/lib/core/interfaces/monkeyecx-handled-error-response.mjs +2 -2
  54. package/esm2020/lib/core/interfaces/monkeyecx-header-credentials.mjs +2 -2
  55. package/esm2020/lib/core/interfaces/monkeyecx-intercom-options.mjs +2 -2
  56. package/esm2020/lib/core/interfaces/monkeyecx-me-credentials.mjs +2 -2
  57. package/esm2020/lib/core/interfaces/monkeyecx-navigation.mjs +2 -2
  58. package/esm2020/lib/core/interfaces/monkeyecx-program.mjs +2 -2
  59. package/esm2020/lib/core/interfaces/monkeyecx-releases.mjs +2 -2
  60. package/esm2020/lib/core/interfaces/monkeyecx-request-in-progress.mjs +2 -2
  61. package/esm2020/lib/core/interfaces/monkeyecx-request-paged.mjs +2 -2
  62. package/esm2020/lib/core/interfaces/monkeyecx-response-links.mjs +2 -2
  63. package/esm2020/lib/core/interfaces/monkeyecx-response-paged.mjs +2 -2
  64. package/esm2020/lib/core/interfaces/monkeyecx-saved-state.mjs +2 -2
  65. package/esm2020/lib/core/interfaces/monkeyecx-scroll-options.mjs +2 -2
  66. package/esm2020/lib/core/interfaces/monkeyecx-service-credentials.mjs +2 -2
  67. package/esm2020/lib/core/interfaces/monkeyecx-storage.mjs +2 -2
  68. package/esm2020/lib/core/interfaces/monkeyecx-support-options.mjs +2 -2
  69. package/esm2020/lib/core/interfaces/monkeyecx-token-credentials.mjs +2 -2
  70. package/esm2020/lib/core/interfaces/monkeyecx-translate-options.mjs +2 -2
  71. package/esm2020/lib/core/interfaces/request-download/index.mjs +4 -4
  72. package/esm2020/lib/core/interfaces/request-download/monkeyecx-request-download.mjs +2 -2
  73. package/esm2020/lib/core/interfaces/request-download/monkeyecx-request-downloaded.mjs +2 -2
  74. package/esm2020/lib/core/interfaces/request-download/monkeyecx-request-item-download.mjs +2 -2
  75. package/esm2020/lib/core/interfaces/request-queue/index.mjs +4 -4
  76. package/esm2020/lib/core/interfaces/request-queue/monkeyecx-request-item-queue.mjs +2 -2
  77. package/esm2020/lib/core/interfaces/request-queue/monkeyecx-request-progress-queue.mjs +2 -2
  78. package/esm2020/lib/core/interfaces/request-queue/monkeyecx-request-queue.mjs +2 -2
  79. package/esm2020/lib/core/interfaces/request-upload/index.mjs +3 -3
  80. package/esm2020/lib/core/interfaces/request-upload/monkeyecx-request-item-upload.mjs +2 -2
  81. package/esm2020/lib/core/interfaces/request-upload/monkeyecx-request-upload.mjs +2 -2
  82. package/esm2020/lib/core/interfaces/schedules/index.mjs +2 -2
  83. package/esm2020/lib/core/interfaces/schedules/monkeyecx-request-schedule.mjs +2 -2
  84. package/esm2020/lib/core/model/index.mjs +2 -2
  85. package/esm2020/lib/core/model/monkeyecx-model.mjs +25 -25
  86. package/esm2020/lib/core/pipes/index.mjs +22 -22
  87. package/esm2020/lib/core/pipes/monkeyecx-blob-secure.mjs +26 -26
  88. package/esm2020/lib/core/pipes/monkeyecx-display-first-name.mjs +19 -19
  89. package/esm2020/lib/core/pipes/monkeyecx-display-initials.mjs +21 -21
  90. package/esm2020/lib/core/pipes/monkeyecx-display-support-phone.mjs +33 -33
  91. package/esm2020/lib/core/pipes/monkeyecx-format-address.mjs +20 -20
  92. package/esm2020/lib/core/pipes/monkeyecx-format-beautify-json.mjs +38 -38
  93. package/esm2020/lib/core/pipes/monkeyecx-format-currency.mjs +27 -27
  94. package/esm2020/lib/core/pipes/monkeyecx-format-date-group.mjs +45 -45
  95. package/esm2020/lib/core/pipes/monkeyecx-format-date-timelapse.mjs +32 -32
  96. package/esm2020/lib/core/pipes/monkeyecx-format-date-unix-timelapse.mjs +36 -36
  97. package/esm2020/lib/core/pipes/monkeyecx-format-document.mjs +20 -20
  98. package/esm2020/lib/core/pipes/monkeyecx-format-number.mjs +20 -20
  99. package/esm2020/lib/core/pipes/monkeyecx-format-phone.mjs +42 -42
  100. package/esm2020/lib/core/pipes/monkeyecx-format-size.mjs +20 -20
  101. package/esm2020/lib/core/pipes/monkeyecx-format-tax.mjs +23 -23
  102. package/esm2020/lib/core/pipes/monkeyecx-format-type-document.mjs +19 -19
  103. package/esm2020/lib/core/pipes/monkeyecx-format-value.mjs +19 -19
  104. package/esm2020/lib/core/pipes/monkeyecx-format-zipcode.mjs +19 -19
  105. package/esm2020/lib/core/pipes/monkeyecx-pipes.module.mjs +117 -117
  106. package/esm2020/lib/core/pipes/monkeyecx-text-truncate.mjs +23 -23
  107. package/esm2020/lib/core/pipes/monkeyecx-truncate-qtd.mjs +16 -16
  108. package/esm2020/lib/core/services/alerts/index.mjs +2 -2
  109. package/esm2020/lib/core/services/alerts/monkeyecx-alerts.service.mjs +42 -42
  110. package/esm2020/lib/core/services/auth/index.mjs +6 -6
  111. package/esm2020/lib/core/services/auth/monkeyecx-auth-guard-company.service.mjs +28 -28
  112. package/esm2020/lib/core/services/auth/monkeyecx-auth-guard-login.service.mjs +27 -27
  113. package/esm2020/lib/core/services/auth/monkeyecx-auth-guard-role.service.mjs +79 -79
  114. package/esm2020/lib/core/services/auth/monkeyecx-auth-guard.service.mjs +26 -26
  115. package/esm2020/lib/core/services/auth/monkeyecx-authentication.service.mjs +79 -79
  116. package/esm2020/lib/core/services/commons/index.mjs +2 -2
  117. package/esm2020/lib/core/services/commons/monkeyecx-commons.service.mjs +361 -361
  118. package/esm2020/lib/core/services/config/monkeyecx-alerts-config.service.mjs +42 -42
  119. package/esm2020/lib/core/services/config/monkeyecx-config.module.mjs +28 -28
  120. package/esm2020/lib/core/services/config/monkeyecx-config.service.mjs +110 -110
  121. package/esm2020/lib/core/services/config/monkeyecx-currency-config.service.mjs +84 -84
  122. package/esm2020/lib/core/services/config/monkeyecx-error-config.service.mjs +85 -85
  123. package/esm2020/lib/core/services/config/monkeyecx-feature-toggle.service.mjs +76 -76
  124. package/esm2020/lib/core/services/config/monkeyecx-gtm-config.service.mjs +51 -51
  125. package/esm2020/lib/core/services/config/monkeyecx-i18n-config.service.mjs +92 -92
  126. package/esm2020/lib/core/services/config/monkeyecx-logs-config.service.mjs +34 -34
  127. package/esm2020/lib/core/services/config/monkeyecx-maintenance-config.service.mjs +37 -37
  128. package/esm2020/lib/core/services/config/monkeyecx-security-console-config.service.mjs +42 -42
  129. package/esm2020/lib/core/services/config/monkeyecx-service-worker-config.service.mjs +53 -53
  130. package/esm2020/lib/core/services/error/index.mjs +5 -5
  131. package/esm2020/lib/core/services/error/monkeyecx-error-handling.module.mjs +27 -27
  132. package/esm2020/lib/core/services/error/monkeyecx-error-handling.service.mjs +37 -37
  133. package/esm2020/lib/core/services/error/monkeyecx-http-error-handling.service.mjs +138 -138
  134. package/esm2020/lib/core/services/error/monkeyecx-others-errors-handling.service.mjs +29 -29
  135. package/esm2020/lib/core/services/index.mjs +25 -25
  136. package/esm2020/lib/core/services/logged/index.mjs +2 -2
  137. package/esm2020/lib/core/services/logged/monkeyecx-logged-handling.service.mjs +40 -40
  138. package/esm2020/lib/core/services/monkeyecx-handling.service.mjs +50 -50
  139. package/esm2020/lib/core/services/monkeyecx-service.service.mjs +104 -104
  140. package/esm2020/lib/core/services/pagination/index.mjs +2 -2
  141. package/esm2020/lib/core/services/pagination/monkeyecx-pagination.service.mjs +29 -29
  142. package/esm2020/lib/core/services/request-download/index.mjs +3 -3
  143. package/esm2020/lib/core/services/request-download/monkeyecx-request-download-handling.service.mjs +93 -93
  144. package/esm2020/lib/core/services/request-download/monkeyecx-request-downloaded-handling.service.mjs +61 -61
  145. package/esm2020/lib/core/services/request-paged/index.mjs +2 -2
  146. package/esm2020/lib/core/services/request-paged/monkeyecx-request-request-paged-handling.mjs +42 -42
  147. package/esm2020/lib/core/services/request-queue/index.mjs +3 -3
  148. package/esm2020/lib/core/services/request-queue/monkeyecx-request-queue-handling.service.mjs +114 -114
  149. package/esm2020/lib/core/services/request-queue/monkeyecx-request-queue-modal-handling.service.mjs +119 -119
  150. package/esm2020/lib/core/services/routes/index.mjs +2 -2
  151. package/esm2020/lib/core/services/routes/monkeyecx-dicovery-params.service.mjs +54 -54
  152. package/esm2020/lib/core/services/schedules/index.mjs +2 -2
  153. package/esm2020/lib/core/services/schedules/monkeyecx-request-schedule.service.mjs +188 -188
  154. package/esm2020/lib/core/services/storage/index.mjs +3 -3
  155. package/esm2020/lib/core/services/storage/monkeyecx-cookie-storage.service.mjs +32 -32
  156. package/esm2020/lib/core/services/storage/monkeyecx-token-storage.service.mjs +236 -236
  157. package/esm2020/lib/core/specification-search/index.mjs +2 -2
  158. package/esm2020/lib/core/specification-search/monkeyecx-specification-search.mjs +108 -108
  159. package/esm2020/lib/core/utils/decorators-utils.mjs +40 -40
  160. package/esm2020/lib/core/utils/index.mjs +8 -8
  161. package/esm2020/lib/core/utils/statics.mjs +45 -45
  162. package/esm2020/lib/core/utils/utils.mjs +251 -251
  163. package/esm2020/lib/core/utils/validate-utils.mjs +205 -205
  164. package/esm2020/lib/core/utils/validators.mjs +226 -226
  165. package/esm2020/lib/monkey-front-core.module.mjs +71 -71
  166. package/esm2020/lib/store/actions/index.mjs +2 -2
  167. package/esm2020/lib/store/actions/monkeyecx-storage.actions.mjs +8 -8
  168. package/esm2020/lib/store/index.mjs +4 -4
  169. package/esm2020/lib/store/reducers/index.mjs +3 -3
  170. package/esm2020/lib/store/reducers/monkeyecx-seeder.reducer.mjs +53 -53
  171. package/esm2020/lib/store/reducers/monkeyecx-storage.reducer.mjs +40 -40
  172. package/esm2020/lib/store/selectors/index.mjs +2 -2
  173. package/esm2020/lib/store/selectors/monkeyecx-storage.selector.mjs +17 -17
  174. package/esm2020/monkey-front-core.mjs +4 -4
  175. package/esm2020/public-api.mjs +8 -8
  176. package/fesm2015/monkey-front-core.mjs +5425 -5425
  177. package/fesm2015/monkey-front-core.mjs.map +1 -1
  178. package/fesm2020/monkey-front-core.mjs +5498 -5498
  179. package/fesm2020/monkey-front-core.mjs.map +1 -1
  180. package/lib/components/alerts/alerts.component.d.ts +22 -22
  181. package/lib/components/alerts/alerts.module.d.ts +10 -10
  182. package/lib/components/alerts/index.d.ts +2 -2
  183. package/lib/components/closed-to-maintenance/closed-to-maintenance.component.d.ts +13 -13
  184. package/lib/components/closed-to-maintenance/closed-to-maintenance.module.d.ts +11 -11
  185. package/lib/components/closed-to-maintenance/index.d.ts +2 -2
  186. package/lib/components/currency-config/currency-config.component.d.ts +17 -17
  187. package/lib/components/currency-config/currency-config.module.d.ts +10 -10
  188. package/lib/components/currency-config/index.d.ts +2 -2
  189. package/lib/components/index.d.ts +5 -5
  190. package/lib/components/progress-bar/index.d.ts +3 -3
  191. package/lib/components/progress-bar/progress-bar.component.d.ts +11 -11
  192. package/lib/components/progress-bar/progress-bar.module.d.ts +8 -8
  193. package/lib/components/progress-bar/progress-bar.service.d.ts +14 -14
  194. package/lib/components/version-changed/index.d.ts +2 -2
  195. package/lib/components/version-changed/version-changed.component.d.ts +9 -9
  196. package/lib/components/version-changed/version-changed.module.d.ts +10 -10
  197. package/lib/core/decorators/index.d.ts +4 -4
  198. package/lib/core/decorators/monkeyecx-charts-decorators.d.ts +1 -1
  199. package/lib/core/decorators/monkeyecx-decorators.d.ts +7 -7
  200. package/lib/core/decorators/monkeyecx-download-decorators.d.ts +2 -2
  201. package/lib/core/decorators/monkeyecx-upload-decorators.d.ts +2 -2
  202. package/lib/core/directives/index.d.ts +12 -12
  203. package/lib/core/directives/monkeyecx-directives-module.d.ts +19 -19
  204. package/lib/core/directives/monkeyecx-drag-drop.d.ts +12 -12
  205. package/lib/core/directives/monkeyecx-feature-by-program-directive.d.ts +16 -16
  206. package/lib/core/directives/monkeyecx-feature-directive.d.ts +17 -17
  207. package/lib/core/directives/monkeyecx-format-currency.d.ts +16 -16
  208. package/lib/core/directives/monkeyecx-format-upper.d.ts +18 -18
  209. package/lib/core/directives/monkeyecx-only-alpha-numeric-directive.d.ts +9 -9
  210. package/lib/core/directives/monkeyecx-only-number-directive.d.ts +9 -9
  211. package/lib/core/directives/monkeyecx-popover-options.directive.d.ts +19 -19
  212. package/lib/core/directives/monkeyecx-popover.directive.d.ts +43 -43
  213. package/lib/core/directives/monkeyecx-security-directive.d.ts +18 -18
  214. package/lib/core/directives/monkeyecx-tooltip-directive.d.ts +23 -23
  215. package/lib/core/index.d.ts +9 -9
  216. package/lib/core/interceptors/index.d.ts +5 -5
  217. package/lib/core/interceptors/monkeyecx-http-config-error.interceptor.d.ts +18 -18
  218. package/lib/core/interceptors/monkeyecx-http-config-header.interceptor.d.ts +16 -16
  219. package/lib/core/interceptors/monkeyecx-http-config-interceptor.module.d.ts +9 -9
  220. package/lib/core/interceptors/monkeyecx-http-config-loading-in-progress.interceptor.d.ts +12 -12
  221. package/lib/core/interceptors/monkeyecx-http-config-queue.interceptor.d.ts +14 -14
  222. package/lib/core/interfaces/index.d.ts +30 -30
  223. package/lib/core/interfaces/monkeyecx-auth-credentials.d.ts +15 -15
  224. package/lib/core/interfaces/monkeyecx-company-pendencies.d.ts +14 -14
  225. package/lib/core/interfaces/monkeyecx-company.d.ts +10 -10
  226. package/lib/core/interfaces/monkeyecx-config-bootstrap.d.ts +14 -14
  227. package/lib/core/interfaces/monkeyecx-config.d.ts +132 -132
  228. package/lib/core/interfaces/monkeyecx-country-security.d.ts +4 -4
  229. package/lib/core/interfaces/monkeyecx-error-response.d.ts +5 -5
  230. package/lib/core/interfaces/monkeyecx-filter.d.ts +42 -42
  231. package/lib/core/interfaces/monkeyecx-handled-error-response.d.ts +10 -10
  232. package/lib/core/interfaces/monkeyecx-header-credentials.d.ts +4 -4
  233. package/lib/core/interfaces/monkeyecx-intercom-options.d.ts +4 -4
  234. package/lib/core/interfaces/monkeyecx-me-credentials.d.ts +22 -22
  235. package/lib/core/interfaces/monkeyecx-navigation.d.ts +27 -27
  236. package/lib/core/interfaces/monkeyecx-program.d.ts +10 -10
  237. package/lib/core/interfaces/monkeyecx-releases.d.ts +9 -9
  238. package/lib/core/interfaces/monkeyecx-request-in-progress.d.ts +3 -3
  239. package/lib/core/interfaces/monkeyecx-request-paged.d.ts +23 -23
  240. package/lib/core/interfaces/monkeyecx-response-links.d.ts +11 -11
  241. package/lib/core/interfaces/monkeyecx-response-paged.d.ts +6 -6
  242. package/lib/core/interfaces/monkeyecx-saved-state.d.ts +5 -5
  243. package/lib/core/interfaces/monkeyecx-scroll-options.d.ts +5 -5
  244. package/lib/core/interfaces/monkeyecx-service-credentials.d.ts +12 -12
  245. package/lib/core/interfaces/monkeyecx-storage.d.ts +38 -38
  246. package/lib/core/interfaces/monkeyecx-support-options.d.ts +4 -4
  247. package/lib/core/interfaces/monkeyecx-token-credentials.d.ts +20 -20
  248. package/lib/core/interfaces/monkeyecx-translate-options.d.ts +4 -4
  249. package/lib/core/interfaces/request-download/index.d.ts +3 -3
  250. package/lib/core/interfaces/request-download/monkeyecx-request-download.d.ts +10 -10
  251. package/lib/core/interfaces/request-download/monkeyecx-request-downloaded.d.ts +7 -7
  252. package/lib/core/interfaces/request-download/monkeyecx-request-item-download.d.ts +7 -7
  253. package/lib/core/interfaces/request-queue/index.d.ts +3 -3
  254. package/lib/core/interfaces/request-queue/monkeyecx-request-item-queue.d.ts +7 -7
  255. package/lib/core/interfaces/request-queue/monkeyecx-request-progress-queue.d.ts +6 -6
  256. package/lib/core/interfaces/request-queue/monkeyecx-request-queue.d.ts +8 -8
  257. package/lib/core/interfaces/request-upload/index.d.ts +2 -2
  258. package/lib/core/interfaces/request-upload/monkeyecx-request-item-upload.d.ts +5 -5
  259. package/lib/core/interfaces/request-upload/monkeyecx-request-upload.d.ts +10 -10
  260. package/lib/core/interfaces/schedules/index.d.ts +1 -1
  261. package/lib/core/interfaces/schedules/monkeyecx-request-schedule.d.ts +13 -13
  262. package/lib/core/model/index.d.ts +1 -1
  263. package/lib/core/model/monkeyecx-model.d.ts +13 -13
  264. package/lib/core/pipes/index.d.ts +21 -21
  265. package/lib/core/pipes/monkeyecx-blob-secure.d.ts +13 -13
  266. package/lib/core/pipes/monkeyecx-display-first-name.d.ts +7 -7
  267. package/lib/core/pipes/monkeyecx-display-initials.d.ts +7 -7
  268. package/lib/core/pipes/monkeyecx-display-support-phone.d.ts +18 -18
  269. package/lib/core/pipes/monkeyecx-format-address.d.ts +14 -14
  270. package/lib/core/pipes/monkeyecx-format-beautify-json.d.ts +8 -8
  271. package/lib/core/pipes/monkeyecx-format-currency.d.ts +11 -11
  272. package/lib/core/pipes/monkeyecx-format-date-group.d.ts +11 -11
  273. package/lib/core/pipes/monkeyecx-format-date-timelapse.d.ts +7 -7
  274. package/lib/core/pipes/monkeyecx-format-date-unix-timelapse.d.ts +7 -7
  275. package/lib/core/pipes/monkeyecx-format-document.d.ts +7 -7
  276. package/lib/core/pipes/monkeyecx-format-number.d.ts +7 -7
  277. package/lib/core/pipes/monkeyecx-format-phone.d.ts +7 -7
  278. package/lib/core/pipes/monkeyecx-format-size.d.ts +7 -7
  279. package/lib/core/pipes/monkeyecx-format-tax.d.ts +7 -7
  280. package/lib/core/pipes/monkeyecx-format-type-document.d.ts +7 -7
  281. package/lib/core/pipes/monkeyecx-format-value.d.ts +7 -7
  282. package/lib/core/pipes/monkeyecx-format-zipcode.d.ts +7 -7
  283. package/lib/core/pipes/monkeyecx-pipes.module.d.ts +26 -26
  284. package/lib/core/pipes/monkeyecx-text-truncate.d.ts +7 -7
  285. package/lib/core/pipes/monkeyecx-truncate-qtd.d.ts +7 -7
  286. package/lib/core/services/alerts/index.d.ts +1 -1
  287. package/lib/core/services/alerts/monkeyecx-alerts.service.d.ts +21 -21
  288. package/lib/core/services/auth/index.d.ts +5 -5
  289. package/lib/core/services/auth/monkeyecx-auth-guard-company.service.d.ts +10 -10
  290. package/lib/core/services/auth/monkeyecx-auth-guard-login.service.d.ts +10 -10
  291. package/lib/core/services/auth/monkeyecx-auth-guard-role.service.d.ts +16 -16
  292. package/lib/core/services/auth/monkeyecx-auth-guard.service.d.ts +10 -10
  293. package/lib/core/services/auth/monkeyecx-authentication.service.d.ts +34 -34
  294. package/lib/core/services/commons/index.d.ts +1 -1
  295. package/lib/core/services/commons/monkeyecx-commons.service.d.ts +119 -119
  296. package/lib/core/services/config/monkeyecx-alerts-config.service.d.ts +11 -11
  297. package/lib/core/services/config/monkeyecx-config.module.d.ts +9 -9
  298. package/lib/core/services/config/monkeyecx-config.service.d.ts +36 -36
  299. package/lib/core/services/config/monkeyecx-currency-config.service.d.ts +15 -15
  300. package/lib/core/services/config/monkeyecx-error-config.service.d.ts +8 -8
  301. package/lib/core/services/config/monkeyecx-feature-toggle.service.d.ts +16 -16
  302. package/lib/core/services/config/monkeyecx-gtm-config.service.d.ts +9 -9
  303. package/lib/core/services/config/monkeyecx-i18n-config.service.d.ts +16 -16
  304. package/lib/core/services/config/monkeyecx-logs-config.service.d.ts +7 -7
  305. package/lib/core/services/config/monkeyecx-maintenance-config.service.d.ts +13 -13
  306. package/lib/core/services/config/monkeyecx-security-console-config.service.d.ts +11 -11
  307. package/lib/core/services/config/monkeyecx-service-worker-config.service.d.ts +16 -16
  308. package/lib/core/services/error/index.d.ts +4 -4
  309. package/lib/core/services/error/monkeyecx-error-handling.module.d.ts +9 -9
  310. package/lib/core/services/error/monkeyecx-error-handling.service.d.ts +9 -9
  311. package/lib/core/services/error/monkeyecx-http-error-handling.service.d.ts +26 -26
  312. package/lib/core/services/error/monkeyecx-others-errors-handling.service.d.ts +9 -9
  313. package/lib/core/services/index.d.ts +24 -24
  314. package/lib/core/services/logged/index.d.ts +1 -1
  315. package/lib/core/services/logged/monkeyecx-logged-handling.service.d.ts +14 -14
  316. package/lib/core/services/monkeyecx-handling.service.d.ts +22 -22
  317. package/lib/core/services/monkeyecx-service.service.d.ts +18 -18
  318. package/lib/core/services/pagination/index.d.ts +1 -1
  319. package/lib/core/services/pagination/monkeyecx-pagination.service.d.ts +9 -9
  320. package/lib/core/services/request-download/index.d.ts +2 -2
  321. package/lib/core/services/request-download/monkeyecx-request-download-handling.service.d.ts +18 -18
  322. package/lib/core/services/request-download/monkeyecx-request-downloaded-handling.service.d.ts +16 -16
  323. package/lib/core/services/request-paged/index.d.ts +1 -1
  324. package/lib/core/services/request-paged/monkeyecx-request-request-paged-handling.d.ts +11 -11
  325. package/lib/core/services/request-queue/index.d.ts +2 -2
  326. package/lib/core/services/request-queue/monkeyecx-request-queue-handling.service.d.ts +21 -21
  327. package/lib/core/services/request-queue/monkeyecx-request-queue-modal-handling.service.d.ts +23 -23
  328. package/lib/core/services/routes/index.d.ts +1 -1
  329. package/lib/core/services/routes/monkeyecx-dicovery-params.service.d.ts +13 -13
  330. package/lib/core/services/schedules/index.d.ts +1 -1
  331. package/lib/core/services/schedules/monkeyecx-request-schedule.service.d.ts +47 -47
  332. package/lib/core/services/storage/index.d.ts +2 -2
  333. package/lib/core/services/storage/monkeyecx-cookie-storage.service.d.ts +11 -11
  334. package/lib/core/services/storage/monkeyecx-token-storage.service.d.ts +30 -30
  335. package/lib/core/specification-search/index.d.ts +1 -1
  336. package/lib/core/specification-search/monkeyecx-specification-search.d.ts +20 -20
  337. package/lib/core/utils/decorators-utils.d.ts +5 -5
  338. package/lib/core/utils/index.d.ts +6 -6
  339. package/lib/core/utils/statics.d.ts +34 -34
  340. package/lib/core/utils/utils.d.ts +24 -24
  341. package/lib/core/utils/validate-utils.d.ts +66 -66
  342. package/lib/core/utils/validators.d.ts +32 -32
  343. package/lib/monkey-front-core.module.d.ts +19 -19
  344. package/lib/store/actions/index.d.ts +1 -1
  345. package/lib/store/actions/monkeyecx-storage.actions.d.ts +23 -23
  346. package/lib/store/index.d.ts +3 -3
  347. package/lib/store/reducers/index.d.ts +2 -2
  348. package/lib/store/reducers/monkeyecx-seeder.reducer.d.ts +2 -2
  349. package/lib/store/reducers/monkeyecx-storage.reducer.d.ts +13 -13
  350. package/lib/store/selectors/index.d.ts +1 -1
  351. package/lib/store/selectors/monkeyecx-storage.selector.d.ts +8 -8
  352. package/monkey-front-core-0.0.411.tgz +0 -0
  353. package/monkey-front-core.d.ts +5 -5
  354. package/package.json +3 -3
  355. package/public-api.d.ts +4 -4
  356. package/monkey-front-core-0.0.410.tgz +0 -0
@@ -1,251 +1,251 @@
1
- /* eslint-disable comma-dangle */
2
- /* eslint-disable max-len */
3
- /* eslint-disable no-useless-escape */
4
- /* eslint-disable no-plusplus */
5
- /* eslint-disable no-cond-assign */
6
- /* eslint-disable eqeqeq */
7
- /* eslint-disable no-redeclare */
8
- /* eslint-disable vars-on-top */
9
- /* eslint-disable no-var */
10
- import { CountryMasks } from './statics';
11
- /* eslint-disable block-scoped-var */
12
- export class MonkeyEcxUtils {
13
- static persistNullEmptyUndefined(tp) {
14
- return tp !== null && tp !== undefined && tp !== '';
15
- }
16
- static getDocumentType(doc, country) {
17
- if (!doc)
18
- return '';
19
- if (country === 'cl')
20
- return 'RUT';
21
- return doc.length <= 11 ? 'CPF' : 'CNPJ';
22
- }
23
- static getDocumentMask(type, country = '') {
24
- return {
25
- BR: {
26
- CPF: CountryMasks.CPF,
27
- CNPJ: CountryMasks.CNPJ,
28
- '': `${CountryMasks.CPF}||${CountryMasks.CNPJ}`
29
- },
30
- CL: {
31
- CPF: CountryMasks.RUT1,
32
- CNPJ: CountryMasks.RUT2,
33
- '': `${CountryMasks.RUT1}||${CountryMasks.RUT2}`
34
- }
35
- }[country.toUpperCase()]?.[type];
36
- }
37
- static getDocumentPlaceholder(type, country = '') {
38
- return {
39
- BR: {
40
- CPF: '000.000.000-XX',
41
- CNPJ: '00.000.000/0000-00'
42
- },
43
- CL: {
44
- CPF: '0000000-A',
45
- CNPJ: '0000000-A'
46
- }
47
- }[country.toUpperCase()]?.[type];
48
- }
49
- static formatDocumentWithMask(doc, withType, country) {
50
- if (!doc)
51
- return doc;
52
- let formated = '';
53
- if (country === 'cl') {
54
- formated = doc.replace(/^(\d{1,2})(\d{3})(\d{3})(\w{1})$/, '$1.$2.$3-$4');
55
- return `${formated}`;
56
- }
57
- if (doc.length === 14) {
58
- formated = doc
59
- .replace(/^(\d{2})(\d)/, '$1.$2')
60
- .replace(/^(\d{2})\.(\d{3})(\d)/, '$1.$2.$3')
61
- .replace(/\.(\d{3})(\d)/, '.$1/$2')
62
- .replace(/(\d{4})(\d)/, '$1-$2');
63
- }
64
- else {
65
- formated = doc
66
- .replace(/^(\d{3})(\d)/, '$1.$2')
67
- .replace(/^(\d{3})\.(\d{3})(\d)/, '$1.$2.$3')
68
- .replace(/\.(\d{3})(\d)/, '.$1-$2');
69
- }
70
- return `${withType ? `${this.getDocumentType(doc)}:` : ''} ${formated}`;
71
- }
72
- static cutFirstLastName(value, tp = 'first') {
73
- const split = value?.trim()?.split(' ');
74
- if (tp === 'first')
75
- return split[0];
76
- return split?.splice(1, split.length)?.join(' ');
77
- }
78
- static isCPFCNPJValid(document) {
79
- document = document.replace(/[^\d]/g, '');
80
- const handled = document.replace(new RegExp(document.charAt(0), 'g'), '');
81
- if (!handled)
82
- return false;
83
- if (document.length === 11) {
84
- let base = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0];
85
- for (var i = 0, n = 0; i < 9; n += document[i] * base[i++])
86
- ;
87
- if (document[9] != ((n %= 11) <= 1 ? 0 : 11 - n)) {
88
- return false;
89
- }
90
- base = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0];
91
- for (var i = 0, n = 0; i <= 9; n += document[i] * base[i++])
92
- ;
93
- if (document[10] != ((n %= 11) <= 1 ? 0 : 11 - n)) {
94
- return false;
95
- }
96
- return true;
97
- }
98
- if (document.length === 14 || /0{14}/.test(document)) {
99
- const base = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
100
- for (var i = 0, n = 0; i < 12; n += document[i] * base[++i])
101
- ;
102
- if (document[12] != ((n %= 11) < 2 ? 0 : 11 - n)) {
103
- return false;
104
- }
105
- for (var i = 0, n = 0; i <= 12; n += document[i] * base[i++])
106
- ;
107
- if (document[13] != ((n %= 11) < 2 ? 0 : 11 - n)) {
108
- return false;
109
- }
110
- return true;
111
- }
112
- return false;
113
- }
114
- static isValidRUT(document) {
115
- if (!document || document.trim().length < 3)
116
- return false;
117
- const documentHandled = document.replace(/[^0-9kK]/g, '');
118
- if (documentHandled.length < 3)
119
- return false;
120
- const calcDv = (rut) => {
121
- const value = `${rut}`;
122
- let sum = 0;
123
- let mult = 2;
124
- for (let i = 1; i <= value.length; i++) {
125
- const index = mult * Number(value.charAt(value.length - i));
126
- sum += index;
127
- if (mult < 7) {
128
- mult += 1;
129
- }
130
- else {
131
- mult = 2;
132
- }
133
- }
134
- const dvEsperado = 11 - (sum % 11);
135
- if (dvEsperado === 10)
136
- return 'K';
137
- if (dvEsperado === 11)
138
- return '0';
139
- return `${dvEsperado}`;
140
- };
141
- const num = documentHandled.slice(0, -1);
142
- const dgv = documentHandled.slice(-1).toUpperCase();
143
- const dvCalc = calcDv(num);
144
- return dvCalc === dgv;
145
- }
146
- static isValidUrl(txt) {
147
- const regex = /(https?:\/\/(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9])(:?\d*)\/?([a-z_\\/0-9\-#.]*)\??([a-z_\\/0-9\-#=&]*)/g;
148
- return regex.test(txt);
149
- }
150
- static isValidZipCode(zipCode, country) {
151
- const length = (country === 'cl') ? 7 : 8;
152
- return `${this.handleOnlyNumbers(zipCode)}`.length === length;
153
- }
154
- static getRandomString(len, charSet) {
155
- charSet = charSet || 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
156
- const randomString = new Array(len)
157
- .fill('1')
158
- .map(() => {
159
- return charSet?.charAt(Math.floor(Math.random() * charSet?.length));
160
- })
161
- .join('');
162
- return randomString;
163
- }
164
- static handleOnlyNumbers(value) {
165
- if (!value)
166
- return null;
167
- return value.replace(new RegExp(/[^0-9]/g), '');
168
- }
169
- static handleOnlyAlphaNumeric(value) {
170
- if (!value)
171
- return '';
172
- return value.replace(new RegExp(/[^0-9A-Za-z]/, 'g'), '');
173
- }
174
- static capitalize(value) {
175
- return `${value.charAt(0).toUpperCase()}${value.slice(1)}`;
176
- }
177
- static formatZipCode(zipCode) {
178
- if (!zipCode)
179
- return zipCode;
180
- const formated = zipCode
181
- .replace(/^(\d{5})(\d)/, '$1-$2')
182
- .replace(/\.(\d{3})(\d)/, '.$1-$2');
183
- return `${formated}`;
184
- }
185
- static formatFileSize(size) {
186
- const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
187
- let l = 0;
188
- while (size >= 1024 && ++l) {
189
- size /= 1024;
190
- }
191
- return `${size.toFixed(size < 10 && l > 0 ? 1 : 0)} ${units[l]}`;
192
- }
193
- static sufflue(data) {
194
- for (let i = data.length - 1; i > 0; i--) {
195
- const j = Math.floor(Math.random() * i);
196
- const temp = data[i];
197
- data[i] = data[j];
198
- data[j] = temp;
199
- }
200
- return data;
201
- }
202
- static handleBlobFile(theBlob, fileName, fileType) {
203
- function blobToFile(theBlob, fileName) {
204
- const b = theBlob;
205
- b.lastModifiedDate = new Date();
206
- b.name = fileName;
207
- return b;
208
- }
209
- let file;
210
- if (!navigator.msSaveBlob) {
211
- file = new File([theBlob], fileName, {
212
- type: fileType,
213
- });
214
- }
215
- else {
216
- file = new Blob([theBlob], {
217
- type: fileType,
218
- });
219
- file = blobToFile(file, fileName);
220
- }
221
- return file;
222
- }
223
- static truncate(text, maxLength = 25) {
224
- const midChar = '...';
225
- if (!text)
226
- return midChar;
227
- if (text && text.length <= maxLength)
228
- return text;
229
- const left = Math.ceil(maxLength / 2);
230
- const right = text.length - left + 1;
231
- return `${text.substr(0, left)} ${midChar} ${text.substring(right)}`;
232
- }
233
- static isLocalhost() {
234
- const { href } = window?.location;
235
- if (!href)
236
- return false;
237
- return href?.search('localhost') >= 0;
238
- }
239
- static isSameOrigin(frontend) {
240
- const initialPath = window.location.origin;
241
- return (initialPath || '') === frontend;
242
- }
243
- static replaceVariables(data, obj) {
244
- let handled = data;
245
- Object.entries(obj).forEach(([key, value]) => {
246
- handled = handled.replace(new RegExp(`{${key}}`, 'g'), `${value}`);
247
- });
248
- return handled;
249
- }
250
- }
251
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktZnJvbnQtY29yZS9zcmMvbGliL2NvcmUvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUNBQWlDO0FBQ2pDLDRCQUE0QjtBQUM1QixzQ0FBc0M7QUFDdEMsZ0NBQWdDO0FBQ2hDLG1DQUFtQztBQUNuQywyQkFBMkI7QUFDM0IsaUNBQWlDO0FBQ2pDLGdDQUFnQztBQUNoQywyQkFBMkI7QUFFM0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV6QyxxQ0FBcUM7QUFDckMsTUFBTSxPQUFPLGNBQWM7SUFDekIsTUFBTSxDQUFDLHlCQUF5QixDQUFDLEVBQU87UUFDdEMsT0FBTyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsS0FBSyxTQUFTLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFXLEVBQUUsT0FBZ0I7UUFDbEQsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNwQixJQUFJLE9BQU8sS0FBSyxJQUFJO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDbkMsT0FBTyxHQUFHLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDM0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBWSxFQUFFLE9BQU8sR0FBRyxFQUFFO1FBQy9DLE9BQU87WUFDTCxFQUFFLEVBQUU7Z0JBQ0YsR0FBRyxFQUFFLFlBQVksQ0FBQyxHQUFHO2dCQUNyQixJQUFJLEVBQUUsWUFBWSxDQUFDLElBQUk7Z0JBQ3ZCLEVBQUUsRUFBRSxHQUFHLFlBQVksQ0FBQyxHQUFHLEtBQUssWUFBWSxDQUFDLElBQUksRUFBRTthQUNoRDtZQUNELEVBQUUs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O2FBQ2Q7WUFDRCxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLEVBQUUsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3BELE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUFDLENBQUM7WUFDN0QsSUFBSSxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUNoRCxPQUFPLEtBQUssQ0FBQzthQUNkO1lBRUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUFDLENBQUM7WUFDOUQsSUFBSSxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUNoRCxPQUFPLEtBQUssQ0FBQzthQUNkO1lBRUQsT0FBTyxJQUFJ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QUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFnQjtRQUNsQyxNQUFNLFdBQVcsR0FBVyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUNuRCxPQUFPLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxLQUFLLFFBQVEsQ0FBQztJQUMxQyxDQUFDO0lBRUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQVksRUFBRSxHQUFRO1FBQzVDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztRQUNuQixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDM0MsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDckUsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjb21tYS1kYW5nbGUgKi9cclxuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBuby11c2VsZXNzLWVzY2FwZSAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wbHVzcGx1cyAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25kLWFzc2lnbiAqL1xyXG4vKiBlc2xpbnQtZGlzYWJsZSBlcWVxZXEgKi9cclxuLyogZXNsaW50LWRpc2FibGUgbm8tcmVkZWNsYXJlICovXHJcbi8qIGVzbGludC1kaXNhYmxlIHZhcnMtb24tdG9wICovXHJcbi8qIGVzbGludC1kaXNhYmxlIG5vLXZhciAqL1xyXG5cclxuaW1wb3J0IHsgQ291bnRyeU1hc2tzIH0gZnJvbSAnLi9zdGF0aWNzJztcclxuXHJcbi8qIGVzbGludC1kaXNhYmxlIGJsb2NrLXNjb3BlZC12YXIgKi9cclxuZXhwb3J0IGNsYXNzIE1vbmtleUVjeFV0aWxzIHtcclxuICBzdGF0aWMgcGVyc2lzdE51bGxFbXB0eVVuZGVmaW5lZCh0cDogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdHAgIT09IG51bGwgJiYgdHAgIT09IHVuZGVmaW5lZCAmJiB0cCAhPT0gJyc7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0RG9jdW1lbnRUeXBlKGRvYzogc3RyaW5nLCBjb3VudHJ5Pzogc3RyaW5nKSB7XHJcbiAgICBpZiAoIWRvYykgcmV0dXJuICcnO1xyXG4gICAgaWYgKGNvdW50cnkgPT09ICdjbCcpIHJldHVybiAnUlVUJztcclxuICAgIHJldHVybiBkb2MubGVuZ3RoIDw9IDExID8gJ0NQRicgOiAnQ05QSic7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZ2V0RG9jdW1lbnRNYXNrKHR5cGU6IHN0cmluZywgY291bnRyeSA9ICcnKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBCUjoge1xyXG4gICAgICAgIENQRjogQ291bnRyeU1hc2tzLkNQRixcclxuICAgICAgICBDTlBKOiBDb3VudHJ5TWFza3MuQ05QSixcclxuICAgICAgICAnJzogYCR7Q291bnRyeU1hc2tzLkNQRn18fCR7Q291bnRyeU1hc2tzLkNOUEp9YFxyXG4gICAgICB9LFxyXG4gICAgICBDTDoge1xyXG4gICAgICAgIENQRjogQ291bnRyeU1hc2tzLlJVVDEsXHJcbiAgICAgICAgQ05QSjogQ291bnRyeU1hc2tzLlJVVDIsXHJcbiAgICAgICAgJyc6IGAke0NvdW50cnlNYXNrcy5SVVQxfXx8JHtDb3VudHJ5TWFza3MuUlVUMn1gXHJcbiAgICAgIH1cclxuICAgIH1bY291bnRyeS50b1VwcGVyQ2FzZSgpXT8uW3R5cGVdO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldERvY3VtZW50UGxhY2Vob2xkZXIodHlwZTogc3RyaW5nLCBjb3VudHJ5ID0gJycpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIEJSOiB7XHJcbiAgICAgICAgQ1BGOiAnMDAwLjAwMC4wMDAtWFgnLFxyXG4gICAgICAgIENOUEo6ICcwMC4wMDAuMDAwLzAwMDAtMDAnXHJcbiAgICAgIH0sXHJcbiAgICAgIENMOiB7XHJcbiAgICAgICAgQ1BGOiAnMDAwMDAwMC1BJyxcclxuICAgICAgICBDTlBKOiAnMDAwMDAwMC1BJ1xyXG4gICAgICB9XHJcbiAgICB9W2NvdW50cnkudG9VcHBlckNhc2UoKV0/Llt0eXBlXTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBmb3JtYXREb2N1bWVudFdpdGhNYXNrKGRvYzogc3RyaW5nLCB3aXRoVHlwZT86IGJvb2xlYW4sIGNvdW50cnk/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgaWYgKCFkb2MpIHJldHVybiBkb2M7XHJcbiAgICBsZXQgZm9ybWF0ZWQ6IHN0cmluZyA9ICcnO1xyXG4gICAgaWYgKGNvdW50cnkgPT09ICdjbCcpIHtcclxuICAgICAgZm9ybWF0ZWQgPSBkb2MucmVwbGFjZSgvXihcXGR7MSwyfSkoXFxkezN9KShcXGR7M30pKFxcd3sxfSkkLywgJyQxLiQyLiQzLSQ0Jyk7XHJcbiAgICAgIHJldHVybiBgJHtmb3JtYXRlZH1gO1xyXG4gICAgfVxyXG4gICAgaWYgKGRvYy5sZW5ndGggPT09IDE0KSB7XHJcbiAgICAgIGZvcm1hdGVkID0gZG9jXHJcbiAgICAgICAgLnJlcGxhY2UoL14oXFxkezJ9KShcXGQpLywgJyQxLiQyJylcclxuICAgICAgICAucmVwbGFjZSgvXihcXGR7Mn0pXFwuKFxcZHszfSkoXFxkKS8sICckMS4kMi4kMycpXHJcbiAgICAgICAgLnJlcGxhY2UoL1xcLihcXGR7M30pKFxcZCkvLCAnLiQxLyQyJylcclxuICAgICAgICAucmVwbGFjZSgvKFxcZHs0fSkoXFxkKS8sICckMS0kMicpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZm9ybWF0ZWQgPSBkb2NcclxuICAgICAgICAucmVwbGFjZSgvXihcXGR7M30pKFxcZCkvLCAnJDEuJDInKVxyXG4gICAgICAgIC5yZXBsYWNlKC9eKFxcZHszfSlcXC4oXFxkezN9KShcXGQpLywgJyQxLiQyLiQzJylcclxuICAgICAgICAucmVwbGFjZSgvXFwuKFxcZHszfSkoXFxkKS8sICcuJDEtJDInKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYCR7d2l0aFR5cGUgPyBgJHt0aGlzLmdldERvY3VtZW50VHlwZShkb2MpfTpgIDogJyd9ICR7Zm9ybWF0ZWR9YDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBjdXRGaXJzdExhc3ROYW1lKHZhbHVlOiBzdHJpbmcsIHRwOiBzdHJpbmcgPSAnZmlyc3QnKSB7XHJcbiAgICBjb25zdCBzcGxpdCA9IHZhbHVlPy50cmltKCk/LnNwbGl0KCcgJyk7XHJcblxyXG4gICAgaWYgKHRwID09PSAnZmlyc3QnKSByZXR1cm4gc3BsaXRbMF07XHJcbiAgICByZXR1cm4gc3BsaXQ/LnNwbGljZSgxLCBzcGxpdC5sZW5ndGgpPy5qb2luKCcgJyk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNDUEZDTlBKVmFsaWQoZG9jdW1lbnQ6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgZG9jdW1lbnQgPSBkb2N1bWVudC5yZXBsYWNlKC9bXlxcZF0vZywgJycpO1xyXG5cclxuICAgIGNvbnN0IGhhbmRsZWQgPSBkb2N1bWVudC5yZXBsYWNlKG5ldyBSZWdFeHAoZG9jdW1lbnQuY2hhckF0KDApLCAnZycpLCAnJyk7XHJcbiAgICBpZiAoIWhhbmRsZWQpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBpZiAoZG9jdW1lbnQubGVuZ3RoID09PSAxMSkge1xyXG4gICAgICBsZXQgYmFzZSA9IFsxMCwgOSwgOCwgNywgNiwgNSwgNCwgMywgMiwgMSwgMF07XHJcbiAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gMDsgaSA8IDk7IG4gKz0gZG9jdW1lbnRbaV0gKiBiYXNlW2krK10pO1xyXG4gICAgICBpZiAoZG9jdW1lbnRbOV0gIT0gKChuICU9IDExKSA8PSAxID8gMCA6IDExIC0gbikpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgYmFzZSA9IFsxMSwgMTAsIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDBdO1xyXG4gICAgICBmb3IgKHZhciBpID0gMCwgbiA9IDA7IGkgPD0gOTsgbiArPSBkb2N1bWVudFtpXSAqIGJhc2VbaSsrXSk7XHJcbiAgICAgIGlmIChkb2N1bWVudFsxMF0gIT0gKChuICU9IDExKSA8PSAxID8gMCA6IDExIC0gbikpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoZG9jdW1lbnQubGVuZ3RoID09PSAxNCB8fCAvMHsxNH0vLnRlc3QoZG9jdW1lbnQpKSB7XHJcbiAgICAgIGNvbnN0IGJhc2UgPSBbNiwgNSwgNCwgMywgMiwgOSwgOCwgNywgNiwgNSwgNCwgMywgMl07XHJcbiAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gMDsgaSA8IDEyOyBuICs9IGRvY3VtZW50W2ldICogYmFzZVsrK2ldKTtcclxuICAgICAgaWYgKGRvY3VtZW50WzEyXSAhPSAoKG4gJT0gMTEpIDwgMiA/IDAgOiAxMSAtIG4pKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmb3IgKHZhciBpID0gMCwgbiA9IDA7IGkgPD0gMTI7IG4gKz0gZG9jdW1lbnRbaV0gKiBiYXNlW2krK10pO1xyXG4gICAgICBpZiAoZG9jdW1lbnRbMTNdICE9ICgobiAlPSAxMSkgPCAyID8gMCA6IDExIC0gbikpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBpc1ZhbGlkUlVUKGRvY3VtZW50OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGlmICghZG9jdW1lbnQgfHwgZG9jdW1lbnQudHJpbSgpLmxlbmd0aCA8IDMpIHJldHVybiBmYWxzZTtcclxuICAgIGNvbnN0IGRvY3VtZW50SGFuZGxlZCA9IGRvY3VtZW50LnJlcGxhY2UoL1teMC05a0tdL2csICcnKTtcclxuXHJcbiAgICBpZiAoZG9jdW1lbnRIYW5kbGVkLmxlbmd0aCA8IDMpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBjb25zdCBjYWxjRHYgPSAocnV0OiBzdHJpbmcpID0+IHtcclxuICAgICAgY29uc3QgdmFsdWU6IHN0cmluZyA9IGAke3J1dH1gO1xyXG4gICAgICBsZXQgc3VtID0gMDtcclxuICAgICAgbGV0IG11bHQgPSAyO1xyXG5cclxuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdmFsdWUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBjb25zdCBpbmRleCA9IG11bHQgKiBOdW1iZXIodmFsdWUuY2hhckF0KHZhbHVlLmxlbmd0aCAtIGkpKTtcclxuXHJcbiAgICAgICAgc3VtICs9IGluZGV4O1xyXG5cclxuICAgICAgICBpZiAobXVsdCA8IDcpIHtcclxuICAgICAgICAgIG11bHQgKz0gMTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbXVsdCA9IDI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCBkdkVzcGVyYWRvID0gMTEgLSAoc3VtICUgMTEpO1xyXG4gICAgICBpZiAoZHZFc3BlcmFkbyA9PT0gMTApIHJldHVybiAnSyc7XHJcbiAgICAgIGlmIChkdkVzcGVyYWRvID09PSAxMSkgcmV0dXJuICcwJztcclxuICAgICAgcmV0dXJuIGAke2R2RXNwZXJhZG99YDtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgbnVtID0gZG9jdW1lbnRIYW5kbGVkLnNsaWNlKDAsIC0xKTtcclxuICAgIGNvbnN0IGRndiA9IGRvY3VtZW50SGFuZGxlZC5zbGljZSgtMSkudG9VcHBlckNhc2UoKTtcclxuXHJcbiAgICBjb25zdCBkdkNhbGMgPSBjYWxjRHYobnVtKTtcclxuICAgIHJldHVybiBkdkNhbGMgPT09IGRndjtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBpc1ZhbGlkVXJsKHR4dDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCByZWdleCA9IC8oaHR0cHM/OlxcL1xcLyg/OlthLXowLTldKD86W2EtejAtOS1dezAsNjF9W2EtejAtOV0pP1xcLikrW2EtejAtOV1bYS16MC05LV17MCw2MX1bYS16MC05XSkoOj9cXGQqKVxcLz8oW2Etel9cXFxcLzAtOVxcLSMuXSopXFw/PyhbYS16X1xcXFwvMC05XFwtIz0mXSopL2c7XHJcbiAgICByZXR1cm4gcmVnZXgudGVzdCh0eHQpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGlzVmFsaWRaaXBDb2RlKHppcENvZGU6IHN0cmluZywgY291bnRyeT86IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgY29uc3QgbGVuZ3RoID0gKGNvdW50cnkgPT09ICdjbCcpID8gNyA6IDg7XHJcbiAgICByZXR1cm4gYCR7dGhpcy5oYW5kbGVPbmx5TnVtYmVycyh6aXBDb2RlKX1gLmxlbmd0aCA9PT0gbGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGdldFJhbmRvbVN0cmluZyhsZW46IG51bWJlciwgY2hhclNldD86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjaGFyU2V0ID0gY2hhclNldCB8fCAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODknO1xyXG5cclxuICAgIGNvbnN0IHJhbmRvbVN0cmluZzogc3RyaW5nID0gbmV3IEFycmF5KGxlbilcclxuICAgICAgLmZpbGwoJzEnKVxyXG4gICAgICAubWFwKCgpID0+IHtcclxuICAgICAgICByZXR1cm4gY2hhclNldD8uY2hhckF0KE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGNoYXJTZXQ/Lmxlbmd0aCkpO1xyXG4gICAgICB9KVxyXG4gICAgICAuam9pbignJyk7XHJcbiAgICByZXR1cm4gcmFuZG9tU3RyaW5nO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGhhbmRsZU9ubHlOdW1iZXJzKHZhbHVlOiBhbnkpIHtcclxuICAgIGlmICghdmFsdWUpIHJldHVybiBudWxsO1xyXG4gICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UobmV3IFJlZ0V4cCgvW14wLTldL2cpLCAnJyk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaGFuZGxlT25seUFscGhhTnVtZXJpYyh2YWx1ZTogYW55KSB7XHJcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gJyc7XHJcbiAgICByZXR1cm4gdmFsdWUucmVwbGFjZShuZXcgUmVnRXhwKC9bXjAtOUEtWmEtel0vLCAnZycpLCAnJyk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgY2FwaXRhbGl6ZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gYCR7dmFsdWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHt2YWx1ZS5zbGljZSgxKX1gO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGZvcm1hdFppcENvZGUoemlwQ29kZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghemlwQ29kZSkgcmV0dXJuIHppcENvZGU7XHJcbiAgICBjb25zdCBmb3JtYXRlZDogc3RyaW5nID0gemlwQ29kZVxyXG4gICAgICAucmVwbGFjZSgvXihcXGR7NX0pKFxcZCkvLCAnJDEtJDInKVxyXG4gICAgICAucmVwbGFjZSgvXFwuKFxcZHszfSkoXFxkKS8sICcuJDEtJDInKTtcclxuXHJcbiAgICByZXR1cm4gYCR7Zm9ybWF0ZWR9YDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBmb3JtYXRGaWxlU2l6ZShzaXplOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgdW5pdHMgPSBbJ0InLCAnS0InLCAnTUInLCAnR0InLCAnVEInLCAnUEInLCAnRUInLCAnWkInLCAnWUInXTtcclxuICAgIGxldCBsID0gMDtcclxuICAgIHdoaWxlIChzaXplID49IDEwMjQgJiYgKytsKSB7XHJcbiAgICAgIHNpemUgLz0gMTAyNDtcclxuICAgIH1cclxuICAgIHJldHVybiBgJHtzaXplLnRvRml4ZWQoc2l6ZSA8IDEwICYmIGwgPiAwID8gMSA6IDApfSAke3VuaXRzW2xdfWA7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgc3VmZmx1ZShkYXRhOiBhbnlbXSk6IGFueVtdIHtcclxuICAgIGZvciAobGV0IGkgPSBkYXRhLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIHtcclxuICAgICAgY29uc3QgaiA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGkpO1xyXG4gICAgICBjb25zdCB0ZW1wID0gZGF0YVtpXTtcclxuICAgICAgZGF0YVtpXSA9IGRhdGFbal07XHJcbiAgICAgIGRhdGFbal0gPSB0ZW1wO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaGFuZGxlQmxvYkZpbGUodGhlQmxvYjogYW55LCBmaWxlTmFtZTogc3RyaW5nLCBmaWxlVHlwZTogc3RyaW5nKSB7XHJcbiAgICBmdW5jdGlvbiBibG9iVG9GaWxlKHRoZUJsb2I6IGFueSwgZmlsZU5hbWU6IHN0cmluZykge1xyXG4gICAgICBjb25zdCBiID0gdGhlQmxvYjtcclxuICAgICAgYi5sYXN0TW9kaWZpZWREYXRlID0gbmV3IERhdGUoKTtcclxuICAgICAgYi5uYW1lID0gZmlsZU5hbWU7XHJcbiAgICAgIHJldHVybiBiO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBmaWxlOiBhbnk7XHJcbiAgICBpZiAoIShuYXZpZ2F0b3IgYXMgYW55KS5tc1NhdmVCbG9iKSB7XHJcbiAgICAgIGZpbGUgPSBuZXcgRmlsZShbdGhlQmxvYl0sIGZpbGVOYW1lLCB7XHJcbiAgICAgICAgdHlwZTogZmlsZVR5cGUsXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZmlsZSA9IG5ldyBCbG9iKFt0aGVCbG9iXSwge1xyXG4gICAgICAgIHR5cGU6IGZpbGVUeXBlLFxyXG4gICAgICB9KTtcclxuICAgICAgZmlsZSA9IGJsb2JUb0ZpbGUoZmlsZSwgZmlsZU5hbWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZpbGU7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgdHJ1bmNhdGUodGV4dDogc3RyaW5nLCBtYXhMZW5ndGg6IG51bWJlciA9IDI1KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IG1pZENoYXIgPSAnLi4uJztcclxuICAgIGlmICghdGV4dCkgcmV0dXJuIG1pZENoYXI7XHJcbiAgICBpZiAodGV4dCAmJiB0ZXh0Lmxlbmd0aCA8PSBtYXhMZW5ndGgpIHJldHVybiB0ZXh0O1xyXG5cclxuICAgIGNvbnN0IGxlZnQgPSBNYXRoLmNlaWwobWF4TGVuZ3RoIC8gMik7XHJcbiAgICBjb25zdCByaWdodCA9IHRleHQubGVuZ3RoIC0gbGVmdCArIDE7XHJcblxyXG4gICAgcmV0dXJuIGAke3RleHQuc3Vic3RyKDAsIGxlZnQpfSAke21pZENoYXJ9ICR7dGV4dC5zdWJzdHJpbmcocmlnaHQpfWA7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNMb2NhbGhvc3QoKSB7XHJcbiAgICBjb25zdCB7IGhyZWYgfSA9IHdpbmRvdz8ubG9jYXRpb247XHJcbiAgICBpZiAoIWhyZWYpIHJldHVybiBmYWxzZTtcclxuICAgIHJldHVybiBocmVmPy5zZWFyY2goJ2xvY2FsaG9zdCcpID49IDA7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgaXNTYW1lT3JpZ2luKGZyb250ZW5kOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGNvbnN0IGluaXRpYWxQYXRoOiBzdHJpbmcgPSB3aW5kb3cubG9jYXRpb24ub3JpZ2luO1xyXG4gICAgcmV0dXJuIChpbml0aWFsUGF0aCB8fCAnJykgPT09IGZyb250ZW5kO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIHJlcGxhY2VWYXJpYWJsZXMoZGF0YTogc3RyaW5nLCBvYmo6IGFueSkge1xyXG4gICAgbGV0IGhhbmRsZWQgPSBkYXRhO1xyXG4gICAgT2JqZWN0LmVudHJpZXMob2JqKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcclxuICAgICAgaGFuZGxlZCA9IGhhbmRsZWQucmVwbGFjZShuZXcgUmVnRXhwKGB7JHtrZXl9fWAsICdnJyksIGAke3ZhbHVlfWApO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gaGFuZGxlZDtcclxuICB9XHJcbn1cclxuIl19
1
+ /* eslint-disable comma-dangle */
2
+ /* eslint-disable max-len */
3
+ /* eslint-disable no-useless-escape */
4
+ /* eslint-disable no-plusplus */
5
+ /* eslint-disable no-cond-assign */
6
+ /* eslint-disable eqeqeq */
7
+ /* eslint-disable no-redeclare */
8
+ /* eslint-disable vars-on-top */
9
+ /* eslint-disable no-var */
10
+ import { CountryMasks } from './statics';
11
+ /* eslint-disable block-scoped-var */
12
+ export class MonkeyEcxUtils {
13
+ static persistNullEmptyUndefined(tp) {
14
+ return tp !== null && tp !== undefined && tp !== '';
15
+ }
16
+ static getDocumentType(doc, country) {
17
+ if (!doc)
18
+ return '';
19
+ if (country === 'cl')
20
+ return 'RUT';
21
+ return doc.length <= 11 ? 'CPF' : 'CNPJ';
22
+ }
23
+ static getDocumentMask(type, country = '') {
24
+ return {
25
+ BR: {
26
+ CPF: CountryMasks.CPF,
27
+ CNPJ: CountryMasks.CNPJ,
28
+ '': `${CountryMasks.CPF}||${CountryMasks.CNPJ}`
29
+ },
30
+ CL: {
31
+ CPF: CountryMasks.RUT1,
32
+ CNPJ: CountryMasks.RUT2,
33
+ '': `${CountryMasks.RUT1}||${CountryMasks.RUT2}`
34
+ }
35
+ }[country.toUpperCase()]?.[type];
36
+ }
37
+ static getDocumentPlaceholder(type, country = '') {
38
+ return {
39
+ BR: {
40
+ CPF: '000.000.000-XX',
41
+ CNPJ: '00.000.000/0000-00'
42
+ },
43
+ CL: {
44
+ CPF: '0000000-A',
45
+ CNPJ: '0000000-A'
46
+ }
47
+ }[country.toUpperCase()]?.[type];
48
+ }
49
+ static formatDocumentWithMask(doc, withType, country) {
50
+ if (!doc)
51
+ return doc;
52
+ let formated = '';
53
+ if (country === 'cl') {
54
+ formated = doc.replace(/^(\d{1,2})(\d{3})(\d{3})(\w{1})$/, '$1.$2.$3-$4');
55
+ return `${formated}`;
56
+ }
57
+ if (doc.length === 14) {
58
+ formated = doc
59
+ .replace(/^(\d{2})(\d)/, '$1.$2')
60
+ .replace(/^(\d{2})\.(\d{3})(\d)/, '$1.$2.$3')
61
+ .replace(/\.(\d{3})(\d)/, '.$1/$2')
62
+ .replace(/(\d{4})(\d)/, '$1-$2');
63
+ }
64
+ else {
65
+ formated = doc
66
+ .replace(/^(\d{3})(\d)/, '$1.$2')
67
+ .replace(/^(\d{3})\.(\d{3})(\d)/, '$1.$2.$3')
68
+ .replace(/\.(\d{3})(\d)/, '.$1-$2');
69
+ }
70
+ return `${withType ? `${this.getDocumentType(doc)}:` : ''} ${formated}`;
71
+ }
72
+ static cutFirstLastName(value, tp = 'first') {
73
+ const split = value?.trim()?.split(' ');
74
+ if (tp === 'first')
75
+ return split[0];
76
+ return split?.splice(1, split.length)?.join(' ');
77
+ }
78
+ static isCPFCNPJValid(document) {
79
+ document = document.replace(/[^\d]/g, '');
80
+ const handled = document.replace(new RegExp(document.charAt(0), 'g'), '');
81
+ if (!handled)
82
+ return false;
83
+ if (document.length === 11) {
84
+ let base = [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0];
85
+ for (var i = 0, n = 0; i < 9; n += document[i] * base[i++])
86
+ ;
87
+ if (document[9] != ((n %= 11) <= 1 ? 0 : 11 - n)) {
88
+ return false;
89
+ }
90
+ base = [11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0];
91
+ for (var i = 0, n = 0; i <= 9; n += document[i] * base[i++])
92
+ ;
93
+ if (document[10] != ((n %= 11) <= 1 ? 0 : 11 - n)) {
94
+ return false;
95
+ }
96
+ return true;
97
+ }
98
+ if (document.length === 14 || /0{14}/.test(document)) {
99
+ const base = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];
100
+ for (var i = 0, n = 0; i < 12; n += document[i] * base[++i])
101
+ ;
102
+ if (document[12] != ((n %= 11) < 2 ? 0 : 11 - n)) {
103
+ return false;
104
+ }
105
+ for (var i = 0, n = 0; i <= 12; n += document[i] * base[i++])
106
+ ;
107
+ if (document[13] != ((n %= 11) < 2 ? 0 : 11 - n)) {
108
+ return false;
109
+ }
110
+ return true;
111
+ }
112
+ return false;
113
+ }
114
+ static isValidRUT(document) {
115
+ if (!document || document.trim().length < 3)
116
+ return false;
117
+ const documentHandled = document.replace(/[^0-9kK]/g, '');
118
+ if (documentHandled.length < 3)
119
+ return false;
120
+ const calcDv = (rut) => {
121
+ const value = `${rut}`;
122
+ let sum = 0;
123
+ let mult = 2;
124
+ for (let i = 1; i <= value.length; i++) {
125
+ const index = mult * Number(value.charAt(value.length - i));
126
+ sum += index;
127
+ if (mult < 7) {
128
+ mult += 1;
129
+ }
130
+ else {
131
+ mult = 2;
132
+ }
133
+ }
134
+ const dvEsperado = 11 - (sum % 11);
135
+ if (dvEsperado === 10)
136
+ return 'K';
137
+ if (dvEsperado === 11)
138
+ return '0';
139
+ return `${dvEsperado}`;
140
+ };
141
+ const num = documentHandled.slice(0, -1);
142
+ const dgv = documentHandled.slice(-1).toUpperCase();
143
+ const dvCalc = calcDv(num);
144
+ return dvCalc === dgv;
145
+ }
146
+ static isValidUrl(txt) {
147
+ const regex = /(https?:\/\/(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9])(:?\d*)\/?([a-z_\\/0-9\-#.]*)\??([a-z_\\/0-9\-#=&]*)/g;
148
+ return regex.test(txt);
149
+ }
150
+ static isValidZipCode(zipCode, country) {
151
+ const length = (country === 'cl') ? 7 : 8;
152
+ return `${this.handleOnlyNumbers(zipCode)}`.length === length;
153
+ }
154
+ static getRandomString(len, charSet) {
155
+ charSet = charSet || 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
156
+ const randomString = new Array(len)
157
+ .fill('1')
158
+ .map(() => {
159
+ return charSet?.charAt(Math.floor(Math.random() * charSet?.length));
160
+ })
161
+ .join('');
162
+ return randomString;
163
+ }
164
+ static handleOnlyNumbers(value) {
165
+ if (!value)
166
+ return null;
167
+ return value.replace(new RegExp(/[^0-9]/g), '');
168
+ }
169
+ static handleOnlyAlphaNumeric(value) {
170
+ if (!value)
171
+ return '';
172
+ return value.replace(new RegExp(/[^0-9A-Za-z]/, 'g'), '');
173
+ }
174
+ static capitalize(value) {
175
+ return `${value.charAt(0).toUpperCase()}${value.slice(1)}`;
176
+ }
177
+ static formatZipCode(zipCode) {
178
+ if (!zipCode)
179
+ return zipCode;
180
+ const formated = zipCode
181
+ .replace(/^(\d{5})(\d)/, '$1-$2')
182
+ .replace(/\.(\d{3})(\d)/, '.$1-$2');
183
+ return `${formated}`;
184
+ }
185
+ static formatFileSize(size) {
186
+ const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
187
+ let l = 0;
188
+ while (size >= 1024 && ++l) {
189
+ size /= 1024;
190
+ }
191
+ return `${size.toFixed(size < 10 && l > 0 ? 1 : 0)} ${units[l]}`;
192
+ }
193
+ static sufflue(data) {
194
+ for (let i = data.length - 1; i > 0; i--) {
195
+ const j = Math.floor(Math.random() * i);
196
+ const temp = data[i];
197
+ data[i] = data[j];
198
+ data[j] = temp;
199
+ }
200
+ return data;
201
+ }
202
+ static handleBlobFile(theBlob, fileName, fileType) {
203
+ function blobToFile(theBlob, fileName) {
204
+ const b = theBlob;
205
+ b.lastModifiedDate = new Date();
206
+ b.name = fileName;
207
+ return b;
208
+ }
209
+ let file;
210
+ if (!navigator.msSaveBlob) {
211
+ file = new File([theBlob], fileName, {
212
+ type: fileType,
213
+ });
214
+ }
215
+ else {
216
+ file = new Blob([theBlob], {
217
+ type: fileType,
218
+ });
219
+ file = blobToFile(file, fileName);
220
+ }
221
+ return file;
222
+ }
223
+ static truncate(text, maxLength = 25) {
224
+ const midChar = '...';
225
+ if (!text)
226
+ return midChar;
227
+ if (text && text.length <= maxLength)
228
+ return text;
229
+ const left = Math.ceil(maxLength / 2);
230
+ const right = text.length - left + 1;
231
+ return `${text.substr(0, left)} ${midChar} ${text.substring(right)}`;
232
+ }
233
+ static isLocalhost() {
234
+ const { href } = window?.location;
235
+ if (!href)
236
+ return false;
237
+ return href?.search('localhost') >= 0;
238
+ }
239
+ static isSameOrigin(frontend) {
240
+ const initialPath = window.location.origin;
241
+ return (initialPath || '') === frontend;
242
+ }
243
+ static replaceVariables(data, obj) {
244
+ let handled = data;
245
+ Object.entries(obj).forEach(([key, value]) => {
246
+ handled = handled.replace(new RegExp(`{${key}}`, 'g'), `${value}`);
247
+ });
248
+ return handled;
249
+ }
250
+ }
251
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tb25rZXktZnJvbnQtY29yZS9zcmMvbGliL2NvcmUvdXRpbHMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUNBQWlDO0FBQ2pDLDRCQUE0QjtBQUM1QixzQ0FBc0M7QUFDdEMsZ0NBQWdDO0FBQ2hDLG1DQUFtQztBQUNuQywyQkFBMkI7QUFDM0IsaUNBQWlDO0FBQ2pDLGdDQUFnQztBQUNoQywyQkFBMkI7QUFFM0IsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV6QyxxQ0FBcUM7QUFDckMsTUFBTSxPQUFPLGNBQWM7SUFDekIsTUFBTSxDQUFDLHlCQUF5QixDQUFDLEVBQU87UUFDdEMsT0FBTyxFQUFFLEtBQUssSUFBSSxJQUFJLEVBQUUsS0FBSyxTQUFTLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFXLEVBQUUsT0FBZ0I7UUFDbEQsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNwQixJQUFJLE9BQU8sS0FBSyxJQUFJO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDbkMsT0FBTyxHQUFHLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDM0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsSUFBWSxFQUFFLE9BQU8sR0FBRyxFQUFFO1FBQy9DLE9BQU87WUFDTCxFQUFFLEVBQUU7Z0JBQ0YsR0FBRyxFQUFFLFlBQVksQ0FBQyxHQUFHO2dCQUNyQixJQUFJLEVBQUUsWUFBWSxDQUFDLElBQUk7Z0JBQ3ZCLEVBQUUsRUFBRSxHQUFHLFlBQVksQ0FBQyxHQUFHLEtBQUssWUFBWSxDQUFDLElBQUksRUFBRTthQUNoRDtZQUNELEVBQUUs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O2FBQ2Q7WUFDRCxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsSUFBSSxRQUFRLENBQUMsTUFBTSxLQUFLLEVBQUUsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3BELE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUFDLENBQUM7WUFDN0QsSUFBSSxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUNoRCxPQUFPLEtBQUssQ0FBQzthQUNkO1lBRUQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUFDLENBQUM7WUFDOUQsSUFBSSxRQUFRLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUNoRCxPQUFPLEtBQUssQ0FBQzthQUNkO1lBRUQsT0FBTyxJQUFJ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QUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFnQjtRQUNsQyxNQUFNLFdBQVcsR0FBVyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUNuRCxPQUFPLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxLQUFLLFFBQVEsQ0FBQztJQUMxQyxDQUFDO0lBRUQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQVksRUFBRSxHQUFRO1FBQzVDLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztRQUNuQixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUU7WUFDM0MsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDckUsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjb21tYS1kYW5nbGUgKi9cbi8qIGVzbGludC1kaXNhYmxlIG1heC1sZW4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVzZWxlc3MtZXNjYXBlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wbHVzcGx1cyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29uZC1hc3NpZ24gKi9cbi8qIGVzbGludC1kaXNhYmxlIGVxZXFlcSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tcmVkZWNsYXJlICovXG4vKiBlc2xpbnQtZGlzYWJsZSB2YXJzLW9uLXRvcCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdmFyICovXG5cbmltcG9ydCB7IENvdW50cnlNYXNrcyB9IGZyb20gJy4vc3RhdGljcyc7XG5cbi8qIGVzbGludC1kaXNhYmxlIGJsb2NrLXNjb3BlZC12YXIgKi9cbmV4cG9ydCBjbGFzcyBNb25rZXlFY3hVdGlscyB7XG4gIHN0YXRpYyBwZXJzaXN0TnVsbEVtcHR5VW5kZWZpbmVkKHRwOiBhbnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHAgIT09IG51bGwgJiYgdHAgIT09IHVuZGVmaW5lZCAmJiB0cCAhPT0gJyc7XG4gIH1cblxuICBzdGF0aWMgZ2V0RG9jdW1lbnRUeXBlKGRvYzogc3RyaW5nLCBjb3VudHJ5Pzogc3RyaW5nKSB7XG4gICAgaWYgKCFkb2MpIHJldHVybiAnJztcbiAgICBpZiAoY291bnRyeSA9PT0gJ2NsJykgcmV0dXJuICdSVVQnO1xuICAgIHJldHVybiBkb2MubGVuZ3RoIDw9IDExID8gJ0NQRicgOiAnQ05QSic7XG4gIH1cblxuICBzdGF0aWMgZ2V0RG9jdW1lbnRNYXNrKHR5cGU6IHN0cmluZywgY291bnRyeSA9ICcnKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIEJSOiB7XG4gICAgICAgIENQRjogQ291bnRyeU1hc2tzLkNQRixcbiAgICAgICAgQ05QSjogQ291bnRyeU1hc2tzLkNOUEosXG4gICAgICAgICcnOiBgJHtDb3VudHJ5TWFza3MuQ1BGfXx8JHtDb3VudHJ5TWFza3MuQ05QSn1gXG4gICAgICB9LFxuICAgICAgQ0w6IHtcbiAgICAgICAgQ1BGOiBDb3VudHJ5TWFza3MuUlVUMSxcbiAgICAgICAgQ05QSjogQ291bnRyeU1hc2tzLlJVVDIsXG4gICAgICAgICcnOiBgJHtDb3VudHJ5TWFza3MuUlVUMX18fCR7Q291bnRyeU1hc2tzLlJVVDJ9YFxuICAgICAgfVxuICAgIH1bY291bnRyeS50b1VwcGVyQ2FzZSgpXT8uW3R5cGVdO1xuICB9XG5cbiAgc3RhdGljIGdldERvY3VtZW50UGxhY2Vob2xkZXIodHlwZTogc3RyaW5nLCBjb3VudHJ5ID0gJycpIHtcbiAgICByZXR1cm4ge1xuICAgICAgQlI6IHtcbiAgICAgICAgQ1BGOiAnMDAwLjAwMC4wMDAtWFgnLFxuICAgICAgICBDTlBKOiAnMDAuMDAwLjAwMC8wMDAwLTAwJ1xuICAgICAgfSxcbiAgICAgIENMOiB7XG4gICAgICAgIENQRjogJzAwMDAwMDAtQScsXG4gICAgICAgIENOUEo6ICcwMDAwMDAwLUEnXG4gICAgICB9XG4gICAgfVtjb3VudHJ5LnRvVXBwZXJDYXNlKCldPy5bdHlwZV07XG4gIH1cblxuICBzdGF0aWMgZm9ybWF0RG9jdW1lbnRXaXRoTWFzayhkb2M6IHN0cmluZywgd2l0aFR5cGU/OiBib29sZWFuLCBjb3VudHJ5Pzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIWRvYykgcmV0dXJuIGRvYztcbiAgICBsZXQgZm9ybWF0ZWQ6IHN0cmluZyA9ICcnO1xuICAgIGlmIChjb3VudHJ5ID09PSAnY2wnKSB7XG4gICAgICBmb3JtYXRlZCA9IGRvYy5yZXBsYWNlKC9eKFxcZHsxLDJ9KShcXGR7M30pKFxcZHszfSkoXFx3ezF9KSQvLCAnJDEuJDIuJDMtJDQnKTtcbiAgICAgIHJldHVybiBgJHtmb3JtYXRlZH1gO1xuICAgIH1cbiAgICBpZiAoZG9jLmxlbmd0aCA9PT0gMTQpIHtcbiAgICAgIGZvcm1hdGVkID0gZG9jXG4gICAgICAgIC5yZXBsYWNlKC9eKFxcZHsyfSkoXFxkKS8sICckMS4kMicpXG4gICAgICAgIC5yZXBsYWNlKC9eKFxcZHsyfSlcXC4oXFxkezN9KShcXGQpLywgJyQxLiQyLiQzJylcbiAgICAgICAgLnJlcGxhY2UoL1xcLihcXGR7M30pKFxcZCkvLCAnLiQxLyQyJylcbiAgICAgICAgLnJlcGxhY2UoLyhcXGR7NH0pKFxcZCkvLCAnJDEtJDInKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9ybWF0ZWQgPSBkb2NcbiAgICAgICAgLnJlcGxhY2UoL14oXFxkezN9KShcXGQpLywgJyQxLiQyJylcbiAgICAgICAgLnJlcGxhY2UoL14oXFxkezN9KVxcLihcXGR7M30pKFxcZCkvLCAnJDEuJDIuJDMnKVxuICAgICAgICAucmVwbGFjZSgvXFwuKFxcZHszfSkoXFxkKS8sICcuJDEtJDInKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7d2l0aFR5cGUgPyBgJHt0aGlzLmdldERvY3VtZW50VHlwZShkb2MpfTpgIDogJyd9ICR7Zm9ybWF0ZWR9YDtcbiAgfVxuXG4gIHN0YXRpYyBjdXRGaXJzdExhc3ROYW1lKHZhbHVlOiBzdHJpbmcsIHRwOiBzdHJpbmcgPSAnZmlyc3QnKSB7XG4gICAgY29uc3Qgc3BsaXQgPSB2YWx1ZT8udHJpbSgpPy5zcGxpdCgnICcpO1xuXG4gICAgaWYgKHRwID09PSAnZmlyc3QnKSByZXR1cm4gc3BsaXRbMF07XG4gICAgcmV0dXJuIHNwbGl0Py5zcGxpY2UoMSwgc3BsaXQubGVuZ3RoKT8uam9pbignICcpO1xuICB9XG5cbiAgc3RhdGljIGlzQ1BGQ05QSlZhbGlkKGRvY3VtZW50OiBhbnkpOiBib29sZWFuIHtcbiAgICBkb2N1bWVudCA9IGRvY3VtZW50LnJlcGxhY2UoL1teXFxkXS9nLCAnJyk7XG5cbiAgICBjb25zdCBoYW5kbGVkID0gZG9jdW1lbnQucmVwbGFjZShuZXcgUmVnRXhwKGRvY3VtZW50LmNoYXJBdCgwKSwgJ2cnKSwgJycpO1xuICAgIGlmICghaGFuZGxlZCkgcmV0dXJuIGZhbHNlO1xuXG4gICAgaWYgKGRvY3VtZW50Lmxlbmd0aCA9PT0gMTEpIHtcbiAgICAgIGxldCBiYXNlID0gWzEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwXTtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gMDsgaSA8IDk7IG4gKz0gZG9jdW1lbnRbaV0gKiBiYXNlW2krK10pO1xuICAgICAgaWYgKGRvY3VtZW50WzldICE9ICgobiAlPSAxMSkgPD0gMSA/IDAgOiAxMSAtIG4pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGJhc2UgPSBbMTEsIDEwLCA5LCA4LCA3LCA2LCA1LCA0LCAzLCAyLCAxLCAwXTtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBuID0gMDsgaSA8PSA5OyBuICs9IGRvY3VtZW50W2ldICogYmFzZVtpKytdKTtcbiAgICAgIGlmIChkb2N1bWVudFsxMF0gIT0gKChuICU9IDExKSA8PSAxID8gMCA6IDExIC0gbikpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGlmIChkb2N1bWVudC5sZW5ndGggPT09IDE0IHx8IC8wezE0fS8udGVzdChkb2N1bWVudCkpIHtcbiAgICAgIGNvbnN0IGJhc2UgPSBbNiwgNSwgNCwgMywgMiwgOSwgOCwgNywgNiwgNSwgNCwgMywgMl07XG4gICAgICBmb3IgKHZhciBpID0gMCwgbiA9IDA7IGkgPCAxMjsgbiArPSBkb2N1bWVudFtpXSAqIGJhc2VbKytpXSk7XG4gICAgICBpZiAoZG9jdW1lbnRbMTJdICE9ICgobiAlPSAxMSkgPCAyID8gMCA6IDExIC0gbikpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBmb3IgKHZhciBpID0gMCwgbiA9IDA7IGkgPD0gMTI7IG4gKz0gZG9jdW1lbnRbaV0gKiBiYXNlW2krK10pO1xuICAgICAgaWYgKGRvY3VtZW50WzEzXSAhPSAoKG4gJT0gMTEpIDwgMiA/IDAgOiAxMSAtIG4pKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaXNWYWxpZFJVVChkb2N1bWVudDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKCFkb2N1bWVudCB8fCBkb2N1bWVudC50cmltKCkubGVuZ3RoIDwgMykgcmV0dXJuIGZhbHNlO1xuICAgIGNvbnN0IGRvY3VtZW50SGFuZGxlZCA9IGRvY3VtZW50LnJlcGxhY2UoL1teMC05a0tdL2csICcnKTtcblxuICAgIGlmIChkb2N1bWVudEhhbmRsZWQubGVuZ3RoIDwgMykgcmV0dXJuIGZhbHNlO1xuXG4gICAgY29uc3QgY2FsY0R2ID0gKHJ1dDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZTogc3RyaW5nID0gYCR7cnV0fWA7XG4gICAgICBsZXQgc3VtID0gMDtcbiAgICAgIGxldCBtdWx0ID0gMjtcblxuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gdmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBtdWx0ICogTnVtYmVyKHZhbHVlLmNoYXJBdCh2YWx1ZS5sZW5ndGggLSBpKSk7XG5cbiAgICAgICAgc3VtICs9IGluZGV4O1xuXG4gICAgICAgIGlmIChtdWx0IDwgNykge1xuICAgICAgICAgIG11bHQgKz0gMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtdWx0ID0gMjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkdkVzcGVyYWRvID0gMTEgLSAoc3VtICUgMTEpO1xuICAgICAgaWYgKGR2RXNwZXJhZG8gPT09IDEwKSByZXR1cm4gJ0snO1xuICAgICAgaWYgKGR2RXNwZXJhZG8gPT09IDExKSByZXR1cm4gJzAnO1xuICAgICAgcmV0dXJuIGAke2R2RXNwZXJhZG99YDtcbiAgICB9O1xuXG4gICAgY29uc3QgbnVtID0gZG9jdW1lbnRIYW5kbGVkLnNsaWNlKDAsIC0xKTtcbiAgICBjb25zdCBkZ3YgPSBkb2N1bWVudEhhbmRsZWQuc2xpY2UoLTEpLnRvVXBwZXJDYXNlKCk7XG5cbiAgICBjb25zdCBkdkNhbGMgPSBjYWxjRHYobnVtKTtcbiAgICByZXR1cm4gZHZDYWxjID09PSBkZ3Y7XG4gIH1cblxuICBzdGF0aWMgaXNWYWxpZFVybCh0eHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlZ2V4ID0gLyhodHRwcz86XFwvXFwvKD86W2EtejAtOV0oPzpbYS16MC05LV17MCw2MX1bYS16MC05XSk/XFwuKStbYS16MC05XVthLXowLTktXXswLDYxfVthLXowLTldKSg6P1xcZCopXFwvPyhbYS16X1xcXFwvMC05XFwtIy5dKilcXD8/KFthLXpfXFxcXC8wLTlcXC0jPSZdKikvZztcbiAgICByZXR1cm4gcmVnZXgudGVzdCh0eHQpO1xuICB9XG5cbiAgc3RhdGljIGlzVmFsaWRaaXBDb2RlKHppcENvZGU6IHN0cmluZywgY291bnRyeT86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGxlbmd0aCA9IChjb3VudHJ5ID09PSAnY2wnKSA/IDcgOiA4O1xuICAgIHJldHVybiBgJHt0aGlzLmhhbmRsZU9ubHlOdW1iZXJzKHppcENvZGUpfWAubGVuZ3RoID09PSBsZW5ndGg7XG4gIH1cblxuICBzdGF0aWMgZ2V0UmFuZG9tU3RyaW5nKGxlbjogbnVtYmVyLCBjaGFyU2V0Pzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjaGFyU2V0ID0gY2hhclNldCB8fCAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODknO1xuXG4gICAgY29uc3QgcmFuZG9tU3RyaW5nOiBzdHJpbmcgPSBuZXcgQXJyYXkobGVuKVxuICAgICAgLmZpbGwoJzEnKVxuICAgICAgLm1hcCgoKSA9PiB7XG4gICAgICAgIHJldHVybiBjaGFyU2V0Py5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY2hhclNldD8ubGVuZ3RoKSk7XG4gICAgICB9KVxuICAgICAgLmpvaW4oJycpO1xuICAgIHJldHVybiByYW5kb21TdHJpbmc7XG4gIH1cblxuICBzdGF0aWMgaGFuZGxlT25seU51bWJlcnModmFsdWU6IGFueSkge1xuICAgIGlmICghdmFsdWUpIHJldHVybiBudWxsO1xuICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKG5ldyBSZWdFeHAoL1teMC05XS9nKSwgJycpO1xuICB9XG5cbiAgc3RhdGljIGhhbmRsZU9ubHlBbHBoYU51bWVyaWModmFsdWU6IGFueSkge1xuICAgIGlmICghdmFsdWUpIHJldHVybiAnJztcbiAgICByZXR1cm4gdmFsdWUucmVwbGFjZShuZXcgUmVnRXhwKC9bXjAtOUEtWmEtel0vLCAnZycpLCAnJyk7XG4gIH1cblxuICBzdGF0aWMgY2FwaXRhbGl6ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGAke3ZhbHVlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpfSR7dmFsdWUuc2xpY2UoMSl9YDtcbiAgfVxuXG4gIHN0YXRpYyBmb3JtYXRaaXBDb2RlKHppcENvZGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCF6aXBDb2RlKSByZXR1cm4gemlwQ29kZTtcbiAgICBjb25zdCBmb3JtYXRlZDogc3RyaW5nID0gemlwQ29kZVxuICAgICAgLnJlcGxhY2UoL14oXFxkezV9KShcXGQpLywgJyQxLSQyJylcbiAgICAgIC5yZXBsYWNlKC9cXC4oXFxkezN9KShcXGQpLywgJy4kMS0kMicpO1xuXG4gICAgcmV0dXJuIGAke2Zvcm1hdGVkfWA7XG4gIH1cblxuICBzdGF0aWMgZm9ybWF0RmlsZVNpemUoc2l6ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCB1bml0cyA9IFsnQicsICdLQicsICdNQicsICdHQicsICdUQicsICdQQicsICdFQicsICdaQicsICdZQiddO1xuICAgIGxldCBsID0gMDtcbiAgICB3aGlsZSAoc2l6ZSA+PSAxMDI0ICYmICsrbCkge1xuICAgICAgc2l6ZSAvPSAxMDI0O1xuICAgIH1cbiAgICByZXR1cm4gYCR7c2l6ZS50b0ZpeGVkKHNpemUgPCAxMCAmJiBsID4gMCA/IDEgOiAwKX0gJHt1bml0c1tsXX1gO1xuICB9XG5cbiAgc3RhdGljIHN1ZmZsdWUoZGF0YTogYW55W10pOiBhbnlbXSB7XG4gICAgZm9yIChsZXQgaSA9IGRhdGEubGVuZ3RoIC0gMTsgaSA+IDA7IGktLSkge1xuICAgICAgY29uc3QgaiA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIGkpO1xuICAgICAgY29uc3QgdGVtcCA9IGRhdGFbaV07XG4gICAgICBkYXRhW2ldID0gZGF0YVtqXTtcbiAgICAgIGRhdGFbal0gPSB0ZW1wO1xuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHN0YXRpYyBoYW5kbGVCbG9iRmlsZSh0aGVCbG9iOiBhbnksIGZpbGVOYW1lOiBzdHJpbmcsIGZpbGVUeXBlOiBzdHJpbmcpIHtcbiAgICBmdW5jdGlvbiBibG9iVG9GaWxlKHRoZUJsb2I6IGFueSwgZmlsZU5hbWU6IHN0cmluZykge1xuICAgICAgY29uc3QgYiA9IHRoZUJsb2I7XG4gICAgICBiLmxhc3RNb2RpZmllZERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgYi5uYW1lID0gZmlsZU5hbWU7XG4gICAgICByZXR1cm4gYjtcbiAgICB9XG5cbiAgICBsZXQgZmlsZTogYW55O1xuICAgIGlmICghKG5hdmlnYXRvciBhcyBhbnkpLm1zU2F2ZUJsb2IpIHtcbiAgICAgIGZpbGUgPSBuZXcgRmlsZShbdGhlQmxvYl0sIGZpbGVOYW1lLCB7XG4gICAgICAgIHR5cGU6IGZpbGVUeXBlLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpbGUgPSBuZXcgQmxvYihbdGhlQmxvYl0sIHtcbiAgICAgICAgdHlwZTogZmlsZVR5cGUsXG4gICAgICB9KTtcbiAgICAgIGZpbGUgPSBibG9iVG9GaWxlKGZpbGUsIGZpbGVOYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIGZpbGU7XG4gIH1cblxuICBzdGF0aWMgdHJ1bmNhdGUodGV4dDogc3RyaW5nLCBtYXhMZW5ndGg6IG51bWJlciA9IDI1KTogc3RyaW5nIHtcbiAgICBjb25zdCBtaWRDaGFyID0gJy4uLic7XG4gICAgaWYgKCF0ZXh0KSByZXR1cm4gbWlkQ2hhcjtcbiAgICBpZiAodGV4dCAmJiB0ZXh0Lmxlbmd0aCA8PSBtYXhMZW5ndGgpIHJldHVybiB0ZXh0O1xuXG4gICAgY29uc3QgbGVmdCA9IE1hdGguY2VpbChtYXhMZW5ndGggLyAyKTtcbiAgICBjb25zdCByaWdodCA9IHRleHQubGVuZ3RoIC0gbGVmdCArIDE7XG5cbiAgICByZXR1cm4gYCR7dGV4dC5zdWJzdHIoMCwgbGVmdCl9ICR7bWlkQ2hhcn0gJHt0ZXh0LnN1YnN0cmluZyhyaWdodCl9YDtcbiAgfVxuXG4gIHN0YXRpYyBpc0xvY2FsaG9zdCgpIHtcbiAgICBjb25zdCB7IGhyZWYgfSA9IHdpbmRvdz8ubG9jYXRpb247XG4gICAgaWYgKCFocmVmKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIGhyZWY/LnNlYXJjaCgnbG9jYWxob3N0JykgPj0gMDtcbiAgfVxuXG4gIHN0YXRpYyBpc1NhbWVPcmlnaW4oZnJvbnRlbmQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGluaXRpYWxQYXRoOiBzdHJpbmcgPSB3aW5kb3cubG9jYXRpb24ub3JpZ2luO1xuICAgIHJldHVybiAoaW5pdGlhbFBhdGggfHwgJycpID09PSBmcm9udGVuZDtcbiAgfVxuXG4gIHN0YXRpYyByZXBsYWNlVmFyaWFibGVzKGRhdGE6IHN0cmluZywgb2JqOiBhbnkpIHtcbiAgICBsZXQgaGFuZGxlZCA9IGRhdGE7XG4gICAgT2JqZWN0LmVudHJpZXMob2JqKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGhhbmRsZWQgPSBoYW5kbGVkLnJlcGxhY2UobmV3IFJlZ0V4cChgeyR7a2V5fX1gLCAnZycpLCBgJHt2YWx1ZX1gKTtcbiAgICB9KTtcbiAgICByZXR1cm4gaGFuZGxlZDtcbiAgfVxufVxuIl19