@resolveio/client-lib-core 0.0.1

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 (350) hide show
  1. package/esm2020/lib/account-manager.service.mjs +213 -0
  2. package/esm2020/lib/auth/auth-guard.service.mjs +137 -0
  3. package/esm2020/lib/auth/auth-permissions.service.mjs +24 -0
  4. package/esm2020/lib/auth/auth.service.mjs +241 -0
  5. package/esm2020/lib/auth/auth365.component.mjs +44 -0
  6. package/esm2020/lib/auth/can-deactivate-guard.service.mjs +13 -0
  7. package/esm2020/lib/auth/enroll.component.mjs +81 -0
  8. package/esm2020/lib/auth/forgot-password.component.mjs +82 -0
  9. package/esm2020/lib/core.component.mjs +488 -0
  10. package/esm2020/lib/core.module.mjs +179 -0
  11. package/esm2020/lib/core.service.mjs +96 -0
  12. package/esm2020/lib/directive/focus.mjs +22 -0
  13. package/esm2020/lib/directive/scroll.mjs +55 -0
  14. package/esm2020/lib/home/about-us.component.mjs +34 -0
  15. package/esm2020/lib/home/contact-us.component.mjs +57 -0
  16. package/esm2020/lib/home/demo.component.mjs +59 -0
  17. package/esm2020/lib/home/home.component.mjs +105 -0
  18. package/esm2020/lib/home/home.module.mjs +50 -0
  19. package/esm2020/lib/logger/logger.component.mjs +221 -0
  20. package/esm2020/lib/models/app-status.model.mjs +2 -0
  21. package/esm2020/lib/models/collection-document.model.mjs +2 -0
  22. package/esm2020/lib/models/cron-job.model.mjs +2 -0
  23. package/esm2020/lib/models/dialog.model.mjs +2 -0
  24. package/esm2020/lib/models/file.model.mjs +2 -0
  25. package/esm2020/lib/models/log-method-latency.model.mjs +2 -0
  26. package/esm2020/lib/models/navbar-main-tab.model.mjs +2 -0
  27. package/esm2020/lib/models/pagination.model.mjs +2 -0
  28. package/esm2020/lib/models/permission.model.mjs +2 -0
  29. package/esm2020/lib/models/select-data-label.model.mjs +2 -0
  30. package/esm2020/lib/models/subscription.model.mjs +2 -0
  31. package/esm2020/lib/models/support-ticket.model.mjs +2 -0
  32. package/esm2020/lib/models/user-group.model.mjs +2 -0
  33. package/esm2020/lib/models/user.model.mjs +2 -0
  34. package/esm2020/lib/offline-db.mjs +519 -0
  35. package/esm2020/lib/offline-manager.service.mjs +107 -0
  36. package/esm2020/lib/pipes/domsanitizor.pipe.mjs +28 -0
  37. package/esm2020/lib/pipes/filter.pipe.mjs +36 -0
  38. package/esm2020/lib/pipes/json-parse.pipe.mjs +29 -0
  39. package/esm2020/lib/pipes/minus-currency.pipe.mjs +16 -0
  40. package/esm2020/lib/pipes/phone.pipe.mjs +47 -0
  41. package/esm2020/lib/pipes/pipe.module.mjs +54 -0
  42. package/esm2020/lib/pipes/reverse-list.pipe.mjs +17 -0
  43. package/esm2020/lib/pipes/titlecase.pipe.mjs +22 -0
  44. package/esm2020/lib/resolveio-class.mjs +41 -0
  45. package/esm2020/lib/shared/shared.module.mjs +91 -0
  46. package/esm2020/lib/socket-manager.service.mjs +360 -0
  47. package/esm2020/lib/socket.service.mjs +129 -0
  48. package/esm2020/lib/standard-pages/contactus/contactus.component.mjs +45 -0
  49. package/esm2020/lib/standard-pages/faq/faq.component.mjs +45 -0
  50. package/esm2020/lib/standard-pages/features/features.component.mjs +23 -0
  51. package/esm2020/lib/standard-pages/home/home.component.mjs +38 -0
  52. package/esm2020/lib/standard-pages/howitwork/howitwork.component.mjs +23 -0
  53. package/esm2020/lib/standard-pages/loginsignup/loginsignup.component.mjs +23 -0
  54. package/esm2020/lib/standard-pages/pricing/pricing.component.mjs +37 -0
  55. package/esm2020/lib/standard-pages/standard-pages.module.mjs +69 -0
  56. package/esm2020/lib/support-ticket/detail/support-ticket-detail.component.mjs +204 -0
  57. package/esm2020/lib/support-ticket/edit/support-ticket-edit.component.mjs +122 -0
  58. package/esm2020/lib/support-ticket/list/support-ticket-list.component.mjs +137 -0
  59. package/esm2020/lib/support-ticket/new/support-ticket-new.component.mjs +115 -0
  60. package/esm2020/lib/support-ticket/support-ticket.component.mjs +63 -0
  61. package/esm2020/lib/support-ticket/support-ticket.module.mjs +57 -0
  62. package/esm2020/lib/support-ticket/support-ticket.routing.mjs +20 -0
  63. package/esm2020/lib/support-ticket/support-ticket.service.mjs +17 -0
  64. package/esm2020/lib/token-manager.service.mjs +24 -0
  65. package/esm2020/lib/user-settings/settings/users-settings.component.mjs +312 -0
  66. package/esm2020/lib/user-settings/user-settings.component.mjs +57 -0
  67. package/esm2020/lib/user-settings/user-settings.module.mjs +58 -0
  68. package/esm2020/lib/user-settings/user-settings.permission.mjs +10 -0
  69. package/esm2020/lib/user-settings/user-settings.routing.mjs +14 -0
  70. package/esm2020/lib/user-settings/user-settings.service.mjs +17 -0
  71. package/esm2020/lib/util/action-name.helper.mjs +9 -0
  72. package/esm2020/lib/util/aws.service.mjs +79 -0
  73. package/esm2020/lib/util/common.helper.mjs +140 -0
  74. package/esm2020/lib/util/validation.service.mjs +177 -0
  75. package/esm2020/lib/util/window-resize.service.mjs +24 -0
  76. package/esm2020/lib/util/window.service.mjs +16 -0
  77. package/esm2020/lib/widgets/alert/alert.model.mjs +2 -0
  78. package/esm2020/lib/widgets/alert/alert.service.mjs +76 -0
  79. package/esm2020/lib/widgets/chartjs/chart.component.mjs +86 -0
  80. package/esm2020/lib/widgets/chartjs/chart.module.mjs +17 -0
  81. package/esm2020/lib/widgets/collapse-table/collapse-table.component.mjs +79 -0
  82. package/esm2020/lib/widgets/collapse-table/collapse-table.module.mjs +36 -0
  83. package/esm2020/lib/widgets/data-table/data-table.component.mjs +77 -0
  84. package/esm2020/lib/widgets/data-table/data-table.model.mjs +2 -0
  85. package/esm2020/lib/widgets/data-table/data-table.module.mjs +43 -0
  86. package/esm2020/lib/widgets/date-shortcut/date-shortcut.component.mjs +195 -0
  87. package/esm2020/lib/widgets/date-shortcut/date-shortcut.module.mjs +34 -0
  88. package/esm2020/lib/widgets/dialog/dialog.confirm.content.mjs +63 -0
  89. package/esm2020/lib/widgets/dialog/dialog.error.content.mjs +57 -0
  90. package/esm2020/lib/widgets/dialog/dialog.input.content.mjs +197 -0
  91. package/esm2020/lib/widgets/dialog/dialog.login.content.mjs +348 -0
  92. package/esm2020/lib/widgets/dialog/dialog.notify.content.mjs +57 -0
  93. package/esm2020/lib/widgets/dialog/dialog.register.content.mjs +330 -0
  94. package/esm2020/lib/widgets/dialog/dialog.select-data-labels.content.mjs +191 -0
  95. package/esm2020/lib/widgets/dialog/dialog.select-datetime.content.mjs +140 -0
  96. package/esm2020/lib/widgets/dialog/dialog.service.mjs +71 -0
  97. package/esm2020/lib/widgets/file/file-upload.component.mjs +440 -0
  98. package/esm2020/lib/widgets/file/file-upload.module.mjs +50 -0
  99. package/esm2020/lib/widgets/form-button/form-button.component.mjs +91 -0
  100. package/esm2020/lib/widgets/form-button/form-button.module.mjs +30 -0
  101. package/esm2020/lib/widgets/navbar-main/navbar-main.component.mjs +209 -0
  102. package/esm2020/lib/widgets/navbar-module/navbar-module.component.mjs +138 -0
  103. package/esm2020/lib/widgets/navbar-module/navbar-module.model.mjs +2 -0
  104. package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/ng-bootstrap-tour.service.mjs +14 -0
  105. package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/ng-bootstrap.module.mjs +34 -0
  106. package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/step-option.interface.mjs +2 -0
  107. package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/tour-anchor.directive.mjs +76 -0
  108. package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/tour-step-template.component.mjs +70 -0
  109. package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/tour-step-template.service.mjs +10 -0
  110. package/esm2020/lib/widgets/responsive-button-group/responsive-button-group.component.mjs +38 -0
  111. package/esm2020/lib/widgets/responsive-button-group/responsive-button-group.module.mjs +26 -0
  112. package/esm2020/lib/widgets/scheduler/scheduler.component.mjs +185 -0
  113. package/esm2020/lib/widgets/scheduler/scheduler.module.mjs +39 -0
  114. package/esm2020/lib/widgets/sort-table/sort-table-header.component.mjs +67 -0
  115. package/esm2020/lib/widgets/sort-table/sort-table-ngfor.component.mjs +48 -0
  116. package/esm2020/lib/widgets/sort-table/sort-table.directive.mjs +174 -0
  117. package/esm2020/lib/widgets/sort-table/sort-table.module.mjs +40 -0
  118. package/esm2020/lib/widgets/user-role/user-role.component.mjs +27 -0
  119. package/esm2020/lib/widgets/user-role/user-role.module.mjs +26 -0
  120. package/esm2020/public_api.mjs +109 -0
  121. package/esm2020/resolveio-client-lib-core.mjs +5 -0
  122. package/fesm2015/resolveio-client-lib-core.mjs +8856 -0
  123. package/fesm2015/resolveio-client-lib-core.mjs.map +1 -0
  124. package/fesm2020/resolveio-client-lib-core.mjs +8849 -0
  125. package/fesm2020/resolveio-client-lib-core.mjs.map +1 -0
  126. package/lib/account-manager.service.d.ts +42 -0
  127. package/lib/auth/auth-guard.service.d.ts +25 -0
  128. package/lib/auth/auth-permissions.service.d.ts +10 -0
  129. package/lib/auth/auth.service.d.ts +29 -0
  130. package/lib/auth/auth365.component.d.ts +20 -0
  131. package/lib/auth/can-deactivate-guard.service.d.ts +11 -0
  132. package/lib/auth/enroll.component.d.ts +28 -0
  133. package/lib/auth/forgot-password.component.d.ts +28 -0
  134. package/lib/core.component.d.ts +69 -0
  135. package/lib/core.module.d.ts +32 -0
  136. package/lib/core.service.d.ts +53 -0
  137. package/lib/directive/focus.d.ts +10 -0
  138. package/lib/directive/scroll.d.ts +20 -0
  139. package/lib/home/about-us.component.d.ts +15 -0
  140. package/lib/home/contact-us.component.d.ts +20 -0
  141. package/lib/home/demo.component.d.ts +25 -0
  142. package/lib/home/home.component.d.ts +33 -0
  143. package/lib/home/home.module.d.ts +13 -0
  144. package/lib/logger/logger.component.d.ts +37 -0
  145. package/lib/models/app-status.model.d.ts +4 -0
  146. package/lib/models/collection-document.model.d.ts +6 -0
  147. package/lib/models/cron-job.model.d.ts +13 -0
  148. package/lib/models/dialog.model.d.ts +18 -0
  149. package/lib/models/file.model.d.ts +9 -0
  150. package/lib/models/log-method-latency.model.d.ts +7 -0
  151. package/lib/models/navbar-main-tab.model.d.ts +14 -0
  152. package/lib/models/pagination.model.d.ts +17 -0
  153. package/lib/models/permission.model.d.ts +13 -0
  154. package/lib/models/select-data-label.model.d.ts +9 -0
  155. package/lib/models/subscription.model.d.ts +19 -0
  156. package/lib/models/support-ticket.model.d.ts +71 -0
  157. package/lib/models/user-group.model.d.ts +19 -0
  158. package/lib/models/user.model.d.ts +70 -0
  159. package/lib/offline-db.d.ts +28 -0
  160. package/lib/offline-manager.service.d.ts +23 -0
  161. package/lib/pipes/domsanitizor.pipe.d.ts +10 -0
  162. package/lib/pipes/filter.pipe.d.ts +12 -0
  163. package/lib/pipes/json-parse.pipe.d.ts +7 -0
  164. package/lib/pipes/minus-currency.pipe.d.ts +7 -0
  165. package/lib/pipes/phone.pipe.d.ts +7 -0
  166. package/lib/pipes/pipe.module.d.ts +13 -0
  167. package/lib/pipes/reverse-list.pipe.d.ts +6 -0
  168. package/lib/pipes/titlecase.pipe.d.ts +7 -0
  169. package/lib/resolveio-class.d.ts +26 -0
  170. package/lib/shared/shared.module.d.ts +16 -0
  171. package/lib/socket-manager.service.d.ts +33 -0
  172. package/lib/socket.service.d.ts +33 -0
  173. package/lib/standard-pages/contactus/contactus.component.d.ts +17 -0
  174. package/lib/standard-pages/faq/faq.component.d.ts +17 -0
  175. package/lib/standard-pages/features/features.component.d.ts +12 -0
  176. package/lib/standard-pages/home/home.component.d.ts +14 -0
  177. package/lib/standard-pages/howitwork/howitwork.component.d.ts +12 -0
  178. package/lib/standard-pages/loginsignup/loginsignup.component.d.ts +12 -0
  179. package/lib/standard-pages/pricing/pricing.component.d.ts +14 -0
  180. package/lib/standard-pages/standard-pages.module.d.ts +17 -0
  181. package/lib/support-ticket/detail/support-ticket-detail.component.d.ts +32 -0
  182. package/lib/support-ticket/edit/support-ticket-edit.component.d.ts +30 -0
  183. package/lib/support-ticket/list/support-ticket-list.component.d.ts +26 -0
  184. package/lib/support-ticket/new/support-ticket-new.component.d.ts +26 -0
  185. package/lib/support-ticket/support-ticket.component.d.ts +20 -0
  186. package/lib/support-ticket/support-ticket.module.d.ts +16 -0
  187. package/lib/support-ticket/support-ticket.routing.d.ts +3 -0
  188. package/lib/support-ticket/support-ticket.service.d.ts +9 -0
  189. package/lib/token-manager.service.d.ts +11 -0
  190. package/lib/user-settings/settings/users-settings.component.d.ts +57 -0
  191. package/lib/user-settings/user-settings.component.d.ts +20 -0
  192. package/lib/user-settings/user-settings.module.d.ts +15 -0
  193. package/lib/user-settings/user-settings.permission.d.ts +2 -0
  194. package/lib/user-settings/user-settings.routing.d.ts +3 -0
  195. package/lib/user-settings/user-settings.service.d.ts +9 -0
  196. package/lib/util/action-name.helper.d.ts +1 -0
  197. package/lib/util/aws.service.d.ts +16 -0
  198. package/lib/util/common.helper.d.ts +12 -0
  199. package/lib/util/validation.service.d.ts +85 -0
  200. package/lib/util/window-resize.service.d.ts +12 -0
  201. package/lib/util/window.service.d.ts +6 -0
  202. package/lib/widgets/alert/alert.model.d.ts +1 -0
  203. package/lib/widgets/alert/alert.service.d.ts +11 -0
  204. package/lib/widgets/chartjs/chart.component.d.ts +22 -0
  205. package/lib/widgets/chartjs/chart.module.d.ts +8 -0
  206. package/lib/widgets/collapse-table/collapse-table.component.d.ts +23 -0
  207. package/lib/widgets/collapse-table/collapse-table.module.d.ts +9 -0
  208. package/lib/widgets/data-table/data-table.component.d.ts +23 -0
  209. package/lib/widgets/data-table/data-table.model.d.ts +13 -0
  210. package/lib/widgets/data-table/data-table.module.d.ts +12 -0
  211. package/lib/widgets/date-shortcut/date-shortcut.component.d.ts +20 -0
  212. package/lib/widgets/date-shortcut/date-shortcut.module.d.ts +10 -0
  213. package/lib/widgets/dialog/dialog.confirm.content.d.ts +12 -0
  214. package/lib/widgets/dialog/dialog.error.content.d.ts +11 -0
  215. package/lib/widgets/dialog/dialog.input.content.d.ts +18 -0
  216. package/lib/widgets/dialog/dialog.login.content.d.ts +16 -0
  217. package/lib/widgets/dialog/dialog.notify.content.d.ts +11 -0
  218. package/lib/widgets/dialog/dialog.register.content.d.ts +13 -0
  219. package/lib/widgets/dialog/dialog.select-data-labels.content.d.ts +22 -0
  220. package/lib/widgets/dialog/dialog.select-datetime.content.d.ts +16 -0
  221. package/lib/widgets/dialog/dialog.service.d.ts +18 -0
  222. package/lib/widgets/file/file-upload.component.d.ts +49 -0
  223. package/lib/widgets/file/file-upload.module.d.ts +14 -0
  224. package/lib/widgets/form-button/form-button.component.d.ts +14 -0
  225. package/lib/widgets/form-button/form-button.module.d.ts +9 -0
  226. package/lib/widgets/navbar-main/navbar-main.component.d.ts +52 -0
  227. package/lib/widgets/navbar-module/navbar-module.component.d.ts +24 -0
  228. package/lib/widgets/navbar-module/navbar-module.model.d.ts +13 -0
  229. package/lib/widgets/ngx-tour-ng-bootstrap/ng-bootstrap-tour.service.d.ts +7 -0
  230. package/lib/widgets/ngx-tour-ng-bootstrap/ng-bootstrap.module.d.ts +17 -0
  231. package/lib/widgets/ngx-tour-ng-bootstrap/step-option.interface.d.ts +5 -0
  232. package/lib/widgets/ngx-tour-ng-bootstrap/tour-anchor.directive.d.ts +26 -0
  233. package/lib/widgets/ngx-tour-ng-bootstrap/tour-step-template.component.d.ts +20 -0
  234. package/lib/widgets/ngx-tour-ng-bootstrap/tour-step-template.service.d.ts +9 -0
  235. package/lib/widgets/responsive-button-group/responsive-button-group.component.d.ts +17 -0
  236. package/lib/widgets/responsive-button-group/responsive-button-group.module.d.ts +8 -0
  237. package/lib/widgets/scheduler/scheduler.component.d.ts +50 -0
  238. package/lib/widgets/scheduler/scheduler.module.d.ts +11 -0
  239. package/lib/widgets/sort-table/sort-table-header.component.d.ts +23 -0
  240. package/lib/widgets/sort-table/sort-table-ngfor.component.d.ts +17 -0
  241. package/lib/widgets/sort-table/sort-table.directive.d.ts +48 -0
  242. package/lib/widgets/sort-table/sort-table.module.d.ts +11 -0
  243. package/lib/widgets/user-role/user-role.component.d.ts +10 -0
  244. package/lib/widgets/user-role/user-role.module.d.ts +8 -0
  245. package/package.json +72 -0
  246. package/public_api.d.ts +105 -0
  247. package/resolveio-client-lib-core.d.ts +5 -0
  248. package/src/assets/css/font-awesome.css +2338 -0
  249. package/src/assets/css/home-page-layout.css +7221 -0
  250. package/src/assets/css/home-page-theme.css +1157 -0
  251. package/src/assets/css/leaflet.css +629 -0
  252. package/src/assets/css/owl.carousel.min.css +1 -0
  253. package/src/assets/css/owl.theme.min.css +1 -0
  254. package/src/assets/css/style.css +1283 -0
  255. package/src/assets/css/tablet.css +18 -0
  256. package/src/assets/css/toastr.css +192 -0
  257. package/src/assets/images/ResolveIO.png +0 -0
  258. package/src/assets/images/ResolveIO_white.png +0 -0
  259. package/src/assets/images/contactus/Contact_bnr.jpg +0 -0
  260. package/src/assets/images/contactus/cont-comp.png +0 -0
  261. package/src/assets/images/contactus/cont-mail.png +0 -0
  262. package/src/assets/images/contactus/cont-phone.png +0 -0
  263. package/src/assets/images/contactus/form-img.png +0 -0
  264. package/src/assets/images/contactus/user.png +0 -0
  265. package/src/assets/images/faq/Faq-form.png +0 -0
  266. package/src/assets/images/faq/clientlogo1.jpg +0 -0
  267. package/src/assets/images/faq/clientlogo2.jpg +0 -0
  268. package/src/assets/images/faq/clientlogo3.jpg +0 -0
  269. package/src/assets/images/faq/clientlogo4.jpg +0 -0
  270. package/src/assets/images/faq/clientlogo5.jpg +0 -0
  271. package/src/assets/images/faq/faq_banner copy.jpg +0 -0
  272. package/src/assets/images/faq/faq_banner.jpg +0 -0
  273. package/src/assets/images/faq/faqwomen.jpg +0 -0
  274. package/src/assets/images/faq/mail-input.png +0 -0
  275. package/src/assets/images/faq/user-input.png +0 -0
  276. package/src/assets/images/favicon-32x32.png +0 -0
  277. package/src/assets/images/features/future-bnr.jpg +0 -0
  278. package/src/assets/images/features/polygon.png +0 -0
  279. package/src/assets/images/home/banner-1.jpg +0 -0
  280. package/src/assets/images/home/booking.png +0 -0
  281. package/src/assets/images/home/client.jpg +0 -0
  282. package/src/assets/images/home/client2.jpg +0 -0
  283. package/src/assets/images/home/clientlogo1.jpg +0 -0
  284. package/src/assets/images/home/clientlogo2.jpg +0 -0
  285. package/src/assets/images/home/clientlogo3.jpg +0 -0
  286. package/src/assets/images/home/clientlogo4.jpg +0 -0
  287. package/src/assets/images/home/clientlogo5.jpg +0 -0
  288. package/src/assets/images/home/easy_invoicing.png +0 -0
  289. package/src/assets/images/home/inventory.png +0 -0
  290. package/src/assets/images/home/manage.png +0 -0
  291. package/src/assets/images/home/more.png +0 -0
  292. package/src/assets/images/home/order_management.png +0 -0
  293. package/src/assets/images/home/plan.png +0 -0
  294. package/src/assets/images/home-page/AjaxLoader.gif +0 -0
  295. package/src/assets/images/home-page/ResolveIO_white.png +0 -0
  296. package/src/assets/images/home-page/abt_thumb.png +0 -0
  297. package/src/assets/images/home-page/aero_icon_right_white.png +0 -0
  298. package/src/assets/images/home-page/arrow_btn.png +0 -0
  299. package/src/assets/images/home-page/banner_thumb.png +0 -0
  300. package/src/assets/images/home-page/blank.gif +0 -0
  301. package/src/assets/images/home-page/close_icon.png +0 -0
  302. package/src/assets/images/home-page/contact_bg.jpg +0 -0
  303. package/src/assets/images/home-page/email_icon.png +0 -0
  304. package/src/assets/images/home-page/fancybox_loading.gif +0 -0
  305. package/src/assets/images/home-page/fancybox_loading@2x.gif +0 -0
  306. package/src/assets/images/home-page/fancybox_overlay.png +0 -0
  307. package/src/assets/images/home-page/fancybox_sprite.png +0 -0
  308. package/src/assets/images/home-page/fancybox_sprite@2x.png +0 -0
  309. package/src/assets/images/home-page/header_center_after.png +0 -0
  310. package/src/assets/images/home-page/header_left_after.png +0 -0
  311. package/src/assets/images/home-page/home_banner_1.jpg +0 -0
  312. package/src/assets/images/home-page/logo.png +0 -0
  313. package/src/assets/images/home-page/logo_thumb_ace.png +0 -0
  314. package/src/assets/images/home-page/logo_thumb_acquire.png +0 -0
  315. package/src/assets/images/home-page/logo_thumb_chemtech.jpeg +0 -0
  316. package/src/assets/images/home-page/logo_thumb_cherokee.png +0 -0
  317. package/src/assets/images/home-page/logo_thumb_coilchem.png +0 -0
  318. package/src/assets/images/home-page/logo_thumb_dcs.png +0 -0
  319. package/src/assets/images/home-page/logo_thumb_integrity.png +0 -0
  320. package/src/assets/images/home-page/logo_thumb_intrepid.png +0 -0
  321. package/src/assets/images/home-page/logo_thumb_omt.png +0 -0
  322. package/src/assets/images/home-page/logo_thumb_quantum.png +0 -0
  323. package/src/assets/images/home-page/logo_thumb_smartchemical.png +0 -0
  324. package/src/assets/images/home-page/logo_thumb_terra.png +0 -0
  325. package/src/assets/images/home-page/logo_thumb_truechem.png +0 -0
  326. package/src/assets/images/home-page/password_icon.png +0 -0
  327. package/src/assets/images/home-page/phone_icon.png +0 -0
  328. package/src/assets/images/home-page/software_icon_1.png +0 -0
  329. package/src/assets/images/home-page/software_icon_2.png +0 -0
  330. package/src/assets/images/home-page/software_sec_bg.jpg +0 -0
  331. package/src/assets/images/home-page/software_thumb.png +0 -0
  332. package/src/assets/images/home-page/white_arrow_btn.png +0 -0
  333. package/src/assets/images/howitwork/add-booking.png +0 -0
  334. package/src/assets/images/howitwork/add-order.png +0 -0
  335. package/src/assets/images/howitwork/add-stuff.png +0 -0
  336. package/src/assets/images/howitwork/how_banner.jpg +0 -0
  337. package/src/assets/images/howitwork/howimg1.png +0 -0
  338. package/src/assets/images/howitwork/howimg2.png +0 -0
  339. package/src/assets/images/howitwork/step-check.png +0 -0
  340. package/src/assets/images/loginsignup/formimg.jpg +0 -0
  341. package/src/assets/images/loginsignup/login-logo.png +0 -0
  342. package/src/assets/images/owl.video.play.png +0 -0
  343. package/src/assets/images/pricing/Pricing_banner.jpg +0 -0
  344. package/src/assets/images/pricing/clientlogo1.jpg +0 -0
  345. package/src/assets/images/pricing/clientlogo2.jpg +0 -0
  346. package/src/assets/images/pricing/clientlogo3.jpg +0 -0
  347. package/src/assets/images/pricing/clientlogo4.jpg +0 -0
  348. package/src/assets/images/pricing/clientlogo5.jpg +0 -0
  349. package/src/assets/images/pricing/info-ico.png +0 -0
  350. package/src/assets/scss/toastr.scss +201 -0
@@ -0,0 +1,197 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
3
+ import { FormControl, FormBuilder } from '@angular/forms';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@ng-bootstrap/ng-bootstrap";
6
+ import * as i2 from "@angular/forms";
7
+ import * as i3 from "@ng-select/ng-select";
8
+ import * as i4 from "../form-button/form-button.component";
9
+ import * as i5 from "@angular/common";
10
+ import * as i6 from "../../directive/focus";
11
+ // tslint:disable-next-line:component-class-suffix
12
+ export class DialogInputContent {
13
+ constructor(_activeModal, _fb) {
14
+ this._activeModal = _activeModal;
15
+ this._fb = _fb;
16
+ this.title = '';
17
+ this.inputFields = [];
18
+ this.states = [
19
+ 'Alabama', 'Alaska', 'Arizona', 'Arkansas', 'California', 'Colorado', 'Connecticut', 'Delaware', 'Florida', 'Georgia', 'Hawaii', 'Idaho', 'Illinois', 'Indiana', 'Iowa', 'Kansas', 'Kentucky', 'Louisiana', 'Maine',
20
+ 'Maryland', 'Massachusetts', 'Michigan', 'Minnesota', 'Mississippi', 'Missouri', 'Montana', 'Nebraska', 'Nevada', 'New Hampshire', 'New Jersey', 'New Mexico', 'New York', 'North Carolina', 'North Dakota', 'Ohio',
21
+ 'Oklahoma', 'Oregon', 'Pennsylvania', 'Rhode Island', 'South Carolina', 'South Dakota', 'Tennessee', 'Texas', 'Utah', 'Vermont', 'Virginia', 'Washington', 'West Virginia', 'Wisconsin', 'Wyoming'
22
+ ];
23
+ }
24
+ ngOnInit() {
25
+ this.formInput = this._fb.group({});
26
+ for (let i = 0; i < this.inputFields.length; i++) {
27
+ if (this.inputFields[i].validators === null) {
28
+ this.formInput.addControl(this.inputFields[i].form, new FormControl({ value: this.inputFields[i].data, disabled: this.inputFields[i].disabled }));
29
+ }
30
+ else {
31
+ this.formInput.addControl(this.inputFields[i].form, new FormControl({ value: this.inputFields[i].data, disabled: this.inputFields[i].disabled }, this.inputFields[i].validators));
32
+ }
33
+ }
34
+ }
35
+ validateInput(inputField, formInput) {
36
+ if (inputField.disabled) {
37
+ return '';
38
+ }
39
+ let valid = true;
40
+ for (let i = 0; i < inputField.validators.length; i++) {
41
+ if (formInput.controls[inputField.form].hasError([inputField.validatorErrors[i]])) {
42
+ valid = false;
43
+ }
44
+ }
45
+ if (valid && formInput.controls[inputField.form].value !== null) {
46
+ return 'is-valid';
47
+ }
48
+ else if (!inputField.validators.length || (!inputField.required && valid)) {
49
+ return '';
50
+ }
51
+ return 'is-invalid';
52
+ }
53
+ getErrorMessages(inputField, formInput) {
54
+ let res = [];
55
+ for (let i = 0; i < inputField.validators.length; i++) {
56
+ if (formInput.controls[inputField.form].hasError([inputField.validatorErrors[i]])) {
57
+ res.push(inputField.validatorMsg[i]);
58
+ }
59
+ }
60
+ return res;
61
+ }
62
+ }
63
+ DialogInputContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DialogInputContent, deps: [{ token: i1.NgbActiveModal }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
64
+ DialogInputContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: DialogInputContent, selector: "ng-component", inputs: { title: "title", inputFields: "inputFields" }, ngImport: i0, template: `
65
+ <form [formGroup]="formInput" novalidate (ngSubmit)="_activeModal.close(this.formInput.controls)">
66
+ <div class="modal-header">
67
+ <h4 class="modal-title"><i class="fa fa-plus-circle" style="color: green; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>
68
+ <button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()">
69
+ <span aria-hidden="true">&times;</span>
70
+ </button>
71
+ </div>
72
+ <div class="modal-body">
73
+ <div *ngFor="let inputField of inputFields; let i = index">
74
+ <div class="form-group">
75
+ <label class="form-control-label">{{inputField.label}}</label>
76
+ <em *ngIf="formInput.controls[inputField.form].hasError('required') && inputField.required">- Required</em>
77
+ <em *ngIf="!formInput.controls[inputField.form].hasError('required') && formInput.controls[inputField.form].invalid">- Invalid</em>
78
+ <div *ngIf="inputField.type !== 'state' && inputField.type !== 'textarea' && inputField.type !== 'number' && inputField.type !== 'select' && inputField.type !== 'boolean'">
79
+ <input [autofocus]="i === 0 ? true : false" [focus]="i === 0 ? true : false" [formControlName]="inputField.form" [ngClass]="['form-control', validateInput(inputField, formInput)]" [type]="(inputField.type ? inputField.type : 'text')">
80
+ <ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">
81
+ <div class="invalid-feedback">{{errorMsg}}</div>
82
+ </ng-container>
83
+ </div>
84
+ <div *ngIf="inputField.type === 'select'">
85
+ <ng-select [formControlName]="inputField.form" [ngClass]="[validateInput(inputField, formInput)]" [placeholder]="inputField.placeholder">
86
+ <ng-option *ngFor="let opt of inputField.options" [value]="opt.value" [disabled]="opt.value === 'disabled'">{{opt.text}}</ng-option>
87
+ </ng-select>
88
+ <ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">
89
+ <div class="invalid-feedback">{{errorMsg}}</div>
90
+ </ng-container>
91
+ </div>
92
+ <div *ngIf="inputField.type === 'state'">
93
+ <select [formControlName]="inputField.form" [ngClass]="['form-control', validateInput(inputField, formInput)]">
94
+ <option value="">Select State</option>
95
+ <option *ngFor="let state of states" [value]="state">{{state}}</option>
96
+ </select>
97
+ <ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">
98
+ <div class="invalid-feedback">{{errorMsg}}</div>
99
+ </ng-container>
100
+ </div>
101
+ <div *ngIf="inputField.type === 'textarea'">
102
+ <textarea rows="4" [formControlName]="inputField.form" [ngClass]="['form-control', validateInput(inputField, formInput)]"></textarea>
103
+ <ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">
104
+ <div class="invalid-feedback">{{errorMsg}}</div>
105
+ </ng-container>
106
+ </div>
107
+ <div *ngIf="inputField.type === 'number'">
108
+ <input [formControlName]="inputField.form" type="number" [ngClass]="['form-control', validateInput(inputField, formInput)]">
109
+ <ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">
110
+ <div class="invalid-feedback">{{errorMsg}}</div>
111
+ </ng-container>
112
+ </div>
113
+ <div *ngIf="inputField.type === 'boolean'" (click)="formInput.controls[inputField.form].setValue(!formInput.controls[inputField.form].value)">
114
+ <i *ngIf="formInput.controls[inputField.form].value" class="fa fa-check" style="color: green; font-size: 24px;" aria-hidden="true"></i>
115
+ <i *ngIf="!formInput.controls[inputField.form].value" class="fa fa-times" style="color: red; font-size: 24px;" aria-hidden="true"></i>
116
+ </div>
117
+ </div>
118
+ </div>
119
+ </div>
120
+ <div class="modal-footer">
121
+ <form-button [form]="formInput"></form-button>
122
+ <button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>
123
+ </div>
124
+ </form>
125
+ `, isInline: true, components: [{ type: i3.NgSelectComponent, selector: "ng-select", inputs: ["bindLabel", "bindValue", "markFirst", "placeholder", "notFoundText", "typeToSearchText", "addTagText", "loadingText", "clearAllText", "appearance", "dropdownPosition", "appendTo", "loading", "closeOnSelect", "hideSelected", "selectOnTab", "openOnEnter", "maxSelectedItems", "groupBy", "groupValue", "bufferAmount", "virtualScroll", "selectableGroup", "selectableGroupAsModel", "searchFn", "trackByFn", "clearOnBackspace", "labelForId", "inputAttrs", "tabIndex", "readonly", "searchWhileComposing", "minTermLength", "editableSearchTerm", "keyDownFn", "typeahead", "multiple", "addTag", "searchable", "clearable", "isOpen", "items", "compareWith", "clearSearchOnAdd"], outputs: ["blur", "focus", "change", "open", "close", "search", "clear", "add", "remove", "scroll", "scrollToEnd"] }, { type: i3.NgOptionComponent, selector: "ng-option", inputs: ["value", "disabled"] }, { type: i4.FormButtonComponent, selector: "form-button", inputs: ["form", "disabled"] }], directives: [{ type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i6.FocusDirective, selector: "[focus]", inputs: ["focus"] }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }] });
126
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DialogInputContent, decorators: [{
127
+ type: Component,
128
+ args: [{
129
+ template: `
130
+ <form [formGroup]="formInput" novalidate (ngSubmit)="_activeModal.close(this.formInput.controls)">
131
+ <div class="modal-header">
132
+ <h4 class="modal-title"><i class="fa fa-plus-circle" style="color: green; font-size: 0.85em" aria-hidden="true"></i> {{ title }}</h4>
133
+ <button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()">
134
+ <span aria-hidden="true">&times;</span>
135
+ </button>
136
+ </div>
137
+ <div class="modal-body">
138
+ <div *ngFor="let inputField of inputFields; let i = index">
139
+ <div class="form-group">
140
+ <label class="form-control-label">{{inputField.label}}</label>
141
+ <em *ngIf="formInput.controls[inputField.form].hasError('required') && inputField.required">- Required</em>
142
+ <em *ngIf="!formInput.controls[inputField.form].hasError('required') && formInput.controls[inputField.form].invalid">- Invalid</em>
143
+ <div *ngIf="inputField.type !== 'state' && inputField.type !== 'textarea' && inputField.type !== 'number' && inputField.type !== 'select' && inputField.type !== 'boolean'">
144
+ <input [autofocus]="i === 0 ? true : false" [focus]="i === 0 ? true : false" [formControlName]="inputField.form" [ngClass]="['form-control', validateInput(inputField, formInput)]" [type]="(inputField.type ? inputField.type : 'text')">
145
+ <ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">
146
+ <div class="invalid-feedback">{{errorMsg}}</div>
147
+ </ng-container>
148
+ </div>
149
+ <div *ngIf="inputField.type === 'select'">
150
+ <ng-select [formControlName]="inputField.form" [ngClass]="[validateInput(inputField, formInput)]" [placeholder]="inputField.placeholder">
151
+ <ng-option *ngFor="let opt of inputField.options" [value]="opt.value" [disabled]="opt.value === 'disabled'">{{opt.text}}</ng-option>
152
+ </ng-select>
153
+ <ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">
154
+ <div class="invalid-feedback">{{errorMsg}}</div>
155
+ </ng-container>
156
+ </div>
157
+ <div *ngIf="inputField.type === 'state'">
158
+ <select [formControlName]="inputField.form" [ngClass]="['form-control', validateInput(inputField, formInput)]">
159
+ <option value="">Select State</option>
160
+ <option *ngFor="let state of states" [value]="state">{{state}}</option>
161
+ </select>
162
+ <ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">
163
+ <div class="invalid-feedback">{{errorMsg}}</div>
164
+ </ng-container>
165
+ </div>
166
+ <div *ngIf="inputField.type === 'textarea'">
167
+ <textarea rows="4" [formControlName]="inputField.form" [ngClass]="['form-control', validateInput(inputField, formInput)]"></textarea>
168
+ <ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">
169
+ <div class="invalid-feedback">{{errorMsg}}</div>
170
+ </ng-container>
171
+ </div>
172
+ <div *ngIf="inputField.type === 'number'">
173
+ <input [formControlName]="inputField.form" type="number" [ngClass]="['form-control', validateInput(inputField, formInput)]">
174
+ <ng-container *ngFor="let errorMsg of getErrorMessages(inputField, formInput);">
175
+ <div class="invalid-feedback">{{errorMsg}}</div>
176
+ </ng-container>
177
+ </div>
178
+ <div *ngIf="inputField.type === 'boolean'" (click)="formInput.controls[inputField.form].setValue(!formInput.controls[inputField.form].value)">
179
+ <i *ngIf="formInput.controls[inputField.form].value" class="fa fa-check" style="color: green; font-size: 24px;" aria-hidden="true"></i>
180
+ <i *ngIf="!formInput.controls[inputField.form].value" class="fa fa-times" style="color: red; font-size: 24px;" aria-hidden="true"></i>
181
+ </div>
182
+ </div>
183
+ </div>
184
+ </div>
185
+ <div class="modal-footer">
186
+ <form-button [form]="formInput"></form-button>
187
+ <button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>
188
+ </div>
189
+ </form>
190
+ `
191
+ }]
192
+ }], ctorParameters: function () { return [{ type: i1.NgbActiveModal }, { type: i2.FormBuilder }]; }, propDecorators: { title: [{
193
+ type: Input
194
+ }], inputFields: [{
195
+ type: Input
196
+ }] } });
197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmlucHV0LmNvbnRlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvd2lkZ2V0cy9kaWFsb2cvZGlhbG9nLmlucHV0LmNvbnRlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFZLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RFLE9BQU8sRUFBeUIsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7OztBQWtFakYsa0RBQWtEO0FBQ2xELE1BQU0sT0FBTyxrQkFBa0I7SUFXOUIsWUFBbUIsWUFBNEIsRUFBVSxHQUFnQjtRQUF0RCxpQkFBWSxHQUFaLFlBQVksQ0FBZ0I7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFhO1FBVmhFLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxnQkFBVyxHQUFVLEVBQUUsQ0FBQztRQUlqQyxXQUFNLEdBQWE7WUFDbEIsU0FBUyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsT0FBTztZQUNuTixVQUFVLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLE1BQU07WUFDbk4sVUFBVSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLFNBQVM7U0FBQyxDQUFDO0lBRXpILENBQUM7SUFFN0UsUUFBUTtRQUNQLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFcEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2pELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLEtBQUssSUFBSSxFQUFFO2dCQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLFdBQVcsQ0FBQyxFQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEo7aUJBQ0k7Z0JBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFDLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO2FBQ2hMO1NBQ0Q7SUFDRixDQUFDO0lBRUQsYUFBYSxDQUFDLFVBQVUsRUFBRSxTQUFTO1FBRWxDLElBQUksVUFBVSxDQUFDLFFBQVEsRUFBRTtZQUN4QixPQUFPLEVBQUUsQ0FBQztTQUNWO1FBRUQsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBRWpCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN0RCxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNsRixLQUFLLEdBQUcsS0FBSyxDQUFDO2FBQ2Q7U0FDRDtRQUVELElBQUksS0FBSyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDaEUsT0FBTyxVQUFVLENBQUM7U0FDbEI7YUFDSSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLEVBQUU7WUFDMUUsT0FBTyxFQUFFLENBQUM7U0FDVjtRQUVELE9BQU8sWUFBWSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsU0FBUztRQUNyQyxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFFYixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDdEQsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDbEYsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDckM7U0FDRDtRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ1osQ0FBQzs7K0dBNURXLGtCQUFrQjttR0FBbEIsa0JBQWtCLDRHQWhFcEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE2RFQ7MkZBR1csa0JBQWtCO2tCQWpFOUIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUE2RFQ7aUJBQ0Q7K0hBR1MsS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nYk1vZGFsLCBOZ2JBY3RpdmVNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IFZhbGlkYXRvcnMsIEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5AQ29tcG9uZW50KHtcblx0dGVtcGxhdGU6IGBcblx0XHQ8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1JbnB1dFwiIG5vdmFsaWRhdGUgKG5nU3VibWl0KT1cIl9hY3RpdmVNb2RhbC5jbG9zZSh0aGlzLmZvcm1JbnB1dC5jb250cm9scylcIj5cblx0XHRcdDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cblx0XHRcdFx0PGg0IGNsYXNzPVwibW9kYWwtdGl0bGVcIj48aSBjbGFzcz1cImZhIGZhLXBsdXMtY2lyY2xlXCIgc3R5bGU9XCJjb2xvcjogZ3JlZW47IGZvbnQtc2l6ZTogMC44NWVtXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPiB7eyB0aXRsZSB9fTwvaDQ+XG5cdFx0XHRcdDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2VcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiAoY2xpY2spPVwiX2FjdGl2ZU1vZGFsLmRpc21pc3MoKVwiPlxuXHRcdFx0XHRcdDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XG5cdFx0XHRcdDwvYnV0dG9uPlxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuXHRcdFx0XHQ8ZGl2ICpuZ0Zvcj1cImxldCBpbnB1dEZpZWxkIG9mIGlucHV0RmllbGRzOyBsZXQgaSA9IGluZGV4XCI+XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cblx0XHRcdFx0XHRcdDxsYWJlbCBjbGFzcz1cImZvcm0tY29udHJvbC1sYWJlbFwiPnt7aW5wdXRGaWVsZC5sYWJlbH19PC9sYWJlbD5cblx0XHRcdFx0XHRcdDxlbSAqbmdJZj1cImZvcm1JbnB1dC5jb250cm9sc1tpbnB1dEZpZWxkLmZvcm1dLmhhc0Vycm9yKCdyZXF1aXJlZCcpICYmIGlucHV0RmllbGQucmVxdWlyZWRcIj4tIFJlcXVpcmVkPC9lbT5cblx0XHRcdFx0XHRcdDxlbSAqbmdJZj1cIiFmb3JtSW5wdXQuY29udHJvbHNbaW5wdXRGaWVsZC5mb3JtXS5oYXNFcnJvcigncmVxdWlyZWQnKSAmJiBmb3JtSW5wdXQuY29udHJvbHNbaW5wdXRGaWVsZC5mb3JtXS5pbnZhbGlkXCI+LSBJbnZhbGlkPC9lbT5cblx0XHRcdFx0XHRcdDxkaXYgKm5nSWY9XCJpbnB1dEZpZWxkLnR5cGUgIT09ICdzdGF0ZScgJiYgaW5wdXRGaWVsZC50eXBlICE9PSAndGV4dGFyZWEnICYmIGlucHV0RmllbGQudHlwZSAhPT0gJ251bWJlcicgJiYgaW5wdXRGaWVsZC50eXBlICE9PSAnc2VsZWN0JyAmJiBpbnB1dEZpZWxkLnR5cGUgIT09ICdib29sZWFuJ1wiPlxuXHRcdFx0XHRcdFx0PGlucHV0IFthdXRvZm9jdXNdPVwiaSA9PT0gMCA/IHRydWUgOiBmYWxzZVwiIFtmb2N1c109XCJpID09PSAwID8gdHJ1ZSA6IGZhbHNlXCIgW2Zvcm1Db250cm9sTmFtZV09XCJpbnB1dEZpZWxkLmZvcm1cIiBbbmdDbGFzc109XCJbJ2Zvcm0tY29udHJvbCcsIHZhbGlkYXRlSW5wdXQoaW5wdXRGaWVsZCwgZm9ybUlucHV0KV1cIiBbdHlwZV09XCIoaW5wdXRGaWVsZC50eXBlID8gaW5wdXRGaWVsZC50eXBlIDogJ3RleHQnKVwiPlxuXHRcdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlcnJvck1zZyBvZiBnZXRFcnJvck1lc3NhZ2VzKGlucHV0RmllbGQsIGZvcm1JbnB1dCk7XCI+XG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj57e2Vycm9yTXNnfX08L2Rpdj5cblx0XHRcdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdDxkaXYgKm5nSWY9XCJpbnB1dEZpZWxkLnR5cGUgPT09ICdzZWxlY3QnXCI+XG5cdFx0XHRcdFx0XHRcdDxuZy1zZWxlY3QgW2Zvcm1Db250cm9sTmFtZV09XCJpbnB1dEZpZWxkLmZvcm1cIiBbbmdDbGFzc109XCJbdmFsaWRhdGVJbnB1dChpbnB1dEZpZWxkLCBmb3JtSW5wdXQpXVwiIFtwbGFjZWhvbGRlcl09XCJpbnB1dEZpZWxkLnBsYWNlaG9sZGVyXCI+XG5cdFx0XHRcdFx0XHRcdFx0PG5nLW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0IG9mIGlucHV0RmllbGQub3B0aW9uc1wiIFt2YWx1ZV09XCJvcHQudmFsdWVcIiBbZGlzYWJsZWRdPVwib3B0LnZhbHVlID09PSAnZGlzYWJsZWQnXCI+e3tvcHQudGV4dH19PC9uZy1vcHRpb24+XG5cdFx0XHRcdFx0XHRcdDwvbmctc2VsZWN0PlxuXHRcdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlcnJvck1zZyBvZiBnZXRFcnJvck1lc3NhZ2VzKGlucHV0RmllbGQsIGZvcm1JbnB1dCk7XCI+XG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj57e2Vycm9yTXNnfX08L2Rpdj5cblx0XHRcdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdDxkaXYgKm5nSWY9XCJpbnB1dEZpZWxkLnR5cGUgPT09ICdzdGF0ZSdcIj5cblx0XHRcdFx0XHRcdFx0PHNlbGVjdCBbZm9ybUNvbnRyb2xOYW1lXT1cImlucHV0RmllbGQuZm9ybVwiIFtuZ0NsYXNzXT1cIlsnZm9ybS1jb250cm9sJywgdmFsaWRhdGVJbnB1dChpbnB1dEZpZWxkLCBmb3JtSW5wdXQpXVwiPlxuXHRcdFx0XHRcdFx0XHRcdDxvcHRpb24gdmFsdWU9XCJcIj5TZWxlY3QgU3RhdGU8L29wdGlvbj5cblx0XHRcdFx0XHRcdFx0XHQ8b3B0aW9uICpuZ0Zvcj1cImxldCBzdGF0ZSBvZiBzdGF0ZXNcIiBbdmFsdWVdPVwic3RhdGVcIj57e3N0YXRlfX08L29wdGlvbj5cblx0XHRcdFx0XHRcdFx0PC9zZWxlY3Q+XG5cdFx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVycm9yTXNnIG9mIGdldEVycm9yTWVzc2FnZXMoaW5wdXRGaWVsZCwgZm9ybUlucHV0KTtcIj5cblx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPnt7ZXJyb3JNc2d9fTwvZGl2PlxuXHRcdFx0XHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cblx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0PGRpdiAqbmdJZj1cImlucHV0RmllbGQudHlwZSA9PT0gJ3RleHRhcmVhJ1wiPlxuXHRcdFx0XHRcdFx0XHQ8dGV4dGFyZWEgcm93cz1cIjRcIiBbZm9ybUNvbnRyb2xOYW1lXT1cImlucHV0RmllbGQuZm9ybVwiIFtuZ0NsYXNzXT1cIlsnZm9ybS1jb250cm9sJywgdmFsaWRhdGVJbnB1dChpbnB1dEZpZWxkLCBmb3JtSW5wdXQpXVwiPjwvdGV4dGFyZWE+XG5cdFx0XHRcdFx0XHRcdDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVycm9yTXNnIG9mIGdldEVycm9yTWVzc2FnZXMoaW5wdXRGaWVsZCwgZm9ybUlucHV0KTtcIj5cblx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPnt7ZXJyb3JNc2d9fTwvZGl2PlxuXHRcdFx0XHRcdFx0XHQ8L25nLWNvbnRhaW5lcj5cblx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0PGRpdiAqbmdJZj1cImlucHV0RmllbGQudHlwZSA9PT0gJ251bWJlcidcIj5cblx0XHRcdFx0XHRcdFx0PGlucHV0IFtmb3JtQ29udHJvbE5hbWVdPVwiaW5wdXRGaWVsZC5mb3JtXCIgdHlwZT1cIm51bWJlclwiIFtuZ0NsYXNzXT1cIlsnZm9ybS1jb250cm9sJywgdmFsaWRhdGVJbnB1dChpbnB1dEZpZWxkLCBmb3JtSW5wdXQpXVwiPlxuXHRcdFx0XHRcdFx0XHQ8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlcnJvck1zZyBvZiBnZXRFcnJvck1lc3NhZ2VzKGlucHV0RmllbGQsIGZvcm1JbnB1dCk7XCI+XG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj57e2Vycm9yTXNnfX08L2Rpdj5cblx0XHRcdFx0XHRcdFx0PC9uZy1jb250YWluZXI+XG5cdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdDxkaXYgKm5nSWY9XCJpbnB1dEZpZWxkLnR5cGUgPT09ICdib29sZWFuJ1wiIChjbGljayk9XCJmb3JtSW5wdXQuY29udHJvbHNbaW5wdXRGaWVsZC5mb3JtXS5zZXRWYWx1ZSghZm9ybUlucHV0LmNvbnRyb2xzW2lucHV0RmllbGQuZm9ybV0udmFsdWUpXCI+XG5cdFx0XHRcdFx0XHRcdDxpICpuZ0lmPVwiZm9ybUlucHV0LmNvbnRyb2xzW2lucHV0RmllbGQuZm9ybV0udmFsdWVcIiBjbGFzcz1cImZhIGZhLWNoZWNrXCIgc3R5bGU9XCJjb2xvcjogZ3JlZW47IGZvbnQtc2l6ZTogMjRweDtcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG5cdFx0XHRcdFx0XHRcdDxpICpuZ0lmPVwiIWZvcm1JbnB1dC5jb250cm9sc1tpbnB1dEZpZWxkLmZvcm1dLnZhbHVlXCIgY2xhc3M9XCJmYSBmYS10aW1lc1wiIHN0eWxlPVwiY29sb3I6IHJlZDsgZm9udC1zaXplOiAyNHB4O1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cblx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxuXHRcdFx0XHQ8Zm9ybS1idXR0b24gW2Zvcm1dPVwiZm9ybUlucHV0XCI+PC9mb3JtLWJ1dHRvbj5cblx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJfYWN0aXZlTW9kYWwuZGlzbWlzcygpXCI+Q2FuY2VsPC9idXR0b24+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Zvcm0+XG5cdGBcbn0pXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Y29tcG9uZW50LWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGNsYXNzIERpYWxvZ0lucHV0Q29udGVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cdEBJbnB1dCgpIHRpdGxlID0gJyc7XG5cdEBJbnB1dCgpIGlucHV0RmllbGRzOiBhbnlbXSA9IFtdO1xuXG5cdGZvcm1JbnB1dDogRm9ybUdyb3VwO1xuXG5cdHN0YXRlczogc3RyaW5nW10gPSBbXG5cdFx0J0FsYWJhbWEnLCAnQWxhc2thJywgJ0FyaXpvbmEnLCAnQXJrYW5zYXMnLCAnQ2FsaWZvcm5pYScsICdDb2xvcmFkbycsICdDb25uZWN0aWN1dCcsICdEZWxhd2FyZScsICdGbG9yaWRhJywgJ0dlb3JnaWEnLCAnSGF3YWlpJywgJ0lkYWhvJywgJ0lsbGlub2lzJywgJ0luZGlhbmEnLCAnSW93YScsICdLYW5zYXMnLCAnS2VudHVja3knLCAnTG91aXNpYW5hJywgJ01haW5lJyxcblx0XHQnTWFyeWxhbmQnLCAnTWFzc2FjaHVzZXR0cycsICdNaWNoaWdhbicsICdNaW5uZXNvdGEnLCAnTWlzc2lzc2lwcGknLCAnTWlzc291cmknLCAnTW9udGFuYScsICdOZWJyYXNrYScsICdOZXZhZGEnLCAnTmV3IEhhbXBzaGlyZScsICdOZXcgSmVyc2V5JywgJ05ldyBNZXhpY28nLCAnTmV3IFlvcmsnLCAnTm9ydGggQ2Fyb2xpbmEnLCAnTm9ydGggRGFrb3RhJywgJ09oaW8nLFxuXHRcdCdPa2xhaG9tYScsICdPcmVnb24nLCAnUGVubnN5bHZhbmlhJywgJ1Job2RlIElzbGFuZCcsICdTb3V0aCBDYXJvbGluYScsICdTb3V0aCBEYWtvdGEnLCAnVGVubmVzc2VlJywgJ1RleGFzJywgJ1V0YWgnLCAnVmVybW9udCcsICdWaXJnaW5pYScsICdXYXNoaW5ndG9uJywgJ1dlc3QgVmlyZ2luaWEnLCAnV2lzY29uc2luJywgJ1d5b21pbmcnXTtcblxuXHRjb25zdHJ1Y3RvcihwdWJsaWMgX2FjdGl2ZU1vZGFsOiBOZ2JBY3RpdmVNb2RhbCwgcHJpdmF0ZSBfZmI6IEZvcm1CdWlsZGVyKSB7fVxuXG5cdG5nT25Jbml0KCkge1xuXHRcdHRoaXMuZm9ybUlucHV0ID0gdGhpcy5fZmIuZ3JvdXAoe30pO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmlucHV0RmllbGRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRpZiAodGhpcy5pbnB1dEZpZWxkc1tpXS52YWxpZGF0b3JzID09PSBudWxsKSB7XG5cdFx0XHRcdHRoaXMuZm9ybUlucHV0LmFkZENvbnRyb2wodGhpcy5pbnB1dEZpZWxkc1tpXS5mb3JtLCBuZXcgRm9ybUNvbnRyb2woe3ZhbHVlOiB0aGlzLmlucHV0RmllbGRzW2ldLmRhdGEsIGRpc2FibGVkOiB0aGlzLmlucHV0RmllbGRzW2ldLmRpc2FibGVkfSkpO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSB7XG5cdFx0XHRcdHRoaXMuZm9ybUlucHV0LmFkZENvbnRyb2wodGhpcy5pbnB1dEZpZWxkc1tpXS5mb3JtLCBuZXcgRm9ybUNvbnRyb2woe3ZhbHVlOiB0aGlzLmlucHV0RmllbGRzW2ldLmRhdGEsIGRpc2FibGVkOiB0aGlzLmlucHV0RmllbGRzW2ldLmRpc2FibGVkfSwgdGhpcy5pbnB1dEZpZWxkc1tpXS52YWxpZGF0b3JzKSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0dmFsaWRhdGVJbnB1dChpbnB1dEZpZWxkLCBmb3JtSW5wdXQpIHtcblxuXHRcdGlmIChpbnB1dEZpZWxkLmRpc2FibGVkKSB7XG5cdFx0XHRyZXR1cm4gJyc7XG5cdFx0fVxuXG5cdFx0bGV0IHZhbGlkID0gdHJ1ZTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXRGaWVsZC52YWxpZGF0b3JzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRpZiAoZm9ybUlucHV0LmNvbnRyb2xzW2lucHV0RmllbGQuZm9ybV0uaGFzRXJyb3IoW2lucHV0RmllbGQudmFsaWRhdG9yRXJyb3JzW2ldXSkpIHtcblx0XHRcdFx0dmFsaWQgPSBmYWxzZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAodmFsaWQgJiYgZm9ybUlucHV0LmNvbnRyb2xzW2lucHV0RmllbGQuZm9ybV0udmFsdWUgIT09IG51bGwpIHtcblx0XHRcdHJldHVybiAnaXMtdmFsaWQnO1xuXHRcdH1cblx0XHRlbHNlIGlmICghaW5wdXRGaWVsZC52YWxpZGF0b3JzLmxlbmd0aCB8fCAoIWlucHV0RmllbGQucmVxdWlyZWQgJiYgdmFsaWQpKSB7XG5cdFx0XHRyZXR1cm4gJyc7XG5cdFx0fVxuXHRcdFxuXHRcdHJldHVybiAnaXMtaW52YWxpZCc7XG5cdH1cblxuXHRnZXRFcnJvck1lc3NhZ2VzKGlucHV0RmllbGQsIGZvcm1JbnB1dCkge1xuXHRcdGxldCByZXMgPSBbXTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXRGaWVsZC52YWxpZGF0b3JzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRpZiAoZm9ybUlucHV0LmNvbnRyb2xzW2lucHV0RmllbGQuZm9ybV0uaGFzRXJyb3IoW2lucHV0RmllbGQudmFsaWRhdG9yRXJyb3JzW2ldXSkpIHtcblx0XHRcdFx0cmVzLnB1c2goaW5wdXRGaWVsZC52YWxpZGF0b3JNc2dbaV0pO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiByZXM7XG5cdH1cbn1cbiJdfQ==
@@ -0,0 +1,348 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
3
+ import { FormBuilder, Validators } from '@angular/forms';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "@ng-bootstrap/ng-bootstrap";
6
+ import * as i2 from "@angular/forms";
7
+ import * as i3 from "../responsive-button-group/responsive-button-group.component";
8
+ import * as i4 from "@angular/common";
9
+ import * as i5 from "../../directive/focus";
10
+ // tslint:disable-next-line:component-class-suffix
11
+ export class DialogLoginContent {
12
+ constructor(_activeModal, _fb) {
13
+ this._activeModal = _activeModal;
14
+ this._fb = _fb;
15
+ this.msAllowed = false;
16
+ }
17
+ ngOnInit() {
18
+ this.form = this._fb.group({
19
+ username: ['', [Validators.required]],
20
+ password: ['', [Validators.required]],
21
+ forgotPassword: [false],
22
+ });
23
+ }
24
+ toggleForgotPassword() {
25
+ this.form.controls.forgotPassword.setValue(!this.form.controls.forgotPassword.value);
26
+ if (!this.form.controls.forgotPassword.value) {
27
+ this.form.controls.password.setValidators([Validators.required]);
28
+ this.form.controls.password.enable();
29
+ }
30
+ else {
31
+ this.form.controls.password.setValue('');
32
+ this.form.controls.password.clearValidators();
33
+ this.form.controls.password.disable();
34
+ }
35
+ this.form.controls.password.updateValueAndValidity();
36
+ }
37
+ close(type) {
38
+ this._activeModal.close({
39
+ form: this.form,
40
+ type: type
41
+ });
42
+ }
43
+ }
44
+ DialogLoginContent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DialogLoginContent, deps: [{ token: i1.NgbActiveModal }, { token: i2.FormBuilder }], target: i0.ɵɵFactoryTarget.Component });
45
+ DialogLoginContent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.1.1", type: DialogLoginContent, selector: "ng-component", inputs: { msAllowed: "msAllowed" }, ngImport: i0, template: `
46
+ <style>
47
+ collapse-table {
48
+ width: 100%;
49
+ }
50
+
51
+ .navbar-light .navbar-nav .active>.nav-link, .navbar-light .navbar-nav .nav-link.active, .navbar-light .navbar-nav .nav-link.show, .navbar-light .navbar-nav .show>.nav-link {
52
+ color: #0b4499;
53
+ }
54
+ .navbar-light .navbar-nav .nav-link {
55
+ color:#333;
56
+ }
57
+ a.nav-link.loginreg {
58
+ background-color: #0b4499;
59
+ color: #fff !important;
60
+ border-radius: 40px;
61
+ }
62
+ a.nav-link.loginreg:hover {
63
+ background: #1668e2;
64
+ }
65
+ .nav-link {
66
+ color: #333333;
67
+ font-size: 150%
68
+ }
69
+ .nav-item a.nav-link.active {
70
+ color: #0b4499;
71
+ }
72
+ .contactimg>img{
73
+ width: 100%;
74
+ }
75
+
76
+ .log-box {
77
+ padding-top: 26px;
78
+ padding-bottom: 26px;
79
+ }
80
+ .loginform .form-control, .register-form .form-control {
81
+ color: #000;
82
+ height: 52px;
83
+ }
84
+ .loginform {
85
+ margin-top: 35px;
86
+ }
87
+ .loginform label {
88
+ font-size: 18px;
89
+ font-weight: 600;
90
+ }
91
+
92
+ .loginbtn {
93
+ background: #0b4499;
94
+ width: 100%;
95
+ margin-top: 44px;
96
+ height: 52px;
97
+ font-size: 22px;
98
+ border-radius: 2px;
99
+ color: #fff !important;
100
+ }
101
+
102
+ .login365btn {
103
+ background: orange;
104
+ width: 100%;
105
+ margin-top: 44px;
106
+ height: 52px;
107
+ font-size: 22px;
108
+ border-radius: 2px;
109
+ color: #fff !important;
110
+ }
111
+
112
+ .contactimg {
113
+ position: relative;
114
+ }
115
+ .login-logo {
116
+ margin-bottom: 20px;
117
+ }
118
+
119
+ .textbox {
120
+ position: absolute;
121
+ top: 50%;
122
+ color: #fff;
123
+ padding: 40px;
124
+ transform: translate(0%, -50%);
125
+ text-align: center;
126
+ }
127
+ .sign-btn {
128
+ background: #0b4499;
129
+ width: 100%;
130
+ margin-top: 14px;
131
+ height: 52px;
132
+ font-size: 22px;
133
+ border-radius: 2px;
134
+ color: #fff !important;
135
+ }
136
+
137
+ button.btn.sign-btn:hover {
138
+ background: #1668e2;
139
+ }
140
+ </style>
141
+ <form [formGroup]="form" novalidate>
142
+ <div class="modal-header">
143
+ <h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> Login</h4>
144
+ <button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()">
145
+ <span aria-hidden="true">&times;</span>
146
+ </button>
147
+ </div>
148
+ <div class="modal-body" *ngIf="form">
149
+ <div class="row justify-content-md-center">
150
+ <div class="col-lg-12">
151
+ <div class="row bg-white">
152
+ <div class="col-lg-6">
153
+ <div class="contactimg">
154
+ <img src="/assets/images/loginsignup/formimg.jpg" alt="images" class="img-fluid">
155
+ <div class="textbox">
156
+ <div class="login-logo"><img src="/assets/images/loginsignup/login-logo.png" alt="images"></div>
157
+ The All-in-One Solution for Tracking Inventory, Ordering, POs, Management, and Much More!
158
+ </div>
159
+ </div>
160
+ </div>
161
+ <div class="col-lg-6">
162
+ <div class="log-box">
163
+ <div class="loginform">
164
+ <div class="form-group">
165
+ <label>Username/Email</label>
166
+ <em *ngIf="form.controls.username.hasError('required')">- Required</em>
167
+ <input type="email" class="form-control" [ngClass]="['form-control', form.controls.username.valid ? 'is-valid' : 'is-invalid']" formControlName="username" [autofocus]="true" [focus]="true" aria-describedby="emailHelp" placeholder="Your Username/Email">
168
+ </div>
169
+ <div class="form-group">
170
+ <label>Password</label>
171
+ <em *ngIf="form.controls.password.hasError('required')">- Required</em>
172
+ <input type="password" class="form-control" [ngClass]="['form-control', form.controls.password.enabled ? (form.controls.password.valid ? 'is-valid' : 'is-invalid') : '']" formControlName="password" placeholder="Your Password">
173
+ </div>
174
+ <div class="form-check text-right">
175
+ <label class="form-check-label"><a href="javascript:void(0)" (click)="toggleForgotPassword()"> {{!form.controls.forgotPassword.value ? 'Forgot Password?' : 'Enter Password'}} </a></label>
176
+ </div>
177
+ <button type="submit" class="btn loginbtn" (click)="close('ResolveIO')">{{!form.controls.forgotPassword.value ? 'Login' : 'Submit'}}</button>
178
+ <button *ngIf="msAllowed" type="submit" class="btn login365btn" (click)="close('MS')">Microsoft Single-Sign-On</button>
179
+ </div>
180
+ </div>
181
+ </div>
182
+ </div>
183
+ </div>
184
+ </div>
185
+ </div>
186
+ <div class="modal-footer">
187
+ <responsive-button-group>
188
+ <button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>
189
+ </responsive-button-group>
190
+ </div>
191
+ </form>
192
+ `, isInline: true, styles: ["\n\t\t\tcollapse-table {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.navbar-light .navbar-nav .active>.nav-link, .navbar-light .navbar-nav .nav-link.active, .navbar-light .navbar-nav .nav-link.show, .navbar-light .navbar-nav .show>.nav-link {\n\t\t\t\tcolor: #0b4499;\n\t\t\t}\n\t\t\t.navbar-light .navbar-nav .nav-link {\n\t\t\t\tcolor:#333;\n\t\t\t}\n\t\t\ta.nav-link.loginreg {\n\t\t\t\tbackground-color: #0b4499;\n\t\t\t\tcolor: #fff !important;\n\t\t\t\tborder-radius: 40px;\n\t\t\t}\n\t\t\ta.nav-link.loginreg:hover {\n\t\t\t\tbackground: #1668e2;\n\t\t\t}\n\t\t\t.nav-link {\n\t\t\t\tcolor: #333333;\n\t\t\t\tfont-size: 150%\n\t\t\t}\n\t\t\t.nav-item a.nav-link.active {\n\t\t\t\tcolor: #0b4499;\n\t\t\t}\n\t\t\t.contactimg>img{\n\t\t\t\twidth: 100%;\n\t\t\t}\n\n\t\t\t.log-box {\n\t\t\t\tpadding-top: 26px;\n\t\t\t\tpadding-bottom: 26px;\n\t\t\t}\n\t\t\t.loginform .form-control, .register-form .form-control {\n\t\t\t\tcolor: #000;\n\t\t\t\theight: 52px;\n\t\t\t}\n\t\t\t.loginform {\n\t\t\t\tmargin-top: 35px;\n\t\t\t}\n\t\t\t.loginform label {\n\t\t\t\tfont-size: 18px;\n\t\t\t\tfont-weight: 600;\n\t\t\t}\n\n\t\t\t.loginbtn {\n\t\t\t\tbackground: #0b4499;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 44px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\t.login365btn {\n\t\t\t\tbackground: orange;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 44px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\t.contactimg {\n\t\t\t\tposition: relative;\n\t\t\t}\n\t\t\t.login-logo {\n\t\t\t\tmargin-bottom: 20px;\n\t\t\t}\n\n\t\t\t.textbox {\n\t\t\t\tposition: absolute;\n\t\t\t\ttop: 50%;\n\t\t\t\tcolor: #fff;\n\t\t\t\tpadding: 40px;\n\t\t\t\ttransform: translate(0%, -50%);\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t\t.sign-btn {\n\t\t\t\tbackground: #0b4499;\n\t\t\t\twidth: 100%;\n\t\t\t\tmargin-top: 14px;\n\t\t\t\theight: 52px;\n\t\t\t\tfont-size: 22px;\n\t\t\t\tborder-radius: 2px;\n\t\t\t\tcolor: #fff !important;\n\t\t\t}\n\n\t\t\tbutton.btn.sign-btn:hover {\n\t\t\t\tbackground: #1668e2;\n\t\t\t}\n\t\t"], components: [{ type: i3.ResponsiveButtonGroupComponent, selector: "responsive-button-group", inputs: ["collapseSize"] }], directives: [{ type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i5.FocusDirective, selector: "[focus]", inputs: ["focus"] }] });
193
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: DialogLoginContent, decorators: [{
194
+ type: Component,
195
+ args: [{
196
+ template: `
197
+ <style>
198
+ collapse-table {
199
+ width: 100%;
200
+ }
201
+
202
+ .navbar-light .navbar-nav .active>.nav-link, .navbar-light .navbar-nav .nav-link.active, .navbar-light .navbar-nav .nav-link.show, .navbar-light .navbar-nav .show>.nav-link {
203
+ color: #0b4499;
204
+ }
205
+ .navbar-light .navbar-nav .nav-link {
206
+ color:#333;
207
+ }
208
+ a.nav-link.loginreg {
209
+ background-color: #0b4499;
210
+ color: #fff !important;
211
+ border-radius: 40px;
212
+ }
213
+ a.nav-link.loginreg:hover {
214
+ background: #1668e2;
215
+ }
216
+ .nav-link {
217
+ color: #333333;
218
+ font-size: 150%
219
+ }
220
+ .nav-item a.nav-link.active {
221
+ color: #0b4499;
222
+ }
223
+ .contactimg>img{
224
+ width: 100%;
225
+ }
226
+
227
+ .log-box {
228
+ padding-top: 26px;
229
+ padding-bottom: 26px;
230
+ }
231
+ .loginform .form-control, .register-form .form-control {
232
+ color: #000;
233
+ height: 52px;
234
+ }
235
+ .loginform {
236
+ margin-top: 35px;
237
+ }
238
+ .loginform label {
239
+ font-size: 18px;
240
+ font-weight: 600;
241
+ }
242
+
243
+ .loginbtn {
244
+ background: #0b4499;
245
+ width: 100%;
246
+ margin-top: 44px;
247
+ height: 52px;
248
+ font-size: 22px;
249
+ border-radius: 2px;
250
+ color: #fff !important;
251
+ }
252
+
253
+ .login365btn {
254
+ background: orange;
255
+ width: 100%;
256
+ margin-top: 44px;
257
+ height: 52px;
258
+ font-size: 22px;
259
+ border-radius: 2px;
260
+ color: #fff !important;
261
+ }
262
+
263
+ .contactimg {
264
+ position: relative;
265
+ }
266
+ .login-logo {
267
+ margin-bottom: 20px;
268
+ }
269
+
270
+ .textbox {
271
+ position: absolute;
272
+ top: 50%;
273
+ color: #fff;
274
+ padding: 40px;
275
+ transform: translate(0%, -50%);
276
+ text-align: center;
277
+ }
278
+ .sign-btn {
279
+ background: #0b4499;
280
+ width: 100%;
281
+ margin-top: 14px;
282
+ height: 52px;
283
+ font-size: 22px;
284
+ border-radius: 2px;
285
+ color: #fff !important;
286
+ }
287
+
288
+ button.btn.sign-btn:hover {
289
+ background: #1668e2;
290
+ }
291
+ </style>
292
+ <form [formGroup]="form" novalidate>
293
+ <div class="modal-header">
294
+ <h4 class="modal-title"><i class="fa fa-question-circle" style="color: blue; font-size: 0.85em" aria-hidden="true"></i> Login</h4>
295
+ <button type="button" class="close" aria-label="Close" (click)="_activeModal.dismiss()">
296
+ <span aria-hidden="true">&times;</span>
297
+ </button>
298
+ </div>
299
+ <div class="modal-body" *ngIf="form">
300
+ <div class="row justify-content-md-center">
301
+ <div class="col-lg-12">
302
+ <div class="row bg-white">
303
+ <div class="col-lg-6">
304
+ <div class="contactimg">
305
+ <img src="/assets/images/loginsignup/formimg.jpg" alt="images" class="img-fluid">
306
+ <div class="textbox">
307
+ <div class="login-logo"><img src="/assets/images/loginsignup/login-logo.png" alt="images"></div>
308
+ The All-in-One Solution for Tracking Inventory, Ordering, POs, Management, and Much More!
309
+ </div>
310
+ </div>
311
+ </div>
312
+ <div class="col-lg-6">
313
+ <div class="log-box">
314
+ <div class="loginform">
315
+ <div class="form-group">
316
+ <label>Username/Email</label>
317
+ <em *ngIf="form.controls.username.hasError('required')">- Required</em>
318
+ <input type="email" class="form-control" [ngClass]="['form-control', form.controls.username.valid ? 'is-valid' : 'is-invalid']" formControlName="username" [autofocus]="true" [focus]="true" aria-describedby="emailHelp" placeholder="Your Username/Email">
319
+ </div>
320
+ <div class="form-group">
321
+ <label>Password</label>
322
+ <em *ngIf="form.controls.password.hasError('required')">- Required</em>
323
+ <input type="password" class="form-control" [ngClass]="['form-control', form.controls.password.enabled ? (form.controls.password.valid ? 'is-valid' : 'is-invalid') : '']" formControlName="password" placeholder="Your Password">
324
+ </div>
325
+ <div class="form-check text-right">
326
+ <label class="form-check-label"><a href="javascript:void(0)" (click)="toggleForgotPassword()"> {{!form.controls.forgotPassword.value ? 'Forgot Password?' : 'Enter Password'}} </a></label>
327
+ </div>
328
+ <button type="submit" class="btn loginbtn" (click)="close('ResolveIO')">{{!form.controls.forgotPassword.value ? 'Login' : 'Submit'}}</button>
329
+ <button *ngIf="msAllowed" type="submit" class="btn login365btn" (click)="close('MS')">Microsoft Single-Sign-On</button>
330
+ </div>
331
+ </div>
332
+ </div>
333
+ </div>
334
+ </div>
335
+ </div>
336
+ </div>
337
+ <div class="modal-footer">
338
+ <responsive-button-group>
339
+ <button type="button" class="btn btn-secondary" (click)="_activeModal.dismiss()">Cancel</button>
340
+ </responsive-button-group>
341
+ </div>
342
+ </form>
343
+ `
344
+ }]
345
+ }], ctorParameters: function () { return [{ type: i1.NgbActiveModal }, { type: i2.FormBuilder }]; }, propDecorators: { msAllowed: [{
346
+ type: Input
347
+ }] } });
348
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmxvZ2luLmNvbnRlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvd2lkZ2V0cy9kaWFsb2cvZGlhbG9nLmxvZ2luLmNvbnRlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBYSxXQUFXLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7QUF3SnBFLGtEQUFrRDtBQUNsRCxNQUFNLE9BQU8sa0JBQWtCO0lBSzlCLFlBQW1CLFlBQTRCLEVBQVUsR0FBZ0I7UUFBdEQsaUJBQVksR0FBWixZQUFZLENBQWdCO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBYTtRQUpoRSxjQUFTLEdBQUcsS0FBSyxDQUFDO0lBSWlELENBQUM7SUFFN0UsUUFBUTtRQUNQLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7WUFDMUIsUUFBUSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JDLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyQyxjQUFjLEVBQUUsQ0FBQyxLQUFLLENBQUM7U0FDdkIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELG9CQUFvQjtRQUNuQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXJGLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFO1lBQzdDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNqRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDckM7YUFDSTtZQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzlDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUN0QztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ3RELENBQUM7SUFFRCxLQUFLLENBQUMsSUFBWTtRQUNqQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztZQUN2QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7WUFDZixJQUFJLEVBQUUsSUFBSTtTQUNWLENBQUMsQ0FBQztJQUNKLENBQUM7OytHQXBDVyxrQkFBa0I7bUdBQWxCLGtCQUFrQix3RkF0SnBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFtSlQ7MkZBR1csa0JBQWtCO2tCQXZKOUIsU0FBUzttQkFBQztvQkFDVixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQW1KVDtpQkFDRDsrSEFHUyxTQUFTO3NCQUFqQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ2JBY3RpdmVNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUJ1aWxkZXIsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBDb21wb25lbnQoe1xuXHR0ZW1wbGF0ZTogYFxuXHRcdDxzdHlsZT5cblx0XHRcdGNvbGxhcHNlLXRhYmxlIHtcblx0XHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHR9XG5cblx0XHRcdC5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLmFjdGl2ZT4ubmF2LWxpbmssIC5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rLmFjdGl2ZSwgLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAubmF2LWxpbmsuc2hvdywgLm5hdmJhci1saWdodCAubmF2YmFyLW5hdiAuc2hvdz4ubmF2LWxpbmsge1xuXHRcdFx0XHRjb2xvcjogIzBiNDQ5OTtcblx0XHRcdH1cblx0XHRcdC5uYXZiYXItbGlnaHQgLm5hdmJhci1uYXYgLm5hdi1saW5rIHtcblx0XHRcdFx0Y29sb3I6IzMzMztcblx0XHRcdH1cblx0XHRcdGEubmF2LWxpbmsubG9naW5yZWcge1xuXHRcdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjMGI0NDk5O1xuXHRcdFx0XHRjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiA0MHB4O1xuXHRcdFx0fVxuXHRcdFx0YS5uYXYtbGluay5sb2dpbnJlZzpob3ZlciB7XG5cdFx0XHRcdGJhY2tncm91bmQ6ICMxNjY4ZTI7XG5cdFx0XHR9XG5cdFx0XHQubmF2LWxpbmsge1xuXHRcdFx0XHRjb2xvcjogIzMzMzMzMztcblx0XHRcdFx0Zm9udC1zaXplOiAxNTAlXG5cdFx0XHR9XG5cdFx0XHQubmF2LWl0ZW0gYS5uYXYtbGluay5hY3RpdmUge1xuXHRcdFx0XHRjb2xvcjogIzBiNDQ5OTtcblx0XHRcdH1cblx0XHRcdC5jb250YWN0aW1nPmltZ3tcblx0XHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHR9XG5cblx0XHRcdC5sb2ctYm94IHtcblx0XHRcdFx0cGFkZGluZy10b3A6IDI2cHg7XG5cdFx0XHRcdHBhZGRpbmctYm90dG9tOiAyNnB4O1xuXHRcdFx0fVxuXHRcdFx0LmxvZ2luZm9ybSAuZm9ybS1jb250cm9sLCAucmVnaXN0ZXItZm9ybSAuZm9ybS1jb250cm9sIHtcblx0XHRcdFx0Y29sb3I6ICMwMDA7XG5cdFx0XHRcdGhlaWdodDogNTJweDtcblx0XHRcdH1cblx0XHRcdC5sb2dpbmZvcm0ge1xuXHRcdFx0XHRtYXJnaW4tdG9wOiAzNXB4O1xuXHRcdFx0fVxuXHRcdFx0LmxvZ2luZm9ybSBsYWJlbCB7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMThweDtcblx0XHRcdFx0Zm9udC13ZWlnaHQ6IDYwMDtcblx0XHRcdH1cblxuXHRcdFx0LmxvZ2luYnRuIHtcblx0XHRcdFx0YmFja2dyb3VuZDogIzBiNDQ5OTtcblx0XHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDQ0cHg7XG5cdFx0XHRcdGhlaWdodDogNTJweDtcblx0XHRcdFx0Zm9udC1zaXplOiAyMnB4O1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiAycHg7XG5cdFx0XHRcdGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XG5cdFx0XHR9XG5cblx0XHRcdC5sb2dpbjM2NWJ0biB7XG5cdFx0XHRcdGJhY2tncm91bmQ6IG9yYW5nZTtcblx0XHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRcdG1hcmdpbi10b3A6IDQ0cHg7XG5cdFx0XHRcdGhlaWdodDogNTJweDtcblx0XHRcdFx0Zm9udC1zaXplOiAyMnB4O1xuXHRcdFx0XHRib3JkZXItcmFkaXVzOiAycHg7XG5cdFx0XHRcdGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XG5cdFx0XHR9XG5cblx0XHRcdC5jb250YWN0aW1nIHtcblx0XHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0fVxuXHRcdFx0LmxvZ2luLWxvZ28ge1xuXHRcdFx0XHRtYXJnaW4tYm90dG9tOiAyMHB4O1xuXHRcdFx0fVxuXG5cdFx0XHQudGV4dGJveCB7XG5cdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0dG9wOiA1MCU7XG5cdFx0XHRcdGNvbG9yOiAjZmZmO1xuXHRcdFx0XHRwYWRkaW5nOiA0MHB4O1xuXHRcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwJSwgLTUwJSk7XG5cdFx0XHRcdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XHRcdH1cblx0XHRcdC5zaWduLWJ0biB7XG5cdFx0XHRcdGJhY2tncm91bmQ6ICMwYjQ0OTk7XG5cdFx0XHRcdHdpZHRoOiAxMDAlO1xuXHRcdFx0XHRtYXJnaW4tdG9wOiAxNHB4O1xuXHRcdFx0XHRoZWlnaHQ6IDUycHg7XG5cdFx0XHRcdGZvbnQtc2l6ZTogMjJweDtcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogMnB4O1xuXHRcdFx0XHRjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xuXHRcdFx0fVxuXG5cdFx0XHRidXR0b24uYnRuLnNpZ24tYnRuOmhvdmVyIHtcblx0XHRcdFx0YmFja2dyb3VuZDogIzE2NjhlMjtcblx0XHRcdH1cblx0XHQ8L3N0eWxlPlxuXHRcdDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIG5vdmFsaWRhdGU+XG5cdFx0XHQ8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XG5cdFx0XHRcdDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCI+PGkgY2xhc3M9XCJmYSBmYS1xdWVzdGlvbi1jaXJjbGVcIiBzdHlsZT1cImNvbG9yOiBibHVlOyBmb250LXNpemU6IDAuODVlbVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT4gTG9naW48L2g0PlxuXHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNsb3NlXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cIl9hY3RpdmVNb2RhbC5kaXNtaXNzKClcIj5cblx0XHRcdFx0XHQ8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxuXHRcdFx0XHQ8L2J1dHRvbj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIiAqbmdJZj1cImZvcm1cIj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cInJvdyBqdXN0aWZ5LWNvbnRlbnQtbWQtY2VudGVyXCI+XG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC1sZy0xMlwiPlxuXHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cInJvdyBiZy13aGl0ZVwiPlxuXHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY29sLWxnLTZcIj5cblx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiY29udGFjdGltZ1wiPlxuXHRcdFx0XHRcdFx0XHRcdFx0PGltZyBzcmM9XCIvYXNzZXRzL2ltYWdlcy9sb2dpbnNpZ251cC9mb3JtaW1nLmpwZ1wiIGFsdD1cImltYWdlc1wiIGNsYXNzPVwiaW1nLWZsdWlkXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGV4dGJveFwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwibG9naW4tbG9nb1wiPjxpbWcgc3JjPVwiL2Fzc2V0cy9pbWFnZXMvbG9naW5zaWdudXAvbG9naW4tbG9nby5wbmdcIiBhbHQ9XCJpbWFnZXNcIj48L2Rpdj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0VGhlIEFsbC1pbi1PbmUgU29sdXRpb24gZm9yIFRyYWNraW5nIEludmVudG9yeSwgT3JkZXJpbmcsIFBPcywgTWFuYWdlbWVudCwgYW5kIE11Y2ggTW9yZSFcblx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC1sZy02XCI+XG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImxvZy1ib3hcIj5cblx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJsb2dpbmZvcm1cIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8bGFiZWw+VXNlcm5hbWUvRW1haWw8L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxlbSAqbmdJZj1cImZvcm0uY29udHJvbHMudXNlcm5hbWUuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj4tIFJlcXVpcmVkPC9lbT5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cImVtYWlsXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbbmdDbGFzc109XCJbJ2Zvcm0tY29udHJvbCcsIGZvcm0uY29udHJvbHMudXNlcm5hbWUudmFsaWQgPyAnaXMtdmFsaWQnIDogJ2lzLWludmFsaWQnXVwiIGZvcm1Db250cm9sTmFtZT1cInVzZXJuYW1lXCIgW2F1dG9mb2N1c109XCJ0cnVlXCIgW2ZvY3VzXT1cInRydWVcIiBhcmlhLWRlc2NyaWJlZGJ5PVwiZW1haWxIZWxwXCIgcGxhY2Vob2xkZXI9XCJZb3VyIFVzZXJuYW1lL0VtYWlsXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxsYWJlbD5QYXNzd29yZDwvbGFiZWw+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGVtICpuZ0lmPVwiZm9ybS5jb250cm9scy5wYXNzd29yZC5oYXNFcnJvcigncmVxdWlyZWQnKVwiPi0gUmVxdWlyZWQ8L2VtPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFtuZ0NsYXNzXT1cIlsnZm9ybS1jb250cm9sJywgZm9ybS5jb250cm9scy5wYXNzd29yZC5lbmFibGVkID8gKGZvcm0uY29udHJvbHMucGFzc3dvcmQudmFsaWQgPyAnaXMtdmFsaWQnIDogJ2lzLWludmFsaWQnKSA6ICcnXVwiIGZvcm1Db250cm9sTmFtZT1cInBhc3N3b3JkXCIgcGxhY2Vob2xkZXI9XCJZb3VyIFBhc3N3b3JkXCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayB0ZXh0LXJpZ2h0XCI+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPjxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwidG9nZ2xlRm9yZ290UGFzc3dvcmQoKVwiPiB7eyFmb3JtLmNvbnRyb2xzLmZvcmdvdFBhc3N3b3JkLnZhbHVlID8gJ0ZvcmdvdCBQYXNzd29yZD8nIDogJ0VudGVyIFBhc3N3b3JkJ319IDwvYT48L2xhYmVsPlxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gbG9naW5idG5cIiAoY2xpY2spPVwiY2xvc2UoJ1Jlc29sdmVJTycpXCI+e3shZm9ybS5jb250cm9scy5mb3Jnb3RQYXNzd29yZC52YWx1ZSA/ICdMb2dpbicgOiAnU3VibWl0J319PC9idXR0b24+XG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxidXR0b24gKm5nSWY9XCJtc0FsbG93ZWRcIiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gbG9naW4zNjVidG5cIiAoY2xpY2spPVwiY2xvc2UoJ01TJylcIj5NaWNyb3NvZnQgU2luZ2xlLVNpZ24tT248L2J1dHRvbj5cblx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cblx0XHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHRcdDwvZGl2PlxuXHRcdFx0XHQ8L2Rpdj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxuXHRcdFx0XHQ8cmVzcG9uc2l2ZS1idXR0b24tZ3JvdXA+XG5cdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiIChjbGljayk9XCJfYWN0aXZlTW9kYWwuZGlzbWlzcygpXCI+Q2FuY2VsPC9idXR0b24+XG5cdFx0XHRcdDwvcmVzcG9uc2l2ZS1idXR0b24tZ3JvdXA+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L2Zvcm0+XG5cdGBcbn0pXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Y29tcG9uZW50LWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGNsYXNzIERpYWxvZ0xvZ2luQ29udGVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cdEBJbnB1dCgpIG1zQWxsb3dlZCA9IGZhbHNlO1xuXG5cdGZvcm06IEZvcm1Hcm91cDtcblxuXHRjb25zdHJ1Y3RvcihwdWJsaWMgX2FjdGl2ZU1vZGFsOiBOZ2JBY3RpdmVNb2RhbCwgcHJpdmF0ZSBfZmI6IEZvcm1CdWlsZGVyKSB7fVxuXG5cdG5nT25Jbml0KCkge1x0XHRcdFxuXHRcdHRoaXMuZm9ybSA9IHRoaXMuX2ZiLmdyb3VwKHtcblx0XHRcdHVzZXJuYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG5cdFx0XHRwYXNzd29yZDogWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuXHRcdFx0Zm9yZ290UGFzc3dvcmQ6IFtmYWxzZV0sXG5cdFx0fSk7XG5cdH1cblxuXHR0b2dnbGVGb3Jnb3RQYXNzd29yZCgpIHtcblx0XHR0aGlzLmZvcm0uY29udHJvbHMuZm9yZ290UGFzc3dvcmQuc2V0VmFsdWUoIXRoaXMuZm9ybS5jb250cm9scy5mb3Jnb3RQYXNzd29yZC52YWx1ZSk7XG5cblx0XHRpZiAoIXRoaXMuZm9ybS5jb250cm9scy5mb3Jnb3RQYXNzd29yZC52YWx1ZSkge1xuXHRcdFx0dGhpcy5mb3JtLmNvbnRyb2xzLnBhc3N3b3JkLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcblx0XHRcdHRoaXMuZm9ybS5jb250cm9scy5wYXNzd29yZC5lbmFibGUoKTtcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHR0aGlzLmZvcm0uY29udHJvbHMucGFzc3dvcmQuc2V0VmFsdWUoJycpO1xuXHRcdFx0dGhpcy5mb3JtLmNvbnRyb2xzLnBhc3N3b3JkLmNsZWFyVmFsaWRhdG9ycygpO1xuXHRcdFx0dGhpcy5mb3JtLmNvbnRyb2xzLnBhc3N3b3JkLmRpc2FibGUoKTtcblx0XHR9XG5cblx0XHR0aGlzLmZvcm0uY29udHJvbHMucGFzc3dvcmQudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuXHR9XG5cblx0Y2xvc2UodHlwZTogc3RyaW5nKSB7XG5cdFx0dGhpcy5fYWN0aXZlTW9kYWwuY2xvc2Uoe1xuXHRcdFx0Zm9ybTogdGhpcy5mb3JtLFxuXHRcdFx0dHlwZTogdHlwZVxuXHRcdH0pO1xuXHR9XG59XG4iXX0=