@saritasa/crm-delmar-core-sdk 0.0.251 → 0.0.261

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 (625) hide show
  1. package/README.md +2 -2
  2. package/api/api.d.ts +4 -1
  3. package/api/branch-periods-api.serviceInterface.d.ts +4 -0
  4. package/api/branches-api.serviceInterface.d.ts +8 -0
  5. package/api/clients-api.serviceInterface.d.ts +8 -0
  6. package/api/components-api.serviceInterface.d.ts +9 -0
  7. package/api/departments-api.serviceInterface.d.ts +10 -0
  8. package/api/dismissal-reasons-api.serviceInterface.d.ts +4 -0
  9. package/api/export-clients-api.service.d.ts +98 -0
  10. package/api/export-clients-api.serviceInterface.d.ts +119 -0
  11. package/api/export-job-reports-departments-api.serviceInterface.d.ts +4 -0
  12. package/api/export-job-reports-users-api.serviceInterface.d.ts +4 -0
  13. package/api/export-jobs-api.serviceInterface.d.ts +4 -0
  14. package/api/export-project-resources-api.serviceInterface.d.ts +4 -0
  15. package/api/export-projects-api.serviceInterface.d.ts +4 -0
  16. package/api/export-tasks-api.serviceInterface.d.ts +4 -0
  17. package/api/export-user-periods-api.serviceInterface.d.ts +4 -0
  18. package/api/export-users-api.serviceInterface.d.ts +4 -0
  19. package/api/jobs-api.service.d.ts +38 -16
  20. package/api/jobs-api.serviceInterface.d.ts +70 -10
  21. package/api/locations-api.serviceInterface.d.ts +4 -0
  22. package/api/project-priorities-api.serviceInterface.d.ts +4 -0
  23. package/api/project-resources-api.serviceInterface.d.ts +4 -0
  24. package/api/projects-api.serviceInterface.d.ts +8 -0
  25. package/api/roles-api.serviceInterface.d.ts +4 -0
  26. package/api/sprints-api.serviceInterface.d.ts +9 -0
  27. package/api/tasks-api.serviceInterface.d.ts +17 -0
  28. package/api/user-capacities-api.service.d.ts +7 -8
  29. package/api/user-capacities-api.serviceInterface.d.ts +5 -6
  30. package/api/user-logins-api.serviceInterface.d.ts +4 -0
  31. package/api/user-periods-api.serviceInterface.d.ts +4 -0
  32. package/api/users-api.serviceInterface.d.ts +8 -0
  33. package/api/vendors-api.serviceInterface.d.ts +4 -0
  34. package/api/work-types-api.serviceInterface.d.ts +4 -0
  35. package/esm2022/api/api.mjs +5 -1
  36. package/esm2022/api/branch-periods-api.service.mjs +9 -1
  37. package/esm2022/api/branch-periods-api.serviceInterface.mjs +1 -1
  38. package/esm2022/api/branches-api.service.mjs +17 -1
  39. package/esm2022/api/branches-api.serviceInterface.mjs +1 -1
  40. package/esm2022/api/clients-api.service.mjs +17 -1
  41. package/esm2022/api/clients-api.serviceInterface.mjs +1 -1
  42. package/esm2022/api/components-api.service.mjs +21 -1
  43. package/esm2022/api/components-api.serviceInterface.mjs +1 -1
  44. package/esm2022/api/departments-api.service.mjs +25 -1
  45. package/esm2022/api/departments-api.serviceInterface.mjs +1 -1
  46. package/esm2022/api/dismissal-reasons-api.service.mjs +9 -1
  47. package/esm2022/api/dismissal-reasons-api.serviceInterface.mjs +1 -1
  48. package/esm2022/api/export-clients-api.service.mjs +387 -0
  49. package/esm2022/api/export-clients-api.serviceInterface.mjs +2 -0
  50. package/esm2022/api/export-job-reports-departments-api.service.mjs +9 -1
  51. package/esm2022/api/export-job-reports-departments-api.serviceInterface.mjs +1 -1
  52. package/esm2022/api/export-job-reports-users-api.service.mjs +9 -1
  53. package/esm2022/api/export-job-reports-users-api.serviceInterface.mjs +1 -1
  54. package/esm2022/api/export-jobs-api.service.mjs +9 -1
  55. package/esm2022/api/export-jobs-api.serviceInterface.mjs +1 -1
  56. package/esm2022/api/export-project-resources-api.service.mjs +9 -1
  57. package/esm2022/api/export-project-resources-api.serviceInterface.mjs +1 -1
  58. package/esm2022/api/export-projects-api.service.mjs +9 -1
  59. package/esm2022/api/export-projects-api.serviceInterface.mjs +1 -1
  60. package/esm2022/api/export-tasks-api.service.mjs +9 -1
  61. package/esm2022/api/export-tasks-api.serviceInterface.mjs +1 -1
  62. package/esm2022/api/export-user-periods-api.service.mjs +9 -1
  63. package/esm2022/api/export-user-periods-api.serviceInterface.mjs +1 -1
  64. package/esm2022/api/export-users-api.service.mjs +9 -1
  65. package/esm2022/api/export-users-api.serviceInterface.mjs +1 -1
  66. package/esm2022/api/jobs-api.service.mjs +179 -11
  67. package/esm2022/api/jobs-api.serviceInterface.mjs +1 -1
  68. package/esm2022/api/locations-api.service.mjs +9 -1
  69. package/esm2022/api/locations-api.serviceInterface.mjs +1 -1
  70. package/esm2022/api/project-priorities-api.service.mjs +9 -1
  71. package/esm2022/api/project-priorities-api.serviceInterface.mjs +1 -1
  72. package/esm2022/api/project-resources-api.service.mjs +9 -1
  73. package/esm2022/api/project-resources-api.serviceInterface.mjs +1 -1
  74. package/esm2022/api/projects-api.service.mjs +17 -1
  75. package/esm2022/api/projects-api.serviceInterface.mjs +1 -1
  76. package/esm2022/api/roles-api.service.mjs +9 -1
  77. package/esm2022/api/roles-api.serviceInterface.mjs +1 -1
  78. package/esm2022/api/sprints-api.service.mjs +21 -1
  79. package/esm2022/api/sprints-api.serviceInterface.mjs +1 -1
  80. package/esm2022/api/tasks-api.service.mjs +37 -1
  81. package/esm2022/api/tasks-api.serviceInterface.mjs +1 -1
  82. package/esm2022/api/user-capacities-api.service.mjs +10 -18
  83. package/esm2022/api/user-capacities-api.serviceInterface.mjs +1 -1
  84. package/esm2022/api/user-logins-api.service.mjs +9 -1
  85. package/esm2022/api/user-logins-api.serviceInterface.mjs +1 -1
  86. package/esm2022/api/user-periods-api.service.mjs +9 -1
  87. package/esm2022/api/user-periods-api.serviceInterface.mjs +1 -1
  88. package/esm2022/api/users-api.service.mjs +17 -1
  89. package/esm2022/api/users-api.serviceInterface.mjs +1 -1
  90. package/esm2022/api/vendors-api.service.mjs +9 -1
  91. package/esm2022/api/vendors-api.serviceInterface.mjs +1 -1
  92. package/esm2022/api/work-types-api.service.mjs +9 -1
  93. package/esm2022/api/work-types-api.serviceInterface.mjs +1 -1
  94. package/esm2022/model/branch-periods-list-created-date-gte-error-component.dto.mjs +18 -0
  95. package/esm2022/model/branch-periods-list-created-date-lte-error-component.dto.mjs +18 -0
  96. package/esm2022/model/branch-periods-list-created-gte-error-component.dto.mjs +18 -0
  97. package/esm2022/model/branch-periods-list-created-lte-error-component.dto.mjs +18 -0
  98. package/esm2022/model/branch-periods-list-error.dto.mjs +1 -1
  99. package/esm2022/model/branches-list-created-date-gte-error-component.dto.mjs +18 -0
  100. package/esm2022/model/branches-list-created-date-lte-error-component.dto.mjs +18 -0
  101. package/esm2022/model/branches-list-created-gte-error-component.dto.mjs +18 -0
  102. package/esm2022/model/branches-list-created-lte-error-component.dto.mjs +18 -0
  103. package/esm2022/model/branches-list-error.dto.mjs +1 -1
  104. package/esm2022/model/branches-users-stats-list-created-date-gte-error-component.dto.mjs +18 -0
  105. package/esm2022/model/branches-users-stats-list-created-date-lte-error-component.dto.mjs +18 -0
  106. package/esm2022/model/branches-users-stats-list-created-gte-error-component.dto.mjs +18 -0
  107. package/esm2022/model/branches-users-stats-list-created-lte-error-component.dto.mjs +18 -0
  108. package/esm2022/model/branches-users-stats-list-error.dto.mjs +1 -1
  109. package/esm2022/model/client-notes-update-error.dto.mjs +1 -1
  110. package/esm2022/model/client-notes-update-project-error-component.dto.mjs +19 -0
  111. package/esm2022/model/client-resource-create-export-job-request.dto.mjs +2 -0
  112. package/esm2022/model/clients-list-created-date-gte-error-component.dto.mjs +18 -0
  113. package/esm2022/model/clients-list-created-date-lte-error-component.dto.mjs +18 -0
  114. package/esm2022/model/clients-list-created-gte-error-component.dto.mjs +18 -0
  115. package/esm2022/model/clients-list-created-lte-error-component.dto.mjs +18 -0
  116. package/esm2022/model/clients-list-error.dto.mjs +1 -1
  117. package/esm2022/model/clients-with-stats-list-created-date-gte-error-component.dto.mjs +18 -0
  118. package/esm2022/model/clients-with-stats-list-created-date-lte-error-component.dto.mjs +18 -0
  119. package/esm2022/model/clients-with-stats-list-created-gte-error-component.dto.mjs +18 -0
  120. package/esm2022/model/clients-with-stats-list-created-lte-error-component.dto.mjs +18 -0
  121. package/esm2022/model/clients-with-stats-list-error.dto.mjs +1 -1
  122. package/esm2022/model/components-job-hourly-reports-list-created-date-gte-error-component.dto.mjs +18 -0
  123. package/esm2022/model/components-job-hourly-reports-list-created-date-lte-error-component.dto.mjs +18 -0
  124. package/esm2022/model/components-job-hourly-reports-list-created-gte-error-component.dto.mjs +18 -0
  125. package/esm2022/model/components-job-hourly-reports-list-created-lte-error-component.dto.mjs +18 -0
  126. package/esm2022/model/components-job-hourly-reports-list-error.dto.mjs +1 -1
  127. package/esm2022/model/components-job-hourly-reports-list-work-type-in-error-component.dto.mjs +19 -0
  128. package/esm2022/model/components-list-created-date-gte-error-component.dto.mjs +18 -0
  129. package/esm2022/model/components-list-created-date-lte-error-component.dto.mjs +18 -0
  130. package/esm2022/model/components-list-created-gte-error-component.dto.mjs +18 -0
  131. package/esm2022/model/components-list-created-lte-error-component.dto.mjs +18 -0
  132. package/esm2022/model/components-list-error.dto.mjs +1 -1
  133. package/esm2022/model/departments-job-hourly-reports-list-created-date-gte-error-component.dto.mjs +18 -0
  134. package/esm2022/model/departments-job-hourly-reports-list-created-date-lte-error-component.dto.mjs +18 -0
  135. package/esm2022/model/departments-job-hourly-reports-list-created-gte-error-component.dto.mjs +18 -0
  136. package/esm2022/model/departments-job-hourly-reports-list-created-lte-error-component.dto.mjs +18 -0
  137. package/esm2022/model/departments-job-hourly-reports-list-error.dto.mjs +1 -1
  138. package/esm2022/model/departments-job-hourly-reports-list-project-in-error-component.dto.mjs +19 -0
  139. package/esm2022/model/departments-job-hourly-reports-list-work-type-in-error-component.dto.mjs +19 -0
  140. package/esm2022/model/departments-list-created-date-gte-error-component.dto.mjs +18 -0
  141. package/esm2022/model/departments-list-created-date-lte-error-component.dto.mjs +18 -0
  142. package/esm2022/model/departments-list-created-gte-error-component.dto.mjs +18 -0
  143. package/esm2022/model/departments-list-created-lte-error-component.dto.mjs +18 -0
  144. package/esm2022/model/departments-list-error.dto.mjs +1 -1
  145. package/esm2022/model/dismissal-reasons-list-created-date-gte-error-component.dto.mjs +18 -0
  146. package/esm2022/model/dismissal-reasons-list-created-date-lte-error-component.dto.mjs +18 -0
  147. package/esm2022/model/dismissal-reasons-list-created-gte-error-component.dto.mjs +18 -0
  148. package/esm2022/model/dismissal-reasons-list-created-lte-error-component.dto.mjs +18 -0
  149. package/esm2022/model/dismissal-reasons-list-error.dto.mjs +1 -1
  150. package/esm2022/model/export-clients-cancel-create-error-response400.dto.mjs +2 -0
  151. package/esm2022/model/export-clients-list-error-response400.dto.mjs +2 -0
  152. package/esm2022/model/export-clients-retrieve-error-response400.dto.mjs +2 -0
  153. package/esm2022/model/export-clients-start-create-error-response400.dto.mjs +2 -0
  154. package/esm2022/model/export-clients-start-create-error.dto.mjs +2 -0
  155. package/esm2022/model/export-clients-start-create-file-format-error-component.dto.mjs +20 -0
  156. package/esm2022/model/export-clients-start-create-non-field-errors-error-component.dto.mjs +19 -0
  157. package/esm2022/model/export-clients-start-create-validation-error.dto.mjs +2 -0
  158. package/esm2022/model/job-report-hourly.dto.mjs +2 -0
  159. package/esm2022/model/jobs-billable-chart-list-created-date-gte-error-component.dto.mjs +18 -0
  160. package/esm2022/model/jobs-billable-chart-list-created-date-lte-error-component.dto.mjs +18 -0
  161. package/esm2022/model/jobs-billable-chart-list-created-gte-error-component.dto.mjs +18 -0
  162. package/esm2022/model/jobs-billable-chart-list-created-lte-error-component.dto.mjs +18 -0
  163. package/esm2022/model/jobs-billable-chart-list-error.dto.mjs +1 -1
  164. package/esm2022/model/jobs-list-created-date-gte-error-component.dto.mjs +18 -0
  165. package/esm2022/model/jobs-list-created-date-lte-error-component.dto.mjs +18 -0
  166. package/esm2022/model/jobs-list-created-gte-error-component.dto.mjs +18 -0
  167. package/esm2022/model/jobs-list-created-lte-error-component.dto.mjs +18 -0
  168. package/esm2022/model/jobs-list-error.dto.mjs +1 -1
  169. package/esm2022/model/jobs-oversea-chart-list-billed-by-in-error-component.dto.mjs +18 -0
  170. package/esm2022/model/jobs-oversea-chart-list-branch-in-error-component.dto.mjs +18 -0
  171. package/esm2022/model/jobs-oversea-chart-list-created-by-in-error-component.dto.mjs +18 -0
  172. package/esm2022/model/jobs-oversea-chart-list-created-date-gte-error-component.dto.mjs +18 -0
  173. package/esm2022/model/jobs-oversea-chart-list-created-date-lte-error-component.dto.mjs +18 -0
  174. package/esm2022/model/jobs-oversea-chart-list-created-gte-error-component.dto.mjs +18 -0
  175. package/esm2022/model/jobs-oversea-chart-list-created-lte-error-component.dto.mjs +18 -0
  176. package/esm2022/model/jobs-oversea-chart-list-date-gte-error-component.dto.mjs +18 -0
  177. package/esm2022/model/jobs-oversea-chart-list-date-lte-error-component.dto.mjs +18 -0
  178. package/esm2022/model/jobs-oversea-chart-list-department-id-error-component.dto.mjs +19 -0
  179. package/esm2022/model/jobs-oversea-chart-list-department-id-in-error-component.dto.mjs +19 -0
  180. package/esm2022/model/jobs-oversea-chart-list-error-response400.dto.mjs +2 -0
  181. package/esm2022/model/jobs-oversea-chart-list-error.dto.mjs +2 -0
  182. package/esm2022/model/jobs-oversea-chart-list-id-in-error-component.dto.mjs +19 -0
  183. package/esm2022/model/jobs-oversea-chart-list-task-component-in-error-component.dto.mjs +18 -0
  184. package/esm2022/model/jobs-oversea-chart-list-task-in-error-component.dto.mjs +18 -0
  185. package/esm2022/model/jobs-oversea-chart-list-task-project-client-in-error-component.dto.mjs +18 -0
  186. package/esm2022/model/jobs-oversea-chart-list-task-project-in-error-component.dto.mjs +18 -0
  187. package/esm2022/model/jobs-oversea-chart-list-task-sprint-in-error-component.dto.mjs +18 -0
  188. package/esm2022/model/jobs-oversea-chart-list-time-span-error-component.dto.mjs +19 -0
  189. package/esm2022/model/jobs-oversea-chart-list-type-in-error-component.dto.mjs +18 -0
  190. package/esm2022/model/jobs-oversea-chart-list-updated-by-in-error-component.dto.mjs +18 -0
  191. package/esm2022/model/jobs-oversea-chart-list-validation-error.dto.mjs +2 -0
  192. package/esm2022/model/jobs-oversea-chart-list-work-type-in-error-component.dto.mjs +18 -0
  193. package/esm2022/model/jobs-production-chart-list-created-date-gte-error-component.dto.mjs +18 -0
  194. package/esm2022/model/jobs-production-chart-list-created-date-lte-error-component.dto.mjs +18 -0
  195. package/esm2022/model/jobs-production-chart-list-created-gte-error-component.dto.mjs +18 -0
  196. package/esm2022/model/jobs-production-chart-list-created-lte-error-component.dto.mjs +18 -0
  197. package/esm2022/model/jobs-production-chart-list-error.dto.mjs +1 -1
  198. package/esm2022/model/jobs-report-departments-list-created-date-gte-error-component.dto.mjs +18 -0
  199. package/esm2022/model/jobs-report-departments-list-created-date-lte-error-component.dto.mjs +18 -0
  200. package/esm2022/model/jobs-report-departments-list-created-gte-error-component.dto.mjs +18 -0
  201. package/esm2022/model/jobs-report-departments-list-created-lte-error-component.dto.mjs +18 -0
  202. package/esm2022/model/jobs-report-departments-list-error.dto.mjs +1 -1
  203. package/esm2022/model/jobs-report-hourly-list-billed-by-in-error-component.dto.mjs +18 -0
  204. package/esm2022/model/jobs-report-hourly-list-branch-in-error-component.dto.mjs +18 -0
  205. package/esm2022/model/jobs-report-hourly-list-created-by-in-error-component.dto.mjs +18 -0
  206. package/esm2022/model/jobs-report-hourly-list-created-date-gte-error-component.dto.mjs +18 -0
  207. package/esm2022/model/jobs-report-hourly-list-created-date-lte-error-component.dto.mjs +18 -0
  208. package/esm2022/model/jobs-report-hourly-list-created-gte-error-component.dto.mjs +18 -0
  209. package/esm2022/model/jobs-report-hourly-list-created-lte-error-component.dto.mjs +18 -0
  210. package/esm2022/model/jobs-report-hourly-list-date-gte-error-component.dto.mjs +18 -0
  211. package/esm2022/model/jobs-report-hourly-list-date-lte-error-component.dto.mjs +18 -0
  212. package/esm2022/model/jobs-report-hourly-list-department-id-error-component.dto.mjs +19 -0
  213. package/esm2022/model/jobs-report-hourly-list-department-id-in-error-component.dto.mjs +19 -0
  214. package/esm2022/model/jobs-report-hourly-list-error-response400.dto.mjs +2 -0
  215. package/esm2022/model/jobs-report-hourly-list-error.dto.mjs +2 -0
  216. package/esm2022/model/jobs-report-hourly-list-id-in-error-component.dto.mjs +19 -0
  217. package/esm2022/model/jobs-report-hourly-list-task-component-in-error-component.dto.mjs +18 -0
  218. package/esm2022/model/jobs-report-hourly-list-task-in-error-component.dto.mjs +18 -0
  219. package/esm2022/model/jobs-report-hourly-list-task-project-client-in-error-component.dto.mjs +18 -0
  220. package/esm2022/model/jobs-report-hourly-list-task-project-in-error-component.dto.mjs +18 -0
  221. package/esm2022/model/jobs-report-hourly-list-task-sprint-in-error-component.dto.mjs +18 -0
  222. package/esm2022/model/jobs-report-hourly-list-type-in-error-component.dto.mjs +18 -0
  223. package/esm2022/model/jobs-report-hourly-list-updated-by-in-error-component.dto.mjs +18 -0
  224. package/esm2022/model/jobs-report-hourly-list-validation-error.dto.mjs +2 -0
  225. package/esm2022/model/jobs-report-hourly-list-work-type-in-error-component.dto.mjs +18 -0
  226. package/esm2022/model/jobs-report-users-list-created-date-gte-error-component.dto.mjs +18 -0
  227. package/esm2022/model/jobs-report-users-list-created-date-lte-error-component.dto.mjs +18 -0
  228. package/esm2022/model/jobs-report-users-list-created-gte-error-component.dto.mjs +18 -0
  229. package/esm2022/model/jobs-report-users-list-created-lte-error-component.dto.mjs +18 -0
  230. package/esm2022/model/jobs-report-users-list-error.dto.mjs +1 -1
  231. package/esm2022/model/jobs-stats-retrieve-created-date-gte-error-component.dto.mjs +18 -0
  232. package/esm2022/model/jobs-stats-retrieve-created-date-lte-error-component.dto.mjs +18 -0
  233. package/esm2022/model/jobs-stats-retrieve-created-gte-error-component.dto.mjs +18 -0
  234. package/esm2022/model/jobs-stats-retrieve-created-lte-error-component.dto.mjs +18 -0
  235. package/esm2022/model/jobs-stats-retrieve-error.dto.mjs +1 -1
  236. package/esm2022/model/locations-list-created-date-gte-error-component.dto.mjs +18 -0
  237. package/esm2022/model/locations-list-created-date-lte-error-component.dto.mjs +18 -0
  238. package/esm2022/model/locations-list-created-gte-error-component.dto.mjs +18 -0
  239. package/esm2022/model/locations-list-created-lte-error-component.dto.mjs +18 -0
  240. package/esm2022/model/locations-list-error.dto.mjs +1 -1
  241. package/esm2022/model/models.mjs +206 -32
  242. package/esm2022/model/oversea-chart.dto.mjs +2 -0
  243. package/esm2022/model/paginated-job-report-hourly-list.dto.mjs +2 -0
  244. package/esm2022/model/project-priorities-list-created-date-gte-error-component.dto.mjs +18 -0
  245. package/esm2022/model/project-priorities-list-created-date-lte-error-component.dto.mjs +18 -0
  246. package/esm2022/model/project-priorities-list-created-gte-error-component.dto.mjs +18 -0
  247. package/esm2022/model/project-priorities-list-created-lte-error-component.dto.mjs +18 -0
  248. package/esm2022/model/project-priorities-list-error.dto.mjs +1 -1
  249. package/esm2022/model/project-resources-list-created-date-gte-error-component.dto.mjs +18 -0
  250. package/esm2022/model/project-resources-list-created-date-lte-error-component.dto.mjs +18 -0
  251. package/esm2022/model/project-resources-list-created-gte-error-component.dto.mjs +18 -0
  252. package/esm2022/model/project-resources-list-created-lte-error-component.dto.mjs +18 -0
  253. package/esm2022/model/project-resources-list-error.dto.mjs +1 -1
  254. package/esm2022/model/projects-list-created-date-gte-error-component.dto.mjs +18 -0
  255. package/esm2022/model/projects-list-created-date-lte-error-component.dto.mjs +18 -0
  256. package/esm2022/model/projects-list-created-gte-error-component.dto.mjs +18 -0
  257. package/esm2022/model/projects-list-created-lte-error-component.dto.mjs +18 -0
  258. package/esm2022/model/projects-list-error.dto.mjs +1 -1
  259. package/esm2022/model/projects-with-stats-list-created-date-gte-error-component.dto.mjs +18 -0
  260. package/esm2022/model/projects-with-stats-list-created-date-lte-error-component.dto.mjs +18 -0
  261. package/esm2022/model/projects-with-stats-list-created-gte-error-component.dto.mjs +18 -0
  262. package/esm2022/model/projects-with-stats-list-created-lte-error-component.dto.mjs +18 -0
  263. package/esm2022/model/projects-with-stats-list-error.dto.mjs +1 -1
  264. package/esm2022/model/roles-list-created-date-gte-error-component.dto.mjs +18 -0
  265. package/esm2022/model/roles-list-created-date-lte-error-component.dto.mjs +18 -0
  266. package/esm2022/model/roles-list-created-gte-error-component.dto.mjs +18 -0
  267. package/esm2022/model/roles-list-created-lte-error-component.dto.mjs +18 -0
  268. package/esm2022/model/roles-list-error.dto.mjs +1 -1
  269. package/esm2022/model/sprints-job-hourly-reports-list-created-date-gte-error-component.dto.mjs +18 -0
  270. package/esm2022/model/sprints-job-hourly-reports-list-created-date-lte-error-component.dto.mjs +18 -0
  271. package/esm2022/model/sprints-job-hourly-reports-list-created-gte-error-component.dto.mjs +18 -0
  272. package/esm2022/model/sprints-job-hourly-reports-list-created-lte-error-component.dto.mjs +18 -0
  273. package/esm2022/model/sprints-job-hourly-reports-list-error.dto.mjs +1 -1
  274. package/esm2022/model/sprints-job-hourly-reports-list-work-type-in-error-component.dto.mjs +19 -0
  275. package/esm2022/model/sprints-list-created-date-gte-error-component.dto.mjs +18 -0
  276. package/esm2022/model/sprints-list-created-date-lte-error-component.dto.mjs +18 -0
  277. package/esm2022/model/sprints-list-created-gte-error-component.dto.mjs +18 -0
  278. package/esm2022/model/sprints-list-created-lte-error-component.dto.mjs +18 -0
  279. package/esm2022/model/sprints-list-error.dto.mjs +1 -1
  280. package/esm2022/model/tasks-job-hourly-reports-list-created-date-gte-error-component.dto.mjs +18 -0
  281. package/esm2022/model/tasks-job-hourly-reports-list-created-date-lte-error-component.dto.mjs +18 -0
  282. package/esm2022/model/tasks-job-hourly-reports-list-created-gte-error-component.dto.mjs +18 -0
  283. package/esm2022/model/tasks-job-hourly-reports-list-created-lte-error-component.dto.mjs +18 -0
  284. package/esm2022/model/tasks-job-hourly-reports-list-error.dto.mjs +1 -1
  285. package/esm2022/model/tasks-job-hourly-reports-list-work-type-in-error-component.dto.mjs +19 -0
  286. package/esm2022/model/tasks-list-created-date-gte-error-component.dto.mjs +18 -0
  287. package/esm2022/model/tasks-list-created-date-lte-error-component.dto.mjs +18 -0
  288. package/esm2022/model/tasks-list-created-gte-error-component.dto.mjs +18 -0
  289. package/esm2022/model/tasks-list-created-lte-error-component.dto.mjs +18 -0
  290. package/esm2022/model/tasks-list-error.dto.mjs +1 -1
  291. package/esm2022/model/tasks-stats-retrieve-created-date-gte-error-component.dto.mjs +18 -0
  292. package/esm2022/model/tasks-stats-retrieve-created-date-lte-error-component.dto.mjs +18 -0
  293. package/esm2022/model/tasks-stats-retrieve-created-gte-error-component.dto.mjs +18 -0
  294. package/esm2022/model/tasks-stats-retrieve-created-lte-error-component.dto.mjs +18 -0
  295. package/esm2022/model/tasks-stats-retrieve-error.dto.mjs +1 -1
  296. package/esm2022/model/tasks-statuses-retrieve-created-date-gte-error-component.dto.mjs +18 -0
  297. package/esm2022/model/tasks-statuses-retrieve-created-date-lte-error-component.dto.mjs +18 -0
  298. package/esm2022/model/tasks-statuses-retrieve-created-gte-error-component.dto.mjs +18 -0
  299. package/esm2022/model/tasks-statuses-retrieve-created-lte-error-component.dto.mjs +18 -0
  300. package/esm2022/model/tasks-statuses-retrieve-error.dto.mjs +1 -1
  301. package/esm2022/model/update-client-note-request.dto.mjs +1 -1
  302. package/esm2022/model/user-capacities-calculate-capacity-create-error-response400.dto.mjs +1 -1
  303. package/esm2022/model/user-capacities-list-created-date-gte-error-component.dto.mjs +18 -0
  304. package/esm2022/model/user-capacities-list-created-date-lte-error-component.dto.mjs +18 -0
  305. package/esm2022/model/user-capacities-list-created-gte-error-component.dto.mjs +18 -0
  306. package/esm2022/model/user-capacities-list-created-lte-error-component.dto.mjs +18 -0
  307. package/esm2022/model/user-capacities-list-error.dto.mjs +1 -1
  308. package/esm2022/model/user-logins-list-created-date-gte-error-component.dto.mjs +18 -0
  309. package/esm2022/model/user-logins-list-created-date-lte-error-component.dto.mjs +18 -0
  310. package/esm2022/model/user-logins-list-created-gte-error-component.dto.mjs +18 -0
  311. package/esm2022/model/user-logins-list-created-lte-error-component.dto.mjs +18 -0
  312. package/esm2022/model/user-logins-list-error.dto.mjs +1 -1
  313. package/esm2022/model/user-periods-list-created-date-gte-error-component.dto.mjs +18 -0
  314. package/esm2022/model/user-periods-list-created-date-lte-error-component.dto.mjs +18 -0
  315. package/esm2022/model/user-periods-list-created-gte-error-component.dto.mjs +18 -0
  316. package/esm2022/model/user-periods-list-created-lte-error-component.dto.mjs +18 -0
  317. package/esm2022/model/user-periods-list-error.dto.mjs +1 -1
  318. package/esm2022/model/users-list-created-date-gte-error-component.dto.mjs +18 -0
  319. package/esm2022/model/users-list-created-date-lte-error-component.dto.mjs +18 -0
  320. package/esm2022/model/users-list-created-gte-error-component.dto.mjs +18 -0
  321. package/esm2022/model/users-list-created-lte-error-component.dto.mjs +18 -0
  322. package/esm2022/model/users-list-error.dto.mjs +1 -1
  323. package/esm2022/model/users-utilization-chart-list-created-date-gte-error-component.dto.mjs +18 -0
  324. package/esm2022/model/users-utilization-chart-list-created-date-lte-error-component.dto.mjs +18 -0
  325. package/esm2022/model/users-utilization-chart-list-created-gte-error-component.dto.mjs +18 -0
  326. package/esm2022/model/users-utilization-chart-list-created-lte-error-component.dto.mjs +18 -0
  327. package/esm2022/model/users-utilization-chart-list-error.dto.mjs +1 -1
  328. package/esm2022/model/vendors-list-created-date-gte-error-component.dto.mjs +18 -0
  329. package/esm2022/model/vendors-list-created-date-lte-error-component.dto.mjs +18 -0
  330. package/esm2022/model/vendors-list-created-gte-error-component.dto.mjs +18 -0
  331. package/esm2022/model/vendors-list-created-lte-error-component.dto.mjs +18 -0
  332. package/esm2022/model/vendors-list-error.dto.mjs +1 -1
  333. package/esm2022/model/work-types-list-created-date-gte-error-component.dto.mjs +18 -0
  334. package/esm2022/model/work-types-list-created-date-lte-error-component.dto.mjs +18 -0
  335. package/esm2022/model/work-types-list-created-gte-error-component.dto.mjs +18 -0
  336. package/esm2022/model/work-types-list-created-lte-error-component.dto.mjs +18 -0
  337. package/esm2022/model/work-types-list-error.dto.mjs +1 -1
  338. package/fesm2022/saritasa-crm-delmar-core-sdk.mjs +4444 -624
  339. package/fesm2022/saritasa-crm-delmar-core-sdk.mjs.map +1 -1
  340. package/model/branch-periods-list-created-date-gte-error-component.dto.d.ts +26 -0
  341. package/model/branch-periods-list-created-date-lte-error-component.dto.d.ts +26 -0
  342. package/model/branch-periods-list-created-gte-error-component.dto.d.ts +26 -0
  343. package/model/branch-periods-list-created-lte-error-component.dto.d.ts +26 -0
  344. package/model/branch-periods-list-error.dto.d.ts +5 -1
  345. package/model/branches-list-created-date-gte-error-component.dto.d.ts +26 -0
  346. package/model/branches-list-created-date-lte-error-component.dto.d.ts +26 -0
  347. package/model/branches-list-created-gte-error-component.dto.d.ts +26 -0
  348. package/model/branches-list-created-lte-error-component.dto.d.ts +26 -0
  349. package/model/branches-list-error.dto.d.ts +5 -1
  350. package/model/branches-users-stats-list-created-date-gte-error-component.dto.d.ts +26 -0
  351. package/model/branches-users-stats-list-created-date-lte-error-component.dto.d.ts +26 -0
  352. package/model/branches-users-stats-list-created-gte-error-component.dto.d.ts +26 -0
  353. package/model/branches-users-stats-list-created-lte-error-component.dto.d.ts +26 -0
  354. package/model/branches-users-stats-list-error.dto.d.ts +5 -1
  355. package/model/client-notes-update-error.dto.d.ts +2 -1
  356. package/model/client-notes-update-project-error-component.dto.d.ts +27 -0
  357. package/model/client-resource-create-export-job-request.dto.d.ts +16 -0
  358. package/model/clients-list-created-date-gte-error-component.dto.d.ts +26 -0
  359. package/model/clients-list-created-date-lte-error-component.dto.d.ts +26 -0
  360. package/model/clients-list-created-gte-error-component.dto.d.ts +26 -0
  361. package/model/clients-list-created-lte-error-component.dto.d.ts +26 -0
  362. package/model/clients-list-error.dto.d.ts +5 -1
  363. package/model/clients-with-stats-list-created-date-gte-error-component.dto.d.ts +26 -0
  364. package/model/clients-with-stats-list-created-date-lte-error-component.dto.d.ts +26 -0
  365. package/model/clients-with-stats-list-created-gte-error-component.dto.d.ts +26 -0
  366. package/model/clients-with-stats-list-created-lte-error-component.dto.d.ts +26 -0
  367. package/model/clients-with-stats-list-error.dto.d.ts +5 -1
  368. package/model/components-job-hourly-reports-list-created-date-gte-error-component.dto.d.ts +26 -0
  369. package/model/components-job-hourly-reports-list-created-date-lte-error-component.dto.d.ts +26 -0
  370. package/model/components-job-hourly-reports-list-created-gte-error-component.dto.d.ts +26 -0
  371. package/model/components-job-hourly-reports-list-created-lte-error-component.dto.d.ts +26 -0
  372. package/model/components-job-hourly-reports-list-error.dto.d.ts +6 -1
  373. package/model/components-job-hourly-reports-list-work-type-in-error-component.dto.d.ts +27 -0
  374. package/model/components-list-created-date-gte-error-component.dto.d.ts +26 -0
  375. package/model/components-list-created-date-lte-error-component.dto.d.ts +26 -0
  376. package/model/components-list-created-gte-error-component.dto.d.ts +26 -0
  377. package/model/components-list-created-lte-error-component.dto.d.ts +26 -0
  378. package/model/components-list-error.dto.d.ts +5 -1
  379. package/model/departments-job-hourly-reports-list-created-date-gte-error-component.dto.d.ts +26 -0
  380. package/model/departments-job-hourly-reports-list-created-date-lte-error-component.dto.d.ts +26 -0
  381. package/model/departments-job-hourly-reports-list-created-gte-error-component.dto.d.ts +26 -0
  382. package/model/departments-job-hourly-reports-list-created-lte-error-component.dto.d.ts +26 -0
  383. package/model/departments-job-hourly-reports-list-error.dto.d.ts +10 -4
  384. package/model/departments-job-hourly-reports-list-project-in-error-component.dto.d.ts +27 -0
  385. package/model/departments-job-hourly-reports-list-work-type-in-error-component.dto.d.ts +27 -0
  386. package/model/departments-list-created-date-gte-error-component.dto.d.ts +26 -0
  387. package/model/departments-list-created-date-lte-error-component.dto.d.ts +26 -0
  388. package/model/departments-list-created-gte-error-component.dto.d.ts +26 -0
  389. package/model/departments-list-created-lte-error-component.dto.d.ts +26 -0
  390. package/model/departments-list-error.dto.d.ts +5 -1
  391. package/model/dismissal-reasons-list-created-date-gte-error-component.dto.d.ts +26 -0
  392. package/model/dismissal-reasons-list-created-date-lte-error-component.dto.d.ts +26 -0
  393. package/model/dismissal-reasons-list-created-gte-error-component.dto.d.ts +26 -0
  394. package/model/dismissal-reasons-list-created-lte-error-component.dto.d.ts +26 -0
  395. package/model/dismissal-reasons-list-error.dto.d.ts +5 -1
  396. package/model/{jobs-report-daily-list-error-response400.dto.d.ts → export-clients-cancel-create-error-response400.dto.d.ts} +2 -3
  397. package/model/export-clients-list-error-response400.dto.d.ts +15 -0
  398. package/model/export-clients-retrieve-error-response400.dto.d.ts +15 -0
  399. package/model/export-clients-start-create-error-response400.dto.d.ts +16 -0
  400. package/model/export-clients-start-create-error.dto.d.ts +16 -0
  401. package/model/export-clients-start-create-file-format-error-component.dto.d.ts +28 -0
  402. package/model/export-clients-start-create-non-field-errors-error-component.dto.d.ts +27 -0
  403. package/model/{user-capacities-calculate-capacity-create-validation-error.dto.d.ts → export-clients-start-create-validation-error.dto.d.ts} +3 -3
  404. package/model/{job-report-daily.dto.d.ts → job-report-hourly.dto.d.ts} +2 -2
  405. package/model/jobs-billable-chart-list-created-date-gte-error-component.dto.d.ts +26 -0
  406. package/model/jobs-billable-chart-list-created-date-lte-error-component.dto.d.ts +26 -0
  407. package/model/jobs-billable-chart-list-created-gte-error-component.dto.d.ts +26 -0
  408. package/model/jobs-billable-chart-list-created-lte-error-component.dto.d.ts +26 -0
  409. package/model/jobs-billable-chart-list-error.dto.d.ts +5 -1
  410. package/model/jobs-list-created-date-gte-error-component.dto.d.ts +26 -0
  411. package/model/jobs-list-created-date-lte-error-component.dto.d.ts +26 -0
  412. package/model/jobs-list-created-gte-error-component.dto.d.ts +26 -0
  413. package/model/jobs-list-created-lte-error-component.dto.d.ts +26 -0
  414. package/model/jobs-list-error.dto.d.ts +5 -1
  415. package/model/{jobs-report-daily-list-billed-by-in-error-component.dto.d.ts → jobs-oversea-chart-list-billed-by-in-error-component.dto.d.ts} +5 -5
  416. package/model/{jobs-report-daily-list-branch-in-error-component.dto.d.ts → jobs-oversea-chart-list-branch-in-error-component.dto.d.ts} +5 -5
  417. package/model/{jobs-report-daily-list-created-by-in-error-component.dto.d.ts → jobs-oversea-chart-list-created-by-in-error-component.dto.d.ts} +5 -5
  418. package/model/jobs-oversea-chart-list-created-date-gte-error-component.dto.d.ts +26 -0
  419. package/model/jobs-oversea-chart-list-created-date-lte-error-component.dto.d.ts +26 -0
  420. package/model/jobs-oversea-chart-list-created-gte-error-component.dto.d.ts +26 -0
  421. package/model/jobs-oversea-chart-list-created-lte-error-component.dto.d.ts +26 -0
  422. package/model/{jobs-report-daily-list-date-gte-error-component.dto.d.ts → jobs-oversea-chart-list-date-gte-error-component.dto.d.ts} +5 -5
  423. package/model/{jobs-report-daily-list-date-lte-error-component.dto.d.ts → jobs-oversea-chart-list-date-lte-error-component.dto.d.ts} +5 -5
  424. package/model/{jobs-report-daily-list-department-id-error-component.dto.d.ts → jobs-oversea-chart-list-department-id-error-component.dto.d.ts} +5 -5
  425. package/model/{jobs-report-daily-list-department-id-in-error-component.dto.d.ts → jobs-oversea-chart-list-department-id-in-error-component.dto.d.ts} +5 -5
  426. package/model/jobs-oversea-chart-list-error-response400.dto.d.ts +16 -0
  427. package/model/jobs-oversea-chart-list-error.dto.d.ts +35 -0
  428. package/model/{jobs-report-daily-list-id-in-error-component.dto.d.ts → jobs-oversea-chart-list-id-in-error-component.dto.d.ts} +5 -5
  429. package/model/{jobs-report-daily-list-task-component-in-error-component.dto.d.ts → jobs-oversea-chart-list-task-component-in-error-component.dto.d.ts} +5 -5
  430. package/model/{jobs-report-daily-list-task-in-error-component.dto.d.ts → jobs-oversea-chart-list-task-in-error-component.dto.d.ts} +5 -5
  431. package/model/{jobs-report-daily-list-task-project-client-in-error-component.dto.d.ts → jobs-oversea-chart-list-task-project-client-in-error-component.dto.d.ts} +5 -5
  432. package/model/{jobs-report-daily-list-task-project-in-error-component.dto.d.ts → jobs-oversea-chart-list-task-project-in-error-component.dto.d.ts} +5 -5
  433. package/model/{jobs-report-daily-list-task-sprint-in-error-component.dto.d.ts → jobs-oversea-chart-list-task-sprint-in-error-component.dto.d.ts} +5 -5
  434. package/model/jobs-oversea-chart-list-time-span-error-component.dto.d.ts +27 -0
  435. package/model/{jobs-report-daily-list-type-in-error-component.dto.d.ts → jobs-oversea-chart-list-type-in-error-component.dto.d.ts} +5 -5
  436. package/model/{jobs-report-daily-list-updated-by-in-error-component.dto.d.ts → jobs-oversea-chart-list-updated-by-in-error-component.dto.d.ts} +5 -5
  437. package/model/{jobs-report-daily-list-validation-error.dto.d.ts → jobs-oversea-chart-list-validation-error.dto.d.ts} +3 -3
  438. package/model/{jobs-report-daily-list-work-type-in-error-component.dto.d.ts → jobs-oversea-chart-list-work-type-in-error-component.dto.d.ts} +5 -5
  439. package/model/jobs-production-chart-list-created-date-gte-error-component.dto.d.ts +26 -0
  440. package/model/jobs-production-chart-list-created-date-lte-error-component.dto.d.ts +26 -0
  441. package/model/jobs-production-chart-list-created-gte-error-component.dto.d.ts +26 -0
  442. package/model/jobs-production-chart-list-created-lte-error-component.dto.d.ts +26 -0
  443. package/model/jobs-production-chart-list-error.dto.d.ts +5 -1
  444. package/model/jobs-report-departments-list-created-date-gte-error-component.dto.d.ts +26 -0
  445. package/model/jobs-report-departments-list-created-date-lte-error-component.dto.d.ts +26 -0
  446. package/model/jobs-report-departments-list-created-gte-error-component.dto.d.ts +26 -0
  447. package/model/jobs-report-departments-list-created-lte-error-component.dto.d.ts +26 -0
  448. package/model/jobs-report-departments-list-error.dto.d.ts +5 -1
  449. package/model/jobs-report-hourly-list-billed-by-in-error-component.dto.d.ts +26 -0
  450. package/model/jobs-report-hourly-list-branch-in-error-component.dto.d.ts +26 -0
  451. package/model/jobs-report-hourly-list-created-by-in-error-component.dto.d.ts +26 -0
  452. package/model/jobs-report-hourly-list-created-date-gte-error-component.dto.d.ts +26 -0
  453. package/model/jobs-report-hourly-list-created-date-lte-error-component.dto.d.ts +26 -0
  454. package/model/jobs-report-hourly-list-created-gte-error-component.dto.d.ts +26 -0
  455. package/model/jobs-report-hourly-list-created-lte-error-component.dto.d.ts +26 -0
  456. package/model/jobs-report-hourly-list-date-gte-error-component.dto.d.ts +26 -0
  457. package/model/jobs-report-hourly-list-date-lte-error-component.dto.d.ts +26 -0
  458. package/model/jobs-report-hourly-list-department-id-error-component.dto.d.ts +27 -0
  459. package/model/jobs-report-hourly-list-department-id-in-error-component.dto.d.ts +27 -0
  460. package/model/jobs-report-hourly-list-error-response400.dto.d.ts +16 -0
  461. package/model/jobs-report-hourly-list-error.dto.d.ts +34 -0
  462. package/model/jobs-report-hourly-list-id-in-error-component.dto.d.ts +27 -0
  463. package/model/jobs-report-hourly-list-task-component-in-error-component.dto.d.ts +26 -0
  464. package/model/jobs-report-hourly-list-task-in-error-component.dto.d.ts +26 -0
  465. package/model/jobs-report-hourly-list-task-project-client-in-error-component.dto.d.ts +26 -0
  466. package/model/jobs-report-hourly-list-task-project-in-error-component.dto.d.ts +26 -0
  467. package/model/jobs-report-hourly-list-task-sprint-in-error-component.dto.d.ts +26 -0
  468. package/model/jobs-report-hourly-list-type-in-error-component.dto.d.ts +26 -0
  469. package/model/jobs-report-hourly-list-updated-by-in-error-component.dto.d.ts +26 -0
  470. package/model/jobs-report-hourly-list-validation-error.dto.d.ts +15 -0
  471. package/model/jobs-report-hourly-list-work-type-in-error-component.dto.d.ts +26 -0
  472. package/model/jobs-report-users-list-created-date-gte-error-component.dto.d.ts +26 -0
  473. package/model/jobs-report-users-list-created-date-lte-error-component.dto.d.ts +26 -0
  474. package/model/jobs-report-users-list-created-gte-error-component.dto.d.ts +26 -0
  475. package/model/jobs-report-users-list-created-lte-error-component.dto.d.ts +26 -0
  476. package/model/jobs-report-users-list-error.dto.d.ts +5 -1
  477. package/model/jobs-stats-retrieve-created-date-gte-error-component.dto.d.ts +26 -0
  478. package/model/jobs-stats-retrieve-created-date-lte-error-component.dto.d.ts +26 -0
  479. package/model/jobs-stats-retrieve-created-gte-error-component.dto.d.ts +26 -0
  480. package/model/jobs-stats-retrieve-created-lte-error-component.dto.d.ts +26 -0
  481. package/model/jobs-stats-retrieve-error.dto.d.ts +5 -1
  482. package/model/locations-list-created-date-gte-error-component.dto.d.ts +26 -0
  483. package/model/locations-list-created-date-lte-error-component.dto.d.ts +26 -0
  484. package/model/locations-list-created-gte-error-component.dto.d.ts +26 -0
  485. package/model/locations-list-created-lte-error-component.dto.d.ts +26 -0
  486. package/model/locations-list-error.dto.d.ts +5 -1
  487. package/model/models.d.ts +205 -31
  488. package/model/oversea-chart.dto.d.ts +19 -0
  489. package/model/{paginated-job-report-daily-list.dto.d.ts → paginated-job-report-hourly-list.dto.d.ts} +3 -3
  490. package/model/project-priorities-list-created-date-gte-error-component.dto.d.ts +26 -0
  491. package/model/project-priorities-list-created-date-lte-error-component.dto.d.ts +26 -0
  492. package/model/project-priorities-list-created-gte-error-component.dto.d.ts +26 -0
  493. package/model/project-priorities-list-created-lte-error-component.dto.d.ts +26 -0
  494. package/model/project-priorities-list-error.dto.d.ts +5 -1
  495. package/model/project-resources-list-created-date-gte-error-component.dto.d.ts +26 -0
  496. package/model/project-resources-list-created-date-lte-error-component.dto.d.ts +26 -0
  497. package/model/project-resources-list-created-gte-error-component.dto.d.ts +26 -0
  498. package/model/project-resources-list-created-lte-error-component.dto.d.ts +26 -0
  499. package/model/project-resources-list-error.dto.d.ts +5 -1
  500. package/model/projects-list-created-date-gte-error-component.dto.d.ts +26 -0
  501. package/model/projects-list-created-date-lte-error-component.dto.d.ts +26 -0
  502. package/model/projects-list-created-gte-error-component.dto.d.ts +26 -0
  503. package/model/projects-list-created-lte-error-component.dto.d.ts +26 -0
  504. package/model/projects-list-error.dto.d.ts +7 -3
  505. package/model/projects-with-stats-list-created-date-gte-error-component.dto.d.ts +26 -0
  506. package/model/projects-with-stats-list-created-date-lte-error-component.dto.d.ts +26 -0
  507. package/model/projects-with-stats-list-created-gte-error-component.dto.d.ts +26 -0
  508. package/model/projects-with-stats-list-created-lte-error-component.dto.d.ts +26 -0
  509. package/model/projects-with-stats-list-error.dto.d.ts +8 -4
  510. package/model/roles-list-created-date-gte-error-component.dto.d.ts +26 -0
  511. package/model/roles-list-created-date-lte-error-component.dto.d.ts +26 -0
  512. package/model/roles-list-created-gte-error-component.dto.d.ts +26 -0
  513. package/model/roles-list-created-lte-error-component.dto.d.ts +26 -0
  514. package/model/roles-list-error.dto.d.ts +5 -1
  515. package/model/sprints-job-hourly-reports-list-created-date-gte-error-component.dto.d.ts +26 -0
  516. package/model/sprints-job-hourly-reports-list-created-date-lte-error-component.dto.d.ts +26 -0
  517. package/model/sprints-job-hourly-reports-list-created-gte-error-component.dto.d.ts +26 -0
  518. package/model/sprints-job-hourly-reports-list-created-lte-error-component.dto.d.ts +26 -0
  519. package/model/sprints-job-hourly-reports-list-error.dto.d.ts +6 -1
  520. package/model/sprints-job-hourly-reports-list-work-type-in-error-component.dto.d.ts +27 -0
  521. package/model/sprints-list-created-date-gte-error-component.dto.d.ts +26 -0
  522. package/model/sprints-list-created-date-lte-error-component.dto.d.ts +26 -0
  523. package/model/sprints-list-created-gte-error-component.dto.d.ts +26 -0
  524. package/model/sprints-list-created-lte-error-component.dto.d.ts +26 -0
  525. package/model/sprints-list-error.dto.d.ts +5 -1
  526. package/model/tasks-job-hourly-reports-list-created-date-gte-error-component.dto.d.ts +26 -0
  527. package/model/tasks-job-hourly-reports-list-created-date-lte-error-component.dto.d.ts +26 -0
  528. package/model/tasks-job-hourly-reports-list-created-gte-error-component.dto.d.ts +26 -0
  529. package/model/tasks-job-hourly-reports-list-created-lte-error-component.dto.d.ts +26 -0
  530. package/model/tasks-job-hourly-reports-list-error.dto.d.ts +12 -7
  531. package/model/tasks-job-hourly-reports-list-work-type-in-error-component.dto.d.ts +27 -0
  532. package/model/tasks-list-created-date-gte-error-component.dto.d.ts +26 -0
  533. package/model/tasks-list-created-date-lte-error-component.dto.d.ts +26 -0
  534. package/model/tasks-list-created-gte-error-component.dto.d.ts +26 -0
  535. package/model/tasks-list-created-lte-error-component.dto.d.ts +26 -0
  536. package/model/tasks-list-error.dto.d.ts +5 -1
  537. package/model/tasks-stats-retrieve-created-date-gte-error-component.dto.d.ts +26 -0
  538. package/model/tasks-stats-retrieve-created-date-lte-error-component.dto.d.ts +26 -0
  539. package/model/tasks-stats-retrieve-created-gte-error-component.dto.d.ts +26 -0
  540. package/model/tasks-stats-retrieve-created-lte-error-component.dto.d.ts +26 -0
  541. package/model/tasks-stats-retrieve-error.dto.d.ts +5 -1
  542. package/model/tasks-statuses-retrieve-created-date-gte-error-component.dto.d.ts +26 -0
  543. package/model/tasks-statuses-retrieve-created-date-lte-error-component.dto.d.ts +26 -0
  544. package/model/tasks-statuses-retrieve-created-gte-error-component.dto.d.ts +26 -0
  545. package/model/tasks-statuses-retrieve-created-lte-error-component.dto.d.ts +26 -0
  546. package/model/tasks-statuses-retrieve-error.dto.d.ts +5 -1
  547. package/model/update-client-note-request.dto.d.ts +1 -0
  548. package/model/user-capacities-calculate-capacity-create-error-response400.dto.d.ts +1 -2
  549. package/model/user-capacities-list-created-date-gte-error-component.dto.d.ts +26 -0
  550. package/model/user-capacities-list-created-date-lte-error-component.dto.d.ts +26 -0
  551. package/model/user-capacities-list-created-gte-error-component.dto.d.ts +26 -0
  552. package/model/user-capacities-list-created-lte-error-component.dto.d.ts +26 -0
  553. package/model/user-capacities-list-error.dto.d.ts +7 -3
  554. package/model/user-logins-list-created-date-gte-error-component.dto.d.ts +26 -0
  555. package/model/user-logins-list-created-date-lte-error-component.dto.d.ts +26 -0
  556. package/model/user-logins-list-created-gte-error-component.dto.d.ts +26 -0
  557. package/model/user-logins-list-created-lte-error-component.dto.d.ts +26 -0
  558. package/model/user-logins-list-error.dto.d.ts +5 -1
  559. package/model/user-periods-list-created-date-gte-error-component.dto.d.ts +26 -0
  560. package/model/user-periods-list-created-date-lte-error-component.dto.d.ts +26 -0
  561. package/model/user-periods-list-created-gte-error-component.dto.d.ts +26 -0
  562. package/model/user-periods-list-created-lte-error-component.dto.d.ts +26 -0
  563. package/model/user-periods-list-error.dto.d.ts +5 -1
  564. package/model/users-list-created-date-gte-error-component.dto.d.ts +26 -0
  565. package/model/users-list-created-date-lte-error-component.dto.d.ts +26 -0
  566. package/model/users-list-created-gte-error-component.dto.d.ts +26 -0
  567. package/model/users-list-created-lte-error-component.dto.d.ts +26 -0
  568. package/model/users-list-error.dto.d.ts +5 -1
  569. package/model/users-utilization-chart-list-created-date-gte-error-component.dto.d.ts +26 -0
  570. package/model/users-utilization-chart-list-created-date-lte-error-component.dto.d.ts +26 -0
  571. package/model/users-utilization-chart-list-created-gte-error-component.dto.d.ts +26 -0
  572. package/model/users-utilization-chart-list-created-lte-error-component.dto.d.ts +26 -0
  573. package/model/users-utilization-chart-list-error.dto.d.ts +5 -1
  574. package/model/vendors-list-created-date-gte-error-component.dto.d.ts +26 -0
  575. package/model/vendors-list-created-date-lte-error-component.dto.d.ts +26 -0
  576. package/model/vendors-list-created-gte-error-component.dto.d.ts +26 -0
  577. package/model/vendors-list-created-lte-error-component.dto.d.ts +26 -0
  578. package/model/vendors-list-error.dto.d.ts +5 -1
  579. package/model/work-types-list-created-date-gte-error-component.dto.d.ts +26 -0
  580. package/model/work-types-list-created-date-lte-error-component.dto.d.ts +26 -0
  581. package/model/work-types-list-created-gte-error-component.dto.d.ts +26 -0
  582. package/model/work-types-list-created-lte-error-component.dto.d.ts +26 -0
  583. package/model/work-types-list-error.dto.d.ts +5 -1
  584. package/package.json +3 -3
  585. package/esm2022/model/job-report-daily.dto.mjs +0 -2
  586. package/esm2022/model/jobs-report-daily-list-billed-by-in-error-component.dto.mjs +0 -18
  587. package/esm2022/model/jobs-report-daily-list-branch-in-error-component.dto.mjs +0 -18
  588. package/esm2022/model/jobs-report-daily-list-created-by-in-error-component.dto.mjs +0 -18
  589. package/esm2022/model/jobs-report-daily-list-date-gte-error-component.dto.mjs +0 -18
  590. package/esm2022/model/jobs-report-daily-list-date-lte-error-component.dto.mjs +0 -18
  591. package/esm2022/model/jobs-report-daily-list-department-id-error-component.dto.mjs +0 -19
  592. package/esm2022/model/jobs-report-daily-list-department-id-in-error-component.dto.mjs +0 -19
  593. package/esm2022/model/jobs-report-daily-list-error-response400.dto.mjs +0 -2
  594. package/esm2022/model/jobs-report-daily-list-error.dto.mjs +0 -2
  595. package/esm2022/model/jobs-report-daily-list-id-in-error-component.dto.mjs +0 -19
  596. package/esm2022/model/jobs-report-daily-list-task-component-in-error-component.dto.mjs +0 -18
  597. package/esm2022/model/jobs-report-daily-list-task-in-error-component.dto.mjs +0 -18
  598. package/esm2022/model/jobs-report-daily-list-task-project-client-in-error-component.dto.mjs +0 -18
  599. package/esm2022/model/jobs-report-daily-list-task-project-in-error-component.dto.mjs +0 -18
  600. package/esm2022/model/jobs-report-daily-list-task-sprint-in-error-component.dto.mjs +0 -18
  601. package/esm2022/model/jobs-report-daily-list-type-in-error-component.dto.mjs +0 -18
  602. package/esm2022/model/jobs-report-daily-list-updated-by-in-error-component.dto.mjs +0 -18
  603. package/esm2022/model/jobs-report-daily-list-validation-error.dto.mjs +0 -2
  604. package/esm2022/model/jobs-report-daily-list-work-type-in-error-component.dto.mjs +0 -18
  605. package/esm2022/model/paginated-job-report-daily-list.dto.mjs +0 -2
  606. package/esm2022/model/user-capacities-calculate-capacity-create-branch-error-component.dto.mjs +0 -21
  607. package/esm2022/model/user-capacities-calculate-capacity-create-capacity-error-component.dto.mjs +0 -21
  608. package/esm2022/model/user-capacities-calculate-capacity-create-date-error-component.dto.mjs +0 -21
  609. package/esm2022/model/user-capacities-calculate-capacity-create-department-error-component.dto.mjs +0 -21
  610. package/esm2022/model/user-capacities-calculate-capacity-create-error.dto.mjs +0 -2
  611. package/esm2022/model/user-capacities-calculate-capacity-create-non-field-errors-error-component.dto.mjs +0 -19
  612. package/esm2022/model/user-capacities-calculate-capacity-create-user-error-component.dto.mjs +0 -21
  613. package/esm2022/model/user-capacities-calculate-capacity-create-validation-error.dto.mjs +0 -2
  614. package/esm2022/model/user-capacities-calculate-capacity-create-work-type-error-component.dto.mjs +0 -21
  615. package/esm2022/model/user-capacity-request.dto.mjs +0 -11
  616. package/model/jobs-report-daily-list-error.dto.d.ts +0 -30
  617. package/model/user-capacities-calculate-capacity-create-branch-error-component.dto.d.ts +0 -29
  618. package/model/user-capacities-calculate-capacity-create-capacity-error-component.dto.d.ts +0 -29
  619. package/model/user-capacities-calculate-capacity-create-date-error-component.dto.d.ts +0 -29
  620. package/model/user-capacities-calculate-capacity-create-department-error-component.dto.d.ts +0 -29
  621. package/model/user-capacities-calculate-capacity-create-error.dto.d.ts +0 -21
  622. package/model/user-capacities-calculate-capacity-create-non-field-errors-error-component.dto.d.ts +0 -27
  623. package/model/user-capacities-calculate-capacity-create-user-error-component.dto.d.ts +0 -29
  624. package/model/user-capacities-calculate-capacity-create-work-type-error-component.dto.d.ts +0 -29
  625. package/model/user-capacity-request.dto.d.ts +0 -20
@@ -114,6 +114,10 @@ export class BranchPeriodsApiService extends BaseService {
114
114
  }
115
115
  branchPeriodsList(requestParameters, observe = "body", reportProgress = false, options) {
116
116
  const branchIsActive = requestParameters?.branchIsActive;
117
+ const createdDateGte = requestParameters?.createdDateGte;
118
+ const createdDateLte = requestParameters?.createdDateLte;
119
+ const createdGte = requestParameters?.createdGte;
120
+ const createdLte = requestParameters?.createdLte;
117
121
  const id = requestParameters?.id;
118
122
  const idIn = requestParameters?.idIn;
119
123
  const limit = requestParameters?.limit;
@@ -125,6 +129,10 @@ export class BranchPeriodsApiService extends BaseService {
125
129
  const typeIn = requestParameters?.typeIn;
126
130
  let localVarQueryParameters = new HttpParams({ encoder: this.encoder });
127
131
  localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, branchIsActive, "branch__is_active");
132
+ localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, createdDateGte, "created__date__gte");
133
+ localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, createdDateLte, "created__date__lte");
134
+ localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, createdGte, "created__gte");
135
+ localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, createdLte, "created__lte");
128
136
  localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, id, "id");
129
137
  if (idIn) {
130
138
  localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, [...idIn].join(COLLECTION_FORMATS["csv"]), "id__in");
@@ -283,4 +291,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
283
291
  }] }, { type: i2.Configuration, decorators: [{
284
292
  type: Optional
285
293
  }] }] });
286
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmNoLXBlcmlvZHMtYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hcGkvYnJhbmNoLXBlcmlvZHMtYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFDSCx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFHTCxVQUFVLEVBSVYsV0FBVyxHQUNaLE1BQU0sc0JBQXNCLENBQUM7QUFtQzlCLGFBQWE7QUFDYixPQUFPLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7OztBQWFsRCxNQUFNLE9BQU8sdUJBQ1gsU0FBUSxXQUFXO0lBSVA7SUFEWixZQUNZLFVBQXNCLEVBQ0QsUUFBMkIsRUFDOUMsYUFBNkI7UUFFekMsS0FBSyxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUpyQixlQUFVLEdBQVYsVUFBVSxDQUFZO0lBS2xDLENBQUM7SUFzQ00sbUJBQW1CLENBQ3hCLGlCQUFtRCxFQUNuRCxVQUFlLE1BQU0sRUFDckIsaUJBQTBCLEtBQUssRUFDL0IsT0FJQztRQUVELE1BQU0sc0JBQXNCLEdBQUcsaUJBQWlCLEVBQUUsc0JBQXNCLENBQUM7UUFDekUsSUFDRSxzQkFBc0IsS0FBSyxJQUFJO1lBQy9CLHNCQUFzQixLQUFLLFNBQVMsRUFDcEMsQ0FBQztZQUNELE1BQU0sSUFBSSxLQUFLLENBQ2IsbUdBQW1HLENBQ3BHLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUUxQyx1Q0FBdUM7UUFFdkMsb0NBQW9DO1FBQ3BDLGVBQWUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUN6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LE9BQU8sRUFBRSxPQUFPO1lBQ2hCLGFBQWEsRUFBRSxxQkFBcUI7WUFDcEMsY0FBYyxFQUFFLGNBQWM7U0FDL0IsQ0FDRixDQUFDO0lBQ0osQ0FBQzt3R0FwcEJVLHVCQUF1Qiw0Q0FNWixTQUFTOzRHQU5wQix1QkFBdUIsY0FGdEIsTUFBTTs7NEZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBT0ksUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxTQUFTOzswQkFDNUIsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRGVsbWFyIEFwaVxuICpcbiAqXG4gKlxuICogTk9URTogVGhpcyBjbGFzcyBpcyBhdXRvIGdlbmVyYXRlZCBieSBPcGVuQVBJIEdlbmVyYXRvciAoaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoKS5cbiAqIGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaFxuICogRG8gbm90IGVkaXQgdGhlIGNsYXNzIG1hbnVhbGx5LlxuICovXG4vKiB0c2xpbnQ6ZGlzYWJsZTpuby11bnVzZWQtdmFyaWFibGUgbWVtYmVyLW9yZGVyaW5nICovXG5cbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWwgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgSHR0cENsaWVudCxcbiAgSHR0cEhlYWRlcnMsXG4gIEh0dHBQYXJhbXMsXG4gIEh0dHBSZXNwb25zZSxcbiAgSHR0cEV2ZW50LFxuICBIdHRwUGFyYW1ldGVyQ29kZWMsXG4gIEh0dHBDb250ZXh0LFxufSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcbmltcG9ydCB7IEN1c3RvbUh0dHBQYXJhbWV0ZXJDb2RlYyB9IGZyb20gXCIuLi9lbmNvZGVyXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcblxuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgQnJhbmNoUGVyaW9kRHRvIH0gZnJvbSBcIi4uL21vZGVsL2JyYW5jaC1wZXJpb2QuZHRvXCI7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBCcmFuY2hQZXJpb2RSZXF1ZXN0RHRvIH0gZnJvbSBcIi4uL21vZGVsL2JyYW5jaC1wZXJpb2QtcmVxdWVzdC5kdG9cIjtcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IEJyYW5jaFBlcmlvZHNDcmVhdGVFcnJvclJlc3BvbnNlNDAwRHRvIH0gZnJvbSBcIi4uL21vZGVsL2JyYW5jaC1wZXJpb2RzLWNyZWF0ZS1lcnJvci1yZXNwb25zZTQwMC5kdG9cIjtcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IEJyYW5jaFBlcmlvZHNEZXN0cm95RXJyb3JSZXNwb25zZTQwMER0byB9IGZyb20gXCIuLi9tb2RlbC9icmFuY2gtcGVyaW9kcy1kZXN0cm95LWVycm9yLXJlc3BvbnNlNDAwLmR0b1wiO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgQnJhbmNoUGVyaW9kc0xpc3RFcnJvclJlc3BvbnNlNDAwRHRvIH0gZnJvbSBcIi4uL21vZGVsL2JyYW5jaC1wZXJpb2RzLWxpc3QtZXJyb3ItcmVzcG9uc2U0MDAuZHRvXCI7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBCcmFuY2hQZXJpb2RzUmV0cmlldmVFcnJvclJlc3BvbnNlNDAwRHRvIH0gZnJvbSBcIi4uL21vZGVsL2JyYW5jaC1wZXJpb2RzLXJldHJpZXZlLWVycm9yLXJlc3BvbnNlNDAwLmR0b1wiO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgQnJhbmNoUGVyaW9kc1VwZGF0ZUVycm9yUmVzcG9uc2U0MDBEdG8gfSBmcm9tIFwiLi4vbW9kZWwvYnJhbmNoLXBlcmlvZHMtdXBkYXRlLWVycm9yLXJlc3BvbnNlNDAwLmR0b1wiO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgRXJyb3JSZXNwb25zZTQwMUR0byB9IGZyb20gXCIuLi9tb2RlbC9lcnJvci1yZXNwb25zZTQwMS5kdG9cIjtcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IEVycm9yUmVzcG9uc2U0MDNEdG8gfSBmcm9tIFwiLi4vbW9kZWwvZXJyb3ItcmVzcG9uc2U0MDMuZHRvXCI7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBFcnJvclJlc3BvbnNlNDA0RHRvIH0gZnJvbSBcIi4uL21vZGVsL2Vycm9yLXJlc3BvbnNlNDA0LmR0b1wiO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgRXJyb3JSZXNwb25zZTQwNUR0byB9IGZyb20gXCIuLi9tb2RlbC9lcnJvci1yZXNwb25zZTQwNS5kdG9cIjtcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IEVycm9yUmVzcG9uc2U0MDZEdG8gfSBmcm9tIFwiLi4vbW9kZWwvZXJyb3ItcmVzcG9uc2U0MDYuZHRvXCI7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBFcnJvclJlc3BvbnNlNDE1RHRvIH0gZnJvbSBcIi4uL21vZGVsL2Vycm9yLXJlc3BvbnNlNDE1LmR0b1wiO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgRXJyb3JSZXNwb25zZTUwMER0byB9IGZyb20gXCIuLi9tb2RlbC9lcnJvci1yZXNwb25zZTUwMC5kdG9cIjtcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IFBhZ2luYXRlZEJyYW5jaFBlcmlvZExpc3REdG8gfSBmcm9tIFwiLi4vbW9kZWwvcGFnaW5hdGVkLWJyYW5jaC1wZXJpb2QtbGlzdC5kdG9cIjtcblxuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgQkFTRV9QQVRILCBDT0xMRUNUSU9OX0ZPUk1BVFMgfSBmcm9tIFwiLi4vdmFyaWFibGVzXCI7XG5pbXBvcnQgeyBDb25maWd1cmF0aW9uIH0gZnJvbSBcIi4uL2NvbmZpZ3VyYXRpb25cIjtcbmltcG9ydCB7IEJhc2VTZXJ2aWNlIH0gZnJvbSBcIi4uL2FwaS5iYXNlLnNlcnZpY2VcIjtcbmltcG9ydCB7XG4gIEJyYW5jaFBlcmlvZHNBcGlTZXJ2aWNlSW50ZXJmYWNlLFxuICBCcmFuY2hQZXJpb2RzQ3JlYXRlUmVxdWVzdFBhcmFtcyxcbiAgQnJhbmNoUGVyaW9kc0Rlc3Ryb3lSZXF1ZXN0UGFyYW1zLFxuICBCcmFuY2hQZXJpb2RzTGlzdFJlcXVlc3RQYXJhbXMsXG4gIEJyYW5jaFBlcmlvZHNSZXRyaWV2ZVJlcXVlc3RQYXJhbXMsXG4gIEJyYW5jaFBlcmlvZHNVcGRhdGVSZXF1ZXN0UGFyYW1zLFxufSBmcm9tIFwiLi9icmFuY2gtcGVyaW9kcy1hcGkuc2VydmljZUludGVyZmFjZVwiO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46IFwicm9vdFwiLFxufSlcbmV4cG9ydCBjbGFzcyBCcmFuY2hQZXJpb2RzQXBpU2VydmljZVxuICBleHRlbmRzIEJhc2VTZXJ2aWNlXG4gIGltcGxlbWVudHMgQnJhbmNoUGVyaW9kc0FwaVNlcnZpY2VJbnRlcmZhY2VcbntcbiAgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChCQVNFX1BBVEgpIGJhc2VQYXRoOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgICBAT3B0aW9uYWwoKSBjb25maWd1cmF0aW9uPzogQ29uZmlndXJhdGlvbixcbiAgKSB7XG4gICAgc3VwZXIoYmFzZVBhdGgsIGNvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwaSB2aWV3c2V0IGZvciBCcmFuY2hQZXJpb2QgbW9kZWwuXG4gICAqIEBwYXJhbSByZXF1ZXN0UGFyYW1ldGVyc1xuICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxuICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAqL1xuICBwdWJsaWMgYnJhbmNoUGVyaW9kc0NyZWF0ZShcbiAgICByZXF1ZXN0UGFyYW1ldGVyczogQnJhbmNoUGVyaW9kc0NyZWF0ZVJlcXVlc3RQYXJhbXMsXG4gICAgb2JzZXJ2ZT86IFwiYm9keVwiLFxuICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbixcbiAgICBvcHRpb25zPzoge1xuICAgICAgaHR0cEhlYWRlckFjY2VwdD86IFwiYXBwbGljYXRpb24vanNvblwiO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgdHJhbnNmZXJDYWNoZT86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxCcmFuY2hQZXJpb2REdG8+O1xuICBwdWJsaWMgYnJhbmNoUGVyaW9kc0NyZWF0ZShcbiAgICByZXF1ZXN0UGFyYW1ldGVyczogQnJhbmNoUGVyaW9kc0NyZWF0ZVJlcXVlc3RQYXJhbXMsXG4gICAgb2JzZXJ2ZT86IFwicmVzcG9uc2VcIixcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGh0dHBIZWFkZXJBY2NlcHQ/OiBcImFwcGxpY2F0aW9uL2pzb25cIjtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEJyYW5jaFBlcmlvZER0bz4+O1xuICBwdWJsaWMgYnJhbmNoUGVyaW9kc0NyZWF0ZShcbiAgICByZXF1ZXN0UGFyYW1ldGVyczogQnJhbmNoUGVyaW9kc0NyZWF0ZVJlcXVlc3RQYXJhbXMsXG4gICAgb2JzZXJ2ZT86IFwiZXZlbnRzXCIsXG4gICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBodHRwSGVhZGVyQWNjZXB0PzogXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICB0cmFuc2ZlckNhY2hlPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxCcmFuY2hQZXJpb2REdG8+PjtcbiAgcHVibGljIGJyYW5jaFBlcmlvZHNDcmVhdGUoXG4gICAgcmVxdWVzdFBhcmFtZXRlcnM6IEJyYW5jaFBlcmlvZHNDcmVhdGVSZXF1ZXN0UGFyYW1zLFxuICAgIG9ic2VydmU6IGFueSA9IFwiYm9keVwiLFxuICAgIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGh0dHBIZWFkZXJBY2NlcHQ/OiBcImFwcGxpY2F0aW9uL2pzb25cIjtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgYnJhbmNoUGVyaW9kUmVxdWVzdER0byA9IHJlcXVlc3RQYXJhbWV0ZXJzPy5icmFuY2hQZXJpb2RSZXF1ZXN0RHRvO1xuICAgIGlmIChcbiAgICAgIGJyYW5jaFBlcmlvZFJlcXVlc3REdG8gPT09IG51bGwgfHxcbiAgICAgIGJyYW5jaFBlcmlvZFJlcXVlc3REdG8gPT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIlJlcXVpcmVkIHBhcmFtZXRlciBicmFuY2hQZXJpb2RSZXF1ZXN0RHRvIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgYnJhbmNoUGVyaW9kc0NyZWF0ZS5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IGxvY2FsVmFySGVhZGVycyA9IHRoaXMuZGVmYXVsdEhlYWRlcnM7XG5cbiAgICAvLyBhdXRoZW50aWNhdGlvbiAoY29va2llQXV0aCkgcmVxdWlyZWRcblxuICAgIC8vIGF1dGhlbnRpY2F0aW9uIChqd3RBdXRoKSByZXF1aXJlZFxuICAgIGxvY2FsVmFySGVhZGVycyA9IHRoaXMuY29uZmlndXJhdGlvbi5hZGRDcmVkZW50aWFsVG9IZWFkZXJzKFxuICAgICAgXCJqd3RBdXRoXCIsXG4gICAgICBcIkF1dGhvcml6YXRpb25cIixcbiAgICAgIGxvY2FsVmFySGVhZGVycyxcbiAgICAgIFwiQmVhcmVyIFwiLFxuICAgICk7XG5cbiAgICBjb25zdCBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID1cbiAgICAgIG9wdGlvbnM/Lmh0dHBIZWFkZXJBY2NlcHQgPz9cbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoW1wiYXBwbGljYXRpb24vanNvblwiXSk7XG4gICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGxvY2FsVmFySGVhZGVycyA9IGxvY2FsVmFySGVhZGVycy5zZXQoXG4gICAgICAgIFwiQWNjZXB0XCIsXG4gICAgICAgIGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2NhbFZhckh0dHBDb250ZXh0OiBIdHRwQ29udGV4dCA9XG4gICAgICBvcHRpb25zPy5jb250ZXh0ID8/IG5ldyBIdHRwQ29udGV4dCgpO1xuXG4gICAgY29uc3QgbG9jYWxWYXJUcmFuc2ZlckNhY2hlOiBib29sZWFuID0gb3B0aW9ucz8udHJhbnNmZXJDYWNoZSA/PyB0cnVlO1xuXG4gICAgLy8gdG8gZGV0ZXJtaW5lIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyXG4gICAgY29uc3QgY29uc3VtZXM6IHN0cmluZ1tdID0gW1xuICAgICAgXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiLFxuICAgICAgXCJtdWx0aXBhcnQvZm9ybS1kYXRhXCIsXG4gICAgXTtcbiAgICBjb25zdCBodHRwQ29udGVudFR5cGVTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID1cbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJDb250ZW50VHlwZShjb25zdW1lcyk7XG4gICAgaWYgKGh0dHBDb250ZW50VHlwZVNlbGVjdGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGxvY2FsVmFySGVhZGVycyA9IGxvY2FsVmFySGVhZGVycy5zZXQoXG4gICAgICAgIFwiQ29udGVudC1UeXBlXCIsXG4gICAgICAgIGh0dHBDb250ZW50VHlwZVNlbGVjdGVkLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgcmVzcG9uc2VUeXBlXzogXCJ0ZXh0XCIgfCBcImpzb25cIiB8IFwiYmxvYlwiID0gXCJqc29uXCI7XG4gICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKSB7XG4gICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQuc3RhcnRzV2l0aChcInRleHRcIikpIHtcbiAgICAgICAgcmVzcG9uc2VUeXBlXyA9IFwidGV4dFwiO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLmlzSnNvbk1pbWUobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpXG4gICAgICApIHtcbiAgICAgICAgcmVzcG9uc2VUeXBlXyA9IFwianNvblwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzcG9uc2VUeXBlXyA9IFwiYmxvYlwiO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBsb2NhbFZhclBhdGggPSBgL2FwaS92MS9icmFuY2gtcGVyaW9kcy9gO1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucmVxdWVzdDxCcmFuY2hQZXJpb2REdG8+KFxuICAgICAgXCJwb3N0XCIsXG4gICAgICBgJHt0aGlzLmNvbmZpZ3VyYXRpb24uYmFzZVBhdGh9JHtsb2NhbFZhclBhdGh9YCxcbiAgICAgIHtcbiAgICAgICAgY29udGV4dDogbG9jYWxWYXJIdHRwQ29udGV4dCxcbiAgICAgICAgYm9keTogYnJhbmNoUGVyaW9kUmVxdWVzdER0byxcbiAgICAgICAgcmVzcG9uc2VUeXBlOiA8YW55PnJlc3BvbnNlVHlwZV8sXG4gICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcbiAgICAgICAgaGVhZGVyczogbG9jYWxWYXJIZWFkZXJzLFxuICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxuICAgICAgICB0cmFuc2ZlckNhY2hlOiBsb2NhbFZhclRyYW5zZmVyQ2FjaGUsXG4gICAgICAgIHJlcG9ydFByb2dyZXNzOiByZXBvcnRQcm9ncmVzcyxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcGkgdmlld3NldCBmb3IgQnJhbmNoUGVyaW9kIG1vZGVsLlxuICAgKiBAcGFyYW0gcmVxdWVzdFBhcmFtZXRlcnNcbiAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxuICAgKi9cbiAgcHVibGljIGJyYW5jaFBlcmlvZHNEZXN0cm95KFxuICAgIHJlcXVlc3RQYXJhbWV0ZXJzOiBCcmFuY2hQZXJpb2RzRGVzdHJveVJlcXVlc3RQYXJhbXMsXG4gICAgb2JzZXJ2ZT86IFwiYm9keVwiLFxuICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbixcbiAgICBvcHRpb25zPzoge1xuICAgICAgaHR0cEhlYWRlckFjY2VwdD86IFwiYXBwbGljYXRpb24vanNvblwiO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgdHJhbnNmZXJDYWNoZT86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxhbnk+O1xuICBwdWJsaWMgYnJhbmNoUGVyaW9kc0Rlc3Ryb3koXG4gICAgcmVxdWVzdFBhcmFtZXRlcnM6IEJyYW5jaFBlcmlvZHNEZXN0cm95UmVxdWVzdFBhcmFtcyxcbiAgICBvYnNlcnZlPzogXCJyZXNwb25zZVwiLFxuICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbixcbiAgICBvcHRpb25zPzoge1xuICAgICAgaHR0cEhlYWRlckFjY2VwdD86IFwiYXBwbGljYXRpb24vanNvblwiO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgdHJhbnNmZXJDYWNoZT86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8YW55Pj47XG4gIHB1YmxpYyBicmFuY2hQZXJpb2RzRGVzdHJveShcbiAgICByZXF1ZXN0UGFyYW1ldGVyczogQnJhbmNoUGVyaW9kc0Rlc3Ryb3lSZXF1ZXN0UGFyYW1zLFxuICAgIG9ic2VydmU/OiBcImV2ZW50c1wiLFxuICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbixcbiAgICBvcHRpb25zPzoge1xuICAgICAgaHR0cEhlYWRlckFjY2VwdD86IFwiYXBwbGljYXRpb24vanNvblwiO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgdHJhbnNmZXJDYWNoZT86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj47XG4gIHB1YmxpYyBicmFuY2hQZXJpb2RzRGVzdHJveShcbiAgICByZXF1ZXN0UGFyYW1ldGVyczogQnJhbmNoUGVyaW9kc0Rlc3Ryb3lSZXF1ZXN0UGFyYW1zLFxuICAgIG9ic2VydmU6IGFueSA9IFwiYm9keVwiLFxuICAgIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGh0dHBIZWFkZXJBY2NlcHQ/OiBcImFwcGxpY2F0aW9uL2pzb25cIjtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgaWQgPSByZXF1ZXN0UGFyYW1ldGVycz8uaWQ7XG4gICAgaWYgKGlkID09PSBudWxsIHx8IGlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJSZXF1aXJlZCBwYXJhbWV0ZXIgaWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBicmFuY2hQZXJpb2RzRGVzdHJveS5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IGxvY2FsVmFySGVhZGVycyA9IHRoaXMuZGVmYXVsdEhlYWRlcnM7XG5cbiAgICAvLyBhdXRoZW50aWNhdGlvbiAoY29va2llQXV0aCkgcmVxdWlyZWRcblxuICAgIC8vIGF1dGhlbnRpY2F0aW9uIChqd3RBdXRoKSByZXF1aXJlZFxuICAgIGxvY2FsVmFySGVhZGVycyA9IHRoaXMuY29uZmlndXJhdGlvbi5hZGRDcmVkZW50aWFsVG9IZWFkZXJzKFxuICAgICAgXCJqd3RBdXRoXCIsXG4gICAgICBcIkF1dGhvcml6YXRpb25cIixcbiAgICAgIGxvY2FsVmFySGVhZGVycyxcbiAgICAgIFwiQmVhcmVyIFwiLFxuICAgICk7XG5cbiAgICBjb25zdCBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZDogc3RyaW5nIHwgdW5kZWZpbmVkID1cbiAgICAgIG9wdGlvbnM/Lmh0dHBIZWFkZXJBY2NlcHQgPz9cbiAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5zZWxlY3RIZWFkZXJBY2NlcHQoW1wiYXBwbGljYXRpb24vanNvblwiXSk7XG4gICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGxvY2FsVmFySGVhZGVycyA9IGxvY2FsVmFySGVhZGVycy5zZXQoXG4gICAgICAgIFwiQWNjZXB0XCIsXG4gICAgICAgIGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBsb2NhbFZhckh0dHBDb250ZXh0OiBIdHRwQ29udGV4dCA9XG4gICAgICBvcHRpb25zPy5jb250ZXh0ID8/IG5ldyBIdHRwQ29udGV4dCgpO1xuXG4gICAgY29uc3QgbG9jYWxWYXJUcmFuc2ZlckNhY2hlOiBib29sZWFuID0gb3B0aW9ucz8udHJhbnNmZXJDYWNoZSA/PyB0cnVlO1xuXG4gICAgbGV0IHJlc3BvbnNlVHlwZV86IFwidGV4dFwiIHwgXCJqc29uXCIgfCBcImJsb2JcIiA9IFwianNvblwiO1xuICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCkge1xuICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkLnN0YXJ0c1dpdGgoXCJ0ZXh0XCIpKSB7XG4gICAgICAgIHJlc3BvbnNlVHlwZV8gPSBcInRleHRcIjtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5pc0pzb25NaW1lKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKVxuICAgICAgKSB7XG4gICAgICAgIHJlc3BvbnNlVHlwZV8gPSBcImpzb25cIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3BvbnNlVHlwZV8gPSBcImJsb2JcIjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgbG9jYWxWYXJQYXRoID0gYC9hcGkvdjEvYnJhbmNoLXBlcmlvZHMvJHt0aGlzLmNvbmZpZ3VyYXRpb24uZW5jb2RlUGFyYW0oeyBuYW1lOiBcImlkXCIsIHZhbHVlOiBpZCwgaW46IFwicGF0aFwiLCBzdHlsZTogXCJzaW1wbGVcIiwgZXhwbG9kZTogZmFsc2UsIGRhdGFUeXBlOiBcIm51bWJlclwiLCBkYXRhRm9ybWF0OiB1bmRlZmluZWQgfSl9L2A7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5yZXF1ZXN0PGFueT4oXG4gICAgICBcImRlbGV0ZVwiLFxuICAgICAgYCR7dGhpcy5jb25maWd1cmF0aW9uLmJhc2VQYXRofSR7bG9jYWxWYXJQYXRofWAsXG4gICAgICB7XG4gICAgICAgIGNvbnRleHQ6IGxvY2FsVmFySHR0cENvbnRleHQsXG4gICAgICAgIHJlc3BvbnNlVHlwZTogPGFueT5yZXNwb25zZVR5cGVfLFxuICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgIGhlYWRlcnM6IGxvY2FsVmFySGVhZGVycyxcbiAgICAgICAgb2JzZXJ2ZTogb2JzZXJ2ZSxcbiAgICAgICAgdHJhbnNmZXJDYWNoZTogbG9jYWxWYXJUcmFuc2ZlckNhY2hlLFxuICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3MsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQXBpIHZpZXdzZXQgZm9yIEJyYW5jaFBlcmlvZCBtb2RlbC5cbiAgICogQHBhcmFtIHJlcXVlc3RQYXJhbWV0ZXJzXG4gICAqIEBwYXJhbSBvYnNlcnZlIHNldCB3aGV0aGVyIG9yIG5vdCB0byByZXR1cm4gdGhlIGRhdGEgT2JzZXJ2YWJsZSBhcyB0aGUgYm9keSwgcmVzcG9uc2Ugb3IgZXZlbnRzLiBkZWZhdWx0cyB0byByZXR1cm5pbmcgdGhlIGJvZHkuXG4gICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cbiAgICovXG4gIHB1YmxpYyBicmFuY2hQZXJpb2RzTGlzdChcbiAgICByZXF1ZXN0UGFyYW1ldGVycz86IEJyYW5jaFBlcmlvZHNMaXN0UmVxdWVzdFBhcmFtcyxcbiAgICBvYnNlcnZlPzogXCJib2R5XCIsXG4gICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBodHRwSGVhZGVyQWNjZXB0PzogXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICB0cmFuc2ZlckNhY2hlPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPFBhZ2luYXRlZEJyYW5jaFBlcmlvZExpc3REdG8+O1xuICBwdWJsaWMgYnJhbmNoUGVyaW9kc0xpc3QoXG4gICAgcmVxdWVzdFBhcmFtZXRlcnM/OiBCcmFuY2hQZXJpb2RzTGlzdFJlcXVlc3RQYXJhbXMsXG4gICAgb2JzZXJ2ZT86IFwicmVzcG9uc2VcIixcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGh0dHBIZWFkZXJBY2NlcHQ/OiBcImFwcGxpY2F0aW9uL2pzb25cIjtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPFBhZ2luYXRlZEJyYW5jaFBlcmlvZExpc3REdG8+PjtcbiAgcHVibGljIGJyYW5jaFBlcmlvZHNMaXN0KFxuICAgIHJlcXVlc3RQYXJhbWV0ZXJzPzogQnJhbmNoUGVyaW9kc0xpc3RSZXF1ZXN0UGFyYW1zLFxuICAgIG9ic2VydmU/OiBcImV2ZW50c1wiLFxuICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbixcbiAgICBvcHRpb25zPzoge1xuICAgICAgaHR0cEhlYWRlckFjY2VwdD86IFwiYXBwbGljYXRpb24vanNvblwiO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgdHJhbnNmZXJDYWNoZT86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8UGFnaW5hdGVkQnJhbmNoUGVyaW9kTGlzdER0bz4+O1xuICBwdWJsaWMgYnJhbmNoUGVyaW9kc0xpc3QoXG4gICAgcmVxdWVzdFBhcmFtZXRlcnM/OiBCcmFuY2hQZXJpb2RzTGlzdFJlcXVlc3RQYXJhbXMsXG4gICAgb2JzZXJ2ZTogYW55ID0gXCJib2R5XCIsXG4gICAgcmVwb3J0UHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICBvcHRpb25zPzoge1xuICAgICAgaHR0cEhlYWRlckFjY2VwdD86IFwiYXBwbGljYXRpb24vanNvblwiO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgdHJhbnNmZXJDYWNoZT86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBjb25zdCBicmFuY2hJc0FjdGl2ZSA9IHJlcXVlc3RQYXJhbWV0ZXJzPy5icmFuY2hJc0FjdGl2ZTtcbiAgICBjb25zdCBpZCA9IHJlcXVlc3RQYXJhbWV0ZXJzPy5pZDtcbiAgICBjb25zdCBpZEluID0gcmVxdWVzdFBhcmFtZXRlcnM/LmlkSW47XG4gICAgY29uc3QgbGltaXQgPSByZXF1ZXN0UGFyYW1ldGVycz8ubGltaXQ7XG4gICAgY29uc3Qgb2Zmc2V0ID0gcmVxdWVzdFBhcmFtZXRlcnM/Lm9mZnNldDtcbiAgICBjb25zdCBvcmRlcmluZyA9IHJlcXVlc3RQYXJhbWV0ZXJzPy5vcmRlcmluZztcbiAgICBjb25zdCBwZXJpb2RPdmVybGFwID0gcmVxdWVzdFBhcmFtZXRlcnM/LnBlcmlvZE92ZXJsYXA7XG4gICAgY29uc3Qgc2VhcmNoID0gcmVxdWVzdFBhcmFtZXRlcnM/LnNlYXJjaDtcbiAgICBjb25zdCB0eXBlID0gcmVxdWVzdFBhcmFtZXRlcnM/LnR5cGU7XG4gICAgY29uc3QgdHlwZUluID0gcmVxdWVzdFBhcmFtZXRlcnM/LnR5cGVJbjtcblxuICAgIGxldCBsb2NhbFZhclF1ZXJ5UGFyYW1ldGVycyA9IG5ldyBIdHRwUGFyYW1zKHsgZW5jb2RlcjogdGhpcy5lbmNvZGVyIH0pO1xuICAgIGxvY2FsVmFyUXVlcnlQYXJhbWV0ZXJzID0gdGhpcy5hZGRUb0h0dHBQYXJhbXMoXG4gICAgICBsb2NhbFZhclF1ZXJ5UGFyYW1ldGVycyxcbiAgICAgIDxhbnk+YnJhbmNoSXNBY3RpdmUsXG4gICAgICBcImJyYW5jaF9faXNfYWN0aXZlXCIsXG4gICAgKTtcbiAgICBsb2NhbFZhclF1ZXJ5UGFyYW1ldGVycyA9IHRoaXMuYWRkVG9IdHRwUGFyYW1zKFxuICAgICAgbG9jYWxWYXJRdWVyeVBhcmFtZXRlcnMsXG4gICAgICA8YW55PmlkLFxuICAgICAgXCJpZFwiLFxuICAgICk7XG4gICAgaWYgKGlkSW4pIHtcbiAgICAgIGxvY2FsVmFyUXVlcnlQYXJhbWV0ZXJzID0gdGhpcy5hZGRUb0h0dHBQYXJhbXMoXG4gICAgICAgIGxvY2FsVmFyUXVlcnlQYXJhbWV0ZXJzLFxuICAgICAgICBbLi4uaWRJbl0uam9pbihDT0xMRUNUSU9OX0ZPUk1BVFNbXCJjc3ZcIl0pLFxuICAgICAgICBcImlkX19pblwiLFxuICAgICAgKTtcbiAgICB9XG4gICAgbG9jYWxWYXJRdWVyeVBhcmFtZXRlcnMgPSB0aGlzLmFkZFRvSHR0cFBhcmFtcyhcbiAgICAgIGxvY2FsVmFyUXVlcnlQYXJhbWV0ZXJzLFxuICAgICAgPGFueT5saW1pdCxcbiAgICAgIFwibGltaXRcIixcbiAgICApO1xuICAgIGxvY2FsVmFyUXVlcnlQYXJhbWV0ZXJzID0gdGhpcy5hZGRUb0h0dHBQYXJhbXMoXG4gICAgICBsb2NhbFZhclF1ZXJ5UGFyYW1ldGVycyxcbiAgICAgIDxhbnk+b2Zmc2V0LFxuICAgICAgXCJvZmZzZXRcIixcbiAgICApO1xuICAgIGxvY2FsVmFyUXVlcnlQYXJhbWV0ZXJzID0gdGhpcy5hZGRUb0h0dHBQYXJhbXMoXG4gICAgICBsb2NhbFZhclF1ZXJ5UGFyYW1ldGVycyxcbiAgICAgIDxhbnk+b3JkZXJpbmcsXG4gICAgICBcIm9yZGVyaW5nXCIsXG4gICAgKTtcbiAgICBsb2NhbFZhclF1ZXJ5UGFyYW1ldGVycyA9IHRoaXMuYWRkVG9IdHRwUGFyYW1zKFxuICAgICAgbG9jYWxWYXJRdWVyeVBhcmFtZXRlcnMsXG4gICAgICA8YW55PnBlcmlvZE92ZXJsYXAsXG4gICAgICBcInBlcmlvZF9fb3ZlcmxhcFwiLFxuICAgICk7XG4gICAgbG9jYWxWYXJRdWVyeVBhcmFtZXRlcnMgPSB0aGlzLmFkZFRvSHR0cFBhcmFtcyhcbiAgICAgIGxvY2FsVmFyUXVlcnlQYXJhbWV0ZXJzLFxuICAgICAgPGFueT5zZWFyY2gsXG4gICAgICBcInNlYXJjaFwiLFxuICAgICk7XG4gICAgbG9jYWxWYXJRdWVyeVBhcmFtZXRlcnMgPSB0aGlzLmFkZFRvSHR0cFBhcmFtcyhcbiAgICAgIGxvY2FsVmFyUXVlcnlQYXJhbWV0ZXJzLFxuICAgICAgPGFueT50eXBlLFxuICAgICAgXCJ0eXBlXCIsXG4gICAgKTtcbiAgICBpZiAodHlwZUluKSB7XG4gICAgICBsb2NhbFZhclF1ZXJ5UGFyYW1ldGVycyA9IHRoaXMuYWRkVG9IdHRwUGFyYW1zKFxuICAgICAgICBsb2NhbFZhclF1ZXJ5UGFyYW1ldGVycyxcbiAgICAgICAgWy4uLnR5cGVJbl0uam9pbihDT0xMRUNUSU9OX0ZPUk1BVFNbXCJjc3ZcIl0pLFxuICAgICAgICBcInR5cGVfX2luXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBsb2NhbFZhckhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xuXG4gICAgLy8gYXV0aGVudGljYXRpb24gKGNvb2tpZUF1dGgpIHJlcXVpcmVkXG5cbiAgICAvLyBhdXRoZW50aWNhdGlvbiAoand0QXV0aCkgcmVxdWlyZWRcbiAgICBsb2NhbFZhckhlYWRlcnMgPSB0aGlzLmNvbmZpZ3VyYXRpb24uYWRkQ3JlZGVudGlhbFRvSGVhZGVycyhcbiAgICAgIFwiand0QXV0aFwiLFxuICAgICAgXCJBdXRob3JpemF0aW9uXCIsXG4gICAgICBsb2NhbFZhckhlYWRlcnMsXG4gICAgICBcIkJlYXJlciBcIixcbiAgICApO1xuXG4gICAgY29uc3QgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9XG4gICAgICBvcHRpb25zPy5odHRwSGVhZGVyQWNjZXB0ID8/XG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KFtcImFwcGxpY2F0aW9uL2pzb25cIl0pO1xuICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KFxuICAgICAgICBcIkFjY2VwdFwiLFxuICAgICAgICBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgbG9jYWxWYXJIdHRwQ29udGV4dDogSHR0cENvbnRleHQgPVxuICAgICAgb3B0aW9ucz8uY29udGV4dCA/PyBuZXcgSHR0cENvbnRleHQoKTtcblxuICAgIGNvbnN0IGxvY2FsVmFyVHJhbnNmZXJDYWNoZTogYm9vbGVhbiA9IG9wdGlvbnM/LnRyYW5zZmVyQ2FjaGUgPz8gdHJ1ZTtcblxuICAgIGxldCByZXNwb25zZVR5cGVfOiBcInRleHRcIiB8IFwianNvblwiIHwgXCJibG9iXCIgPSBcImpzb25cIjtcbiAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpIHtcbiAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZC5zdGFydHNXaXRoKFwidGV4dFwiKSkge1xuICAgICAgICByZXNwb25zZVR5cGVfID0gXCJ0ZXh0XCI7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uaXNKc29uTWltZShsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZClcbiAgICAgICkge1xuICAgICAgICByZXNwb25zZVR5cGVfID0gXCJqc29uXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNwb25zZVR5cGVfID0gXCJibG9iXCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGxvY2FsVmFyUGF0aCA9IGAvYXBpL3YxL2JyYW5jaC1wZXJpb2RzL2A7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5yZXF1ZXN0PFBhZ2luYXRlZEJyYW5jaFBlcmlvZExpc3REdG8+KFxuICAgICAgXCJnZXRcIixcbiAgICAgIGAke3RoaXMuY29uZmlndXJhdGlvbi5iYXNlUGF0aH0ke2xvY2FsVmFyUGF0aH1gLFxuICAgICAge1xuICAgICAgICBjb250ZXh0OiBsb2NhbFZhckh0dHBDb250ZXh0LFxuICAgICAgICBwYXJhbXM6IGxvY2FsVmFyUXVlcnlQYXJhbWV0ZXJzLFxuICAgICAgICByZXNwb25zZVR5cGU6IDxhbnk+cmVzcG9uc2VUeXBlXyxcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxuICAgICAgICBoZWFkZXJzOiBsb2NhbFZhckhlYWRlcnMsXG4gICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgIHRyYW5zZmVyQ2FjaGU6IGxvY2FsVmFyVHJhbnNmZXJDYWNoZSxcbiAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzLFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwaSB2aWV3c2V0IGZvciBCcmFuY2hQZXJpb2QgbW9kZWwuXG4gICAqIEBwYXJhbSByZXF1ZXN0UGFyYW1ldGVyc1xuICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxuICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAqL1xuICBwdWJsaWMgYnJhbmNoUGVyaW9kc1JldHJpZXZlKFxuICAgIHJlcXVlc3RQYXJhbWV0ZXJzOiBCcmFuY2hQZXJpb2RzUmV0cmlldmVSZXF1ZXN0UGFyYW1zLFxuICAgIG9ic2VydmU/OiBcImJvZHlcIixcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGh0dHBIZWFkZXJBY2NlcHQ/OiBcImFwcGxpY2F0aW9uL2pzb25cIjtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8QnJhbmNoUGVyaW9kRHRvPjtcbiAgcHVibGljIGJyYW5jaFBlcmlvZHNSZXRyaWV2ZShcbiAgICByZXF1ZXN0UGFyYW1ldGVyczogQnJhbmNoUGVyaW9kc1JldHJpZXZlUmVxdWVzdFBhcmFtcyxcbiAgICBvYnNlcnZlPzogXCJyZXNwb25zZVwiLFxuICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbixcbiAgICBvcHRpb25zPzoge1xuICAgICAgaHR0cEhlYWRlckFjY2VwdD86IFwiYXBwbGljYXRpb24vanNvblwiO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgdHJhbnNmZXJDYWNoZT86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8QnJhbmNoUGVyaW9kRHRvPj47XG4gIHB1YmxpYyBicmFuY2hQZXJpb2RzUmV0cmlldmUoXG4gICAgcmVxdWVzdFBhcmFtZXRlcnM6IEJyYW5jaFBlcmlvZHNSZXRyaWV2ZVJlcXVlc3RQYXJhbXMsXG4gICAgb2JzZXJ2ZT86IFwiZXZlbnRzXCIsXG4gICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBodHRwSGVhZGVyQWNjZXB0PzogXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICB0cmFuc2ZlckNhY2hlPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxCcmFuY2hQZXJpb2REdG8+PjtcbiAgcHVibGljIGJyYW5jaFBlcmlvZHNSZXRyaWV2ZShcbiAgICByZXF1ZXN0UGFyYW1ldGVyczogQnJhbmNoUGVyaW9kc1JldHJpZXZlUmVxdWVzdFBhcmFtcyxcbiAgICBvYnNlcnZlOiBhbnkgPSBcImJvZHlcIixcbiAgICByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBodHRwSGVhZGVyQWNjZXB0PzogXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICB0cmFuc2ZlckNhY2hlPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGlkID0gcmVxdWVzdFBhcmFtZXRlcnM/LmlkO1xuICAgIGlmIChpZCA9PT0gbnVsbCB8fCBpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiUmVxdWlyZWQgcGFyYW1ldGVyIGlkIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgYnJhbmNoUGVyaW9kc1JldHJpZXZlLlwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgbG9jYWxWYXJIZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcblxuICAgIC8vIGF1dGhlbnRpY2F0aW9uIChjb29raWVBdXRoKSByZXF1aXJlZFxuXG4gICAgLy8gYXV0aGVudGljYXRpb24gKGp3dEF1dGgpIHJlcXVpcmVkXG4gICAgbG9jYWxWYXJIZWFkZXJzID0gdGhpcy5jb25maWd1cmF0aW9uLmFkZENyZWRlbnRpYWxUb0hlYWRlcnMoXG4gICAgICBcImp3dEF1dGhcIixcbiAgICAgIFwiQXV0aG9yaXphdGlvblwiLFxuICAgICAgbG9jYWxWYXJIZWFkZXJzLFxuICAgICAgXCJCZWFyZXIgXCIsXG4gICAgKTtcblxuICAgIGNvbnN0IGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPVxuICAgICAgb3B0aW9ucz8uaHR0cEhlYWRlckFjY2VwdCA/P1xuICAgICAgdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckFjY2VwdChbXCJhcHBsaWNhdGlvbi9qc29uXCJdKTtcbiAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbG9jYWxWYXJIZWFkZXJzID0gbG9jYWxWYXJIZWFkZXJzLnNldChcbiAgICAgICAgXCJBY2NlcHRcIixcbiAgICAgICAgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGxvY2FsVmFySHR0cENvbnRleHQ6IEh0dHBDb250ZXh0ID1cbiAgICAgIG9wdGlvbnM/LmNvbnRleHQgPz8gbmV3IEh0dHBDb250ZXh0KCk7XG5cbiAgICBjb25zdCBsb2NhbFZhclRyYW5zZmVyQ2FjaGU6IGJvb2xlYW4gPSBvcHRpb25zPy50cmFuc2ZlckNhY2hlID8/IHRydWU7XG5cbiAgICBsZXQgcmVzcG9uc2VUeXBlXzogXCJ0ZXh0XCIgfCBcImpzb25cIiB8IFwiYmxvYlwiID0gXCJqc29uXCI7XG4gICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKSB7XG4gICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQuc3RhcnRzV2l0aChcInRleHRcIikpIHtcbiAgICAgICAgcmVzcG9uc2VUeXBlXyA9IFwidGV4dFwiO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLmlzSnNvbk1pbWUobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpXG4gICAgICApIHtcbiAgICAgICAgcmVzcG9uc2VUeXBlXyA9IFwianNvblwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzcG9uc2VUeXBlXyA9IFwiYmxvYlwiO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBsb2NhbFZhclBhdGggPSBgL2FwaS92MS9icmFuY2gtcGVyaW9kcy8ke3RoaXMuY29uZmlndXJhdGlvbi5lbmNvZGVQYXJhbSh7IG5hbWU6IFwiaWRcIiwgdmFsdWU6IGlkLCBpbjogXCJwYXRoXCIsIHN0eWxlOiBcInNpbXBsZVwiLCBleHBsb2RlOiBmYWxzZSwgZGF0YVR5cGU6IFwibnVtYmVyXCIsIGRhdGFGb3JtYXQ6IHVuZGVmaW5lZCB9KX0vYDtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnJlcXVlc3Q8QnJhbmNoUGVyaW9kRHRvPihcbiAgICAgIFwiZ2V0XCIsXG4gICAgICBgJHt0aGlzLmNvbmZpZ3VyYXRpb24uYmFzZVBhdGh9JHtsb2NhbFZhclBhdGh9YCxcbiAgICAgIHtcbiAgICAgICAgY29udGV4dDogbG9jYWxWYXJIdHRwQ29udGV4dCxcbiAgICAgICAgcmVzcG9uc2VUeXBlOiA8YW55PnJlc3BvbnNlVHlwZV8sXG4gICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcbiAgICAgICAgaGVhZGVyczogbG9jYWxWYXJIZWFkZXJzLFxuICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxuICAgICAgICB0cmFuc2ZlckNhY2hlOiBsb2NhbFZhclRyYW5zZmVyQ2FjaGUsXG4gICAgICAgIHJlcG9ydFByb2dyZXNzOiByZXBvcnRQcm9ncmVzcyxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcGkgdmlld3NldCBmb3IgQnJhbmNoUGVyaW9kIG1vZGVsLlxuICAgKiBAcGFyYW0gcmVxdWVzdFBhcmFtZXRlcnNcbiAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxuICAgKi9cbiAgcHVibGljIGJyYW5jaFBlcmlvZHNVcGRhdGUoXG4gICAgcmVxdWVzdFBhcmFtZXRlcnM6IEJyYW5jaFBlcmlvZHNVcGRhdGVSZXF1ZXN0UGFyYW1zLFxuICAgIG9ic2VydmU/OiBcImJvZHlcIixcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGh0dHBIZWFkZXJBY2NlcHQ/OiBcImFwcGxpY2F0aW9uL2pzb25cIjtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8QnJhbmNoUGVyaW9kRHRvPjtcbiAgcHVibGljIGJyYW5jaFBlcmlvZHNVcGRhdGUoXG4gICAgcmVxdWVzdFBhcmFtZXRlcnM6IEJyYW5jaFBlcmlvZHNVcGRhdGVSZXF1ZXN0UGFyYW1zLFxuICAgIG9ic2VydmU/OiBcInJlc3BvbnNlXCIsXG4gICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBodHRwSGVhZGVyQWNjZXB0PzogXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICB0cmFuc2ZlckNhY2hlPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxCcmFuY2hQZXJpb2REdG8+PjtcbiAgcHVibGljIGJyYW5jaFBlcmlvZHNVcGRhdGUoXG4gICAgcmVxdWVzdFBhcmFtZXRlcnM6IEJyYW5jaFBlcmlvZHNVcGRhdGVSZXF1ZXN0UGFyYW1zLFxuICAgIG9ic2VydmU/OiBcImV2ZW50c1wiLFxuICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbixcbiAgICBvcHRpb25zPzoge1xuICAgICAgaHR0cEhlYWRlckFjY2VwdD86IFwiYXBwbGljYXRpb24vanNvblwiO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgdHJhbnNmZXJDYWNoZT86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8QnJhbmNoUGVyaW9kRHRvPj47XG4gIHB1YmxpYyBicmFuY2hQZXJpb2RzVXBkYXRlKFxuICAgIHJlcXVlc3RQYXJhbWV0ZXJzOiBCcmFuY2hQZXJpb2RzVXBkYXRlUmVxdWVzdFBhcmFtcyxcbiAgICBvYnNlcnZlOiBhbnkgPSBcImJvZHlcIixcbiAgICByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBodHRwSGVhZGVyQWNjZXB0PzogXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICB0cmFuc2ZlckNhY2hlPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGlkID0gcmVxdWVzdFBhcmFtZXRlcnM/LmlkO1xuICAgIGlmIChpZCA9PT0gbnVsbCB8fCBpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiUmVxdWlyZWQgcGFyYW1ldGVyIGlkIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgYnJhbmNoUGVyaW9kc1VwZGF0ZS5cIixcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IGJyYW5jaFBlcmlvZFJlcXVlc3REdG8gPSByZXF1ZXN0UGFyYW1ldGVycz8uYnJhbmNoUGVyaW9kUmVxdWVzdER0bztcbiAgICBpZiAoXG4gICAgICBicmFuY2hQZXJpb2RSZXF1ZXN0RHRvID09PSBudWxsIHx8XG4gICAgICBicmFuY2hQZXJpb2RSZXF1ZXN0RHRvID09PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJSZXF1aXJlZCBwYXJhbWV0ZXIgYnJhbmNoUGVyaW9kUmVxdWVzdER0byB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIGJyYW5jaFBlcmlvZHNVcGRhdGUuXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBsb2NhbFZhckhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xuXG4gICAgLy8gYXV0aGVudGljYXRpb24gKGNvb2tpZUF1dGgpIHJlcXVpcmVkXG5cbiAgICAvLyBhdXRoZW50aWNhdGlvbiAoand0QXV0aCkgcmVxdWlyZWRcbiAgICBsb2NhbFZhckhlYWRlcnMgPSB0aGlzLmNvbmZpZ3VyYXRpb24uYWRkQ3JlZGVudGlhbFRvSGVhZGVycyhcbiAgICAgIFwiand0QXV0aFwiLFxuICAgICAgXCJBdXRob3JpemF0aW9uXCIsXG4gICAgICBsb2NhbFZhckhlYWRlcnMsXG4gICAgICBcIkJlYXJlciBcIixcbiAgICApO1xuXG4gICAgY29uc3QgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9XG4gICAgICBvcHRpb25zPy5odHRwSGVhZGVyQWNjZXB0ID8/XG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KFtcImFwcGxpY2F0aW9uL2pzb25cIl0pO1xuICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KFxuICAgICAgICBcIkFjY2VwdFwiLFxuICAgICAgICBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgbG9jYWxWYXJIdHRwQ29udGV4dDogSHR0cENvbnRleHQgPVxuICAgICAgb3B0aW9ucz8uY29udGV4dCA/PyBuZXcgSHR0cENvbnRleHQoKTtcblxuICAgIGNvbnN0IGxvY2FsVmFyVHJhbnNmZXJDYWNoZTogYm9vbGVhbiA9IG9wdGlvbnM/LnRyYW5zZmVyQ2FjaGUgPz8gdHJ1ZTtcblxuICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxuICAgIGNvbnN0IGNvbnN1bWVzOiBzdHJpbmdbXSA9IFtcbiAgICAgIFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIixcbiAgICAgIFwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiLFxuICAgIF07XG4gICAgY29uc3QgaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9XG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQ29udGVudFR5cGUoY29uc3VtZXMpO1xuICAgIGlmIChodHRwQ29udGVudFR5cGVTZWxlY3RlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KFxuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiLFxuICAgICAgICBodHRwQ29udGVudFR5cGVTZWxlY3RlZCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IHJlc3BvbnNlVHlwZV86IFwidGV4dFwiIHwgXCJqc29uXCIgfCBcImJsb2JcIiA9IFwianNvblwiO1xuICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCkge1xuICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkLnN0YXJ0c1dpdGgoXCJ0ZXh0XCIpKSB7XG4gICAgICAgIHJlc3BvbnNlVHlwZV8gPSBcInRleHRcIjtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5pc0pzb25NaW1lKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKVxuICAgICAgKSB7XG4gICAgICAgIHJlc3BvbnNlVHlwZV8gPSBcImpzb25cIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3BvbnNlVHlwZV8gPSBcImJsb2JcIjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgbG9jYWxWYXJQYXRoID0gYC9hcGkvdjEvYnJhbmNoLXBlcmlvZHMvJHt0aGlzLmNvbmZpZ3VyYXRpb24uZW5jb2RlUGFyYW0oeyBuYW1lOiBcImlkXCIsIHZhbHVlOiBpZCwgaW46IFwicGF0aFwiLCBzdHlsZTogXCJzaW1wbGVcIiwgZXhwbG9kZTogZmFsc2UsIGRhdGFUeXBlOiBcIm51bWJlclwiLCBkYXRhRm9ybWF0OiB1bmRlZmluZWQgfSl9L2A7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5yZXF1ZXN0PEJyYW5jaFBlcmlvZER0bz4oXG4gICAgICBcInB1dFwiLFxuICAgICAgYCR7dGhpcy5jb25maWd1cmF0aW9uLmJhc2VQYXRofSR7bG9jYWxWYXJQYXRofWAsXG4gICAgICB7XG4gICAgICAgIGNvbnRleHQ6IGxvY2FsVmFySHR0cENvbnRleHQsXG4gICAgICAgIGJvZHk6IGJyYW5jaFBlcmlvZFJlcXVlc3REdG8sXG4gICAgICAgIHJlc3BvbnNlVHlwZTogPGFueT5yZXNwb25zZVR5cGVfLFxuICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgIGhlYWRlcnM6IGxvY2FsVmFySGVhZGVycyxcbiAgICAgICAgb2JzZXJ2ZTogb2JzZXJ2ZSxcbiAgICAgICAgdHJhbnNmZXJDYWNoZTogbG9jYWxWYXJUcmFuc2ZlckNhY2hlLFxuICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3MsXG4gICAgICB9LFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
294
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmNoLXBlcmlvZHMtYXBpLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hcGkvYnJhbmNoLXBlcmlvZHMtYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0dBUUc7QUFDSCx1REFBdUQ7QUFFdkQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFHTCxVQUFVLEVBSVYsV0FBVyxHQUNaLE1BQU0sc0JBQXNCLENBQUM7QUFtQzlCLGFBQWE7QUFDYixPQUFPLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRTdELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7OztBQWFsRCxNQUFNLE9BQU8sdUJBQ1gsU0FBUSxXQUFXO0lBSVA7SUFEWixZQUNZLFVBQXNCLEVBQ0QsUUFBMkIsRUFDOUMsYUFBNkI7UUFFekMsS0FBSyxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUpyQixlQUFVLEdBQVYsVUFBVSxDQUFZO0lBS2xDLENBQUM7SUFzQ00sbUJBQW1CLENBQ3hCLGlCQUFtRCxFQUNuRCxVQUFlLE1BQU0sRUFDckIsaUJBQTBCLEtBQUssRUFDL0IsT0FJQztRQUVELE1BQU0sc0JBQXNCLEdBQUcsaUJBQWlCLEVBQUUsc0JBQXNCLENBQUM7UUFDekUsSUFDRSxzQkFBc0IsS0FBSyxJQUFJO1lBQy9CLHNCQUFzQixLQUFLLFNBQVMsRUFDcEMsQ0FBQztZQUNELE1BQU0sSUFBSSxLQUFLLENBQ2IsbUdBQW1HLENBQ3BHLENBQUM7UUFDSixDQUFDO1FBRUQsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUUxQyx1Q0FBdUM7UUFFdkMsb0NBQW9DO1FBQ3BDLGVBQWUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUN6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TUFBTSxDQUFDO1lBQ3pCLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxZQUFZLEdBQUcsMEJBQTBCLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztRQUNsTSxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUM1QixLQUFLLEVBQ0wsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxZQUFZLEVBQUUsRUFDL0M7WUFDRSxPQUFPLEVBQUUsbUJBQW1CO1lBQzVCLElBQUksRUFBRSxzQkFBc0I7WUFDNUIsWUFBWSxFQUFPLGFBQWE7WUFDaEMsZUFBZSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZTtZQUNuRCxPQUFPLEVBQUUsZUFBZTtZQUN4QixPQUFPLEVBQUUsT0FBTztZQUNoQixhQUFhLEVBQUUscUJBQXFCO1lBQ3BDLGNBQWMsRUFBRSxjQUFjO1NBQy9CLENBQ0YsQ0FBQztJQUNKLENBQUM7d0dBNXFCVSx1QkFBdUIsNENBTVosU0FBUzs0R0FOcEIsdUJBQXVCLGNBRnRCLE1BQU07OzRGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQU9JLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsU0FBUzs7MEJBQzVCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERlbG1hciBBcGlcbiAqXG4gKlxuICpcbiAqIE5PVEU6IFRoaXMgY2xhc3MgaXMgYXV0byBnZW5lcmF0ZWQgYnkgT3BlbkFQSSBHZW5lcmF0b3IgKGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaCkuXG4gKiBodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2hcbiAqIERvIG5vdCBlZGl0IHRoZSBjbGFzcyBtYW51YWxseS5cbiAqL1xuLyogdHNsaW50OmRpc2FibGU6bm8tdW51c2VkLXZhcmlhYmxlIG1lbWJlci1vcmRlcmluZyAqL1xuXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7XG4gIEh0dHBDbGllbnQsXG4gIEh0dHBIZWFkZXJzLFxuICBIdHRwUGFyYW1zLFxuICBIdHRwUmVzcG9uc2UsXG4gIEh0dHBFdmVudCxcbiAgSHR0cFBhcmFtZXRlckNvZGVjLFxuICBIdHRwQ29udGV4dCxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQgeyBDdXN0b21IdHRwUGFyYW1ldGVyQ29kZWMgfSBmcm9tIFwiLi4vZW5jb2RlclwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5cbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IEJyYW5jaFBlcmlvZER0byB9IGZyb20gXCIuLi9tb2RlbC9icmFuY2gtcGVyaW9kLmR0b1wiO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgQnJhbmNoUGVyaW9kUmVxdWVzdER0byB9IGZyb20gXCIuLi9tb2RlbC9icmFuY2gtcGVyaW9kLXJlcXVlc3QuZHRvXCI7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBCcmFuY2hQZXJpb2RzQ3JlYXRlRXJyb3JSZXNwb25zZTQwMER0byB9IGZyb20gXCIuLi9tb2RlbC9icmFuY2gtcGVyaW9kcy1jcmVhdGUtZXJyb3ItcmVzcG9uc2U0MDAuZHRvXCI7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBCcmFuY2hQZXJpb2RzRGVzdHJveUVycm9yUmVzcG9uc2U0MDBEdG8gfSBmcm9tIFwiLi4vbW9kZWwvYnJhbmNoLXBlcmlvZHMtZGVzdHJveS1lcnJvci1yZXNwb25zZTQwMC5kdG9cIjtcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IEJyYW5jaFBlcmlvZHNMaXN0RXJyb3JSZXNwb25zZTQwMER0byB9IGZyb20gXCIuLi9tb2RlbC9icmFuY2gtcGVyaW9kcy1saXN0LWVycm9yLXJlc3BvbnNlNDAwLmR0b1wiO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgQnJhbmNoUGVyaW9kc1JldHJpZXZlRXJyb3JSZXNwb25zZTQwMER0byB9IGZyb20gXCIuLi9tb2RlbC9icmFuY2gtcGVyaW9kcy1yZXRyaWV2ZS1lcnJvci1yZXNwb25zZTQwMC5kdG9cIjtcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IEJyYW5jaFBlcmlvZHNVcGRhdGVFcnJvclJlc3BvbnNlNDAwRHRvIH0gZnJvbSBcIi4uL21vZGVsL2JyYW5jaC1wZXJpb2RzLXVwZGF0ZS1lcnJvci1yZXNwb25zZTQwMC5kdG9cIjtcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IEVycm9yUmVzcG9uc2U0MDFEdG8gfSBmcm9tIFwiLi4vbW9kZWwvZXJyb3ItcmVzcG9uc2U0MDEuZHRvXCI7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBFcnJvclJlc3BvbnNlNDAzRHRvIH0gZnJvbSBcIi4uL21vZGVsL2Vycm9yLXJlc3BvbnNlNDAzLmR0b1wiO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgRXJyb3JSZXNwb25zZTQwNER0byB9IGZyb20gXCIuLi9tb2RlbC9lcnJvci1yZXNwb25zZTQwNC5kdG9cIjtcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IEVycm9yUmVzcG9uc2U0MDVEdG8gfSBmcm9tIFwiLi4vbW9kZWwvZXJyb3ItcmVzcG9uc2U0MDUuZHRvXCI7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBFcnJvclJlc3BvbnNlNDA2RHRvIH0gZnJvbSBcIi4uL21vZGVsL2Vycm9yLXJlc3BvbnNlNDA2LmR0b1wiO1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgRXJyb3JSZXNwb25zZTQxNUR0byB9IGZyb20gXCIuLi9tb2RlbC9lcnJvci1yZXNwb25zZTQxNS5kdG9cIjtcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IEVycm9yUmVzcG9uc2U1MDBEdG8gfSBmcm9tIFwiLi4vbW9kZWwvZXJyb3ItcmVzcG9uc2U1MDAuZHRvXCI7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBQYWdpbmF0ZWRCcmFuY2hQZXJpb2RMaXN0RHRvIH0gZnJvbSBcIi4uL21vZGVsL3BhZ2luYXRlZC1icmFuY2gtcGVyaW9kLWxpc3QuZHRvXCI7XG5cbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IEJBU0VfUEFUSCwgQ09MTEVDVElPTl9GT1JNQVRTIH0gZnJvbSBcIi4uL3ZhcmlhYmxlc1wiO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbiB9IGZyb20gXCIuLi9jb25maWd1cmF0aW9uXCI7XG5pbXBvcnQgeyBCYXNlU2VydmljZSB9IGZyb20gXCIuLi9hcGkuYmFzZS5zZXJ2aWNlXCI7XG5pbXBvcnQge1xuICBCcmFuY2hQZXJpb2RzQXBpU2VydmljZUludGVyZmFjZSxcbiAgQnJhbmNoUGVyaW9kc0NyZWF0ZVJlcXVlc3RQYXJhbXMsXG4gIEJyYW5jaFBlcmlvZHNEZXN0cm95UmVxdWVzdFBhcmFtcyxcbiAgQnJhbmNoUGVyaW9kc0xpc3RSZXF1ZXN0UGFyYW1zLFxuICBCcmFuY2hQZXJpb2RzUmV0cmlldmVSZXF1ZXN0UGFyYW1zLFxuICBCcmFuY2hQZXJpb2RzVXBkYXRlUmVxdWVzdFBhcmFtcyxcbn0gZnJvbSBcIi4vYnJhbmNoLXBlcmlvZHMtYXBpLnNlcnZpY2VJbnRlcmZhY2VcIjtcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiBcInJvb3RcIixcbn0pXG5leHBvcnQgY2xhc3MgQnJhbmNoUGVyaW9kc0FwaVNlcnZpY2VcbiAgZXh0ZW5kcyBCYXNlU2VydmljZVxuICBpbXBsZW1lbnRzIEJyYW5jaFBlcmlvZHNBcGlTZXJ2aWNlSW50ZXJmYWNlXG57XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQkFTRV9QQVRIKSBiYXNlUGF0aDogc3RyaW5nIHwgc3RyaW5nW10sXG4gICAgQE9wdGlvbmFsKCkgY29uZmlndXJhdGlvbj86IENvbmZpZ3VyYXRpb24sXG4gICkge1xuICAgIHN1cGVyKGJhc2VQYXRoLCBjb25maWd1cmF0aW9uKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcGkgdmlld3NldCBmb3IgQnJhbmNoUGVyaW9kIG1vZGVsLlxuICAgKiBAcGFyYW0gcmVxdWVzdFBhcmFtZXRlcnNcbiAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxuICAgKi9cbiAgcHVibGljIGJyYW5jaFBlcmlvZHNDcmVhdGUoXG4gICAgcmVxdWVzdFBhcmFtZXRlcnM6IEJyYW5jaFBlcmlvZHNDcmVhdGVSZXF1ZXN0UGFyYW1zLFxuICAgIG9ic2VydmU/OiBcImJvZHlcIixcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGh0dHBIZWFkZXJBY2NlcHQ/OiBcImFwcGxpY2F0aW9uL2pzb25cIjtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8QnJhbmNoUGVyaW9kRHRvPjtcbiAgcHVibGljIGJyYW5jaFBlcmlvZHNDcmVhdGUoXG4gICAgcmVxdWVzdFBhcmFtZXRlcnM6IEJyYW5jaFBlcmlvZHNDcmVhdGVSZXF1ZXN0UGFyYW1zLFxuICAgIG9ic2VydmU/OiBcInJlc3BvbnNlXCIsXG4gICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBodHRwSGVhZGVyQWNjZXB0PzogXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICB0cmFuc2ZlckNhY2hlPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxCcmFuY2hQZXJpb2REdG8+PjtcbiAgcHVibGljIGJyYW5jaFBlcmlvZHNDcmVhdGUoXG4gICAgcmVxdWVzdFBhcmFtZXRlcnM6IEJyYW5jaFBlcmlvZHNDcmVhdGVSZXF1ZXN0UGFyYW1zLFxuICAgIG9ic2VydmU/OiBcImV2ZW50c1wiLFxuICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbixcbiAgICBvcHRpb25zPzoge1xuICAgICAgaHR0cEhlYWRlckFjY2VwdD86IFwiYXBwbGljYXRpb24vanNvblwiO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgdHJhbnNmZXJDYWNoZT86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8QnJhbmNoUGVyaW9kRHRvPj47XG4gIHB1YmxpYyBicmFuY2hQZXJpb2RzQ3JlYXRlKFxuICAgIHJlcXVlc3RQYXJhbWV0ZXJzOiBCcmFuY2hQZXJpb2RzQ3JlYXRlUmVxdWVzdFBhcmFtcyxcbiAgICBvYnNlcnZlOiBhbnkgPSBcImJvZHlcIixcbiAgICByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBodHRwSGVhZGVyQWNjZXB0PzogXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICB0cmFuc2ZlckNhY2hlPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGJyYW5jaFBlcmlvZFJlcXVlc3REdG8gPSByZXF1ZXN0UGFyYW1ldGVycz8uYnJhbmNoUGVyaW9kUmVxdWVzdER0bztcbiAgICBpZiAoXG4gICAgICBicmFuY2hQZXJpb2RSZXF1ZXN0RHRvID09PSBudWxsIHx8XG4gICAgICBicmFuY2hQZXJpb2RSZXF1ZXN0RHRvID09PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJSZXF1aXJlZCBwYXJhbWV0ZXIgYnJhbmNoUGVyaW9kUmVxdWVzdER0byB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIGJyYW5jaFBlcmlvZHNDcmVhdGUuXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBsb2NhbFZhckhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xuXG4gICAgLy8gYXV0aGVudGljYXRpb24gKGNvb2tpZUF1dGgpIHJlcXVpcmVkXG5cbiAgICAvLyBhdXRoZW50aWNhdGlvbiAoand0QXV0aCkgcmVxdWlyZWRcbiAgICBsb2NhbFZhckhlYWRlcnMgPSB0aGlzLmNvbmZpZ3VyYXRpb24uYWRkQ3JlZGVudGlhbFRvSGVhZGVycyhcbiAgICAgIFwiand0QXV0aFwiLFxuICAgICAgXCJBdXRob3JpemF0aW9uXCIsXG4gICAgICBsb2NhbFZhckhlYWRlcnMsXG4gICAgICBcIkJlYXJlciBcIixcbiAgICApO1xuXG4gICAgY29uc3QgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9XG4gICAgICBvcHRpb25zPy5odHRwSGVhZGVyQWNjZXB0ID8/XG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KFtcImFwcGxpY2F0aW9uL2pzb25cIl0pO1xuICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KFxuICAgICAgICBcIkFjY2VwdFwiLFxuICAgICAgICBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgbG9jYWxWYXJIdHRwQ29udGV4dDogSHR0cENvbnRleHQgPVxuICAgICAgb3B0aW9ucz8uY29udGV4dCA/PyBuZXcgSHR0cENvbnRleHQoKTtcblxuICAgIGNvbnN0IGxvY2FsVmFyVHJhbnNmZXJDYWNoZTogYm9vbGVhbiA9IG9wdGlvbnM/LnRyYW5zZmVyQ2FjaGUgPz8gdHJ1ZTtcblxuICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxuICAgIGNvbnN0IGNvbnN1bWVzOiBzdHJpbmdbXSA9IFtcbiAgICAgIFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIixcbiAgICAgIFwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiLFxuICAgIF07XG4gICAgY29uc3QgaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9XG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQ29udGVudFR5cGUoY29uc3VtZXMpO1xuICAgIGlmIChodHRwQ29udGVudFR5cGVTZWxlY3RlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KFxuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiLFxuICAgICAgICBodHRwQ29udGVudFR5cGVTZWxlY3RlZCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IHJlc3BvbnNlVHlwZV86IFwidGV4dFwiIHwgXCJqc29uXCIgfCBcImJsb2JcIiA9IFwianNvblwiO1xuICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCkge1xuICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkLnN0YXJ0c1dpdGgoXCJ0ZXh0XCIpKSB7XG4gICAgICAgIHJlc3BvbnNlVHlwZV8gPSBcInRleHRcIjtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5pc0pzb25NaW1lKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKVxuICAgICAgKSB7XG4gICAgICAgIHJlc3BvbnNlVHlwZV8gPSBcImpzb25cIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3BvbnNlVHlwZV8gPSBcImJsb2JcIjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgbG9jYWxWYXJQYXRoID0gYC9hcGkvdjEvYnJhbmNoLXBlcmlvZHMvYDtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnJlcXVlc3Q8QnJhbmNoUGVyaW9kRHRvPihcbiAgICAgIFwicG9zdFwiLFxuICAgICAgYCR7dGhpcy5jb25maWd1cmF0aW9uLmJhc2VQYXRofSR7bG9jYWxWYXJQYXRofWAsXG4gICAgICB7XG4gICAgICAgIGNvbnRleHQ6IGxvY2FsVmFySHR0cENvbnRleHQsXG4gICAgICAgIGJvZHk6IGJyYW5jaFBlcmlvZFJlcXVlc3REdG8sXG4gICAgICAgIHJlc3BvbnNlVHlwZTogPGFueT5yZXNwb25zZVR5cGVfLFxuICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgIGhlYWRlcnM6IGxvY2FsVmFySGVhZGVycyxcbiAgICAgICAgb2JzZXJ2ZTogb2JzZXJ2ZSxcbiAgICAgICAgdHJhbnNmZXJDYWNoZTogbG9jYWxWYXJUcmFuc2ZlckNhY2hlLFxuICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3MsXG4gICAgICB9LFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQXBpIHZpZXdzZXQgZm9yIEJyYW5jaFBlcmlvZCBtb2RlbC5cbiAgICogQHBhcmFtIHJlcXVlc3RQYXJhbWV0ZXJzXG4gICAqIEBwYXJhbSBvYnNlcnZlIHNldCB3aGV0aGVyIG9yIG5vdCB0byByZXR1cm4gdGhlIGRhdGEgT2JzZXJ2YWJsZSBhcyB0aGUgYm9keSwgcmVzcG9uc2Ugb3IgZXZlbnRzLiBkZWZhdWx0cyB0byByZXR1cm5pbmcgdGhlIGJvZHkuXG4gICAqIEBwYXJhbSByZXBvcnRQcm9ncmVzcyBmbGFnIHRvIHJlcG9ydCByZXF1ZXN0IGFuZCByZXNwb25zZSBwcm9ncmVzcy5cbiAgICovXG4gIHB1YmxpYyBicmFuY2hQZXJpb2RzRGVzdHJveShcbiAgICByZXF1ZXN0UGFyYW1ldGVyczogQnJhbmNoUGVyaW9kc0Rlc3Ryb3lSZXF1ZXN0UGFyYW1zLFxuICAgIG9ic2VydmU/OiBcImJvZHlcIixcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGh0dHBIZWFkZXJBY2NlcHQ/OiBcImFwcGxpY2F0aW9uL2pzb25cIjtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8YW55PjtcbiAgcHVibGljIGJyYW5jaFBlcmlvZHNEZXN0cm95KFxuICAgIHJlcXVlc3RQYXJhbWV0ZXJzOiBCcmFuY2hQZXJpb2RzRGVzdHJveVJlcXVlc3RQYXJhbXMsXG4gICAgb2JzZXJ2ZT86IFwicmVzcG9uc2VcIixcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGh0dHBIZWFkZXJBY2NlcHQ/OiBcImFwcGxpY2F0aW9uL2pzb25cIjtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPGFueT4+O1xuICBwdWJsaWMgYnJhbmNoUGVyaW9kc0Rlc3Ryb3koXG4gICAgcmVxdWVzdFBhcmFtZXRlcnM6IEJyYW5jaFBlcmlvZHNEZXN0cm95UmVxdWVzdFBhcmFtcyxcbiAgICBvYnNlcnZlPzogXCJldmVudHNcIixcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGh0dHBIZWFkZXJBY2NlcHQ/OiBcImFwcGxpY2F0aW9uL2pzb25cIjtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+O1xuICBwdWJsaWMgYnJhbmNoUGVyaW9kc0Rlc3Ryb3koXG4gICAgcmVxdWVzdFBhcmFtZXRlcnM6IEJyYW5jaFBlcmlvZHNEZXN0cm95UmVxdWVzdFBhcmFtcyxcbiAgICBvYnNlcnZlOiBhbnkgPSBcImJvZHlcIixcbiAgICByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBodHRwSGVhZGVyQWNjZXB0PzogXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICB0cmFuc2ZlckNhY2hlPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGlkID0gcmVxdWVzdFBhcmFtZXRlcnM/LmlkO1xuICAgIGlmIChpZCA9PT0gbnVsbCB8fCBpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiUmVxdWlyZWQgcGFyYW1ldGVyIGlkIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgYnJhbmNoUGVyaW9kc0Rlc3Ryb3kuXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBsb2NhbFZhckhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xuXG4gICAgLy8gYXV0aGVudGljYXRpb24gKGNvb2tpZUF1dGgpIHJlcXVpcmVkXG5cbiAgICAvLyBhdXRoZW50aWNhdGlvbiAoand0QXV0aCkgcmVxdWlyZWRcbiAgICBsb2NhbFZhckhlYWRlcnMgPSB0aGlzLmNvbmZpZ3VyYXRpb24uYWRkQ3JlZGVudGlhbFRvSGVhZGVycyhcbiAgICAgIFwiand0QXV0aFwiLFxuICAgICAgXCJBdXRob3JpemF0aW9uXCIsXG4gICAgICBsb2NhbFZhckhlYWRlcnMsXG4gICAgICBcIkJlYXJlciBcIixcbiAgICApO1xuXG4gICAgY29uc3QgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9XG4gICAgICBvcHRpb25zPy5odHRwSGVhZGVyQWNjZXB0ID8/XG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KFtcImFwcGxpY2F0aW9uL2pzb25cIl0pO1xuICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KFxuICAgICAgICBcIkFjY2VwdFwiLFxuICAgICAgICBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgbG9jYWxWYXJIdHRwQ29udGV4dDogSHR0cENvbnRleHQgPVxuICAgICAgb3B0aW9ucz8uY29udGV4dCA/PyBuZXcgSHR0cENvbnRleHQoKTtcblxuICAgIGNvbnN0IGxvY2FsVmFyVHJhbnNmZXJDYWNoZTogYm9vbGVhbiA9IG9wdGlvbnM/LnRyYW5zZmVyQ2FjaGUgPz8gdHJ1ZTtcblxuICAgIGxldCByZXNwb25zZVR5cGVfOiBcInRleHRcIiB8IFwianNvblwiIHwgXCJibG9iXCIgPSBcImpzb25cIjtcbiAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpIHtcbiAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZC5zdGFydHNXaXRoKFwidGV4dFwiKSkge1xuICAgICAgICByZXNwb25zZVR5cGVfID0gXCJ0ZXh0XCI7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uaXNKc29uTWltZShsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZClcbiAgICAgICkge1xuICAgICAgICByZXNwb25zZVR5cGVfID0gXCJqc29uXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNwb25zZVR5cGVfID0gXCJibG9iXCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGxvY2FsVmFyUGF0aCA9IGAvYXBpL3YxL2JyYW5jaC1wZXJpb2RzLyR7dGhpcy5jb25maWd1cmF0aW9uLmVuY29kZVBhcmFtKHsgbmFtZTogXCJpZFwiLCB2YWx1ZTogaWQsIGluOiBcInBhdGhcIiwgc3R5bGU6IFwic2ltcGxlXCIsIGV4cGxvZGU6IGZhbHNlLCBkYXRhVHlwZTogXCJudW1iZXJcIiwgZGF0YUZvcm1hdDogdW5kZWZpbmVkIH0pfS9gO1xuICAgIHJldHVybiB0aGlzLmh0dHBDbGllbnQucmVxdWVzdDxhbnk+KFxuICAgICAgXCJkZWxldGVcIixcbiAgICAgIGAke3RoaXMuY29uZmlndXJhdGlvbi5iYXNlUGF0aH0ke2xvY2FsVmFyUGF0aH1gLFxuICAgICAge1xuICAgICAgICBjb250ZXh0OiBsb2NhbFZhckh0dHBDb250ZXh0LFxuICAgICAgICByZXNwb25zZVR5cGU6IDxhbnk+cmVzcG9uc2VUeXBlXyxcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxuICAgICAgICBoZWFkZXJzOiBsb2NhbFZhckhlYWRlcnMsXG4gICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgIHRyYW5zZmVyQ2FjaGU6IGxvY2FsVmFyVHJhbnNmZXJDYWNoZSxcbiAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzLFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwaSB2aWV3c2V0IGZvciBCcmFuY2hQZXJpb2QgbW9kZWwuXG4gICAqIEBwYXJhbSByZXF1ZXN0UGFyYW1ldGVyc1xuICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxuICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAqL1xuICBwdWJsaWMgYnJhbmNoUGVyaW9kc0xpc3QoXG4gICAgcmVxdWVzdFBhcmFtZXRlcnM/OiBCcmFuY2hQZXJpb2RzTGlzdFJlcXVlc3RQYXJhbXMsXG4gICAgb2JzZXJ2ZT86IFwiYm9keVwiLFxuICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbixcbiAgICBvcHRpb25zPzoge1xuICAgICAgaHR0cEhlYWRlckFjY2VwdD86IFwiYXBwbGljYXRpb24vanNvblwiO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgdHJhbnNmZXJDYWNoZT86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxQYWdpbmF0ZWRCcmFuY2hQZXJpb2RMaXN0RHRvPjtcbiAgcHVibGljIGJyYW5jaFBlcmlvZHNMaXN0KFxuICAgIHJlcXVlc3RQYXJhbWV0ZXJzPzogQnJhbmNoUGVyaW9kc0xpc3RSZXF1ZXN0UGFyYW1zLFxuICAgIG9ic2VydmU/OiBcInJlc3BvbnNlXCIsXG4gICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBodHRwSGVhZGVyQWNjZXB0PzogXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICB0cmFuc2ZlckNhY2hlPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxQYWdpbmF0ZWRCcmFuY2hQZXJpb2RMaXN0RHRvPj47XG4gIHB1YmxpYyBicmFuY2hQZXJpb2RzTGlzdChcbiAgICByZXF1ZXN0UGFyYW1ldGVycz86IEJyYW5jaFBlcmlvZHNMaXN0UmVxdWVzdFBhcmFtcyxcbiAgICBvYnNlcnZlPzogXCJldmVudHNcIixcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGh0dHBIZWFkZXJBY2NlcHQ/OiBcImFwcGxpY2F0aW9uL2pzb25cIjtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PFBhZ2luYXRlZEJyYW5jaFBlcmlvZExpc3REdG8+PjtcbiAgcHVibGljIGJyYW5jaFBlcmlvZHNMaXN0KFxuICAgIHJlcXVlc3RQYXJhbWV0ZXJzPzogQnJhbmNoUGVyaW9kc0xpc3RSZXF1ZXN0UGFyYW1zLFxuICAgIG9ic2VydmU6IGFueSA9IFwiYm9keVwiLFxuICAgIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGh0dHBIZWFkZXJBY2NlcHQ/OiBcImFwcGxpY2F0aW9uL2pzb25cIjtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgYnJhbmNoSXNBY3RpdmUgPSByZXF1ZXN0UGFyYW1ldGVycz8uYnJhbmNoSXNBY3RpdmU7XG4gICAgY29uc3QgY3JlYXRlZERhdGVHdGUgPSByZXF1ZXN0UGFyYW1ldGVycz8uY3JlYXRlZERhdGVHdGU7XG4gICAgY29uc3QgY3JlYXRlZERhdGVMdGUgPSByZXF1ZXN0UGFyYW1ldGVycz8uY3JlYXRlZERhdGVMdGU7XG4gICAgY29uc3QgY3JlYXRlZEd0ZSA9IHJlcXVlc3RQYXJhbWV0ZXJzPy5jcmVhdGVkR3RlO1xuICAgIGNvbnN0IGNyZWF0ZWRMdGUgPSByZXF1ZXN0UGFyYW1ldGVycz8uY3JlYXRlZEx0ZTtcbiAgICBjb25zdCBpZCA9IHJlcXVlc3RQYXJhbWV0ZXJzPy5pZDtcbiAgICBjb25zdCBpZEluID0gcmVxdWVzdFBhcmFtZXRlcnM/LmlkSW47XG4gICAgY29uc3QgbGltaXQgPSByZXF1ZXN0UGFyYW1ldGVycz8ubGltaXQ7XG4gICAgY29uc3Qgb2Zmc2V0ID0gcmVxdWVzdFBhcmFtZXRlcnM/Lm9mZnNldDtcbiAgICBjb25zdCBvcmRlcmluZyA9IHJlcXVlc3RQYXJhbWV0ZXJzPy5vcmRlcmluZztcbiAgICBjb25zdCBwZXJpb2RPdmVybGFwID0gcmVxdWVzdFBhcmFtZXRlcnM/LnBlcmlvZE92ZXJsYXA7XG4gICAgY29uc3Qgc2VhcmNoID0gcmVxdWVzdFBhcmFtZXRlcnM/LnNlYXJjaDtcbiAgICBjb25zdCB0eXBlID0gcmVxdWVzdFBhcmFtZXRlcnM/LnR5cGU7XG4gICAgY29uc3QgdHlwZUluID0gcmVxdWVzdFBhcmFtZXRlcnM/LnR5cGVJbjtcblxuICAgIGxldCBsb2NhbFZhclF1ZXJ5UGFyYW1ldGVycyA9IG5ldyBIdHRwUGFyYW1zKHsgZW5jb2RlcjogdGhpcy5lbmNvZGVyIH0pO1xuICAgIGxvY2FsVmFyUXVlcnlQYXJhbWV0ZXJzID0gdGhpcy5hZGRUb0h0dHBQYXJhbXMoXG4gICAgICBsb2NhbFZhclF1ZXJ5UGFyYW1ldGVycyxcbiAgICAgIDxhbnk+YnJhbmNoSXNBY3RpdmUsXG4gICAgICBcImJyYW5jaF9faXNfYWN0aXZlXCIsXG4gICAgKTtcbiAgICBsb2NhbFZhclF1ZXJ5UGFyYW1ldGVycyA9IHRoaXMuYWRkVG9IdHRwUGFyYW1zKFxuICAgICAgbG9jYWxWYXJRdWVyeVBhcmFtZXRlcnMsXG4gICAgICA8YW55PmNyZWF0ZWREYXRlR3RlLFxuICAgICAgXCJjcmVhdGVkX19kYXRlX19ndGVcIixcbiAgICApO1xuICAgIGxvY2FsVmFyUXVlcnlQYXJhbWV0ZXJzID0gdGhpcy5hZGRUb0h0dHBQYXJhbXMoXG4gICAgICBsb2NhbFZhclF1ZXJ5UGFyYW1ldGVycyxcbiAgICAgIDxhbnk+Y3JlYXRlZERhdGVMdGUsXG4gICAgICBcImNyZWF0ZWRfX2RhdGVfX2x0ZVwiLFxuICAgICk7XG4gICAgbG9jYWxWYXJRdWVyeVBhcmFtZXRlcnMgPSB0aGlzLmFkZFRvSHR0cFBhcmFtcyhcbiAgICAgIGxvY2FsVmFyUXVlcnlQYXJhbWV0ZXJzLFxuICAgICAgPGFueT5jcmVhdGVkR3RlLFxuICAgICAgXCJjcmVhdGVkX19ndGVcIixcbiAgICApO1xuICAgIGxvY2FsVmFyUXVlcnlQYXJhbWV0ZXJzID0gdGhpcy5hZGRUb0h0dHBQYXJhbXMoXG4gICAgICBsb2NhbFZhclF1ZXJ5UGFyYW1ldGVycyxcbiAgICAgIDxhbnk+Y3JlYXRlZEx0ZSxcbiAgICAgIFwiY3JlYXRlZF9fbHRlXCIsXG4gICAgKTtcbiAgICBsb2NhbFZhclF1ZXJ5UGFyYW1ldGVycyA9IHRoaXMuYWRkVG9IdHRwUGFyYW1zKFxuICAgICAgbG9jYWxWYXJRdWVyeVBhcmFtZXRlcnMsXG4gICAgICA8YW55PmlkLFxuICAgICAgXCJpZFwiLFxuICAgICk7XG4gICAgaWYgKGlkSW4pIHtcbiAgICAgIGxvY2FsVmFyUXVlcnlQYXJhbWV0ZXJzID0gdGhpcy5hZGRUb0h0dHBQYXJhbXMoXG4gICAgICAgIGxvY2FsVmFyUXVlcnlQYXJhbWV0ZXJzLFxuICAgICAgICBbLi4uaWRJbl0uam9pbihDT0xMRUNUSU9OX0ZPUk1BVFNbXCJjc3ZcIl0pLFxuICAgICAgICBcImlkX19pblwiLFxuICAgICAgKTtcbiAgICB9XG4gICAgbG9jYWxWYXJRdWVyeVBhcmFtZXRlcnMgPSB0aGlzLmFkZFRvSHR0cFBhcmFtcyhcbiAgICAgIGxvY2FsVmFyUXVlcnlQYXJhbWV0ZXJzLFxuICAgICAgPGFueT5saW1pdCxcbiAgICAgIFwibGltaXRcIixcbiAgICApO1xuICAgIGxvY2FsVmFyUXVlcnlQYXJhbWV0ZXJzID0gdGhpcy5hZGRUb0h0dHBQYXJhbXMoXG4gICAgICBsb2NhbFZhclF1ZXJ5UGFyYW1ldGVycyxcbiAgICAgIDxhbnk+b2Zmc2V0LFxuICAgICAgXCJvZmZzZXRcIixcbiAgICApO1xuICAgIGxvY2FsVmFyUXVlcnlQYXJhbWV0ZXJzID0gdGhpcy5hZGRUb0h0dHBQYXJhbXMoXG4gICAgICBsb2NhbFZhclF1ZXJ5UGFyYW1ldGVycyxcbiAgICAgIDxhbnk+b3JkZXJpbmcsXG4gICAgICBcIm9yZGVyaW5nXCIsXG4gICAgKTtcbiAgICBsb2NhbFZhclF1ZXJ5UGFyYW1ldGVycyA9IHRoaXMuYWRkVG9IdHRwUGFyYW1zKFxuICAgICAgbG9jYWxWYXJRdWVyeVBhcmFtZXRlcnMsXG4gICAgICA8YW55PnBlcmlvZE92ZXJsYXAsXG4gICAgICBcInBlcmlvZF9fb3ZlcmxhcFwiLFxuICAgICk7XG4gICAgbG9jYWxWYXJRdWVyeVBhcmFtZXRlcnMgPSB0aGlzLmFkZFRvSHR0cFBhcmFtcyhcbiAgICAgIGxvY2FsVmFyUXVlcnlQYXJhbWV0ZXJzLFxuICAgICAgPGFueT5zZWFyY2gsXG4gICAgICBcInNlYXJjaFwiLFxuICAgICk7XG4gICAgbG9jYWxWYXJRdWVyeVBhcmFtZXRlcnMgPSB0aGlzLmFkZFRvSHR0cFBhcmFtcyhcbiAgICAgIGxvY2FsVmFyUXVlcnlQYXJhbWV0ZXJzLFxuICAgICAgPGFueT50eXBlLFxuICAgICAgXCJ0eXBlXCIsXG4gICAgKTtcbiAgICBpZiAodHlwZUluKSB7XG4gICAgICBsb2NhbFZhclF1ZXJ5UGFyYW1ldGVycyA9IHRoaXMuYWRkVG9IdHRwUGFyYW1zKFxuICAgICAgICBsb2NhbFZhclF1ZXJ5UGFyYW1ldGVycyxcbiAgICAgICAgWy4uLnR5cGVJbl0uam9pbihDT0xMRUNUSU9OX0ZPUk1BVFNbXCJjc3ZcIl0pLFxuICAgICAgICBcInR5cGVfX2luXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBsb2NhbFZhckhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xuXG4gICAgLy8gYXV0aGVudGljYXRpb24gKGNvb2tpZUF1dGgpIHJlcXVpcmVkXG5cbiAgICAvLyBhdXRoZW50aWNhdGlvbiAoand0QXV0aCkgcmVxdWlyZWRcbiAgICBsb2NhbFZhckhlYWRlcnMgPSB0aGlzLmNvbmZpZ3VyYXRpb24uYWRkQ3JlZGVudGlhbFRvSGVhZGVycyhcbiAgICAgIFwiand0QXV0aFwiLFxuICAgICAgXCJBdXRob3JpemF0aW9uXCIsXG4gICAgICBsb2NhbFZhckhlYWRlcnMsXG4gICAgICBcIkJlYXJlciBcIixcbiAgICApO1xuXG4gICAgY29uc3QgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9XG4gICAgICBvcHRpb25zPy5odHRwSGVhZGVyQWNjZXB0ID8/XG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KFtcImFwcGxpY2F0aW9uL2pzb25cIl0pO1xuICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KFxuICAgICAgICBcIkFjY2VwdFwiLFxuICAgICAgICBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgbG9jYWxWYXJIdHRwQ29udGV4dDogSHR0cENvbnRleHQgPVxuICAgICAgb3B0aW9ucz8uY29udGV4dCA/PyBuZXcgSHR0cENvbnRleHQoKTtcblxuICAgIGNvbnN0IGxvY2FsVmFyVHJhbnNmZXJDYWNoZTogYm9vbGVhbiA9IG9wdGlvbnM/LnRyYW5zZmVyQ2FjaGUgPz8gdHJ1ZTtcblxuICAgIGxldCByZXNwb25zZVR5cGVfOiBcInRleHRcIiB8IFwianNvblwiIHwgXCJibG9iXCIgPSBcImpzb25cIjtcbiAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpIHtcbiAgICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZC5zdGFydHNXaXRoKFwidGV4dFwiKSkge1xuICAgICAgICByZXNwb25zZVR5cGVfID0gXCJ0ZXh0XCI7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uaXNKc29uTWltZShsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZClcbiAgICAgICkge1xuICAgICAgICByZXNwb25zZVR5cGVfID0gXCJqc29uXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNwb25zZVR5cGVfID0gXCJibG9iXCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGxvY2FsVmFyUGF0aCA9IGAvYXBpL3YxL2JyYW5jaC1wZXJpb2RzL2A7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5yZXF1ZXN0PFBhZ2luYXRlZEJyYW5jaFBlcmlvZExpc3REdG8+KFxuICAgICAgXCJnZXRcIixcbiAgICAgIGAke3RoaXMuY29uZmlndXJhdGlvbi5iYXNlUGF0aH0ke2xvY2FsVmFyUGF0aH1gLFxuICAgICAge1xuICAgICAgICBjb250ZXh0OiBsb2NhbFZhckh0dHBDb250ZXh0LFxuICAgICAgICBwYXJhbXM6IGxvY2FsVmFyUXVlcnlQYXJhbWV0ZXJzLFxuICAgICAgICByZXNwb25zZVR5cGU6IDxhbnk+cmVzcG9uc2VUeXBlXyxcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0aGlzLmNvbmZpZ3VyYXRpb24ud2l0aENyZWRlbnRpYWxzLFxuICAgICAgICBoZWFkZXJzOiBsb2NhbFZhckhlYWRlcnMsXG4gICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgIHRyYW5zZmVyQ2FjaGU6IGxvY2FsVmFyVHJhbnNmZXJDYWNoZSxcbiAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHJlcG9ydFByb2dyZXNzLFxuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwaSB2aWV3c2V0IGZvciBCcmFuY2hQZXJpb2QgbW9kZWwuXG4gICAqIEBwYXJhbSByZXF1ZXN0UGFyYW1ldGVyc1xuICAgKiBAcGFyYW0gb2JzZXJ2ZSBzZXQgd2hldGhlciBvciBub3QgdG8gcmV0dXJuIHRoZSBkYXRhIE9ic2VydmFibGUgYXMgdGhlIGJvZHksIHJlc3BvbnNlIG9yIGV2ZW50cy4gZGVmYXVsdHMgdG8gcmV0dXJuaW5nIHRoZSBib2R5LlxuICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAqL1xuICBwdWJsaWMgYnJhbmNoUGVyaW9kc1JldHJpZXZlKFxuICAgIHJlcXVlc3RQYXJhbWV0ZXJzOiBCcmFuY2hQZXJpb2RzUmV0cmlldmVSZXF1ZXN0UGFyYW1zLFxuICAgIG9ic2VydmU/OiBcImJvZHlcIixcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGh0dHBIZWFkZXJBY2NlcHQ/OiBcImFwcGxpY2F0aW9uL2pzb25cIjtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8QnJhbmNoUGVyaW9kRHRvPjtcbiAgcHVibGljIGJyYW5jaFBlcmlvZHNSZXRyaWV2ZShcbiAgICByZXF1ZXN0UGFyYW1ldGVyczogQnJhbmNoUGVyaW9kc1JldHJpZXZlUmVxdWVzdFBhcmFtcyxcbiAgICBvYnNlcnZlPzogXCJyZXNwb25zZVwiLFxuICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbixcbiAgICBvcHRpb25zPzoge1xuICAgICAgaHR0cEhlYWRlckFjY2VwdD86IFwiYXBwbGljYXRpb24vanNvblwiO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgdHJhbnNmZXJDYWNoZT86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8QnJhbmNoUGVyaW9kRHRvPj47XG4gIHB1YmxpYyBicmFuY2hQZXJpb2RzUmV0cmlldmUoXG4gICAgcmVxdWVzdFBhcmFtZXRlcnM6IEJyYW5jaFBlcmlvZHNSZXRyaWV2ZVJlcXVlc3RQYXJhbXMsXG4gICAgb2JzZXJ2ZT86IFwiZXZlbnRzXCIsXG4gICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBodHRwSGVhZGVyQWNjZXB0PzogXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICB0cmFuc2ZlckNhY2hlPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxCcmFuY2hQZXJpb2REdG8+PjtcbiAgcHVibGljIGJyYW5jaFBlcmlvZHNSZXRyaWV2ZShcbiAgICByZXF1ZXN0UGFyYW1ldGVyczogQnJhbmNoUGVyaW9kc1JldHJpZXZlUmVxdWVzdFBhcmFtcyxcbiAgICBvYnNlcnZlOiBhbnkgPSBcImJvZHlcIixcbiAgICByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBodHRwSGVhZGVyQWNjZXB0PzogXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICB0cmFuc2ZlckNhY2hlPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGlkID0gcmVxdWVzdFBhcmFtZXRlcnM/LmlkO1xuICAgIGlmIChpZCA9PT0gbnVsbCB8fCBpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiUmVxdWlyZWQgcGFyYW1ldGVyIGlkIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgYnJhbmNoUGVyaW9kc1JldHJpZXZlLlwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgbG9jYWxWYXJIZWFkZXJzID0gdGhpcy5kZWZhdWx0SGVhZGVycztcblxuICAgIC8vIGF1dGhlbnRpY2F0aW9uIChjb29raWVBdXRoKSByZXF1aXJlZFxuXG4gICAgLy8gYXV0aGVudGljYXRpb24gKGp3dEF1dGgpIHJlcXVpcmVkXG4gICAgbG9jYWxWYXJIZWFkZXJzID0gdGhpcy5jb25maWd1cmF0aW9uLmFkZENyZWRlbnRpYWxUb0hlYWRlcnMoXG4gICAgICBcImp3dEF1dGhcIixcbiAgICAgIFwiQXV0aG9yaXphdGlvblwiLFxuICAgICAgbG9jYWxWYXJIZWFkZXJzLFxuICAgICAgXCJCZWFyZXIgXCIsXG4gICAgKTtcblxuICAgIGNvbnN0IGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPVxuICAgICAgb3B0aW9ucz8uaHR0cEhlYWRlckFjY2VwdCA/P1xuICAgICAgdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckFjY2VwdChbXCJhcHBsaWNhdGlvbi9qc29uXCJdKTtcbiAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbG9jYWxWYXJIZWFkZXJzID0gbG9jYWxWYXJIZWFkZXJzLnNldChcbiAgICAgICAgXCJBY2NlcHRcIixcbiAgICAgICAgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGxvY2FsVmFySHR0cENvbnRleHQ6IEh0dHBDb250ZXh0ID1cbiAgICAgIG9wdGlvbnM/LmNvbnRleHQgPz8gbmV3IEh0dHBDb250ZXh0KCk7XG5cbiAgICBjb25zdCBsb2NhbFZhclRyYW5zZmVyQ2FjaGU6IGJvb2xlYW4gPSBvcHRpb25zPy50cmFuc2ZlckNhY2hlID8/IHRydWU7XG5cbiAgICBsZXQgcmVzcG9uc2VUeXBlXzogXCJ0ZXh0XCIgfCBcImpzb25cIiB8IFwiYmxvYlwiID0gXCJqc29uXCI7XG4gICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKSB7XG4gICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQuc3RhcnRzV2l0aChcInRleHRcIikpIHtcbiAgICAgICAgcmVzcG9uc2VUeXBlXyA9IFwidGV4dFwiO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLmlzSnNvbk1pbWUobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpXG4gICAgICApIHtcbiAgICAgICAgcmVzcG9uc2VUeXBlXyA9IFwianNvblwiO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzcG9uc2VUeXBlXyA9IFwiYmxvYlwiO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBsb2NhbFZhclBhdGggPSBgL2FwaS92MS9icmFuY2gtcGVyaW9kcy8ke3RoaXMuY29uZmlndXJhdGlvbi5lbmNvZGVQYXJhbSh7IG5hbWU6IFwiaWRcIiwgdmFsdWU6IGlkLCBpbjogXCJwYXRoXCIsIHN0eWxlOiBcInNpbXBsZVwiLCBleHBsb2RlOiBmYWxzZSwgZGF0YVR5cGU6IFwibnVtYmVyXCIsIGRhdGFGb3JtYXQ6IHVuZGVmaW5lZCB9KX0vYDtcbiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnJlcXVlc3Q8QnJhbmNoUGVyaW9kRHRvPihcbiAgICAgIFwiZ2V0XCIsXG4gICAgICBgJHt0aGlzLmNvbmZpZ3VyYXRpb24uYmFzZVBhdGh9JHtsb2NhbFZhclBhdGh9YCxcbiAgICAgIHtcbiAgICAgICAgY29udGV4dDogbG9jYWxWYXJIdHRwQ29udGV4dCxcbiAgICAgICAgcmVzcG9uc2VUeXBlOiA8YW55PnJlc3BvbnNlVHlwZV8sXG4gICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy5jb25maWd1cmF0aW9uLndpdGhDcmVkZW50aWFscyxcbiAgICAgICAgaGVhZGVyczogbG9jYWxWYXJIZWFkZXJzLFxuICAgICAgICBvYnNlcnZlOiBvYnNlcnZlLFxuICAgICAgICB0cmFuc2ZlckNhY2hlOiBsb2NhbFZhclRyYW5zZmVyQ2FjaGUsXG4gICAgICAgIHJlcG9ydFByb2dyZXNzOiByZXBvcnRQcm9ncmVzcyxcbiAgICAgIH0sXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcGkgdmlld3NldCBmb3IgQnJhbmNoUGVyaW9kIG1vZGVsLlxuICAgKiBAcGFyYW0gcmVxdWVzdFBhcmFtZXRlcnNcbiAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICogQHBhcmFtIHJlcG9ydFByb2dyZXNzIGZsYWcgdG8gcmVwb3J0IHJlcXVlc3QgYW5kIHJlc3BvbnNlIHByb2dyZXNzLlxuICAgKi9cbiAgcHVibGljIGJyYW5jaFBlcmlvZHNVcGRhdGUoXG4gICAgcmVxdWVzdFBhcmFtZXRlcnM6IEJyYW5jaFBlcmlvZHNVcGRhdGVSZXF1ZXN0UGFyYW1zLFxuICAgIG9ic2VydmU/OiBcImJvZHlcIixcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW4sXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGh0dHBIZWFkZXJBY2NlcHQ/OiBcImFwcGxpY2F0aW9uL2pzb25cIjtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8QnJhbmNoUGVyaW9kRHRvPjtcbiAgcHVibGljIGJyYW5jaFBlcmlvZHNVcGRhdGUoXG4gICAgcmVxdWVzdFBhcmFtZXRlcnM6IEJyYW5jaFBlcmlvZHNVcGRhdGVSZXF1ZXN0UGFyYW1zLFxuICAgIG9ic2VydmU/OiBcInJlc3BvbnNlXCIsXG4gICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBodHRwSGVhZGVyQWNjZXB0PzogXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICB0cmFuc2ZlckNhY2hlPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxCcmFuY2hQZXJpb2REdG8+PjtcbiAgcHVibGljIGJyYW5jaFBlcmlvZHNVcGRhdGUoXG4gICAgcmVxdWVzdFBhcmFtZXRlcnM6IEJyYW5jaFBlcmlvZHNVcGRhdGVSZXF1ZXN0UGFyYW1zLFxuICAgIG9ic2VydmU/OiBcImV2ZW50c1wiLFxuICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbixcbiAgICBvcHRpb25zPzoge1xuICAgICAgaHR0cEhlYWRlckFjY2VwdD86IFwiYXBwbGljYXRpb24vanNvblwiO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgdHJhbnNmZXJDYWNoZT86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8QnJhbmNoUGVyaW9kRHRvPj47XG4gIHB1YmxpYyBicmFuY2hQZXJpb2RzVXBkYXRlKFxuICAgIHJlcXVlc3RQYXJhbWV0ZXJzOiBCcmFuY2hQZXJpb2RzVXBkYXRlUmVxdWVzdFBhcmFtcyxcbiAgICBvYnNlcnZlOiBhbnkgPSBcImJvZHlcIixcbiAgICByZXBvcnRQcm9ncmVzczogYm9vbGVhbiA9IGZhbHNlLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBodHRwSGVhZGVyQWNjZXB0PzogXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICB0cmFuc2ZlckNhY2hlPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGlkID0gcmVxdWVzdFBhcmFtZXRlcnM/LmlkO1xuICAgIGlmIChpZCA9PT0gbnVsbCB8fCBpZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiUmVxdWlyZWQgcGFyYW1ldGVyIGlkIHdhcyBudWxsIG9yIHVuZGVmaW5lZCB3aGVuIGNhbGxpbmcgYnJhbmNoUGVyaW9kc1VwZGF0ZS5cIixcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IGJyYW5jaFBlcmlvZFJlcXVlc3REdG8gPSByZXF1ZXN0UGFyYW1ldGVycz8uYnJhbmNoUGVyaW9kUmVxdWVzdER0bztcbiAgICBpZiAoXG4gICAgICBicmFuY2hQZXJpb2RSZXF1ZXN0RHRvID09PSBudWxsIHx8XG4gICAgICBicmFuY2hQZXJpb2RSZXF1ZXN0RHRvID09PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJSZXF1aXJlZCBwYXJhbWV0ZXIgYnJhbmNoUGVyaW9kUmVxdWVzdER0byB3YXMgbnVsbCBvciB1bmRlZmluZWQgd2hlbiBjYWxsaW5nIGJyYW5jaFBlcmlvZHNVcGRhdGUuXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGxldCBsb2NhbFZhckhlYWRlcnMgPSB0aGlzLmRlZmF1bHRIZWFkZXJzO1xuXG4gICAgLy8gYXV0aGVudGljYXRpb24gKGNvb2tpZUF1dGgpIHJlcXVpcmVkXG5cbiAgICAvLyBhdXRoZW50aWNhdGlvbiAoand0QXV0aCkgcmVxdWlyZWRcbiAgICBsb2NhbFZhckhlYWRlcnMgPSB0aGlzLmNvbmZpZ3VyYXRpb24uYWRkQ3JlZGVudGlhbFRvSGVhZGVycyhcbiAgICAgIFwiand0QXV0aFwiLFxuICAgICAgXCJBdXRob3JpemF0aW9uXCIsXG4gICAgICBsb2NhbFZhckhlYWRlcnMsXG4gICAgICBcIkJlYXJlciBcIixcbiAgICApO1xuXG4gICAgY29uc3QgbG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9XG4gICAgICBvcHRpb25zPy5odHRwSGVhZGVyQWNjZXB0ID8/XG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQWNjZXB0KFtcImFwcGxpY2F0aW9uL2pzb25cIl0pO1xuICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KFxuICAgICAgICBcIkFjY2VwdFwiLFxuICAgICAgICBsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgbG9jYWxWYXJIdHRwQ29udGV4dDogSHR0cENvbnRleHQgPVxuICAgICAgb3B0aW9ucz8uY29udGV4dCA/PyBuZXcgSHR0cENvbnRleHQoKTtcblxuICAgIGNvbnN0IGxvY2FsVmFyVHJhbnNmZXJDYWNoZTogYm9vbGVhbiA9IG9wdGlvbnM/LnRyYW5zZmVyQ2FjaGUgPz8gdHJ1ZTtcblxuICAgIC8vIHRvIGRldGVybWluZSB0aGUgQ29udGVudC1UeXBlIGhlYWRlclxuICAgIGNvbnN0IGNvbnN1bWVzOiBzdHJpbmdbXSA9IFtcbiAgICAgIFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgXCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRcIixcbiAgICAgIFwibXVsdGlwYXJ0L2Zvcm0tZGF0YVwiLFxuICAgIF07XG4gICAgY29uc3QgaHR0cENvbnRlbnRUeXBlU2VsZWN0ZWQ6IHN0cmluZyB8IHVuZGVmaW5lZCA9XG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uc2VsZWN0SGVhZGVyQ29udGVudFR5cGUoY29uc3VtZXMpO1xuICAgIGlmIChodHRwQ29udGVudFR5cGVTZWxlY3RlZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBsb2NhbFZhckhlYWRlcnMgPSBsb2NhbFZhckhlYWRlcnMuc2V0KFxuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiLFxuICAgICAgICBodHRwQ29udGVudFR5cGVTZWxlY3RlZCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IHJlc3BvbnNlVHlwZV86IFwidGV4dFwiIHwgXCJqc29uXCIgfCBcImJsb2JcIiA9IFwianNvblwiO1xuICAgIGlmIChsb2NhbFZhckh0dHBIZWFkZXJBY2NlcHRTZWxlY3RlZCkge1xuICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkLnN0YXJ0c1dpdGgoXCJ0ZXh0XCIpKSB7XG4gICAgICAgIHJlc3BvbnNlVHlwZV8gPSBcInRleHRcIjtcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5pc0pzb25NaW1lKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKVxuICAgICAgKSB7XG4gICAgICAgIHJlc3BvbnNlVHlwZV8gPSBcImpzb25cIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3BvbnNlVHlwZV8gPSBcImJsb2JcIjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgbG9jYWxWYXJQYXRoID0gYC9hcGkvdjEvYnJhbmNoLXBlcmlvZHMvJHt0aGlzLmNvbmZpZ3VyYXRpb24uZW5jb2RlUGFyYW0oeyBuYW1lOiBcImlkXCIsIHZhbHVlOiBpZCwgaW46IFwicGF0aFwiLCBzdHlsZTogXCJzaW1wbGVcIiwgZXhwbG9kZTogZmFsc2UsIGRhdGFUeXBlOiBcIm51bWJlclwiLCBkYXRhRm9ybWF0OiB1bmRlZmluZWQgfSl9L2A7XG4gICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5yZXF1ZXN0PEJyYW5jaFBlcmlvZER0bz4oXG4gICAgICBcInB1dFwiLFxuICAgICAgYCR7dGhpcy5jb25maWd1cmF0aW9uLmJhc2VQYXRofSR7bG9jYWxWYXJQYXRofWAsXG4gICAgICB7XG4gICAgICAgIGNvbnRleHQ6IGxvY2FsVmFySHR0cENvbnRleHQsXG4gICAgICAgIGJvZHk6IGJyYW5jaFBlcmlvZFJlcXVlc3REdG8sXG4gICAgICAgIHJlc3BvbnNlVHlwZTogPGFueT5yZXNwb25zZVR5cGVfLFxuICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgIGhlYWRlcnM6IGxvY2FsVmFySGVhZGVycyxcbiAgICAgICAgb2JzZXJ2ZTogb2JzZXJ2ZSxcbiAgICAgICAgdHJhbnNmZXJDYWNoZTogbG9jYWxWYXJUcmFuc2ZlckNhY2hlLFxuICAgICAgICByZXBvcnRQcm9ncmVzczogcmVwb3J0UHJvZ3Jlc3MsXG4gICAgICB9LFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmNoLXBlcmlvZHMtYXBpLnNlcnZpY2VJbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hcGkvYnJhbmNoLXBlcmlvZHMtYXBpLnNlcnZpY2VJbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRGVsbWFyIEFwaVxuICpcbiAqXG4gKlxuICogTk9URTogVGhpcyBjbGFzcyBpcyBhdXRvIGdlbmVyYXRlZCBieSBPcGVuQVBJIEdlbmVyYXRvciAoaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoKS5cbiAqIGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaFxuICogRG8gbm90IGVkaXQgdGhlIGNsYXNzIG1hbnVhbGx5LlxuICovXG5pbXBvcnQgeyBIdHRwSGVhZGVycyB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcblxuaW1wb3J0IHsgQnJhbmNoUGVyaW9kRHRvIH0gZnJvbSBcIi4uL21vZGVsL21vZGVsc1wiO1xuaW1wb3J0IHsgQnJhbmNoUGVyaW9kUmVxdWVzdER0byB9IGZyb20gXCIuLi9tb2RlbC9tb2RlbHNcIjtcbmltcG9ydCB7IEJyYW5jaFBlcmlvZHNDcmVhdGVFcnJvclJlc3BvbnNlNDAwRHRvIH0gZnJvbSBcIi4uL21vZGVsL21vZGVsc1wiO1xuaW1wb3J0IHsgQnJhbmNoUGVyaW9kc0Rlc3Ryb3lFcnJvclJlc3BvbnNlNDAwRHRvIH0gZnJvbSBcIi4uL21vZGVsL21vZGVsc1wiO1xuaW1wb3J0IHsgQnJhbmNoUGVyaW9kc0xpc3RFcnJvclJlc3BvbnNlNDAwRHRvIH0gZnJvbSBcIi4uL21vZGVsL21vZGVsc1wiO1xuaW1wb3J0IHsgQnJhbmNoUGVyaW9kc1JldHJpZXZlRXJyb3JSZXNwb25zZTQwMER0byB9IGZyb20gXCIuLi9tb2RlbC9tb2RlbHNcIjtcbmltcG9ydCB7IEJyYW5jaFBlcmlvZHNVcGRhdGVFcnJvclJlc3BvbnNlNDAwRHRvIH0gZnJvbSBcIi4uL21vZGVsL21vZGVsc1wiO1xuaW1wb3J0IHsgRXJyb3JSZXNwb25zZTQwMUR0byB9IGZyb20gXCIuLi9tb2RlbC9tb2RlbHNcIjtcbmltcG9ydCB7IEVycm9yUmVzcG9uc2U0MDNEdG8gfSBmcm9tIFwiLi4vbW9kZWwvbW9kZWxzXCI7XG5pbXBvcnQgeyBFcnJvclJlc3BvbnNlNDA0RHRvIH0gZnJvbSBcIi4uL21vZGVsL21vZGVsc1wiO1xuaW1wb3J0IHsgRXJyb3JSZXNwb25zZTQwNUR0byB9IGZyb20gXCIuLi9tb2RlbC9tb2RlbHNcIjtcbmltcG9ydCB7IEVycm9yUmVzcG9uc2U0MDZEdG8gfSBmcm9tIFwiLi4vbW9kZWwvbW9kZWxzXCI7XG5pbXBvcnQgeyBFcnJvclJlc3BvbnNlNDE1RHRvIH0gZnJvbSBcIi4uL21vZGVsL21vZGVsc1wiO1xuaW1wb3J0IHsgRXJyb3JSZXNwb25zZTUwMER0byB9IGZyb20gXCIuLi9tb2RlbC9tb2RlbHNcIjtcbmltcG9ydCB7IFBhZ2luYXRlZEJyYW5jaFBlcmlvZExpc3REdG8gfSBmcm9tIFwiLi4vbW9kZWwvbW9kZWxzXCI7XG5cbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi4vY29uZmlndXJhdGlvblwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJyYW5jaFBlcmlvZHNDcmVhdGVSZXF1ZXN0UGFyYW1zIHtcbiAgYnJhbmNoUGVyaW9kUmVxdWVzdER0bzogQnJhbmNoUGVyaW9kUmVxdWVzdER0bztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCcmFuY2hQZXJpb2RzRGVzdHJveVJlcXVlc3RQYXJhbXMge1xuICBpZDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJyYW5jaFBlcmlvZHNMaXN0UmVxdWVzdFBhcmFtcyB7XG4gIGJyYW5jaElzQWN0aXZlPzogYm9vbGVhbjtcbiAgaWQ/OiBudW1iZXI7XG4gIGlkSW4/OiBBcnJheTxudW1iZXI+O1xuICBsaW1pdD86IG51bWJlcjtcbiAgb2Zmc2V0PzogbnVtYmVyO1xuICBvcmRlcmluZz86IHN0cmluZztcbiAgcGVyaW9kT3ZlcmxhcD86IHN0cmluZztcbiAgc2VhcmNoPzogc3RyaW5nO1xuICB0eXBlPzogXCJob2xpZGF5XCIgfCBcIndvcmtkYXlcIjtcbiAgdHlwZUluPzogQXJyYXk8c3RyaW5nPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCcmFuY2hQZXJpb2RzUmV0cmlldmVSZXF1ZXN0UGFyYW1zIHtcbiAgaWQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCcmFuY2hQZXJpb2RzVXBkYXRlUmVxdWVzdFBhcmFtcyB7XG4gIGlkOiBudW1iZXI7XG4gIGJyYW5jaFBlcmlvZFJlcXVlc3REdG86IEJyYW5jaFBlcmlvZFJlcXVlc3REdG87XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnJhbmNoUGVyaW9kc0FwaVNlcnZpY2VJbnRlcmZhY2Uge1xuICBkZWZhdWx0SGVhZGVyczogSHR0cEhlYWRlcnM7XG4gIGNvbmZpZ3VyYXRpb246IENvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqXG4gICAqIEFwaSB2aWV3c2V0IGZvciBCcmFuY2hQZXJpb2QgbW9kZWwuXG4gICAqIEBwYXJhbSByZXF1ZXN0UGFyYW1ldGVyc1xuICAgKi9cbiAgYnJhbmNoUGVyaW9kc0NyZWF0ZShcbiAgICByZXF1ZXN0UGFyYW1ldGVyczogQnJhbmNoUGVyaW9kc0NyZWF0ZVJlcXVlc3RQYXJhbXMsXG4gICAgZXh0cmFIdHRwUmVxdWVzdFBhcmFtcz86IGFueSxcbiAgKTogT2JzZXJ2YWJsZTxCcmFuY2hQZXJpb2REdG8+O1xuXG4gIC8qKlxuICAgKlxuICAgKiBBcGkgdmlld3NldCBmb3IgQnJhbmNoUGVyaW9kIG1vZGVsLlxuICAgKiBAcGFyYW0gcmVxdWVzdFBhcmFtZXRlcnNcbiAgICovXG4gIGJyYW5jaFBlcmlvZHNEZXN0cm95KFxuICAgIHJlcXVlc3RQYXJhbWV0ZXJzOiBCcmFuY2hQZXJpb2RzRGVzdHJveVJlcXVlc3RQYXJhbXMsXG4gICAgZXh0cmFIdHRwUmVxdWVzdFBhcmFtcz86IGFueSxcbiAgKTogT2JzZXJ2YWJsZTx7fT47XG5cbiAgLyoqXG4gICAqXG4gICAqIEFwaSB2aWV3c2V0IGZvciBCcmFuY2hQZXJpb2QgbW9kZWwuXG4gICAqIEBwYXJhbSByZXF1ZXN0UGFyYW1ldGVyc1xuICAgKi9cbiAgYnJhbmNoUGVyaW9kc0xpc3QoXG4gICAgcmVxdWVzdFBhcmFtZXRlcnM6IEJyYW5jaFBlcmlvZHNMaXN0UmVxdWVzdFBhcmFtcyxcbiAgICBleHRyYUh0dHBSZXF1ZXN0UGFyYW1zPzogYW55LFxuICApOiBPYnNlcnZhYmxlPFBhZ2luYXRlZEJyYW5jaFBlcmlvZExpc3REdG8+O1xuXG4gIC8qKlxuICAgKlxuICAgKiBBcGkgdmlld3NldCBmb3IgQnJhbmNoUGVyaW9kIG1vZGVsLlxuICAgKiBAcGFyYW0gcmVxdWVzdFBhcmFtZXRlcnNcbiAgICovXG4gIGJyYW5jaFBlcmlvZHNSZXRyaWV2ZShcbiAgICByZXF1ZXN0UGFyYW1ldGVyczogQnJhbmNoUGVyaW9kc1JldHJpZXZlUmVxdWVzdFBhcmFtcyxcbiAgICBleHRyYUh0dHBSZXF1ZXN0UGFyYW1zPzogYW55LFxuICApOiBPYnNlcnZhYmxlPEJyYW5jaFBlcmlvZER0bz47XG5cbiAgLyoqXG4gICAqXG4gICAqIEFwaSB2aWV3c2V0IGZvciBCcmFuY2hQZXJpb2QgbW9kZWwuXG4gICAqIEBwYXJhbSByZXF1ZXN0UGFyYW1ldGVyc1xuICAgKi9cbiAgYnJhbmNoUGVyaW9kc1VwZGF0ZShcbiAgICByZXF1ZXN0UGFyYW1ldGVyczogQnJhbmNoUGVyaW9kc1VwZGF0ZVJlcXVlc3RQYXJhbXMsXG4gICAgZXh0cmFIdHRwUmVxdWVzdFBhcmFtcz86IGFueSxcbiAgKTogT2JzZXJ2YWJsZTxCcmFuY2hQZXJpb2REdG8+O1xufVxuIl19
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhbmNoLXBlcmlvZHMtYXBpLnNlcnZpY2VJbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hcGkvYnJhbmNoLXBlcmlvZHMtYXBpLnNlcnZpY2VJbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRGVsbWFyIEFwaVxuICpcbiAqXG4gKlxuICogTk9URTogVGhpcyBjbGFzcyBpcyBhdXRvIGdlbmVyYXRlZCBieSBPcGVuQVBJIEdlbmVyYXRvciAoaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoKS5cbiAqIGh0dHBzOi8vb3BlbmFwaS1nZW5lcmF0b3IudGVjaFxuICogRG8gbm90IGVkaXQgdGhlIGNsYXNzIG1hbnVhbGx5LlxuICovXG5pbXBvcnQgeyBIdHRwSGVhZGVycyB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcblxuaW1wb3J0IHsgQnJhbmNoUGVyaW9kRHRvIH0gZnJvbSBcIi4uL21vZGVsL21vZGVsc1wiO1xuaW1wb3J0IHsgQnJhbmNoUGVyaW9kUmVxdWVzdER0byB9IGZyb20gXCIuLi9tb2RlbC9tb2RlbHNcIjtcbmltcG9ydCB7IEJyYW5jaFBlcmlvZHNDcmVhdGVFcnJvclJlc3BvbnNlNDAwRHRvIH0gZnJvbSBcIi4uL21vZGVsL21vZGVsc1wiO1xuaW1wb3J0IHsgQnJhbmNoUGVyaW9kc0Rlc3Ryb3lFcnJvclJlc3BvbnNlNDAwRHRvIH0gZnJvbSBcIi4uL21vZGVsL21vZGVsc1wiO1xuaW1wb3J0IHsgQnJhbmNoUGVyaW9kc0xpc3RFcnJvclJlc3BvbnNlNDAwRHRvIH0gZnJvbSBcIi4uL21vZGVsL21vZGVsc1wiO1xuaW1wb3J0IHsgQnJhbmNoUGVyaW9kc1JldHJpZXZlRXJyb3JSZXNwb25zZTQwMER0byB9IGZyb20gXCIuLi9tb2RlbC9tb2RlbHNcIjtcbmltcG9ydCB7IEJyYW5jaFBlcmlvZHNVcGRhdGVFcnJvclJlc3BvbnNlNDAwRHRvIH0gZnJvbSBcIi4uL21vZGVsL21vZGVsc1wiO1xuaW1wb3J0IHsgRXJyb3JSZXNwb25zZTQwMUR0byB9IGZyb20gXCIuLi9tb2RlbC9tb2RlbHNcIjtcbmltcG9ydCB7IEVycm9yUmVzcG9uc2U0MDNEdG8gfSBmcm9tIFwiLi4vbW9kZWwvbW9kZWxzXCI7XG5pbXBvcnQgeyBFcnJvclJlc3BvbnNlNDA0RHRvIH0gZnJvbSBcIi4uL21vZGVsL21vZGVsc1wiO1xuaW1wb3J0IHsgRXJyb3JSZXNwb25zZTQwNUR0byB9IGZyb20gXCIuLi9tb2RlbC9tb2RlbHNcIjtcbmltcG9ydCB7IEVycm9yUmVzcG9uc2U0MDZEdG8gfSBmcm9tIFwiLi4vbW9kZWwvbW9kZWxzXCI7XG5pbXBvcnQgeyBFcnJvclJlc3BvbnNlNDE1RHRvIH0gZnJvbSBcIi4uL21vZGVsL21vZGVsc1wiO1xuaW1wb3J0IHsgRXJyb3JSZXNwb25zZTUwMER0byB9IGZyb20gXCIuLi9tb2RlbC9tb2RlbHNcIjtcbmltcG9ydCB7IFBhZ2luYXRlZEJyYW5jaFBlcmlvZExpc3REdG8gfSBmcm9tIFwiLi4vbW9kZWwvbW9kZWxzXCI7XG5cbmltcG9ydCB7IENvbmZpZ3VyYXRpb24gfSBmcm9tIFwiLi4vY29uZmlndXJhdGlvblwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEJyYW5jaFBlcmlvZHNDcmVhdGVSZXF1ZXN0UGFyYW1zIHtcbiAgYnJhbmNoUGVyaW9kUmVxdWVzdER0bzogQnJhbmNoUGVyaW9kUmVxdWVzdER0bztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCcmFuY2hQZXJpb2RzRGVzdHJveVJlcXVlc3RQYXJhbXMge1xuICBpZDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJyYW5jaFBlcmlvZHNMaXN0UmVxdWVzdFBhcmFtcyB7XG4gIGJyYW5jaElzQWN0aXZlPzogYm9vbGVhbjtcbiAgY3JlYXRlZERhdGVHdGU/OiBzdHJpbmc7XG4gIGNyZWF0ZWREYXRlTHRlPzogc3RyaW5nO1xuICBjcmVhdGVkR3RlPzogc3RyaW5nO1xuICBjcmVhdGVkTHRlPzogc3RyaW5nO1xuICBpZD86IG51bWJlcjtcbiAgaWRJbj86IEFycmF5PG51bWJlcj47XG4gIGxpbWl0PzogbnVtYmVyO1xuICBvZmZzZXQ/OiBudW1iZXI7XG4gIG9yZGVyaW5nPzogc3RyaW5nO1xuICBwZXJpb2RPdmVybGFwPzogc3RyaW5nO1xuICBzZWFyY2g/OiBzdHJpbmc7XG4gIHR5cGU/OiBcImhvbGlkYXlcIiB8IFwid29ya2RheVwiO1xuICB0eXBlSW4/OiBBcnJheTxzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJyYW5jaFBlcmlvZHNSZXRyaWV2ZVJlcXVlc3RQYXJhbXMge1xuICBpZDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJyYW5jaFBlcmlvZHNVcGRhdGVSZXF1ZXN0UGFyYW1zIHtcbiAgaWQ6IG51bWJlcjtcbiAgYnJhbmNoUGVyaW9kUmVxdWVzdER0bzogQnJhbmNoUGVyaW9kUmVxdWVzdER0bztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCcmFuY2hQZXJpb2RzQXBpU2VydmljZUludGVyZmFjZSB7XG4gIGRlZmF1bHRIZWFkZXJzOiBIdHRwSGVhZGVycztcbiAgY29uZmlndXJhdGlvbjogQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICpcbiAgICogQXBpIHZpZXdzZXQgZm9yIEJyYW5jaFBlcmlvZCBtb2RlbC5cbiAgICogQHBhcmFtIHJlcXVlc3RQYXJhbWV0ZXJzXG4gICAqL1xuICBicmFuY2hQZXJpb2RzQ3JlYXRlKFxuICAgIHJlcXVlc3RQYXJhbWV0ZXJzOiBCcmFuY2hQZXJpb2RzQ3JlYXRlUmVxdWVzdFBhcmFtcyxcbiAgICBleHRyYUh0dHBSZXF1ZXN0UGFyYW1zPzogYW55LFxuICApOiBPYnNlcnZhYmxlPEJyYW5jaFBlcmlvZER0bz47XG5cbiAgLyoqXG4gICAqXG4gICAqIEFwaSB2aWV3c2V0IGZvciBCcmFuY2hQZXJpb2QgbW9kZWwuXG4gICAqIEBwYXJhbSByZXF1ZXN0UGFyYW1ldGVyc1xuICAgKi9cbiAgYnJhbmNoUGVyaW9kc0Rlc3Ryb3koXG4gICAgcmVxdWVzdFBhcmFtZXRlcnM6IEJyYW5jaFBlcmlvZHNEZXN0cm95UmVxdWVzdFBhcmFtcyxcbiAgICBleHRyYUh0dHBSZXF1ZXN0UGFyYW1zPzogYW55LFxuICApOiBPYnNlcnZhYmxlPHt9PjtcblxuICAvKipcbiAgICpcbiAgICogQXBpIHZpZXdzZXQgZm9yIEJyYW5jaFBlcmlvZCBtb2RlbC5cbiAgICogQHBhcmFtIHJlcXVlc3RQYXJhbWV0ZXJzXG4gICAqL1xuICBicmFuY2hQZXJpb2RzTGlzdChcbiAgICByZXF1ZXN0UGFyYW1ldGVyczogQnJhbmNoUGVyaW9kc0xpc3RSZXF1ZXN0UGFyYW1zLFxuICAgIGV4dHJhSHR0cFJlcXVlc3RQYXJhbXM/OiBhbnksXG4gICk6IE9ic2VydmFibGU8UGFnaW5hdGVkQnJhbmNoUGVyaW9kTGlzdER0bz47XG5cbiAgLyoqXG4gICAqXG4gICAqIEFwaSB2aWV3c2V0IGZvciBCcmFuY2hQZXJpb2QgbW9kZWwuXG4gICAqIEBwYXJhbSByZXF1ZXN0UGFyYW1ldGVyc1xuICAgKi9cbiAgYnJhbmNoUGVyaW9kc1JldHJpZXZlKFxuICAgIHJlcXVlc3RQYXJhbWV0ZXJzOiBCcmFuY2hQZXJpb2RzUmV0cmlldmVSZXF1ZXN0UGFyYW1zLFxuICAgIGV4dHJhSHR0cFJlcXVlc3RQYXJhbXM/OiBhbnksXG4gICk6IE9ic2VydmFibGU8QnJhbmNoUGVyaW9kRHRvPjtcblxuICAvKipcbiAgICpcbiAgICogQXBpIHZpZXdzZXQgZm9yIEJyYW5jaFBlcmlvZCBtb2RlbC5cbiAgICogQHBhcmFtIHJlcXVlc3RQYXJhbWV0ZXJzXG4gICAqL1xuICBicmFuY2hQZXJpb2RzVXBkYXRlKFxuICAgIHJlcXVlc3RQYXJhbWV0ZXJzOiBCcmFuY2hQZXJpb2RzVXBkYXRlUmVxdWVzdFBhcmFtcyxcbiAgICBleHRyYUh0dHBSZXF1ZXN0UGFyYW1zPzogYW55LFxuICApOiBPYnNlcnZhYmxlPEJyYW5jaFBlcmlvZER0bz47XG59XG4iXX0=