@wavemaker/app-ng-runtime 11.10.0-next.25079 → 11.10.0-next.27705

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 (829) hide show
  1. package/components/advanced/custom/bundles/index.umd.js +1 -0
  2. package/components/advanced/custom/custom-widget-container/custom-widget-container.directive.d.ts +1 -0
  3. package/components/advanced/custom/esm2022/custom-widget-container/custom-widget-container.directive.mjs +2 -1
  4. package/components/advanced/custom/fesm2022/index.mjs +1 -0
  5. package/components/advanced/custom/fesm2022/index.mjs.map +1 -1
  6. package/components/base/bundles/index.umd.js +2 -2
  7. package/components/base/esm2022/widgets/framework/property-change-handler.mjs +3 -3
  8. package/components/base/fesm2022/index.mjs +2 -2
  9. package/components/base/fesm2022/index.mjs.map +1 -1
  10. package/components/containers/tabs/bundles/index.umd.js +1 -1
  11. package/components/containers/wizard/bundles/index.umd.js +14 -112
  12. package/components/containers/wizard/esm2022/wizard-step/wizard-step.directive.mjs +3 -4
  13. package/components/containers/wizard/esm2022/wizard.component.mjs +13 -110
  14. package/components/containers/wizard/fesm2022/index.mjs +14 -112
  15. package/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  16. package/components/containers/wizard/wizard.component.d.ts +0 -1
  17. package/components/data/list/bundles/index.umd.js +2 -2
  18. package/components/data/list/esm2022/list.component.mjs +3 -3
  19. package/components/data/list/fesm2022/index.mjs +2 -2
  20. package/components/data/list/fesm2022/index.mjs.map +1 -1
  21. package/components/dialogs/default/bundles/index.umd.js +2 -2
  22. package/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +3 -3
  23. package/components/dialogs/default/fesm2022/index.mjs +2 -2
  24. package/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  25. package/components/input/default/bundles/index.umd.js +7 -7
  26. package/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +2 -2
  27. package/components/input/default/esm2022/dataset-aware-form.component.mjs +2 -2
  28. package/components/input/default/esm2022/radioset/radioset.component.mjs +2 -2
  29. package/components/input/default/esm2022/switch/switch.component.mjs +4 -4
  30. package/components/input/default/esm2022/switch/switch.props.mjs +2 -2
  31. package/components/input/default/fesm2022/index.mjs +7 -7
  32. package/components/input/default/fesm2022/index.mjs.map +1 -1
  33. package/locales/angular/global/af-na.js +24 -0
  34. package/locales/angular/global/af.js +24 -0
  35. package/locales/angular/global/agq.js +22 -0
  36. package/locales/angular/global/ak.js +24 -0
  37. package/locales/angular/global/am.js +24 -0
  38. package/locales/angular/global/ar-ae.js +32 -0
  39. package/locales/angular/global/ar-bh.js +32 -0
  40. package/locales/angular/global/ar-dj.js +32 -0
  41. package/locales/angular/global/ar-dz.js +32 -0
  42. package/locales/angular/global/ar-eg.js +32 -0
  43. package/locales/angular/global/ar-eh.js +32 -0
  44. package/locales/angular/global/ar-er.js +32 -0
  45. package/locales/angular/global/ar-il.js +32 -0
  46. package/locales/angular/global/ar-iq.js +32 -0
  47. package/locales/angular/global/ar-jo.js +32 -0
  48. package/locales/angular/global/ar-km.js +32 -0
  49. package/locales/angular/global/ar-kw.js +32 -0
  50. package/locales/angular/global/ar-lb.js +32 -0
  51. package/locales/angular/global/ar-ly.js +32 -0
  52. package/locales/angular/global/ar-ma.js +32 -0
  53. package/locales/angular/global/ar-mr.js +32 -0
  54. package/locales/angular/global/ar-om.js +32 -0
  55. package/locales/angular/global/ar-ps.js +32 -0
  56. package/locales/angular/global/ar-qa.js +32 -0
  57. package/locales/angular/global/ar-sa.js +32 -0
  58. package/locales/angular/global/ar-sd.js +32 -0
  59. package/locales/angular/global/ar-so.js +32 -0
  60. package/locales/angular/global/ar-ss.js +32 -0
  61. package/locales/angular/global/ar-sy.js +32 -0
  62. package/locales/angular/global/ar-td.js +32 -0
  63. package/locales/angular/global/ar-tn.js +32 -0
  64. package/locales/angular/global/ar-ye.js +32 -0
  65. package/locales/angular/global/ar.js +32 -0
  66. package/locales/angular/global/as.js +24 -0
  67. package/locales/angular/global/asa.js +24 -0
  68. package/locales/angular/global/ast.js +24 -0
  69. package/locales/angular/global/az-cyrl.js +22 -0
  70. package/locales/angular/global/az-latn.js +24 -0
  71. package/locales/angular/global/az.js +24 -0
  72. package/locales/angular/global/bas.js +22 -0
  73. package/locales/angular/global/be-tarask.js +28 -0
  74. package/locales/angular/global/be.js +28 -0
  75. package/locales/angular/global/bem.js +24 -0
  76. package/locales/angular/global/bez.js +24 -0
  77. package/locales/angular/global/bg.js +24 -0
  78. package/locales/angular/global/bm.js +22 -0
  79. package/locales/angular/global/bn-in.js +24 -0
  80. package/locales/angular/global/bn.js +24 -0
  81. package/locales/angular/global/bo-in.js +22 -0
  82. package/locales/angular/global/bo.js +22 -0
  83. package/locales/angular/global/br.js +30 -0
  84. package/locales/angular/global/brx.js +24 -0
  85. package/locales/angular/global/bs-cyrl.js +22 -0
  86. package/locales/angular/global/bs-latn.js +26 -0
  87. package/locales/angular/global/bs.js +26 -0
  88. package/locales/angular/global/ca-ad.js +24 -0
  89. package/locales/angular/global/ca-es-valencia.js +24 -0
  90. package/locales/angular/global/ca-fr.js +24 -0
  91. package/locales/angular/global/ca-it.js +24 -0
  92. package/locales/angular/global/ca.js +24 -0
  93. package/locales/angular/global/ccp-in.js +22 -0
  94. package/locales/angular/global/ccp.js +22 -0
  95. package/locales/angular/global/ce.js +24 -0
  96. package/locales/angular/global/ceb.js +24 -0
  97. package/locales/angular/global/cgg.js +24 -0
  98. package/locales/angular/global/chr.js +24 -0
  99. package/locales/angular/global/ckb-ir.js +24 -0
  100. package/locales/angular/global/ckb.js +24 -0
  101. package/locales/angular/global/cs.js +28 -0
  102. package/locales/angular/global/cy.js +32 -0
  103. package/locales/angular/global/da-gl.js +24 -0
  104. package/locales/angular/global/da.js +24 -0
  105. package/locales/angular/global/dav.js +22 -0
  106. package/locales/angular/global/de-at.js +24 -0
  107. package/locales/angular/global/de-be.js +24 -0
  108. package/locales/angular/global/de-ch.js +24 -0
  109. package/locales/angular/global/de-it.js +24 -0
  110. package/locales/angular/global/de-li.js +24 -0
  111. package/locales/angular/global/de-lu.js +24 -0
  112. package/locales/angular/global/de.js +24 -0
  113. package/locales/angular/global/dje.js +22 -0
  114. package/locales/angular/global/doi.js +24 -0
  115. package/locales/angular/global/dsb.js +28 -0
  116. package/locales/angular/global/dua.js +22 -0
  117. package/locales/angular/global/dyo.js +22 -0
  118. package/locales/angular/global/dz.js +22 -0
  119. package/locales/angular/global/ebu.js +22 -0
  120. package/locales/angular/global/ee-tg.js +24 -0
  121. package/locales/angular/global/ee.js +24 -0
  122. package/locales/angular/global/el-cy.js +24 -0
  123. package/locales/angular/global/el.js +24 -0
  124. package/locales/angular/global/en-001.js +24 -0
  125. package/locales/angular/global/en-150.js +24 -0
  126. package/locales/angular/global/en-ae.js +24 -0
  127. package/locales/angular/global/en-ag.js +24 -0
  128. package/locales/angular/global/en-ai.js +24 -0
  129. package/locales/angular/global/en-as.js +24 -0
  130. package/locales/angular/global/en-at.js +24 -0
  131. package/locales/angular/global/en-au.js +24 -0
  132. package/locales/angular/global/en-bb.js +24 -0
  133. package/locales/angular/global/en-be.js +24 -0
  134. package/locales/angular/global/en-bi.js +24 -0
  135. package/locales/angular/global/en-bm.js +24 -0
  136. package/locales/angular/global/en-bs.js +24 -0
  137. package/locales/angular/global/en-bw.js +24 -0
  138. package/locales/angular/global/en-bz.js +24 -0
  139. package/locales/angular/global/en-ca.js +24 -0
  140. package/locales/angular/global/en-cc.js +24 -0
  141. package/locales/angular/global/en-ch.js +24 -0
  142. package/locales/angular/global/en-ck.js +24 -0
  143. package/locales/angular/global/en-cm.js +24 -0
  144. package/locales/angular/global/en-cx.js +24 -0
  145. package/locales/angular/global/en-cy.js +24 -0
  146. package/locales/angular/global/en-de.js +24 -0
  147. package/locales/angular/global/en-dg.js +24 -0
  148. package/locales/angular/global/en-dk.js +24 -0
  149. package/locales/angular/global/en-dm.js +24 -0
  150. package/locales/angular/global/en-er.js +24 -0
  151. package/locales/angular/global/en-fi.js +24 -0
  152. package/locales/angular/global/en-fj.js +24 -0
  153. package/locales/angular/global/en-fk.js +24 -0
  154. package/locales/angular/global/en-fm.js +24 -0
  155. package/locales/angular/global/en-gb.js +24 -0
  156. package/locales/angular/global/en-gd.js +24 -0
  157. package/locales/angular/global/en-gg.js +24 -0
  158. package/locales/angular/global/en-gh.js +24 -0
  159. package/locales/angular/global/en-gi.js +24 -0
  160. package/locales/angular/global/en-gm.js +24 -0
  161. package/locales/angular/global/en-gu.js +24 -0
  162. package/locales/angular/global/en-gy.js +24 -0
  163. package/locales/angular/global/en-hk.js +24 -0
  164. package/locales/angular/global/en-ie.js +24 -0
  165. package/locales/angular/global/en-il.js +24 -0
  166. package/locales/angular/global/en-im.js +24 -0
  167. package/locales/angular/global/en-in.js +24 -0
  168. package/locales/angular/global/en-io.js +24 -0
  169. package/locales/angular/global/en-je.js +24 -0
  170. package/locales/angular/global/en-jm.js +24 -0
  171. package/locales/angular/global/en-ke.js +24 -0
  172. package/locales/angular/global/en-ki.js +24 -0
  173. package/locales/angular/global/en-kn.js +24 -0
  174. package/locales/angular/global/en-ky.js +24 -0
  175. package/locales/angular/global/en-lc.js +24 -0
  176. package/locales/angular/global/en-lr.js +24 -0
  177. package/locales/angular/global/en-ls.js +24 -0
  178. package/locales/angular/global/en-mg.js +24 -0
  179. package/locales/angular/global/en-mh.js +24 -0
  180. package/locales/angular/global/en-mo.js +24 -0
  181. package/locales/angular/global/en-mp.js +24 -0
  182. package/locales/angular/global/en-ms.js +24 -0
  183. package/locales/angular/global/en-mt.js +24 -0
  184. package/locales/angular/global/en-mu.js +24 -0
  185. package/locales/angular/global/en-mv.js +24 -0
  186. package/locales/angular/global/en-mw.js +24 -0
  187. package/locales/angular/global/en-my.js +24 -0
  188. package/locales/angular/global/en-na.js +24 -0
  189. package/locales/angular/global/en-nf.js +24 -0
  190. package/locales/angular/global/en-ng.js +24 -0
  191. package/locales/angular/global/en-nl.js +24 -0
  192. package/locales/angular/global/en-nr.js +24 -0
  193. package/locales/angular/global/en-nu.js +24 -0
  194. package/locales/angular/global/en-nz.js +24 -0
  195. package/locales/angular/global/en-pg.js +24 -0
  196. package/locales/angular/global/en-ph.js +24 -0
  197. package/locales/angular/global/en-pk.js +24 -0
  198. package/locales/angular/global/en-pn.js +24 -0
  199. package/locales/angular/global/en-pr.js +24 -0
  200. package/locales/angular/global/en-pw.js +24 -0
  201. package/locales/angular/global/en-rw.js +24 -0
  202. package/locales/angular/global/en-sb.js +24 -0
  203. package/locales/angular/global/en-sc.js +24 -0
  204. package/locales/angular/global/en-sd.js +24 -0
  205. package/locales/angular/global/en-se.js +24 -0
  206. package/locales/angular/global/en-sg.js +24 -0
  207. package/locales/angular/global/en-sh.js +24 -0
  208. package/locales/angular/global/en-si.js +24 -0
  209. package/locales/angular/global/en-sl.js +24 -0
  210. package/locales/angular/global/en-ss.js +24 -0
  211. package/locales/angular/global/en-sx.js +24 -0
  212. package/locales/angular/global/en-sz.js +24 -0
  213. package/locales/angular/global/en-tc.js +24 -0
  214. package/locales/angular/global/en-tk.js +24 -0
  215. package/locales/angular/global/en-to.js +24 -0
  216. package/locales/angular/global/en-tt.js +24 -0
  217. package/locales/angular/global/en-tv.js +24 -0
  218. package/locales/angular/global/en-tz.js +24 -0
  219. package/locales/angular/global/en-ug.js +24 -0
  220. package/locales/angular/global/en-um.js +24 -0
  221. package/locales/angular/global/en-vc.js +24 -0
  222. package/locales/angular/global/en-vg.js +24 -0
  223. package/locales/angular/global/en-vi.js +24 -0
  224. package/locales/angular/global/en-vu.js +24 -0
  225. package/locales/angular/global/en-ws.js +24 -0
  226. package/locales/angular/global/en-za.js +24 -0
  227. package/locales/angular/global/en-zm.js +24 -0
  228. package/locales/angular/global/en-zw.js +24 -0
  229. package/locales/angular/global/en.js +24 -0
  230. package/locales/angular/global/eo.js +24 -0
  231. package/locales/angular/global/es-419.js +26 -0
  232. package/locales/angular/global/es-ar.js +26 -0
  233. package/locales/angular/global/es-bo.js +26 -0
  234. package/locales/angular/global/es-br.js +26 -0
  235. package/locales/angular/global/es-bz.js +26 -0
  236. package/locales/angular/global/es-cl.js +26 -0
  237. package/locales/angular/global/es-co.js +26 -0
  238. package/locales/angular/global/es-cr.js +26 -0
  239. package/locales/angular/global/es-cu.js +26 -0
  240. package/locales/angular/global/es-do.js +26 -0
  241. package/locales/angular/global/es-ea.js +26 -0
  242. package/locales/angular/global/es-ec.js +26 -0
  243. package/locales/angular/global/es-gq.js +26 -0
  244. package/locales/angular/global/es-gt.js +26 -0
  245. package/locales/angular/global/es-hn.js +26 -0
  246. package/locales/angular/global/es-ic.js +26 -0
  247. package/locales/angular/global/es-mx.js +26 -0
  248. package/locales/angular/global/es-ni.js +26 -0
  249. package/locales/angular/global/es-pa.js +26 -0
  250. package/locales/angular/global/es-pe.js +26 -0
  251. package/locales/angular/global/es-ph.js +26 -0
  252. package/locales/angular/global/es-pr.js +26 -0
  253. package/locales/angular/global/es-py.js +26 -0
  254. package/locales/angular/global/es-sv.js +26 -0
  255. package/locales/angular/global/es-us.js +26 -0
  256. package/locales/angular/global/es-uy.js +26 -0
  257. package/locales/angular/global/es-ve.js +26 -0
  258. package/locales/angular/global/es.js +26 -0
  259. package/locales/angular/global/et.js +24 -0
  260. package/locales/angular/global/eu.js +24 -0
  261. package/locales/angular/global/ewo.js +22 -0
  262. package/locales/angular/global/fa-af.js +24 -0
  263. package/locales/angular/global/fa.js +24 -0
  264. package/locales/angular/global/ff-adlm-bf.js +22 -0
  265. package/locales/angular/global/ff-adlm-cm.js +22 -0
  266. package/locales/angular/global/ff-adlm-gh.js +22 -0
  267. package/locales/angular/global/ff-adlm-gm.js +22 -0
  268. package/locales/angular/global/ff-adlm-gw.js +22 -0
  269. package/locales/angular/global/ff-adlm-lr.js +22 -0
  270. package/locales/angular/global/ff-adlm-mr.js +22 -0
  271. package/locales/angular/global/ff-adlm-ne.js +22 -0
  272. package/locales/angular/global/ff-adlm-ng.js +22 -0
  273. package/locales/angular/global/ff-adlm-sl.js +22 -0
  274. package/locales/angular/global/ff-adlm-sn.js +22 -0
  275. package/locales/angular/global/ff-adlm.js +22 -0
  276. package/locales/angular/global/ff-cm.js +74 -0
  277. package/locales/angular/global/ff-gn.js +74 -0
  278. package/locales/angular/global/ff-latn-bf.js +24 -0
  279. package/locales/angular/global/ff-latn-cm.js +24 -0
  280. package/locales/angular/global/ff-latn-gh.js +24 -0
  281. package/locales/angular/global/ff-latn-gm.js +24 -0
  282. package/locales/angular/global/ff-latn-gn.js +24 -0
  283. package/locales/angular/global/ff-latn-gw.js +24 -0
  284. package/locales/angular/global/ff-latn-lr.js +24 -0
  285. package/locales/angular/global/ff-latn-mr.js +24 -0
  286. package/locales/angular/global/ff-latn-ne.js +24 -0
  287. package/locales/angular/global/ff-latn-ng.js +24 -0
  288. package/locales/angular/global/ff-latn-sl.js +24 -0
  289. package/locales/angular/global/ff-latn.js +24 -0
  290. package/locales/angular/global/ff-mr.js +74 -0
  291. package/locales/angular/global/ff.js +24 -0
  292. package/locales/angular/global/fi.js +24 -0
  293. package/locales/angular/global/fil.js +24 -0
  294. package/locales/angular/global/fo-dk.js +24 -0
  295. package/locales/angular/global/fo.js +24 -0
  296. package/locales/angular/global/fr-be.js +26 -0
  297. package/locales/angular/global/fr-bf.js +26 -0
  298. package/locales/angular/global/fr-bi.js +26 -0
  299. package/locales/angular/global/fr-bj.js +26 -0
  300. package/locales/angular/global/fr-bl.js +26 -0
  301. package/locales/angular/global/fr-ca.js +26 -0
  302. package/locales/angular/global/fr-cd.js +26 -0
  303. package/locales/angular/global/fr-cf.js +26 -0
  304. package/locales/angular/global/fr-cg.js +26 -0
  305. package/locales/angular/global/fr-ch.js +26 -0
  306. package/locales/angular/global/fr-ci.js +26 -0
  307. package/locales/angular/global/fr-cm.js +26 -0
  308. package/locales/angular/global/fr-dj.js +26 -0
  309. package/locales/angular/global/fr-dz.js +26 -0
  310. package/locales/angular/global/fr-ga.js +26 -0
  311. package/locales/angular/global/fr-gf.js +26 -0
  312. package/locales/angular/global/fr-gn.js +26 -0
  313. package/locales/angular/global/fr-gp.js +26 -0
  314. package/locales/angular/global/fr-gq.js +26 -0
  315. package/locales/angular/global/fr-ht.js +26 -0
  316. package/locales/angular/global/fr-km.js +26 -0
  317. package/locales/angular/global/fr-lu.js +26 -0
  318. package/locales/angular/global/fr-ma.js +26 -0
  319. package/locales/angular/global/fr-mc.js +26 -0
  320. package/locales/angular/global/fr-mf.js +26 -0
  321. package/locales/angular/global/fr-mg.js +26 -0
  322. package/locales/angular/global/fr-ml.js +26 -0
  323. package/locales/angular/global/fr-mq.js +26 -0
  324. package/locales/angular/global/fr-mr.js +26 -0
  325. package/locales/angular/global/fr-mu.js +26 -0
  326. package/locales/angular/global/fr-nc.js +26 -0
  327. package/locales/angular/global/fr-ne.js +26 -0
  328. package/locales/angular/global/fr-pf.js +26 -0
  329. package/locales/angular/global/fr-pm.js +26 -0
  330. package/locales/angular/global/fr-re.js +26 -0
  331. package/locales/angular/global/fr-rw.js +26 -0
  332. package/locales/angular/global/fr-sc.js +26 -0
  333. package/locales/angular/global/fr-sn.js +26 -0
  334. package/locales/angular/global/fr-sy.js +26 -0
  335. package/locales/angular/global/fr-td.js +26 -0
  336. package/locales/angular/global/fr-tg.js +26 -0
  337. package/locales/angular/global/fr-tn.js +26 -0
  338. package/locales/angular/global/fr-vu.js +26 -0
  339. package/locales/angular/global/fr-wf.js +26 -0
  340. package/locales/angular/global/fr-yt.js +26 -0
  341. package/locales/angular/global/fr.js +26 -0
  342. package/locales/angular/global/fur.js +24 -0
  343. package/locales/angular/global/fy.js +24 -0
  344. package/locales/angular/global/ga-gb.js +30 -0
  345. package/locales/angular/global/ga.js +30 -0
  346. package/locales/angular/global/gd.js +28 -0
  347. package/locales/angular/global/gl.js +24 -0
  348. package/locales/angular/global/gsw-fr.js +24 -0
  349. package/locales/angular/global/gsw-li.js +24 -0
  350. package/locales/angular/global/gsw.js +24 -0
  351. package/locales/angular/global/gu.js +24 -0
  352. package/locales/angular/global/guz.js +22 -0
  353. package/locales/angular/global/gv.js +30 -0
  354. package/locales/angular/global/ha-gh.js +24 -0
  355. package/locales/angular/global/ha-ne.js +24 -0
  356. package/locales/angular/global/ha.js +24 -0
  357. package/locales/angular/global/haw.js +24 -0
  358. package/locales/angular/global/he.js +28 -0
  359. package/locales/angular/global/hi-latn.js +24 -0
  360. package/locales/angular/global/hi.js +24 -0
  361. package/locales/angular/global/hr-ba.js +26 -0
  362. package/locales/angular/global/hr.js +26 -0
  363. package/locales/angular/global/hsb.js +28 -0
  364. package/locales/angular/global/hu.js +24 -0
  365. package/locales/angular/global/hy.js +24 -0
  366. package/locales/angular/global/ia.js +24 -0
  367. package/locales/angular/global/id.js +22 -0
  368. package/locales/angular/global/ig.js +22 -0
  369. package/locales/angular/global/ii.js +22 -0
  370. package/locales/angular/global/is.js +24 -0
  371. package/locales/angular/global/it-ch.js +26 -0
  372. package/locales/angular/global/it-sm.js +26 -0
  373. package/locales/angular/global/it-va.js +26 -0
  374. package/locales/angular/global/it.js +26 -0
  375. package/locales/angular/global/ja.js +22 -0
  376. package/locales/angular/global/jgo.js +24 -0
  377. package/locales/angular/global/jmc.js +24 -0
  378. package/locales/angular/global/jv.js +22 -0
  379. package/locales/angular/global/ka.js +24 -0
  380. package/locales/angular/global/kab.js +24 -0
  381. package/locales/angular/global/kam.js +22 -0
  382. package/locales/angular/global/kde.js +22 -0
  383. package/locales/angular/global/kea.js +22 -0
  384. package/locales/angular/global/kgp.js +22 -0
  385. package/locales/angular/global/khq.js +22 -0
  386. package/locales/angular/global/ki.js +22 -0
  387. package/locales/angular/global/kk.js +24 -0
  388. package/locales/angular/global/kkj.js +24 -0
  389. package/locales/angular/global/kl.js +24 -0
  390. package/locales/angular/global/kln.js +22 -0
  391. package/locales/angular/global/km.js +22 -0
  392. package/locales/angular/global/kn.js +24 -0
  393. package/locales/angular/global/ko-kp.js +22 -0
  394. package/locales/angular/global/ko.js +22 -0
  395. package/locales/angular/global/kok.js +22 -0
  396. package/locales/angular/global/ks-arab.js +24 -0
  397. package/locales/angular/global/ks-deva.js +22 -0
  398. package/locales/angular/global/ks.js +24 -0
  399. package/locales/angular/global/ksb.js +24 -0
  400. package/locales/angular/global/ksf.js +22 -0
  401. package/locales/angular/global/ksh.js +26 -0
  402. package/locales/angular/global/ku.js +24 -0
  403. package/locales/angular/global/kw.js +32 -0
  404. package/locales/angular/global/ky.js +24 -0
  405. package/locales/angular/global/lag.js +26 -0
  406. package/locales/angular/global/lb.js +24 -0
  407. package/locales/angular/global/lg.js +24 -0
  408. package/locales/angular/global/lkt.js +22 -0
  409. package/locales/angular/global/ln-ao.js +24 -0
  410. package/locales/angular/global/ln-cf.js +24 -0
  411. package/locales/angular/global/ln-cg.js +24 -0
  412. package/locales/angular/global/ln.js +24 -0
  413. package/locales/angular/global/lo.js +22 -0
  414. package/locales/angular/global/lrc-iq.js +22 -0
  415. package/locales/angular/global/lrc.js +22 -0
  416. package/locales/angular/global/lt.js +28 -0
  417. package/locales/angular/global/lu.js +22 -0
  418. package/locales/angular/global/luo.js +22 -0
  419. package/locales/angular/global/luy.js +22 -0
  420. package/locales/angular/global/lv.js +26 -0
  421. package/locales/angular/global/mai.js +22 -0
  422. package/locales/angular/global/mas-tz.js +24 -0
  423. package/locales/angular/global/mas.js +24 -0
  424. package/locales/angular/global/mer.js +22 -0
  425. package/locales/angular/global/mfe.js +22 -0
  426. package/locales/angular/global/mg.js +24 -0
  427. package/locales/angular/global/mgh.js +22 -0
  428. package/locales/angular/global/mgo.js +24 -0
  429. package/locales/angular/global/mi.js +22 -0
  430. package/locales/angular/global/mk.js +24 -0
  431. package/locales/angular/global/ml.js +24 -0
  432. package/locales/angular/global/mn.js +24 -0
  433. package/locales/angular/global/mni-beng.js +22 -0
  434. package/locales/angular/global/mni.js +22 -0
  435. package/locales/angular/global/mr.js +24 -0
  436. package/locales/angular/global/ms-bn.js +22 -0
  437. package/locales/angular/global/ms-id.js +22 -0
  438. package/locales/angular/global/ms-sg.js +22 -0
  439. package/locales/angular/global/ms.js +22 -0
  440. package/locales/angular/global/mt.js +28 -0
  441. package/locales/angular/global/mua.js +22 -0
  442. package/locales/angular/global/my.js +22 -0
  443. package/locales/angular/global/mzn.js +22 -0
  444. package/locales/angular/global/naq.js +26 -0
  445. package/locales/angular/global/nb-sj.js +24 -0
  446. package/locales/angular/global/nb.js +24 -0
  447. package/locales/angular/global/nd.js +24 -0
  448. package/locales/angular/global/nds-nl.js +22 -0
  449. package/locales/angular/global/nds.js +22 -0
  450. package/locales/angular/global/ne-in.js +24 -0
  451. package/locales/angular/global/ne.js +24 -0
  452. package/locales/angular/global/nl-aw.js +24 -0
  453. package/locales/angular/global/nl-be.js +24 -0
  454. package/locales/angular/global/nl-bq.js +24 -0
  455. package/locales/angular/global/nl-cw.js +24 -0
  456. package/locales/angular/global/nl-sr.js +24 -0
  457. package/locales/angular/global/nl-sx.js +24 -0
  458. package/locales/angular/global/nl.js +24 -0
  459. package/locales/angular/global/nmg.js +22 -0
  460. package/locales/angular/global/nn.js +24 -0
  461. package/locales/angular/global/nnh.js +24 -0
  462. package/locales/angular/global/no.js +24 -0
  463. package/locales/angular/global/nus.js +22 -0
  464. package/locales/angular/global/nyn.js +24 -0
  465. package/locales/angular/global/om-ke.js +24 -0
  466. package/locales/angular/global/om.js +24 -0
  467. package/locales/angular/global/or.js +24 -0
  468. package/locales/angular/global/os-ru.js +24 -0
  469. package/locales/angular/global/os.js +24 -0
  470. package/locales/angular/global/pa-arab.js +22 -0
  471. package/locales/angular/global/pa-guru.js +24 -0
  472. package/locales/angular/global/pa.js +24 -0
  473. package/locales/angular/global/pcm.js +24 -0
  474. package/locales/angular/global/pl.js +28 -0
  475. package/locales/angular/global/ps-pk.js +24 -0
  476. package/locales/angular/global/ps.js +24 -0
  477. package/locales/angular/global/pt-ao.js +26 -0
  478. package/locales/angular/global/pt-ch.js +26 -0
  479. package/locales/angular/global/pt-cv.js +26 -0
  480. package/locales/angular/global/pt-gq.js +26 -0
  481. package/locales/angular/global/pt-gw.js +26 -0
  482. package/locales/angular/global/pt-lu.js +26 -0
  483. package/locales/angular/global/pt-mo.js +26 -0
  484. package/locales/angular/global/pt-mz.js +26 -0
  485. package/locales/angular/global/pt-pt.js +26 -0
  486. package/locales/angular/global/pt-st.js +26 -0
  487. package/locales/angular/global/pt-tl.js +26 -0
  488. package/locales/angular/global/pt.js +26 -0
  489. package/locales/angular/global/qu-bo.js +22 -0
  490. package/locales/angular/global/qu-ec.js +22 -0
  491. package/locales/angular/global/qu.js +22 -0
  492. package/locales/angular/global/rm.js +24 -0
  493. package/locales/angular/global/rn.js +22 -0
  494. package/locales/angular/global/ro-md.js +26 -0
  495. package/locales/angular/global/ro.js +26 -0
  496. package/locales/angular/global/rof.js +24 -0
  497. package/locales/angular/global/ru-by.js +28 -0
  498. package/locales/angular/global/ru-kg.js +28 -0
  499. package/locales/angular/global/ru-kz.js +28 -0
  500. package/locales/angular/global/ru-md.js +28 -0
  501. package/locales/angular/global/ru-ua.js +28 -0
  502. package/locales/angular/global/ru.js +28 -0
  503. package/locales/angular/global/rw.js +22 -0
  504. package/locales/angular/global/rwk.js +24 -0
  505. package/locales/angular/global/sa.js +22 -0
  506. package/locales/angular/global/sah.js +22 -0
  507. package/locales/angular/global/saq.js +24 -0
  508. package/locales/angular/global/sat-olck.js +26 -0
  509. package/locales/angular/global/sat.js +26 -0
  510. package/locales/angular/global/sbp.js +22 -0
  511. package/locales/angular/global/sc.js +24 -0
  512. package/locales/angular/global/sd-arab.js +24 -0
  513. package/locales/angular/global/sd-deva.js +22 -0
  514. package/locales/angular/global/sd.js +24 -0
  515. package/locales/angular/global/se-fi.js +26 -0
  516. package/locales/angular/global/se-se.js +26 -0
  517. package/locales/angular/global/se.js +26 -0
  518. package/locales/angular/global/seh.js +24 -0
  519. package/locales/angular/global/ses.js +22 -0
  520. package/locales/angular/global/sg.js +22 -0
  521. package/locales/angular/global/shi-latn.js +22 -0
  522. package/locales/angular/global/shi-tfng.js +26 -0
  523. package/locales/angular/global/shi.js +26 -0
  524. package/locales/angular/global/si.js +24 -0
  525. package/locales/angular/global/sk.js +28 -0
  526. package/locales/angular/global/sl.js +28 -0
  527. package/locales/angular/global/smn.js +26 -0
  528. package/locales/angular/global/sn.js +24 -0
  529. package/locales/angular/global/so-dj.js +24 -0
  530. package/locales/angular/global/so-et.js +24 -0
  531. package/locales/angular/global/so-ke.js +24 -0
  532. package/locales/angular/global/so.js +24 -0
  533. package/locales/angular/global/sq-mk.js +24 -0
  534. package/locales/angular/global/sq-xk.js +24 -0
  535. package/locales/angular/global/sq.js +24 -0
  536. package/locales/angular/global/sr-cyrl-ba.js +26 -0
  537. package/locales/angular/global/sr-cyrl-me.js +26 -0
  538. package/locales/angular/global/sr-cyrl-xk.js +26 -0
  539. package/locales/angular/global/sr-cyrl.js +26 -0
  540. package/locales/angular/global/sr-latn-ba.js +22 -0
  541. package/locales/angular/global/sr-latn-me.js +22 -0
  542. package/locales/angular/global/sr-latn-xk.js +22 -0
  543. package/locales/angular/global/sr-latn.js +22 -0
  544. package/locales/angular/global/sr.js +26 -0
  545. package/locales/angular/global/su-latn.js +22 -0
  546. package/locales/angular/global/su.js +22 -0
  547. package/locales/angular/global/sv-ax.js +24 -0
  548. package/locales/angular/global/sv-fi.js +24 -0
  549. package/locales/angular/global/sv.js +24 -0
  550. package/locales/angular/global/sw-cd.js +24 -0
  551. package/locales/angular/global/sw-ke.js +24 -0
  552. package/locales/angular/global/sw-ug.js +24 -0
  553. package/locales/angular/global/sw.js +24 -0
  554. package/locales/angular/global/ta-lk.js +24 -0
  555. package/locales/angular/global/ta-my.js +24 -0
  556. package/locales/angular/global/ta-sg.js +24 -0
  557. package/locales/angular/global/ta.js +24 -0
  558. package/locales/angular/global/te.js +24 -0
  559. package/locales/angular/global/teo-ke.js +24 -0
  560. package/locales/angular/global/teo.js +24 -0
  561. package/locales/angular/global/tg.js +22 -0
  562. package/locales/angular/global/th.js +22 -0
  563. package/locales/angular/global/ti-er.js +24 -0
  564. package/locales/angular/global/ti.js +24 -0
  565. package/locales/angular/global/tk.js +24 -0
  566. package/locales/angular/global/to.js +22 -0
  567. package/locales/angular/global/tr-cy.js +24 -0
  568. package/locales/angular/global/tr.js +24 -0
  569. package/locales/angular/global/tt.js +22 -0
  570. package/locales/angular/global/twq.js +22 -0
  571. package/locales/angular/global/tzm.js +24 -0
  572. package/locales/angular/global/ug.js +24 -0
  573. package/locales/angular/global/uk.js +28 -0
  574. package/locales/angular/global/und.js +24 -0
  575. package/locales/angular/global/ur-in.js +24 -0
  576. package/locales/angular/global/ur.js +24 -0
  577. package/locales/angular/global/uz-arab.js +22 -0
  578. package/locales/angular/global/uz-cyrl.js +22 -0
  579. package/locales/angular/global/uz-latn.js +24 -0
  580. package/locales/angular/global/uz.js +24 -0
  581. package/locales/angular/global/vai-latn.js +22 -0
  582. package/locales/angular/global/vai-vaii.js +22 -0
  583. package/locales/angular/global/vai.js +22 -0
  584. package/locales/angular/global/vi.js +22 -0
  585. package/locales/angular/global/vun.js +24 -0
  586. package/locales/angular/global/wae.js +24 -0
  587. package/locales/angular/global/wo.js +22 -0
  588. package/locales/angular/global/xh.js +24 -0
  589. package/locales/angular/global/xog.js +24 -0
  590. package/locales/angular/global/yav.js +22 -0
  591. package/locales/angular/global/yi.js +24 -0
  592. package/locales/angular/global/yo-bj.js +22 -0
  593. package/locales/angular/global/yo.js +22 -0
  594. package/locales/angular/global/yrl-co.js +22 -0
  595. package/locales/angular/global/yrl-ve.js +22 -0
  596. package/locales/angular/global/yrl.js +22 -0
  597. package/locales/angular/global/yue-hans.js +22 -0
  598. package/locales/angular/global/yue-hant.js +22 -0
  599. package/locales/angular/global/yue.js +22 -0
  600. package/locales/angular/global/zgh.js +22 -0
  601. package/locales/angular/global/zh-hans-hk.js +22 -0
  602. package/locales/angular/global/zh-hans-mo.js +22 -0
  603. package/locales/angular/global/zh-hans-sg.js +22 -0
  604. package/locales/angular/global/zh-hans.js +22 -0
  605. package/locales/angular/global/zh-hant-hk.js +22 -0
  606. package/locales/angular/global/zh-hant-mo.js +22 -0
  607. package/locales/angular/global/zh-hant.js +22 -0
  608. package/locales/angular/global/zh.js +22 -0
  609. package/locales/angular/global/zu.js +24 -0
  610. package/locales/fullcalendar/af.js +27 -0
  611. package/locales/fullcalendar/ar-dz.js +28 -0
  612. package/locales/fullcalendar/ar-kw.js +28 -0
  613. package/locales/fullcalendar/ar-ly.js +28 -0
  614. package/locales/fullcalendar/ar-ma.js +28 -0
  615. package/locales/fullcalendar/ar-sa.js +28 -0
  616. package/locales/fullcalendar/ar-tn.js +28 -0
  617. package/locales/fullcalendar/ar.js +28 -0
  618. package/locales/fullcalendar/az.js +29 -0
  619. package/locales/fullcalendar/bg.js +28 -0
  620. package/locales/fullcalendar/bs.js +29 -0
  621. package/locales/fullcalendar/ca.js +27 -0
  622. package/locales/fullcalendar/cs.js +29 -0
  623. package/locales/fullcalendar/da.js +27 -0
  624. package/locales/fullcalendar/de.js +30 -0
  625. package/locales/fullcalendar/el.js +27 -0
  626. package/locales/fullcalendar/en-au.js +14 -0
  627. package/locales/fullcalendar/en-gb.js +14 -0
  628. package/locales/fullcalendar/en-nz.js +14 -0
  629. package/locales/fullcalendar/es-us.js +27 -0
  630. package/locales/fullcalendar/es.js +27 -0
  631. package/locales/fullcalendar/et.js +29 -0
  632. package/locales/fullcalendar/eu.js +27 -0
  633. package/locales/fullcalendar/fa.js +30 -0
  634. package/locales/fullcalendar/fi.js +27 -0
  635. package/locales/fullcalendar/fr-ca.js +24 -0
  636. package/locales/fullcalendar/fr-ch.js +28 -0
  637. package/locales/fullcalendar/fr.js +28 -0
  638. package/locales/fullcalendar/gl.js +27 -0
  639. package/locales/fullcalendar/he.js +24 -0
  640. package/locales/fullcalendar/hi.js +29 -0
  641. package/locales/fullcalendar/hr.js +29 -0
  642. package/locales/fullcalendar/hu.js +27 -0
  643. package/locales/fullcalendar/id.js +27 -0
  644. package/locales/fullcalendar/is.js +27 -0
  645. package/locales/fullcalendar/it.js +29 -0
  646. package/locales/fullcalendar/ja.js +25 -0
  647. package/locales/fullcalendar/ka.js +29 -0
  648. package/locales/fullcalendar/kk.js +29 -0
  649. package/locales/fullcalendar/ko.js +23 -0
  650. package/locales/fullcalendar/lb.js +27 -0
  651. package/locales/fullcalendar/lt.js +27 -0
  652. package/locales/fullcalendar/lv.js +29 -0
  653. package/locales/fullcalendar/mk.js +25 -0
  654. package/locales/fullcalendar/ms.js +29 -0
  655. package/locales/fullcalendar/nb.js +27 -0
  656. package/locales/fullcalendar/ne.js +27 -0
  657. package/locales/fullcalendar/nl.js +27 -0
  658. package/locales/fullcalendar/nn.js +27 -0
  659. package/locales/fullcalendar/pl.js +27 -0
  660. package/locales/fullcalendar/pt-br.js +25 -0
  661. package/locales/fullcalendar/pt.js +27 -0
  662. package/locales/fullcalendar/ro.js +29 -0
  663. package/locales/fullcalendar/ru.js +29 -0
  664. package/locales/fullcalendar/sk.js +29 -0
  665. package/locales/fullcalendar/sl.js +27 -0
  666. package/locales/fullcalendar/sq.js +29 -0
  667. package/locales/fullcalendar/sr-cyrl.js +29 -0
  668. package/locales/fullcalendar/sr.js +29 -0
  669. package/locales/fullcalendar/sv.js +27 -0
  670. package/locales/fullcalendar/th.js +30 -0
  671. package/locales/fullcalendar/tr.js +27 -0
  672. package/locales/fullcalendar/ug.js +17 -0
  673. package/locales/fullcalendar/uk.js +29 -0
  674. package/locales/fullcalendar/uz.js +21 -0
  675. package/locales/fullcalendar/vi.js +29 -0
  676. package/locales/fullcalendar/zh-cn.js +30 -0
  677. package/locales/fullcalendar/zh-tw.js +23 -0
  678. package/locales/moment/af.js +82 -0
  679. package/locales/moment/ar-dz.js +167 -0
  680. package/locales/moment/ar-kw.js +66 -0
  681. package/locales/moment/ar-ly.js +182 -0
  682. package/locales/moment/ar-ma.js +67 -0
  683. package/locales/moment/ar-sa.js +116 -0
  684. package/locales/moment/ar-tn.js +66 -0
  685. package/locales/moment/ar.js +200 -0
  686. package/locales/moment/az.js +113 -0
  687. package/locales/moment/be.js +153 -0
  688. package/locales/moment/bg.js +98 -0
  689. package/locales/moment/bm.js +62 -0
  690. package/locales/moment/bn-bd.js +140 -0
  691. package/locales/moment/bn.js +130 -0
  692. package/locales/moment/bo.js +135 -0
  693. package/locales/moment/br.js +179 -0
  694. package/locales/moment/bs.js +161 -0
  695. package/locales/moment/ca.js +111 -0
  696. package/locales/moment/cs.js +191 -0
  697. package/locales/moment/cv.js +74 -0
  698. package/locales/moment/cy.js +109 -0
  699. package/locales/moment/da.js +64 -0
  700. package/locales/moment/de-at.js +90 -0
  701. package/locales/moment/de-ch.js +87 -0
  702. package/locales/moment/de.js +89 -0
  703. package/locales/moment/dv.js +101 -0
  704. package/locales/moment/el.js +117 -0
  705. package/locales/moment/en-au.js +79 -0
  706. package/locales/moment/en-ca.js +75 -0
  707. package/locales/moment/en-gb.js +79 -0
  708. package/locales/moment/en-ie.js +79 -0
  709. package/locales/moment/en-il.js +75 -0
  710. package/locales/moment/en-in.js +79 -0
  711. package/locales/moment/en-nz.js +79 -0
  712. package/locales/moment/en-sg.js +79 -0
  713. package/locales/moment/eo.js +79 -0
  714. package/locales/moment/es-do.js +119 -0
  715. package/locales/moment/es-mx.js +121 -0
  716. package/locales/moment/es-us.js +121 -0
  717. package/locales/moment/es.js +121 -0
  718. package/locales/moment/et.js +89 -0
  719. package/locales/moment/eu.js +76 -0
  720. package/locales/moment/fa.js +124 -0
  721. package/locales/moment/fi.js +135 -0
  722. package/locales/moment/fil.js +69 -0
  723. package/locales/moment/fo.js +68 -0
  724. package/locales/moment/fr-ca.js +81 -0
  725. package/locales/moment/fr-ch.js +85 -0
  726. package/locales/moment/fr.js +119 -0
  727. package/locales/moment/fy.js +86 -0
  728. package/locales/moment/ga.js +106 -0
  729. package/locales/moment/gd.js +106 -0
  730. package/locales/moment/gl.js +86 -0
  731. package/locales/moment/gom-deva.js +137 -0
  732. package/locales/moment/gom-latn.js +135 -0
  733. package/locales/moment/gu.js +133 -0
  734. package/locales/moment/he.js +105 -0
  735. package/locales/moment/hi.js +179 -0
  736. package/locales/moment/hr.js +167 -0
  737. package/locales/moment/hu.js +129 -0
  738. package/locales/moment/hy-am.js +105 -0
  739. package/locales/moment/id.js +87 -0
  740. package/locales/moment/is.js +151 -0
  741. package/locales/moment/it-ch.js +75 -0
  742. package/locales/moment/it.js +117 -0
  743. package/locales/moment/ja.js +159 -0
  744. package/locales/moment/jv.js +87 -0
  745. package/locales/moment/ka.js +103 -0
  746. package/locales/moment/kk.js +93 -0
  747. package/locales/moment/km.js +114 -0
  748. package/locales/moment/kn.js +135 -0
  749. package/locales/moment/ko.js +86 -0
  750. package/locales/moment/ku.js +129 -0
  751. package/locales/moment/ky.js +95 -0
  752. package/locales/moment/lb.js +148 -0
  753. package/locales/moment/lo.js +77 -0
  754. package/locales/moment/lt.js +136 -0
  755. package/locales/moment/lv.js +105 -0
  756. package/locales/moment/me.js +128 -0
  757. package/locales/moment/mi.js +71 -0
  758. package/locales/moment/mk.js +97 -0
  759. package/locales/moment/ml.js +93 -0
  760. package/locales/moment/mn.js +111 -0
  761. package/locales/moment/mr.js +214 -0
  762. package/locales/moment/ms-my.js +87 -0
  763. package/locales/moment/ms.js +86 -0
  764. package/locales/moment/mt.js +67 -0
  765. package/locales/moment/my.js +102 -0
  766. package/locales/moment/nb.js +71 -0
  767. package/locales/moment/ne.js +132 -0
  768. package/locales/moment/nl-be.js +113 -0
  769. package/locales/moment/nl.js +115 -0
  770. package/locales/moment/nn.js +70 -0
  771. package/locales/moment/oc-lnc.js +96 -0
  772. package/locales/moment/pa-in.js +133 -0
  773. package/locales/moment/pl.js +151 -0
  774. package/locales/moment/pt-br.js +69 -0
  775. package/locales/moment/pt.js +74 -0
  776. package/locales/moment/ro.js +87 -0
  777. package/locales/moment/ru.js +224 -0
  778. package/locales/moment/sd.js +92 -0
  779. package/locales/moment/se.js +68 -0
  780. package/locales/moment/si.js +80 -0
  781. package/locales/moment/sk.js +156 -0
  782. package/locales/moment/sl.js +182 -0
  783. package/locales/moment/sq.js +76 -0
  784. package/locales/moment/sr-cyrl.js +138 -0
  785. package/locales/moment/sr.js +140 -0
  786. package/locales/moment/ss.js +95 -0
  787. package/locales/moment/sv.js +79 -0
  788. package/locales/moment/sw.js +66 -0
  789. package/locales/moment/ta.js +142 -0
  790. package/locales/moment/te.js +99 -0
  791. package/locales/moment/tet.js +79 -0
  792. package/locales/moment/tg.js +128 -0
  793. package/locales/moment/th.js +76 -0
  794. package/locales/moment/tk.js +102 -0
  795. package/locales/moment/tl-ph.js +68 -0
  796. package/locales/moment/tlh.js +135 -0
  797. package/locales/moment/tr.js +117 -0
  798. package/locales/moment/tzl.js +100 -0
  799. package/locales/moment/tzm-latn.js +65 -0
  800. package/locales/moment/tzm.js +65 -0
  801. package/locales/moment/ug-cn.js +122 -0
  802. package/locales/moment/uk.js +178 -0
  803. package/locales/moment/ur.js +93 -0
  804. package/locales/moment/uz-latn.js +65 -0
  805. package/locales/moment/uz.js +62 -0
  806. package/locales/moment/vi.js +91 -0
  807. package/locales/moment/x-pseudo.js +84 -0
  808. package/locales/moment/yo.js +64 -0
  809. package/locales/moment/zh-cn.js +131 -0
  810. package/locales/moment/zh-hk.js +112 -0
  811. package/locales/moment/zh-mo.js +111 -0
  812. package/locales/moment/zh-tw.js +110 -0
  813. package/locales/moment-timezone/moment-timezone-with-data.js +1581 -0
  814. package/mobile/components/containers/segmented-control/bundles/index.umd.js +1 -1
  815. package/npm-shrinkwrap.json +2 -2
  816. package/package-lock.json +2 -2
  817. package/package.json +1 -1
  818. package/runtime/base/bundles/index.umd.js +20 -9
  819. package/runtime/base/esm2022/services/app.manager.service.mjs +13 -8
  820. package/runtime/base/esm2022/services/http-interceptor.services.mjs +9 -3
  821. package/runtime/base/fesm2022/index.mjs +20 -9
  822. package/runtime/base/fesm2022/index.mjs.map +1 -1
  823. package/runtime/base/services/app.manager.service.d.ts +1 -1
  824. package/runtime/base/services/http-interceptor.services.d.ts +1 -0
  825. package/scripts/datatable/datatable.js +3 -0
  826. package/variables/bundles/index.umd.js +1 -1
  827. package/variables/esm2022/service/metadata-service/metadata.service.mjs +2 -2
  828. package/variables/fesm2022/index.mjs +1 -1
  829. package/variables/fesm2022/index.mjs.map +1 -1
@@ -108,94 +108,9 @@ function WizardComponent_li_2_Template(rf, ctx) { if (rf & 1) {
108
108
  function WizardComponent_p_4_Template(rf, ctx) { if (rf & 1) {
109
109
  i0.ɵɵelement(0, "p", 23);
110
110
  } }
111
- function WizardComponent_Conditional_6_ng_container_0_Template(rf, ctx) { if (rf & 1) {
111
+ function WizardComponent_ng_container_6_Template(rf, ctx) { if (rf & 1) {
112
112
  i0.ɵɵelementContainer(0);
113
113
  } }
114
- function WizardComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
115
- i0.ɵɵtemplate(0, WizardComponent_Conditional_6_ng_container_0_Template, 1, 0, "ng-container", 24);
116
- } if (rf & 2) {
117
- const ctx_r2 = i0.ɵɵnextContext();
118
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r2.wizardAction);
119
- } }
120
- function WizardComponent_Conditional_7_Conditional_1_Template(rf, ctx) { if (rf & 1) {
121
- const _r6 = i0.ɵɵgetCurrentView();
122
- i0.ɵɵelementStart(0, "a", 31);
123
- i0.ɵɵlistener("click", function WizardComponent_Conditional_7_Conditional_1_Template_a_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.skip()); });
124
- i0.ɵɵtext(1, "Skip \u00BB");
125
- i0.ɵɵelementEnd();
126
- } if (rf & 2) {
127
- const ctx_r2 = i0.ɵɵnextContext(2);
128
- i0.ɵɵpropertyInterpolate1("name", "skipStep_", ctx_r2.name, "");
129
- } }
130
- function WizardComponent_Conditional_7_Conditional_3_Template(rf, ctx) { if (rf & 1) {
131
- const _r7 = i0.ɵɵgetCurrentView();
132
- i0.ɵɵelementStart(0, "button", 32);
133
- i0.ɵɵlistener("click", function WizardComponent_Conditional_7_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.cancel()); });
134
- i0.ɵɵelementEnd();
135
- } if (rf & 2) {
136
- const ctx_r2 = i0.ɵɵnextContext(2);
137
- i0.ɵɵpropertyInterpolate1("name", "cancelBtn_", ctx_r2.name, "");
138
- i0.ɵɵproperty("title", ctx_r2.cancelbtnlabel)("textContent", ctx_r2.cancelbtnlabel);
139
- } }
140
- function WizardComponent_Conditional_7_Conditional_4_Template(rf, ctx) { if (rf & 1) {
141
- const _r8 = i0.ɵɵgetCurrentView();
142
- i0.ɵɵelementStart(0, "button", 33);
143
- i0.ɵɵlistener("click", function WizardComponent_Conditional_7_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.prev()); });
144
- i0.ɵɵelement(1, "i", 34)(2, "span", 35);
145
- i0.ɵɵelementEnd();
146
- } if (rf & 2) {
147
- const ctx_r2 = i0.ɵɵnextContext(2);
148
- i0.ɵɵpropertyInterpolate1("name", "previousBtn_", ctx_r2.name, "");
149
- i0.ɵɵproperty("disabled", !ctx_r2.enablePrev);
150
- i0.ɵɵadvance(2);
151
- i0.ɵɵproperty("textContent", ctx_r2.previousbtnlabel);
152
- } }
153
- function WizardComponent_Conditional_7_Conditional_5_Template(rf, ctx) { if (rf & 1) {
154
- const _r9 = i0.ɵɵgetCurrentView();
155
- i0.ɵɵelementStart(0, "button", 36);
156
- i0.ɵɵlistener("click", function WizardComponent_Conditional_7_Conditional_5_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.next()); });
157
- i0.ɵɵelement(1, "span", 35)(2, "i", 37);
158
- i0.ɵɵelementEnd();
159
- } if (rf & 2) {
160
- const ctx_r2 = i0.ɵɵnextContext(2);
161
- i0.ɵɵpropertyInterpolate1("name", "nextBtn_", ctx_r2.name, "");
162
- i0.ɵɵproperty("disabled", !ctx_r2.enableNext);
163
- i0.ɵɵadvance();
164
- i0.ɵɵproperty("textContent", ctx_r2.nextbtnlabel);
165
- } }
166
- function WizardComponent_Conditional_7_Conditional_6_Template(rf, ctx) { if (rf & 1) {
167
- const _r10 = i0.ɵɵgetCurrentView();
168
- i0.ɵɵelementStart(0, "button", 38);
169
- i0.ɵɵlistener("click", function WizardComponent_Conditional_7_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.done()); });
170
- i0.ɵɵelement(1, "i", 39)(2, "span", 35);
171
- i0.ɵɵelementEnd();
172
- } if (rf & 2) {
173
- const ctx_r2 = i0.ɵɵnextContext(2);
174
- i0.ɵɵpropertyInterpolate1("name", "doneBtn_", ctx_r2.name, "");
175
- i0.ɵɵproperty("disabled", !ctx_r2.enableDone);
176
- i0.ɵɵadvance(2);
177
- i0.ɵɵproperty("textContent", ctx_r2.donebtnlabel);
178
- } }
179
- function WizardComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
180
- i0.ɵɵelementStart(0, "div");
181
- i0.ɵɵtemplate(1, WizardComponent_Conditional_7_Conditional_1_Template, 2, 2, "a", 25);
182
- i0.ɵɵelementStart(2, "div", 26);
183
- i0.ɵɵtemplate(3, WizardComponent_Conditional_7_Conditional_3_Template, 1, 4, "button", 27)(4, WizardComponent_Conditional_7_Conditional_4_Template, 3, 4, "button", 28)(5, WizardComponent_Conditional_7_Conditional_5_Template, 3, 4, "button", 29)(6, WizardComponent_Conditional_7_Conditional_6_Template, 3, 4, "button", 30);
184
- i0.ɵɵelementEnd()();
185
- } if (rf & 2) {
186
- const ctx_r2 = i0.ɵɵnextContext();
187
- i0.ɵɵclassMapInterpolate1("app-wizard-actions panel-footer ", ctx_r2.actionsalignment, "");
188
- i0.ɵɵadvance();
189
- i0.ɵɵconditional((ctx_r2.currentStep == null ? null : ctx_r2.currentStep.enableskip) ? 1 : -1);
190
- i0.ɵɵadvance(2);
191
- i0.ɵɵconditional(ctx_r2.cancelable ? 3 : -1);
192
- i0.ɵɵadvance();
193
- i0.ɵɵconditional(ctx_r2.hasPrevStep ? 4 : -1);
194
- i0.ɵɵadvance();
195
- i0.ɵɵconditional(ctx_r2.hasNextStep ? 5 : -1);
196
- i0.ɵɵadvance();
197
- i0.ɵɵconditional(ctx_r2.showDoneBtn ? 6 : -1);
198
- } }
199
114
  const DEFAULT_CLS = 'app-wizard panel clearfix';
200
115
  const WIDGET_CONFIG = {
201
116
  widgetType: 'wm-wizard',
@@ -477,22 +392,6 @@ export class WizardComponent extends StylableComponent {
477
392
  isLastStep(stepRef) {
478
393
  return this.steps.last === stepRef;
479
394
  }
480
- updateActionButtonNames() {
481
- const wizardActionButtons = [
482
- { selector: 'a.app-wizard-skip', name: 'skipStep' },
483
- { selector: 'button.app-wizard-cancel', name: 'cancelBtn' },
484
- { selector: 'button.app-wizard-previous', name: 'previousBtn' },
485
- { selector: 'button.app-wizard-next', name: 'nextBtn' },
486
- { selector: 'button.app-wizard-done', name: 'doneBtn' }
487
- ];
488
- wizardActionButtons.forEach(button => {
489
- const element = this.nativeElement.querySelector(button.selector);
490
- if (element) {
491
- element.setAttribute('name', `${button.name}_${this.name}`);
492
- }
493
- });
494
- this.nativeElement.querySelector('div.app-wizard-actions-right').classList.remove('app-container');
495
- }
496
395
  // Define the property change handler. This Method will be triggered when there is a change in the widget property
497
396
  onPropertyChange(key, nv, ov) {
498
397
  // Monitoring changes for properties and accordingly handling respective changes
@@ -502,6 +401,9 @@ export class WizardComponent extends StylableComponent {
502
401
  else if (key === 'defaultstep') {
503
402
  this.setDefaultStep(this.getStepRefByName(nv));
504
403
  }
404
+ else if (key === 'actionsalignment') {
405
+ this.nativeElement.querySelector('div.app-wizard-actions')?.classList.replace(ov, nv);
406
+ }
505
407
  else {
506
408
  super.onPropertyChange(key, nv, ov);
507
409
  }
@@ -535,12 +437,13 @@ export class WizardComponent extends StylableComponent {
535
437
  if ($(window).width() < 768) {
536
438
  $(".app-wizard").removeClass("vertical");
537
439
  }
538
- this.updateActionButtonNames();
440
+ this.nativeElement.querySelector('div.app-wizard-actions-right')?.classList.remove('app-container');
441
+ this.nativeElement.querySelector('div.app-wizard-actions')?.classList.add(this.actionsalignment);
539
442
  });
540
443
  }
541
444
  static { this.ɵfac = function WizardComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || WizardComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(Context, 2), i0.ɵɵdirectiveInject('EXPLICIT_CONTEXT', 8)); }; }
542
445
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: WizardComponent, selectors: [["div", "wmWizard", ""]], contentQueries: function WizardComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
543
- i0.ɵɵcontentQuery(dirIndex, _c0, 5, TemplateRef);
446
+ i0.ɵɵcontentQuery(dirIndex, _c0, 4, TemplateRef);
544
447
  i0.ɵɵcontentQuery(dirIndex, WizardStepDirective, 4);
545
448
  } if (rf & 2) {
546
449
  let _t;
@@ -549,7 +452,7 @@ export class WizardComponent extends StylableComponent {
549
452
  } }, features: [i0.ɵɵProvidersFeature([
550
453
  provideAsWidgetRef(WizardComponent),
551
454
  { provide: Context, useFactory: () => { return {}; }, multi: true }
552
- ]), i0.ɵɵInheritDefinitionFeature], attrs: _c1, ngContentSelectors: _c2, decls: 8, vars: 6, consts: [[1, "app-wizard-heading"], ["class", "app-wizard-step", 3, "hidden", "ngClass", "click", 4, "ngFor", "ngForOf"], [1, "app-wizard-body", "panel-body"], ["wmMessage", "", "caption.bind", "message.caption", "type.bind", "message.type", 4, "ngIf"], [3, "class"], [1, "app-wizard-step", 3, "click", "hidden", "ngClass"], ["href", "javascript:void(0)", 3, "ngClass"], ["class", "arrow", 4, "ngIf"], [1, "wizard-step-number"], ["class", "count", 4, "ngIf"], ["class", "dottedstepper", 4, "ngIf"], ["class", "app-icon wi wi-done", 4, "ngIf"], [3, "class", 4, "ngIf"], [1, "title-wrapper"], [4, "ngIf"], [1, "step-title", 3, "textContent"], ["class", "subtitle-wrapper", 4, "ngIf"], [1, "arrow"], [1, "count"], [1, "dottedstepper"], [1, "app-icon", "wi", "wi-done"], [1, "subtitle-wrapper"], [1, "read_more", 2, "display", "none", 3, "click"], ["wmMessage", "", "caption.bind", "message.caption", "type.bind", "message.type"], [4, "ngTemplateOutlet"], ["title", "Skip step", 1, "app-wizard-skip", 3, "name"], [1, "app-wizard-actions-right"], ["type", "button", 1, "btn", "app-button", "btn-default", 3, "name", "title", "textContent"], ["type", "button", 1, "btn", "app-button", "btn-default", 3, "name", "disabled"], ["type", "button", 1, "btn", "app-button", "btn-primary", 3, "name", "disabled"], ["type", "button", 1, "btn", "app-button", "btn-success", 3, "name", "disabled"], ["title", "Skip step", 1, "app-wizard-skip", 3, "click", "name"], ["type", "button", 1, "btn", "app-button", "btn-default", 3, "click", "name", "title", "textContent"], ["type", "button", 1, "btn", "app-button", "btn-default", 3, "click", "name", "disabled"], [1, "app-icon", "wi", "wi-chevron-left"], [1, "btn-caption", 3, "textContent"], ["type", "button", 1, "btn", "app-button", "btn-primary", 3, "click", "name", "disabled"], [1, "app-icon", "wi", "wi-chevron-right"], ["type", "button", 1, "btn", "app-button", "btn-success", 3, "click", "name", "disabled"], [1, "app-icon", "wm-sl-l", "sl-check"]], template: function WizardComponent_Template(rf, ctx) { if (rf & 1) {
455
+ ]), i0.ɵɵInheritDefinitionFeature], attrs: _c1, ngContentSelectors: _c2, decls: 7, vars: 6, consts: [[1, "app-wizard-heading"], ["class", "app-wizard-step", 3, "hidden", "ngClass", "click", 4, "ngFor", "ngForOf"], [1, "app-wizard-body", "panel-body"], ["wmMessage", "", "caption.bind", "message.caption", "type.bind", "message.type", 4, "ngIf"], [4, "ngTemplateOutlet"], [1, "app-wizard-step", 3, "click", "hidden", "ngClass"], ["href", "javascript:void(0)", 3, "ngClass"], ["class", "arrow", 4, "ngIf"], [1, "wizard-step-number"], ["class", "count", 4, "ngIf"], ["class", "dottedstepper", 4, "ngIf"], ["class", "app-icon wi wi-done", 4, "ngIf"], [3, "class", 4, "ngIf"], [1, "title-wrapper"], [4, "ngIf"], [1, "step-title", 3, "textContent"], ["class", "subtitle-wrapper", 4, "ngIf"], [1, "arrow"], [1, "count"], [1, "dottedstepper"], [1, "app-icon", "wi", "wi-done"], [1, "subtitle-wrapper"], [1, "read_more", 2, "display", "none", 3, "click"], ["wmMessage", "", "caption.bind", "message.caption", "type.bind", "message.type"]], template: function WizardComponent_Template(rf, ctx) { if (rf & 1) {
553
456
  i0.ɵɵprojectionDef();
554
457
  i0.ɵɵelementStart(0, "div", 0)(1, "ul");
555
458
  i0.ɵɵtemplate(2, WizardComponent_li_2_Template, 13, 21, "li", 1);
@@ -558,7 +461,7 @@ export class WizardComponent extends StylableComponent {
558
461
  i0.ɵɵtemplate(4, WizardComponent_p_4_Template, 1, 0, "p", 3);
559
462
  i0.ɵɵprojection(5, 0, ["ngProjectAs", "form[wmWizardStep]", 5, ["form", "wmWizardStep", ""]]);
560
463
  i0.ɵɵelementEnd();
561
- i0.ɵɵtemplate(6, WizardComponent_Conditional_6_Template, 1, 1, "ng-container")(7, WizardComponent_Conditional_7_Template, 7, 8, "div", 4);
464
+ i0.ɵɵtemplate(6, WizardComponent_ng_container_6_Template, 1, 0, "ng-container", 4);
562
465
  } if (rf & 2) {
563
466
  i0.ɵɵadvance();
564
467
  i0.ɵɵclassMapInterpolate1("app-wizard-steps nav nav-pills ", ctx.stepClass, "");
@@ -567,7 +470,7 @@ export class WizardComponent extends StylableComponent {
567
470
  i0.ɵɵadvance(2);
568
471
  i0.ɵɵproperty("ngIf", ctx.message.caption);
569
472
  i0.ɵɵadvance(2);
570
- i0.ɵɵconditional(ctx.wizardAction ? 6 : 7);
473
+ i0.ɵɵproperty("ngTemplateOutlet", ctx.wizardAction);
571
474
  } }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, i2.MessageComponent, i2.TextContentDirective], encapsulation: 2 }); }
572
475
  }
573
476
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WizardComponent, [{
@@ -575,7 +478,7 @@ export class WizardComponent extends StylableComponent {
575
478
  args: [{ selector: 'div[wmWizard]', providers: [
576
479
  provideAsWidgetRef(WizardComponent),
577
480
  { provide: Context, useFactory: () => { return {}; }, multi: true }
578
- ], template: "<div class=\"app-wizard-heading\">\n <ul class=\"app-wizard-steps nav nav-pills {{stepClass}}\">\n <li class=\"app-wizard-step\" *ngFor=\"let step of steps; let i = index\" [hidden]=\"!step.show\"\n [ngClass]=\"{active: step.done, current: step.active, disabled: step.disabled}\"\n (click)=\"onWizardHeaderClick($event, step)\">\n <a href=\"javascript:void(0)\" [attr.aria-current]=\"step.active ? 'step' : null\"\n [attr.aria-disabled]=\"step.disabled\" [attr.title]=\"step.title\"\n [ngClass]=\"{'title-center-align':class && class.includes('classic') && !step.subtitle}\">\n <span class=\"arrow\" *ngIf=\"class && class.includes('classic')\"></span>\n <span class=\"wizard-step-number\">\n <span class=\"count\" *ngIf=\"class && class.includes('number') && !step.isDone\">{{i+1}}</span>\n <i class=\"dottedstepper\" *ngIf=\"class && (class.includes('dottedstepper') || class.includes('text-inline') && !class.includes('iconstepper')) && !step.isDone\"></i>\n <i class=\"app-icon wi wi-done\" *ngIf=\"class && (class.includes('dottedstepper') || class.includes('number')) && step.isDone\"></i>\n <i class=\"app-icon {{step.iconclass}}\" *ngIf=\"(class && class.includes('iconstepper')) && ((step.iconclass && !step.isDone) || (step.iconclass && step.isDone && step.doneiconclass ===''))\"></i>\n <i class=\"app-icon {{step.doneiconclass}}\" *ngIf=\"step.doneiconclass && step.isDone && (class && class.includes('iconstepper'))\"></i>\n </span>\n <span class=\"title-wrapper\">\n <span *ngIf=\"class && class.includes('text-inline')\">{{'0' + (i+1)}}</span>\n <span class=\"step-title\" [textContent]=\"step.title\"></span>\n </span>\n <span class=\"subtitle-wrapper\" [attr.title]=\"step.subtitle\" *ngIf=\"step.subtitle\">\n <span class=\"step-title\" [textContent]=\"step.subtitle\"></span>\n <a class=\"read_more\" (click)=\"readMoreSubtitle()\" style=\"display:none\">more</a>\n </span>\n </a>\n </li>\n </ul>\n</div>\n<div class=\"app-wizard-body panel-body\">\n <p wmMessage *ngIf=\"message.caption\" caption.bind=\"message.caption\" type.bind=\"message.type\"></p>\n <ng-content ngProjectAs=\"form[wmWizardStep]\"></ng-content>\n</div>\n@if (wizardAction) {\n <ng-container *ngTemplateOutlet=\"wizardAction\"></ng-container>\n} @else {\n <div class=\"app-wizard-actions panel-footer {{actionsalignment}}\">\n @if(currentStep?.enableskip) {\n <a class=\"app-wizard-skip\" name=\"skipStep_{{name}}\" title=\"Skip step\" (click)=\"skip()\">Skip &raquo;</a>\n }\n <div class=\"app-wizard-actions-right\">\n @if(cancelable) {\n <button type=\"button\" name=\"cancelBtn_{{name}}\" class=\"btn app-button btn-default\" (click)=\"cancel()\" [title]=\"cancelbtnlabel\" [textContent]=\"cancelbtnlabel\"></button>\n }\n @if(hasPrevStep) {\n <button type=\"button\" name=\"previousBtn_{{name}}\" class=\"btn app-button btn-default\" (click)=\"prev()\" [disabled]=\"!enablePrev\">\n <i class=\"app-icon wi wi-chevron-left\"></i>\n <span class=\"btn-caption\" [textContent]=\"previousbtnlabel\"></span>\n </button>\n }\n @if(hasNextStep) {\n <button type=\"button\" name=\"nextBtn_{{name}}\" class=\"btn app-button btn-primary\" (click)=\"next()\" [disabled]=\"!enableNext\">\n <span class=\"btn-caption\" [textContent]=\"nextbtnlabel\"></span>\n <i class=\"app-icon wi wi-chevron-right\"></i>\n </button>\n }\n @if(showDoneBtn) {\n <button type=\"button\" name=\"doneBtn_{{name}}\" class=\"btn app-button btn-success\" (click)=\"done()\" [disabled]=\"!enableDone\">\n <i class=\"app-icon wm-sl-l sl-check\"></i>\n <span class=\"btn-caption\" [textContent]=\"donebtnlabel\"></span>\n </button>\n }\n </div>\n </div>\n}\n" }]
481
+ ], template: "<div class=\"app-wizard-heading\">\n <ul class=\"app-wizard-steps nav nav-pills {{stepClass}}\">\n <li class=\"app-wizard-step\" *ngFor=\"let step of steps; let i = index\" [hidden]=\"!step.show\"\n [ngClass]=\"{active: step.done, current: step.active, disabled: step.disabled}\"\n (click)=\"onWizardHeaderClick($event, step)\">\n <a href=\"javascript:void(0)\" [attr.aria-current]=\"step.active ? 'step' : null\"\n [attr.aria-disabled]=\"step.disabled\" [attr.title]=\"step.title\"\n [ngClass]=\"{'title-center-align':class && class.includes('classic') && !step.subtitle}\">\n <span class=\"arrow\" *ngIf=\"class && class.includes('classic')\"></span>\n <span class=\"wizard-step-number\">\n <span class=\"count\" *ngIf=\"class && class.includes('number') && !step.isDone\">{{i+1}}</span>\n <i class=\"dottedstepper\" *ngIf=\"class && (class.includes('dottedstepper') || class.includes('text-inline') && !class.includes('iconstepper')) && !step.isDone\"></i>\n <i class=\"app-icon wi wi-done\" *ngIf=\"class && (class.includes('dottedstepper') || class.includes('number')) && step.isDone\"></i>\n <i class=\"app-icon {{step.iconclass}}\" *ngIf=\"(class && class.includes('iconstepper')) && ((step.iconclass && !step.isDone) || (step.iconclass && step.isDone && step.doneiconclass ===''))\"></i>\n <i class=\"app-icon {{step.doneiconclass}}\" *ngIf=\"step.doneiconclass && step.isDone && (class && class.includes('iconstepper'))\"></i>\n </span>\n <span class=\"title-wrapper\">\n <span *ngIf=\"class && class.includes('text-inline')\">{{'0' + (i+1)}}</span>\n <span class=\"step-title\" [textContent]=\"step.title\"></span>\n </span>\n <span class=\"subtitle-wrapper\" [attr.title]=\"step.subtitle\" *ngIf=\"step.subtitle\">\n <span class=\"step-title\" [textContent]=\"step.subtitle\"></span>\n <a class=\"read_more\" (click)=\"readMoreSubtitle()\" style=\"display:none\">more</a>\n </span>\n </a>\n </li>\n </ul>\n</div>\n<div class=\"app-wizard-body panel-body\">\n <p wmMessage *ngIf=\"message.caption\" caption.bind=\"message.caption\" type.bind=\"message.type\"></p>\n <ng-content ngProjectAs=\"form[wmWizardStep]\"></ng-content>\n</div>\n<ng-container *ngTemplateOutlet=\"wizardAction\"></ng-container>\n" }]
579
482
  }], () => [{ type: i0.Injector }, { type: Array, decorators: [{
580
483
  type: Self
581
484
  }, {
@@ -591,7 +494,7 @@ export class WizardComponent extends StylableComponent {
591
494
  args: [WizardStepDirective]
592
495
  }], wizardAction: [{
593
496
  type: ContentChild,
594
- args: ['wizardAction', { read: TemplateRef }]
497
+ args: ['wizardAction', { read: TemplateRef, descendants: false }]
595
498
  }] }); })();
596
499
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(WizardComponent, { className: "WizardComponent", filePath: "wizard.component.ts", lineNumber: 43 }); })();
597
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9jb250YWluZXJzL3dpemFyZC9zcmMvd2l6YXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9jb250YWluZXJzL3dpemFyZC9zcmMvd2l6YXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixNQUFNLEVBQ04sUUFBUSxFQUVSLFFBQVEsRUFDUixTQUFTLEVBQ1QsSUFBSSxFQUNKLFdBQVcsRUFDZCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQzlCLE9BQU8sRUFDSCxpQkFBaUIsRUFFakIsa0JBQWtCLEVBQ2xCLE1BQU0sRUFDTixpQkFBaUIsRUFDakIsT0FBTyxFQUNWLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7O0lDbEIxRCwyQkFBc0U7OztJQUVsRSxnQ0FBOEU7SUFBQSxZQUFPO0lBQUEsaUJBQU87OztJQUFkLGNBQU87SUFBUCw4QkFBTzs7O0lBQ3JGLHdCQUFtSzs7O0lBQ25LLHdCQUFpSTs7O0lBQ2pJLG9CQUFpTTs7O0lBQTlMLDZEQUFtQzs7O0lBQ3RDLG9CQUFxSTs7O0lBQWxJLGlFQUF1Qzs7O0lBRzFDLDRCQUFxRDtJQUFBLFlBQWU7SUFBQSxpQkFBTzs7O0lBQXRCLGNBQWU7SUFBZixzQ0FBZTs7OztJQUd4RSxnQ0FBa0Y7SUFDOUUsMkJBQThEO0lBQzlELDZCQUF1RTtJQUFsRCw4S0FBUyx5QkFBa0IsS0FBQztJQUFzQixvQkFBSTtJQUMvRSxBQUQrRSxpQkFBSSxFQUM1RTs7OztJQUZzQixjQUE2QjtJQUE3Qiw4Q0FBNkI7Ozs7SUFuQmxFLDZCQUVnRDtJQUE1QyxzTUFBUywyQ0FBaUMsS0FBQztJQUMzQyw0QkFFMkY7SUFDdkYsdUVBQStEO0lBQy9ELCtCQUFpQztJQUs3QixBQURBLEFBREEsQUFEQSxBQURBLHVFQUE4RSxxREFDaUYscURBQ2xDLHFEQUNnRSxxREFDNUQ7SUFDckksaUJBQU87SUFDUCxnQ0FBNEI7SUFDeEIsMEVBQXFEO0lBQ3JELDRCQUEyRDtJQUMvRCxpQkFBTztJQUNQLDBFQUFrRjtJQUsxRixBQURJLGlCQUFJLEVBQ0g7Ozs7SUF0QkQsQUFEa0Usc0NBQXFCLHdGQUNUO0lBSTNFLGNBQXVGO0lBQXZGLDRIQUF1Rjs7SUFDakUsY0FBd0M7SUFBeEMsdUVBQXdDO0lBRXBDLGVBQXVEO0lBQXZELHlGQUF1RDtJQUNsRCxjQUFtSTtJQUFuSSxtTEFBbUk7SUFDN0gsY0FBMkY7SUFBM0Ysb0lBQTJGO0lBQ25GLGNBQW1KO0lBQW5KLDRMQUFtSjtJQUMvSSxjQUFtRjtJQUFuRix3SEFBbUY7SUFHeEgsZUFBNEM7SUFBNUMsMkVBQTRDO0lBQzFCLGNBQTBCO0lBQTFCLDJDQUEwQjtJQUVNLGNBQW1CO0lBQW5CLHVDQUFtQjs7O0lBUzVGLHdCQUFpRzs7O0lBSWpHLHdCQUE4RDs7O0lBQTlELGlHQUErQzs7O0lBQWhDLHNEQUE4Qjs7OztJQUlyQyw2QkFBdUY7SUFBakIsNkxBQVMsYUFBTSxLQUFDO0lBQUMsMkJBQVk7SUFBQSxpQkFBSTs7O0lBQTVFLCtEQUF3Qjs7OztJQUkvQyxrQ0FBOEo7SUFBM0Usa01BQVMsZUFBUSxLQUFDO0lBQXlELGlCQUFTOzs7SUFBakosZ0VBQXlCO0lBQWdGLEFBQXpCLDZDQUF3QixzQ0FBK0I7Ozs7SUFHN0osa0NBQStIO0lBQTFDLGtNQUFTLGFBQU0sS0FBQztJQUVqRyxBQURBLHdCQUEyQyxlQUN1QjtJQUN0RSxpQkFBUzs7O0lBSGEsa0VBQTJCO0lBQXFELDZDQUF3QjtJQUVoRyxlQUFnQztJQUFoQyxxREFBZ0M7Ozs7SUFJOUQsa0NBQTJIO0lBQTFDLGtNQUFTLGFBQU0sS0FBQztJQUU3RixBQURBLDJCQUE4RCxZQUNsQjtJQUNoRCxpQkFBUzs7O0lBSGEsOERBQXVCO0lBQXFELDZDQUF3QjtJQUM1RixjQUE0QjtJQUE1QixpREFBNEI7Ozs7SUFLMUQsa0NBQTJIO0lBQTFDLG1NQUFTLGFBQU0sS0FBQztJQUU3RixBQURBLHdCQUF5QyxlQUNxQjtJQUNsRSxpQkFBUzs7O0lBSGEsOERBQXVCO0lBQXFELDZDQUF3QjtJQUU1RixlQUE0QjtJQUE1QixpREFBNEI7OztJQXZCdEUsMkJBQWtFO0lBQzlELHFGQUE4QjtJQUc5QiwrQkFBc0M7SUFnQmxDLEFBTkEsQUFOQSxBQUhBLDBGQUFpQiw2RUFHQyw2RUFNQSw2RUFNQTtJQU8xQixBQURJLGlCQUFNLEVBQ0o7OztJQTNCRCwwRkFBNEQ7SUFDN0QsY0FFQztJQUZELDhGQUVDO0lBRUcsZUFFQztJQUZELDRDQUVDO0lBQ0QsY0FLQztJQUxELDZDQUtDO0lBQ0QsY0FLQztJQUxELDZDQUtDO0lBQ0QsY0FLQztJQUxELDZDQUtDOztBRGhDYixNQUFNLFdBQVcsR0FBRywyQkFBMkIsQ0FBQztBQUNoRCxNQUFNLGFBQWEsR0FBa0I7SUFDakMsVUFBVSxFQUFFLFdBQVc7SUFDdkIsU0FBUyxFQUFFLFdBQVc7Q0FDekIsQ0FBQztBQVVGLE1BQU0sT0FBTyxlQUFnQixTQUFRLGlCQUFpQjthQUMzQyxvQkFBZSxHQUFHLGFBQWEsRUFBRSxBQUFsQixDQUFtQjtJQXFCekMsSUFBSSxXQUFXO1FBQ1gsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDWCxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksV0FBVztRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDcEIsT0FBTztRQUNYLENBQUM7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQztJQUM1RCxDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1YsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNwQixPQUFPO1FBQ1gsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDcEIsT0FBTztRQUNYLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlGLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDVixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3BCLE9BQU87UUFDWCxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztJQUNuRSxDQUFDO0lBRUQsWUFBWSxHQUFhLEVBQTJCLFFBQW9CLEVBQTBDLGVBQW9CO1FBQ2xJLElBQUksU0FBUyxHQUFhLElBQUksQ0FBQztRQUUvQixLQUFLLENBQUMsR0FBRyxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoRixNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFMUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztRQUVuQyxvREFBb0Q7UUFDcEQsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNYLE9BQU8sRUFBRSxFQUFFO1lBQ1gsSUFBSSxFQUFFLEVBQUU7U0FDWCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyx5QkFBeUIsQ0FBQyxLQUFhO1FBQzNDLEtBQUssSUFBSSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzdDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN2QyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDWixPQUFPLElBQUksQ0FBQztZQUNoQixDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssNkJBQTZCLENBQUMsS0FBYTtRQUMvQyxLQUFLLElBQUksQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDOUIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNaLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7T0FHRztJQUNLLG1CQUFtQjtRQUN2QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxpQkFBaUIsQ0FBQyxLQUFhO1FBQ25DLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLGlCQUFpQixDQUFDLFVBQStCO1FBQ3JELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSyxnQkFBZ0IsQ0FBQyxJQUFZO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRDs7OztPQUlHO0lBQ0ssY0FBYyxDQUFDLElBQXlCO1FBQzVDLHFFQUFxRTtRQUNyRSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDbkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7WUFDMUIsMENBQTBDO1lBQzFDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDN0MsT0FBTyxLQUFLLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ2hCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDL0MsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7Z0JBQ3JCLFFBQVEsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO2dCQUM5QixLQUFLLEVBQUUsQ0FBQztZQUNaLENBQUM7UUFDTCxDQUFDO2FBQU0sQ0FBQztZQUNKLHNDQUFzQztZQUN0QyxJQUFJLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3pDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5QixDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNLLG1CQUFtQixDQUFDLE1BQWEsRUFBRSxXQUFnQztRQUN2RSx5Q0FBeUM7UUFDekMsSUFBSSxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbkIsdUVBQXVFO1lBQ3ZFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUMvQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztvQkFDL0MsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7b0JBQ2pCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUN0QixDQUFDO3FCQUFNLENBQUM7b0JBQ0osSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7b0JBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO2dCQUN4QixDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUM7WUFDSCwyREFBMkQ7WUFDM0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7WUFDL0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQy9CLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN2QixDQUFDO0lBQ0wsQ0FBQztJQUVELGtDQUFrQztJQUMzQixJQUFJLENBQUMsWUFBb0IsTUFBTTtRQUNsQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3JDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFFcEQsdUNBQXVDO1FBQ3ZDLElBQUksU0FBUyxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQ3ZCLElBQUksV0FBVyxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDO2dCQUN2RCxPQUFPO1lBQ1gsQ0FBQztZQUNELElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDckQsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLElBQUksU0FBUyxLQUFLLE1BQU0sRUFBRSxDQUFDO1lBQzFELElBQUksV0FBVyxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEtBQUssRUFBRSxDQUFDO2dCQUN2RCxPQUFPO1lBQ1gsQ0FBQztZQUNELElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLGdCQUFnQixDQUFDLENBQUM7UUFDckQsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFDLENBQUM7WUFDckQsS0FBSyxDQUFDLElBQUksQ0FBTyxJQUFLLENBQUMsV0FBVyxDQUFDLG1CQUFtQixFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFRLEVBQUUsRUFBRTtnQkFDNUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ3pDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZLENBQUMsV0FBVyxFQUFFLGdCQUFnQjtRQUN0QyxJQUFJLFFBQTZCLENBQUM7UUFDbEMsUUFBUSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoRSxRQUFRLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztRQUU5QixnR0FBZ0c7UUFDaEcsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNYLFdBQVcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQzFCLFdBQVcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDO1FBQ2hDLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUNELHNDQUFzQztJQUMvQixJQUFJO1FBQ1AsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNyQyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRXBELElBQUksUUFBNkIsQ0FBQztRQUVsQyx3Q0FBd0M7UUFDeEMsSUFBSSxXQUFXLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDdkQsT0FBTztRQUNYLENBQUM7UUFFRCxRQUFRLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUFDLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRXBFLGdHQUFnRztRQUNoRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ1gsV0FBVyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7WUFDM0IsV0FBVyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDNUIsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUM7UUFDaEMsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU0sSUFBSTtRQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVNLFFBQVEsQ0FBQyxRQUFnQjtRQUM1QixJQUFHLFFBQVEsRUFBRSxDQUFDO1lBQ1YsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BGLElBQUcsYUFBYSxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RCLE1BQU0sUUFBUSxHQUF3QixJQUFJLENBQUMsaUJBQWlCLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQzVFLElBQUcsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO29CQUNoQixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUM5QyxDQUFDO3FCQUFNLENBQUM7b0JBQ0osT0FBTyxDQUFDLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO2dCQUMzRSxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLE9BQU8sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLFFBQVEsR0FBRyxDQUFDLENBQUM7WUFDdkQsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsMkNBQTJDO0lBQ3BDLElBQUk7UUFDUCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sRUFBRSxFQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxFQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBQ0QsNkNBQTZDO0lBQ3RDLE1BQU07UUFDVCxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLEVBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEVBQUMsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFDTSxXQUFXO1FBQ2QsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUdoQixJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdkMsSUFBRyxjQUFjLEdBQUcsR0FBRyxFQUFDLENBQUM7Z0JBQ3pCLENBQUMsQ0FBQyx3REFBd0QsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFDLFFBQVEsRUFBQyxNQUFNLEVBQUMsU0FBUyxFQUFDLE9BQU8sRUFBQyxDQUFDLENBQUM7Z0JBQ3JHLElBQUksa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLHdEQUF3RCxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzlGLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN0QyxDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FBQyxXQUFXLENBQUMsbUJBQW1CLENBQUMsQ0FBQztnQkFFakUsSUFBRyxrQkFBa0IsR0FBQyxFQUFFLEVBQUMsQ0FBQztvQkFDdEIsQ0FBQyxDQUFDLHdEQUF3RCxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUMsUUFBUSxFQUFDLE1BQU0sRUFBQyxTQUFTLEVBQUMsYUFBYSxFQUFDLENBQUMsQ0FBQztvQkFDM0csQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBQyxPQUFPLENBQUMsQ0FBQztvQkFDaEQsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBQyxNQUFNLENBQUMsQ0FBQztvQkFDOUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBQyxNQUFNLENBQUMsQ0FBQztvQkFDL0MsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBQyxPQUFPLENBQUMsQ0FBQTtnQkFDN0MsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILENBQUM7SUFDTSxnQkFBZ0I7UUFDbkIsQ0FBQyxDQUFDLDRCQUE0QixDQUFDLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDOUQsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBQyxNQUFNLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLFNBQVMsRUFBQyxVQUFTLENBQUs7WUFFbkMsSUFBSSxTQUFTLEdBQUcsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUM7WUFDdkMsbUZBQW1GO1lBQ25GLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUNuRSxDQUFDO2dCQUNHLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO2dCQUNqRSxDQUFDLENBQUMscUJBQXFCLENBQUMsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNoRCxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQy9CLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxXQUFXLENBQUMsT0FBNEI7UUFDNUMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxPQUFPLENBQUM7SUFDeEMsQ0FBQztJQUVPLFVBQVUsQ0FBQyxPQUE0QjtRQUMzQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQztJQUN2QyxDQUFDO0lBRU8sdUJBQXVCO1FBQzNCLE1BQU0sbUJBQW1CLEdBQUc7WUFDeEIsRUFBRSxRQUFRLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUNuRCxFQUFFLFFBQVEsRUFBRSwwQkFBMEIsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO1lBQzNELEVBQUUsUUFBUSxFQUFFLDRCQUE0QixFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7WUFDL0QsRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUN2RCxFQUFFLFFBQVEsRUFBRSx3QkFBd0IsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO1NBQzFELENBQUM7UUFDRixtQkFBbUIsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDakMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xFLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ1YsT0FBTyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQ2hFLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLDhCQUE4QixDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUN2RyxDQUFDO0lBRUQsa0hBQWtIO0lBQ2xILGdCQUFnQixDQUFDLEdBQVcsRUFBRSxFQUFPLEVBQUUsRUFBUTtRQUMzQyxnRkFBZ0Y7UUFFaEYsSUFBSSxHQUFHLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLFNBQVMsR0FBSSxFQUFFLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNoRSxDQUFDO2FBQU0sSUFBSSxHQUFHLEtBQUssYUFBYSxFQUFFLENBQUM7WUFDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNuRCxDQUFDO2FBQU0sQ0FBQztZQUNKLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3hDLENBQUM7SUFDTCxDQUFDO0lBRUQsa0JBQWtCO1FBQ2QsS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUNyRCxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3pELElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDdkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNuRCxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQztRQUMvRCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDdkQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDL0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUN2RCxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDO1FBQzNELElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQy9ELElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxHQUFHLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUNyRCxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDekQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pELENBQUM7SUFFRCxlQUFlO1FBQ1gsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sQ0FDRixJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQWdCLEVBQzlELElBQUksRUFDSixpQkFBaUIsQ0FBQyxXQUFXLENBQ2hDLENBQUM7UUFDRixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQUcsSUFBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEdBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQzFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDN0MsQ0FBQztZQUNELElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1FBQy9CLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztnSEF4WVEsZUFBZSwwREEwRG1CLE9BQU8sMkJBQWdDLGtCQUFrQjtvRUExRDNGLGVBQWU7Z0RBSWMsV0FBVzt3Q0FEaEMsbUJBQW1COzs7Ozs4Q0FSekI7Z0JBQ1Asa0JBQWtCLENBQUMsZUFBZSxDQUFDO2dCQUNuQyxFQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFBLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUM7YUFDbkU7O1lDdkNELEFBREosOEJBQWdDLFNBQzZCO1lBQ3JELGdFQUVnRDtZQXVCeEQsQUFESSxpQkFBSyxFQUNIO1lBQ04sOEJBQXdDO1lBQ3BDLDREQUE2RjtZQUM3Riw2RkFBMEQ7WUFDOUQsaUJBQU07WUFHSixBQUZGLDhFQUFvQiwyREFFWDs7WUFqQ0QsY0FBb0Q7WUFBcEQsK0VBQW9EO1lBQ1AsY0FBVTtZQUFWLG1DQUFVO1lBMkI3QyxlQUFxQjtZQUFyQiwwQ0FBcUI7WUFHdkMsZUErQkM7WUEvQkQsMENBK0JDOzs7aUZEckJZLGVBQWU7Y0FSM0IsU0FBUzsyQkFDSSxlQUFlLGFBRWQ7b0JBQ1Asa0JBQWtCLGlCQUFpQjtvQkFDbkMsRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxPQUFPLEVBQUUsQ0FBQSxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDO2lCQUNuRTs7c0JBNEQyQixJQUFJOztzQkFBSSxNQUFNO3VCQUFDLE9BQU87O3NCQUF5QixNQUFNO3VCQUFDLGtCQUFrQjs7c0JBQUcsUUFBUTtxQkF2RHpFLEtBQUs7a0JBQTFDLGVBQWU7bUJBQUMsbUJBQW1CO1lBQ2lCLFlBQVk7a0JBQWhFLFlBQVk7bUJBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTs7a0ZBSjFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBJbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTZWxmLFxuICAgIFRlbXBsYXRlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge25vb3B9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7XG4gICAgQVBQTFlfU1RZTEVTX1RZUEUsXG4gICAgSVdpZGdldENvbmZpZyxcbiAgICBwcm92aWRlQXNXaWRnZXRSZWYsXG4gICAgc3R5bGVyLFxuICAgIFN0eWxhYmxlQ29tcG9uZW50LFxuICAgIENvbnRleHRcbn0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5cbmltcG9ydCB7IHJlZ2lzdGVyUHJvcHMgfSBmcm9tICcuL3dpemFyZC5wcm9wcyc7XG5pbXBvcnQgeyBXaXphcmRTdGVwRGlyZWN0aXZlIH0gZnJvbSAnLi93aXphcmQtc3RlcC93aXphcmQtc3RlcC5kaXJlY3RpdmUnO1xuXG5jb25zdCBERUZBVUxUX0NMUyA9ICdhcHAtd2l6YXJkIHBhbmVsIGNsZWFyZml4JztcbmNvbnN0IFdJREdFVF9DT05GSUc6IElXaWRnZXRDb25maWcgPSB7XG4gICAgd2lkZ2V0VHlwZTogJ3dtLXdpemFyZCcsXG4gICAgaG9zdENsYXNzOiBERUZBVUxUX0NMU1xufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkaXZbd21XaXphcmRdJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vd2l6YXJkLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKFdpemFyZENvbXBvbmVudCksXG4gICAgICAgIHtwcm92aWRlOiBDb250ZXh0LCB1c2VGYWN0b3J5OiAoKSA9PiB7IHJldHVybiB7fSB9LCBtdWx0aTogdHJ1ZX1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFdpemFyZENvbXBvbmVudCBleHRlbmRzIFN0eWxhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihXaXphcmRTdGVwRGlyZWN0aXZlKSBzdGVwczogUXVlcnlMaXN0PFdpemFyZFN0ZXBEaXJlY3RpdmU+O1xuICAgIEBDb250ZW50Q2hpbGQoJ3dpemFyZEFjdGlvbicsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSkgd2l6YXJkQWN0aW9uOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgcHVibGljIG1lc3NhZ2U6IHtjYXB0aW9uOiBzdHJpbmcsIHR5cGU6IHN0cmluZ307XG4gICAgcHVibGljIGN1cnJlbnRTdGVwOiBXaXphcmRTdGVwRGlyZWN0aXZlO1xuXG4gICAgcHVibGljIHN0ZXBDbGFzczogc3RyaW5nO1xuICAgIHB1YmxpYyBjbGFzcztcbiAgICBwdWJsaWMgbmFtZTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb21pc2VSZXNvbHZlckZuOiBGdW5jdGlvbjtcbiAgICBwdWJsaWMgYWN0aW9uc2FsaWdubWVudDogYW55O1xuICAgIHB1YmxpYyBjYW5jZWxhYmxlOiBhbnk7XG4gICAgcHVibGljIGVuYWJsZW5leHQ6IGFueTtcbiAgICBwdWJsaWMgd2l6Q29udGV4dDogYW55O1xuICAgIHB1YmxpYyBjYW5jZWxidG5sYWJlbDogYW55O1xuICAgIHB1YmxpYyBkb25lYnRubGFiZWw6IGFueTtcbiAgICBwdWJsaWMgcHJldmlvdXNidG5sYWJlbDogYW55O1xuICAgIHB1YmxpYyBuZXh0YnRubGFiZWw6IGFueTtcblxuICAgIGdldCBoYXNQcmV2U3RlcCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzRmlyc3RTdGVwKHRoaXMuY3VycmVudFN0ZXApO1xuICAgIH1cblxuICAgIGdldCBoYXNOZXh0U3RlcCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmlzTGFzdFN0ZXAodGhpcy5jdXJyZW50U3RlcCk7XG4gICAgfVxuXG4gICAgZ2V0IHNob3dEb25lQnRuKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gIXRoaXMuaGFzTmV4dFN0ZXAgJiYgdGhpcy5jdXJyZW50U3RlcC5lbmFibGVEb25lO1xuICAgIH1cblxuICAgIGdldCBlbmFibGVQcmV2KCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50U3RlcC5lbmFibGVQcmV2O1xuICAgIH1cblxuICAgIGdldCBlbmFibGVOZXh0KCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5lbmFibGVuZXh0ID8gdHJ1ZSA6ICh0aGlzLmN1cnJlbnRTdGVwLmVuYWJsZU5leHQgJiYgdGhpcy5jdXJyZW50U3RlcC5pc1ZhbGlkKTtcbiAgICB9XG5cbiAgICBnZXQgZW5hYmxlRG9uZSgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRTdGVwKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFN0ZXAuZW5hYmxlRG9uZSAmJiB0aGlzLmN1cnJlbnRTdGVwLmlzVmFsaWQ7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoaW5qOiBJbmplY3RvciwgQFNlbGYoKSBASW5qZWN0KENvbnRleHQpIGNvbnRleHRzOiBBcnJheTxhbnk+LCBASW5qZWN0KCdFWFBMSUNJVF9DT05URVhUJykgQE9wdGlvbmFsKCkgZXhwbGljaXRDb250ZXh0OiBhbnkpIHtcbiAgICAgICAgbGV0IHJlc29sdmVGbjogRnVuY3Rpb24gPSBub29wO1xuXG4gICAgICAgIHN1cGVyKGluaiwgV0lER0VUX0NPTkZJRywgZXhwbGljaXRDb250ZXh0LCBuZXcgUHJvbWlzZShyZXMgPT4gcmVzb2x2ZUZuID0gcmVzKSk7XG4gICAgICAgIHN0eWxlcih0aGlzLm5hdGl2ZUVsZW1lbnQsIHRoaXMsIEFQUExZX1NUWUxFU19UWVBFLlNIRUxMKTtcblxuICAgICAgICB0aGlzLnByb21pc2VSZXNvbHZlckZuID0gcmVzb2x2ZUZuO1xuXG4gICAgICAgIC8vIGluaXRpYWxpemUgdGhlIG1lc3NhZ2Ugb2JqZWN0IHdpdGggZGVmYXVsdCB2YWx1ZXNcbiAgICAgICAgdGhpcy5tZXNzYWdlID0ge1xuICAgICAgICAgICAgY2FwdGlvbjogJycsXG4gICAgICAgICAgICB0eXBlOiAnJ1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLndpekNvbnRleHQgPSBjb250ZXh0c1swXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm5zIG5leHQgdmFsaWQgc3RlcC4gdGhlIGluZGV4IHBhc3NlZCBpcyBhbHNvIGNoZWNrZWQgaWYgaXRzIHZhbGlkIHN0ZXBcbiAgICAgKiBAcGFyYW0gaW5kZXhcbiAgICAgKiBAcmV0dXJucyB7V2l6YXJkU3RlcERpcmVjdGl2ZX1cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldE5leHRWYWxpZFN0ZXBGb3JtSW5kZXgoaW5kZXg6IG51bWJlcik6IFdpemFyZFN0ZXBEaXJlY3RpdmUge1xuICAgICAgICBmb3IgKGxldCBpID0gaW5kZXg7IGkgPCB0aGlzLnN0ZXBzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBzdGVwID0gdGhpcy5nZXRTdGVwUmVmQnlJbmRleChpKTtcbiAgICAgICAgICAgIGlmIChzdGVwLnNob3cpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RlcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgcHJldmlvdXMgdmFsaWQgc3RlcC4gdGhlIGluZGV4IHBhc3NlZCBpcyBhbHNvIGNoZWNrZWQgaWYgaXRzIHZhbGlkIHN0ZXBcbiAgICAgKiBAcGFyYW0gaW5kZXhcbiAgICAgKiBAcmV0dXJucyB7V2l6YXJkU3RlcERpcmVjdGl2ZX1cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFByZXZpb3VzVmFsaWRTdGVwRm9ybUluZGV4KGluZGV4OiBudW1iZXIpOiBXaXphcmRTdGVwRGlyZWN0aXZlIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IGluZGV4OyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3Qgc3RlcCA9IHRoaXMuZ2V0U3RlcFJlZkJ5SW5kZXgoaSk7XG4gICAgICAgICAgICBpZiAoc3RlcC5zaG93KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN0ZXA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm5zIGN1cnJlbnQgc3RlcCBpbmRleCB2YWx1ZS5cbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0Q3VycmVudFN0ZXBJbmRleCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRTdGVwSW5kZXhCeVJlZih0aGlzLmN1cnJlbnRTdGVwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm5zIHN0ZXBSZWYgd2hlbiBpbmRleCBpcyBwYXNzZWQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XG4gICAgICogQHJldHVybnMge1dpemFyZFN0ZXBEaXJlY3RpdmV9XG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRTdGVwUmVmQnlJbmRleChpbmRleDogbnVtYmVyKTogV2l6YXJkU3RlcERpcmVjdGl2ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLnRvQXJyYXkoKVtpbmRleF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJucyB0aGUgaW5kZXggdmFsdWUgb2YgdGhlIHN0ZXAuXG4gICAgICogQHBhcmFtIHtXaXphcmRTdGVwRGlyZWN0aXZlfSB3aXphcmRTdGVwXG4gICAgICogQHJldHVybnMge251bWJlcn1cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFN0ZXBJbmRleEJ5UmVmKHdpemFyZFN0ZXA6IFdpemFyZFN0ZXBEaXJlY3RpdmUpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy50b0FycmF5KCkuaW5kZXhPZih3aXphcmRTdGVwKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBnZXRzIHN0ZXBSZWYgYnkgc2VhcmNoaW5nIG9uIHRoZSBuYW1lIHByb3BlcnR5LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAgICogQHJldHVybnMge1dpemFyZFN0ZXBEaXJlY3RpdmV9XG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRTdGVwUmVmQnlOYW1lKG5hbWU6IHN0cmluZyk6IFdpemFyZFN0ZXBEaXJlY3RpdmUge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy5maW5kKHN0ZXAgPT4gc3RlcC5uYW1lID09PSBuYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBzZXRzIGRlZmF1bHQgc3RlcCBhcyBjdXJyZW50IHN0ZXAgaWYgY29uZmlndXJlZFxuICAgICAqIG9yIGZpbmRzIGZpcnN0IHZhbGlkIHN0ZXAgYW5kIHNldCBpdCBhcyBjdXJyZW50IHN0ZXAuXG4gICAgICogQHBhcmFtIHtXaXphcmRTdGVwRGlyZWN0aXZlfSBzdGVwXG4gICAgICovXG4gICAgcHJpdmF0ZSBzZXREZWZhdWx0U3RlcChzdGVwOiBXaXphcmRTdGVwRGlyZWN0aXZlKSB7XG4gICAgICAgIC8vIElmIHRoZSBkZWZhdWx0IHN0ZXAgaGFzIHNob3cgdHJ1ZSB0aGVuIG9ubHkgdXBkYXRlIHRoZSBjdXJyZW50U3RlcFxuICAgICAgICBpZiAoc3RlcCAmJiBzdGVwLnNob3cpIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFN0ZXAgPSBzdGVwO1xuICAgICAgICAgICAgc3RlcC5hY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgc3RlcC5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgIC8vIE1hcmsgYWxsIHByZXZpb3VzIHN0ZXAgc3RhdHVzIENPTVBMRVRFRFxuICAgICAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5nZXRTdGVwSW5kZXhCeVJlZihzdGVwKSAtIDE7XG4gICAgICAgICAgICB3aGlsZSAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByZXZTdGVwID0gdGhpcy5nZXRTdGVwUmVmQnlJbmRleChpbmRleCk7XG4gICAgICAgICAgICAgICAgcHJldlN0ZXAuZG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgcHJldlN0ZXAuaXNJbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaW5kZXgtLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIHNldCBuZXh0IHZhbGlkIHN0ZXAgYXMgY3VycmVudCBzdGVwXG4gICAgICAgICAgICBzdGVwID0gdGhpcy5nZXROZXh0VmFsaWRTdGVwRm9ybUluZGV4KDApO1xuICAgICAgICAgICAgaWYgKHN0ZXApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERlZmF1bHRTdGVwKHN0ZXApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWRkTW9yZVRleHQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZWxlY3RzIHRoZSBhc3NvY2lhdGVkIHN0ZXAgd2hlbiB0aGUgd2l6YXJkIGhlYWRlciBpcyBjbGlja2VkLlxuICAgICAqIEBwYXJhbSAkZXZlbnRcbiAgICAgKiBAcGFyYW0ge1dpemFyZFN0ZXBEaXJlY3RpdmV9IGN1cnJlbnRTdGVwXG4gICAgICovXG4gICAgcHJpdmF0ZSBvbldpemFyZEhlYWRlckNsaWNrKCRldmVudDogRXZlbnQsIGN1cnJlbnRTdGVwOiBXaXphcmRTdGVwRGlyZWN0aXZlKSB7XG4gICAgICAgIC8vIHNlbGVjdCB0aGUgc3RlcCBpZiBpdCdzIHN0YXR1cyBpcyBkb25lXG4gICAgICAgIGlmIChjdXJyZW50U3RlcC5kb25lKSB7XG4gICAgICAgICAgICAvLyBzZXQgYWxsIHRoZSBuZXh0IHN0ZXBzIHN0YXR1cyBhcyBkaXNhYmxlZCBhbmQgcHJldmlvdXMgc3RlcHMgYXMgZG9uZVxuICAgICAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA8IHRoaXMuZ2V0U3RlcEluZGV4QnlSZWYoY3VycmVudFN0ZXApKSB7XG4gICAgICAgICAgICAgICAgICAgc3RlcC5kb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICBzdGVwLmlzRG9uZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5kaXNhYmxlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuaXNEb25lID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBzZXQgdGhlIHNlbGVjdGVkIHN0ZXAgYXMgY3VycmVudCBzdGVwIGFuZCBtYWtlIGl0IGFjdGl2ZVxuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcCA9IGN1cnJlbnRTdGVwO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcC5hY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5hZGRNb3JlVGV4dCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTWV0aG9kIHRvIG5hdmlnYXRlIHRvIG5leHQgc3RlcFxuICAgIHB1YmxpYyBuZXh0KGV2ZW50TmFtZTogc3RyaW5nID0gJ25leHQnKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gdGhpcy5jdXJyZW50U3RlcDtcbiAgICAgICAgY29uc3QgY3VycmVudFN0ZXBJbmRleCA9IHRoaXMuZ2V0Q3VycmVudFN0ZXBJbmRleCgpO1xuXG4gICAgICAgIC8vIGFib3J0IGlmIG9uU2tpcCBtZXRob2QgcmV0dXJucyBmYWxzZVxuICAgICAgICBpZiAoZXZlbnROYW1lID09PSAnc2tpcCcpIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50U3RlcC5pbnZva2VTa2lwQ0IoY3VycmVudFN0ZXBJbmRleCkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5leHRlbmROZXh0Rm4oY3VycmVudFN0ZXAsIGN1cnJlbnRTdGVwSW5kZXgpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuY3VycmVudFN0ZXAuaXNWYWxpZCAmJiBldmVudE5hbWUgPT09ICduZXh0Jykge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRTdGVwLmludm9rZU5leHRDQihjdXJyZW50U3RlcEluZGV4KSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmV4dGVuZE5leHRGbihjdXJyZW50U3RlcCwgY3VycmVudFN0ZXBJbmRleCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5lbmFibGVuZXh0ICYmICF0aGlzLmN1cnJlbnRTdGVwLmlzVmFsaWQpe1xuICAgICAgICAgICAgQXJyYXkuZnJvbSgoPGFueT50aGlzKS5jdXJyZW50U3RlcC5nZXRBbGxFbWJlZGRlZEZvcm1zKCkpPy5mb3JFYWNoKChmb3JtOmFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGZvcm0ud2lkZ2V0LmhpZ2hsaWdodEludmFsaWRGaWVsZHMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZXh0ZW5kTmV4dEZuKGN1cnJlbnRTdGVwLCBjdXJyZW50U3RlcEluZGV4KXtcbiAgICAgICAgbGV0IG5leHRTdGVwOiBXaXphcmRTdGVwRGlyZWN0aXZlO1xuICAgICAgICBuZXh0U3RlcCA9IHRoaXMuZ2V0TmV4dFZhbGlkU3RlcEZvcm1JbmRleChjdXJyZW50U3RlcEluZGV4ICsgMSk7XG4gICAgICAgIG5leHRTdGVwLmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuXG4gICAgICAgIC8vIElmIHRoZXJlIGFyZSBhbnkgc3RlcHMgd2hpY2ggaGFzIHNob3cgdGhlbiBvbmx5IGNoYW5nZSBzdGF0ZSBvZiBjdXJyZW50IHN0ZXAgZWxzZSByZW1haW4gc2FtZVxuICAgICAgICBpZiAobmV4dFN0ZXApIHtcbiAgICAgICAgICAgIGN1cnJlbnRTdGVwLmlzRG9uZSA9IHRydWU7XG4gICAgICAgICAgICBjdXJyZW50U3RlcC5kb25lID0gdHJ1ZTtcbiAgICAgICAgICAgIG5leHRTdGVwLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTdGVwID0gbmV4dFN0ZXA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZGRNb3JlVGV4dCgpO1xuICAgIH1cbiAgICAvLyBNZXRob2QgdG8gbmF2aWdhdGUgdG8gcHJldmlvdXMgc3RlcFxuICAgIHB1YmxpYyBwcmV2KCkge1xuICAgICAgICBjb25zdCBjdXJyZW50U3RlcCA9IHRoaXMuY3VycmVudFN0ZXA7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwSW5kZXggPSB0aGlzLmdldEN1cnJlbnRTdGVwSW5kZXgoKTtcblxuICAgICAgICBsZXQgcHJldlN0ZXA6IFdpemFyZFN0ZXBEaXJlY3RpdmU7XG5cbiAgICAgICAgLy8gYWJvcnQgaWYgb25QcmV2IG1ldGhvZCByZXR1cm5zIGZhbHNlLlxuICAgICAgICBpZiAoY3VycmVudFN0ZXAuaW52b2tlUHJldkNCKGN1cnJlbnRTdGVwSW5kZXgpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcHJldlN0ZXAgPSB0aGlzLmdldFByZXZpb3VzVmFsaWRTdGVwRm9ybUluZGV4KGN1cnJlbnRTdGVwSW5kZXggLSAxKTtcblxuICAgICAgICAvLyBJZiB0aGVyZSBhcmUgYW55IHN0ZXBzIHdoaWNoIGhhcyBzaG93IHRoZW4gb25seSBjaGFuZ2Ugc3RhdGUgb2YgY3VycmVudCBzdGVwIGVsc2UgcmVtYWluIHNhbWVcbiAgICAgICAgaWYgKHByZXZTdGVwKSB7XG4gICAgICAgICAgICBjdXJyZW50U3RlcC5pc0RvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgIGN1cnJlbnRTdGVwLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHByZXZTdGVwLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTdGVwID0gcHJldlN0ZXA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZGRNb3JlVGV4dCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBza2lwKCkge1xuICAgICAgICB0aGlzLm5leHQoJ3NraXAnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ290b1N0ZXAoc3RlcE5hbWU6IHN0cmluZykge1xuICAgICAgICBpZihzdGVwTmFtZSkge1xuICAgICAgICAgICAgY29uc3QgZ290b1N0ZXBJbmRleCA9IHRoaXMuc3RlcHMudG9BcnJheSgpLm1hcChzdGVwID0+IHN0ZXAubmFtZSkuaW5kZXhPZihzdGVwTmFtZSk7XG4gICAgICAgICAgICBpZihnb3RvU3RlcEluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGdvdG9TdGVwOiBXaXphcmRTdGVwRGlyZWN0aXZlID0gdGhpcy5nZXRTdGVwUmVmQnlJbmRleChnb3RvU3RlcEluZGV4KTtcbiAgICAgICAgICAgICAgICBpZihnb3RvU3RlcD8uc2hvdykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uV2l6YXJkSGVhZGVyQ2xpY2soZXZlbnQsIGdvdG9TdGVwKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiVGhlIGdvdG9TdGVwIGZ1bmN0aW9uIGNhbm5vdCBuYXZpZ2F0ZSB0byBoaWRkZW4gc3RlcHNcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBDb3VsZCBub3QgZmluZCBzdGVwICcke3N0ZXBOYW1lfSdgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE1ldGhvZCB0byBpbnZva2Ugb24tRG9uZSBldmVudCBvbiB3aXphcmRcbiAgICBwdWJsaWMgZG9uZSgpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50U3RlcC5pc0RvbmUgPSB0cnVlO1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2RvbmUnLCB7c3RlcHM6IHRoaXMuc3RlcHMudG9BcnJheSgpfSk7XG4gICAgfVxuICAgIC8vIE1ldGhvZCB0byBpbnZva2Ugb24tQ2FuY2VsIGV2ZW50IG9uIHdpemFyZFxuICAgIHB1YmxpYyBjYW5jZWwgKCkge1xuICAgICAgICB0aGlzLmludm9rZUV2ZW50Q2FsbGJhY2soJ2NhbmNlbCcsIHtzdGVwczogdGhpcy5zdGVwcy50b0FycmF5KCl9KTtcbiAgICB9XG4gICAgcHVibGljIGFkZE1vcmVUZXh0KCl7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuXG5cbiAgICAgICAgdmFyIG5ld1dpbmRvd1dpZHRoID0gJCh3aW5kb3cpLndpZHRoKCk7XG4gICAgICAgIGlmKG5ld1dpbmRvd1dpZHRoIDwgNzY4KXtcbiAgICAgICAgJChcIi5hcHAtd2l6YXJkLXN0ZXAuY3VycmVudCAuc3VidGl0bGUtd3JhcHBlciAuc3RlcC10aXRsZVwiKS5jc3Moe1wiaGVpZ2h0XCI6XCJhdXRvXCIsXCJkaXNwbGF5XCI6XCJibG9ja1wifSk7XG4gICAgICAgIHZhciBzdWJ0aXRsZVRleHRMZW5ndGggPSAkKFwiLmFwcC13aXphcmQtc3RlcC5jdXJyZW50IC5zdWJ0aXRsZS13cmFwcGVyIC5zdGVwLXRpdGxlXCIpLmhlaWdodCgpO1xuICAgICAgICAkKFwiLnJlYWRfbW9yZVwiKS5jc3MoXCJkaXNwbGF5XCIsXCJub25lXCIpO1xuICAgICAgICAkKFwiLmN1cnJlbnQgLnN1YnRpdGxlLXdyYXBwZXJcIikucmVtb3ZlQ2xhc3MoXCJyZWFkbW9yZV9zdWJ0aXRsZVwiKTtcblxuICAgICAgICBpZihzdWJ0aXRsZVRleHRMZW5ndGg+NDQpe1xuICAgICAgICAgICAgJChcIi5hcHAtd2l6YXJkLXN0ZXAuY3VycmVudCAuc3VidGl0bGUtd3JhcHBlciAuc3RlcC10aXRsZVwiKS5jc3Moe1wiaGVpZ2h0XCI6XCI0NHB4XCIsXCJkaXNwbGF5XCI6XCItd2Via2l0LWJveFwifSk7XG4gICAgICAgICAgICAkKFwiLmN1cnJlbnQgLnJlYWRfbW9yZVwiKS5jc3MoXCJkaXNwbGF5XCIsXCJibG9ja1wiKTtcbiAgICAgICAgICAgICQoXCIuYWN0aXZlIC5yZWFkX21vcmVcIikuY3NzKFwiZGlzcGxheVwiLFwibm9uZVwiKTtcbiAgICAgICAgICAgICQoXCIuZGlzYWJsZSAucmVhZF9tb3JlXCIpLmNzcyhcImRpc3BsYXlcIixcIm5vbmVcIik7XG4gICAgICAgICAgICAkKFwiLmFwcC13aXphcmQtc3RlcD5hXCIpLmNzcyhcImhlaWdodFwiLFwiMTAwcHhcIilcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgfVxuICAgIHB1YmxpYyByZWFkTW9yZVN1YnRpdGxlKCl7XG4gICAgICAgICQoXCIuY3VycmVudCAuc3VidGl0bGUtd3JhcHBlclwiKS5hZGRDbGFzcyhcInJlYWRtb3JlX3N1YnRpdGxlXCIpO1xuICAgICAgICAkKFwiLmN1cnJlbnQgLnJlYWRfbW9yZVwiKS5jc3MoXCJkaXNwbGF5XCIsXCJub25lXCIpO1xuICAgICAgICAkKGRvY3VtZW50KS5vbihcIm1vdXNldXBcIixmdW5jdGlvbihlOmFueSlcbiAgICAgICAge1xuICAgICAgICAgICAgdmFyIGNvbnRhaW5lciA9ICQoXCIuc3VidGl0bGUtd3JhcHBlclwiKTtcbiAgICAgICAgICAgIC8vIGlmIHRoZSB0YXJnZXQgb2YgdGhlIGNsaWNrIGlzbid0IHRoZSBjb250YWluZXIgbm9yIGEgZGVzY2VuZGFudCBvZiB0aGUgY29udGFpbmVyXG4gICAgICAgICAgICBpZiAoIWNvbnRhaW5lci5pcyhlLnRhcmdldCkgJiYgY29udGFpbmVyLmhhcyhlLnRhcmdldCkubGVuZ3RoID09PSAwKVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICQoXCIuY3VycmVudCAuc3VidGl0bGUtd3JhcHBlclwiKS5yZW1vdmVDbGFzcyhcInJlYWRtb3JlX3N1YnRpdGxlXCIpO1xuICAgICAgICAgICAgICAgICQoXCIuY3VycmVudCAucmVhZF9tb3JlXCIpLmNzcyhcImRpc3BsYXlcIixcImJsb2NrXCIpO1xuICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9mZihcIm1vdXNldXBcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNGaXJzdFN0ZXAoc3RlcFJlZjogV2l6YXJkU3RlcERpcmVjdGl2ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy5maXJzdCA9PT0gc3RlcFJlZjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTGFzdFN0ZXAoc3RlcFJlZjogV2l6YXJkU3RlcERpcmVjdGl2ZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy5sYXN0ID09PSBzdGVwUmVmO1xuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlQWN0aW9uQnV0dG9uTmFtZXMoKSB7XG4gICAgICAgIGNvbnN0IHdpemFyZEFjdGlvbkJ1dHRvbnMgPSBbXG4gICAgICAgICAgICB7IHNlbGVjdG9yOiAnYS5hcHAtd2l6YXJkLXNraXAnLCBuYW1lOiAnc2tpcFN0ZXAnIH0sXG4gICAgICAgICAgICB7IHNlbGVjdG9yOiAnYnV0dG9uLmFwcC13aXphcmQtY2FuY2VsJywgbmFtZTogJ2NhbmNlbEJ0bicgfSxcbiAgICAgICAgICAgIHsgc2VsZWN0b3I6ICdidXR0b24uYXBwLXdpemFyZC1wcmV2aW91cycsIG5hbWU6ICdwcmV2aW91c0J0bicgfSxcbiAgICAgICAgICAgIHsgc2VsZWN0b3I6ICdidXR0b24uYXBwLXdpemFyZC1uZXh0JywgbmFtZTogJ25leHRCdG4nIH0sXG4gICAgICAgICAgICB7IHNlbGVjdG9yOiAnYnV0dG9uLmFwcC13aXphcmQtZG9uZScsIG5hbWU6ICdkb25lQnRuJyB9XG4gICAgICAgIF07XG4gICAgICAgIHdpemFyZEFjdGlvbkJ1dHRvbnMuZm9yRWFjaChidXR0b24gPT4ge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKGJ1dHRvbi5zZWxlY3Rvcik7XG4gICAgICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCduYW1lJywgYCR7YnV0dG9uLm5hbWV9XyR7dGhpcy5uYW1lfWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Rpdi5hcHAtd2l6YXJkLWFjdGlvbnMtcmlnaHQnKS5jbGFzc0xpc3QucmVtb3ZlKCdhcHAtY29udGFpbmVyJyk7XG4gICAgfVxuXG4gICAgLy8gRGVmaW5lIHRoZSBwcm9wZXJ0eSBjaGFuZ2UgaGFuZGxlci4gVGhpcyBNZXRob2Qgd2lsbCBiZSB0cmlnZ2VyZWQgd2hlbiB0aGVyZSBpcyBhIGNoYW5nZSBpbiB0aGUgd2lkZ2V0IHByb3BlcnR5XG4gICAgb25Qcm9wZXJ0eUNoYW5nZShrZXk6IHN0cmluZywgbnY6IGFueSwgb3Y/OiBhbnkpIHtcbiAgICAgICAgLy8gTW9uaXRvcmluZyBjaGFuZ2VzIGZvciBwcm9wZXJ0aWVzIGFuZCBhY2NvcmRpbmdseSBoYW5kbGluZyByZXNwZWN0aXZlIGNoYW5nZXNcblxuICAgICAgICBpZiAoa2V5ID09PSAnc3RlcHN0eWxlJykge1xuICAgICAgICAgICAgdGhpcy5zdGVwQ2xhc3MgPSAgbnYgPT09ICdqdXN0aWZpZWQnID8gJ25hdi1qdXN0aWZpZWQnIDogJyc7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnZGVmYXVsdHN0ZXAnKSB7XG4gICAgICAgICAgICB0aGlzLnNldERlZmF1bHRTdGVwKHRoaXMuZ2V0U3RlcFJlZkJ5TmFtZShudikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc3VwZXIub25Qcm9wZXJ0eUNoYW5nZShrZXksIG52LCBvdik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJDb250ZW50SW5pdCgpO1xuICAgICAgICB0aGlzLnByb21pc2VSZXNvbHZlckZuKCk7XG4gICAgICAgIHRoaXMud2l6Q29udGV4dC5oYXNOZXh0U3RlcCA9ICgpID0+IHRoaXMuaGFzTmV4dFN0ZXA7XG4gICAgICAgIHRoaXMud2l6Q29udGV4dC5oYXNQcmV2aW91c1N0ZXAgPSAoKSA9PiB0aGlzLmhhc1ByZXZTdGVwO1xuICAgICAgICB0aGlzLndpekNvbnRleHQuaGFzTm9OZXh0U3RlcCA9ICgpID0+IHRoaXMuc2hvd0RvbmVCdG47XG4gICAgICAgIHRoaXMud2l6Q29udGV4dC5jYW5jZWxhYmxlID0gKCkgPT4gdGhpcy5jYW5jZWxhYmxlO1xuICAgICAgICB0aGlzLndpekNvbnRleHQuc2tpcHBhYmxlID0gKCkgPT4gdGhpcy5jdXJyZW50U3RlcD8uZW5hYmxlc2tpcDtcbiAgICAgICAgdGhpcy53aXpDb250ZXh0Lm5leHQgPSAoKSA9PiB0aGlzLm5leHQoKTtcbiAgICAgICAgdGhpcy53aXpDb250ZXh0LnByZXZpb3VzID0gKCkgPT4gdGhpcy5wcmV2KCk7XG4gICAgICAgIHRoaXMud2l6Q29udGV4dC5kb25lID0gKCkgPT4gdGhpcy5kb25lKCk7XG4gICAgICAgIHRoaXMud2l6Q29udGV4dC5jYW5jZWwgPSAoKSA9PiB0aGlzLmNhbmNlbCgpO1xuICAgICAgICB0aGlzLndpekNvbnRleHQuc2tpcCA9ICgpID0+IHRoaXMuc2tpcCgpO1xuICAgICAgICB0aGlzLndpekNvbnRleHQubmV4dGJ0bmxhYmVsID0gKCkgPT4gdGhpcy5uZXh0YnRubGFiZWw7XG4gICAgICAgIHRoaXMud2l6Q29udGV4dC5wcmV2aW91c2J0bmxhYmVsID0gKCkgPT4gdGhpcy5wcmV2aW91c2J0bmxhYmVsO1xuICAgICAgICB0aGlzLndpekNvbnRleHQuZG9uZWJ0bmxhYmVsID0gKCkgPT4gdGhpcy5kb25lYnRubGFiZWw7XG4gICAgICAgIHRoaXMud2l6Q29udGV4dC5jYW5jZWxidG5sYWJlbCA9ICgpID0+IHRoaXMuY2FuY2VsYnRubGFiZWw7XG4gICAgICAgIHRoaXMud2l6Q29udGV4dC5hY3Rpb25zYWxpZ25tZW50ID0gKCkgPT4gdGhpcy5hY3Rpb25zYWxpZ25tZW50O1xuICAgICAgICB0aGlzLndpekNvbnRleHQuZGlzYWJsZU5leHQgPSAoKSA9PiAhdGhpcy5lbmFibGVOZXh0O1xuICAgICAgICB0aGlzLndpekNvbnRleHQuZGlzYWJsZVByZXZpb3VzID0gKCkgPT4gIXRoaXMuZW5hYmxlUHJldjtcbiAgICAgICAgdGhpcy53aXpDb250ZXh0LmRpc2FibGVEb25lID0gKCkgPT4gIXRoaXMuZW5hYmxlRG9uZTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICBzdHlsZXIoXG4gICAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLnBhbmVsLWJvZHknKSBhcyBIVE1MRWxlbWVudCxcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICBBUFBMWV9TVFlMRVNfVFlQRS5JTk5FUl9TSEVMTFxuICAgICAgICApO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsgaWYoJCh3aW5kb3cpLndpZHRoKCk8NzY4KSB7XG4gICAgICAgICAgICAkKFwiLmFwcC13aXphcmRcIikucmVtb3ZlQ2xhc3MoXCJ2ZXJ0aWNhbFwiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnVwZGF0ZUFjdGlvbkJ1dHRvbk5hbWVzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhcHAtd2l6YXJkLWhlYWRpbmdcIj5cbiAgICA8dWwgY2xhc3M9XCJhcHAtd2l6YXJkLXN0ZXBzIG5hdiBuYXYtcGlsbHMge3tzdGVwQ2xhc3N9fVwiPlxuICAgICAgICA8bGkgY2xhc3M9XCJhcHAtd2l6YXJkLXN0ZXBcIiAqbmdGb3I9XCJsZXQgc3RlcCBvZiBzdGVwczsgbGV0IGkgPSBpbmRleFwiIFtoaWRkZW5dPVwiIXN0ZXAuc2hvd1wiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7YWN0aXZlOiBzdGVwLmRvbmUsIGN1cnJlbnQ6IHN0ZXAuYWN0aXZlLCBkaXNhYmxlZDogc3RlcC5kaXNhYmxlZH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uV2l6YXJkSGVhZGVyQ2xpY2soJGV2ZW50LCBzdGVwKVwiPlxuICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIFthdHRyLmFyaWEtY3VycmVudF09XCJzdGVwLmFjdGl2ZSA/ICdzdGVwJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJzdGVwLmRpc2FibGVkXCIgW2F0dHIudGl0bGVdPVwic3RlcC50aXRsZVwiXG4gICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7J3RpdGxlLWNlbnRlci1hbGlnbic6Y2xhc3MgJiYgY2xhc3MuaW5jbHVkZXMoJ2NsYXNzaWMnKSAmJiAhc3RlcC5zdWJ0aXRsZX1cIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93XCIgKm5nSWY9XCJjbGFzcyAmJiBjbGFzcy5pbmNsdWRlcygnY2xhc3NpYycpXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwid2l6YXJkLXN0ZXAtbnVtYmVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY291bnRcIiAqbmdJZj1cImNsYXNzICYmIGNsYXNzLmluY2x1ZGVzKCdudW1iZXInKSAmJiAhc3RlcC5pc0RvbmVcIj57e2krMX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImRvdHRlZHN0ZXBwZXJcIiAqbmdJZj1cImNsYXNzICYmIChjbGFzcy5pbmNsdWRlcygnZG90dGVkc3RlcHBlcicpIHx8IGNsYXNzLmluY2x1ZGVzKCd0ZXh0LWlubGluZScpICYmICFjbGFzcy5pbmNsdWRlcygnaWNvbnN0ZXBwZXInKSkgJiYgIXN0ZXAuaXNEb25lXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImFwcC1pY29uIHdpIHdpLWRvbmVcIiAqbmdJZj1cImNsYXNzICYmIChjbGFzcy5pbmNsdWRlcygnZG90dGVkc3RlcHBlcicpIHx8IGNsYXNzLmluY2x1ZGVzKCdudW1iZXInKSkgJiYgc3RlcC5pc0RvbmVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYXBwLWljb24ge3tzdGVwLmljb25jbGFzc319XCIgKm5nSWY9XCIoY2xhc3MgJiYgY2xhc3MuaW5jbHVkZXMoJ2ljb25zdGVwcGVyJykpICYmICgoc3RlcC5pY29uY2xhc3MgJiYgIXN0ZXAuaXNEb25lKSB8fCAoc3RlcC5pY29uY2xhc3MgJiYgc3RlcC5pc0RvbmUgJiYgc3RlcC5kb25laWNvbmNsYXNzID09PScnKSlcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiYXBwLWljb24ge3tzdGVwLmRvbmVpY29uY2xhc3N9fVwiICpuZ0lmPVwic3RlcC5kb25laWNvbmNsYXNzICYmIHN0ZXAuaXNEb25lICYmIChjbGFzcyAmJiBjbGFzcy5pbmNsdWRlcygnaWNvbnN0ZXBwZXInKSlcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGUtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNsYXNzICYmIGNsYXNzLmluY2x1ZGVzKCd0ZXh0LWlubGluZScpXCI+e3snMCcgKyAoaSsxKX19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXAtdGl0bGVcIiBbdGV4dENvbnRlbnRdPVwic3RlcC50aXRsZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdWJ0aXRsZS13cmFwcGVyXCIgW2F0dHIudGl0bGVdPVwic3RlcC5zdWJ0aXRsZVwiICpuZ0lmPVwic3RlcC5zdWJ0aXRsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXAtdGl0bGVcIiBbdGV4dENvbnRlbnRdPVwic3RlcC5zdWJ0aXRsZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJyZWFkX21vcmVcIiAoY2xpY2spPVwicmVhZE1vcmVTdWJ0aXRsZSgpXCIgc3R5bGU9XCJkaXNwbGF5Om5vbmVcIj5tb3JlPC9hPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgPC9saT5cbiAgICA8L3VsPlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwiYXBwLXdpemFyZC1ib2R5IHBhbmVsLWJvZHlcIj5cbiAgICA8cCB3bU1lc3NhZ2UgKm5nSWY9XCJtZXNzYWdlLmNhcHRpb25cIiBjYXB0aW9uLmJpbmQ9XCJtZXNzYWdlLmNhcHRpb25cIiB0eXBlLmJpbmQ9XCJtZXNzYWdlLnR5cGVcIj48L3A+XG4gICAgPG5nLWNvbnRlbnQgbmdQcm9qZWN0QXM9XCJmb3JtW3dtV2l6YXJkU3RlcF1cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbkBpZiAod2l6YXJkQWN0aW9uKSB7XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIndpemFyZEFjdGlvblwiPjwvbmctY29udGFpbmVyPlxufSBAZWxzZSB7XG4gICAgPGRpdiBjbGFzcz1cImFwcC13aXphcmQtYWN0aW9ucyBwYW5lbC1mb290ZXIge3thY3Rpb25zYWxpZ25tZW50fX1cIj5cbiAgICAgICAgQGlmKGN1cnJlbnRTdGVwPy5lbmFibGVza2lwKSB7XG4gICAgICAgICAgICA8YSBjbGFzcz1cImFwcC13aXphcmQtc2tpcFwiIG5hbWU9XCJza2lwU3RlcF97e25hbWV9fVwiIHRpdGxlPVwiU2tpcCBzdGVwXCIgKGNsaWNrKT1cInNraXAoKVwiPlNraXAgJnJhcXVvOzwvYT5cbiAgICAgICAgfVxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXdpemFyZC1hY3Rpb25zLXJpZ2h0XCI+XG4gICAgICAgICAgICBAaWYoY2FuY2VsYWJsZSkge1xuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG5hbWU9XCJjYW5jZWxCdG5fe3tuYW1lfX1cIiBjbGFzcz1cImJ0biBhcHAtYnV0dG9uIGJ0bi1kZWZhdWx0XCIgKGNsaWNrKT1cImNhbmNlbCgpXCIgW3RpdGxlXT1cImNhbmNlbGJ0bmxhYmVsXCIgW3RleHRDb250ZW50XT1cImNhbmNlbGJ0bmxhYmVsXCI+PC9idXR0b24+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYoaGFzUHJldlN0ZXApIHtcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBuYW1lPVwicHJldmlvdXNCdG5fe3tuYW1lfX1cIiBjbGFzcz1cImJ0biBhcHAtYnV0dG9uIGJ0bi1kZWZhdWx0XCIgKGNsaWNrKT1cInByZXYoKVwiIFtkaXNhYmxlZF09XCIhZW5hYmxlUHJldlwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImFwcC1pY29uIHdpIHdpLWNoZXZyb24tbGVmdFwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJidG4tY2FwdGlvblwiIFt0ZXh0Q29udGVudF09XCJwcmV2aW91c2J0bmxhYmVsXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmKGhhc05leHRTdGVwKSB7XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbmFtZT1cIm5leHRCdG5fe3tuYW1lfX1cIiBjbGFzcz1cImJ0biBhcHAtYnV0dG9uIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cIm5leHQoKVwiIFtkaXNhYmxlZF09XCIhZW5hYmxlTmV4dFwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ0bi1jYXB0aW9uXCIgW3RleHRDb250ZW50XT1cIm5leHRidG5sYWJlbFwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJhcHAtaWNvbiB3aSB3aS1jaGV2cm9uLXJpZ2h0XCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmKHNob3dEb25lQnRuKSB7XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbmFtZT1cImRvbmVCdG5fe3tuYW1lfX1cIiBjbGFzcz1cImJ0biBhcHAtYnV0dG9uIGJ0bi1zdWNjZXNzXCIgKGNsaWNrKT1cImRvbmUoKVwiIFtkaXNhYmxlZF09XCIhZW5hYmxlRG9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImFwcC1pY29uIHdtLXNsLWwgc2wtY2hlY2tcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnRuLWNhcHRpb25cIiBbdGV4dENvbnRlbnRdPVwiZG9uZWJ0bmxhYmVsXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbn1cbiJdfQ==
500
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9jb250YWluZXJzL3dpemFyZC9zcmMvd2l6YXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvd2lkZ2V0cy9jb250YWluZXJzL3dpemFyZC9zcmMvd2l6YXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHSCxTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixNQUFNLEVBQ04sUUFBUSxFQUVSLFFBQVEsRUFDUixTQUFTLEVBQ1QsSUFBSSxFQUNKLFdBQVcsRUFDZCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQzlCLE9BQU8sRUFDSCxpQkFBaUIsRUFFakIsa0JBQWtCLEVBQ2xCLE1BQU0sRUFDTixpQkFBaUIsRUFDakIsT0FBTyxFQUNWLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7Ozs7O0lDbEIxRCwyQkFBc0U7OztJQUVsRSxnQ0FBOEU7SUFBQSxZQUFPO0lBQUEsaUJBQU87OztJQUFkLGNBQU87SUFBUCw4QkFBTzs7O0lBQ3JGLHdCQUFtSzs7O0lBQ25LLHdCQUFpSTs7O0lBQ2pJLG9CQUFpTTs7O0lBQTlMLDZEQUFtQzs7O0lBQ3RDLG9CQUFxSTs7O0lBQWxJLGlFQUF1Qzs7O0lBRzFDLDRCQUFxRDtJQUFBLFlBQWU7SUFBQSxpQkFBTzs7O0lBQXRCLGNBQWU7SUFBZixzQ0FBZTs7OztJQUd4RSxnQ0FBa0Y7SUFDOUUsMkJBQThEO0lBQzlELDZCQUF1RTtJQUFsRCw4S0FBUyx5QkFB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QUFVLEVBQUUsR0FBRyxFQUFFLEdBQUcsT0FBTyxFQUFFLENBQUEsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBQztpQkFDbkU7O3NCQTREMkIsSUFBSTs7c0JBQUksTUFBTTt1QkFBQyxPQUFPOztzQkFBeUIsTUFBTTt1QkFBQyxrQkFBa0I7O3NCQUFHLFFBQVE7cUJBdkR6RSxLQUFLO2tCQUExQyxlQUFlO21CQUFDLG1CQUFtQjtZQUNxQyxZQUFZO2tCQUFwRixZQUFZO21CQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRTs7a0ZBSjlELGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBJbmplY3QsXG4gICAgSW5qZWN0b3IsXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTZWxmLFxuICAgIFRlbXBsYXRlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge25vb3B9IGZyb20gJ0B3bS9jb3JlJztcbmltcG9ydCB7XG4gICAgQVBQTFlfU1RZTEVTX1RZUEUsXG4gICAgSVdpZGdldENvbmZpZyxcbiAgICBwcm92aWRlQXNXaWRnZXRSZWYsXG4gICAgc3R5bGVyLFxuICAgIFN0eWxhYmxlQ29tcG9uZW50LFxuICAgIENvbnRleHRcbn0gZnJvbSAnQHdtL2NvbXBvbmVudHMvYmFzZSc7XG5cbmltcG9ydCB7IHJlZ2lzdGVyUHJvcHMgfSBmcm9tICcuL3dpemFyZC5wcm9wcyc7XG5pbXBvcnQgeyBXaXphcmRTdGVwRGlyZWN0aXZlIH0gZnJvbSAnLi93aXphcmQtc3RlcC93aXphcmQtc3RlcC5kaXJlY3RpdmUnO1xuXG5jb25zdCBERUZBVUxUX0NMUyA9ICdhcHAtd2l6YXJkIHBhbmVsIGNsZWFyZml4JztcbmNvbnN0IFdJREdFVF9DT05GSUc6IElXaWRnZXRDb25maWcgPSB7XG4gICAgd2lkZ2V0VHlwZTogJ3dtLXdpemFyZCcsXG4gICAgaG9zdENsYXNzOiBERUZBVUxUX0NMU1xufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkaXZbd21XaXphcmRdJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vd2l6YXJkLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgcHJvdmlkZUFzV2lkZ2V0UmVmKFdpemFyZENvbXBvbmVudCksXG4gICAgICAgIHtwcm92aWRlOiBDb250ZXh0LCB1c2VGYWN0b3J5OiAoKSA9PiB7IHJldHVybiB7fSB9LCBtdWx0aTogdHJ1ZX1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFdpemFyZENvbXBvbmVudCBleHRlbmRzIFN0eWxhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0IHtcbiAgICBzdGF0aWMgaW5pdGlhbGl6ZVByb3BzID0gcmVnaXN0ZXJQcm9wcygpO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihXaXphcmRTdGVwRGlyZWN0aXZlKSBzdGVwczogUXVlcnlMaXN0PFdpemFyZFN0ZXBEaXJlY3RpdmU+O1xuICAgIEBDb250ZW50Q2hpbGQoJ3dpemFyZEFjdGlvbicsIHsgcmVhZDogVGVtcGxhdGVSZWYsIGRlc2NlbmRhbnRzOiBmYWxzZSB9KSB3aXphcmRBY3Rpb246IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBwdWJsaWMgbWVzc2FnZToge2NhcHRpb246IHN0cmluZywgdHlwZTogc3RyaW5nfTtcbiAgICBwdWJsaWMgY3VycmVudFN0ZXA6IFdpemFyZFN0ZXBEaXJlY3RpdmU7XG5cbiAgICBwdWJsaWMgc3RlcENsYXNzOiBzdHJpbmc7XG4gICAgcHVibGljIGNsYXNzO1xuICAgIHB1YmxpYyBuYW1lO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvbWlzZVJlc29sdmVyRm46IEZ1bmN0aW9uO1xuICAgIHB1YmxpYyBhY3Rpb25zYWxpZ25tZW50OiBhbnk7XG4gICAgcHVibGljIGNhbmNlbGFibGU6IGFueTtcbiAgICBwdWJsaWMgZW5hYmxlbmV4dDogYW55O1xuICAgIHB1YmxpYyB3aXpDb250ZXh0OiBhbnk7XG4gICAgcHVibGljIGNhbmNlbGJ0bmxhYmVsOiBhbnk7XG4gICAgcHVibGljIGRvbmVidG5sYWJlbDogYW55O1xuICAgIHB1YmxpYyBwcmV2aW91c2J0bmxhYmVsOiBhbnk7XG4gICAgcHVibGljIG5leHRidG5sYWJlbDogYW55O1xuXG4gICAgZ2V0IGhhc1ByZXZTdGVwKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaXNGaXJzdFN0ZXAodGhpcy5jdXJyZW50U3RlcCk7XG4gICAgfVxuXG4gICAgZ2V0IGhhc05leHRTdGVwKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMuaXNMYXN0U3RlcCh0aGlzLmN1cnJlbnRTdGVwKTtcbiAgICB9XG5cbiAgICBnZXQgc2hvd0RvbmVCdG4oKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhdGhpcy5oYXNOZXh0U3RlcCAmJiB0aGlzLmN1cnJlbnRTdGVwLmVuYWJsZURvbmU7XG4gICAgfVxuXG4gICAgZ2V0IGVuYWJsZVByZXYoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRTdGVwLmVuYWJsZVByZXY7XG4gICAgfVxuXG4gICAgZ2V0IGVuYWJsZU5leHQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5jdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmVuYWJsZW5leHQgPyB0cnVlIDogKHRoaXMuY3VycmVudFN0ZXAuZW5hYmxlTmV4dCAmJiB0aGlzLmN1cnJlbnRTdGVwLmlzVmFsaWQpO1xuICAgIH1cblxuICAgIGdldCBlbmFibGVEb25lKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMuY3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50U3RlcC5lbmFibGVEb25lICYmIHRoaXMuY3VycmVudFN0ZXAuaXNWYWxpZDtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihpbmo6IEluamVjdG9yLCBAU2VsZigpIEBJbmplY3QoQ29udGV4dCkgY29udGV4dHM6IEFycmF5PGFueT4sIEBJbmplY3QoJ0VYUExJQ0lUX0NPTlRFWFQnKSBAT3B0aW9uYWwoKSBleHBsaWNpdENvbnRleHQ6IGFueSkge1xuICAgICAgICBsZXQgcmVzb2x2ZUZuOiBGdW5jdGlvbiA9IG5vb3A7XG5cbiAgICAgICAgc3VwZXIoaW5qLCBXSURHRVRfQ09ORklHLCBleHBsaWNpdENvbnRleHQsIG5ldyBQcm9taXNlKHJlcyA9PiByZXNvbHZlRm4gPSByZXMpKTtcbiAgICAgICAgc3R5bGVyKHRoaXMubmF0aXZlRWxlbWVudCwgdGhpcywgQVBQTFlfU1RZTEVTX1RZUEUuU0hFTEwpO1xuXG4gICAgICAgIHRoaXMucHJvbWlzZVJlc29sdmVyRm4gPSByZXNvbHZlRm47XG5cbiAgICAgICAgLy8gaW5pdGlhbGl6ZSB0aGUgbWVzc2FnZSBvYmplY3Qgd2l0aCBkZWZhdWx0IHZhbHVlc1xuICAgICAgICB0aGlzLm1lc3NhZ2UgPSB7XG4gICAgICAgICAgICBjYXB0aW9uOiAnJyxcbiAgICAgICAgICAgIHR5cGU6ICcnXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMud2l6Q29udGV4dCA9IGNvbnRleHRzWzBdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgbmV4dCB2YWxpZCBzdGVwLiB0aGUgaW5kZXggcGFzc2VkIGlzIGFsc28gY2hlY2tlZCBpZiBpdHMgdmFsaWQgc3RlcFxuICAgICAqIEBwYXJhbSBpbmRleFxuICAgICAqIEByZXR1cm5zIHtXaXphcmRTdGVwRGlyZWN0aXZlfVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0TmV4dFZhbGlkU3RlcEZvcm1JbmRleChpbmRleDogbnVtYmVyKTogV2l6YXJkU3RlcERpcmVjdGl2ZSB7XG4gICAgICAgIGZvciAobGV0IGkgPSBpbmRleDsgaSA8IHRoaXMuc3RlcHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IHN0ZXAgPSB0aGlzLmdldFN0ZXBSZWZCeUluZGV4KGkpO1xuICAgICAgICAgICAgaWYgKHN0ZXAuc2hvdykge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdGVwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogcmV0dXJucyBwcmV2aW91cyB2YWxpZCBzdGVwLiB0aGUgaW5kZXggcGFzc2VkIGlzIGFsc28gY2hlY2tlZCBpZiBpdHMgdmFsaWQgc3RlcFxuICAgICAqIEBwYXJhbSBpbmRleFxuICAgICAqIEByZXR1cm5zIHtXaXphcmRTdGVwRGlyZWN0aXZlfVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0UHJldmlvdXNWYWxpZFN0ZXBGb3JtSW5kZXgoaW5kZXg6IG51bWJlcik6IFdpemFyZFN0ZXBEaXJlY3RpdmUge1xuICAgICAgICBmb3IgKGxldCBpID0gaW5kZXg7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCBzdGVwID0gdGhpcy5nZXRTdGVwUmVmQnlJbmRleChpKTtcbiAgICAgICAgICAgIGlmIChzdGVwLnNob3cpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3RlcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgY3VycmVudCBzdGVwIGluZGV4IHZhbHVlLlxuICAgICAqIEByZXR1cm5zIHtudW1iZXJ9XG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRDdXJyZW50U3RlcEluZGV4KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFN0ZXBJbmRleEJ5UmVmKHRoaXMuY3VycmVudFN0ZXApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHJldHVybnMgc3RlcFJlZiB3aGVuIGluZGV4IGlzIHBhc3NlZC5cbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAgICAgKiBAcmV0dXJucyB7V2l6YXJkU3RlcERpcmVjdGl2ZX1cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFN0ZXBSZWZCeUluZGV4KGluZGV4OiBudW1iZXIpOiBXaXphcmRTdGVwRGlyZWN0aXZlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHMudG9BcnJheSgpW2luZGV4XTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiByZXR1cm5zIHRoZSBpbmRleCB2YWx1ZSBvZiB0aGUgc3RlcC5cbiAgICAgKiBAcGFyYW0ge1dpemFyZFN0ZXBEaXJlY3RpdmV9IHdpemFyZFN0ZXBcbiAgICAgKiBAcmV0dXJucyB7bnVtYmVyfVxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0U3RlcEluZGV4QnlSZWYod2l6YXJkU3RlcDogV2l6YXJkU3RlcERpcmVjdGl2ZSk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLnRvQXJyYXkoKS5pbmRleE9mKHdpemFyZFN0ZXApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGdldHMgc3RlcFJlZiBieSBzZWFyY2hpbmcgb24gdGhlIG5hbWUgcHJvcGVydHkuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICAgKiBAcmV0dXJucyB7V2l6YXJkU3RlcERpcmVjdGl2ZX1cbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFN0ZXBSZWZCeU5hbWUobmFtZTogc3RyaW5nKTogV2l6YXJkU3RlcERpcmVjdGl2ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLmZpbmQoc3RlcCA9PiBzdGVwLm5hbWUgPT09IG5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIHNldHMgZGVmYXVsdCBzdGVwIGFzIGN1cnJlbnQgc3RlcCBpZiBjb25maWd1cmVkXG4gICAgICogb3IgZmluZHMgZmlyc3QgdmFsaWQgc3RlcCBhbmQgc2V0IGl0IGFzIGN1cnJlbnQgc3RlcC5cbiAgICAgKiBAcGFyYW0ge1dpemFyZFN0ZXBEaXJlY3RpdmV9IHN0ZXBcbiAgICAgKi9cbiAgICBwcml2YXRlIHNldERlZmF1bHRTdGVwKHN0ZXA6IFdpemFyZFN0ZXBEaXJlY3RpdmUpIHtcbiAgICAgICAgLy8gSWYgdGhlIGRlZmF1bHQgc3RlcCBoYXMgc2hvdyB0cnVlIHRoZW4gb25seSB1cGRhdGUgdGhlIGN1cnJlbnRTdGVwXG4gICAgICAgIGlmIChzdGVwICYmIHN0ZXAuc2hvdykge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50U3RlcCA9IHN0ZXA7XG4gICAgICAgICAgICBzdGVwLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICBzdGVwLmlzSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICAgICAgLy8gTWFyayBhbGwgcHJldmlvdXMgc3RlcCBzdGF0dXMgQ09NUExFVEVEXG4gICAgICAgICAgICBsZXQgaW5kZXggPSB0aGlzLmdldFN0ZXBJbmRleEJ5UmVmKHN0ZXApIC0gMTtcbiAgICAgICAgICAgIHdoaWxlIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcHJldlN0ZXAgPSB0aGlzLmdldFN0ZXBSZWZCeUluZGV4KGluZGV4KTtcbiAgICAgICAgICAgICAgICBwcmV2U3RlcC5kb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBwcmV2U3RlcC5pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpbmRleC0tO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gc2V0IG5leHQgdmFsaWQgc3RlcCBhcyBjdXJyZW50IHN0ZXBcbiAgICAgICAgICAgIHN0ZXAgPSB0aGlzLmdldE5leHRWYWxpZFN0ZXBGb3JtSW5kZXgoMCk7XG4gICAgICAgICAgICBpZiAoc3RlcCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdFN0ZXAoc3RlcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZGRNb3JlVGV4dCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNlbGVjdHMgdGhlIGFzc29jaWF0ZWQgc3RlcCB3aGVuIHRoZSB3aXphcmQgaGVhZGVyIGlzIGNsaWNrZWQuXG4gICAgICogQHBhcmFtICRldmVudFxuICAgICAqIEBwYXJhbSB7V2l6YXJkU3RlcERpcmVjdGl2ZX0gY3VycmVudFN0ZXBcbiAgICAgKi9cbiAgICBwcml2YXRlIG9uV2l6YXJkSGVhZGVyQ2xpY2soJGV2ZW50OiBFdmVudCwgY3VycmVudFN0ZXA6IFdpemFyZFN0ZXBEaXJlY3RpdmUpIHtcbiAgICAgICAgLy8gc2VsZWN0IHRoZSBzdGVwIGlmIGl0J3Mgc3RhdHVzIGlzIGRvbmVcbiAgICAgICAgaWYgKGN1cnJlbnRTdGVwLmRvbmUpIHtcbiAgICAgICAgICAgIC8vIHNldCBhbGwgdGhlIG5leHQgc3RlcHMgc3RhdHVzIGFzIGRpc2FibGVkIGFuZCBwcmV2aW91cyBzdGVwcyBhcyBkb25lXG4gICAgICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXAsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgdGhpcy5nZXRTdGVwSW5kZXhCeVJlZihjdXJyZW50U3RlcCkpIHtcbiAgICAgICAgICAgICAgICAgICBzdGVwLmRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgIHN0ZXAuaXNEb25lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5pc0RvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIHNldCB0aGUgc2VsZWN0ZWQgc3RlcCBhcyBjdXJyZW50IHN0ZXAgYW5kIG1ha2UgaXQgYWN0aXZlXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTdGVwID0gY3VycmVudFN0ZXA7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRTdGVwLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmFkZE1vcmVUZXh0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNZXRob2QgdG8gbmF2aWdhdGUgdG8gbmV4dCBzdGVwXG4gICAgcHVibGljIG5leHQoZXZlbnROYW1lOiBzdHJpbmcgPSAnbmV4dCcpIHtcbiAgICAgICAgY29uc3QgY3VycmVudFN0ZXAgPSB0aGlzLmN1cnJlbnRTdGVwO1xuICAgICAgICBjb25zdCBjdXJyZW50U3RlcEluZGV4ID0gdGhpcy5nZXRDdXJyZW50U3RlcEluZGV4KCk7XG5cbiAgICAgICAgLy8gYWJvcnQgaWYgb25Ta2lwIG1ldGhvZCByZXR1cm5zIGZhbHNlXG4gICAgICAgIGlmIChldmVudE5hbWUgPT09ICdza2lwJykge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRTdGVwLmludm9rZVNraXBDQihjdXJyZW50U3RlcEluZGV4KSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmV4dGVuZE5leHRGbihjdXJyZW50U3RlcCwgY3VycmVudFN0ZXBJbmRleCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5jdXJyZW50U3RlcC5pc1ZhbGlkICYmIGV2ZW50TmFtZSA9PT0gJ25leHQnKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFN0ZXAuaW52b2tlTmV4dENCKGN1cnJlbnRTdGVwSW5kZXgpID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZXh0ZW5kTmV4dEZuKGN1cnJlbnRTdGVwLCBjdXJyZW50U3RlcEluZGV4KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmVuYWJsZW5leHQgJiYgIXRoaXMuY3VycmVudFN0ZXAuaXNWYWxpZCl7XG4gICAgICAgICAgICBBcnJheS5mcm9tKCg8YW55PnRoaXMpLmN1cnJlbnRTdGVwLmdldEFsbEVtYmVkZGVkRm9ybXMoKSk/LmZvckVhY2goKGZvcm06YW55KSA9PiB7XG4gICAgICAgICAgICAgICAgZm9ybS53aWRnZXQuaGlnaGxpZ2h0SW52YWxpZEZpZWxkcygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBleHRlbmROZXh0Rm4oY3VycmVudFN0ZXAsIGN1cnJlbnRTdGVwSW5kZXgpe1xuICAgICAgICBsZXQgbmV4dFN0ZXA6IFdpemFyZFN0ZXBEaXJlY3RpdmU7XG4gICAgICAgIG5leHRTdGVwID0gdGhpcy5nZXROZXh0VmFsaWRTdGVwRm9ybUluZGV4KGN1cnJlbnRTdGVwSW5kZXggKyAxKTtcbiAgICAgICAgbmV4dFN0ZXAuaXNJbml0aWFsaXplZCA9IHRydWU7XG5cbiAgICAgICAgLy8gSWYgdGhlcmUgYXJlIGFueSBzdGVwcyB3aGljaCBoYXMgc2hvdyB0aGVuIG9ubHkgY2hhbmdlIHN0YXRlIG9mIGN1cnJlbnQgc3RlcCBlbHNlIHJlbWFpbiBzYW1lXG4gICAgICAgIGlmIChuZXh0U3RlcCkge1xuICAgICAgICAgICAgY3VycmVudFN0ZXAuaXNEb25lID0gdHJ1ZTtcbiAgICAgICAgICAgIGN1cnJlbnRTdGVwLmRvbmUgPSB0cnVlO1xuICAgICAgICAgICAgbmV4dFN0ZXAuYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFN0ZXAgPSBuZXh0U3RlcDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFkZE1vcmVUZXh0KCk7XG4gICAgfVxuICAgIC8vIE1ldGhvZCB0byBuYXZpZ2F0ZSB0byBwcmV2aW91cyBzdGVwXG4gICAgcHVibGljIHByZXYoKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gdGhpcy5jdXJyZW50U3RlcDtcbiAgICAgICAgY29uc3QgY3VycmVudFN0ZXBJbmRleCA9IHRoaXMuZ2V0Q3VycmVudFN0ZXBJbmRleCgpO1xuXG4gICAgICAgIGxldCBwcmV2U3RlcDogV2l6YXJkU3RlcERpcmVjdGl2ZTtcblxuICAgICAgICAvLyBhYm9ydCBpZiBvblByZXYgbWV0aG9kIHJldHVybnMgZmFsc2UuXG4gICAgICAgIGlmIChjdXJyZW50U3RlcC5pbnZva2VQcmV2Q0IoY3VycmVudFN0ZXBJbmRleCkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBwcmV2U3RlcCA9IHRoaXMuZ2V0UHJldmlvdXNWYWxpZFN0ZXBGb3JtSW5kZXgoY3VycmVudFN0ZXBJbmRleCAtIDEpO1xuXG4gICAgICAgIC8vIElmIHRoZXJlIGFyZSBhbnkgc3RlcHMgd2hpY2ggaGFzIHNob3cgdGhlbiBvbmx5IGNoYW5nZSBzdGF0ZSBvZiBjdXJyZW50IHN0ZXAgZWxzZSByZW1haW4gc2FtZVxuICAgICAgICBpZiAocHJldlN0ZXApIHtcbiAgICAgICAgICAgIGN1cnJlbnRTdGVwLmlzRG9uZSA9IGZhbHNlO1xuICAgICAgICAgICAgY3VycmVudFN0ZXAuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICAgICAgcHJldlN0ZXAuYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFN0ZXAgPSBwcmV2U3RlcDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFkZE1vcmVUZXh0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNraXAoKSB7XG4gICAgICAgIHRoaXMubmV4dCgnc2tpcCcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnb3RvU3RlcChzdGVwTmFtZTogc3RyaW5nKSB7XG4gICAgICAgIGlmKHN0ZXBOYW1lKSB7XG4gICAgICAgICAgICBjb25zdCBnb3RvU3RlcEluZGV4ID0gdGhpcy5zdGVwcy50b0FycmF5KCkubWFwKHN0ZXAgPT4gc3RlcC5uYW1lKS5pbmRleE9mKHN0ZXBOYW1lKTtcbiAgICAgICAgICAgIGlmKGdvdG9TdGVwSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZ290b1N0ZXA6IFdpemFyZFN0ZXBEaXJlY3RpdmUgPSB0aGlzLmdldFN0ZXBSZWZCeUluZGV4KGdvdG9TdGVwSW5kZXgpO1xuICAgICAgICAgICAgICAgIGlmKGdvdG9TdGVwPy5zaG93KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25XaXphcmRIZWFkZXJDbGljayhldmVudCwgZ290b1N0ZXApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJUaGUgZ290b1N0ZXAgZnVuY3Rpb24gY2Fubm90IG5hdmlnYXRlIHRvIGhpZGRlbiBzdGVwc1wiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYENvdWxkIG5vdCBmaW5kIHN0ZXAgJyR7c3RlcE5hbWV9J2ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gTWV0aG9kIHRvIGludm9rZSBvbi1Eb25lIGV2ZW50IG9uIHdpemFyZFxuICAgIHB1YmxpYyBkb25lKCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRTdGVwLmlzRG9uZSA9IHRydWU7XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnZG9uZScsIHtzdGVwczogdGhpcy5zdGVwcy50b0FycmF5KCl9KTtcbiAgICB9XG4gICAgLy8gTWV0aG9kIHRvIGludm9rZSBvbi1DYW5jZWwgZXZlbnQgb24gd2l6YXJkXG4gICAgcHVibGljIGNhbmNlbCAoKSB7XG4gICAgICAgIHRoaXMuaW52b2tlRXZlbnRDYWxsYmFjaygnY2FuY2VsJywge3N0ZXBzOiB0aGlzLnN0ZXBzLnRvQXJyYXkoKX0pO1xuICAgIH1cbiAgICBwdWJsaWMgYWRkTW9yZVRleHQoKXtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG5cblxuICAgICAgICB2YXIgbmV3V2luZG93V2lkdGggPSAkKHdpbmRvdykud2lkdGgoKTtcbiAgICAgICAgaWYobmV3V2luZG93V2lkdGggPCA3Njgpe1xuICAgICAgICAkKFwiLmFwcC13aXphcmQtc3RlcC5jdXJyZW50IC5zdWJ0aXRsZS13cmFwcGVyIC5zdGVwLXRpdGxlXCIpLmNzcyh7XCJoZWlnaHRcIjpcImF1dG9cIixcImRpc3BsYXlcIjpcImJsb2NrXCJ9KTtcbiAgICAgICAgdmFyIHN1YnRpdGxlVGV4dExlbmd0aCA9ICQoXCIuYXBwLXdpemFyZC1zdGVwLmN1cnJlbnQgLnN1YnRpdGxlLXdyYXBwZXIgLnN0ZXAtdGl0bGVcIikuaGVpZ2h0KCk7XG4gICAgICAgICQoXCIucmVhZF9tb3JlXCIpLmNzcyhcImRpc3BsYXlcIixcIm5vbmVcIik7XG4gICAgICAgICQoXCIuY3VycmVudCAuc3VidGl0bGUtd3JhcHBlclwiKS5yZW1vdmVDbGFzcyhcInJlYWRtb3JlX3N1YnRpdGxlXCIpO1xuXG4gICAgICAgIGlmKHN1YnRpdGxlVGV4dExlbmd0aD40NCl7XG4gICAgICAgICAgICAkKFwiLmFwcC13aXphcmQtc3RlcC5jdXJyZW50IC5zdWJ0aXRsZS13cmFwcGVyIC5zdGVwLXRpdGxlXCIpLmNzcyh7XCJoZWlnaHRcIjpcIjQ0cHhcIixcImRpc3BsYXlcIjpcIi13ZWJraXQtYm94XCJ9KTtcbiAgICAgICAgICAgICQoXCIuY3VycmVudCAucmVhZF9tb3JlXCIpLmNzcyhcImRpc3BsYXlcIixcImJsb2NrXCIpO1xuICAgICAgICAgICAgJChcIi5hY3RpdmUgLnJlYWRfbW9yZVwiKS5jc3MoXCJkaXNwbGF5XCIsXCJub25lXCIpO1xuICAgICAgICAgICAgJChcIi5kaXNhYmxlIC5yZWFkX21vcmVcIikuY3NzKFwiZGlzcGxheVwiLFwibm9uZVwiKTtcbiAgICAgICAgICAgICQoXCIuYXBwLXdpemFyZC1zdGVwPmFcIikuY3NzKFwiaGVpZ2h0XCIsXCIxMDBweFwiKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICB9XG4gICAgcHVibGljIHJlYWRNb3JlU3VidGl0bGUoKXtcbiAgICAgICAgJChcIi5jdXJyZW50IC5zdWJ0aXRsZS13cmFwcGVyXCIpLmFkZENsYXNzKFwicmVhZG1vcmVfc3VidGl0bGVcIik7XG4gICAgICAgICQoXCIuY3VycmVudCAucmVhZF9tb3JlXCIpLmNzcyhcImRpc3BsYXlcIixcIm5vbmVcIik7XG4gICAgICAgICQoZG9jdW1lbnQpLm9uKFwibW91c2V1cFwiLGZ1bmN0aW9uKGU6YW55KVxuICAgICAgICB7XG4gICAgICAgICAgICB2YXIgY29udGFpbmVyID0gJChcIi5zdWJ0aXRsZS13cmFwcGVyXCIpO1xuICAgICAgICAgICAgLy8gaWYgdGhlIHRhcmdldCBvZiB0aGUgY2xpY2sgaXNuJ3QgdGhlIGNvbnRhaW5lciBub3IgYSBkZXNjZW5kYW50IG9mIHRoZSBjb250YWluZXJcbiAgICAgICAgICAgIGlmICghY29udGFpbmVyLmlzKGUudGFyZ2V0KSAmJiBjb250YWluZXIuaGFzKGUudGFyZ2V0KS5sZW5ndGggPT09IDApXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgJChcIi5jdXJyZW50IC5zdWJ0aXRsZS13cmFwcGVyXCIpLnJlbW92ZUNsYXNzKFwicmVhZG1vcmVfc3VidGl0bGVcIik7XG4gICAgICAgICAgICAgICAgJChcIi5jdXJyZW50IC5yZWFkX21vcmVcIikuY3NzKFwiZGlzcGxheVwiLFwiYmxvY2tcIik7XG4gICAgICAgICAgICAgICAgJChkb2N1bWVudCkub2ZmKFwibW91c2V1cFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ZpcnN0U3RlcChzdGVwUmVmOiBXaXphcmRTdGVwRGlyZWN0aXZlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLmZpcnN0ID09PSBzdGVwUmVmO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNMYXN0U3RlcChzdGVwUmVmOiBXaXphcmRTdGVwRGlyZWN0aXZlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLmxhc3QgPT09IHN0ZXBSZWY7XG4gICAgfVxuXG5cbiAgICAvLyBEZWZpbmUgdGhlIHByb3BlcnR5IGNoYW5nZSBoYW5kbGVyLiBUaGlzIE1ldGhvZCB3aWxsIGJlIHRyaWdnZXJlZCB3aGVuIHRoZXJlIGlzIGEgY2hhbmdlIGluIHRoZSB3aWRnZXQgcHJvcGVydHlcbiAgICBvblByb3BlcnR5Q2hhbmdlKGtleTogc3RyaW5nLCBudjogYW55LCBvdj86IGFueSkge1xuICAgICAgICAvLyBNb25pdG9yaW5nIGNoYW5nZXMgZm9yIHByb3BlcnRpZXMgYW5kIGFjY29yZGluZ2x5IGhhbmRsaW5nIHJlc3BlY3RpdmUgY2hhbmdlc1xuXG4gICAgICAgIGlmIChrZXkgPT09ICdzdGVwc3R5bGUnKSB7XG4gICAgICAgICAgICB0aGlzLnN0ZXBDbGFzcyA9ICBudiA9PT0gJ2p1c3RpZmllZCcgPyAnbmF2LWp1c3RpZmllZCcgOiAnJztcbiAgICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdkZWZhdWx0c3RlcCcpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGVmYXVsdFN0ZXAodGhpcy5nZXRTdGVwUmVmQnlOYW1lKG52KSk7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSAnYWN0aW9uc2FsaWdubWVudCcpIHtcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdkaXYuYXBwLXdpemFyZC1hY3Rpb25zJyk/LmNsYXNzTGlzdC5yZXBsYWNlKG92LCBudik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzdXBlci5vblByb3BlcnR5Q2hhbmdlKGtleSwgbnYsIG92KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdBZnRlckNvbnRlbnRJbml0KCk7XG4gICAgICAgIHRoaXMucHJvbWlzZVJlc29sdmVyRm4oKTtcbiAgICAgICAgdGhpcy53aXpDb250ZXh0Lmhhc05leHRTdGVwID0gKCkgPT4gdGhpcy5oYXNOZXh0U3RlcDtcbiAgICAgICAgdGhpcy53aXpDb250ZXh0Lmhhc1ByZXZpb3VzU3RlcCA9ICgpID0+IHRoaXMuaGFzUHJldlN0ZXA7XG4gICAgICAgIHRoaXMud2l6Q29udGV4dC5oYXNOb05leHRTdGVwID0gKCkgPT4gdGhpcy5zaG93RG9uZUJ0bjtcbiAgICAgICAgdGhpcy53aXpDb250ZXh0LmNhbmNlbGFibGUgPSAoKSA9PiB0aGlzLmNhbmNlbGFibGU7XG4gICAgICAgIHRoaXMud2l6Q29udGV4dC5za2lwcGFibGUgPSAoKSA9PiB0aGlzLmN1cnJlbnRTdGVwPy5lbmFibGVza2lwO1xuICAgICAgICB0aGlzLndpekNvbnRleHQubmV4dCA9ICgpID0+IHRoaXMubmV4dCgpO1xuICAgICAgICB0aGlzLndpekNvbnRleHQucHJldmlvdXMgPSAoKSA9PiB0aGlzLnByZXYoKTtcbiAgICAgICAgdGhpcy53aXpDb250ZXh0LmRvbmUgPSAoKSA9PiB0aGlzLmRvbmUoKTtcbiAgICAgICAgdGhpcy53aXpDb250ZXh0LmNhbmNlbCA9ICgpID0+IHRoaXMuY2FuY2VsKCk7XG4gICAgICAgIHRoaXMud2l6Q29udGV4dC5za2lwID0gKCkgPT4gdGhpcy5za2lwKCk7XG4gICAgICAgIHRoaXMud2l6Q29udGV4dC5uZXh0YnRubGFiZWwgPSAoKSA9PiB0aGlzLm5leHRidG5sYWJlbDtcbiAgICAgICAgdGhpcy53aXpDb250ZXh0LnByZXZpb3VzYnRubGFiZWwgPSAoKSA9PiB0aGlzLnByZXZpb3VzYnRubGFiZWw7XG4gICAgICAgIHRoaXMud2l6Q29udGV4dC5kb25lYnRubGFiZWwgPSAoKSA9PiB0aGlzLmRvbmVidG5sYWJlbDtcbiAgICAgICAgdGhpcy53aXpDb250ZXh0LmNhbmNlbGJ0bmxhYmVsID0gKCkgPT4gdGhpcy5jYW5jZWxidG5sYWJlbDtcbiAgICAgICAgdGhpcy53aXpDb250ZXh0LmFjdGlvbnNhbGlnbm1lbnQgPSAoKSA9PiB0aGlzLmFjdGlvbnNhbGlnbm1lbnQ7XG4gICAgICAgIHRoaXMud2l6Q29udGV4dC5kaXNhYmxlTmV4dCA9ICgpID0+ICF0aGlzLmVuYWJsZU5leHQ7XG4gICAgICAgIHRoaXMud2l6Q29udGV4dC5kaXNhYmxlUHJldmlvdXMgPSAoKSA9PiAhdGhpcy5lbmFibGVQcmV2O1xuICAgICAgICB0aGlzLndpekNvbnRleHQuZGlzYWJsZURvbmUgPSAoKSA9PiAhdGhpcy5lbmFibGVEb25lO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgICAgIHN0eWxlcihcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcucGFuZWwtYm9keScpIGFzIEhUTUxFbGVtZW50LFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIEFQUExZX1NUWUxFU19UWVBFLklOTkVSX1NIRUxMXG4gICAgICAgICk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4geyBpZigkKHdpbmRvdykud2lkdGgoKTw3NjgpIHtcbiAgICAgICAgICAgICQoXCIuYXBwLXdpemFyZFwiKS5yZW1vdmVDbGFzcyhcInZlcnRpY2FsXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCdkaXYuYXBwLXdpemFyZC1hY3Rpb25zLXJpZ2h0Jyk/LmNsYXNzTGlzdC5yZW1vdmUoJ2FwcC1jb250YWluZXInKTtcbiAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJ2Rpdi5hcHAtd2l6YXJkLWFjdGlvbnMnKT8uY2xhc3NMaXN0LmFkZCh0aGlzLmFjdGlvbnNhbGlnbm1lbnQpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiYXBwLXdpemFyZC1oZWFkaW5nXCI+XG4gICAgPHVsIGNsYXNzPVwiYXBwLXdpemFyZC1zdGVwcyBuYXYgbmF2LXBpbGxzIHt7c3RlcENsYXNzfX1cIj5cbiAgICAgICAgPGxpIGNsYXNzPVwiYXBwLXdpemFyZC1zdGVwXCIgKm5nRm9yPVwibGV0IHN0ZXAgb2Ygc3RlcHM7IGxldCBpID0gaW5kZXhcIiBbaGlkZGVuXT1cIiFzdGVwLnNob3dcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie2FjdGl2ZTogc3RlcC5kb25lLCBjdXJyZW50OiBzdGVwLmFjdGl2ZSwgZGlzYWJsZWQ6IHN0ZXAuZGlzYWJsZWR9XCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbldpemFyZEhlYWRlckNsaWNrKCRldmVudCwgc3RlcClcIj5cbiAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiBbYXR0ci5hcmlhLWN1cnJlbnRdPVwic3RlcC5hY3RpdmUgPyAnc3RlcCcgOiBudWxsXCJcbiAgICAgICAgICAgICAgIFthdHRyLmFyaWEtZGlzYWJsZWRdPVwic3RlcC5kaXNhYmxlZFwiIFthdHRyLnRpdGxlXT1cInN0ZXAudGl0bGVcIlxuICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyd0aXRsZS1jZW50ZXItYWxpZ24nOmNsYXNzICYmIGNsYXNzLmluY2x1ZGVzKCdjbGFzc2ljJykgJiYgIXN0ZXAuc3VidGl0bGV9XCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhcnJvd1wiICpuZ0lmPVwiY2xhc3MgJiYgY2xhc3MuaW5jbHVkZXMoJ2NsYXNzaWMnKVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIndpemFyZC1zdGVwLW51bWJlclwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNvdW50XCIgKm5nSWY9XCJjbGFzcyAmJiBjbGFzcy5pbmNsdWRlcygnbnVtYmVyJykgJiYgIXN0ZXAuaXNEb25lXCI+e3tpKzF9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJkb3R0ZWRzdGVwcGVyXCIgKm5nSWY9XCJjbGFzcyAmJiAoY2xhc3MuaW5jbHVkZXMoJ2RvdHRlZHN0ZXBwZXInKSB8fCBjbGFzcy5pbmNsdWRlcygndGV4dC1pbmxpbmUnKSAmJiAhY2xhc3MuaW5jbHVkZXMoJ2ljb25zdGVwcGVyJykpICYmICFzdGVwLmlzRG9uZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJhcHAtaWNvbiB3aSB3aS1kb25lXCIgKm5nSWY9XCJjbGFzcyAmJiAoY2xhc3MuaW5jbHVkZXMoJ2RvdHRlZHN0ZXBwZXInKSB8fCBjbGFzcy5pbmNsdWRlcygnbnVtYmVyJykpICYmIHN0ZXAuaXNEb25lXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImFwcC1pY29uIHt7c3RlcC5pY29uY2xhc3N9fVwiICpuZ0lmPVwiKGNsYXNzICYmIGNsYXNzLmluY2x1ZGVzKCdpY29uc3RlcHBlcicpKSAmJiAoKHN0ZXAuaWNvbmNsYXNzICYmICFzdGVwLmlzRG9uZSkgfHwgKHN0ZXAuaWNvbmNsYXNzICYmIHN0ZXAuaXNEb25lICYmIHN0ZXAuZG9uZWljb25jbGFzcyA9PT0nJykpXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImFwcC1pY29uIHt7c3RlcC5kb25laWNvbmNsYXNzfX1cIiAqbmdJZj1cInN0ZXAuZG9uZWljb25jbGFzcyAmJiBzdGVwLmlzRG9uZSAmJiAoY2xhc3MgJiYgY2xhc3MuaW5jbHVkZXMoJ2ljb25zdGVwcGVyJykpXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjbGFzcyAmJiBjbGFzcy5pbmNsdWRlcygndGV4dC1pbmxpbmUnKVwiPnt7JzAnICsgKGkrMSl9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwLXRpdGxlXCIgW3RleHRDb250ZW50XT1cInN0ZXAudGl0bGVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3VidGl0bGUtd3JhcHBlclwiIFthdHRyLnRpdGxlXT1cInN0ZXAuc3VidGl0bGVcIiAqbmdJZj1cInN0ZXAuc3VidGl0bGVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGVwLXRpdGxlXCIgW3RleHRDb250ZW50XT1cInN0ZXAuc3VidGl0bGVcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwicmVhZF9tb3JlXCIgKGNsaWNrKT1cInJlYWRNb3JlU3VidGl0bGUoKVwiIHN0eWxlPVwiZGlzcGxheTpub25lXCI+bW9yZTwvYT5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2E+XG4gICAgICAgIDwvbGk+XG4gICAgPC91bD5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImFwcC13aXphcmQtYm9keSBwYW5lbC1ib2R5XCI+XG4gICAgPHAgd21NZXNzYWdlICpuZ0lmPVwibWVzc2FnZS5jYXB0aW9uXCIgY2FwdGlvbi5iaW5kPVwibWVzc2FnZS5jYXB0aW9uXCIgdHlwZS5iaW5kPVwibWVzc2FnZS50eXBlXCI+PC9wPlxuICAgIDxuZy1jb250ZW50IG5nUHJvamVjdEFzPVwiZm9ybVt3bVdpemFyZFN0ZXBdXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG48bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwid2l6YXJkQWN0aW9uXCI+PC9uZy1jb250YWluZXI+XG4iXX0=