taon 18.0.19 → 18.0.21

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 (330) hide show
  1. package/README.md +114 -118
  2. package/assets/shared/logo-header-admin-mode.png +0 -0
  3. package/assets/shared/shared_folder_info.txt +1 -1
  4. package/bin/start.js +279 -279
  5. package/bin/taon +6 -6
  6. package/bin/taon-debug +5 -5
  7. package/bin/taon-debug-brk +5 -5
  8. package/browser/README.md +24 -24
  9. package/browser/esm2022/lib/base-classes/base-abstract-entity.mjs +1 -1
  10. package/browser/esm2022/lib/base-classes/base-class.mjs +2 -2
  11. package/browser/esm2022/lib/base-classes/base-controller.mjs +3 -2
  12. package/browser/esm2022/lib/base-classes/base-crud-controller.mjs +1 -1
  13. package/browser/esm2022/lib/base-classes/base-migration.mjs +23 -0
  14. package/browser/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +20 -20
  15. package/browser/esm2022/lib/base-classes/base.mjs +5 -3
  16. package/browser/esm2022/lib/context-db-migrations.mjs +410 -0
  17. package/browser/esm2022/lib/create-context.mjs +22 -8
  18. package/browser/esm2022/lib/decorators/classes/controller-decorator.mjs +4 -1
  19. package/browser/esm2022/lib/decorators/classes/entity-decorator.mjs +4 -1
  20. package/browser/esm2022/lib/decorators/classes/migration-decorator.mjs +18 -0
  21. package/browser/esm2022/lib/decorators/classes/provider-decorator.mjs +4 -1
  22. package/browser/esm2022/lib/decorators/classes/repository-decorator.mjs +4 -1
  23. package/browser/esm2022/lib/decorators/classes/subscriber-decorator.mjs +5 -2
  24. package/browser/esm2022/lib/decorators/http/http-methods-decorators.mjs +1 -1
  25. package/browser/esm2022/lib/endpoint-context.mjs +105 -59
  26. package/browser/esm2022/lib/entity-process.mjs +1 -10
  27. package/browser/esm2022/lib/get-response-value.mjs +1 -15
  28. package/browser/esm2022/lib/index.mjs +4 -1
  29. package/browser/esm2022/lib/inject.mjs +1 -1
  30. package/browser/esm2022/lib/models.mjs +30 -1
  31. package/browser/esm2022/lib/symbols.mjs +2 -1
  32. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/index.mjs +1 -3
  33. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +55 -37
  34. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +17 -21
  35. package/browser/esm2022/lib/ui/taon-notifications/taon-notifications.module.mjs +1 -1
  36. package/browser/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.component.mjs +1 -1
  37. package/browser/esm2022/lib/ui/taon-table/taon-table.component.mjs +1 -2
  38. package/browser/fesm2022/taon.mjs +701 -449
  39. package/browser/fesm2022/taon.mjs.map +1 -1
  40. package/browser/lib/base-classes/base-abstract-entity.d.ts +2 -1
  41. package/browser/lib/base-classes/base-class.d.ts +1 -1
  42. package/browser/lib/base-classes/base-context.d.ts +3 -0
  43. package/browser/lib/base-classes/base-controller.d.ts +2 -1
  44. package/browser/lib/base-classes/base-crud-controller.d.ts +1 -1
  45. package/browser/lib/base-classes/base-migration.d.ts +12 -0
  46. package/browser/lib/base-classes/base.d.ts +8 -2
  47. package/browser/lib/context-db-migrations.d.ts +17 -0
  48. package/browser/lib/create-context.d.ts +7 -4
  49. package/browser/lib/decorators/classes/controller-decorator.d.ts +3 -0
  50. package/browser/lib/decorators/classes/entity-decorator.d.ts +3 -0
  51. package/browser/lib/decorators/classes/migration-decorator.d.ts +8 -0
  52. package/browser/lib/decorators/classes/provider-decorator.d.ts +3 -0
  53. package/browser/lib/decorators/classes/repository-decorator.d.ts +3 -0
  54. package/browser/lib/decorators/classes/subscriber-decorator.d.ts +3 -0
  55. package/browser/lib/decorators/http/http-methods-decorators.d.ts +9 -0
  56. package/browser/lib/endpoint-context.d.ts +14 -7
  57. package/browser/lib/index.d.ts +14 -1
  58. package/browser/lib/models.d.ts +45 -22
  59. package/browser/lib/symbols.d.ts +1 -0
  60. package/browser/lib/ui/taon-admin-mode-configuration/index.d.ts +1 -3
  61. package/browser/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +5 -8
  62. package/browser/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +8 -8
  63. package/client/README.md +24 -24
  64. package/client/esm2022/lib/base-classes/base-abstract-entity.mjs +1 -1
  65. package/client/esm2022/lib/base-classes/base-class.mjs +2 -2
  66. package/client/esm2022/lib/base-classes/base-controller.mjs +3 -2
  67. package/client/esm2022/lib/base-classes/base-crud-controller.mjs +1 -1
  68. package/client/esm2022/lib/base-classes/base-migration.mjs +23 -0
  69. package/client/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +20 -20
  70. package/client/esm2022/lib/base-classes/base.mjs +5 -3
  71. package/client/esm2022/lib/context-db-migrations.mjs +410 -0
  72. package/client/esm2022/lib/create-context.mjs +22 -8
  73. package/client/esm2022/lib/decorators/classes/controller-decorator.mjs +4 -1
  74. package/client/esm2022/lib/decorators/classes/entity-decorator.mjs +4 -1
  75. package/client/esm2022/lib/decorators/classes/migration-decorator.mjs +18 -0
  76. package/client/esm2022/lib/decorators/classes/provider-decorator.mjs +4 -1
  77. package/client/esm2022/lib/decorators/classes/repository-decorator.mjs +4 -1
  78. package/client/esm2022/lib/decorators/classes/subscriber-decorator.mjs +5 -2
  79. package/client/esm2022/lib/decorators/http/http-methods-decorators.mjs +1 -1
  80. package/client/esm2022/lib/endpoint-context.mjs +105 -59
  81. package/client/esm2022/lib/entity-process.mjs +1 -10
  82. package/client/esm2022/lib/get-response-value.mjs +1 -15
  83. package/client/esm2022/lib/index.mjs +4 -1
  84. package/client/esm2022/lib/inject.mjs +1 -1
  85. package/client/esm2022/lib/models.mjs +30 -1
  86. package/client/esm2022/lib/symbols.mjs +2 -1
  87. package/client/esm2022/lib/ui/taon-admin-mode-configuration/index.mjs +1 -3
  88. package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +55 -37
  89. package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +17 -21
  90. package/client/esm2022/lib/ui/taon-notifications/taon-notifications.module.mjs +1 -1
  91. package/client/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.component.mjs +1 -1
  92. package/client/esm2022/lib/ui/taon-table/taon-table.component.mjs +1 -2
  93. package/client/fesm2022/taon.mjs +701 -449
  94. package/client/fesm2022/taon.mjs.map +1 -1
  95. package/client/lib/base-classes/base-abstract-entity.d.ts +2 -1
  96. package/client/lib/base-classes/base-class.d.ts +1 -1
  97. package/client/lib/base-classes/base-context.d.ts +3 -0
  98. package/client/lib/base-classes/base-controller.d.ts +2 -1
  99. package/client/lib/base-classes/base-crud-controller.d.ts +1 -1
  100. package/client/lib/base-classes/base-migration.d.ts +12 -0
  101. package/client/lib/base-classes/base.d.ts +8 -2
  102. package/client/lib/context-db-migrations.d.ts +17 -0
  103. package/client/lib/create-context.d.ts +7 -4
  104. package/client/lib/decorators/classes/controller-decorator.d.ts +3 -0
  105. package/client/lib/decorators/classes/entity-decorator.d.ts +3 -0
  106. package/client/lib/decorators/classes/migration-decorator.d.ts +8 -0
  107. package/client/lib/decorators/classes/provider-decorator.d.ts +3 -0
  108. package/client/lib/decorators/classes/repository-decorator.d.ts +3 -0
  109. package/client/lib/decorators/classes/subscriber-decorator.d.ts +3 -0
  110. package/client/lib/decorators/http/http-methods-decorators.d.ts +9 -0
  111. package/client/lib/endpoint-context.d.ts +14 -7
  112. package/client/lib/index.d.ts +14 -1
  113. package/client/lib/models.d.ts +45 -22
  114. package/client/lib/symbols.d.ts +1 -0
  115. package/client/lib/ui/taon-admin-mode-configuration/index.d.ts +1 -3
  116. package/client/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +5 -8
  117. package/client/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +8 -8
  118. package/lib/base-classes/base-abstract-entity.d.ts +1 -0
  119. package/lib/base-classes/base-class.d.ts +1 -1
  120. package/lib/base-classes/base-class.js +1 -1
  121. package/lib/base-classes/base-context.d.ts +3 -0
  122. package/lib/base-classes/base-controller.d.ts +2 -1
  123. package/lib/base-classes/base-controller.js +2 -1
  124. package/lib/base-classes/base-controller.js.map +1 -1
  125. package/lib/base-classes/base-crud-controller.d.ts +1 -1
  126. package/lib/base-classes/base-migration.d.ts +11 -0
  127. package/lib/base-classes/base-migration.js +41 -0
  128. package/lib/base-classes/base-migration.js.map +1 -0
  129. package/lib/base-classes/base-repository.js +4 -4
  130. package/lib/base-classes/base-repository.js.map +1 -1
  131. package/lib/base-classes/base-subscriber-for-entity.js +19 -19
  132. package/lib/base-classes/base-subscriber-for-entity.js.map +1 -1
  133. package/lib/base-classes/base.d.ts +8 -2
  134. package/lib/base-classes/base.js +4 -2
  135. package/lib/base-classes/base.js.map +1 -1
  136. package/lib/context-db-migrations.d.ts +16 -0
  137. package/lib/context-db-migrations.js +585 -0
  138. package/lib/context-db-migrations.js.map +1 -0
  139. package/lib/create-context.d.ts +7 -4
  140. package/lib/create-context.js +34 -12
  141. package/lib/create-context.js.map +1 -1
  142. package/lib/decorators/classes/controller-decorator.d.ts +3 -0
  143. package/lib/decorators/classes/controller-decorator.js +3 -0
  144. package/lib/decorators/classes/controller-decorator.js.map +1 -1
  145. package/lib/decorators/classes/entity-decorator.d.ts +3 -0
  146. package/lib/decorators/classes/entity-decorator.js +3 -0
  147. package/lib/decorators/classes/entity-decorator.js.map +1 -1
  148. package/lib/decorators/classes/migration-decorator.d.ts +7 -0
  149. package/lib/decorators/classes/migration-decorator.js +27 -0
  150. package/lib/decorators/classes/migration-decorator.js.map +1 -0
  151. package/lib/decorators/classes/provider-decorator.d.ts +3 -0
  152. package/lib/decorators/classes/provider-decorator.js +3 -0
  153. package/lib/decorators/classes/provider-decorator.js.map +1 -1
  154. package/lib/decorators/classes/repository-decorator.d.ts +3 -0
  155. package/lib/decorators/classes/repository-decorator.js +3 -0
  156. package/lib/decorators/classes/repository-decorator.js.map +1 -1
  157. package/lib/decorators/classes/subscriber-decorator.d.ts +3 -0
  158. package/lib/decorators/classes/subscriber-decorator.js +4 -1
  159. package/lib/decorators/classes/subscriber-decorator.js.map +1 -1
  160. package/lib/decorators/http/http-methods-decorators.d.ts +9 -0
  161. package/lib/decorators/http/http-methods-decorators.js.map +1 -1
  162. package/lib/endpoint-context.d.ts +14 -7
  163. package/lib/endpoint-context.js +265 -220
  164. package/lib/endpoint-context.js.map +1 -1
  165. package/lib/entity-process.js +0 -9
  166. package/lib/entity-process.js.map +1 -1
  167. package/lib/get-response-value.js +14 -37
  168. package/lib/get-response-value.js.map +1 -1
  169. package/lib/index.d.ts +14 -1
  170. package/lib/index.js +5 -1
  171. package/lib/index.js.map +1 -1
  172. package/lib/inject.js +0 -2
  173. package/lib/inject.js.map +1 -1
  174. package/lib/models.d.ts +45 -23
  175. package/lib/models.js +45 -0
  176. package/lib/models.js.map +1 -1
  177. package/lib/symbols.d.ts +1 -0
  178. package/lib/symbols.js +1 -0
  179. package/lib/symbols.js.map +1 -1
  180. package/lib/ui/directives/index.js +2 -2
  181. package/lib/ui/index.js +2 -2
  182. package/lib/ui/taon-admin-mode-configuration/index.d.ts +1 -3
  183. package/lib/ui/taon-admin-mode-configuration/index.js +2 -2
  184. package/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +4 -7
  185. package/lib/ui/taon-admin-mode-configuration/{models/taon-admin-mode-tabs.js → taon-admin.models.js} +1 -1
  186. package/lib/ui/taon-admin-mode-configuration/taon-admin.models.js.map +1 -0
  187. package/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +6 -6
  188. package/lib/ui/taon-github-fork-me-corner/index.js +2 -2
  189. package/lib/ui/taon-github-fork-me-ribbon/index.js +2 -2
  190. package/lib/ui/taon-notifications/taon-notifications.models.js +2 -2
  191. package/lib/ui/taon-progress-bar/index.js +2 -2
  192. package/lib/ui/taon-session-passcode/index.js +2 -2
  193. package/lib/ui/taon-table/index.js +2 -2
  194. package/migrations/index.d.ts +1 -0
  195. package/migrations/index.js +6 -0
  196. package/migrations/index.js.map +1 -0
  197. package/migrations/migrations_index._auto-generated_.d.ts +0 -0
  198. package/migrations/migrations_index._auto-generated_.js +4 -0
  199. package/migrations/migrations_index._auto-generated_.js.map +1 -0
  200. package/package.json +7 -7
  201. package/taon.jsonc +47 -47
  202. package/tmp-environment.json +39 -31
  203. package/websql/README.md +24 -24
  204. package/websql/esm2022/lib/base-classes/base-abstract-entity.mjs +1 -1
  205. package/websql/esm2022/lib/base-classes/base-class.mjs +2 -2
  206. package/websql/esm2022/lib/base-classes/base-controller.mjs +3 -2
  207. package/websql/esm2022/lib/base-classes/base-crud-controller.mjs +1 -1
  208. package/websql/esm2022/lib/base-classes/base-migration.mjs +23 -0
  209. package/websql/esm2022/lib/base-classes/base-repository.mjs +5 -5
  210. package/websql/esm2022/lib/base-classes/base-subscriber-for-entity.mjs +20 -20
  211. package/websql/esm2022/lib/base-classes/base.mjs +5 -3
  212. package/websql/esm2022/lib/context-db-migrations.mjs +269 -0
  213. package/websql/esm2022/lib/create-context.mjs +22 -8
  214. package/websql/esm2022/lib/decorators/classes/controller-decorator.mjs +4 -1
  215. package/websql/esm2022/lib/decorators/classes/entity-decorator.mjs +4 -1
  216. package/websql/esm2022/lib/decorators/classes/migration-decorator.mjs +18 -0
  217. package/websql/esm2022/lib/decorators/classes/provider-decorator.mjs +4 -1
  218. package/websql/esm2022/lib/decorators/classes/repository-decorator.mjs +4 -1
  219. package/websql/esm2022/lib/decorators/classes/subscriber-decorator.mjs +5 -2
  220. package/websql/esm2022/lib/decorators/http/http-methods-decorators.mjs +1 -1
  221. package/websql/esm2022/lib/endpoint-context.mjs +139 -95
  222. package/websql/esm2022/lib/entity-process.mjs +1 -10
  223. package/websql/esm2022/lib/get-response-value.mjs +4 -24
  224. package/websql/esm2022/lib/index.mjs +4 -1
  225. package/websql/esm2022/lib/inject.mjs +1 -1
  226. package/websql/esm2022/lib/models.mjs +28 -1
  227. package/websql/esm2022/lib/symbols.mjs +2 -1
  228. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/index.mjs +1 -3
  229. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.mjs +55 -37
  230. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin.service.mjs +17 -21
  231. package/websql/esm2022/lib/ui/taon-notifications/taon-notifications.module.mjs +1 -1
  232. package/websql/esm2022/lib/ui/taon-progress-bar/taon-progress-bar.component.mjs +1 -1
  233. package/websql/esm2022/lib/ui/taon-table/taon-table.component.mjs +1 -2
  234. package/websql/fesm2022/taon.mjs +594 -497
  235. package/websql/fesm2022/taon.mjs.map +1 -1
  236. package/websql/lib/base-classes/base-abstract-entity.d.ts +2 -1
  237. package/websql/lib/base-classes/base-class.d.ts +1 -1
  238. package/websql/lib/base-classes/base-context.d.ts +3 -0
  239. package/websql/lib/base-classes/base-controller.d.ts +2 -1
  240. package/websql/lib/base-classes/base-crud-controller.d.ts +1 -1
  241. package/websql/lib/base-classes/base-migration.d.ts +12 -0
  242. package/websql/lib/base-classes/base.d.ts +8 -2
  243. package/websql/lib/context-db-migrations.d.ts +17 -0
  244. package/websql/lib/create-context.d.ts +7 -4
  245. package/websql/lib/decorators/classes/controller-decorator.d.ts +3 -0
  246. package/websql/lib/decorators/classes/entity-decorator.d.ts +3 -0
  247. package/websql/lib/decorators/classes/migration-decorator.d.ts +8 -0
  248. package/websql/lib/decorators/classes/provider-decorator.d.ts +3 -0
  249. package/websql/lib/decorators/classes/repository-decorator.d.ts +3 -0
  250. package/websql/lib/decorators/classes/subscriber-decorator.d.ts +3 -0
  251. package/websql/lib/decorators/http/http-methods-decorators.d.ts +9 -0
  252. package/websql/lib/endpoint-context.d.ts +14 -7
  253. package/websql/lib/index.d.ts +14 -1
  254. package/websql/lib/models.d.ts +45 -23
  255. package/websql/lib/symbols.d.ts +1 -0
  256. package/websql/lib/ui/taon-admin-mode-configuration/index.d.ts +1 -3
  257. package/websql/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.d.ts +5 -8
  258. package/websql/lib/ui/taon-admin-mode-configuration/taon-admin.service.d.ts +8 -8
  259. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.mjs +0 -5
  260. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.mjs +0 -115
  261. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.mjs +0 -50
  262. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.mjs +0 -5
  263. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.mjs +0 -61
  264. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.mjs +0 -21
  265. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.mjs +0 -4
  266. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.mjs +0 -32
  267. package/browser/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.mjs +0 -54
  268. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +0 -3
  269. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +0 -33
  270. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +0 -16
  271. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +0 -3
  272. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +0 -17
  273. package/browser/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +0 -10
  274. package/browser/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.d.ts +0 -6
  275. package/browser/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +0 -18
  276. package/browser/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +0 -17
  277. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.mjs +0 -5
  278. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.mjs +0 -115
  279. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.mjs +0 -50
  280. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.mjs +0 -5
  281. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.mjs +0 -61
  282. package/client/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.mjs +0 -21
  283. package/client/esm2022/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.mjs +0 -4
  284. package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.mjs +0 -32
  285. package/client/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.mjs +0 -54
  286. package/client/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +0 -3
  287. package/client/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +0 -33
  288. package/client/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +0 -16
  289. package/client/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +0 -3
  290. package/client/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +0 -17
  291. package/client/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +0 -10
  292. package/client/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.d.ts +0 -6
  293. package/client/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +0 -18
  294. package/client/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +0 -17
  295. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +0 -2
  296. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.js +0 -5
  297. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.js.map +0 -1
  298. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +0 -29
  299. package/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +0 -2
  300. package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/index.d.ts +0 -1
  301. package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/index.js +0 -5
  302. package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/index.js.map +0 -1
  303. package/lib/ui/taon-admin-mode-configuration/components/taon-db-admin/taon-db-admin.component.d.ts +0 -8
  304. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +0 -2
  305. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.js +0 -5
  306. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.js.map +0 -1
  307. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +0 -13
  308. package/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +0 -2
  309. package/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.js.map +0 -1
  310. package/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +0 -14
  311. package/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +0 -2
  312. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.mjs +0 -5
  313. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.mjs +0 -115
  314. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.mjs +0 -50
  315. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.mjs +0 -5
  316. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.mjs +0 -61
  317. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.mjs +0 -21
  318. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.mjs +0 -4
  319. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.mjs +0 -32
  320. package/websql/esm2022/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.mjs +0 -54
  321. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/index.d.ts +0 -3
  322. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.component.d.ts +0 -33
  323. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-admin-edit-mode/taon-admin-edit-mode.module.d.ts +0 -16
  324. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/index.d.ts +0 -3
  325. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.component.d.ts +0 -17
  326. package/websql/lib/ui/taon-admin-mode-configuration/components/taon-file-general-opt/taon-file-general-opt.module.d.ts +0 -10
  327. package/websql/lib/ui/taon-admin-mode-configuration/models/taon-admin-mode-tabs.d.ts +0 -6
  328. package/websql/lib/ui/taon-admin-mode-configuration/taon-admin-control.service.d.ts +0 -18
  329. package/websql/lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.module.d.ts +0 -17
  330. /package/lib/ui/taon-admin-mode-configuration/{models/taon-admin-mode-tabs.d.ts → taon-admin.models.d.ts} +0 -0
@@ -11,6 +11,7 @@ import { ChangeDetectorRef, Component, EventEmitter, HostListener, Input, Output
11
11
  /* */
12
12
  /* */
13
13
  import { Helpers, _ } from 'tnp-core/websql';
14
+ import { TaonAdminService } from './taon-admin.service';
14
15
  import { Stor } from 'taon-storage/websql';
15
16
  /* */
16
17
  /* */
@@ -19,20 +20,27 @@ import { Stor } from 'taon-storage/websql';
19
20
  /* */
20
21
  import { BreakpointsService } from 'static-columns/websql';
21
22
  import { Subject, takeUntil } from 'rxjs';
22
- import { TaonAdminService } from './taon-admin-control.service';
23
+ import { CommonModule } from '@angular/common';
24
+ import { TaonFullMaterialModule } from '../taon-full-material.module';
25
+ import { StaticColumnsModule } from 'static-columns/websql';
26
+ import { FormsModule } from '@angular/forms';
27
+ import { NgScrollbarModule } from 'ngx-scrollbar';
28
+ import { TaonProgressBarModule } from '../taon-progress-bar';
29
+ import { TaonNotificationsModule } from '../taon-notifications';
30
+ import { TaonSessionPasscodeComponent } from '../taon-session-passcode';
23
31
  import * as i0 from "@angular/core";
24
32
  import * as i1 from "static-columns/websql";
25
- import * as i2 from "@angular/common";
26
- import * as i3 from "@angular/forms";
27
- import * as i4 from "ngx-scrollbar";
28
- import * as i5 from "@angular/cdk/drag-drop";
29
- import * as i6 from "@angular/material/button";
30
- import * as i7 from "@angular/material/card";
31
- import * as i8 from "@angular/material/checkbox";
32
- import * as i9 from "@angular/material/icon";
33
- import * as i10 from "@angular/material/sidenav";
34
- import * as i11 from "@angular/material/tabs";
35
- import * as i12 from "../taon-session-passcode/taon-session-passcode.component";
33
+ import * as i2 from "./taon-admin.service";
34
+ import * as i3 from "@angular/common";
35
+ import * as i4 from "@angular/forms";
36
+ import * as i5 from "ngx-scrollbar";
37
+ import * as i6 from "@angular/cdk/drag-drop";
38
+ import * as i7 from "@angular/material/button";
39
+ import * as i8 from "@angular/material/card";
40
+ import * as i9 from "@angular/material/checkbox";
41
+ import * as i10 from "@angular/material/icon";
42
+ import * as i11 from "@angular/material/sidenav";
43
+ import * as i12 from "@angular/material/tabs";
36
44
  export class TaonAdminModeConfigurationComponent {
37
45
  get opened() {
38
46
  return !this.isIframe && this.admin.adminPanelIsOpen;
@@ -47,13 +55,12 @@ export class TaonAdminModeConfigurationComponent {
47
55
  }
48
56
  this.admin.adminPanelIsOpen = v;
49
57
  }
50
- constructor(breakpointsService) {
58
+ constructor(breakpointsService, admin) {
51
59
  this.breakpointsService = breakpointsService;
60
+ this.admin = admin;
52
61
  this.$destroy = new Subject();
53
62
  this.cdr = inject(ChangeDetectorRef);
54
63
  this.taonAdminService = inject(TaonAdminService);
55
- this.tabs = [];
56
- this.admin = window['taon'];
57
64
  this.isWebSQLMode = Helpers.isWebSQL;
58
65
  this.hideTaonToolsInProduction = ENV.hideTaonToolsInProduction && ENV.angularProd;
59
66
  this.isIframe = window.location !== window.parent.location;
@@ -72,7 +79,6 @@ export class TaonAdminModeConfigurationComponent {
72
79
  this.dragPositionZero = { x: 0, y: 0 };
73
80
  this.taonAdminModeConfigurationDataChanged = new EventEmitter();
74
81
  this.taonAdminModeConfigurationData = {};
75
- this.admin.cmp = this;
76
82
  this.breakpointsService
77
83
  .listenTo()
78
84
  .pipe(takeUntil(this.$destroy))
@@ -80,14 +86,6 @@ export class TaonAdminModeConfigurationComponent {
80
86
  // @ts-ignore
81
87
  this.isDesktop = breakpoint === 'desktop';
82
88
  });
83
- this.taonAdminService.init(this);
84
- }
85
- reloadTabs() {
86
- this.reloading = true;
87
- setTimeout(() => {
88
- this.reloading = false;
89
- console.log('reloading done');
90
- });
91
89
  }
92
90
  async ngOnInit() {
93
91
  await Stor.awaitPendingOperatios();
@@ -111,6 +109,16 @@ export class TaonAdminModeConfigurationComponent {
111
109
  onResize(event) {
112
110
  this.height = window.innerHeight;
113
111
  }
112
+ async reloadTabs() {
113
+ return new Promise(resolve => {
114
+ this.reloading = true;
115
+ setTimeout(() => {
116
+ this.reloading = false;
117
+ console.log('reloading done');
118
+ resolve();
119
+ });
120
+ });
121
+ }
114
122
  async toogle() {
115
123
  this.opened = !this.opened;
116
124
  }
@@ -132,37 +140,47 @@ export class TaonAdminModeConfigurationComponent {
132
140
  scrollTabs(event) {
133
141
  return;
134
142
  }
135
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminModeConfigurationComponent, deps: [{ token: i1.BreakpointsService }], target: i0.ɵɵFactoryTarget.Component }); }
136
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: TaonAdminModeConfigurationComponent, selector: "app-taon-admin-mode-configuration", inputs: { taonAdminModeConfigurationData: "taonAdminModeConfigurationData" }, outputs: { taonAdminModeConfigurationDataChanged: "taonAdminModeConfigurationDataChanged" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: ["tabGroup"], descendants: true }], ngImport: i0, template: "<!-- #region basic global components -->\n<taon-session-passcode\n *ngIf=\"showPasscode\"\n [passcode]=\"passcode\"\n [message]=\"message\" />\n<!-- <taon-progress-bar [isDesktop]=\"isDesktop\"></taon-progress-bar> -->\n<!-- <taon-notifications></taon-notifications> -->\n<button\n mat-fab\n class=\"fab-button\"\n color=\"accent\"\n aria-label=\"Taon Admin Mode\"\n *ngIf=\"\n !admin.draggablePopupMode &&\n isDesktop &&\n !isIframe &&\n !hideTaonToolsInProduction\n \"\n (click)=\"toogle()\">\n <mat-icon>build</mat-icon>\n</button>\n<!-- #endregion -->\n\n<!-- #region small hidden button -->\n<!-- <button class=\"admin-show-button\"\n *ngIf=\"!admin.draggablePopupMode && isDesktop\"\n (click)=\"toogle()\"> Admin </button> -->\n<!-- #endregion -->\n\n<ng-template #contentNoScroll>\n <ng-content> </ng-content>\n</ng-template>\n\n<ng-template #content>\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"contentNoScroll\"></ng-container>\n </ng-scrollbar>\n</ng-template>\n\n<!-- #region admin tabs -->\n<ng-template #adminTabs>\n <div class=\"taon-header-admin-wrapper\">\n <columns-container\n class=\"taon-header-admin\"\n [ngClass]=\"{ 'draggable-column': admin.draggablePopupMode }\">\n <column width=\"200\" class=\"logo-header\">\n <img\n *ngIf=\"openedOnce\"\n src=\"assets/assets-for/taon/shared/logo-header-admin-mode.png\" />\n </column>\n\n <column grow>\n <!-- <span>Super Admin Mode</span> -->\n </column>\n\n <column\n width=\"40\"\n *ngIf=\"\n !admin.draggablePopupModeFullScreen && !admin.draggablePopupMode\n \">\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupMode\"\n (click)=\"\n admin.draggablePopupMode = false;\n opened = false;\n wasOpenDraggablePopup = true\n \"\n class=\"admin-close-button\">\n <mat-icon>close </mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupMode\"\n (click)=\"toogle()\"\n class=\"admin-close-button\">\n <mat-icon>close</mat-icon>\n </button>\n </column>\n\n <column width=\"40\">\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupModeFullScreen\"\n class=\"admin-close-button\"\n (click)=\"toogleFullScreen()\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupModeFullScreen\"\n class=\"admin-close-button\"\n (click)=\"toogleFullScreen()\">\n <mat-icon>close_fullscreen</mat-icon>\n </button>\n </column>\n\n <column width=\"40\" *ngIf=\"!admin.draggablePopupModeFullScreen\">\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupMode\"\n (click)=\"admin.draggablePopupMode = true\"\n class=\"admin-close-button\">\n <mat-icon>launch</mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupMode\"\n (click)=\"admin.draggablePopupMode = false; resetDrag()\"\n class=\"admin-close-button\">\n <mat-icon style=\"transform: rotate(180deg)\">login</mat-icon>\n </button>\n </column>\n </columns-container>\n </div>\n\n <columns-container\n [ngClass]=\"{ 'draggable-column': admin.draggablePopupMode }\">\n <column grow>\n <mat-tab-group\n dynamicHeight\n (wheel)=\"scrollTabs($event)\"\n #tabGroup\n [selectedIndex]=\"selectedIndex\"\n (selectedIndexChange)=\"selectedIndex = $event\">\n <mat-tab label=\"DB/Cache\">\n <section>\n <mat-card>\n <mat-card-header>\n <mat-card-subtitle>WEBSQL MODE</mat-card-subtitle>\n </mat-card-header>\n <mat-card-content>\n <mat-checkbox\n [disabled]=\"!isWebSQLMode\"\n [ngModel]=\"admin.keepWebsqlDbDataAfterReload\"\n (change)=\"\n admin.setKeepWebsqlDbDataAfterReload($event.checked)\n \">\n Don't remove data when reloading\n </mat-checkbox>\n </mat-card-content>\n </mat-card>\n </section>\n <br />\n <taon-db-admin />\n </mat-tab>\n\n <mat-tab label=\"Files\" *ngIf=\"admin.enabledTabs.includes('files')\">\n <section>\n <mat-checkbox\n [ngModel]=\"admin.filesEditMode\"\n (change)=\"admin.setEditMode($event.checked)\"\n >Edit mode</mat-checkbox\n >\n </section>\n <!-- admin.filesEditMode: {{ admin.filesEditMode }} -->\n <!-- <taon-admin-edit-mode *ngIf=\"admin.filesEditMode\">\n </taon-admin-edit-mode> -->\n <br />\n <hr *ngIf=\"admin.filesEditMode\" />\n <!-- <section>\n <button mat-raised-button>[TODO] Clear Files from browser cache </button> <br>\n <button mat-raised-button>[TODO] Start files export (as zip) </button> <br>\n <button mat-raised-button>[TODO] Import whole database (from zip) </button><br>\n </section> -->\n </mat-tab>\n <mat-tab *ngFor=\"let tab of tabs\" label=\"{{ tab.name }}\">\n <div\n class=\"full-tabs\"\n [style.height.px]=\"height - 150\"\n *ngIf=\"!isIframe\">\n <ng-container *ngTemplateOutlet=\"tab.template\"></ng-container>\n </div>\n <ng-container *ngIf=\"isIframe\">\n <ng-container *ngTemplateOutlet=\"tab.template\"></ng-container>\n </ng-container>\n </mat-tab>\n\n <!-- <mat-tab label=\"Portal\">\n <section>\n <mat-checkbox>[TODO] Maintenance Mode for whole portal</mat-checkbox>\n\n <mat-expansion-panel>\n\n <mat-expansion-panel-header>\n [TODO] Active User: 80432\n </mat-expansion-panel-header>\n <section>\n <button mat-raised-button>[TODO] Send notification to users </button><br>\n <button mat-raised-button>[TODO] Send email to users </button><br>\n </section>\n </mat-expansion-panel>\n <mat-expansion-panel>\n <mat-expansion-panel-header>\n [TODO] Enable features\n </mat-expansion-panel-header>\n <mat-checkbox>[TODO] AB testing</mat-checkbox> <br>\n <mat-checkbox>\n [TODO] Newsletter email question popup\n </mat-checkbox> <br>\n <mat-checkbox>\n [TODO] Promotion popup\n </mat-checkbox> <br>\n </mat-expansion-panel>\n </section>\n </mat-tab>\n <mat-tab label=\"User\">\n Welcome in user managements\n </mat-tab>\n <mat-tab label=\"Translations\">\n Welcome in user managements\n </mat-tab> -->\n </mat-tab-group>\n </column>\n </columns-container>\n</ng-template>\n<!-- #endregion -->\n\n<!-- #region small/mobile draggable popup windows -->\n<div\n class=\"draggable-popup-mode-window\"\n *ngIf=\"\n admin.draggablePopupMode && !admin.draggablePopupModeFullScreen && !isIframe\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPosition\"\n (cdkDragEnded)=\"moved($event)\">\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </ng-scrollbar>\n</div>\n<!-- #endregion -->\n\n<!-- #region fullscreen draggable popup window -->\n<div\n class=\"draggable-popup-mode-window-full\"\n *ngIf=\"\n admin.draggablePopupMode &&\n admin.draggablePopupModeFullScreen &&\n !isIframe &&\n !reloading\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPositionZero\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n</div>\n<!-- #endregion -->\n\n<!-- #region content when not in draggable (or fullscreen draggable) popup -->\n<div\n [style.height.px]=\"height\"\n *ngIf=\"\n (isIframe ||\n !isDesktop ||\n admin.draggablePopupMode ||\n admin.draggablePopupModeFullScreen) &&\n !reloading\n \"\n style=\"width: 100%; display: block\"\n class=\"content\">\n <ng-container\n [ngTemplateOutlet]=\"\n admin.scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n</div>\n<!-- #endregion -->\n\n<!-- #region draggable popup window -->\n<mat-drawer-container\n *ngIf=\"!admin.draggablePopupMode && isDesktop && !isIframe\"\n class=\"example-container\"\n [style.height.px]=\"height\"\n style=\"background-color: transparent\"\n (backdropClick)=\"opened = false\"\n [hasBackdrop]=\"false\">\n <mat-drawer #drawer style=\"width: 580px\" [opened]=\"opened\" [mode]=\"'side'\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </mat-drawer>\n <mat-drawer-content style=\"overflow: hidden\">\n <ng-container\n *ngIf=\"!admin.draggablePopupMode && !reloading\"\n [ngTemplateOutlet]=\"\n admin.scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n </mat-drawer-content>\n</mat-drawer-container>\n<!-- #endregion -->\n", styles: ["section{display:block;padding:10px}section>*{margin-top:0!important;margin-bottom:10px!important}section>*:last-child{margin-bottom:0!important}:host{display:block}.draggable-column{display:block!important;width:100%!important}.admin-show-button{position:fixed;bottom:100px;left:-15px;z-index:2147483647;transform:rotate(90deg);border:0px;color:#fff;background:gray;opacity:.1;cursor:pointer}.admin-show-button:hover{opacity:1}.taon-ui-super-admin-mode{font-family:JosefinSans-Bold;text-align:right;margin-right:10px}mat-drawer{margin:0;background-color:#dcdcdc!important}.taon-header-admin-wrapper{overflow:hidden;width:100%;display:block}.taon-header-admin{background:#fff;box-shadow:0 -9px 6px 6px #000;height:47px}.taon-header-admin .logo-header img{height:18px;padding:8px;position:relative;float:left;top:7px;box-sizing:content-box;transform:scale(1.5);left:49px}.draggable-popup-mode-window{width:600px;height:500px;border:solid 1px #ccc;color:#000000de;cursor:move;justify-content:center;align-items:center;background:#fff;border-radius:4px;position:fixed;z-index:105;background-color:#dcdcdc!important;transition:box-shadow .2s cubic-bezier(0,0,.2,1);box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.draggable-popup-mode-window:active{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.draggable-popup-mode-window-full{width:100%;height:100%;overflow:scroll;color:#000000de;justify-content:center;align-items:center;background:#fff;border-radius:4px;position:fixed;z-index:105;background-color:#dcdcdc!important}.admin-close-button{float:right}.fab-button{position:fixed;right:110px;bottom:100px;z-index:10;background-color:#dcdcdc;color:#8f8f8f}.full-tabs{padding:10px}.mat-drawer-container-full-screen{background-color:red}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i1.ColumnsComponent, selector: "columns-container" }, { kind: "component", type: i1.ColumnComponent, selector: "column", inputs: ["width"] }, { kind: "directive", type: i1.DirectiveGrow, selector: "[grow]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.NgScrollbar, selector: "ng-scrollbar:not([externalViewport])", exportAs: ["ngScrollbar"] }, { kind: "directive", type: i5.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i6.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "component", type: i7.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i7.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i7.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i7.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "component", type: i8.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i10.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i10.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "component", type: i10.MatDrawerContent, selector: "mat-drawer-content" }, { kind: "component", type: i11.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i11.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: i12.TaonSessionPasscodeComponent, selector: "taon-session-passcode", inputs: ["passcode", "message"] }] }); }
143
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminModeConfigurationComponent, deps: [{ token: i1.BreakpointsService }, { token: i2.TaonAdminService }], target: i0.ɵɵFactoryTarget.Component }); }
144
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.5", type: TaonAdminModeConfigurationComponent, isStandalone: true, selector: "taon-admin-mode-configuration", inputs: { taonAdminModeConfigurationData: "taonAdminModeConfigurationData" }, outputs: { taonAdminModeConfigurationDataChanged: "taonAdminModeConfigurationDataChanged" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "tabGroup", first: true, predicate: ["tabGroup"], descendants: true }], ngImport: i0, template: "<!-- #region basic global components -->\n<taon-session-passcode\n *ngIf=\"showPasscode\"\n [passcode]=\"passcode\"\n [message]=\"message\" />\n<!-- <taon-progress-bar [isDesktop]=\"isDesktop\"></taon-progress-bar> -->\n<!-- <taon-notifications></taon-notifications> -->\n<button\n mat-fab\n class=\"fab-button\"\n color=\"accent\"\n aria-label=\"Taon Admin Mode\"\n *ngIf=\"\n !admin.draggablePopupMode &&\n isDesktop &&\n !isIframe &&\n !hideTaonToolsInProduction\n \"\n (click)=\"toogle()\">\n <mat-icon>build</mat-icon>\n</button>\n<!-- #endregion -->\n\n<!-- #region small hidden button -->\n<!-- <button class=\"admin-show-button\"\n *ngIf=\"!admin.draggablePopupMode && isDesktop\"\n (click)=\"toogle()\"> Admin </button> -->\n<!-- #endregion -->\n\n<ng-template #contentNoScroll>\n <ng-content> </ng-content>\n</ng-template>\n\n<ng-template #content>\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"contentNoScroll\"></ng-container>\n </ng-scrollbar>\n</ng-template>\n\n<!-- #region admin tabs -->\n<ng-template #adminTabs>\n <!-- #region admin tabs / header -->\n <div class=\"taon-header-admin-wrapper\">\n <columns-container\n class=\"taon-header-admin\"\n [ngClass]=\"{ 'draggable-column': admin.draggablePopupMode }\">\n <column\n width=\"200\"\n class=\"logo-header\">\n <img\n *ngIf=\"openedOnce\"\n src=\"assets/assets-for/taon/shared/logo-header-admin-mode.png\" />\n </column>\n\n <column grow>\n <!-- <span>Super Admin Mode</span> -->\n </column>\n\n <column\n width=\"40\"\n *ngIf=\"\n !admin.draggablePopupModeFullScreen && !admin.draggablePopupMode\n \">\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupMode\"\n (click)=\"\n admin.draggablePopupMode = false;\n opened = false;\n wasOpenDraggablePopup = true\n \"\n class=\"admin-close-button\">\n <mat-icon>close </mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupMode\"\n (click)=\"toogle()\"\n class=\"admin-close-button\">\n <mat-icon>close</mat-icon>\n </button>\n </column>\n\n <column width=\"40\">\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupModeFullScreen\"\n class=\"admin-close-button\"\n (click)=\"toogleFullScreen()\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupModeFullScreen\"\n class=\"admin-close-button\"\n (click)=\"toogleFullScreen()\">\n <mat-icon>close_fullscreen</mat-icon>\n </button>\n </column>\n\n <column\n width=\"40\"\n *ngIf=\"!admin.draggablePopupModeFullScreen\">\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupMode\"\n (click)=\"admin.draggablePopupMode = true\"\n class=\"admin-close-button\">\n <mat-icon>launch</mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupMode\"\n (click)=\"admin.draggablePopupMode = false; resetDrag()\"\n class=\"admin-close-button\">\n <mat-icon style=\"transform: rotate(180deg)\">login</mat-icon>\n </button>\n </column>\n </columns-container>\n </div>\n <!-- #endregion -->\n\n <columns-container\n [ngClass]=\"{ 'draggable-column': admin.draggablePopupMode }\">\n <column grow>\n <mat-tab-group\n dynamicHeight\n (wheel)=\"scrollTabs($event)\"\n #tabGroup\n [selectedIndex]=\"selectedIndex\"\n (selectedIndexChange)=\"selectedIndex = $event\">\n <mat-tab label=\"DB/Cache\">\n <section>\n <mat-card>\n <mat-card-header>\n <mat-card-subtitle>WEBSQL MODE</mat-card-subtitle>\n </mat-card-header>\n <mat-card-content>\n <mat-checkbox\n [disabled]=\"!isWebSQLMode\"\n [ngModel]=\"admin.keepWebsqlDbDataAfterReload\"\n (change)=\"\n admin.setKeepWebsqlDbDataAfterReload($event.checked)\n \">\n Don't remove data when reloading\n </mat-checkbox>\n </mat-card-content>\n </mat-card>\n </section>\n <br />\n <taon-db-admin />\n </mat-tab>\n </mat-tab-group>\n </column>\n </columns-container>\n</ng-template>\n<!-- #endregion -->\n\n<!-- #region small/mobile draggable popup windows -->\n<div\n class=\"draggable-popup-mode-window\"\n *ngIf=\"\n admin.draggablePopupMode && !admin.draggablePopupModeFullScreen && !isIframe\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPosition\"\n (cdkDragEnded)=\"moved($event)\">\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </ng-scrollbar>\n</div>\n<!-- #endregion -->\n\n<!-- #region fullscreen draggable popup window -->\n<div\n class=\"draggable-popup-mode-window-full\"\n *ngIf=\"\n admin.draggablePopupMode &&\n admin.draggablePopupModeFullScreen &&\n !isIframe &&\n !reloading\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPositionZero\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n</div>\n<!-- #endregion -->\n\n<!-- #region content when not in draggable (or fullscreen draggable) popup -->\n<div\n [style.height.px]=\"height\"\n *ngIf=\"\n (isIframe ||\n !isDesktop ||\n admin.draggablePopupMode ||\n admin.draggablePopupModeFullScreen) &&\n !reloading\n \"\n style=\"width: 100%; display: block\"\n class=\"content\">\n <ng-container\n [ngTemplateOutlet]=\"\n admin.scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n</div>\n<!-- #endregion -->\n\n<!-- #region draggable popup window -->\n<mat-drawer-container\n *ngIf=\"!admin.draggablePopupMode && isDesktop && !isIframe\"\n class=\"example-container\"\n [style.height.px]=\"height\"\n style=\"background-color: transparent\"\n (backdropClick)=\"opened = false\"\n [hasBackdrop]=\"false\">\n <mat-drawer\n #drawer\n style=\"width: 580px\"\n [opened]=\"opened\"\n [mode]=\"'side'\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </mat-drawer>\n <mat-drawer-content style=\"overflow: hidden\">\n <ng-container\n *ngIf=\"!admin.draggablePopupMode && !reloading\"\n [ngTemplateOutlet]=\"\n admin.scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n </mat-drawer-content>\n</mat-drawer-container>\n<!-- #endregion -->\n", styles: ["section{display:block;padding:10px}section>*{margin-top:0!important;margin-bottom:10px!important}section>*:last-child{margin-bottom:0!important}:host{display:block}.draggable-column{display:block!important;width:100%!important}.admin-show-button{position:fixed;bottom:100px;left:-15px;z-index:2147483647;transform:rotate(90deg);border:0px;color:#fff;background:gray;opacity:.1;cursor:pointer}.admin-show-button:hover{opacity:1}.taon-ui-super-admin-mode{font-family:JosefinSans-Bold;text-align:right;margin-right:10px}mat-drawer{margin:0;background-color:#dcdcdc!important}.taon-header-admin-wrapper{overflow:hidden;width:100%;display:block}.taon-header-admin{background:#fff;box-shadow:0 -9px 6px 6px #000;height:47px}.taon-header-admin .logo-header img{height:18px;padding:8px;position:relative;float:left;top:7px;box-sizing:content-box;transform:scale(1.5);left:49px}.draggable-popup-mode-window{width:600px;height:500px;border:solid 1px #ccc;color:#000000de;cursor:move;justify-content:center;align-items:center;background:#fff;border-radius:4px;position:fixed;z-index:105;background-color:#dcdcdc!important;transition:box-shadow .2s cubic-bezier(0,0,.2,1);box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.draggable-popup-mode-window:active{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.draggable-popup-mode-window-full{width:100%;height:100%;overflow:scroll;color:#000000de;justify-content:center;align-items:center;background:#fff;border-radius:4px;position:fixed;z-index:105;background-color:#dcdcdc!important}.admin-close-button{float:right}.fab-button{position:fixed;right:110px;bottom:100px;z-index:10;background-color:#dcdcdc;color:#8f8f8f}.full-tabs{padding:10px}.mat-drawer-container-full-screen{background-color:red}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: StaticColumnsModule }, { kind: "component", type: i1.ColumnsComponent, selector: "columns-container" }, { kind: "component", type: i1.ColumnComponent, selector: "column", inputs: ["width"] }, { kind: "directive", type: i1.DirectiveGrow, selector: "[grow]" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: NgScrollbarModule }, { kind: "component", type: i5.NgScrollbar, selector: "ng-scrollbar:not([externalViewport])", exportAs: ["ngScrollbar"] }, { kind: "ngmodule", type: TaonProgressBarModule }, { kind: "ngmodule", type: TaonNotificationsModule }, { kind: "ngmodule", type: TaonFullMaterialModule }, { kind: "directive", type: i6.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i7.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i7.MatFabButton, selector: "button[mat-fab]", inputs: ["extended"], exportAs: ["matButton"] }, { kind: "component", type: i8.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i8.MatCardContent, selector: "mat-card-content" }, { kind: "component", type: i8.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i8.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "component", type: i9.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "component", type: i10.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i11.MatDrawer, selector: "mat-drawer", inputs: ["position", "mode", "disableClose", "autoFocus", "opened"], outputs: ["openedChange", "opened", "openedStart", "closed", "closedStart", "positionChanged"], exportAs: ["matDrawer"] }, { kind: "component", type: i11.MatDrawerContainer, selector: "mat-drawer-container", inputs: ["autosize", "hasBackdrop"], outputs: ["backdropClick"], exportAs: ["matDrawerContainer"] }, { kind: "component", type: i11.MatDrawerContent, selector: "mat-drawer-content" }, { kind: "component", type: i12.MatTab, selector: "mat-tab", inputs: ["disabled", "label", "aria-label", "aria-labelledby", "labelClass", "bodyClass"], exportAs: ["matTab"] }, { kind: "component", type: i12.MatTabGroup, selector: "mat-tab-group", inputs: ["color", "fitInkBarToContent", "mat-stretch-tabs", "dynamicHeight", "selectedIndex", "headerPosition", "animationDuration", "contentTabIndex", "disablePagination", "disableRipple", "preserveContent", "backgroundColor", "aria-label", "aria-labelledby"], outputs: ["selectedIndexChange", "focusChange", "animationDone", "selectedTabChange"], exportAs: ["matTabGroup"] }, { kind: "component", type: // TODO import only partial things
145
+ TaonSessionPasscodeComponent, selector: "taon-session-passcode", inputs: ["passcode", "message"] }] }); }
137
146
  }
138
147
  __decorate([
139
- Stor.property.in.localstorage
148
+ (Stor.property.in.localstorage
140
149
  .for(TaonAdminModeConfigurationComponent)
141
- .withDefaultValue(0),
150
+ .withDefaultValue(0)),
142
151
  __metadata("design:type", Number)
143
152
  ], TaonAdminModeConfigurationComponent.prototype, "dragPositionX", void 0);
144
153
  __decorate([
145
- Stor.property.in.localstorage
154
+ (Stor.property.in.localstorage
146
155
  .for(TaonAdminModeConfigurationComponent)
147
- .withDefaultValue(0),
156
+ .withDefaultValue(0)),
148
157
  __metadata("design:type", Number)
149
158
  ], TaonAdminModeConfigurationComponent.prototype, "dragPositionY", void 0);
150
159
  __decorate([
151
- Stor.property.in.localstorage
160
+ (Stor.property.in.localstorage
152
161
  .for(TaonAdminModeConfigurationComponent)
153
- .withDefaultValue(0),
162
+ .withDefaultValue(0)),
154
163
  __metadata("design:type", Number)
155
164
  ], TaonAdminModeConfigurationComponent.prototype, "selectedIndex", void 0);
156
165
  __decorate([
157
- Stor.property.in.localstorage
166
+ (Stor.property.in.localstorage
158
167
  .for(TaonAdminModeConfigurationComponent)
159
- .withDefaultValue(false),
168
+ .withDefaultValue(false)),
160
169
  __metadata("design:type", Boolean)
161
170
  ], TaonAdminModeConfigurationComponent.prototype, "wasOpenDraggablePopup", void 0);
162
171
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminModeConfigurationComponent, decorators: [{
163
172
  type: Component,
164
- args: [{ selector: 'app-taon-admin-mode-configuration', template: "<!-- #region basic global components -->\n<taon-session-passcode\n *ngIf=\"showPasscode\"\n [passcode]=\"passcode\"\n [message]=\"message\" />\n<!-- <taon-progress-bar [isDesktop]=\"isDesktop\"></taon-progress-bar> -->\n<!-- <taon-notifications></taon-notifications> -->\n<button\n mat-fab\n class=\"fab-button\"\n color=\"accent\"\n aria-label=\"Taon Admin Mode\"\n *ngIf=\"\n !admin.draggablePopupMode &&\n isDesktop &&\n !isIframe &&\n !hideTaonToolsInProduction\n \"\n (click)=\"toogle()\">\n <mat-icon>build</mat-icon>\n</button>\n<!-- #endregion -->\n\n<!-- #region small hidden button -->\n<!-- <button class=\"admin-show-button\"\n *ngIf=\"!admin.draggablePopupMode && isDesktop\"\n (click)=\"toogle()\"> Admin </button> -->\n<!-- #endregion -->\n\n<ng-template #contentNoScroll>\n <ng-content> </ng-content>\n</ng-template>\n\n<ng-template #content>\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"contentNoScroll\"></ng-container>\n </ng-scrollbar>\n</ng-template>\n\n<!-- #region admin tabs -->\n<ng-template #adminTabs>\n <div class=\"taon-header-admin-wrapper\">\n <columns-container\n class=\"taon-header-admin\"\n [ngClass]=\"{ 'draggable-column': admin.draggablePopupMode }\">\n <column width=\"200\" class=\"logo-header\">\n <img\n *ngIf=\"openedOnce\"\n src=\"assets/assets-for/taon/shared/logo-header-admin-mode.png\" />\n </column>\n\n <column grow>\n <!-- <span>Super Admin Mode</span> -->\n </column>\n\n <column\n width=\"40\"\n *ngIf=\"\n !admin.draggablePopupModeFullScreen && !admin.draggablePopupMode\n \">\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupMode\"\n (click)=\"\n admin.draggablePopupMode = false;\n opened = false;\n wasOpenDraggablePopup = true\n \"\n class=\"admin-close-button\">\n <mat-icon>close </mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupMode\"\n (click)=\"toogle()\"\n class=\"admin-close-button\">\n <mat-icon>close</mat-icon>\n </button>\n </column>\n\n <column width=\"40\">\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupModeFullScreen\"\n class=\"admin-close-button\"\n (click)=\"toogleFullScreen()\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupModeFullScreen\"\n class=\"admin-close-button\"\n (click)=\"toogleFullScreen()\">\n <mat-icon>close_fullscreen</mat-icon>\n </button>\n </column>\n\n <column width=\"40\" *ngIf=\"!admin.draggablePopupModeFullScreen\">\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupMode\"\n (click)=\"admin.draggablePopupMode = true\"\n class=\"admin-close-button\">\n <mat-icon>launch</mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupMode\"\n (click)=\"admin.draggablePopupMode = false; resetDrag()\"\n class=\"admin-close-button\">\n <mat-icon style=\"transform: rotate(180deg)\">login</mat-icon>\n </button>\n </column>\n </columns-container>\n </div>\n\n <columns-container\n [ngClass]=\"{ 'draggable-column': admin.draggablePopupMode }\">\n <column grow>\n <mat-tab-group\n dynamicHeight\n (wheel)=\"scrollTabs($event)\"\n #tabGroup\n [selectedIndex]=\"selectedIndex\"\n (selectedIndexChange)=\"selectedIndex = $event\">\n <mat-tab label=\"DB/Cache\">\n <section>\n <mat-card>\n <mat-card-header>\n <mat-card-subtitle>WEBSQL MODE</mat-card-subtitle>\n </mat-card-header>\n <mat-card-content>\n <mat-checkbox\n [disabled]=\"!isWebSQLMode\"\n [ngModel]=\"admin.keepWebsqlDbDataAfterReload\"\n (change)=\"\n admin.setKeepWebsqlDbDataAfterReload($event.checked)\n \">\n Don't remove data when reloading\n </mat-checkbox>\n </mat-card-content>\n </mat-card>\n </section>\n <br />\n <taon-db-admin />\n </mat-tab>\n\n <mat-tab label=\"Files\" *ngIf=\"admin.enabledTabs.includes('files')\">\n <section>\n <mat-checkbox\n [ngModel]=\"admin.filesEditMode\"\n (change)=\"admin.setEditMode($event.checked)\"\n >Edit mode</mat-checkbox\n >\n </section>\n <!-- admin.filesEditMode: {{ admin.filesEditMode }} -->\n <!-- <taon-admin-edit-mode *ngIf=\"admin.filesEditMode\">\n </taon-admin-edit-mode> -->\n <br />\n <hr *ngIf=\"admin.filesEditMode\" />\n <!-- <section>\n <button mat-raised-button>[TODO] Clear Files from browser cache </button> <br>\n <button mat-raised-button>[TODO] Start files export (as zip) </button> <br>\n <button mat-raised-button>[TODO] Import whole database (from zip) </button><br>\n </section> -->\n </mat-tab>\n <mat-tab *ngFor=\"let tab of tabs\" label=\"{{ tab.name }}\">\n <div\n class=\"full-tabs\"\n [style.height.px]=\"height - 150\"\n *ngIf=\"!isIframe\">\n <ng-container *ngTemplateOutlet=\"tab.template\"></ng-container>\n </div>\n <ng-container *ngIf=\"isIframe\">\n <ng-container *ngTemplateOutlet=\"tab.template\"></ng-container>\n </ng-container>\n </mat-tab>\n\n <!-- <mat-tab label=\"Portal\">\n <section>\n <mat-checkbox>[TODO] Maintenance Mode for whole portal</mat-checkbox>\n\n <mat-expansion-panel>\n\n <mat-expansion-panel-header>\n [TODO] Active User: 80432\n </mat-expansion-panel-header>\n <section>\n <button mat-raised-button>[TODO] Send notification to users </button><br>\n <button mat-raised-button>[TODO] Send email to users </button><br>\n </section>\n </mat-expansion-panel>\n <mat-expansion-panel>\n <mat-expansion-panel-header>\n [TODO] Enable features\n </mat-expansion-panel-header>\n <mat-checkbox>[TODO] AB testing</mat-checkbox> <br>\n <mat-checkbox>\n [TODO] Newsletter email question popup\n </mat-checkbox> <br>\n <mat-checkbox>\n [TODO] Promotion popup\n </mat-checkbox> <br>\n </mat-expansion-panel>\n </section>\n </mat-tab>\n <mat-tab label=\"User\">\n Welcome in user managements\n </mat-tab>\n <mat-tab label=\"Translations\">\n Welcome in user managements\n </mat-tab> -->\n </mat-tab-group>\n </column>\n </columns-container>\n</ng-template>\n<!-- #endregion -->\n\n<!-- #region small/mobile draggable popup windows -->\n<div\n class=\"draggable-popup-mode-window\"\n *ngIf=\"\n admin.draggablePopupMode && !admin.draggablePopupModeFullScreen && !isIframe\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPosition\"\n (cdkDragEnded)=\"moved($event)\">\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </ng-scrollbar>\n</div>\n<!-- #endregion -->\n\n<!-- #region fullscreen draggable popup window -->\n<div\n class=\"draggable-popup-mode-window-full\"\n *ngIf=\"\n admin.draggablePopupMode &&\n admin.draggablePopupModeFullScreen &&\n !isIframe &&\n !reloading\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPositionZero\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n</div>\n<!-- #endregion -->\n\n<!-- #region content when not in draggable (or fullscreen draggable) popup -->\n<div\n [style.height.px]=\"height\"\n *ngIf=\"\n (isIframe ||\n !isDesktop ||\n admin.draggablePopupMode ||\n admin.draggablePopupModeFullScreen) &&\n !reloading\n \"\n style=\"width: 100%; display: block\"\n class=\"content\">\n <ng-container\n [ngTemplateOutlet]=\"\n admin.scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n</div>\n<!-- #endregion -->\n\n<!-- #region draggable popup window -->\n<mat-drawer-container\n *ngIf=\"!admin.draggablePopupMode && isDesktop && !isIframe\"\n class=\"example-container\"\n [style.height.px]=\"height\"\n style=\"background-color: transparent\"\n (backdropClick)=\"opened = false\"\n [hasBackdrop]=\"false\">\n <mat-drawer #drawer style=\"width: 580px\" [opened]=\"opened\" [mode]=\"'side'\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </mat-drawer>\n <mat-drawer-content style=\"overflow: hidden\">\n <ng-container\n *ngIf=\"!admin.draggablePopupMode && !reloading\"\n [ngTemplateOutlet]=\"\n admin.scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n </mat-drawer-content>\n</mat-drawer-container>\n<!-- #endregion -->\n", styles: ["section{display:block;padding:10px}section>*{margin-top:0!important;margin-bottom:10px!important}section>*:last-child{margin-bottom:0!important}:host{display:block}.draggable-column{display:block!important;width:100%!important}.admin-show-button{position:fixed;bottom:100px;left:-15px;z-index:2147483647;transform:rotate(90deg);border:0px;color:#fff;background:gray;opacity:.1;cursor:pointer}.admin-show-button:hover{opacity:1}.taon-ui-super-admin-mode{font-family:JosefinSans-Bold;text-align:right;margin-right:10px}mat-drawer{margin:0;background-color:#dcdcdc!important}.taon-header-admin-wrapper{overflow:hidden;width:100%;display:block}.taon-header-admin{background:#fff;box-shadow:0 -9px 6px 6px #000;height:47px}.taon-header-admin .logo-header img{height:18px;padding:8px;position:relative;float:left;top:7px;box-sizing:content-box;transform:scale(1.5);left:49px}.draggable-popup-mode-window{width:600px;height:500px;border:solid 1px #ccc;color:#000000de;cursor:move;justify-content:center;align-items:center;background:#fff;border-radius:4px;position:fixed;z-index:105;background-color:#dcdcdc!important;transition:box-shadow .2s cubic-bezier(0,0,.2,1);box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.draggable-popup-mode-window:active{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.draggable-popup-mode-window-full{width:100%;height:100%;overflow:scroll;color:#000000de;justify-content:center;align-items:center;background:#fff;border-radius:4px;position:fixed;z-index:105;background-color:#dcdcdc!important}.admin-close-button{float:right}.fab-button{position:fixed;right:110px;bottom:100px;z-index:10;background-color:#dcdcdc;color:#8f8f8f}.full-tabs{padding:10px}.mat-drawer-container-full-screen{background-color:red}\n"] }]
165
- }], ctorParameters: () => [{ type: i1.BreakpointsService }], propDecorators: { tabGroup: [{
173
+ args: [{ selector: 'taon-admin-mode-configuration', standalone: true, imports: [
174
+ CommonModule,
175
+ StaticColumnsModule,
176
+ FormsModule,
177
+ NgScrollbarModule,
178
+ TaonProgressBarModule,
179
+ TaonNotificationsModule,
180
+ TaonFullMaterialModule, // TODO import only partial things
181
+ TaonSessionPasscodeComponent,
182
+ ], template: "<!-- #region basic global components -->\n<taon-session-passcode\n *ngIf=\"showPasscode\"\n [passcode]=\"passcode\"\n [message]=\"message\" />\n<!-- <taon-progress-bar [isDesktop]=\"isDesktop\"></taon-progress-bar> -->\n<!-- <taon-notifications></taon-notifications> -->\n<button\n mat-fab\n class=\"fab-button\"\n color=\"accent\"\n aria-label=\"Taon Admin Mode\"\n *ngIf=\"\n !admin.draggablePopupMode &&\n isDesktop &&\n !isIframe &&\n !hideTaonToolsInProduction\n \"\n (click)=\"toogle()\">\n <mat-icon>build</mat-icon>\n</button>\n<!-- #endregion -->\n\n<!-- #region small hidden button -->\n<!-- <button class=\"admin-show-button\"\n *ngIf=\"!admin.draggablePopupMode && isDesktop\"\n (click)=\"toogle()\"> Admin </button> -->\n<!-- #endregion -->\n\n<ng-template #contentNoScroll>\n <ng-content> </ng-content>\n</ng-template>\n\n<ng-template #content>\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"contentNoScroll\"></ng-container>\n </ng-scrollbar>\n</ng-template>\n\n<!-- #region admin tabs -->\n<ng-template #adminTabs>\n <!-- #region admin tabs / header -->\n <div class=\"taon-header-admin-wrapper\">\n <columns-container\n class=\"taon-header-admin\"\n [ngClass]=\"{ 'draggable-column': admin.draggablePopupMode }\">\n <column\n width=\"200\"\n class=\"logo-header\">\n <img\n *ngIf=\"openedOnce\"\n src=\"assets/assets-for/taon/shared/logo-header-admin-mode.png\" />\n </column>\n\n <column grow>\n <!-- <span>Super Admin Mode</span> -->\n </column>\n\n <column\n width=\"40\"\n *ngIf=\"\n !admin.draggablePopupModeFullScreen && !admin.draggablePopupMode\n \">\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupMode\"\n (click)=\"\n admin.draggablePopupMode = false;\n opened = false;\n wasOpenDraggablePopup = true\n \"\n class=\"admin-close-button\">\n <mat-icon>close </mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupMode\"\n (click)=\"toogle()\"\n class=\"admin-close-button\">\n <mat-icon>close</mat-icon>\n </button>\n </column>\n\n <column width=\"40\">\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupModeFullScreen\"\n class=\"admin-close-button\"\n (click)=\"toogleFullScreen()\">\n <mat-icon>fullscreen</mat-icon>\n </button>\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupModeFullScreen\"\n class=\"admin-close-button\"\n (click)=\"toogleFullScreen()\">\n <mat-icon>close_fullscreen</mat-icon>\n </button>\n </column>\n\n <column\n width=\"40\"\n *ngIf=\"!admin.draggablePopupModeFullScreen\">\n <button\n mat-icon-button\n *ngIf=\"!admin.draggablePopupMode\"\n (click)=\"admin.draggablePopupMode = true\"\n class=\"admin-close-button\">\n <mat-icon>launch</mat-icon>\n </button>\n\n <button\n mat-icon-button\n *ngIf=\"admin.draggablePopupMode\"\n (click)=\"admin.draggablePopupMode = false; resetDrag()\"\n class=\"admin-close-button\">\n <mat-icon style=\"transform: rotate(180deg)\">login</mat-icon>\n </button>\n </column>\n </columns-container>\n </div>\n <!-- #endregion -->\n\n <columns-container\n [ngClass]=\"{ 'draggable-column': admin.draggablePopupMode }\">\n <column grow>\n <mat-tab-group\n dynamicHeight\n (wheel)=\"scrollTabs($event)\"\n #tabGroup\n [selectedIndex]=\"selectedIndex\"\n (selectedIndexChange)=\"selectedIndex = $event\">\n <mat-tab label=\"DB/Cache\">\n <section>\n <mat-card>\n <mat-card-header>\n <mat-card-subtitle>WEBSQL MODE</mat-card-subtitle>\n </mat-card-header>\n <mat-card-content>\n <mat-checkbox\n [disabled]=\"!isWebSQLMode\"\n [ngModel]=\"admin.keepWebsqlDbDataAfterReload\"\n (change)=\"\n admin.setKeepWebsqlDbDataAfterReload($event.checked)\n \">\n Don't remove data when reloading\n </mat-checkbox>\n </mat-card-content>\n </mat-card>\n </section>\n <br />\n <taon-db-admin />\n </mat-tab>\n </mat-tab-group>\n </column>\n </columns-container>\n</ng-template>\n<!-- #endregion -->\n\n<!-- #region small/mobile draggable popup windows -->\n<div\n class=\"draggable-popup-mode-window\"\n *ngIf=\"\n admin.draggablePopupMode && !admin.draggablePopupModeFullScreen && !isIframe\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPosition\"\n (cdkDragEnded)=\"moved($event)\">\n <ng-scrollbar>\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </ng-scrollbar>\n</div>\n<!-- #endregion -->\n\n<!-- #region fullscreen draggable popup window -->\n<div\n class=\"draggable-popup-mode-window-full\"\n *ngIf=\"\n admin.draggablePopupMode &&\n admin.draggablePopupModeFullScreen &&\n !isIframe &&\n !reloading\n \"\n cdkDrag\n [cdkDragFreeDragPosition]=\"dragPositionZero\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n</div>\n<!-- #endregion -->\n\n<!-- #region content when not in draggable (or fullscreen draggable) popup -->\n<div\n [style.height.px]=\"height\"\n *ngIf=\"\n (isIframe ||\n !isDesktop ||\n admin.draggablePopupMode ||\n admin.draggablePopupModeFullScreen) &&\n !reloading\n \"\n style=\"width: 100%; display: block\"\n class=\"content\">\n <ng-container\n [ngTemplateOutlet]=\"\n admin.scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n</div>\n<!-- #endregion -->\n\n<!-- #region draggable popup window -->\n<mat-drawer-container\n *ngIf=\"!admin.draggablePopupMode && isDesktop && !isIframe\"\n class=\"example-container\"\n [style.height.px]=\"height\"\n style=\"background-color: transparent\"\n (backdropClick)=\"opened = false\"\n [hasBackdrop]=\"false\">\n <mat-drawer\n #drawer\n style=\"width: 580px\"\n [opened]=\"opened\"\n [mode]=\"'side'\">\n <ng-container [ngTemplateOutlet]=\"adminTabs\"></ng-container>\n </mat-drawer>\n <mat-drawer-content style=\"overflow: hidden\">\n <ng-container\n *ngIf=\"!admin.draggablePopupMode && !reloading\"\n [ngTemplateOutlet]=\"\n admin.scrollableEnabled ? content : contentNoScroll\n \"></ng-container>\n </mat-drawer-content>\n</mat-drawer-container>\n<!-- #endregion -->\n", styles: ["section{display:block;padding:10px}section>*{margin-top:0!important;margin-bottom:10px!important}section>*:last-child{margin-bottom:0!important}:host{display:block}.draggable-column{display:block!important;width:100%!important}.admin-show-button{position:fixed;bottom:100px;left:-15px;z-index:2147483647;transform:rotate(90deg);border:0px;color:#fff;background:gray;opacity:.1;cursor:pointer}.admin-show-button:hover{opacity:1}.taon-ui-super-admin-mode{font-family:JosefinSans-Bold;text-align:right;margin-right:10px}mat-drawer{margin:0;background-color:#dcdcdc!important}.taon-header-admin-wrapper{overflow:hidden;width:100%;display:block}.taon-header-admin{background:#fff;box-shadow:0 -9px 6px 6px #000;height:47px}.taon-header-admin .logo-header img{height:18px;padding:8px;position:relative;float:left;top:7px;box-sizing:content-box;transform:scale(1.5);left:49px}.draggable-popup-mode-window{width:600px;height:500px;border:solid 1px #ccc;color:#000000de;cursor:move;justify-content:center;align-items:center;background:#fff;border-radius:4px;position:fixed;z-index:105;background-color:#dcdcdc!important;transition:box-shadow .2s cubic-bezier(0,0,.2,1);box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.draggable-popup-mode-window:active{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.draggable-popup-mode-window-full{width:100%;height:100%;overflow:scroll;color:#000000de;justify-content:center;align-items:center;background:#fff;border-radius:4px;position:fixed;z-index:105;background-color:#dcdcdc!important}.admin-close-button{float:right}.fab-button{position:fixed;right:110px;bottom:100px;z-index:10;background-color:#dcdcdc;color:#8f8f8f}.full-tabs{padding:10px}.mat-drawer-container-full-screen{background-color:red}\n"] }]
183
+ }], ctorParameters: () => [{ type: i1.BreakpointsService }, { type: i2.TaonAdminService }], propDecorators: { tabGroup: [{
166
184
  type: ViewChild,
167
185
  args: ['tabGroup']
168
186
  }], taonAdminModeConfigurationDataChanged: [{
@@ -175,4 +193,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
175
193
  }] } });
176
194
  ;
177
195
  ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/taon-admin-mode-configuration.component.ts
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFvbi1hZG1pbi1tb2RlLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3Rhb24vcHJvamVjdHMvdGFvbi9zcmMvbGliL3VpL3Rhb24tYWRtaW4tbW9kZS1jb25maWd1cmF0aW9uL3Rhb24tYWRtaW4tbW9kZS1jb25maWd1cmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0LXdlYnNxbC90YW9uL3Byb2plY3RzL3Rhb24vc3JjL2xpYi91aS90YW9uLWFkbWluLW1vZGUtY29uZmlndXJhdGlvbi90YW9uLWFkbWluLW1vZGUtY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBS0EsT0FBTyxFQUFJLGlCQUFpQixFQUFJLFNBQVMsRUFBSSxZQUFZLEVBQUksWUFBWSxFQUFnQixLQUFLLEVBQWMsTUFBTSxFQUFJLFNBQVMsRUFBSSxNQUFNLEdBQUcsTUFBTSxlQUFlLENBQUMsQ0FBQSxLQUFLO0FBQ3ZLLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFFTCxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUzQyxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUVMLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFPLE1BQU0sTUFBTSxDQUFDO0FBRS9DLE9BQU8sRUFBRSxnQkFB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WTtTQUMzQixHQUFHLENBQUMsbUNBQW1DLENBQUM7U0FDeEMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDOzswRUFDQTtBQVF0QjtJQUhDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFlBQVk7U0FDM0IsR0FBRyxDQUFDLG1DQUFtQyxDQUFDO1NBQ3hDLGdCQUFnQixDQUFDLEtBQUssQ0FBQzs7a0ZBQ0s7MkZBckRwQixtQ0FBbUM7a0JBUC9DLFNBQVM7K0JBRUUsbUNBQW1DO3VGQW9EdEIsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQVFYLHFDQUFxQztzQkFBOUMsTUFBTTtnQkFDRSw4QkFBOEI7c0JBQXRDLEtBQUs7Z0JBNkVOLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0FBa0QxQyxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGlIQUFpSCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cblxuXG5pbXBvcnQgeyAgIENoYW5nZURldGVjdG9yUmVmLCAgIENvbXBvbmVudCwgICBFdmVudEVtaXR0ZXIsICAgSG9zdExpc3RlbmVyLCAgIEluamVjdG9yLCAgIElucHV0LCAgIE9uSW5pdCwgICBPdXRwdXQsICAgVmlld0NoaWxkLCAgIGluamVjdCwgfSBmcm9tICdAYW5ndWxhci9jb3JlJzsvKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cblxuaW1wb3J0IHsgSGVscGVycywgXyB9IGZyb20gJ3RucC1jb3JlL3dlYnNxbCc7XG5pbXBvcnQgeyBUYW9uQWRtaW4gfSBmcm9tICcuL3Rhb24tYWRtaW4uc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yIH0gZnJvbSAndGFvbi1zdG9yYWdlL3dlYnNxbCc7XG5pbXBvcnQgeyAgIENka0RyYWcsICAgQ2RrRHJhZ0VuZCwgICBDZGtEcmFnTW92ZSwgICBDZGtEcmFnUmVsZWFzZSwgICBQb2ludCwgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJzsvKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG5cbmltcG9ydCB7IEJyZWFrcG9pbnRzU2VydmljZSB9IGZyb20gJ3N0YXRpYy1jb2x1bW5zL3dlYnNxbCc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgVGFvbkFkbWluTW9kZVRhYiB9IGZyb20gJy4vbW9kZWxzL3Rhb24tYWRtaW4tbW9kZS10YWJzJztcbmltcG9ydCB7IFRhb25BZG1pblNlcnZpY2UgfSBmcm9tICcuL3Rhb24tYWRtaW4tY29udHJvbC5zZXJ2aWNlJztcblxuZGVjbGFyZSBjb25zdCBFTlY6IGFueTtcblxuXG5AQ29tcG9uZW50KHtcblxuICBzZWxlY3RvcjogJ2FwcC10YW9uLWFkbWluLW1vZGUtY29uZmlndXJhdGlvbicsXG4gIHRlbXBsYXRlVXJsOiAnLi90YW9uLWFkbWluLW1vZGUtY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Rhb24tYWRtaW4tbW9kZS1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG5cbn0pXG5leHBvcnQgY2xhc3MgVGFvbkFkbWluTW9kZUNvbmZpZ3VyYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICRkZXN0cm95ID0gbmV3IFN1YmplY3QoKTtcbiAgcHVibGljIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gIHB1YmxpYyByZWFkb25seSB0YW9uQWRtaW5TZXJ2aWNlID0gaW5qZWN0KFRhb25BZG1pblNlcnZpY2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNEZXNrdG9wOiBib29sZWFuO1xuICBwdWJsaWMgdGFiczogVGFvbkFkbWluTW9kZVRhYltdID0gW107XG4gIHB1YmxpYyBhZG1pbjogVGFvbkFkbWluID0gd2luZG93Wyd0YW9uJ10gYXMgVGFvbkFkbWluO1xuICBwdWJsaWMgaXNXZWJTUUxNb2RlOiBib29sZWFuID0gSGVscGVycy5pc1dlYlNRTDtcbiAgcHVibGljIGhpZGVUYW9uVG9vbHNJblByb2R1Y3Rpb246IGJvb2xlYW4gPVxuICAgIEVOVi5oaWRlVGFvblRvb2xzSW5Qcm9kdWN0aW9uICYmIEVOVi5hbmd1bGFyUHJvZDtcbiAgcHVibGljIGlzSWZyYW1lOiBib29sZWFuID0gd2luZG93LmxvY2F0aW9uICE9PSB3aW5kb3cucGFyZW50LmxvY2F0aW9uO1xuICBwdWJsaWMgaGVpZ2h0OiBudW1iZXIgPSAxMDA7XG4gIHB1YmxpYyBvcGVuZWRPbmNlID0gZmFsc2U7XG4gIHB1YmxpYyByZWxvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHNob3dQYXNzY29kZTogYm9vbGVhbiA9XG4gICAgXy5pc1N0cmluZyhFTlYucGFzc2NvZGUpIHx8IF8uaXNPYmplY3QoRU5WLnBhc3Njb2RlKTtcbiAgcHVibGljIHBhc3Njb2RlOiBzdHJpbmcgPSBfLmlzU3RyaW5nKEVOVi5wYXNzY29kZSlcbiAgICA/IEVOVi5wYXNzY29kZVxuICAgIDogXy5pc09iamVjdChFTlYucGFzc2NvZGUpXG4gICAgICA/IEVOVi5wYXNzY29kZS5jb2RlXG4gICAgICA6ICcnO1xuICBwdWJsaWMgbWVzc2FnZTogc3RyaW5nID0gXy5pc09iamVjdChFTlYucGFzc2NvZGUpXG4gICAgPyBFTlYucGFzc2NvZGUubWVzc2FnZVxuICAgIDogdm9pZCAwO1xuXG4gIC8vIEB0cy1pZ25vcmVcbiAgQFN0b3IucHJvcGVydHkuaW4ubG9jYWxzdG9yYWdlXG4gICAgLmZvcihUYW9uQWRtaW5Nb2RlQ29uZmlndXJhdGlvbkNvbXBvbmVudClcbiAgICAud2l0aERlZmF1bHRWYWx1ZSgwKVxuICBkcmFnUG9zaXRpb25YOiBudW1iZXI7XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBAU3Rvci5wcm9wZXJ0eS5pbi5sb2NhbHN0b3JhZ2VcbiAgICAuZm9yKFRhb25BZG1pbk1vZGVDb25maWd1cmF0aW9uQ29tcG9uZW50KVxuICAgIC53aXRoRGVmYXVsdFZhbHVlKDApXG4gIGRyYWdQb3NpdGlvblk6IG51bWJlcjtcblxuICBkcmFnUG9zaXRpb25aZXJvID0geyB4OiAwLCB5OiAwIH0gYXMgUG9pbnQ7XG4gIGRyYWdQb3NpdGlvbjogUG9pbnQ7XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBAU3Rvci5wcm9wZXJ0eS5pbi5sb2NhbHN0b3JhZ2VcbiAgICAuZm9yKFRhb25BZG1pbk1vZGVDb25maWd1cmF0aW9uQ29tcG9uZW50KVxuICAgIC53aXRoRGVmYXVsdFZhbHVlKDApXG4gIHNlbGVjdGVkSW5kZXg6IG51bWJlcjtcblxuICBAVmlld0NoaWxkKCd0YWJHcm91cCcpIHRhYkdyb3VwO1xuXG4gIC8vIEB0cy1pZ25vcmVcbiAgQFN0b3IucHJvcGVydHkuaW4ubG9jYWxzdG9yYWdlXG4gICAgLmZvcihUYW9uQWRtaW5Nb2RlQ29uZmlndXJhdGlvbkNvbXBvbmVudClcbiAgICAud2l0aERlZmF1bHRWYWx1ZShmYWxzZSlcbiAgd2FzT3BlbkRyYWdnYWJsZVBvcHVwOiBib29sZWFuO1xuXG4gIEBPdXRwdXQoKSB0YW9uQWRtaW5Nb2RlQ29uZmlndXJhdGlvbkRhdGFDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSB0YW9uQWRtaW5Nb2RlQ29uZmlndXJhdGlvbkRhdGE6IGFueSA9IHt9O1xuICBwdWJsaWMgZ2V0IG9wZW5lZCgpIHtcbiAgICByZXR1cm4gIXRoaXMuaXNJZnJhbWUgJiYgdGhpcy5hZG1pbi5hZG1pblBhbmVsSXNPcGVuO1xuICB9XG4gIHB1YmxpYyBzZXQgb3BlbmVkKHYpIHtcbiAgICBpZiAodiAmJiAhdGhpcy5vcGVuZWRPbmNlKSB7XG4gICAgICB0aGlzLm9wZW5lZE9uY2UgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAodGhpcy53YXNPcGVuRHJhZ2dhYmxlUG9wdXApIHtcbiAgICAgIHRoaXMud2FzT3BlbkRyYWdnYWJsZVBvcHVwID0gZmFsc2U7XG4gICAgICB0aGlzLmFkbWluLmRyYWdnYWJsZVBvcHVwTW9kZSA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuYWRtaW4uYWRtaW5QYW5lbElzT3BlbiA9IHY7XG4gIH1cblxuXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBicmVha3BvaW50c1NlcnZpY2U6IEJyZWFrcG9pbnRzU2VydmljZSkge1xuICAgIHRoaXMuYWRtaW4uY21wID0gdGhpcztcbiAgICB0aGlzLmJyZWFrcG9pbnRzU2VydmljZVxuICAgICAgLmxpc3RlblRvKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLiRkZXN0cm95KSlcbiAgICAgIC5zdWJzY3JpYmUoYnJlYWtwb2ludCA9PiB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGhpcy5pc0Rlc2t0b3AgPSBicmVha3BvaW50ID09PSAnZGVza3RvcCc7XG4gICAgICB9KTtcbiAgICB0aGlzLnRhb25BZG1pblNlcnZpY2UuaW5pdCh0aGlzKTtcbiAgfVxuXG5cbiAgcmVsb2FkVGFicygpIHtcbiAgICB0aGlzLnJlbG9hZGluZyA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnJlbG9hZGluZyA9IGZhbHNlO1xuICAgICAgY29uc29sZS5sb2coJ3JlbG9hZGluZyBkb25lJyk7XG4gICAgfSk7XG4gIH1cblxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGF3YWl0IFN0b3IuYXdhaXRQZW5kaW5nT3BlcmF0aW9zKCk7XG5cblxuXG4gICAgdGhpcy5kcmFnUG9zaXRpb24gPSB7IHg6IHRoaXMuZHJhZ1Bvc2l0aW9uWCwgeTogdGhpcy5kcmFnUG9zaXRpb25ZIH07XG4gICAgdGhpcy5vcGVuZWRPbmNlID0gdGhpcy5vcGVuZWQ7XG5cblxuXG5cblxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIC8vQ2FsbGVkIGFmdGVyIG5nQWZ0ZXJDb250ZW50SW5pdCB3aGVuIHRoZSBjb21wb25lbnQncyB2aWV3IGhhcyBiZWVuIGluaXRpYWxpemVkLiBBcHBsaWVzIHRvIGNvbXBvbmVudHMgb25seS5cbiAgICAvL0FkZCAnaW1wbGVtZW50cyBBZnRlclZpZXdJbml0JyB0byB0aGUgY2xhc3MuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcblxuXG4gICAgICBpZiAodGhpcy5hZG1pbi5kcmFnZ2FibGVQb3B1cE1vZGUpIHtcbiAgICAgICAgdGhpcy5yZWxvYWRUYWJzKCk7XG4gICAgICB9XG5cblxuXG5cblxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4kZGVzdHJveS5uZXh0KHZvaWQgMCk7XG4gICAgdGhpcy4kZGVzdHJveS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gIG9uUmVzaXplKGV2ZW50OiBFdmVudCkge1xuICAgIHRoaXMuaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuICB9XG5cblxuXG5cbiAgYXN5bmMgdG9vZ2xlKCkge1xuXG4gICAgdGhpcy5vcGVuZWQgPSAhdGhpcy5vcGVuZWQ7XG4gIH1cblxuICBhc3luYyB0b29nbGVGdWxsU2NyZWVuKCkge1xuICAgIHRoaXMuYWRtaW4uZHJhZ2dhYmxlUG9wdXBNb2RlID0gdHJ1ZTtcbiAgICB0aGlzLmFkbWluLmRyYWdnYWJsZVBvcHVwTW9kZUZ1bGxTY3JlZW4gPVxuICAgICAgIXRoaXMuYWRtaW4uZHJhZ2dhYmxlUG9wdXBNb2RlRnVsbFNjcmVlbjtcbiAgICB0aGlzLnJlc2V0RHJhZygpO1xuICB9XG5cbiAgcmVzZXREcmFnKCkge1xuICAgIHRoaXMuZHJhZ1Bvc2l0aW9uWCA9IDA7XG4gICAgdGhpcy5kcmFnUG9zaXRpb25ZID0gMDtcbiAgICB0aGlzLmRyYWdQb3NpdGlvbiA9IHsgeDogdGhpcy5kcmFnUG9zaXRpb25YLCB5OiB0aGlzLmRyYWdQb3NpdGlvblkgfTtcbiAgfVxuXG4gIG1vdmVkKGM6IENka0RyYWdFbmQpIHtcbiAgICB0aGlzLmRyYWdQb3NpdGlvblggKz0gYy5kaXN0YW5jZS54O1xuICAgIHRoaXMuZHJhZ1Bvc2l0aW9uWSArPSBjLmRpc3RhbmNlLnk7XG4gIH1cblxuICBzY3JvbGxUYWJzKGV2ZW50KSB7XG4gICAgcmV0dXJuO1xuXG5cblxuXG5cblxuXG5cblxuXG4gIH1cblxuXG59XG5cblxuXG4gOyh7fSk7IC8vIEAtLWVuZC1vZi1maWxlLWZvci1tb2R1bGU9dGFvbiBsaWIvdWkvdGFvbi1hZG1pbi1tb2RlLWNvbmZpZ3VyYXRpb24vdGFvbi1hZG1pbi1tb2RlLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LnRzIiwiPCEtLSAjcmVnaW9uIGJhc2ljIGdsb2JhbCBjb21wb25lbnRzICAtLT5cbjx0YW9uLXNlc3Npb24tcGFzc2NvZGVcbiAgKm5nSWY9XCJzaG93UGFzc2NvZGVcIlxuICBbcGFzc2NvZGVdPVwicGFzc2NvZGVcIlxuICBbbWVzc2FnZV09XCJtZXNzYWdlXCIgLz5cbjwhLS0gPHRhb24tcHJvZ3Jlc3MtYmFyIFtpc0Rlc2t0b3BdPVwiaXNEZXNrdG9wXCI+PC90YW9uLXByb2dyZXNzLWJhcj4gLS0+XG48IS0tIDx0YW9uLW5vdGlmaWNhdGlvbnM+PC90YW9uLW5vdGlmaWNhdGlvbnM+IC0tPlxuPGJ1dHRvblxuICBtYXQtZmFiXG4gIGNsYXNzPVwiZmFiLWJ1dHRvblwiXG4gIGNvbG9yPVwiYWNjZW50XCJcbiAgYXJpYS1sYWJlbD1cIlRhb24gQWRtaW4gTW9kZVwiXG4gICpuZ0lmPVwiXG4gICAgIWFkbWluLmRyYWdnYWJsZVBvcHVwTW9kZSAmJlxuICAgIGlzRGVza3RvcCAmJlxuICAgICFpc0lmcmFtZSAmJlxuICAgICFoaWRlVGFvblRvb2xzSW5Qcm9kdWN0aW9uXG4gIFwiXG4gIChjbGljayk9XCJ0b29nbGUoKVwiPlxuICA8bWF0LWljb24+YnVpbGQ8L21hdC1pY29uPlxuPC9idXR0b24+XG48IS0tICNlbmRyZWdpb24gLS0+XG5cbjwhLS0gI3JlZ2lvbiBzbWFsbCBoaWRkZW4gYnV0dG9uIC0tPlxuPCEtLSA8YnV0dG9uIGNsYXNzPVwiYWRtaW4tc2hvdy1idXR0b25cIlxuICAgICAgICAqbmdJZj1cIiFhZG1pbi5kcmFnZ2FibGVQb3B1cE1vZGUgJiYgaXNEZXNrdG9wXCJcbiAgICAgICAgKGNsaWNrKT1cInRvb2dsZSgpXCI+IEFkbWluIDwvYnV0dG9uPiAtLT5cbjwhLS0gI2VuZHJlZ2lvbiAtLT5cblxuPG5nLXRlbXBsYXRlICNjb250ZW50Tm9TY3JvbGw+XG4gIDxuZy1jb250ZW50PiA8L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NvbnRlbnQ+XG4gIDxuZy1zY3JvbGxiYXI+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJjb250ZW50Tm9TY3JvbGxcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1zY3JvbGxiYXI+XG48L25nLXRlbXBsYXRlPlxuXG48IS0tICNyZWdpb24gYWRtaW4gdGFicyAtLT5cbjxuZy10ZW1wbGF0ZSAjYWRtaW5UYWJzPlxuICA8ZGl2IGNsYXNzPVwidGFvbi1oZWFkZXItYWRtaW4td3JhcHBlclwiPlxuICAgIDxjb2x1bW5zLWNvbnRhaW5lclxuICAgICAgY2xhc3M9XCJ0YW9uLWhlYWRlci1hZG1pblwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdkcmFnZ2FibGUtY29sdW1uJzogYWRtaW4uZHJhZ2dhYmxlUG9wdXBNb2RlIH1cIj5cbiAgICAgIDxjb2x1bW4gd2lkdGg9XCIyMDBcIiBjbGFzcz1cImxvZ28taGVhZGVyXCI+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICAqbmdJZj1cIm9wZW5lZE9uY2VcIlxuICAgICAgICAgIHNyYz1cIi9UVFRUVFRUVE9PT09PT09PX19fX19fX19SUlJSUlJSUkVFRUVFRUVFTU1NTU1NTU1PT09PT09PT1ZWVlZWVlZWRUVFRUVFRUVhc3NldHMvYXNzZXRzLWZvci90YW9uL3NoYXJlZC9sb2dvLWhlYWRlci1hZG1pbi1tb2RlLnBuZ1wiIC8+XG4gICAgICA8L2NvbHVtbj5cblxuICAgICAgPGNvbHVtbiBncm93PlxuICAgICAgICA8IS0tIDxzcGFuPlN1cGVyIEFkbWluIE1vZGU8L3NwYW4+IC0tPlxuICAgICAgPC9jb2x1bW4+XG5cbiAgICAgIDxjb2x1bW5cbiAgICAgICAgd2lkdGg9XCI0MFwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgIWFkbWluLmRyYWdnYWJsZVBvcHVwTW9kZUZ1bGxTY3JlZW4gJiYgIWFkbWluLmRyYWdnYWJsZVBvcHVwTW9kZVxuICAgICAgICBcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiYWRtaW4uZHJhZ2dhYmxlUG9wdXBNb2RlXCJcbiAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICBhZG1pbi5kcmFnZ2FibGVQb3B1cE1vZGUgPSBmYWxzZTtcbiAgICAgICAgICAgIG9wZW5lZCA9IGZhbHNlO1xuICAgICAgICAgICAgd2FzT3BlbkRyYWdnYWJsZVBvcHVwID0gdHJ1ZVxuICAgICAgICAgIFwiXG4gICAgICAgICAgY2xhc3M9XCJhZG1pbi1jbG9zZS1idXR0b25cIj5cbiAgICAgICAgICA8bWF0LWljb24+Y2xvc2UgPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiIWFkbWluLmRyYWdnYWJsZVBvcHVwTW9kZVwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvb2dsZSgpXCJcbiAgICAgICAgICBjbGFzcz1cImFkbWluLWNsb3NlLWJ1dHRvblwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9jb2x1bW4+XG5cbiAgICAgIDxjb2x1bW4gd2lkdGg9XCI0MFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCIhYWRtaW4uZHJhZ2dhYmxlUG9wdXBNb2RlRnVsbFNjcmVlblwiXG4gICAgICAgICAgY2xhc3M9XCJhZG1pbi1jbG9zZS1idXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJ0b29nbGVGdWxsU2NyZWVuKClcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZnVsbHNjcmVlbjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJhZG1pbi5kcmFnZ2FibGVQb3B1cE1vZGVGdWxsU2NyZWVuXCJcbiAgICAgICAgICBjbGFzcz1cImFkbWluLWNsb3NlLWJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvb2dsZUZ1bGxTY3JlZW4oKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZV9mdWxsc2NyZWVuPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2NvbHVtbj5cblxuICAgICAgPGNvbHVtbiB3aWR0aD1cIjQwXCIgKm5nSWY9XCIhYWRtaW4uZHJhZ2dhYmxlUG9wdXBNb2RlRnVsbFNjcmVlblwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCIhYWRtaW4uZHJhZ2dhYmxlUG9wdXBNb2RlXCJcbiAgICAgICAgICAoY2xpY2spPVwiYWRtaW4uZHJhZ2dhYmxlUG9wdXBNb2RlID0gdHJ1ZVwiXG4gICAgICAgICAgY2xhc3M9XCJhZG1pbi1jbG9zZS1idXR0b25cIj5cbiAgICAgICAgICA8bWF0LWljb24+bGF1bmNoPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiYWRtaW4uZHJhZ2dhYmxlUG9wdXBNb2RlXCJcbiAgICAgICAgICAoY2xpY2spPVwiYWRtaW4uZHJhZ2dhYmxlUG9wdXBNb2RlID0gZmFsc2U7IHJlc2V0RHJhZygpXCJcbiAgICAgICAgICBjbGFzcz1cImFkbWluLWNsb3NlLWJ1dHRvblwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBzdHlsZT1cInRyYW5zZm9ybTogcm90YXRlKDE4MGRlZylcIj5sb2dpbjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9jb2x1bW4+XG4gICAgPC9jb2x1bW5zLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG5cbiAgPGNvbHVtbnMtY29udGFpbmVyXG4gICAgW25nQ2xhc3NdPVwieyAnZHJhZ2dhYmxlLWNvbHVtbic6IGFkbWluLmRyYWdnYWJsZVBvcHVwTW9kZSB9XCI+XG4gICAgPGNvbHVtbiBncm93PlxuICAgICAgPG1hdC10YWItZ3JvdXBcbiAgICAgICAgZHluYW1pY0hlaWdodFxuICAgICAgICAod2hlZWwpPVwic2Nyb2xsVGFicygkZXZlbnQpXCJcbiAgICAgICAgI3RhYkdyb3VwXG4gICAgICAgIFtzZWxlY3RlZEluZGV4XT1cInNlbGVjdGVkSW5kZXhcIlxuICAgICAgICAoc2VsZWN0ZWRJbmRleENoYW5nZSk9XCJzZWxlY3RlZEluZGV4ID0gJGV2ZW50XCI+XG4gICAgICAgIDxtYXQtdGFiIGxhYmVsPVwiREIvQ2FjaGVcIj5cbiAgICAgICAgICA8c2VjdGlvbj5cbiAgICAgICAgICAgIDxtYXQtY2FyZD5cbiAgICAgICAgICAgICAgPG1hdC1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgICA8bWF0LWNhcmQtc3VidGl0bGU+V0VCU1FMIE1PREU8L21hdC1jYXJkLXN1YnRpdGxlPlxuICAgICAgICAgICAgICA8L21hdC1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc1dlYlNRTE1vZGVcIlxuICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiYWRtaW4ua2VlcFdlYnNxbERiRGF0YUFmdGVyUmVsb2FkXCJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiXG4gICAgICAgICAgICAgICAgICAgIGFkbWluLnNldEtlZXBXZWJzcWxEYkRhdGFBZnRlclJlbG9hZCgkZXZlbnQuY2hlY2tlZClcbiAgICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgICAgRG9uJ3QgcmVtb3ZlIGRhdGEgd2hlbiByZWxvYWRpbmdcbiAgICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD5cbiAgICAgICAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgPC9tYXQtY2FyZD5cbiAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgPHRhb24tZGItYWRtaW4gLz5cbiAgICAgICAgPC9tYXQtdGFiPlxuXG4gICAgICAgIDxtYXQtdGFiIGxhYmVsPVwiRmlsZXNcIiAqbmdJZj1cImFkbWluLmVuYWJsZWRUYWJzLmluY2x1ZGVzKCdmaWxlcycpXCI+XG4gICAgICAgICAgPHNlY3Rpb24+XG4gICAgICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgICAgIFtuZ01vZGVsXT1cImFkbWluLmZpbGVzRWRpdE1vZGVcIlxuICAgICAgICAgICAgICAoY2hhbmdlKT1cImFkbWluLnNldEVkaXRNb2RlKCRldmVudC5jaGVja2VkKVwiXG4gICAgICAgICAgICAgID5FZGl0IG1vZGU8L21hdC1jaGVja2JveFxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICA8IS0tIGFkbWluLmZpbGVzRWRpdE1vZGU6IHt7IGFkbWluLmZpbGVzRWRpdE1vZGUgfX0gLS0+XG4gICAgICAgICAgPCEtLSA8dGFvbi1hZG1pbi1lZGl0LW1vZGUgKm5nSWY9XCJhZG1pbi5maWxlc0VkaXRNb2RlXCI+XG4gICAgICAgICAgPC90YW9uLWFkbWluLWVkaXQtbW9kZT4gLS0+XG4gICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgPGhyICpuZ0lmPVwiYWRtaW4uZmlsZXNFZGl0TW9kZVwiIC8+XG4gICAgICAgICAgPCEtLSA8c2VjdGlvbj5cbiAgICAgICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24+W1RPRE9dIENsZWFyIEZpbGVzIGZyb20gYnJvd3NlciBjYWNoZSA8L2J1dHRvbj4gPGJyPlxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbj5bVE9ET10gU3RhcnQgZmlsZXMgZXhwb3J0IChhcyB6aXApIDwvYnV0dG9uPiA8YnI+XG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uPltUT0RPXSBJbXBvcnQgd2hvbGUgZGF0YWJhc2UgKGZyb20gemlwKSA8L2J1dHRvbj48YnI+XG4gICAgICAgICAgPC9zZWN0aW9uPiAtLT5cbiAgICAgICAgPC9tYXQtdGFiPlxuICAgICAgICA8bWF0LXRhYiAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnNcIiBsYWJlbD1cInt7IHRhYi5uYW1lIH19XCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmdWxsLXRhYnNcIlxuICAgICAgICAgICAgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHQgLSAxNTBcIlxuICAgICAgICAgICAgKm5nSWY9XCIhaXNJZnJhbWVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWIudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNJZnJhbWVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWIudGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9tYXQtdGFiPlxuXG4gICAgICAgIDwhLS0gPG1hdC10YWIgbGFiZWw9XCJQb3J0YWxcIj5cbiAgICAgICAgICA8c2VjdGlvbj5cbiAgICAgICAgICAgIDxtYXQtY2hlY2tib3g+W1RPRE9dIE1haW50ZW5hbmNlIE1vZGUgZm9yIHdob2xlIHBvcnRhbDwvbWF0LWNoZWNrYm94PlxuXG4gICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbD5cblxuICAgICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgW1RPRE9dIEFjdGl2ZSBVc2VyOiA4MDQzMlxuICAgICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgICAgICAgICA8c2VjdGlvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uPltUT0RPXSBTZW5kIG5vdGlmaWNhdGlvbiB0byB1c2VycyA8L2J1dHRvbj48YnI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbj5bVE9ET10gU2VuZCBlbWFpbCB0byB1c2VycyA8L2J1dHRvbj48YnI+XG4gICAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsPlxuICAgICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgW1RPRE9dIEVuYWJsZSBmZWF0dXJlc1xuICAgICAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94PltUT0RPXSBBQiB0ZXN0aW5nPC9tYXQtY2hlY2tib3g+IDxicj5cbiAgICAgICAgICAgICAgPG1hdC1jaGVja2JveD5cbiAgICAgICAgICAgICAgICBbVE9ET10gTmV3c2xldHRlciBlbWFpbCBxdWVzdGlvbiBwb3B1cFxuICAgICAgICAgICAgICA8L21hdC1jaGVja2JveD4gPGJyPlxuICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIFtUT0RPXSBQcm9tb3Rpb24gcG9wdXBcbiAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+IDxicj5cbiAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJVc2VyXCI+XG4gICAgICAgICAgV2VsY29tZSBpbiB1c2VyIG1hbmFnZW1lbnRzXG4gICAgICAgIDwvbWF0LXRhYj5cbiAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJUcmFuc2xhdGlvbnNcIj5cbiAgICAgICAgICBXZWxjb21lIGluIHVzZXIgbWFuYWdlbWVudHNcbiAgICAgICAgPC9tYXQtdGFiPiAtLT5cbiAgICAgIDwvbWF0LXRhYi1ncm91cD5cbiAgICA8L2NvbHVtbj5cbiAgPC9jb2x1bW5zLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG48IS0tICNlbmRyZWdpb24gLS0+XG5cbjwhLS0gI3JlZ2lvbiBzbWFsbC9tb2JpbGUgZHJhZ2dhYmxlIHBvcHVwIHdpbmRvd3MgLS0+XG48ZGl2XG4gIGNsYXNzPVwiZHJhZ2dhYmxlLXBvcHVwLW1vZGUtd2luZG93XCJcbiAgKm5nSWY9XCJcbiAgICBhZG1pbi5kcmFnZ2FibGVQb3B1cE1vZGUgJiYgIWFkbWluLmRyYWdnYWJsZVBvcHVwTW9kZUZ1bGxTY3JlZW4gJiYgIWlzSWZyYW1lXG4gIFwiXG4gIGNka0RyYWdcbiAgW2Nka0RyYWdGcmVlRHJhZ1Bvc2l0aW9uXT1cImRyYWdQb3NpdGlvblwiXG4gIChjZGtEcmFnRW5kZWQpPVwibW92ZWQoJGV2ZW50KVwiPlxuICA8bmctc2Nyb2xsYmFyPlxuICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWRtaW5UYWJzXCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctc2Nyb2xsYmFyPlxuPC9kaXY+XG48IS0tICNlbmRyZWdpb24gLS0+XG5cbjwhLS0gI3JlZ2lvbiBmdWxsc2NyZWVuIGRyYWdnYWJsZSBwb3B1cCB3aW5kb3cgLS0+XG48ZGl2XG4gIGNsYXNzPVwiZHJhZ2dhYmxlLXBvcHVwLW1vZGUtd2luZG93LWZ1bGxcIlxuICAqbmdJZj1cIlxuICAgIGFkbWluLmRyYWdnYWJsZVBvcHVwTW9kZSAmJlxuICAgIGFkbWluLmRyYWdnYWJsZVBvcHVwTW9kZUZ1bGxTY3JlZW4gJiZcbiAgICAhaXNJZnJhbWUgJiZcbiAgICAhcmVsb2FkaW5nXG4gIFwiXG4gIGNka0RyYWdcbiAgW2Nka0RyYWdGcmVlRHJhZ1Bvc2l0aW9uXT1cImRyYWdQb3NpdGlvblplcm9cIj5cbiAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJhZG1pblRhYnNcIj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuPCEtLSAjZW5kcmVnaW9uIC0tPlxuXG48IS0tICNyZWdpb24gY29udGVudCB3aGVuIG5vdCBpbiBkcmFnZ2FibGUgKG9yIGZ1bGxzY3JlZW4gZHJhZ2dhYmxlKSBwb3B1cCAtLT5cbjxkaXZcbiAgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRcIlxuICAqbmdJZj1cIlxuICAgIChpc0lmcmFtZSB8fFxuICAgICAgIWlzRGVza3RvcCB8fFxuICAgICAgYWRtaW4uZHJhZ2dhYmxlUG9wdXBNb2RlIHx8XG4gICAgICBhZG1pbi5kcmFnZ2FibGVQb3B1cE1vZGVGdWxsU2NyZWVuKSAmJlxuICAgICFyZWxvYWRpbmdcbiAgXCJcbiAgc3R5bGU9XCJ3aWR0aDogMTAwJTsgZGlzcGxheTogYmxvY2tcIlxuICBjbGFzcz1cImNvbnRlbnRcIj5cbiAgPG5nLWNvbnRhaW5lclxuICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIlxuICAgICAgYWRtaW4uc2Nyb2xsYWJsZUVuYWJsZWQgPyBjb250ZW50IDogY29udGVudE5vU2Nyb2xsXG4gICAgXCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjwhLS0gI2VuZHJlZ2lvbiAtLT5cblxuPCEtLSAjcmVnaW9uIGRyYWdnYWJsZSBwb3B1cCB3aW5kb3cgLS0+XG48bWF0LWRyYXdlci1jb250YWluZXJcbiAgKm5nSWY9XCIhYWRtaW4uZHJhZ2dhYmxlUG9wdXBNb2RlICYmIGlzRGVza3RvcCAmJiAhaXNJZnJhbWVcIlxuICBjbGFzcz1cImV4YW1wbGUtY29udGFpbmVyXCJcbiAgW3N0eWxlLmhlaWdodC5weF09XCJoZWlnaHRcIlxuICBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50XCJcbiAgKGJhY2tkcm9wQ2xpY2spPVwib3BlbmVkID0gZmFsc2VcIlxuICBbaGFzQmFja2Ryb3BdPVwiZmFsc2VcIj5cbiAgPG1hdC1kcmF3ZXIgI2RyYXdlciBzdHlsZT1cIndpZHRoOiA1ODBweFwiIFtvcGVuZWRdPVwib3BlbmVkXCIgW21vZGVdPVwiJ3NpZGUnXCI+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJhZG1pblRhYnNcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9tYXQtZHJhd2VyPlxuICA8bWF0LWRyYXdlci1jb250ZW50IHN0eWxlPVwib3ZlcmZsb3c6IGhpZGRlblwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiIWFkbWluLmRyYWdnYWJsZVBvcHVwTW9kZSAmJiAhcmVsb2FkaW5nXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIlxuICAgICAgICBhZG1pbi5zY3JvbGxhYmxlRW5hYmxlZCA/IGNvbnRlbnQgOiBjb250ZW50Tm9TY3JvbGxcbiAgICAgIFwiPjwvbmctY29udGFpbmVyPlxuICA8L21hdC1kcmF3ZXItY29udGVudD5cbjwvbWF0LWRyYXdlci1jb250YWluZXI+XG48IS0tICNlbmRyZWdpb24gLS0+XG4iXX0=
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFvbi1hZG1pbi1tb2RlLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3Rhb24vcHJvamVjdHMvdGFvbi9zcmMvbGliL3VpL3Rhb24tYWRtaW4tbW9kZS1jb25maWd1cmF0aW9uL3Rhb24tYWRtaW4tbW9kZS1jb25maWd1cmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0LXdlYnNxbC90YW9uL3Byb2plY3RzL3Rhb24vc3JjL2xpYi91aS90YW9uLWFkbWluLW1vZGUtY29uZmlndXJhdGlvbi90YW9uLWFkbWluLW1vZGUtY29uZmlndXJhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBR0EsT0FBTyxFQUFJLGlCQUFpQixFQUFJLFNBQVMsRUFBSSxZQUFZLEVBQUksWUFBWSxFQUFnQixLQUFLLEVBQWMsTUFBTSxFQUFJLFNBQVMsRUFBSSxNQUFNLEdBQUcsTUFBTSxlQUFlLENBQUMsQ0FBQSxLQUFLO0FBQ3ZLLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFFTCxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUUzQyxLQUFLO0FBQ0wsS0FBSztBQUNMLEtBQUs7QUFDTCxLQUFLO0FBQ0wsS0FBSztBQUVMLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELE9BQU8sRUFBRSxPQUFPLEVBQUUs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QkFDRSw4QkFBOEI7c0JBQXRDLEtBQUs7Z0JBc0VOLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRLENBQUM7O0FBMkQxQyxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGlIQUFpSCIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cbmltcG9ydCB7ICAgQ2hhbmdlRGV0ZWN0b3JSZWYsICAgQ29tcG9uZW50LCAgIEV2ZW50RW1pdHRlciwgICBIb3N0TGlzdGVuZXIsICAgSW5qZWN0b3IsICAgSW5wdXQsICAgT25Jbml0LCAgIE91dHB1dCwgICBWaWV3Q2hpbGQsICAgaW5qZWN0LCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnOy8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuXG5pbXBvcnQgeyBIZWxwZXJzLCBfIH0gZnJvbSAndG5wLWNvcmUvd2Vic3FsJztcbmltcG9ydCB7IFRhb25BZG1pblNlcnZpY2UgfSBmcm9tICcuL3Rhb24tYWRtaW4uc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yIH0gZnJvbSAndGFvbi1zdG9yYWdlL3dlYnNxbCc7XG5pbXBvcnQgeyAgIENka0RyYWcsICAgQ2RrRHJhZ0VuZCwgICBDZGtEcmFnTW92ZSwgICBDZGtEcmFnUmVsZWFzZSwgICBQb2ludCwgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJzsvKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG5cbmltcG9ydCB7IEJyZWFrcG9pbnRzU2VydmljZSB9IGZyb20gJ3N0YXRpYy1jb2x1bW5zL3dlYnNxbCc7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVGFvbkZ1bGxNYXRlcmlhbE1vZHVsZSB9IGZyb20gJy4uL3Rhb24tZnVsbC1tYXRlcmlhbC5tb2R1bGUnO1xuaW1wb3J0IHsgU3RhdGljQ29sdW1uc01vZHVsZSB9IGZyb20gJ3N0YXRpYy1jb2x1bW5zL3dlYnNxbCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5nU2Nyb2xsYmFyTW9kdWxlIH0gZnJvbSAnbmd4LXNjcm9sbGJhcic7XG5pbXBvcnQgeyBUYW9uUHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tICcuLi90YW9uLXByb2dyZXNzLWJhcic7XG5pbXBvcnQgeyBUYW9uTm90aWZpY2F0aW9uc01vZHVsZSB9IGZyb20gJy4uL3Rhb24tbm90aWZpY2F0aW9ucyc7XG5pbXBvcnQgeyBUYW9uU2Vzc2lvblBhc3Njb2RlQ29tcG9uZW50IH0gZnJvbSAnLi4vdGFvbi1zZXNzaW9uLXBhc3Njb2RlJztcblxuXG5cbmRlY2xhcmUgY29uc3QgRU5WOiBhbnk7XG5AQ29tcG9uZW50KHtcblxuICBzZWxlY3RvcjogJ3Rhb24tYWRtaW4tbW9kZS1jb25maWd1cmF0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Rhb24tYWRtaW4tbW9kZS1jb25maWd1cmF0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFvbi1hZG1pbi1tb2RlLWNvbmZpZ3VyYXRpb24uY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBTdGF0aWNDb2x1bW5zTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE5nU2Nyb2xsYmFyTW9kdWxlLFxuICAgIFRhb25Qcm9ncmVzc0Jhck1vZHVsZSxcbiAgICBUYW9uTm90aWZpY2F0aW9uc01vZHVsZSxcbiAgICBUYW9uRnVsbE1hdGVyaWFsTW9kdWxlLCAvLyBUT0RPIGltcG9ydCBvbmx5IHBhcnRpYWwgdGhpbmdzXG5cbiAgICBUYW9uU2Vzc2lvblBhc3Njb2RlQ29tcG9uZW50LFxuICBdLFxuXG59KVxuZXhwb3J0IGNsYXNzIFRhb25BZG1pbk1vZGVDb25maWd1cmF0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICAkZGVzdHJveSA9IG5ldyBTdWJqZWN0KCk7XG4gIHB1YmxpYyByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwdWJsaWMgcmVhZG9ubHkgdGFvbkFkbWluU2VydmljZSA9IGluamVjdChUYW9uQWRtaW5TZXJ2aWNlKTtcbiAgcHVibGljIHJlYWRvbmx5IGlzRGVza3RvcDogYm9vbGVhbjtcbiAgcHVibGljIGlzV2ViU1FMTW9kZTogYm9vbGVhbiA9IEhlbHBlcnMuaXNXZWJTUUw7XG4gIHB1YmxpYyBoaWRlVGFvblRvb2xzSW5Qcm9kdWN0aW9uOiBib29sZWFuID1cbiAgICBFTlYuaGlkZVRhb25Ub29sc0luUHJvZHVjdGlvbiAmJiBFTlYuYW5ndWxhclByb2Q7XG4gIHB1YmxpYyBpc0lmcmFtZTogYm9vbGVhbiA9IHdpbmRvdy5sb2NhdGlvbiAhPT0gd2luZG93LnBhcmVudC5sb2NhdGlvbjtcbiAgcHVibGljIGhlaWdodDogbnVtYmVyID0gMTAwO1xuICBwdWJsaWMgb3BlbmVkT25jZSA9IGZhbHNlO1xuICBwdWJsaWMgcmVsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBzaG93UGFzc2NvZGU6IGJvb2xlYW4gPVxuICAgIF8uaXNTdHJpbmcoRU5WLnBhc3Njb2RlKSB8fCBfLmlzT2JqZWN0KEVOVi5wYXNzY29kZSk7XG4gIHB1YmxpYyBwYXNzY29kZTogc3RyaW5nID0gXy5pc1N0cmluZyhFTlYucGFzc2NvZGUpXG4gICAgPyBFTlYucGFzc2NvZGVcbiAgICA6IF8uaXNPYmplY3QoRU5WLnBhc3Njb2RlKVxuICAgICAgPyBFTlYucGFzc2NvZGUuY29kZVxuICAgICAgOiAnJztcbiAgcHVibGljIG1lc3NhZ2U6IHN0cmluZyA9IF8uaXNPYmplY3QoRU5WLnBhc3Njb2RlKVxuICAgID8gRU5WLnBhc3Njb2RlLm1lc3NhZ2VcbiAgICA6IHZvaWQgMDtcblxuICAvLyBAdHMtaWdub3JlXG4gIEAoU3Rvci5wcm9wZXJ0eS5pbi5sb2NhbHN0b3JhZ2VcbiAgICAuZm9yKFRhb25BZG1pbk1vZGVDb25maWd1cmF0aW9uQ29tcG9uZW50KVxuICAgIC53aXRoRGVmYXVsdFZhbHVlKDApKVxuICBkcmFnUG9zaXRpb25YOiBudW1iZXI7XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBAKFN0b3IucHJvcGVydHkuaW4ubG9jYWxzdG9yYWdlXG4gICAgLmZvcihUYW9uQWRtaW5Nb2RlQ29uZmlndXJhdGlvbkNvbXBvbmVudClcbiAgICAud2l0aERlZmF1bHRWYWx1ZSgwKSlcbiAgZHJhZ1Bvc2l0aW9uWTogbnVtYmVyO1xuXG4gIGRyYWdQb3NpdGlvblplcm8gPSB7IHg6IDAsIHk6IDAgfSBhcyBQb2ludDtcbiAgZHJhZ1Bvc2l0aW9uOiBQb2ludDtcblxuICAvLyBAdHMtaWdub3JlXG4gIEAoU3Rvci5wcm9wZXJ0eS5pbi5sb2NhbHN0b3JhZ2VcbiAgICAuZm9yKFRhb25BZG1pbk1vZGVDb25maWd1cmF0aW9uQ29tcG9uZW50KVxuICAgIC53aXRoRGVmYXVsdFZhbHVlKDApKVxuICBzZWxlY3RlZEluZGV4OiBudW1iZXI7XG5cbiAgQFZpZXdDaGlsZCgndGFiR3JvdXAnKSB0YWJHcm91cDtcblxuICAvLyBAdHMtaWdub3JlXG4gIEAoU3Rvci5wcm9wZXJ0eS5pbi5sb2NhbHN0b3JhZ2VcbiAgICAuZm9yKFRhb25BZG1pbk1vZGVDb25maWd1cmF0aW9uQ29tcG9uZW50KVxuICAgIC53aXRoRGVmYXVsdFZhbHVlKGZhbHNlKSlcbiAgd2FzT3BlbkRyYWdnYWJsZVBvcHVwOiBib29sZWFuO1xuXG4gIEBPdXRwdXQoKSB0YW9uQWRtaW5Nb2RlQ29uZmlndXJhdGlvbkRhdGFDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSB0YW9uQWRtaW5Nb2RlQ29uZmlndXJhdGlvbkRhdGE6IGFueSA9IHt9O1xuICBwdWJsaWMgZ2V0IG9wZW5lZCgpIHtcbiAgICByZXR1cm4gIXRoaXMuaXNJZnJhbWUgJiYgdGhpcy5hZG1pbi5hZG1pblBhbmVsSXNPcGVuO1xuICB9XG4gIHB1YmxpYyBzZXQgb3BlbmVkKHYpIHtcbiAgICBpZiAodiAmJiAhdGhpcy5vcGVuZWRPbmNlKSB7XG4gICAgICB0aGlzLm9wZW5lZE9uY2UgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAodGhpcy53YXNPcGVuRHJhZ2dhYmxlUG9wdXApIHtcbiAgICAgIHRoaXMud2FzT3BlbkRyYWdnYWJsZVBvcHVwID0gZmFsc2U7XG4gICAgICB0aGlzLmFkbWluLmRyYWdnYWJsZVBvcHVwTW9kZSA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuYWRtaW4uYWRtaW5QYW5lbElzT3BlbiA9IHY7XG4gIH1cblxuXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBicmVha3BvaW50c1NlcnZpY2U6IEJyZWFrcG9pbnRzU2VydmljZSxcbiAgICBwdWJsaWMgYWRtaW46IFRhb25BZG1pblNlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuYnJlYWtwb2ludHNTZXJ2aWNlXG4gICAgICAubGlzdGVuVG8oKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuJGRlc3Ryb3kpKVxuICAgICAgLnN1YnNjcmliZShicmVha3BvaW50ID0+IHtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB0aGlzLmlzRGVza3RvcCA9IGJyZWFrcG9pbnQgPT09ICdkZXNrdG9wJztcbiAgICAgIH0pO1xuICB9XG5cblxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGF3YWl0IFN0b3IuYXdhaXRQZW5kaW5nT3BlcmF0aW9zKCk7XG5cblxuXG4gICAgdGhpcy5kcmFnUG9zaXRpb24gPSB7IHg6IHRoaXMuZHJhZ1Bvc2l0aW9uWCwgeTogdGhpcy5kcmFnUG9zaXRpb25ZIH07XG4gICAgdGhpcy5vcGVuZWRPbmNlID0gdGhpcy5vcGVuZWQ7XG5cblxuXG5cblxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIC8vQ2FsbGVkIGFmdGVyIG5nQWZ0ZXJDb250ZW50SW5pdCB3aGVuIHRoZSBjb21wb25lbnQncyB2aWV3IGhhcyBiZWVuIGluaXRpYWxpemVkLiBBcHBsaWVzIHRvIGNvbXBvbmVudHMgb25seS5cbiAgICAvL0FkZCAnaW1wbGVtZW50cyBBZnRlclZpZXdJbml0JyB0byB0aGUgY2xhc3MuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcblxuXG4gICAgICBpZiAodGhpcy5hZG1pbi5kcmFnZ2FibGVQb3B1cE1vZGUpIHtcbiAgICAgICAgdGhpcy5yZWxvYWRUYWJzKCk7XG4gICAgICB9XG5cblxuXG5cblxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy4kZGVzdHJveS5uZXh0KHZvaWQgMCk7XG4gICAgdGhpcy4kZGVzdHJveS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gIG9uUmVzaXplKGV2ZW50OiBFdmVudCkge1xuICAgIHRoaXMuaGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuICB9XG5cblxuXG5cbiAgYXN5bmMgcmVsb2FkVGFicygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4ocmVzb2x2ZSA9PiB7XG4gICAgICB0aGlzLnJlbG9hZGluZyA9IHRydWU7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5yZWxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgY29uc29sZS5sb2coJ3JlbG9hZGluZyBkb25lJyk7XG4gICAgICAgIHJlc29sdmUoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdG9vZ2xlKCkge1xuXG4gICAgdGhpcy5vcGVuZWQgPSAhdGhpcy5vcGVuZWQ7XG4gIH1cblxuICBhc3luYyB0b29nbGVGdWxsU2NyZWVuKCkge1xuICAgIHRoaXMuYWRtaW4uZHJhZ2dhYmxlUG9wdXBNb2RlID0gdHJ1ZTtcbiAgICB0aGlzLmFkbWluLmRyYWdnYWJsZVBvcHVwTW9kZUZ1bGxTY3JlZW4gPVxuICAgICAgIXRoaXMuYWRtaW4uZHJhZ2dhYmxlUG9wdXBNb2RlRnVsbFNjcmVlbjtcbiAgICB0aGlzLnJlc2V0RHJhZygpO1xuICB9XG5cbiAgcmVzZXREcmFnKCkge1xuICAgIHRoaXMuZHJhZ1Bvc2l0aW9uWCA9IDA7XG4gICAgdGhpcy5kcmFnUG9zaXRpb25ZID0gMDtcbiAgICB0aGlzLmRyYWdQb3NpdGlvbiA9IHsgeDogdGhpcy5kcmFnUG9zaXRpb25YLCB5OiB0aGlzLmRyYWdQb3NpdGlvblkgfTtcbiAgfVxuXG4gIG1vdmVkKGM6IENka0RyYWdFbmQpIHtcbiAgICB0aGlzLmRyYWdQb3NpdGlvblggKz0gYy5kaXN0YW5jZS54O1xuICAgIHRoaXMuZHJhZ1Bvc2l0aW9uWSArPSBjLmRpc3RhbmNlLnk7XG4gIH1cblxuICBzY3JvbGxUYWJzKGV2ZW50KSB7XG4gICAgcmV0dXJuO1xuXG5cblxuXG5cblxuXG5cblxuXG4gIH1cblxuXG59XG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10YW9uIGxpYi91aS90YW9uLWFkbWluLW1vZGUtY29uZmlndXJhdGlvbi90YW9uLWFkbWluLW1vZGUtY29uZmlndXJhdGlvbi5jb21wb25lbnQudHMiLCI8IS0tICNyZWdpb24gYmFzaWMgZ2xvYmFsIGNvbXBvbmVudHMgIC0tPlxuPHRhb24tc2Vzc2lvbi1wYXNzY29kZVxuICAqbmdJZj1cInNob3dQYXNzY29kZVwiXG4gIFtwYXNzY29kZV09XCJwYXNzY29kZVwiXG4gIFttZXNzYWdlXT1cIm1lc3NhZ2VcIiAvPlxuPCEtLSA8dGFvbi1wcm9ncmVzcy1iYXIgW2lzRGVza3RvcF09XCJpc0Rlc2t0b3BcIj48L3Rhb24tcHJvZ3Jlc3MtYmFyPiAtLT5cbjwhLS0gPHRhb24tbm90aWZpY2F0aW9ucz48L3Rhb24tbm90aWZpY2F0aW9ucz4gLS0+XG48YnV0dG9uXG4gIG1hdC1mYWJcbiAgY2xhc3M9XCJmYWItYnV0dG9uXCJcbiAgY29sb3I9XCJhY2NlbnRcIlxuICBhcmlhLWxhYmVsPVwiVGFvbiBBZG1pbiBNb2RlXCJcbiAgKm5nSWY9XCJcbiAgICAhYWRtaW4uZHJhZ2dhYmxlUG9wdXBNb2RlICYmXG4gICAgaXNEZXNrdG9wICYmXG4gICAgIWlzSWZyYW1lICYmXG4gICAgIWhpZGVUYW9uVG9vbHNJblByb2R1Y3Rpb25cbiAgXCJcbiAgKGNsaWNrKT1cInRvb2dsZSgpXCI+XG4gIDxtYXQtaWNvbj5idWlsZDwvbWF0LWljb24+XG48L2J1dHRvbj5cbjwhLS0gI2VuZHJlZ2lvbiAtLT5cblxuPCEtLSAjcmVnaW9uIHNtYWxsIGhpZGRlbiBidXR0b24gLS0+XG48IS0tIDxidXR0b24gY2xhc3M9XCJhZG1pbi1zaG93LWJ1dHRvblwiXG4gICAgICAgICpuZ0lmPVwiIWFkbWluLmRyYWdnYWJsZVBvcHVwTW9kZSAmJiBpc0Rlc2t0b3BcIlxuICAgICAgICAoY2xpY2spPVwidG9vZ2xlKClcIj4gQWRtaW4gPC9idXR0b24+IC0tPlxuPCEtLSAjZW5kcmVnaW9uIC0tPlxuXG48bmctdGVtcGxhdGUgI2NvbnRlbnROb1Njcm9sbD5cbiAgPG5nLWNvbnRlbnQ+IDwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY29udGVudD5cbiAgPG5nLXNjcm9sbGJhcj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnROb1Njcm9sbFwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLXNjcm9sbGJhcj5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gI3JlZ2lvbiBhZG1pbiB0YWJzIC0tPlxuPG5nLXRlbXBsYXRlICNhZG1pblRhYnM+XG4gIDwhLS0gI3JlZ2lvbiBhZG1pbiB0YWJzIC8gaGVhZGVyIC0tPlxuICA8ZGl2IGNsYXNzPVwidGFvbi1oZWFkZXItYWRtaW4td3JhcHBlclwiPlxuICAgIDxjb2x1bW5zLWNvbnRhaW5lclxuICAgICAgY2xhc3M9XCJ0YW9uLWhlYWRlci1hZG1pblwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdkcmFnZ2FibGUtY29sdW1uJzogYWRtaW4uZHJhZ2dhYmxlUG9wdXBNb2RlIH1cIj5cbiAgICAgIDxjb2x1bW5cbiAgICAgICAgd2lkdGg9XCIyMDBcIlxuICAgICAgICBjbGFzcz1cImxvZ28taGVhZGVyXCI+XG4gICAgICAgIDxpbWdcbiAgICAgICAgICAqbmdJZj1cIm9wZW5lZE9uY2VcIlxuICAgICAgICAgIHNyYz1cIi9UVFRUVFRUVE9PT09PT09PX19fX19fX19SUlJSUlJSUkVFRUVFRUVFTU1NTU1NTU1PT09PT09PT1ZWVlZWVlZWRUVFRUVFRUVhc3NldHMvYXNzZXRzLWZvci90YW9uL3NoYXJlZC9sb2dvLWhlYWRlci1hZG1pbi1tb2RlLnBuZ1wiIC8+XG4gICAgICA8L2NvbHVtbj5cblxuICAgICAgPGNvbHVtbiBncm93PlxuICAgICAgICA8IS0tIDxzcGFuPlN1cGVyIEFkbWluIE1vZGU8L3NwYW4+IC0tPlxuICAgICAgPC9jb2x1bW4+XG5cbiAgICAgIDxjb2x1bW5cbiAgICAgICAgd2lkdGg9XCI0MFwiXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgIWFkbWluLmRyYWdnYWJsZVBvcHVwTW9kZUZ1bGxTY3JlZW4gJiYgIWFkbWluLmRyYWdnYWJsZVBvcHVwTW9kZVxuICAgICAgICBcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiYWRtaW4uZHJhZ2dhYmxlUG9wdXBNb2RlXCJcbiAgICAgICAgICAoY2xpY2spPVwiXG4gICAgICAgICAgICBhZG1pbi5kcmFnZ2FibGVQb3B1cE1vZGUgPSBmYWxzZTtcbiAgICAgICAgICAgIG9wZW5lZCA9IGZhbHNlO1xuICAgICAgICAgICAgd2FzT3BlbkRyYWdnYWJsZVBvcHVwID0gdHJ1ZVxuICAgICAgICAgIFwiXG4gICAgICAgICAgY2xhc3M9XCJhZG1pbi1jbG9zZS1idXR0b25cIj5cbiAgICAgICAgICA8bWF0LWljb24+Y2xvc2UgPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiIWFkbWluLmRyYWdnYWJsZVBvcHVwTW9kZVwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvb2dsZSgpXCJcbiAgICAgICAgICBjbGFzcz1cImFkbWluLWNsb3NlLWJ1dHRvblwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9jb2x1bW4+XG5cbiAgICAgIDxjb2x1bW4gd2lkdGg9XCI0MFwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCIhYWRtaW4uZHJhZ2dhYmxlUG9wdXBNb2RlRnVsbFNjcmVlblwiXG4gICAgICAgICAgY2xhc3M9XCJhZG1pbi1jbG9zZS1idXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJ0b29nbGVGdWxsU2NyZWVuKClcIj5cbiAgICAgICAgICA8bWF0LWljb24+ZnVsbHNjcmVlbjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCJhZG1pbi5kcmFnZ2FibGVQb3B1cE1vZGVGdWxsU2NyZWVuXCJcbiAgICAgICAgICBjbGFzcz1cImFkbWluLWNsb3NlLWJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cInRvb2dsZUZ1bGxTY3JlZW4oKVwiPlxuICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZV9mdWxsc2NyZWVuPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2NvbHVtbj5cblxuICAgICAgPGNvbHVtblxuICAgICAgICB3aWR0aD1cIjQwXCJcbiAgICAgICAgKm5nSWY9XCIhYWRtaW4uZHJhZ2dhYmxlUG9wdXBNb2RlRnVsbFNjcmVlblwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgKm5nSWY9XCIhYWRtaW4uZHJhZ2dhYmxlUG9wdXBNb2RlXCJcbiAgICAgICAgICAoY2xpY2spPVwiYWRtaW4uZHJhZ2dhYmxlUG9wdXBNb2RlID0gdHJ1ZVwiXG4gICAgICAgICAgY2xhc3M9XCJhZG1pbi1jbG9zZS1idXR0b25cIj5cbiAgICAgICAgICA8bWF0LWljb24+bGF1bmNoPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICpuZ0lmPVwiYWRtaW4uZHJhZ2dhYmxlUG9wdXBNb2RlXCJcbiAgICAgICAgICAoY2xpY2spPVwiYWRtaW4uZHJhZ2dhYmxlUG9wdXBNb2RlID0gZmFsc2U7IHJlc2V0RHJhZygpXCJcbiAgICAgICAgICBjbGFzcz1cImFkbWluLWNsb3NlLWJ1dHRvblwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBzdHlsZT1cInRyYW5zZm9ybTogcm90YXRlKDE4MGRlZylcIj5sb2dpbjwvbWF0LWljb24+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9jb2x1bW4+XG4gICAgPC9jb2x1bW5zLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDwhLS0gI2VuZHJlZ2lvbiAtLT5cblxuICA8Y29sdW1ucy1jb250YWluZXJcbiAgICBbbmdDbGFzc109XCJ7ICdkcmFnZ2FibGUtY29sdW1uJzogYWRtaW4uZHJhZ2dhYmxlUG9wdXBNb2RlIH1cIj5cbiAgICA8Y29sdW1uIGdyb3c+XG4gICAgICA8bWF0LXRhYi1ncm91cFxuICAgICAgICBkeW5hbWljSGVpZ2h0XG4gICAgICAgICh3aGVlbCk9XCJzY3JvbGxUYWJzKCRldmVudClcIlxuICAgICAgICAjdGFiR3JvdXBcbiAgICAgICAgW3NlbGVjdGVkSW5kZXhdPVwic2VsZWN0ZWRJbmRleFwiXG4gICAgICAgIChzZWxlY3RlZEluZGV4Q2hhbmdlKT1cInNlbGVjdGVkSW5kZXggPSAkZXZlbnRcIj5cbiAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJEQi9DYWNoZVwiPlxuICAgICAgICAgIDxzZWN0aW9uPlxuICAgICAgICAgICAgPG1hdC1jYXJkPlxuICAgICAgICAgICAgICA8bWF0LWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgICAgIDxtYXQtY2FyZC1zdWJ0aXRsZT5XRUJTUUwgTU9ERTwvbWF0LWNhcmQtc3VidGl0bGU+XG4gICAgICAgICAgICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzV2ViU1FMTW9kZVwiXG4gICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJhZG1pbi5rZWVwV2Vic3FsRGJEYXRhQWZ0ZXJSZWxvYWRcIlxuICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJcbiAgICAgICAgICAgICAgICAgICAgYWRtaW4uc2V0S2VlcFdlYnNxbERiRGF0YUFmdGVyUmVsb2FkKCRldmVudC5jaGVja2VkKVxuICAgICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICAgICBEb24ndCByZW1vdmUgZGF0YSB3aGVuIHJlbG9hZGluZ1xuICAgICAgICAgICAgICAgIDwvbWF0LWNoZWNrYm94PlxuICAgICAgICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICA8L21hdC1jYXJkPlxuICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICA8dGFvbi1kYi1hZG1pbiAvPlxuICAgICAgICA8L21hdC10YWI+XG4gICAgICA8L21hdC10YWItZ3JvdXA+XG4gICAgPC9jb2x1bW4+XG4gIDwvY29sdW1ucy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuPCEtLSAjZW5kcmVnaW9uIC0tPlxuXG48IS0tICNyZWdpb24gc21hbGwvbW9iaWxlIGRyYWdnYWJsZSBwb3B1cCB3aW5kb3dzIC0tPlxuPGRpdlxuICBjbGFzcz1cImRyYWdnYWJsZS1wb3B1cC1tb2RlLXdpbmRvd1wiXG4gICpuZ0lmPVwiXG4gICAgYWRtaW4uZHJhZ2dhYmxlUG9wdXBNb2RlICYmICFhZG1pbi5kcmFnZ2FibGVQb3B1cE1vZGVGdWxsU2NyZWVuICYmICFpc0lmcmFtZVxuICBcIlxuICBjZGtEcmFnXG4gIFtjZGtEcmFnRnJlZURyYWdQb3NpdGlvbl09XCJkcmFnUG9zaXRpb25cIlxuICAoY2RrRHJhZ0VuZGVkKT1cIm1vdmVkKCRldmVudClcIj5cbiAgPG5nLXNjcm9sbGJhcj5cbiAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImFkbWluVGFic1wiPjwvbmctY29udGFpbmVyPlxuICA8L25nLXNjcm9sbGJhcj5cbjwvZGl2PlxuPCEtLSAjZW5kcmVnaW9uIC0tPlxuXG48IS0tICNyZWdpb24gZnVsbHNjcmVlbiBkcmFnZ2FibGUgcG9wdXAgd2luZG93IC0tPlxuPGRpdlxuICBjbGFzcz1cImRyYWdnYWJsZS1wb3B1cC1tb2RlLXdpbmRvdy1mdWxsXCJcbiAgKm5nSWY9XCJcbiAgICBhZG1pbi5kcmFnZ2FibGVQb3B1cE1vZGUgJiZcbiAgICBhZG1pbi5kcmFnZ2FibGVQb3B1cE1vZGVGdWxsU2NyZWVuICYmXG4gICAgIWlzSWZyYW1lICYmXG4gICAgIXJlbG9hZGluZ1xuICBcIlxuICBjZGtEcmFnXG4gIFtjZGtEcmFnRnJlZURyYWdQb3NpdGlvbl09XCJkcmFnUG9zaXRpb25aZXJvXCI+XG4gIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWRtaW5UYWJzXCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjwhLS0gI2VuZHJlZ2lvbiAtLT5cblxuPCEtLSAjcmVnaW9uIGNvbnRlbnQgd2hlbiBub3QgaW4gZHJhZ2dhYmxlIChvciBmdWxsc2NyZWVuIGRyYWdnYWJsZSkgcG9wdXAgLS0+XG48ZGl2XG4gIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVpZ2h0XCJcbiAgKm5nSWY9XCJcbiAgICAoaXNJZnJhbWUgfHxcbiAgICAgICFpc0Rlc2t0b3AgfHxcbiAgICAgIGFkbWluLmRyYWdnYWJsZVBvcHVwTW9kZSB8fFxuICAgICAgYWRtaW4uZHJhZ2dhYmxlUG9wdXBNb2RlRnVsbFNjcmVlbikgJiZcbiAgICAhcmVsb2FkaW5nXG4gIFwiXG4gIHN0eWxlPVwid2lkdGg6IDEwMCU7IGRpc3BsYXk6IGJsb2NrXCJcbiAgY2xhc3M9XCJjb250ZW50XCI+XG4gIDxuZy1jb250YWluZXJcbiAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJcbiAgICAgIGFkbWluLnNjcm9sbGFibGVFbmFibGVkID8gY29udGVudCA6IGNvbnRlbnROb1Njcm9sbFxuICAgIFwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG48IS0tICNlbmRyZWdpb24gLS0+XG5cbjwhLS0gI3JlZ2lvbiBkcmFnZ2FibGUgcG9wdXAgd2luZG93IC0tPlxuPG1hdC1kcmF3ZXItY29udGFpbmVyXG4gICpuZ0lmPVwiIWFkbWluLmRyYWdnYWJsZVBvcHVwTW9kZSAmJiBpc0Rlc2t0b3AgJiYgIWlzSWZyYW1lXCJcbiAgY2xhc3M9XCJleGFtcGxlLWNvbnRhaW5lclwiXG4gIFtzdHlsZS5oZWlnaHQucHhdPVwiaGVpZ2h0XCJcbiAgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudFwiXG4gIChiYWNrZHJvcENsaWNrKT1cIm9wZW5lZCA9IGZhbHNlXCJcbiAgW2hhc0JhY2tkcm9wXT1cImZhbHNlXCI+XG4gIDxtYXQtZHJhd2VyXG4gICAgI2RyYXdlclxuICAgIHN0eWxlPVwid2lkdGg6IDU4MHB4XCJcbiAgICBbb3BlbmVkXT1cIm9wZW5lZFwiXG4gICAgW21vZGVdPVwiJ3NpZGUnXCI+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJhZG1pblRhYnNcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9tYXQtZHJhd2VyPlxuICA8bWF0LWRyYXdlci1jb250ZW50IHN0eWxlPVwib3ZlcmZsb3c6IGhpZGRlblwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0lmPVwiIWFkbWluLmRyYWdnYWJsZVBvcHVwTW9kZSAmJiAhcmVsb2FkaW5nXCJcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIlxuICAgICAgICBhZG1pbi5zY3JvbGxhYmxlRW5hYmxlZCA/IGNvbnRlbnQgOiBjb250ZW50Tm9TY3JvbGxcbiAgICAgIFwiPjwvbmctY29udGFpbmVyPlxuICA8L21hdC1kcmF3ZXItY29udGVudD5cbjwvbWF0LWRyYXdlci1jb250YWluZXI+XG48IS0tICNlbmRyZWdpb24gLS0+XG4iXX0=
@@ -2,25 +2,21 @@ import { __decorate, __metadata } from "tslib";
2
2
  import { Stor } from 'taon-storage/websql';
3
3
  import { Helpers } from 'tnp-core/websql';
4
4
  import { Subject } from 'rxjs';
5
- import { globalPublicStorage } from '../../storage';
6
- import { config } from 'tnp-config/websql';
7
5
  import { Injectable } from '@angular/core';
8
6
  import * as i0 from "@angular/core";
9
7
  const ENV = Helpers.isBrowser ? window['ENV'] : global['ENV'];
10
- export class TaonAdmin {
8
+ export class TaonAdminService {
9
+ static get Instance() {
10
+ return this._instance;
11
+ }
11
12
  constructor() {
12
13
  this.scrollableEnabled = false; // TOOD false by default
13
14
  this.onEditMode = new Subject();
14
15
  this.onEditMode$ = this.onEditMode.asObservable();
15
16
  this.enabledTabs = [];
17
+ TaonAdminService._instance = this;
16
18
  this.scrollableEnabled = !!ENV?.useGlobalNgxScrollbar;
17
19
  }
18
- static get Instance() {
19
- if (!globalPublicStorage[config.frameworkNames.productionFrameworkName]) {
20
- globalPublicStorage[config.frameworkNames.productionFrameworkName] = new TaonAdmin();
21
- }
22
- return globalPublicStorage[config.frameworkNames.productionFrameworkName];
23
- }
24
20
  setEditMode(value) {
25
21
  this.onEditMode.next(value);
26
22
  }
@@ -36,29 +32,29 @@ export class TaonAdmin {
36
32
  this.adminPanelIsOpen = true;
37
33
  }
38
34
  logout() { }
39
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdmin, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
40
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdmin, providedIn: 'root' }); }
35
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
36
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminService, providedIn: 'root' }); }
41
37
  }
42
38
  __decorate([
43
- Stor.property.in.localstorage.for(TaonAdmin).withDefaultValue(false),
39
+ (Stor.property.in.localstorage.for(TaonAdminService).withDefaultValue(false)),
44
40
  __metadata("design:type", Boolean)
45
- ], TaonAdmin.prototype, "adminPanelIsOpen", void 0);
41
+ ], TaonAdminService.prototype, "adminPanelIsOpen", void 0);
46
42
  __decorate([
47
- Stor.property.in.localstorage.for(TaonAdmin).withDefaultValue(false),
43
+ (Stor.property.in.localstorage.for(TaonAdminService).withDefaultValue(false)),
48
44
  __metadata("design:type", Boolean)
49
- ], TaonAdmin.prototype, "draggablePopupMode", void 0);
45
+ ], TaonAdminService.prototype, "draggablePopupMode", void 0);
50
46
  __decorate([
51
- Stor.property.in.localstorage.for(TaonAdmin).withDefaultValue(false),
47
+ (Stor.property.in.localstorage.for(TaonAdminService).withDefaultValue(false)),
52
48
  __metadata("design:type", Boolean)
53
- ], TaonAdmin.prototype, "draggablePopupModeFullScreen", void 0);
49
+ ], TaonAdminService.prototype, "draggablePopupModeFullScreen", void 0);
54
50
  __decorate([
55
- Stor.property.in.localstorage.for(TaonAdmin).withDefaultValue(false),
51
+ (Stor.property.in.localstorage.for(TaonAdminService).withDefaultValue(false)),
56
52
  __metadata("design:type", Boolean)
57
- ], TaonAdmin.prototype, "keepWebsqlDbDataAfterReload", void 0);
58
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdmin, decorators: [{
53
+ ], TaonAdminService.prototype, "keepWebsqlDbDataAfterReload", void 0);
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: TaonAdminService, decorators: [{
59
55
  type: Injectable,
60
56
  args: [{ providedIn: 'root' }]
61
57
  }], ctorParameters: () => [] });
62
58
  ;
63
59
  ({}); // @--end-of-file-for-module=taon lib/ui/taon-admin-mode-configuration/taon-admin.service.ts
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFvbi1hZG1pbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3Rhb24vcHJvamVjdHMvdGFvbi9zcmMvbGliL3VpL3Rhb24tYWRtaW4tbW9kZS1jb25maWd1cmF0aW9uL3Rhb24tYWRtaW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBSUEsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUssTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsT0FBTyxFQUF3QixNQUFNLE1BQU0sQ0FBQztBQUVyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzNDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRzlELE1BQU0sT0FBTyxTQUFTO0lBSXBCO1FBSE8sc0JBQWlCLEdBQUcsS0FBSyxDQUFDLENBQUMsd0JBQXdCO1FBaUJsRCxlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNuQyxnQkFBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7UUF5QzdDLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBdERmLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDO0lBQ3hELENBQUM7SUFDTSxNQUFNLEtBQUssUUFBUTtRQUN4QixJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxFQUFFLENBQUM7WUFDeEUsbUJBQW1CLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7UUFDdkYsQ0FBQztRQUNELE9BQU8sbUJBQW1CLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFvQ0QsV0FBVyxDQUFDLEtBQWM7UUFDeEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELDhCQUE4QixDQUFDLEtBQWM7UUFJM0MsSUFBSSxDQUFDLDJCQUEyQixHQUFHLEtBQUssQ0FBQztJQUMzQyxDQUFDO0lBSUQsSUFBSTtRQUNGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsTUFBTSxLQUFJLENBQUM7OEdBeEVBLFNBQVM7a0hBQVQsU0FBUyxjQURJLE1BQU07O0FBMEJ2QjtJQUROLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDOzttREFDcEM7QUFNMUI7SUFETixJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQzs7cURBQ2xDO0FBTTVCO0lBRE4sSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7OytEQUN4QjtBQVF0QztJQUROLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDOzs4REFDekI7MkZBN0NqQyxTQUFTO2tCQURyQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7QUE2RWpDLENBQUM7QUFBQSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsNEZBQTRGIiwic291cmNlc0NvbnRlbnQiOlsiXG5cblxuXG5pbXBvcnQgeyBTdG9yIH0gZnJvbSAndGFvbi1zdG9yYWdlL3dlYnNxbCc7XG5pbXBvcnQgeyBIZWxwZXJzLCBfIH0gZnJvbSAndG5wLWNvcmUvd2Vic3FsJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2UsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgdHlwZSB7IFRhb25BZG1pbk1vZGVDb25maWd1cmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi90YW9uLWFkbWluLW1vZGUtY29uZmlndXJhdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgZ2xvYmFsUHVibGljU3RvcmFnZSB9IGZyb20gJy4uLy4uL3N0b3JhZ2UnO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAndG5wLWNvbmZpZy93ZWJzcWwnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5cbmNvbnN0IEVOViA9IEhlbHBlcnMuaXNCcm93c2VyID8gd2luZG93WydFTlYnXSA6IGdsb2JhbFsnRU5WJ107XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVGFvbkFkbWluIHtcbiAgcHVibGljIHNjcm9sbGFibGVFbmFibGVkID0gZmFsc2U7IC8vIFRPT0QgZmFsc2UgYnkgZGVmYXVsdFxuXG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcblxuICAgIHRoaXMuc2Nyb2xsYWJsZUVuYWJsZWQgPSAhIUVOVj8udXNlR2xvYmFsTmd4U2Nyb2xsYmFyO1xuICB9XG4gIHB1YmxpYyBzdGF0aWMgZ2V0IEluc3RhbmNlKCk6IFRhb25BZG1pbiB7XG4gICAgaWYgKCFnbG9iYWxQdWJsaWNTdG9yYWdlW2NvbmZpZy5mcmFtZXdvcmtOYW1lcy5wcm9kdWN0aW9uRnJhbWV3b3JrTmFtZV0pIHtcbiAgICAgIGdsb2JhbFB1YmxpY1N0b3JhZ2VbY29uZmlnLmZyYW1ld29ya05hbWVzLnByb2R1Y3Rpb25GcmFtZXdvcmtOYW1lXSA9IG5ldyBUYW9uQWRtaW4oKTtcbiAgICB9XG4gICAgcmV0dXJuIGdsb2JhbFB1YmxpY1N0b3JhZ2VbY29uZmlnLmZyYW1ld29ya05hbWVzLnByb2R1Y3Rpb25GcmFtZXdvcmtOYW1lXTtcbiAgfVxuXG5cblxuICBwdWJsaWMgY21wOiBUYW9uQWRtaW5Nb2RlQ29uZmlndXJhdGlvbkNvbXBvbmVudDtcbiAgcHJpdmF0ZSBvbkVkaXRNb2RlID0gbmV3IFN1YmplY3QoKTtcbiAgb25FZGl0TW9kZSQgPSB0aGlzLm9uRWRpdE1vZGUuYXNPYnNlcnZhYmxlKCk7XG5cblxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgQFN0b3IucHJvcGVydHkuaW4ubG9jYWxzdG9yYWdlLmZvcihUYW9uQWRtaW4pLndpdGhEZWZhdWx0VmFsdWUoZmFsc2UpXG4gIHB1YmxpYyBhZG1pblBhbmVsSXNPcGVuOiBib29sZWFuO1xuXG5cblxuICAvLyBAdHMtaWdub3JlXG4gIEBTdG9yLnByb3BlcnR5LmluLmxvY2Fsc3RvcmFnZS5mb3IoVGFvbkFkbWluKS53aXRoRGVmYXVsdFZhbHVlKGZhbHNlKVxuICBwdWJsaWMgZHJhZ2dhYmxlUG9wdXBNb2RlOiBib29sZWFuO1xuXG5cblxuICAvLyBAdHMtaWdub3JlXG4gIEBTdG9yLnByb3BlcnR5LmluLmxvY2Fsc3RvcmFnZS5mb3IoVGFvbkFkbWluKS53aXRoRGVmYXVsdFZhbHVlKGZhbHNlKVxuICBwdWJsaWMgZHJhZ2dhYmxlUG9wdXBNb2RlRnVsbFNjcmVlbjogYm9vbGVhbjtcblxuXG5cbiAgLyoqXG4gICAqIFByb3BlcnR5IHVzZWQgaW4gdGFvblxuICAgKi8gLy8gQHRzLWlnbm9yZVxuICBAU3Rvci5wcm9wZXJ0eS5pbi5sb2NhbHN0b3JhZ2UuZm9yKFRhb25BZG1pbikud2l0aERlZmF1bHRWYWx1ZShmYWxzZSlcbiAgcHVibGljIGtlZXBXZWJzcWxEYkRhdGFBZnRlclJlbG9hZDogYm9vbGVhbjtcblxuXG5cbiAgc2V0RWRpdE1vZGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLm9uRWRpdE1vZGUubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBzZXRLZWVwV2Vic3FsRGJEYXRhQWZ0ZXJSZWxvYWQodmFsdWU6IGJvb2xlYW4pIHtcblxuXG5cbiAgICB0aGlzLmtlZXBXZWJzcWxEYkRhdGFBZnRlclJlbG9hZCA9IHZhbHVlO1xuICB9XG5cbiAgZW5hYmxlZFRhYnMgPSBbXTtcblxuICBoaWRlKCkge1xuICAgIHRoaXMuZHJhZ2dhYmxlUG9wdXBNb2RlID0gZmFsc2U7XG4gICAgdGhpcy5hZG1pblBhbmVsSXNPcGVuID0gZmFsc2U7XG4gIH1cblxuICBzaG93KCkge1xuICAgIHRoaXMuZHJhZ2dhYmxlUG9wdXBNb2RlID0gZmFsc2U7XG4gICAgdGhpcy5hZG1pblBhbmVsSXNPcGVuID0gdHJ1ZTtcbiAgfVxuXG4gIGxvZ291dCgpIHt9XG5cbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRhb24gbGliL3VpL3Rhb24tYWRtaW4tbW9kZS1jb25maWd1cmF0aW9uL3Rhb24tYWRtaW4uc2VydmljZS50cyJdfQ==
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFvbi1hZG1pbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3Rhb24vcHJvamVjdHMvdGFvbi9zcmMvbGliL3VpL3Rhb24tYWRtaW4tbW9kZS1jb25maWd1cmF0aW9uL3Rhb24tYWRtaW4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBR0EsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUssTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsT0FBTyxFQUF3QixNQUFNLE1BQU0sQ0FBQztBQUlyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUczQyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUc5RCxNQUFNLE9BQU8sZ0JBQWdCO0lBR3BCLE1BQU0sS0FBSyxRQUFRO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBcUNEO1FBakNPLHNCQUFpQixHQUFHLEtBQUssQ0FBQyxDQUFDLHdCQUF3QjtRQUNsRCxlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNuQyxnQkFBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7UUFpRDdDLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBakJmLGdCQUFnQixDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUscUJBQXFCLENBQUM7SUFDeEQsQ0FBQztJQUlELFdBQVcsQ0FBQyxLQUFjO1FBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCw4QkFBOEIsQ0FBQyxLQUFjO1FBSTNDLElBQUksQ0FBQywyQkFBMkIsR0FBRyxLQUFLLENBQUM7SUFDM0MsQ0FBQztJQUlELElBQUk7UUFDRixJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUk7UUFDRixJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELE1BQU0sS0FBSSxDQUFDOzhHQXhFQSxnQkFBZ0I7a0hBQWhCLGdCQUFnQixjQURILE1BQU07O0FBaUJ2QjtJQUROLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDOzswREFDN0M7QUFNMUI7SUFETixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQzs7NERBQzNDO0FBTTVCO0lBRE4sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7O3NFQUNqQztBQVF0QztJQUROLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDOztxRUFDbEM7MkZBcENqQyxnQkFBZ0I7a0JBRDVCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQTZFakMsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyw0RkFBNEYiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuXG5pbXBvcnQgeyBTdG9yIH0gZnJvbSAndGFvbi1zdG9yYWdlL3dlYnNxbCc7XG5pbXBvcnQgeyBIZWxwZXJzLCBfIH0gZnJvbSAndG5wLWNvcmUvd2Vic3FsJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2UsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgdHlwZSB7IFRhb25BZG1pbk1vZGVDb25maWd1cmF0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi90YW9uLWFkbWluLW1vZGUtY29uZmlndXJhdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgZ2xvYmFsUHVibGljU3RvcmFnZSB9IGZyb20gJy4uLy4uL3N0b3JhZ2UnO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAndG5wLWNvbmZpZy93ZWJzcWwnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5cbmNvbnN0IEVOViA9IEhlbHBlcnMuaXNCcm93c2VyID8gd2luZG93WydFTlYnXSA6IGdsb2JhbFsnRU5WJ107XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVGFvbkFkbWluU2VydmljZSB7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgX2luc3RhbmNlOiBUYW9uQWRtaW5TZXJ2aWNlO1xuICBwdWJsaWMgc3RhdGljIGdldCBJbnN0YW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy5faW5zdGFuY2U7XG4gIH1cblxuXG5cbiAgcHVibGljIHNjcm9sbGFibGVFbmFibGVkID0gZmFsc2U7IC8vIFRPT0QgZmFsc2UgYnkgZGVmYXVsdFxuICBwcml2YXRlIG9uRWRpdE1vZGUgPSBuZXcgU3ViamVjdCgpO1xuICBvbkVkaXRNb2RlJCA9IHRoaXMub25FZGl0TW9kZS5hc09ic2VydmFibGUoKTtcblxuXG5cbiAgQChTdG9yLnByb3BlcnR5LmluLmxvY2Fsc3RvcmFnZS5mb3IoVGFvbkFkbWluU2VydmljZSkud2l0aERlZmF1bHRWYWx1ZShmYWxzZSkpXG4gIHB1YmxpYyBhZG1pblBhbmVsSXNPcGVuOiBib29sZWFuO1xuXG5cblxuXG4gIEAoU3Rvci5wcm9wZXJ0eS5pbi5sb2NhbHN0b3JhZ2UuZm9yKFRhb25BZG1pblNlcnZpY2UpLndpdGhEZWZhdWx0VmFsdWUoZmFsc2UpKVxuICBwdWJsaWMgZHJhZ2dhYmxlUG9wdXBNb2RlOiBib29sZWFuO1xuXG5cblxuXG4gIEAoU3Rvci5wcm9wZXJ0eS5pbi5sb2NhbHN0b3JhZ2UuZm9yKFRhb25BZG1pblNlcnZpY2UpLndpdGhEZWZhdWx0VmFsdWUoZmFsc2UpKVxuICBwdWJsaWMgZHJhZ2dhYmxlUG9wdXBNb2RlRnVsbFNjcmVlbjogYm9vbGVhbjtcblxuXG5cbiAgLyoqXG4gICAqIFByb3BlcnR5IHVzZWQgaW4gdGFvblxuICAgKi9cbiAgQChTdG9yLnByb3BlcnR5LmluLmxvY2Fsc3RvcmFnZS5mb3IoVGFvbkFkbWluU2VydmljZSkud2l0aERlZmF1bHRWYWx1ZShmYWxzZSkpXG4gIHB1YmxpYyBrZWVwV2Vic3FsRGJEYXRhQWZ0ZXJSZWxvYWQ6IGJvb2xlYW47XG5cblxuXG5cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBUYW9uQWRtaW5TZXJ2aWNlLl9pbnN0YW5jZSA9IHRoaXM7XG4gICAgdGhpcy5zY3JvbGxhYmxlRW5hYmxlZCA9ICEhRU5WPy51c2VHbG9iYWxOZ3hTY3JvbGxiYXI7XG4gIH1cblxuXG5cbiAgc2V0RWRpdE1vZGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLm9uRWRpdE1vZGUubmV4dCh2YWx1ZSk7XG4gIH1cblxuICBzZXRLZWVwV2Vic3FsRGJEYXRhQWZ0ZXJSZWxvYWQodmFsdWU6IGJvb2xlYW4pIHtcblxuXG5cbiAgICB0aGlzLmtlZXBXZWJzcWxEYkRhdGFBZnRlclJlbG9hZCA9IHZhbHVlO1xuICB9XG5cbiAgZW5hYmxlZFRhYnMgPSBbXTtcblxuICBoaWRlKCkge1xuICAgIHRoaXMuZHJhZ2dhYmxlUG9wdXBNb2RlID0gZmFsc2U7XG4gICAgdGhpcy5hZG1pblBhbmVsSXNPcGVuID0gZmFsc2U7XG4gIH1cblxuICBzaG93KCkge1xuICAgIHRoaXMuZHJhZ2dhYmxlUG9wdXBNb2RlID0gZmFsc2U7XG4gICAgdGhpcy5hZG1pblBhbmVsSXNPcGVuID0gdHJ1ZTtcbiAgfVxuXG4gIGxvZ291dCgpIHt9XG5cbn1cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRhb24gbGliL3VpL3Rhb24tYWRtaW4tbW9kZS1jb25maWd1cmF0aW9uL3Rhb24tYWRtaW4uc2VydmljZS50cyJdfQ==
@@ -18,4 +18,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
18
18
  }] });
19
19
  ;
20
20
  ({}); // @--end-of-file-for-module=taon lib/ui/taon-notifications/taon-notifications.module.ts
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFvbi1ub3RpZmljYXRpb25zLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0LXdlYnNxbC90YW9uL3Byb2plY3RzL3Rhb24vc3JjL2xpYi91aS90YW9uLW5vdGlmaWNhdGlvbnMvdGFvbi1ub3RpZmljYXRpb25zLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBSzVFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQWN4RSxNQUFNLE9BQU8sdUJBQXVCOzhHQUF2Qix1QkFBdUI7K0dBQXZCLHVCQUF1QixpQkFIbkIsMEJBQTBCLGFBRC9CLDBCQUEwQjsrR0FJekIsdUJBQXVCLGFBRnZCLENBQUMsd0JBQXdCLENBQUM7OzJGQUUxQix1QkFBdUI7a0JBWm5DLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLEVBTVI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsMEJBQTBCLENBQUM7b0JBQ3JDLFlBQVksRUFBRSxDQUFDLDBCQUEwQixDQUFDO29CQUMxQyxTQUFTLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztpQkFDdEM7O0FBSUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx3RkFBd0YiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRhb25Ob3RpZmljYXRpb25zQ29tcG9uZW50IH0gZnJvbSAnLi90YW9uLW5vdGlmaWNhdGlvbnMuY29tcG9uZW50JztcblxuXG5cbmltcG9ydCB7IEJyb3dzZXJBbmltYXRpb25zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcbmltcG9ydCB7IFRhb25Ob3RpZmljYXRpb25zU2VydmljZSB9IGZyb20gJy4vdGFvbi1ub3RpZmljYXRpb25zLnNlcnZpY2UnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG5cblxuXG5cblxuICBdLFxuICBleHBvcnRzOiBbVGFvbk5vdGlmaWNhdGlvbnNDb21wb25lbnRdLFxuICBkZWNsYXJhdGlvbnM6IFtUYW9uTm90aWZpY2F0aW9uc0NvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW1Rhb25Ob3RpZmljYXRpb25zU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIFRhb25Ob3RpZmljYXRpb25zTW9kdWxlIHt9XG5cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRhb24gbGliL3VpL3Rhb24tbm90aWZpY2F0aW9ucy90YW9uLW5vdGlmaWNhdGlvbnMubW9kdWxlLnRzIl19
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFvbi1ub3RpZmljYXRpb25zLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0LXdlYnNxbC90YW9uL3Byb2plY3RzL3Rhb24vc3JjL2xpYi91aS90YW9uLW5vdGlmaWNhdGlvbnMvdGFvbi1ub3RpZmljYXRpb25zLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBSTVFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQWN4RSxNQUFNLE9BQU8sdUJBQXVCOzhHQUF2Qix1QkFBdUI7K0dBQXZCLHVCQUF1QixpQkFIbkIsMEJBQTBCLGFBRC9CLDBCQUEwQjsrR0FJekIsdUJBQXVCLGFBRnZCLENBQUMsd0JBQXdCLENBQUM7OzJGQUUxQix1QkFBdUI7a0JBWm5DLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLEVBTVI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsMEJBQTBCLENBQUM7b0JBQ3JDLFlBQVksRUFBRSxDQUFDLDBCQUEwQixDQUFDO29CQUMxQyxTQUFTLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztpQkFDdEM7O0FBSUEsQ0FBQztBQUFBLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx3RkFBd0YiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuXG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRhb25Ob3RpZmljYXRpb25zQ29tcG9uZW50IH0gZnJvbSAnLi90YW9uLW5vdGlmaWNhdGlvbnMuY29tcG9uZW50JztcblxuXG5pbXBvcnQgeyBCcm93c2VyQW5pbWF0aW9uc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBUYW9uTm90aWZpY2F0aW9uc1NlcnZpY2UgfSBmcm9tICcuL3Rhb24tbm90aWZpY2F0aW9ucy5zZXJ2aWNlJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuXG5cblxuXG5cbiAgXSxcbiAgZXhwb3J0czogW1Rhb25Ob3RpZmljYXRpb25zQ29tcG9uZW50XSxcbiAgZGVjbGFyYXRpb25zOiBbVGFvbk5vdGlmaWNhdGlvbnNDb21wb25lbnRdLFxuICBwcm92aWRlcnM6IFtUYW9uTm90aWZpY2F0aW9uc1NlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBUYW9uTm90aWZpY2F0aW9uc01vZHVsZSB7fVxuXG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10YW9uIGxpYi91aS90YW9uLW5vdGlmaWNhdGlvbnMvdGFvbi1ub3RpZmljYXRpb25zLm1vZHVsZS50cyJdfQ==
@@ -47,4 +47,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
47
47
  }] } });
48
48
  ;
49
49
  ({}); // @--end-of-file-for-module=taon lib/ui/taon-progress-bar/taon-progress-bar.component.ts
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFvbi1wcm9ncmVzcy1iYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3Rhb24vcHJvamVjdHMvdGFvbi9zcmMvbGliL3VpL3Rhb24tcHJvZ3Jlc3MtYmFyL3Rhb24tcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0LXdlYnNxbC90YW9uL3Byb2plY3RzL3Rhb24vc3JjL2xpYi91aS90YW9uLXByb2dyZXNzLWJhci90YW9uLXByb2dyZXNzLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUksU0FBUyxFQUFtQyxLQUFLLEVBQXdCLFNBQVMsR0FBRyxNQUFNLGVBQWUsQ0FBQyxDQUFBLEtBQUs7QUFVM0gsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXBDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQTRDLGFBQWEsR0FBRyxNQUFNLGlCQUFpQixDQUFDLENBQUEsS0FBSzs7O0FBU2hHLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7QUFRaEYsTUFBTSxPQUFPLHdCQUF3QjtJQXdCbkM7UUFwQkEsYUFBUSxHQUFtQixFQUFFLENBQUM7UUFDOUIsWUFBTyxHQUFxQixDQUFDLENBQUMsS0FBSyxDQUNqQztZQUNFLEdBQUcsRUFBRSxDQUFDO1lBQ04sR0FBRyxFQUFFLEdBQUc7WUFDUixLQUFLLEVBQUUsR0FBRztZQUNWLFlBQVksRUFBRSxHQUFHO1lBQ2pCLFlBQVksRUFBRSxDQUFDO1lBQ2YsSUFBSSxFQUFFLFFBQVE7WUFDZCxlQUFlLEVBQUUsT0FBTztZQUN4QixTQUFTLEVBQUUsTUFBTTtZQUNqQixLQUFLLEVBQUUsTUFBTTtZQUNiLEtBQUssRUFBRSxJQUFJO1lBQ1gsTUFBTSxFQUFFLElBQUk7WUFDWixPQUFPLEVBQUUsSUFBSTtZQUNiLEtBQUssRUFBRSxLQUFLO1NBQ2IsRUFDRCxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSw0QkFBNEIsQ0FBQyxDQUN6QyxDQUFDO0lBRWEsQ0FBQztJQUVoQixRQUFRLEtBQUksQ0FBQztJQUViLFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxlQUFlO1FBRWIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQU0sRUFBRSxRQUFRLEdBQUcsS0FBSztJQWdHeEMsQ0FBQzs4R0FySVUsd0JBQXdCO2tHQUF4Qix3QkFBd0IseU1DakNyQyx1c0JBdUJBOzsyRkRVYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0UsbUJBQW1CO3dEQUtILFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDZixTQUFTO3NCQUFqQixLQUFLOztBQXVJUCxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHlGQUF5RiIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cbmltcG9ydCB7ICAgQ29tcG9uZW50LCAgIEV2ZW50RW1pdHRlciwgICBIb3N0QmluZGluZywgICBJbnB1dCwgICBPbkluaXQsICAgT3V0cHV0LCAgIFZpZXdDaGlsZCwgfSBmcm9tICdAYW5ndWxhci9jb3JlJzsvKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBfIH0gZnJvbSAndG5wLWNvcmUvd2Vic3FsJztcblxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7ICAgTmdQcm9ncmVzc0NvbmZpZywgICBOZ1Byb2dyZXNzTW9kdWxlLCAgIE5nUHJvZ3Jlc3NSZWYsIH0gZnJvbSAnbmd4LXByb2dyZXNzYmFyJzsvKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuIC8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IFRhb24gfSBmcm9tICcuLi8uLi8uLi9saWInO1xuXG5cblxuY29uc3QgY2FsY3VsYXRlUGVyY2VudGFnZSA9IChsb2FkZWQsIHRvdGFsKSA9PiBNYXRoLmZsb29yKGxvYWRlZCAqIDEuMCkgLyB0b3RhbDtcbmRlY2xhcmUgY29uc3QgRU5WOiBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Rhb24tcHJvZ3Jlc3MtYmFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Rhb24tcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFvbi1wcm9ncmVzcy1iYXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFvblByb2dyZXNzQmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQFZpZXdDaGlsZCgnbGFiUHJvZ3Jlc3MnKSBsYWJQcm9ncmVzczogTmdQcm9ncmVzc1JlZjtcbiAgQElucHV0KCkgaXNEZXNrdG9wOiBib29sZWFuO1xuICBhZG1pbjogYW55OyAvL1RPRE8gQExBU1RcbiAgaGFuZGxlcnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIG9wdGlvbnM6IE5nUHJvZ3Jlc3NDb25maWcgPSBfLm1lcmdlKFxuICAgIHtcbiAgICAgIG1pbjogOCxcbiAgICAgIG1heDogMTAwLFxuICAgICAgc3BlZWQ6IDIwMCxcbiAgICAgIHRyaWNrbGVTcGVlZDogMzAwLFxuICAgICAgZGVib3VuY2VUaW1lOiAwLFxuICAgICAgZWFzZTogJ2xpbmVhcicsXG4gICAgICBzcGlubmVyUG9zaXRpb246ICdyaWdodCcsXG4gICAgICBkaXJlY3Rpb246ICdsdHIrJyxcbiAgICAgIGNvbG9yOiAnZ3JheScsXG4gICAgICBmaXhlZDogdHJ1ZSxcbiAgICAgIG1ldGVvcjogdHJ1ZSxcbiAgICAgIHNwaW5uZXI6IHRydWUsXG4gICAgICB0aGljazogZmFsc2UsXG4gICAgfSxcbiAgICBfLmdldChFTlYsIGBwbHVnaW5zWyduZ3gtcHJvZ3Jlc3NiYXInXWApLFxuICApO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpIHt9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5oYW5kbGVycy5mb3JFYWNoKGggPT4gaC51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcblxuICAgIHRoaXMubG9hZFByb2dyZXNzQmFyKHZvaWQgMCwgYXhpb3MpO1xuICB9XG5cbiAgbG9hZFByb2dyZXNzQmFyKGNvbmZpZywgaW5zdGFuY2UgPSBheGlvcykge1xuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbiAgfVxufVxuXG5cbiA7KHt9KTsgLy8gQC0tZW5kLW9mLWZpbGUtZm9yLW1vZHVsZT10YW9uIGxpYi91aS90YW9uLXByb2dyZXNzLWJhci90YW9uLXByb2dyZXNzLWJhci5jb21wb25lbnQudHMiLCI8bmctcHJvZ3Jlc3NcbiAgI2xhYlByb2dyZXNzXG4gIGlkPVwibGFiXCJcbiAgW21ldGVvcl09XCJvcHRpb25zLm1ldGVvclwiXG4gIFtjb2xvcl09XCJvcHRpb25zLmNvbG9yXCJcbiAgW21pbl09XCJvcHRpb25zLm1pblwiXG4gIFttYXhdPVwib3B0aW9ucy5tYXhcIlxuICBbc3BlZWRdPVwib3B0aW9ucy5zcGVlZFwiXG4gIFtzcGlubmVyXT1cIlxuICAgIG9wdGlvbnMuc3Bpbm5lciAmJlxuICAgICghYWRtaW4uYWRtaW5QYW5lbElzT3BlbiB8fFxuICAgICAgKGFkbWluLmFkbWluUGFuZWxJc09wZW4gJiYgKGFkbWluLmRyYWdnYWJsZVBvcHVwTW9kZSB8fCAhaXNEZXNrdG9wKSkpXG4gIFwiXG4gIFtzcGlubmVyUG9zaXRpb25dPVwib3B0aW9ucy5zcGlubmVyUG9zaXRpb25cIlxuICBbZGlyZWN0aW9uXT1cIm9wdGlvbnMuZGlyZWN0aW9uXCJcbiAgW3RyaWNrbGVTcGVlZF09XCJvcHRpb25zLnRyaWNrbGVTcGVlZFwiXG4gIFtkZWJvdW5jZVRpbWVdPVwib3B0aW9ucy5kZWJvdW5jZVRpbWVcIlxuICBbZWFzZV09XCJvcHRpb25zLmVhc2VcIlxuICBbdGhpY2tdPVwib3B0aW9ucy50aGlja1wiXG4gIFtmaXhlZF09XCJvcHRpb25zLmZpeGVkXCI+XG48L25nLXByb2dyZXNzPlxuPCEtLSAoc3RhcnRlZCk9XCJvblByb2dyZXNzU3RhcnRlZCgpXCJcbiAgICAgICAgICAgICAoY29tcGxldGVkKT1cIm9uUHJvZ3Jlc3NDb21wbGV0ZWQoKVwiIC0tPlxuIl19
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFvbi1wcm9ncmVzcy1iYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vdG1wLWxpYnMtZm9yLWRpc3Qtd2Vic3FsL3Rhb24vcHJvamVjdHMvdGFvbi9zcmMvbGliL3VpL3Rhb24tcHJvZ3Jlc3MtYmFyL3Rhb24tcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3RtcC1saWJzLWZvci1kaXN0LXdlYnNxbC90YW9uL3Byb2plY3RzL3Rhb24vc3JjL2xpYi91aS90YW9uLXByb2dyZXNzLWJhci90YW9uLXByb2dyZXNzLWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUksU0FBUyxFQUFtQyxLQUFLLEVBQXdCLFNBQVMsR0FBRyxNQUFNLGVBQWUsQ0FBQyxDQUFBLEtBQUs7QUFVM0gsT0FBTyxFQUFFLENBQUMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXBDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQTRDLGFBQWEsR0FBRyxNQUFNLGlCQUFpQixDQUFDLENBQUEsS0FBSzs7O0FBU2hHLE1BQU0sbUJBQW1CLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUM7QUFRaEYsTUFBTSxPQUFPLHdCQUF3QjtJQXdCbkM7UUFwQkEsYUFBUSxHQUFtQixFQUFFLENBQUM7UUFDOUIsWUFBTyxHQUFxQixDQUFDLENBQUMsS0FBSyxDQUNqQztZQUNFLEdBQUcsRUFBRSxDQUFDO1lBQ04sR0FBRyxFQUFFLEdBQUc7WUFDUixLQUFLLEVBQUUsR0FBRztZQUNWLFlBQVksRUFBRSxHQUFHO1lBQ2pCLFlBQVksRUFBRSxDQUFDO1lBQ2YsSUFBSSxFQUFFLFFBQVE7WUFDZCxlQUFlLEVBQUUsT0FBTztZQUN4QixTQUFTLEVBQUUsTUFBTTtZQUNqQixLQUFLLEVBQUUsTUFBTTtZQUNiLEtBQUssRUFBRSxJQUFJO1lBQ1gsTUFBTSxFQUFFLElBQUk7WUFDWixPQUFPLEVBQUUsSUFBSTtZQUNiLEtBQUssRUFBRSxLQUFLO1NBQ2IsRUFDRCxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSw0QkFBNEIsQ0FBQyxDQUN6QyxDQUFDO0lBRWEsQ0FBQztJQUVoQixRQUFRLEtBQUksQ0FBQztJQUViLFdBQVc7UUFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxlQUFlO1FBRWIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsZUFBZSxDQUFDLE1BQU0sRUFBRSxRQUFRLEdBQUcsS0FBSztJQWdHeEMsQ0FBQzs4R0FySVUsd0JBQXdCO2tHQUF4Qix3QkFBd0IseU1DakNyQyx1c0JBdUJBOzsyRkRVYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0UsbUJBQW1CO3dEQUtILFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDZixTQUFTO3NCQUFqQixLQUFLOztBQXVJUCxDQUFDO0FBQUEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLHlGQUF5RiIsInNvdXJjZXNDb250ZW50IjpbIlxuXG5cbmltcG9ydCB7ICAgQ29tcG9uZW50LCAgIEV2ZW50RW1pdHRlciwgICBIb3N0QmluZGluZywgICBJbnB1dCwgICBPbkluaXQsICAgT3V0cHV0LCAgIFZpZXdDaGlsZCwgfSBmcm9tICdAYW5ndWxhci9jb3JlJzsvKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuLyogKi9cblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBfIH0gZnJvbSAndG5wLWNvcmUvd2Vic3FsJztcblxuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7ICAgTmdQcm9ncmVzc0NvbmZpZywgICBOZ1Byb2dyZXNzTW9kdWxlLCAgIE5nUHJvZ3Jlc3NSZWYsIH0gZnJvbSAnbmd4LXByb2dyZXNzYmFyJzsvKiAqL1xuLyogKi9cbi8qICovXG4vKiAqL1xuIC8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IFRhb24gfSBmcm9tICcuLi8uLi8uLi9saWInO1xuXG5cblxuY29uc3QgY2FsY3VsYXRlUGVyY2VudGFnZSA9IChsb2FkZWQsIHRvdGFsKSA9PiBNYXRoLmZsb29yKGxvYWRlZCAqIDEuMCkgLyB0b3RhbDtcbmRlY2xhcmUgY29uc3QgRU5WOiBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3Rhb24tcHJvZ3Jlc3MtYmFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Rhb24tcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFvbi1wcm9ncmVzcy1iYXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgVGFvblByb2dyZXNzQmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQFZpZXdDaGlsZCgnbGFiUHJvZ3Jlc3MnKSBsYWJQcm9ncmVzczogTmdQcm9ncmVzc1JlZjtcbiAgQElucHV0KCkgaXNEZXNrdG9wOiBib29sZWFuO1xuICBhZG1pbjogYW55O1xuICBoYW5kbGVyczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgb3B0aW9uczogTmdQcm9ncmVzc0NvbmZpZyA9IF8ubWVyZ2UoXG4gICAge1xuICAgICAgbWluOiA4LFxuICAgICAgbWF4OiAxMDAsXG4gICAgICBzcGVlZDogMjAwLFxuICAgICAgdHJpY2tsZVNwZWVkOiAzMDAsXG4gICAgICBkZWJvdW5jZVRpbWU6IDAsXG4gICAgICBlYXNlOiAnbGluZWFyJyxcbiAgICAgIHNwaW5uZXJQb3NpdGlvbjogJ3JpZ2h0JyxcbiAgICAgIGRpcmVjdGlvbjogJ2x0cisnLFxuICAgICAgY29sb3I6ICdncmF5JyxcbiAgICAgIGZpeGVkOiB0cnVlLFxuICAgICAgbWV0ZW9yOiB0cnVlLFxuICAgICAgc3Bpbm5lcjogdHJ1ZSxcbiAgICAgIHRoaWNrOiBmYWxzZSxcbiAgICB9LFxuICAgIF8uZ2V0KEVOViwgYHBsdWdpbnNbJ25neC1wcm9ncmVzc2JhciddYCksXG4gICk7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCkge31cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmhhbmRsZXJzLmZvckVhY2goaCA9PiBoLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuXG4gICAgdGhpcy5sb2FkUHJvZ3Jlc3NCYXIodm9pZCAwLCBheGlvcyk7XG4gIH1cblxuICBsb2FkUHJvZ3Jlc3NCYXIoY29uZmlnLCBpbnN0YW5jZSA9IGF4aW9zKSB7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuICB9XG59XG5cblxuIDsoe30pOyAvLyBALS1lbmQtb2YtZmlsZS1mb3ItbW9kdWxlPXRhb24gbGliL3VpL3Rhb24tcHJvZ3Jlc3MtYmFyL3Rhb24tcHJvZ3Jlc3MtYmFyLmNvbXBvbmVudC50cyIsIjxuZy1wcm9ncmVzc1xuICAjbGFiUHJvZ3Jlc3NcbiAgaWQ9XCJsYWJcIlxuICBbbWV0ZW9yXT1cIm9wdGlvbnMubWV0ZW9yXCJcbiAgW2NvbG9yXT1cIm9wdGlvbnMuY29sb3JcIlxuICBbbWluXT1cIm9wdGlvbnMubWluXCJcbiAgW21heF09XCJvcHRpb25zLm1heFwiXG4gIFtzcGVlZF09XCJvcHRpb25zLnNwZWVkXCJcbiAgW3NwaW5uZXJdPVwiXG4gICAgb3B0aW9ucy5zcGlubmVyICYmXG4gICAgKCFhZG1pbi5hZG1pblBhbmVsSXNPcGVuIHx8XG4gICAgICAoYWRtaW4uYWRtaW5QYW5lbElzT3BlbiAmJiAoYWRtaW4uZHJhZ2dhYmxlUG9wdXBNb2RlIHx8ICFpc0Rlc2t0b3ApKSlcbiAgXCJcbiAgW3NwaW5uZXJQb3NpdGlvbl09XCJvcHRpb25zLnNwaW5uZXJQb3NpdGlvblwiXG4gIFtkaXJlY3Rpb25dPVwib3B0aW9ucy5kaXJlY3Rpb25cIlxuICBbdHJpY2tsZVNwZWVkXT1cIm9wdGlvbnMudHJpY2tsZVNwZWVkXCJcbiAgW2RlYm91bmNlVGltZV09XCJvcHRpb25zLmRlYm91bmNlVGltZVwiXG4gIFtlYXNlXT1cIm9wdGlvbnMuZWFzZVwiXG4gIFt0aGlja109XCJvcHRpb25zLnRoaWNrXCJcbiAgW2ZpeGVkXT1cIm9wdGlvbnMuZml4ZWRcIj5cbjwvbmctcHJvZ3Jlc3M+XG48IS0tIChzdGFydGVkKT1cIm9uUHJvZ3Jlc3NTdGFydGVkKClcIlxuICAgICAgICAgICAgIChjb21wbGV0ZWQpPVwib25Qcm9ncmVzc0NvbXBsZXRlZCgpXCIgLS0+XG4iXX0=