@angular/common 19.0.0-next.0 → 19.0.0-next.10

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 (3016) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1 -1
  3. package/fesm2022/common.mjs +184 -172
  4. package/fesm2022/common.mjs.map +1 -1
  5. package/fesm2022/http/testing.mjs +8 -8
  6. package/fesm2022/http/testing.mjs.map +1 -1
  7. package/fesm2022/http.mjs +56 -49
  8. package/fesm2022/http.mjs.map +1 -1
  9. package/fesm2022/testing.mjs +31 -27
  10. package/fesm2022/testing.mjs.map +1 -1
  11. package/fesm2022/upgrade.mjs +5 -5
  12. package/fesm2022/upgrade.mjs.map +1 -1
  13. package/http/index.d.ts +2 -1
  14. package/http/testing/index.d.ts +1 -1
  15. package/index.d.ts +70 -11
  16. package/locales/af-NA.d.ts +1 -1
  17. package/locales/af-NA.mjs +2 -2
  18. package/locales/af.d.ts +1 -1
  19. package/locales/af.mjs +2 -2
  20. package/locales/agq.d.ts +1 -1
  21. package/locales/agq.mjs +2 -2
  22. package/locales/ak.d.ts +1 -1
  23. package/locales/ak.mjs +2 -2
  24. package/locales/am.d.ts +1 -1
  25. package/locales/am.mjs +2 -2
  26. package/locales/ar-AE.d.ts +1 -1
  27. package/locales/ar-AE.mjs +2 -2
  28. package/locales/ar-BH.d.ts +1 -1
  29. package/locales/ar-BH.mjs +2 -2
  30. package/locales/ar-DJ.d.ts +1 -1
  31. package/locales/ar-DJ.mjs +2 -2
  32. package/locales/ar-DZ.d.ts +1 -1
  33. package/locales/ar-DZ.mjs +2 -2
  34. package/locales/ar-EG.d.ts +1 -1
  35. package/locales/ar-EG.mjs +2 -2
  36. package/locales/ar-EH.d.ts +1 -1
  37. package/locales/ar-EH.mjs +2 -2
  38. package/locales/ar-ER.d.ts +1 -1
  39. package/locales/ar-ER.mjs +2 -2
  40. package/locales/ar-IL.d.ts +1 -1
  41. package/locales/ar-IL.mjs +2 -2
  42. package/locales/ar-IQ.d.ts +1 -1
  43. package/locales/ar-IQ.mjs +2 -2
  44. package/locales/ar-JO.d.ts +1 -1
  45. package/locales/ar-JO.mjs +2 -2
  46. package/locales/ar-KM.d.ts +1 -1
  47. package/locales/ar-KM.mjs +2 -2
  48. package/locales/ar-KW.d.ts +1 -1
  49. package/locales/ar-KW.mjs +2 -2
  50. package/locales/ar-LB.d.ts +1 -1
  51. package/locales/ar-LB.mjs +2 -2
  52. package/locales/ar-LY.d.ts +1 -1
  53. package/locales/ar-LY.mjs +2 -2
  54. package/locales/ar-MA.d.ts +1 -1
  55. package/locales/ar-MA.mjs +2 -2
  56. package/locales/ar-MR.d.ts +1 -1
  57. package/locales/ar-MR.mjs +2 -2
  58. package/locales/ar-OM.d.ts +1 -1
  59. package/locales/ar-OM.mjs +2 -2
  60. package/locales/ar-PS.d.ts +1 -1
  61. package/locales/ar-PS.mjs +2 -2
  62. package/locales/ar-QA.d.ts +1 -1
  63. package/locales/ar-QA.mjs +2 -2
  64. package/locales/ar-SA.d.ts +1 -1
  65. package/locales/ar-SA.mjs +2 -2
  66. package/locales/ar-SD.d.ts +1 -1
  67. package/locales/ar-SD.mjs +2 -2
  68. package/locales/ar-SO.d.ts +1 -1
  69. package/locales/ar-SO.mjs +2 -2
  70. package/locales/ar-SS.d.ts +1 -1
  71. package/locales/ar-SS.mjs +2 -2
  72. package/locales/ar-SY.d.ts +1 -1
  73. package/locales/ar-SY.mjs +2 -2
  74. package/locales/ar-TD.d.ts +1 -1
  75. package/locales/ar-TD.mjs +2 -2
  76. package/locales/ar-TN.d.ts +1 -1
  77. package/locales/ar-TN.mjs +2 -2
  78. package/locales/ar-YE.d.ts +1 -1
  79. package/locales/ar-YE.mjs +2 -2
  80. package/locales/ar.d.ts +1 -1
  81. package/locales/ar.mjs +2 -2
  82. package/locales/as.d.ts +1 -1
  83. package/locales/as.mjs +2 -2
  84. package/locales/asa.d.ts +1 -1
  85. package/locales/asa.mjs +2 -2
  86. package/locales/ast.d.ts +1 -1
  87. package/locales/ast.mjs +2 -2
  88. package/locales/az-Cyrl.d.ts +1 -1
  89. package/locales/az-Cyrl.mjs +2 -2
  90. package/locales/az-Latn.d.ts +1 -1
  91. package/locales/az-Latn.mjs +2 -2
  92. package/locales/az.d.ts +1 -1
  93. package/locales/az.mjs +2 -2
  94. package/locales/bas.d.ts +1 -1
  95. package/locales/bas.mjs +2 -2
  96. package/locales/be-tarask.d.ts +1 -1
  97. package/locales/be-tarask.mjs +2 -2
  98. package/locales/be.d.ts +1 -1
  99. package/locales/be.mjs +2 -2
  100. package/locales/bem.d.ts +1 -1
  101. package/locales/bem.mjs +2 -2
  102. package/locales/bez.d.ts +1 -1
  103. package/locales/bez.mjs +2 -2
  104. package/locales/bg.d.ts +1 -1
  105. package/locales/bg.mjs +2 -2
  106. package/locales/bm.d.ts +1 -1
  107. package/locales/bm.mjs +2 -2
  108. package/locales/bn-IN.d.ts +1 -1
  109. package/locales/bn-IN.mjs +2 -2
  110. package/locales/bn.d.ts +1 -1
  111. package/locales/bn.mjs +2 -2
  112. package/locales/bo-IN.d.ts +1 -1
  113. package/locales/bo-IN.mjs +2 -2
  114. package/locales/bo.d.ts +1 -1
  115. package/locales/bo.mjs +2 -2
  116. package/locales/br.d.ts +1 -1
  117. package/locales/br.mjs +2 -2
  118. package/locales/brx.d.ts +1 -1
  119. package/locales/brx.mjs +2 -2
  120. package/locales/bs-Cyrl.d.ts +1 -1
  121. package/locales/bs-Cyrl.mjs +2 -2
  122. package/locales/bs-Latn.d.ts +1 -1
  123. package/locales/bs-Latn.mjs +2 -2
  124. package/locales/bs.d.ts +1 -1
  125. package/locales/bs.mjs +2 -2
  126. package/locales/ca-AD.d.ts +1 -1
  127. package/locales/ca-AD.mjs +2 -2
  128. package/locales/ca-ES-valencia.d.ts +1 -1
  129. package/locales/ca-ES-valencia.mjs +2 -2
  130. package/locales/ca-FR.d.ts +1 -1
  131. package/locales/ca-FR.mjs +2 -2
  132. package/locales/ca-IT.d.ts +1 -1
  133. package/locales/ca-IT.mjs +2 -2
  134. package/locales/ca.d.ts +1 -1
  135. package/locales/ca.mjs +2 -2
  136. package/locales/ccp-IN.d.ts +1 -1
  137. package/locales/ccp-IN.mjs +2 -2
  138. package/locales/ccp.d.ts +1 -1
  139. package/locales/ccp.mjs +2 -2
  140. package/locales/ce.d.ts +1 -1
  141. package/locales/ce.mjs +2 -2
  142. package/locales/ceb.d.ts +1 -1
  143. package/locales/ceb.mjs +2 -2
  144. package/locales/cgg.d.ts +1 -1
  145. package/locales/cgg.mjs +2 -2
  146. package/locales/chr.d.ts +1 -1
  147. package/locales/chr.mjs +2 -2
  148. package/locales/ckb-IR.d.ts +1 -1
  149. package/locales/ckb-IR.mjs +2 -2
  150. package/locales/ckb.d.ts +1 -1
  151. package/locales/ckb.mjs +2 -2
  152. package/locales/cs.d.ts +1 -1
  153. package/locales/cs.mjs +2 -2
  154. package/locales/cy.d.ts +1 -1
  155. package/locales/cy.mjs +2 -2
  156. package/locales/da-GL.d.ts +1 -1
  157. package/locales/da-GL.mjs +2 -2
  158. package/locales/da.d.ts +1 -1
  159. package/locales/da.mjs +2 -2
  160. package/locales/dav.d.ts +1 -1
  161. package/locales/dav.mjs +2 -2
  162. package/locales/de-AT.d.ts +1 -1
  163. package/locales/de-AT.mjs +2 -2
  164. package/locales/de-BE.d.ts +1 -1
  165. package/locales/de-BE.mjs +2 -2
  166. package/locales/de-CH.d.ts +1 -1
  167. package/locales/de-CH.mjs +2 -2
  168. package/locales/de-IT.d.ts +1 -1
  169. package/locales/de-IT.mjs +2 -2
  170. package/locales/de-LI.d.ts +1 -1
  171. package/locales/de-LI.mjs +2 -2
  172. package/locales/de-LU.d.ts +1 -1
  173. package/locales/de-LU.mjs +2 -2
  174. package/locales/de.d.ts +1 -1
  175. package/locales/de.mjs +2 -2
  176. package/locales/dje.d.ts +1 -1
  177. package/locales/dje.mjs +2 -2
  178. package/locales/doi.d.ts +1 -1
  179. package/locales/doi.mjs +2 -2
  180. package/locales/dsb.d.ts +1 -1
  181. package/locales/dsb.mjs +2 -2
  182. package/locales/dua.d.ts +1 -1
  183. package/locales/dua.mjs +2 -2
  184. package/locales/dyo.d.ts +1 -1
  185. package/locales/dyo.mjs +2 -2
  186. package/locales/dz.d.ts +1 -1
  187. package/locales/dz.mjs +2 -2
  188. package/locales/ebu.d.ts +1 -1
  189. package/locales/ebu.mjs +2 -2
  190. package/locales/ee-TG.d.ts +1 -1
  191. package/locales/ee-TG.mjs +2 -2
  192. package/locales/ee.d.ts +1 -1
  193. package/locales/ee.mjs +2 -2
  194. package/locales/el-CY.d.ts +1 -1
  195. package/locales/el-CY.mjs +2 -2
  196. package/locales/el.d.ts +1 -1
  197. package/locales/el.mjs +2 -2
  198. package/locales/en-001.d.ts +1 -1
  199. package/locales/en-001.mjs +2 -2
  200. package/locales/en-150.d.ts +1 -1
  201. package/locales/en-150.mjs +2 -2
  202. package/locales/en-AE.d.ts +1 -1
  203. package/locales/en-AE.mjs +2 -2
  204. package/locales/en-AG.d.ts +1 -1
  205. package/locales/en-AG.mjs +2 -2
  206. package/locales/en-AI.d.ts +1 -1
  207. package/locales/en-AI.mjs +2 -2
  208. package/locales/en-AS.d.ts +1 -1
  209. package/locales/en-AS.mjs +2 -2
  210. package/locales/en-AT.d.ts +1 -1
  211. package/locales/en-AT.mjs +2 -2
  212. package/locales/en-AU.d.ts +1 -1
  213. package/locales/en-AU.mjs +2 -2
  214. package/locales/en-BB.d.ts +1 -1
  215. package/locales/en-BB.mjs +2 -2
  216. package/locales/en-BE.d.ts +1 -1
  217. package/locales/en-BE.mjs +2 -2
  218. package/locales/en-BI.d.ts +1 -1
  219. package/locales/en-BI.mjs +2 -2
  220. package/locales/en-BM.d.ts +1 -1
  221. package/locales/en-BM.mjs +2 -2
  222. package/locales/en-BS.d.ts +1 -1
  223. package/locales/en-BS.mjs +2 -2
  224. package/locales/en-BW.d.ts +1 -1
  225. package/locales/en-BW.mjs +2 -2
  226. package/locales/en-BZ.d.ts +1 -1
  227. package/locales/en-BZ.mjs +2 -2
  228. package/locales/en-CA.d.ts +1 -1
  229. package/locales/en-CA.mjs +2 -2
  230. package/locales/en-CC.d.ts +1 -1
  231. package/locales/en-CC.mjs +2 -2
  232. package/locales/en-CH.d.ts +1 -1
  233. package/locales/en-CH.mjs +2 -2
  234. package/locales/en-CK.d.ts +1 -1
  235. package/locales/en-CK.mjs +2 -2
  236. package/locales/en-CM.d.ts +1 -1
  237. package/locales/en-CM.mjs +2 -2
  238. package/locales/en-CX.d.ts +1 -1
  239. package/locales/en-CX.mjs +2 -2
  240. package/locales/en-CY.d.ts +1 -1
  241. package/locales/en-CY.mjs +2 -2
  242. package/locales/en-DE.d.ts +1 -1
  243. package/locales/en-DE.mjs +2 -2
  244. package/locales/en-DG.d.ts +1 -1
  245. package/locales/en-DG.mjs +2 -2
  246. package/locales/en-DK.d.ts +1 -1
  247. package/locales/en-DK.mjs +2 -2
  248. package/locales/en-DM.d.ts +1 -1
  249. package/locales/en-DM.mjs +2 -2
  250. package/locales/en-ER.d.ts +1 -1
  251. package/locales/en-ER.mjs +2 -2
  252. package/locales/en-FI.d.ts +1 -1
  253. package/locales/en-FI.mjs +2 -2
  254. package/locales/en-FJ.d.ts +1 -1
  255. package/locales/en-FJ.mjs +2 -2
  256. package/locales/en-FK.d.ts +1 -1
  257. package/locales/en-FK.mjs +2 -2
  258. package/locales/en-FM.d.ts +1 -1
  259. package/locales/en-FM.mjs +2 -2
  260. package/locales/en-GB.d.ts +1 -1
  261. package/locales/en-GB.mjs +2 -2
  262. package/locales/en-GD.d.ts +1 -1
  263. package/locales/en-GD.mjs +2 -2
  264. package/locales/en-GG.d.ts +1 -1
  265. package/locales/en-GG.mjs +2 -2
  266. package/locales/en-GH.d.ts +1 -1
  267. package/locales/en-GH.mjs +2 -2
  268. package/locales/en-GI.d.ts +1 -1
  269. package/locales/en-GI.mjs +2 -2
  270. package/locales/en-GM.d.ts +1 -1
  271. package/locales/en-GM.mjs +2 -2
  272. package/locales/en-GU.d.ts +1 -1
  273. package/locales/en-GU.mjs +2 -2
  274. package/locales/en-GY.d.ts +1 -1
  275. package/locales/en-GY.mjs +2 -2
  276. package/locales/en-HK.d.ts +1 -1
  277. package/locales/en-HK.mjs +2 -2
  278. package/locales/en-IE.d.ts +1 -1
  279. package/locales/en-IE.mjs +2 -2
  280. package/locales/en-IL.d.ts +1 -1
  281. package/locales/en-IL.mjs +2 -2
  282. package/locales/en-IM.d.ts +1 -1
  283. package/locales/en-IM.mjs +2 -2
  284. package/locales/en-IN.d.ts +1 -1
  285. package/locales/en-IN.mjs +2 -2
  286. package/locales/en-IO.d.ts +1 -1
  287. package/locales/en-IO.mjs +2 -2
  288. package/locales/en-JE.d.ts +1 -1
  289. package/locales/en-JE.mjs +2 -2
  290. package/locales/en-JM.d.ts +1 -1
  291. package/locales/en-JM.mjs +2 -2
  292. package/locales/en-KE.d.ts +1 -1
  293. package/locales/en-KE.mjs +2 -2
  294. package/locales/en-KI.d.ts +1 -1
  295. package/locales/en-KI.mjs +2 -2
  296. package/locales/en-KN.d.ts +1 -1
  297. package/locales/en-KN.mjs +2 -2
  298. package/locales/en-KY.d.ts +1 -1
  299. package/locales/en-KY.mjs +2 -2
  300. package/locales/en-LC.d.ts +1 -1
  301. package/locales/en-LC.mjs +2 -2
  302. package/locales/en-LR.d.ts +1 -1
  303. package/locales/en-LR.mjs +2 -2
  304. package/locales/en-LS.d.ts +1 -1
  305. package/locales/en-LS.mjs +2 -2
  306. package/locales/en-MG.d.ts +1 -1
  307. package/locales/en-MG.mjs +2 -2
  308. package/locales/en-MH.d.ts +1 -1
  309. package/locales/en-MH.mjs +2 -2
  310. package/locales/en-MO.d.ts +1 -1
  311. package/locales/en-MO.mjs +2 -2
  312. package/locales/en-MP.d.ts +1 -1
  313. package/locales/en-MP.mjs +2 -2
  314. package/locales/en-MS.d.ts +1 -1
  315. package/locales/en-MS.mjs +2 -2
  316. package/locales/en-MT.d.ts +1 -1
  317. package/locales/en-MT.mjs +2 -2
  318. package/locales/en-MU.d.ts +1 -1
  319. package/locales/en-MU.mjs +2 -2
  320. package/locales/en-MV.d.ts +1 -1
  321. package/locales/en-MV.mjs +2 -2
  322. package/locales/en-MW.d.ts +1 -1
  323. package/locales/en-MW.mjs +2 -2
  324. package/locales/en-MY.d.ts +1 -1
  325. package/locales/en-MY.mjs +2 -2
  326. package/locales/en-NA.d.ts +1 -1
  327. package/locales/en-NA.mjs +2 -2
  328. package/locales/en-NF.d.ts +1 -1
  329. package/locales/en-NF.mjs +2 -2
  330. package/locales/en-NG.d.ts +1 -1
  331. package/locales/en-NG.mjs +2 -2
  332. package/locales/en-NL.d.ts +1 -1
  333. package/locales/en-NL.mjs +2 -2
  334. package/locales/en-NR.d.ts +1 -1
  335. package/locales/en-NR.mjs +2 -2
  336. package/locales/en-NU.d.ts +1 -1
  337. package/locales/en-NU.mjs +2 -2
  338. package/locales/en-NZ.d.ts +1 -1
  339. package/locales/en-NZ.mjs +2 -2
  340. package/locales/en-PG.d.ts +1 -1
  341. package/locales/en-PG.mjs +2 -2
  342. package/locales/en-PH.d.ts +1 -1
  343. package/locales/en-PH.mjs +2 -2
  344. package/locales/en-PK.d.ts +1 -1
  345. package/locales/en-PK.mjs +2 -2
  346. package/locales/en-PN.d.ts +1 -1
  347. package/locales/en-PN.mjs +2 -2
  348. package/locales/en-PR.d.ts +1 -1
  349. package/locales/en-PR.mjs +2 -2
  350. package/locales/en-PW.d.ts +1 -1
  351. package/locales/en-PW.mjs +2 -2
  352. package/locales/en-RW.d.ts +1 -1
  353. package/locales/en-RW.mjs +2 -2
  354. package/locales/en-SB.d.ts +1 -1
  355. package/locales/en-SB.mjs +2 -2
  356. package/locales/en-SC.d.ts +1 -1
  357. package/locales/en-SC.mjs +2 -2
  358. package/locales/en-SD.d.ts +1 -1
  359. package/locales/en-SD.mjs +2 -2
  360. package/locales/en-SE.d.ts +1 -1
  361. package/locales/en-SE.mjs +2 -2
  362. package/locales/en-SG.d.ts +1 -1
  363. package/locales/en-SG.mjs +2 -2
  364. package/locales/en-SH.d.ts +1 -1
  365. package/locales/en-SH.mjs +2 -2
  366. package/locales/en-SI.d.ts +1 -1
  367. package/locales/en-SI.mjs +2 -2
  368. package/locales/en-SL.d.ts +1 -1
  369. package/locales/en-SL.mjs +2 -2
  370. package/locales/en-SS.d.ts +1 -1
  371. package/locales/en-SS.mjs +2 -2
  372. package/locales/en-SX.d.ts +1 -1
  373. package/locales/en-SX.mjs +2 -2
  374. package/locales/en-SZ.d.ts +1 -1
  375. package/locales/en-SZ.mjs +2 -2
  376. package/locales/en-TC.d.ts +1 -1
  377. package/locales/en-TC.mjs +2 -2
  378. package/locales/en-TK.d.ts +1 -1
  379. package/locales/en-TK.mjs +2 -2
  380. package/locales/en-TO.d.ts +1 -1
  381. package/locales/en-TO.mjs +2 -2
  382. package/locales/en-TT.d.ts +1 -1
  383. package/locales/en-TT.mjs +2 -2
  384. package/locales/en-TV.d.ts +1 -1
  385. package/locales/en-TV.mjs +2 -2
  386. package/locales/en-TZ.d.ts +1 -1
  387. package/locales/en-TZ.mjs +2 -2
  388. package/locales/en-UG.d.ts +1 -1
  389. package/locales/en-UG.mjs +2 -2
  390. package/locales/en-UM.d.ts +1 -1
  391. package/locales/en-UM.mjs +2 -2
  392. package/locales/en-VC.d.ts +1 -1
  393. package/locales/en-VC.mjs +2 -2
  394. package/locales/en-VG.d.ts +1 -1
  395. package/locales/en-VG.mjs +2 -2
  396. package/locales/en-VI.d.ts +1 -1
  397. package/locales/en-VI.mjs +2 -2
  398. package/locales/en-VU.d.ts +1 -1
  399. package/locales/en-VU.mjs +2 -2
  400. package/locales/en-WS.d.ts +1 -1
  401. package/locales/en-WS.mjs +2 -2
  402. package/locales/en-ZA.d.ts +1 -1
  403. package/locales/en-ZA.mjs +2 -2
  404. package/locales/en-ZM.d.ts +1 -1
  405. package/locales/en-ZM.mjs +2 -2
  406. package/locales/en-ZW.d.ts +1 -1
  407. package/locales/en-ZW.mjs +2 -2
  408. package/locales/en.d.ts +1 -1
  409. package/locales/en.mjs +2 -2
  410. package/locales/eo.d.ts +1 -1
  411. package/locales/eo.mjs +2 -2
  412. package/locales/es-419.d.ts +1 -1
  413. package/locales/es-419.mjs +2 -2
  414. package/locales/es-AR.d.ts +1 -1
  415. package/locales/es-AR.mjs +2 -2
  416. package/locales/es-BO.d.ts +1 -1
  417. package/locales/es-BO.mjs +2 -2
  418. package/locales/es-BR.d.ts +1 -1
  419. package/locales/es-BR.mjs +2 -2
  420. package/locales/es-BZ.d.ts +1 -1
  421. package/locales/es-BZ.mjs +2 -2
  422. package/locales/es-CL.d.ts +1 -1
  423. package/locales/es-CL.mjs +2 -2
  424. package/locales/es-CO.d.ts +1 -1
  425. package/locales/es-CO.mjs +2 -2
  426. package/locales/es-CR.d.ts +1 -1
  427. package/locales/es-CR.mjs +2 -2
  428. package/locales/es-CU.d.ts +1 -1
  429. package/locales/es-CU.mjs +2 -2
  430. package/locales/es-DO.d.ts +1 -1
  431. package/locales/es-DO.mjs +2 -2
  432. package/locales/es-EA.d.ts +1 -1
  433. package/locales/es-EA.mjs +2 -2
  434. package/locales/es-EC.d.ts +1 -1
  435. package/locales/es-EC.mjs +2 -2
  436. package/locales/es-GQ.d.ts +1 -1
  437. package/locales/es-GQ.mjs +2 -2
  438. package/locales/es-GT.d.ts +1 -1
  439. package/locales/es-GT.mjs +2 -2
  440. package/locales/es-HN.d.ts +1 -1
  441. package/locales/es-HN.mjs +2 -2
  442. package/locales/es-IC.d.ts +1 -1
  443. package/locales/es-IC.mjs +2 -2
  444. package/locales/es-MX.d.ts +1 -1
  445. package/locales/es-MX.mjs +2 -2
  446. package/locales/es-NI.d.ts +1 -1
  447. package/locales/es-NI.mjs +2 -2
  448. package/locales/es-PA.d.ts +1 -1
  449. package/locales/es-PA.mjs +2 -2
  450. package/locales/es-PE.d.ts +1 -1
  451. package/locales/es-PE.mjs +2 -2
  452. package/locales/es-PH.d.ts +1 -1
  453. package/locales/es-PH.mjs +2 -2
  454. package/locales/es-PR.d.ts +1 -1
  455. package/locales/es-PR.mjs +2 -2
  456. package/locales/es-PY.d.ts +1 -1
  457. package/locales/es-PY.mjs +2 -2
  458. package/locales/es-SV.d.ts +1 -1
  459. package/locales/es-SV.mjs +2 -2
  460. package/locales/es-US.d.ts +1 -1
  461. package/locales/es-US.mjs +2 -2
  462. package/locales/es-UY.d.ts +1 -1
  463. package/locales/es-UY.mjs +2 -2
  464. package/locales/es-VE.d.ts +1 -1
  465. package/locales/es-VE.mjs +2 -2
  466. package/locales/es.d.ts +1 -1
  467. package/locales/es.mjs +2 -2
  468. package/locales/et.d.ts +1 -1
  469. package/locales/et.mjs +2 -2
  470. package/locales/eu.d.ts +1 -1
  471. package/locales/eu.mjs +2 -2
  472. package/locales/ewo.d.ts +1 -1
  473. package/locales/ewo.mjs +2 -2
  474. package/locales/extra/af-NA.d.ts +1 -1
  475. package/locales/extra/af-NA.mjs +2 -2
  476. package/locales/extra/af.d.ts +1 -1
  477. package/locales/extra/af.mjs +2 -2
  478. package/locales/extra/agq.d.ts +1 -1
  479. package/locales/extra/agq.mjs +2 -2
  480. package/locales/extra/ak.d.ts +1 -1
  481. package/locales/extra/ak.mjs +2 -2
  482. package/locales/extra/am.d.ts +1 -1
  483. package/locales/extra/am.mjs +2 -2
  484. package/locales/extra/ar-AE.d.ts +1 -1
  485. package/locales/extra/ar-AE.mjs +2 -2
  486. package/locales/extra/ar-BH.d.ts +1 -1
  487. package/locales/extra/ar-BH.mjs +2 -2
  488. package/locales/extra/ar-DJ.d.ts +1 -1
  489. package/locales/extra/ar-DJ.mjs +2 -2
  490. package/locales/extra/ar-DZ.d.ts +1 -1
  491. package/locales/extra/ar-DZ.mjs +2 -2
  492. package/locales/extra/ar-EG.d.ts +1 -1
  493. package/locales/extra/ar-EG.mjs +2 -2
  494. package/locales/extra/ar-EH.d.ts +1 -1
  495. package/locales/extra/ar-EH.mjs +2 -2
  496. package/locales/extra/ar-ER.d.ts +1 -1
  497. package/locales/extra/ar-ER.mjs +2 -2
  498. package/locales/extra/ar-IL.d.ts +1 -1
  499. package/locales/extra/ar-IL.mjs +2 -2
  500. package/locales/extra/ar-IQ.d.ts +1 -1
  501. package/locales/extra/ar-IQ.mjs +2 -2
  502. package/locales/extra/ar-JO.d.ts +1 -1
  503. package/locales/extra/ar-JO.mjs +2 -2
  504. package/locales/extra/ar-KM.d.ts +1 -1
  505. package/locales/extra/ar-KM.mjs +2 -2
  506. package/locales/extra/ar-KW.d.ts +1 -1
  507. package/locales/extra/ar-KW.mjs +2 -2
  508. package/locales/extra/ar-LB.d.ts +1 -1
  509. package/locales/extra/ar-LB.mjs +2 -2
  510. package/locales/extra/ar-LY.d.ts +1 -1
  511. package/locales/extra/ar-LY.mjs +2 -2
  512. package/locales/extra/ar-MA.d.ts +1 -1
  513. package/locales/extra/ar-MA.mjs +2 -2
  514. package/locales/extra/ar-MR.d.ts +1 -1
  515. package/locales/extra/ar-MR.mjs +2 -2
  516. package/locales/extra/ar-OM.d.ts +1 -1
  517. package/locales/extra/ar-OM.mjs +2 -2
  518. package/locales/extra/ar-PS.d.ts +1 -1
  519. package/locales/extra/ar-PS.mjs +2 -2
  520. package/locales/extra/ar-QA.d.ts +1 -1
  521. package/locales/extra/ar-QA.mjs +2 -2
  522. package/locales/extra/ar-SA.d.ts +1 -1
  523. package/locales/extra/ar-SA.mjs +2 -2
  524. package/locales/extra/ar-SD.d.ts +1 -1
  525. package/locales/extra/ar-SD.mjs +2 -2
  526. package/locales/extra/ar-SO.d.ts +1 -1
  527. package/locales/extra/ar-SO.mjs +2 -2
  528. package/locales/extra/ar-SS.d.ts +1 -1
  529. package/locales/extra/ar-SS.mjs +2 -2
  530. package/locales/extra/ar-SY.d.ts +1 -1
  531. package/locales/extra/ar-SY.mjs +2 -2
  532. package/locales/extra/ar-TD.d.ts +1 -1
  533. package/locales/extra/ar-TD.mjs +2 -2
  534. package/locales/extra/ar-TN.d.ts +1 -1
  535. package/locales/extra/ar-TN.mjs +2 -2
  536. package/locales/extra/ar-YE.d.ts +1 -1
  537. package/locales/extra/ar-YE.mjs +2 -2
  538. package/locales/extra/ar.d.ts +1 -1
  539. package/locales/extra/ar.mjs +2 -2
  540. package/locales/extra/as.d.ts +1 -1
  541. package/locales/extra/as.mjs +2 -2
  542. package/locales/extra/asa.d.ts +1 -1
  543. package/locales/extra/asa.mjs +2 -2
  544. package/locales/extra/ast.d.ts +1 -1
  545. package/locales/extra/ast.mjs +2 -2
  546. package/locales/extra/az-Cyrl.d.ts +1 -1
  547. package/locales/extra/az-Cyrl.mjs +2 -2
  548. package/locales/extra/az-Latn.d.ts +1 -1
  549. package/locales/extra/az-Latn.mjs +2 -2
  550. package/locales/extra/az.d.ts +1 -1
  551. package/locales/extra/az.mjs +2 -2
  552. package/locales/extra/bas.d.ts +1 -1
  553. package/locales/extra/bas.mjs +2 -2
  554. package/locales/extra/be-tarask.d.ts +1 -1
  555. package/locales/extra/be-tarask.mjs +2 -2
  556. package/locales/extra/be.d.ts +1 -1
  557. package/locales/extra/be.mjs +2 -2
  558. package/locales/extra/bem.d.ts +1 -1
  559. package/locales/extra/bem.mjs +2 -2
  560. package/locales/extra/bez.d.ts +1 -1
  561. package/locales/extra/bez.mjs +2 -2
  562. package/locales/extra/bg.d.ts +1 -1
  563. package/locales/extra/bg.mjs +2 -2
  564. package/locales/extra/bm.d.ts +1 -1
  565. package/locales/extra/bm.mjs +2 -2
  566. package/locales/extra/bn-IN.d.ts +1 -1
  567. package/locales/extra/bn-IN.mjs +2 -2
  568. package/locales/extra/bn.d.ts +1 -1
  569. package/locales/extra/bn.mjs +2 -2
  570. package/locales/extra/bo-IN.d.ts +1 -1
  571. package/locales/extra/bo-IN.mjs +2 -2
  572. package/locales/extra/bo.d.ts +1 -1
  573. package/locales/extra/bo.mjs +2 -2
  574. package/locales/extra/br.d.ts +1 -1
  575. package/locales/extra/br.mjs +2 -2
  576. package/locales/extra/brx.d.ts +1 -1
  577. package/locales/extra/brx.mjs +2 -2
  578. package/locales/extra/bs-Cyrl.d.ts +1 -1
  579. package/locales/extra/bs-Cyrl.mjs +2 -2
  580. package/locales/extra/bs-Latn.d.ts +1 -1
  581. package/locales/extra/bs-Latn.mjs +2 -2
  582. package/locales/extra/bs.d.ts +1 -1
  583. package/locales/extra/bs.mjs +2 -2
  584. package/locales/extra/ca-AD.d.ts +1 -1
  585. package/locales/extra/ca-AD.mjs +2 -2
  586. package/locales/extra/ca-ES-valencia.d.ts +1 -1
  587. package/locales/extra/ca-ES-valencia.mjs +2 -2
  588. package/locales/extra/ca-FR.d.ts +1 -1
  589. package/locales/extra/ca-FR.mjs +2 -2
  590. package/locales/extra/ca-IT.d.ts +1 -1
  591. package/locales/extra/ca-IT.mjs +2 -2
  592. package/locales/extra/ca.d.ts +1 -1
  593. package/locales/extra/ca.mjs +2 -2
  594. package/locales/extra/ccp-IN.d.ts +1 -1
  595. package/locales/extra/ccp-IN.mjs +2 -2
  596. package/locales/extra/ccp.d.ts +1 -1
  597. package/locales/extra/ccp.mjs +2 -2
  598. package/locales/extra/ce.d.ts +1 -1
  599. package/locales/extra/ce.mjs +2 -2
  600. package/locales/extra/ceb.d.ts +1 -1
  601. package/locales/extra/ceb.mjs +2 -2
  602. package/locales/extra/cgg.d.ts +1 -1
  603. package/locales/extra/cgg.mjs +2 -2
  604. package/locales/extra/chr.d.ts +1 -1
  605. package/locales/extra/chr.mjs +2 -2
  606. package/locales/extra/ckb-IR.d.ts +1 -1
  607. package/locales/extra/ckb-IR.mjs +2 -2
  608. package/locales/extra/ckb.d.ts +1 -1
  609. package/locales/extra/ckb.mjs +2 -2
  610. package/locales/extra/cs.d.ts +1 -1
  611. package/locales/extra/cs.mjs +2 -2
  612. package/locales/extra/cy.d.ts +1 -1
  613. package/locales/extra/cy.mjs +2 -2
  614. package/locales/extra/da-GL.d.ts +1 -1
  615. package/locales/extra/da-GL.mjs +2 -2
  616. package/locales/extra/da.d.ts +1 -1
  617. package/locales/extra/da.mjs +2 -2
  618. package/locales/extra/dav.d.ts +1 -1
  619. package/locales/extra/dav.mjs +2 -2
  620. package/locales/extra/de-AT.d.ts +1 -1
  621. package/locales/extra/de-AT.mjs +2 -2
  622. package/locales/extra/de-BE.d.ts +1 -1
  623. package/locales/extra/de-BE.mjs +2 -2
  624. package/locales/extra/de-CH.d.ts +1 -1
  625. package/locales/extra/de-CH.mjs +2 -2
  626. package/locales/extra/de-IT.d.ts +1 -1
  627. package/locales/extra/de-IT.mjs +2 -2
  628. package/locales/extra/de-LI.d.ts +1 -1
  629. package/locales/extra/de-LI.mjs +2 -2
  630. package/locales/extra/de-LU.d.ts +1 -1
  631. package/locales/extra/de-LU.mjs +2 -2
  632. package/locales/extra/de.d.ts +1 -1
  633. package/locales/extra/de.mjs +2 -2
  634. package/locales/extra/dje.d.ts +1 -1
  635. package/locales/extra/dje.mjs +2 -2
  636. package/locales/extra/doi.d.ts +1 -1
  637. package/locales/extra/doi.mjs +2 -2
  638. package/locales/extra/dsb.d.ts +1 -1
  639. package/locales/extra/dsb.mjs +2 -2
  640. package/locales/extra/dua.d.ts +1 -1
  641. package/locales/extra/dua.mjs +2 -2
  642. package/locales/extra/dyo.d.ts +1 -1
  643. package/locales/extra/dyo.mjs +2 -2
  644. package/locales/extra/dz.d.ts +1 -1
  645. package/locales/extra/dz.mjs +2 -2
  646. package/locales/extra/ebu.d.ts +1 -1
  647. package/locales/extra/ebu.mjs +2 -2
  648. package/locales/extra/ee-TG.d.ts +1 -1
  649. package/locales/extra/ee-TG.mjs +2 -2
  650. package/locales/extra/ee.d.ts +1 -1
  651. package/locales/extra/ee.mjs +2 -2
  652. package/locales/extra/el-CY.d.ts +1 -1
  653. package/locales/extra/el-CY.mjs +2 -2
  654. package/locales/extra/el.d.ts +1 -1
  655. package/locales/extra/el.mjs +2 -2
  656. package/locales/extra/en-001.d.ts +1 -1
  657. package/locales/extra/en-001.mjs +2 -2
  658. package/locales/extra/en-150.d.ts +1 -1
  659. package/locales/extra/en-150.mjs +2 -2
  660. package/locales/extra/en-AE.d.ts +1 -1
  661. package/locales/extra/en-AE.mjs +2 -2
  662. package/locales/extra/en-AG.d.ts +1 -1
  663. package/locales/extra/en-AG.mjs +2 -2
  664. package/locales/extra/en-AI.d.ts +1 -1
  665. package/locales/extra/en-AI.mjs +2 -2
  666. package/locales/extra/en-AS.d.ts +1 -1
  667. package/locales/extra/en-AS.mjs +2 -2
  668. package/locales/extra/en-AT.d.ts +1 -1
  669. package/locales/extra/en-AT.mjs +2 -2
  670. package/locales/extra/en-AU.d.ts +1 -1
  671. package/locales/extra/en-AU.mjs +2 -2
  672. package/locales/extra/en-BB.d.ts +1 -1
  673. package/locales/extra/en-BB.mjs +2 -2
  674. package/locales/extra/en-BE.d.ts +1 -1
  675. package/locales/extra/en-BE.mjs +2 -2
  676. package/locales/extra/en-BI.d.ts +1 -1
  677. package/locales/extra/en-BI.mjs +2 -2
  678. package/locales/extra/en-BM.d.ts +1 -1
  679. package/locales/extra/en-BM.mjs +2 -2
  680. package/locales/extra/en-BS.d.ts +1 -1
  681. package/locales/extra/en-BS.mjs +2 -2
  682. package/locales/extra/en-BW.d.ts +1 -1
  683. package/locales/extra/en-BW.mjs +2 -2
  684. package/locales/extra/en-BZ.d.ts +1 -1
  685. package/locales/extra/en-BZ.mjs +2 -2
  686. package/locales/extra/en-CA.d.ts +1 -1
  687. package/locales/extra/en-CA.mjs +2 -2
  688. package/locales/extra/en-CC.d.ts +1 -1
  689. package/locales/extra/en-CC.mjs +2 -2
  690. package/locales/extra/en-CH.d.ts +1 -1
  691. package/locales/extra/en-CH.mjs +2 -2
  692. package/locales/extra/en-CK.d.ts +1 -1
  693. package/locales/extra/en-CK.mjs +2 -2
  694. package/locales/extra/en-CM.d.ts +1 -1
  695. package/locales/extra/en-CM.mjs +2 -2
  696. package/locales/extra/en-CX.d.ts +1 -1
  697. package/locales/extra/en-CX.mjs +2 -2
  698. package/locales/extra/en-CY.d.ts +1 -1
  699. package/locales/extra/en-CY.mjs +2 -2
  700. package/locales/extra/en-DE.d.ts +1 -1
  701. package/locales/extra/en-DE.mjs +2 -2
  702. package/locales/extra/en-DG.d.ts +1 -1
  703. package/locales/extra/en-DG.mjs +2 -2
  704. package/locales/extra/en-DK.d.ts +1 -1
  705. package/locales/extra/en-DK.mjs +2 -2
  706. package/locales/extra/en-DM.d.ts +1 -1
  707. package/locales/extra/en-DM.mjs +2 -2
  708. package/locales/extra/en-ER.d.ts +1 -1
  709. package/locales/extra/en-ER.mjs +2 -2
  710. package/locales/extra/en-FI.d.ts +1 -1
  711. package/locales/extra/en-FI.mjs +2 -2
  712. package/locales/extra/en-FJ.d.ts +1 -1
  713. package/locales/extra/en-FJ.mjs +2 -2
  714. package/locales/extra/en-FK.d.ts +1 -1
  715. package/locales/extra/en-FK.mjs +2 -2
  716. package/locales/extra/en-FM.d.ts +1 -1
  717. package/locales/extra/en-FM.mjs +2 -2
  718. package/locales/extra/en-GB.d.ts +1 -1
  719. package/locales/extra/en-GB.mjs +2 -2
  720. package/locales/extra/en-GD.d.ts +1 -1
  721. package/locales/extra/en-GD.mjs +2 -2
  722. package/locales/extra/en-GG.d.ts +1 -1
  723. package/locales/extra/en-GG.mjs +2 -2
  724. package/locales/extra/en-GH.d.ts +1 -1
  725. package/locales/extra/en-GH.mjs +2 -2
  726. package/locales/extra/en-GI.d.ts +1 -1
  727. package/locales/extra/en-GI.mjs +2 -2
  728. package/locales/extra/en-GM.d.ts +1 -1
  729. package/locales/extra/en-GM.mjs +2 -2
  730. package/locales/extra/en-GU.d.ts +1 -1
  731. package/locales/extra/en-GU.mjs +2 -2
  732. package/locales/extra/en-GY.d.ts +1 -1
  733. package/locales/extra/en-GY.mjs +2 -2
  734. package/locales/extra/en-HK.d.ts +1 -1
  735. package/locales/extra/en-HK.mjs +2 -2
  736. package/locales/extra/en-IE.d.ts +1 -1
  737. package/locales/extra/en-IE.mjs +2 -2
  738. package/locales/extra/en-IL.d.ts +1 -1
  739. package/locales/extra/en-IL.mjs +2 -2
  740. package/locales/extra/en-IM.d.ts +1 -1
  741. package/locales/extra/en-IM.mjs +2 -2
  742. package/locales/extra/en-IN.d.ts +1 -1
  743. package/locales/extra/en-IN.mjs +2 -2
  744. package/locales/extra/en-IO.d.ts +1 -1
  745. package/locales/extra/en-IO.mjs +2 -2
  746. package/locales/extra/en-JE.d.ts +1 -1
  747. package/locales/extra/en-JE.mjs +2 -2
  748. package/locales/extra/en-JM.d.ts +1 -1
  749. package/locales/extra/en-JM.mjs +2 -2
  750. package/locales/extra/en-KE.d.ts +1 -1
  751. package/locales/extra/en-KE.mjs +2 -2
  752. package/locales/extra/en-KI.d.ts +1 -1
  753. package/locales/extra/en-KI.mjs +2 -2
  754. package/locales/extra/en-KN.d.ts +1 -1
  755. package/locales/extra/en-KN.mjs +2 -2
  756. package/locales/extra/en-KY.d.ts +1 -1
  757. package/locales/extra/en-KY.mjs +2 -2
  758. package/locales/extra/en-LC.d.ts +1 -1
  759. package/locales/extra/en-LC.mjs +2 -2
  760. package/locales/extra/en-LR.d.ts +1 -1
  761. package/locales/extra/en-LR.mjs +2 -2
  762. package/locales/extra/en-LS.d.ts +1 -1
  763. package/locales/extra/en-LS.mjs +2 -2
  764. package/locales/extra/en-MG.d.ts +1 -1
  765. package/locales/extra/en-MG.mjs +2 -2
  766. package/locales/extra/en-MH.d.ts +1 -1
  767. package/locales/extra/en-MH.mjs +2 -2
  768. package/locales/extra/en-MO.d.ts +1 -1
  769. package/locales/extra/en-MO.mjs +2 -2
  770. package/locales/extra/en-MP.d.ts +1 -1
  771. package/locales/extra/en-MP.mjs +2 -2
  772. package/locales/extra/en-MS.d.ts +1 -1
  773. package/locales/extra/en-MS.mjs +2 -2
  774. package/locales/extra/en-MT.d.ts +1 -1
  775. package/locales/extra/en-MT.mjs +2 -2
  776. package/locales/extra/en-MU.d.ts +1 -1
  777. package/locales/extra/en-MU.mjs +2 -2
  778. package/locales/extra/en-MV.d.ts +1 -1
  779. package/locales/extra/en-MV.mjs +2 -2
  780. package/locales/extra/en-MW.d.ts +1 -1
  781. package/locales/extra/en-MW.mjs +2 -2
  782. package/locales/extra/en-MY.d.ts +1 -1
  783. package/locales/extra/en-MY.mjs +2 -2
  784. package/locales/extra/en-NA.d.ts +1 -1
  785. package/locales/extra/en-NA.mjs +2 -2
  786. package/locales/extra/en-NF.d.ts +1 -1
  787. package/locales/extra/en-NF.mjs +2 -2
  788. package/locales/extra/en-NG.d.ts +1 -1
  789. package/locales/extra/en-NG.mjs +2 -2
  790. package/locales/extra/en-NL.d.ts +1 -1
  791. package/locales/extra/en-NL.mjs +2 -2
  792. package/locales/extra/en-NR.d.ts +1 -1
  793. package/locales/extra/en-NR.mjs +2 -2
  794. package/locales/extra/en-NU.d.ts +1 -1
  795. package/locales/extra/en-NU.mjs +2 -2
  796. package/locales/extra/en-NZ.d.ts +1 -1
  797. package/locales/extra/en-NZ.mjs +2 -2
  798. package/locales/extra/en-PG.d.ts +1 -1
  799. package/locales/extra/en-PG.mjs +2 -2
  800. package/locales/extra/en-PH.d.ts +1 -1
  801. package/locales/extra/en-PH.mjs +2 -2
  802. package/locales/extra/en-PK.d.ts +1 -1
  803. package/locales/extra/en-PK.mjs +2 -2
  804. package/locales/extra/en-PN.d.ts +1 -1
  805. package/locales/extra/en-PN.mjs +2 -2
  806. package/locales/extra/en-PR.d.ts +1 -1
  807. package/locales/extra/en-PR.mjs +2 -2
  808. package/locales/extra/en-PW.d.ts +1 -1
  809. package/locales/extra/en-PW.mjs +2 -2
  810. package/locales/extra/en-RW.d.ts +1 -1
  811. package/locales/extra/en-RW.mjs +2 -2
  812. package/locales/extra/en-SB.d.ts +1 -1
  813. package/locales/extra/en-SB.mjs +2 -2
  814. package/locales/extra/en-SC.d.ts +1 -1
  815. package/locales/extra/en-SC.mjs +2 -2
  816. package/locales/extra/en-SD.d.ts +1 -1
  817. package/locales/extra/en-SD.mjs +2 -2
  818. package/locales/extra/en-SE.d.ts +1 -1
  819. package/locales/extra/en-SE.mjs +2 -2
  820. package/locales/extra/en-SG.d.ts +1 -1
  821. package/locales/extra/en-SG.mjs +2 -2
  822. package/locales/extra/en-SH.d.ts +1 -1
  823. package/locales/extra/en-SH.mjs +2 -2
  824. package/locales/extra/en-SI.d.ts +1 -1
  825. package/locales/extra/en-SI.mjs +2 -2
  826. package/locales/extra/en-SL.d.ts +1 -1
  827. package/locales/extra/en-SL.mjs +2 -2
  828. package/locales/extra/en-SS.d.ts +1 -1
  829. package/locales/extra/en-SS.mjs +2 -2
  830. package/locales/extra/en-SX.d.ts +1 -1
  831. package/locales/extra/en-SX.mjs +2 -2
  832. package/locales/extra/en-SZ.d.ts +1 -1
  833. package/locales/extra/en-SZ.mjs +2 -2
  834. package/locales/extra/en-TC.d.ts +1 -1
  835. package/locales/extra/en-TC.mjs +2 -2
  836. package/locales/extra/en-TK.d.ts +1 -1
  837. package/locales/extra/en-TK.mjs +2 -2
  838. package/locales/extra/en-TO.d.ts +1 -1
  839. package/locales/extra/en-TO.mjs +2 -2
  840. package/locales/extra/en-TT.d.ts +1 -1
  841. package/locales/extra/en-TT.mjs +2 -2
  842. package/locales/extra/en-TV.d.ts +1 -1
  843. package/locales/extra/en-TV.mjs +2 -2
  844. package/locales/extra/en-TZ.d.ts +1 -1
  845. package/locales/extra/en-TZ.mjs +2 -2
  846. package/locales/extra/en-UG.d.ts +1 -1
  847. package/locales/extra/en-UG.mjs +2 -2
  848. package/locales/extra/en-UM.d.ts +1 -1
  849. package/locales/extra/en-UM.mjs +2 -2
  850. package/locales/extra/en-VC.d.ts +1 -1
  851. package/locales/extra/en-VC.mjs +2 -2
  852. package/locales/extra/en-VG.d.ts +1 -1
  853. package/locales/extra/en-VG.mjs +2 -2
  854. package/locales/extra/en-VI.d.ts +1 -1
  855. package/locales/extra/en-VI.mjs +2 -2
  856. package/locales/extra/en-VU.d.ts +1 -1
  857. package/locales/extra/en-VU.mjs +2 -2
  858. package/locales/extra/en-WS.d.ts +1 -1
  859. package/locales/extra/en-WS.mjs +2 -2
  860. package/locales/extra/en-ZA.d.ts +1 -1
  861. package/locales/extra/en-ZA.mjs +2 -2
  862. package/locales/extra/en-ZM.d.ts +1 -1
  863. package/locales/extra/en-ZM.mjs +2 -2
  864. package/locales/extra/en-ZW.d.ts +1 -1
  865. package/locales/extra/en-ZW.mjs +2 -2
  866. package/locales/extra/en.d.ts +1 -1
  867. package/locales/extra/en.mjs +2 -2
  868. package/locales/extra/eo.d.ts +1 -1
  869. package/locales/extra/eo.mjs +2 -2
  870. package/locales/extra/es-419.d.ts +1 -1
  871. package/locales/extra/es-419.mjs +2 -2
  872. package/locales/extra/es-AR.d.ts +1 -1
  873. package/locales/extra/es-AR.mjs +2 -2
  874. package/locales/extra/es-BO.d.ts +1 -1
  875. package/locales/extra/es-BO.mjs +2 -2
  876. package/locales/extra/es-BR.d.ts +1 -1
  877. package/locales/extra/es-BR.mjs +2 -2
  878. package/locales/extra/es-BZ.d.ts +1 -1
  879. package/locales/extra/es-BZ.mjs +2 -2
  880. package/locales/extra/es-CL.d.ts +1 -1
  881. package/locales/extra/es-CL.mjs +2 -2
  882. package/locales/extra/es-CO.d.ts +1 -1
  883. package/locales/extra/es-CO.mjs +2 -2
  884. package/locales/extra/es-CR.d.ts +1 -1
  885. package/locales/extra/es-CR.mjs +2 -2
  886. package/locales/extra/es-CU.d.ts +1 -1
  887. package/locales/extra/es-CU.mjs +2 -2
  888. package/locales/extra/es-DO.d.ts +1 -1
  889. package/locales/extra/es-DO.mjs +2 -2
  890. package/locales/extra/es-EA.d.ts +1 -1
  891. package/locales/extra/es-EA.mjs +2 -2
  892. package/locales/extra/es-EC.d.ts +1 -1
  893. package/locales/extra/es-EC.mjs +2 -2
  894. package/locales/extra/es-GQ.d.ts +1 -1
  895. package/locales/extra/es-GQ.mjs +2 -2
  896. package/locales/extra/es-GT.d.ts +1 -1
  897. package/locales/extra/es-GT.mjs +2 -2
  898. package/locales/extra/es-HN.d.ts +1 -1
  899. package/locales/extra/es-HN.mjs +2 -2
  900. package/locales/extra/es-IC.d.ts +1 -1
  901. package/locales/extra/es-IC.mjs +2 -2
  902. package/locales/extra/es-MX.d.ts +1 -1
  903. package/locales/extra/es-MX.mjs +2 -2
  904. package/locales/extra/es-NI.d.ts +1 -1
  905. package/locales/extra/es-NI.mjs +2 -2
  906. package/locales/extra/es-PA.d.ts +1 -1
  907. package/locales/extra/es-PA.mjs +2 -2
  908. package/locales/extra/es-PE.d.ts +1 -1
  909. package/locales/extra/es-PE.mjs +2 -2
  910. package/locales/extra/es-PH.d.ts +1 -1
  911. package/locales/extra/es-PH.mjs +2 -2
  912. package/locales/extra/es-PR.d.ts +1 -1
  913. package/locales/extra/es-PR.mjs +2 -2
  914. package/locales/extra/es-PY.d.ts +1 -1
  915. package/locales/extra/es-PY.mjs +2 -2
  916. package/locales/extra/es-SV.d.ts +1 -1
  917. package/locales/extra/es-SV.mjs +2 -2
  918. package/locales/extra/es-US.d.ts +1 -1
  919. package/locales/extra/es-US.mjs +2 -2
  920. package/locales/extra/es-UY.d.ts +1 -1
  921. package/locales/extra/es-UY.mjs +2 -2
  922. package/locales/extra/es-VE.d.ts +1 -1
  923. package/locales/extra/es-VE.mjs +2 -2
  924. package/locales/extra/es.d.ts +1 -1
  925. package/locales/extra/es.mjs +2 -2
  926. package/locales/extra/et.d.ts +1 -1
  927. package/locales/extra/et.mjs +2 -2
  928. package/locales/extra/eu.d.ts +1 -1
  929. package/locales/extra/eu.mjs +2 -2
  930. package/locales/extra/ewo.d.ts +1 -1
  931. package/locales/extra/ewo.mjs +2 -2
  932. package/locales/extra/fa-AF.d.ts +1 -1
  933. package/locales/extra/fa-AF.mjs +2 -2
  934. package/locales/extra/fa.d.ts +1 -1
  935. package/locales/extra/fa.mjs +2 -2
  936. package/locales/extra/ff-Adlm-BF.d.ts +1 -1
  937. package/locales/extra/ff-Adlm-BF.mjs +2 -2
  938. package/locales/extra/ff-Adlm-CM.d.ts +1 -1
  939. package/locales/extra/ff-Adlm-CM.mjs +2 -2
  940. package/locales/extra/ff-Adlm-GH.d.ts +1 -1
  941. package/locales/extra/ff-Adlm-GH.mjs +2 -2
  942. package/locales/extra/ff-Adlm-GM.d.ts +1 -1
  943. package/locales/extra/ff-Adlm-GM.mjs +2 -2
  944. package/locales/extra/ff-Adlm-GW.d.ts +1 -1
  945. package/locales/extra/ff-Adlm-GW.mjs +2 -2
  946. package/locales/extra/ff-Adlm-LR.d.ts +1 -1
  947. package/locales/extra/ff-Adlm-LR.mjs +2 -2
  948. package/locales/extra/ff-Adlm-MR.d.ts +1 -1
  949. package/locales/extra/ff-Adlm-MR.mjs +2 -2
  950. package/locales/extra/ff-Adlm-NE.d.ts +1 -1
  951. package/locales/extra/ff-Adlm-NE.mjs +2 -2
  952. package/locales/extra/ff-Adlm-NG.d.ts +1 -1
  953. package/locales/extra/ff-Adlm-NG.mjs +2 -2
  954. package/locales/extra/ff-Adlm-SL.d.ts +1 -1
  955. package/locales/extra/ff-Adlm-SL.mjs +2 -2
  956. package/locales/extra/ff-Adlm-SN.d.ts +1 -1
  957. package/locales/extra/ff-Adlm-SN.mjs +2 -2
  958. package/locales/extra/ff-Adlm.d.ts +1 -1
  959. package/locales/extra/ff-Adlm.mjs +2 -2
  960. package/locales/extra/ff-CM.d.ts +1 -1
  961. package/locales/extra/ff-CM.mjs +2 -2
  962. package/locales/extra/ff-GN.d.ts +1 -1
  963. package/locales/extra/ff-GN.mjs +2 -2
  964. package/locales/extra/ff-Latn-BF.d.ts +1 -1
  965. package/locales/extra/ff-Latn-BF.mjs +2 -2
  966. package/locales/extra/ff-Latn-CM.d.ts +1 -1
  967. package/locales/extra/ff-Latn-CM.mjs +2 -2
  968. package/locales/extra/ff-Latn-GH.d.ts +1 -1
  969. package/locales/extra/ff-Latn-GH.mjs +2 -2
  970. package/locales/extra/ff-Latn-GM.d.ts +1 -1
  971. package/locales/extra/ff-Latn-GM.mjs +2 -2
  972. package/locales/extra/ff-Latn-GN.d.ts +1 -1
  973. package/locales/extra/ff-Latn-GN.mjs +2 -2
  974. package/locales/extra/ff-Latn-GW.d.ts +1 -1
  975. package/locales/extra/ff-Latn-GW.mjs +2 -2
  976. package/locales/extra/ff-Latn-LR.d.ts +1 -1
  977. package/locales/extra/ff-Latn-LR.mjs +2 -2
  978. package/locales/extra/ff-Latn-MR.d.ts +1 -1
  979. package/locales/extra/ff-Latn-MR.mjs +2 -2
  980. package/locales/extra/ff-Latn-NE.d.ts +1 -1
  981. package/locales/extra/ff-Latn-NE.mjs +2 -2
  982. package/locales/extra/ff-Latn-NG.d.ts +1 -1
  983. package/locales/extra/ff-Latn-NG.mjs +2 -2
  984. package/locales/extra/ff-Latn-SL.d.ts +1 -1
  985. package/locales/extra/ff-Latn-SL.mjs +2 -2
  986. package/locales/extra/ff-Latn.d.ts +1 -1
  987. package/locales/extra/ff-Latn.mjs +2 -2
  988. package/locales/extra/ff-MR.d.ts +1 -1
  989. package/locales/extra/ff-MR.mjs +2 -2
  990. package/locales/extra/ff.d.ts +1 -1
  991. package/locales/extra/ff.mjs +2 -2
  992. package/locales/extra/fi.d.ts +1 -1
  993. package/locales/extra/fi.mjs +2 -2
  994. package/locales/extra/fil.d.ts +1 -1
  995. package/locales/extra/fil.mjs +2 -2
  996. package/locales/extra/fo-DK.d.ts +1 -1
  997. package/locales/extra/fo-DK.mjs +2 -2
  998. package/locales/extra/fo.d.ts +1 -1
  999. package/locales/extra/fo.mjs +2 -2
  1000. package/locales/extra/fr-BE.d.ts +1 -1
  1001. package/locales/extra/fr-BE.mjs +2 -2
  1002. package/locales/extra/fr-BF.d.ts +1 -1
  1003. package/locales/extra/fr-BF.mjs +2 -2
  1004. package/locales/extra/fr-BI.d.ts +1 -1
  1005. package/locales/extra/fr-BI.mjs +2 -2
  1006. package/locales/extra/fr-BJ.d.ts +1 -1
  1007. package/locales/extra/fr-BJ.mjs +2 -2
  1008. package/locales/extra/fr-BL.d.ts +1 -1
  1009. package/locales/extra/fr-BL.mjs +2 -2
  1010. package/locales/extra/fr-CA.d.ts +1 -1
  1011. package/locales/extra/fr-CA.mjs +2 -2
  1012. package/locales/extra/fr-CD.d.ts +1 -1
  1013. package/locales/extra/fr-CD.mjs +2 -2
  1014. package/locales/extra/fr-CF.d.ts +1 -1
  1015. package/locales/extra/fr-CF.mjs +2 -2
  1016. package/locales/extra/fr-CG.d.ts +1 -1
  1017. package/locales/extra/fr-CG.mjs +2 -2
  1018. package/locales/extra/fr-CH.d.ts +1 -1
  1019. package/locales/extra/fr-CH.mjs +2 -2
  1020. package/locales/extra/fr-CI.d.ts +1 -1
  1021. package/locales/extra/fr-CI.mjs +2 -2
  1022. package/locales/extra/fr-CM.d.ts +1 -1
  1023. package/locales/extra/fr-CM.mjs +2 -2
  1024. package/locales/extra/fr-DJ.d.ts +1 -1
  1025. package/locales/extra/fr-DJ.mjs +2 -2
  1026. package/locales/extra/fr-DZ.d.ts +1 -1
  1027. package/locales/extra/fr-DZ.mjs +2 -2
  1028. package/locales/extra/fr-GA.d.ts +1 -1
  1029. package/locales/extra/fr-GA.mjs +2 -2
  1030. package/locales/extra/fr-GF.d.ts +1 -1
  1031. package/locales/extra/fr-GF.mjs +2 -2
  1032. package/locales/extra/fr-GN.d.ts +1 -1
  1033. package/locales/extra/fr-GN.mjs +2 -2
  1034. package/locales/extra/fr-GP.d.ts +1 -1
  1035. package/locales/extra/fr-GP.mjs +2 -2
  1036. package/locales/extra/fr-GQ.d.ts +1 -1
  1037. package/locales/extra/fr-GQ.mjs +2 -2
  1038. package/locales/extra/fr-HT.d.ts +1 -1
  1039. package/locales/extra/fr-HT.mjs +2 -2
  1040. package/locales/extra/fr-KM.d.ts +1 -1
  1041. package/locales/extra/fr-KM.mjs +2 -2
  1042. package/locales/extra/fr-LU.d.ts +1 -1
  1043. package/locales/extra/fr-LU.mjs +2 -2
  1044. package/locales/extra/fr-MA.d.ts +1 -1
  1045. package/locales/extra/fr-MA.mjs +2 -2
  1046. package/locales/extra/fr-MC.d.ts +1 -1
  1047. package/locales/extra/fr-MC.mjs +2 -2
  1048. package/locales/extra/fr-MF.d.ts +1 -1
  1049. package/locales/extra/fr-MF.mjs +2 -2
  1050. package/locales/extra/fr-MG.d.ts +1 -1
  1051. package/locales/extra/fr-MG.mjs +2 -2
  1052. package/locales/extra/fr-ML.d.ts +1 -1
  1053. package/locales/extra/fr-ML.mjs +2 -2
  1054. package/locales/extra/fr-MQ.d.ts +1 -1
  1055. package/locales/extra/fr-MQ.mjs +2 -2
  1056. package/locales/extra/fr-MR.d.ts +1 -1
  1057. package/locales/extra/fr-MR.mjs +2 -2
  1058. package/locales/extra/fr-MU.d.ts +1 -1
  1059. package/locales/extra/fr-MU.mjs +2 -2
  1060. package/locales/extra/fr-NC.d.ts +1 -1
  1061. package/locales/extra/fr-NC.mjs +2 -2
  1062. package/locales/extra/fr-NE.d.ts +1 -1
  1063. package/locales/extra/fr-NE.mjs +2 -2
  1064. package/locales/extra/fr-PF.d.ts +1 -1
  1065. package/locales/extra/fr-PF.mjs +2 -2
  1066. package/locales/extra/fr-PM.d.ts +1 -1
  1067. package/locales/extra/fr-PM.mjs +2 -2
  1068. package/locales/extra/fr-RE.d.ts +1 -1
  1069. package/locales/extra/fr-RE.mjs +2 -2
  1070. package/locales/extra/fr-RW.d.ts +1 -1
  1071. package/locales/extra/fr-RW.mjs +2 -2
  1072. package/locales/extra/fr-SC.d.ts +1 -1
  1073. package/locales/extra/fr-SC.mjs +2 -2
  1074. package/locales/extra/fr-SN.d.ts +1 -1
  1075. package/locales/extra/fr-SN.mjs +2 -2
  1076. package/locales/extra/fr-SY.d.ts +1 -1
  1077. package/locales/extra/fr-SY.mjs +2 -2
  1078. package/locales/extra/fr-TD.d.ts +1 -1
  1079. package/locales/extra/fr-TD.mjs +2 -2
  1080. package/locales/extra/fr-TG.d.ts +1 -1
  1081. package/locales/extra/fr-TG.mjs +2 -2
  1082. package/locales/extra/fr-TN.d.ts +1 -1
  1083. package/locales/extra/fr-TN.mjs +2 -2
  1084. package/locales/extra/fr-VU.d.ts +1 -1
  1085. package/locales/extra/fr-VU.mjs +2 -2
  1086. package/locales/extra/fr-WF.d.ts +1 -1
  1087. package/locales/extra/fr-WF.mjs +2 -2
  1088. package/locales/extra/fr-YT.d.ts +1 -1
  1089. package/locales/extra/fr-YT.mjs +2 -2
  1090. package/locales/extra/fr.d.ts +1 -1
  1091. package/locales/extra/fr.mjs +2 -2
  1092. package/locales/extra/fur.d.ts +1 -1
  1093. package/locales/extra/fur.mjs +2 -2
  1094. package/locales/extra/fy.d.ts +1 -1
  1095. package/locales/extra/fy.mjs +2 -2
  1096. package/locales/extra/ga-GB.d.ts +1 -1
  1097. package/locales/extra/ga-GB.mjs +2 -2
  1098. package/locales/extra/ga.d.ts +1 -1
  1099. package/locales/extra/ga.mjs +2 -2
  1100. package/locales/extra/gd.d.ts +1 -1
  1101. package/locales/extra/gd.mjs +2 -2
  1102. package/locales/extra/gl.d.ts +1 -1
  1103. package/locales/extra/gl.mjs +2 -2
  1104. package/locales/extra/gsw-FR.d.ts +1 -1
  1105. package/locales/extra/gsw-FR.mjs +2 -2
  1106. package/locales/extra/gsw-LI.d.ts +1 -1
  1107. package/locales/extra/gsw-LI.mjs +2 -2
  1108. package/locales/extra/gsw.d.ts +1 -1
  1109. package/locales/extra/gsw.mjs +2 -2
  1110. package/locales/extra/gu.d.ts +1 -1
  1111. package/locales/extra/gu.mjs +2 -2
  1112. package/locales/extra/guz.d.ts +1 -1
  1113. package/locales/extra/guz.mjs +2 -2
  1114. package/locales/extra/gv.d.ts +1 -1
  1115. package/locales/extra/gv.mjs +2 -2
  1116. package/locales/extra/ha-GH.d.ts +1 -1
  1117. package/locales/extra/ha-GH.mjs +2 -2
  1118. package/locales/extra/ha-NE.d.ts +1 -1
  1119. package/locales/extra/ha-NE.mjs +2 -2
  1120. package/locales/extra/ha.d.ts +1 -1
  1121. package/locales/extra/ha.mjs +2 -2
  1122. package/locales/extra/haw.d.ts +1 -1
  1123. package/locales/extra/haw.mjs +2 -2
  1124. package/locales/extra/he.d.ts +1 -1
  1125. package/locales/extra/he.mjs +2 -2
  1126. package/locales/extra/hi-Latn.d.ts +1 -1
  1127. package/locales/extra/hi-Latn.mjs +2 -2
  1128. package/locales/extra/hi.d.ts +1 -1
  1129. package/locales/extra/hi.mjs +2 -2
  1130. package/locales/extra/hr-BA.d.ts +1 -1
  1131. package/locales/extra/hr-BA.mjs +2 -2
  1132. package/locales/extra/hr.d.ts +1 -1
  1133. package/locales/extra/hr.mjs +2 -2
  1134. package/locales/extra/hsb.d.ts +1 -1
  1135. package/locales/extra/hsb.mjs +2 -2
  1136. package/locales/extra/hu.d.ts +1 -1
  1137. package/locales/extra/hu.mjs +2 -2
  1138. package/locales/extra/hy.d.ts +1 -1
  1139. package/locales/extra/hy.mjs +2 -2
  1140. package/locales/extra/ia.d.ts +1 -1
  1141. package/locales/extra/ia.mjs +2 -2
  1142. package/locales/extra/id.d.ts +1 -1
  1143. package/locales/extra/id.mjs +2 -2
  1144. package/locales/extra/ig.d.ts +1 -1
  1145. package/locales/extra/ig.mjs +2 -2
  1146. package/locales/extra/ii.d.ts +1 -1
  1147. package/locales/extra/ii.mjs +2 -2
  1148. package/locales/extra/is.d.ts +1 -1
  1149. package/locales/extra/is.mjs +2 -2
  1150. package/locales/extra/it-CH.d.ts +1 -1
  1151. package/locales/extra/it-CH.mjs +2 -2
  1152. package/locales/extra/it-SM.d.ts +1 -1
  1153. package/locales/extra/it-SM.mjs +2 -2
  1154. package/locales/extra/it-VA.d.ts +1 -1
  1155. package/locales/extra/it-VA.mjs +2 -2
  1156. package/locales/extra/it.d.ts +1 -1
  1157. package/locales/extra/it.mjs +2 -2
  1158. package/locales/extra/ja.d.ts +1 -1
  1159. package/locales/extra/ja.mjs +2 -2
  1160. package/locales/extra/jgo.d.ts +1 -1
  1161. package/locales/extra/jgo.mjs +2 -2
  1162. package/locales/extra/jmc.d.ts +1 -1
  1163. package/locales/extra/jmc.mjs +2 -2
  1164. package/locales/extra/jv.d.ts +1 -1
  1165. package/locales/extra/jv.mjs +2 -2
  1166. package/locales/extra/ka.d.ts +1 -1
  1167. package/locales/extra/ka.mjs +2 -2
  1168. package/locales/extra/kab.d.ts +1 -1
  1169. package/locales/extra/kab.mjs +2 -2
  1170. package/locales/extra/kam.d.ts +1 -1
  1171. package/locales/extra/kam.mjs +2 -2
  1172. package/locales/extra/kde.d.ts +1 -1
  1173. package/locales/extra/kde.mjs +2 -2
  1174. package/locales/extra/kea.d.ts +1 -1
  1175. package/locales/extra/kea.mjs +2 -2
  1176. package/locales/extra/kgp.d.ts +1 -1
  1177. package/locales/extra/kgp.mjs +2 -2
  1178. package/locales/extra/khq.d.ts +1 -1
  1179. package/locales/extra/khq.mjs +2 -2
  1180. package/locales/extra/ki.d.ts +1 -1
  1181. package/locales/extra/ki.mjs +2 -2
  1182. package/locales/extra/kk.d.ts +1 -1
  1183. package/locales/extra/kk.mjs +2 -2
  1184. package/locales/extra/kkj.d.ts +1 -1
  1185. package/locales/extra/kkj.mjs +2 -2
  1186. package/locales/extra/kl.d.ts +1 -1
  1187. package/locales/extra/kl.mjs +2 -2
  1188. package/locales/extra/kln.d.ts +1 -1
  1189. package/locales/extra/kln.mjs +2 -2
  1190. package/locales/extra/km.d.ts +1 -1
  1191. package/locales/extra/km.mjs +2 -2
  1192. package/locales/extra/kn.d.ts +1 -1
  1193. package/locales/extra/kn.mjs +2 -2
  1194. package/locales/extra/ko-KP.d.ts +1 -1
  1195. package/locales/extra/ko-KP.mjs +2 -2
  1196. package/locales/extra/ko.d.ts +1 -1
  1197. package/locales/extra/ko.mjs +2 -2
  1198. package/locales/extra/kok.d.ts +1 -1
  1199. package/locales/extra/kok.mjs +2 -2
  1200. package/locales/extra/ks-Arab.d.ts +1 -1
  1201. package/locales/extra/ks-Arab.mjs +2 -2
  1202. package/locales/extra/ks-Deva.d.ts +1 -1
  1203. package/locales/extra/ks-Deva.mjs +2 -2
  1204. package/locales/extra/ks.d.ts +1 -1
  1205. package/locales/extra/ks.mjs +2 -2
  1206. package/locales/extra/ksb.d.ts +1 -1
  1207. package/locales/extra/ksb.mjs +2 -2
  1208. package/locales/extra/ksf.d.ts +1 -1
  1209. package/locales/extra/ksf.mjs +2 -2
  1210. package/locales/extra/ksh.d.ts +1 -1
  1211. package/locales/extra/ksh.mjs +2 -2
  1212. package/locales/extra/ku.d.ts +1 -1
  1213. package/locales/extra/ku.mjs +2 -2
  1214. package/locales/extra/kw.d.ts +1 -1
  1215. package/locales/extra/kw.mjs +2 -2
  1216. package/locales/extra/ky.d.ts +1 -1
  1217. package/locales/extra/ky.mjs +2 -2
  1218. package/locales/extra/lag.d.ts +1 -1
  1219. package/locales/extra/lag.mjs +2 -2
  1220. package/locales/extra/lb.d.ts +1 -1
  1221. package/locales/extra/lb.mjs +2 -2
  1222. package/locales/extra/lg.d.ts +1 -1
  1223. package/locales/extra/lg.mjs +2 -2
  1224. package/locales/extra/lkt.d.ts +1 -1
  1225. package/locales/extra/lkt.mjs +2 -2
  1226. package/locales/extra/ln-AO.d.ts +1 -1
  1227. package/locales/extra/ln-AO.mjs +2 -2
  1228. package/locales/extra/ln-CF.d.ts +1 -1
  1229. package/locales/extra/ln-CF.mjs +2 -2
  1230. package/locales/extra/ln-CG.d.ts +1 -1
  1231. package/locales/extra/ln-CG.mjs +2 -2
  1232. package/locales/extra/ln.d.ts +1 -1
  1233. package/locales/extra/ln.mjs +2 -2
  1234. package/locales/extra/lo.d.ts +1 -1
  1235. package/locales/extra/lo.mjs +2 -2
  1236. package/locales/extra/lrc-IQ.d.ts +1 -1
  1237. package/locales/extra/lrc-IQ.mjs +2 -2
  1238. package/locales/extra/lrc.d.ts +1 -1
  1239. package/locales/extra/lrc.mjs +2 -2
  1240. package/locales/extra/lt.d.ts +1 -1
  1241. package/locales/extra/lt.mjs +2 -2
  1242. package/locales/extra/lu.d.ts +1 -1
  1243. package/locales/extra/lu.mjs +2 -2
  1244. package/locales/extra/luo.d.ts +1 -1
  1245. package/locales/extra/luo.mjs +2 -2
  1246. package/locales/extra/luy.d.ts +1 -1
  1247. package/locales/extra/luy.mjs +2 -2
  1248. package/locales/extra/lv.d.ts +1 -1
  1249. package/locales/extra/lv.mjs +2 -2
  1250. package/locales/extra/mai.d.ts +1 -1
  1251. package/locales/extra/mai.mjs +2 -2
  1252. package/locales/extra/mas-TZ.d.ts +1 -1
  1253. package/locales/extra/mas-TZ.mjs +2 -2
  1254. package/locales/extra/mas.d.ts +1 -1
  1255. package/locales/extra/mas.mjs +2 -2
  1256. package/locales/extra/mer.d.ts +1 -1
  1257. package/locales/extra/mer.mjs +2 -2
  1258. package/locales/extra/mfe.d.ts +1 -1
  1259. package/locales/extra/mfe.mjs +2 -2
  1260. package/locales/extra/mg.d.ts +1 -1
  1261. package/locales/extra/mg.mjs +2 -2
  1262. package/locales/extra/mgh.d.ts +1 -1
  1263. package/locales/extra/mgh.mjs +2 -2
  1264. package/locales/extra/mgo.d.ts +1 -1
  1265. package/locales/extra/mgo.mjs +2 -2
  1266. package/locales/extra/mi.d.ts +1 -1
  1267. package/locales/extra/mi.mjs +2 -2
  1268. package/locales/extra/mk.d.ts +1 -1
  1269. package/locales/extra/mk.mjs +2 -2
  1270. package/locales/extra/ml.d.ts +1 -1
  1271. package/locales/extra/ml.mjs +2 -2
  1272. package/locales/extra/mn.d.ts +1 -1
  1273. package/locales/extra/mn.mjs +2 -2
  1274. package/locales/extra/mni-Beng.d.ts +1 -1
  1275. package/locales/extra/mni-Beng.mjs +2 -2
  1276. package/locales/extra/mni.d.ts +1 -1
  1277. package/locales/extra/mni.mjs +2 -2
  1278. package/locales/extra/mr.d.ts +1 -1
  1279. package/locales/extra/mr.mjs +2 -2
  1280. package/locales/extra/ms-BN.d.ts +1 -1
  1281. package/locales/extra/ms-BN.mjs +2 -2
  1282. package/locales/extra/ms-ID.d.ts +1 -1
  1283. package/locales/extra/ms-ID.mjs +2 -2
  1284. package/locales/extra/ms-SG.d.ts +1 -1
  1285. package/locales/extra/ms-SG.mjs +2 -2
  1286. package/locales/extra/ms.d.ts +1 -1
  1287. package/locales/extra/ms.mjs +2 -2
  1288. package/locales/extra/mt.d.ts +1 -1
  1289. package/locales/extra/mt.mjs +2 -2
  1290. package/locales/extra/mua.d.ts +1 -1
  1291. package/locales/extra/mua.mjs +2 -2
  1292. package/locales/extra/my.d.ts +1 -1
  1293. package/locales/extra/my.mjs +2 -2
  1294. package/locales/extra/mzn.d.ts +1 -1
  1295. package/locales/extra/mzn.mjs +2 -2
  1296. package/locales/extra/naq.d.ts +1 -1
  1297. package/locales/extra/naq.mjs +2 -2
  1298. package/locales/extra/nb-SJ.d.ts +1 -1
  1299. package/locales/extra/nb-SJ.mjs +2 -2
  1300. package/locales/extra/nb.d.ts +1 -1
  1301. package/locales/extra/nb.mjs +2 -2
  1302. package/locales/extra/nd.d.ts +1 -1
  1303. package/locales/extra/nd.mjs +2 -2
  1304. package/locales/extra/nds-NL.d.ts +1 -1
  1305. package/locales/extra/nds-NL.mjs +2 -2
  1306. package/locales/extra/nds.d.ts +1 -1
  1307. package/locales/extra/nds.mjs +2 -2
  1308. package/locales/extra/ne-IN.d.ts +1 -1
  1309. package/locales/extra/ne-IN.mjs +2 -2
  1310. package/locales/extra/ne.d.ts +1 -1
  1311. package/locales/extra/ne.mjs +2 -2
  1312. package/locales/extra/nl-AW.d.ts +1 -1
  1313. package/locales/extra/nl-AW.mjs +2 -2
  1314. package/locales/extra/nl-BE.d.ts +1 -1
  1315. package/locales/extra/nl-BE.mjs +2 -2
  1316. package/locales/extra/nl-BQ.d.ts +1 -1
  1317. package/locales/extra/nl-BQ.mjs +2 -2
  1318. package/locales/extra/nl-CW.d.ts +1 -1
  1319. package/locales/extra/nl-CW.mjs +2 -2
  1320. package/locales/extra/nl-SR.d.ts +1 -1
  1321. package/locales/extra/nl-SR.mjs +2 -2
  1322. package/locales/extra/nl-SX.d.ts +1 -1
  1323. package/locales/extra/nl-SX.mjs +2 -2
  1324. package/locales/extra/nl.d.ts +1 -1
  1325. package/locales/extra/nl.mjs +2 -2
  1326. package/locales/extra/nmg.d.ts +1 -1
  1327. package/locales/extra/nmg.mjs +2 -2
  1328. package/locales/extra/nn.d.ts +1 -1
  1329. package/locales/extra/nn.mjs +2 -2
  1330. package/locales/extra/nnh.d.ts +1 -1
  1331. package/locales/extra/nnh.mjs +2 -2
  1332. package/locales/extra/no.d.ts +1 -1
  1333. package/locales/extra/no.mjs +2 -2
  1334. package/locales/extra/nus.d.ts +1 -1
  1335. package/locales/extra/nus.mjs +2 -2
  1336. package/locales/extra/nyn.d.ts +1 -1
  1337. package/locales/extra/nyn.mjs +2 -2
  1338. package/locales/extra/om-KE.d.ts +1 -1
  1339. package/locales/extra/om-KE.mjs +2 -2
  1340. package/locales/extra/om.d.ts +1 -1
  1341. package/locales/extra/om.mjs +2 -2
  1342. package/locales/extra/or.d.ts +1 -1
  1343. package/locales/extra/or.mjs +2 -2
  1344. package/locales/extra/os-RU.d.ts +1 -1
  1345. package/locales/extra/os-RU.mjs +2 -2
  1346. package/locales/extra/os.d.ts +1 -1
  1347. package/locales/extra/os.mjs +2 -2
  1348. package/locales/extra/pa-Arab.d.ts +1 -1
  1349. package/locales/extra/pa-Arab.mjs +2 -2
  1350. package/locales/extra/pa-Guru.d.ts +1 -1
  1351. package/locales/extra/pa-Guru.mjs +2 -2
  1352. package/locales/extra/pa.d.ts +1 -1
  1353. package/locales/extra/pa.mjs +2 -2
  1354. package/locales/extra/pcm.d.ts +1 -1
  1355. package/locales/extra/pcm.mjs +2 -2
  1356. package/locales/extra/pl.d.ts +1 -1
  1357. package/locales/extra/pl.mjs +2 -2
  1358. package/locales/extra/ps-PK.d.ts +1 -1
  1359. package/locales/extra/ps-PK.mjs +2 -2
  1360. package/locales/extra/ps.d.ts +1 -1
  1361. package/locales/extra/ps.mjs +2 -2
  1362. package/locales/extra/pt-AO.d.ts +1 -1
  1363. package/locales/extra/pt-AO.mjs +2 -2
  1364. package/locales/extra/pt-CH.d.ts +1 -1
  1365. package/locales/extra/pt-CH.mjs +2 -2
  1366. package/locales/extra/pt-CV.d.ts +1 -1
  1367. package/locales/extra/pt-CV.mjs +2 -2
  1368. package/locales/extra/pt-GQ.d.ts +1 -1
  1369. package/locales/extra/pt-GQ.mjs +2 -2
  1370. package/locales/extra/pt-GW.d.ts +1 -1
  1371. package/locales/extra/pt-GW.mjs +2 -2
  1372. package/locales/extra/pt-LU.d.ts +1 -1
  1373. package/locales/extra/pt-LU.mjs +2 -2
  1374. package/locales/extra/pt-MO.d.ts +1 -1
  1375. package/locales/extra/pt-MO.mjs +2 -2
  1376. package/locales/extra/pt-MZ.d.ts +1 -1
  1377. package/locales/extra/pt-MZ.mjs +2 -2
  1378. package/locales/extra/pt-PT.d.ts +1 -1
  1379. package/locales/extra/pt-PT.mjs +2 -2
  1380. package/locales/extra/pt-ST.d.ts +1 -1
  1381. package/locales/extra/pt-ST.mjs +2 -2
  1382. package/locales/extra/pt-TL.d.ts +1 -1
  1383. package/locales/extra/pt-TL.mjs +2 -2
  1384. package/locales/extra/pt.d.ts +1 -1
  1385. package/locales/extra/pt.mjs +2 -2
  1386. package/locales/extra/qu-BO.d.ts +1 -1
  1387. package/locales/extra/qu-BO.mjs +2 -2
  1388. package/locales/extra/qu-EC.d.ts +1 -1
  1389. package/locales/extra/qu-EC.mjs +2 -2
  1390. package/locales/extra/qu.d.ts +1 -1
  1391. package/locales/extra/qu.mjs +2 -2
  1392. package/locales/extra/rm.d.ts +1 -1
  1393. package/locales/extra/rm.mjs +2 -2
  1394. package/locales/extra/rn.d.ts +1 -1
  1395. package/locales/extra/rn.mjs +2 -2
  1396. package/locales/extra/ro-MD.d.ts +1 -1
  1397. package/locales/extra/ro-MD.mjs +2 -2
  1398. package/locales/extra/ro.d.ts +1 -1
  1399. package/locales/extra/ro.mjs +2 -2
  1400. package/locales/extra/rof.d.ts +1 -1
  1401. package/locales/extra/rof.mjs +2 -2
  1402. package/locales/extra/ru-BY.d.ts +1 -1
  1403. package/locales/extra/ru-BY.mjs +2 -2
  1404. package/locales/extra/ru-KG.d.ts +1 -1
  1405. package/locales/extra/ru-KG.mjs +2 -2
  1406. package/locales/extra/ru-KZ.d.ts +1 -1
  1407. package/locales/extra/ru-KZ.mjs +2 -2
  1408. package/locales/extra/ru-MD.d.ts +1 -1
  1409. package/locales/extra/ru-MD.mjs +2 -2
  1410. package/locales/extra/ru-UA.d.ts +1 -1
  1411. package/locales/extra/ru-UA.mjs +2 -2
  1412. package/locales/extra/ru.d.ts +1 -1
  1413. package/locales/extra/ru.mjs +2 -2
  1414. package/locales/extra/rw.d.ts +1 -1
  1415. package/locales/extra/rw.mjs +2 -2
  1416. package/locales/extra/rwk.d.ts +1 -1
  1417. package/locales/extra/rwk.mjs +2 -2
  1418. package/locales/extra/sa.d.ts +1 -1
  1419. package/locales/extra/sa.mjs +2 -2
  1420. package/locales/extra/sah.d.ts +1 -1
  1421. package/locales/extra/sah.mjs +2 -2
  1422. package/locales/extra/saq.d.ts +1 -1
  1423. package/locales/extra/saq.mjs +2 -2
  1424. package/locales/extra/sat-Olck.d.ts +1 -1
  1425. package/locales/extra/sat-Olck.mjs +2 -2
  1426. package/locales/extra/sat.d.ts +1 -1
  1427. package/locales/extra/sat.mjs +2 -2
  1428. package/locales/extra/sbp.d.ts +1 -1
  1429. package/locales/extra/sbp.mjs +2 -2
  1430. package/locales/extra/sc.d.ts +1 -1
  1431. package/locales/extra/sc.mjs +2 -2
  1432. package/locales/extra/sd-Arab.d.ts +1 -1
  1433. package/locales/extra/sd-Arab.mjs +2 -2
  1434. package/locales/extra/sd-Deva.d.ts +1 -1
  1435. package/locales/extra/sd-Deva.mjs +2 -2
  1436. package/locales/extra/sd.d.ts +1 -1
  1437. package/locales/extra/sd.mjs +2 -2
  1438. package/locales/extra/se-FI.d.ts +1 -1
  1439. package/locales/extra/se-FI.mjs +2 -2
  1440. package/locales/extra/se-SE.d.ts +1 -1
  1441. package/locales/extra/se-SE.mjs +2 -2
  1442. package/locales/extra/se.d.ts +1 -1
  1443. package/locales/extra/se.mjs +2 -2
  1444. package/locales/extra/seh.d.ts +1 -1
  1445. package/locales/extra/seh.mjs +2 -2
  1446. package/locales/extra/ses.d.ts +1 -1
  1447. package/locales/extra/ses.mjs +2 -2
  1448. package/locales/extra/sg.d.ts +1 -1
  1449. package/locales/extra/sg.mjs +2 -2
  1450. package/locales/extra/shi-Latn.d.ts +1 -1
  1451. package/locales/extra/shi-Latn.mjs +2 -2
  1452. package/locales/extra/shi-Tfng.d.ts +1 -1
  1453. package/locales/extra/shi-Tfng.mjs +2 -2
  1454. package/locales/extra/shi.d.ts +1 -1
  1455. package/locales/extra/shi.mjs +2 -2
  1456. package/locales/extra/si.d.ts +1 -1
  1457. package/locales/extra/si.mjs +2 -2
  1458. package/locales/extra/sk.d.ts +1 -1
  1459. package/locales/extra/sk.mjs +2 -2
  1460. package/locales/extra/sl.d.ts +1 -1
  1461. package/locales/extra/sl.mjs +2 -2
  1462. package/locales/extra/smn.d.ts +1 -1
  1463. package/locales/extra/smn.mjs +2 -2
  1464. package/locales/extra/sn.d.ts +1 -1
  1465. package/locales/extra/sn.mjs +2 -2
  1466. package/locales/extra/so-DJ.d.ts +1 -1
  1467. package/locales/extra/so-DJ.mjs +2 -2
  1468. package/locales/extra/so-ET.d.ts +1 -1
  1469. package/locales/extra/so-ET.mjs +2 -2
  1470. package/locales/extra/so-KE.d.ts +1 -1
  1471. package/locales/extra/so-KE.mjs +2 -2
  1472. package/locales/extra/so.d.ts +1 -1
  1473. package/locales/extra/so.mjs +2 -2
  1474. package/locales/extra/sq-MK.d.ts +1 -1
  1475. package/locales/extra/sq-MK.mjs +2 -2
  1476. package/locales/extra/sq-XK.d.ts +1 -1
  1477. package/locales/extra/sq-XK.mjs +2 -2
  1478. package/locales/extra/sq.d.ts +1 -1
  1479. package/locales/extra/sq.mjs +2 -2
  1480. package/locales/extra/sr-Cyrl-BA.d.ts +1 -1
  1481. package/locales/extra/sr-Cyrl-BA.mjs +2 -2
  1482. package/locales/extra/sr-Cyrl-ME.d.ts +1 -1
  1483. package/locales/extra/sr-Cyrl-ME.mjs +2 -2
  1484. package/locales/extra/sr-Cyrl-XK.d.ts +1 -1
  1485. package/locales/extra/sr-Cyrl-XK.mjs +2 -2
  1486. package/locales/extra/sr-Cyrl.d.ts +1 -1
  1487. package/locales/extra/sr-Cyrl.mjs +2 -2
  1488. package/locales/extra/sr-Latn-BA.d.ts +1 -1
  1489. package/locales/extra/sr-Latn-BA.mjs +2 -2
  1490. package/locales/extra/sr-Latn-ME.d.ts +1 -1
  1491. package/locales/extra/sr-Latn-ME.mjs +2 -2
  1492. package/locales/extra/sr-Latn-XK.d.ts +1 -1
  1493. package/locales/extra/sr-Latn-XK.mjs +2 -2
  1494. package/locales/extra/sr-Latn.d.ts +1 -1
  1495. package/locales/extra/sr-Latn.mjs +2 -2
  1496. package/locales/extra/sr.d.ts +1 -1
  1497. package/locales/extra/sr.mjs +2 -2
  1498. package/locales/extra/su-Latn.d.ts +1 -1
  1499. package/locales/extra/su-Latn.mjs +2 -2
  1500. package/locales/extra/su.d.ts +1 -1
  1501. package/locales/extra/su.mjs +2 -2
  1502. package/locales/extra/sv-AX.d.ts +1 -1
  1503. package/locales/extra/sv-AX.mjs +2 -2
  1504. package/locales/extra/sv-FI.d.ts +1 -1
  1505. package/locales/extra/sv-FI.mjs +2 -2
  1506. package/locales/extra/sv.d.ts +1 -1
  1507. package/locales/extra/sv.mjs +2 -2
  1508. package/locales/extra/sw-CD.d.ts +1 -1
  1509. package/locales/extra/sw-CD.mjs +2 -2
  1510. package/locales/extra/sw-KE.d.ts +1 -1
  1511. package/locales/extra/sw-KE.mjs +2 -2
  1512. package/locales/extra/sw-UG.d.ts +1 -1
  1513. package/locales/extra/sw-UG.mjs +2 -2
  1514. package/locales/extra/sw.d.ts +1 -1
  1515. package/locales/extra/sw.mjs +2 -2
  1516. package/locales/extra/ta-LK.d.ts +1 -1
  1517. package/locales/extra/ta-LK.mjs +2 -2
  1518. package/locales/extra/ta-MY.d.ts +1 -1
  1519. package/locales/extra/ta-MY.mjs +2 -2
  1520. package/locales/extra/ta-SG.d.ts +1 -1
  1521. package/locales/extra/ta-SG.mjs +2 -2
  1522. package/locales/extra/ta.d.ts +1 -1
  1523. package/locales/extra/ta.mjs +2 -2
  1524. package/locales/extra/te.d.ts +1 -1
  1525. package/locales/extra/te.mjs +2 -2
  1526. package/locales/extra/teo-KE.d.ts +1 -1
  1527. package/locales/extra/teo-KE.mjs +2 -2
  1528. package/locales/extra/teo.d.ts +1 -1
  1529. package/locales/extra/teo.mjs +2 -2
  1530. package/locales/extra/tg.d.ts +1 -1
  1531. package/locales/extra/tg.mjs +2 -2
  1532. package/locales/extra/th.d.ts +1 -1
  1533. package/locales/extra/th.mjs +2 -2
  1534. package/locales/extra/ti-ER.d.ts +1 -1
  1535. package/locales/extra/ti-ER.mjs +2 -2
  1536. package/locales/extra/ti.d.ts +1 -1
  1537. package/locales/extra/ti.mjs +2 -2
  1538. package/locales/extra/tk.d.ts +1 -1
  1539. package/locales/extra/tk.mjs +2 -2
  1540. package/locales/extra/to.d.ts +1 -1
  1541. package/locales/extra/to.mjs +2 -2
  1542. package/locales/extra/tr-CY.d.ts +1 -1
  1543. package/locales/extra/tr-CY.mjs +2 -2
  1544. package/locales/extra/tr.d.ts +1 -1
  1545. package/locales/extra/tr.mjs +2 -2
  1546. package/locales/extra/tt.d.ts +1 -1
  1547. package/locales/extra/tt.mjs +2 -2
  1548. package/locales/extra/twq.d.ts +1 -1
  1549. package/locales/extra/twq.mjs +2 -2
  1550. package/locales/extra/tzm.d.ts +1 -1
  1551. package/locales/extra/tzm.mjs +2 -2
  1552. package/locales/extra/ug.d.ts +1 -1
  1553. package/locales/extra/ug.mjs +2 -2
  1554. package/locales/extra/uk.d.ts +1 -1
  1555. package/locales/extra/uk.mjs +2 -2
  1556. package/locales/extra/und.d.ts +1 -1
  1557. package/locales/extra/und.mjs +2 -2
  1558. package/locales/extra/ur-IN.d.ts +1 -1
  1559. package/locales/extra/ur-IN.mjs +2 -2
  1560. package/locales/extra/ur.d.ts +1 -1
  1561. package/locales/extra/ur.mjs +2 -2
  1562. package/locales/extra/uz-Arab.d.ts +1 -1
  1563. package/locales/extra/uz-Arab.mjs +2 -2
  1564. package/locales/extra/uz-Cyrl.d.ts +1 -1
  1565. package/locales/extra/uz-Cyrl.mjs +2 -2
  1566. package/locales/extra/uz-Latn.d.ts +1 -1
  1567. package/locales/extra/uz-Latn.mjs +2 -2
  1568. package/locales/extra/uz.d.ts +1 -1
  1569. package/locales/extra/uz.mjs +2 -2
  1570. package/locales/extra/vai-Latn.d.ts +1 -1
  1571. package/locales/extra/vai-Latn.mjs +2 -2
  1572. package/locales/extra/vai-Vaii.d.ts +1 -1
  1573. package/locales/extra/vai-Vaii.mjs +2 -2
  1574. package/locales/extra/vai.d.ts +1 -1
  1575. package/locales/extra/vai.mjs +2 -2
  1576. package/locales/extra/vi.d.ts +1 -1
  1577. package/locales/extra/vi.mjs +2 -2
  1578. package/locales/extra/vun.d.ts +1 -1
  1579. package/locales/extra/vun.mjs +2 -2
  1580. package/locales/extra/wae.d.ts +1 -1
  1581. package/locales/extra/wae.mjs +2 -2
  1582. package/locales/extra/wo.d.ts +1 -1
  1583. package/locales/extra/wo.mjs +2 -2
  1584. package/locales/extra/xh.d.ts +1 -1
  1585. package/locales/extra/xh.mjs +2 -2
  1586. package/locales/extra/xog.d.ts +1 -1
  1587. package/locales/extra/xog.mjs +2 -2
  1588. package/locales/extra/yav.d.ts +1 -1
  1589. package/locales/extra/yav.mjs +2 -2
  1590. package/locales/extra/yi.d.ts +1 -1
  1591. package/locales/extra/yi.mjs +2 -2
  1592. package/locales/extra/yo-BJ.d.ts +1 -1
  1593. package/locales/extra/yo-BJ.mjs +2 -2
  1594. package/locales/extra/yo.d.ts +1 -1
  1595. package/locales/extra/yo.mjs +2 -2
  1596. package/locales/extra/yrl-CO.d.ts +1 -1
  1597. package/locales/extra/yrl-CO.mjs +2 -2
  1598. package/locales/extra/yrl-VE.d.ts +1 -1
  1599. package/locales/extra/yrl-VE.mjs +2 -2
  1600. package/locales/extra/yrl.d.ts +1 -1
  1601. package/locales/extra/yrl.mjs +2 -2
  1602. package/locales/extra/yue-Hans.d.ts +1 -1
  1603. package/locales/extra/yue-Hans.mjs +2 -2
  1604. package/locales/extra/yue-Hant.d.ts +1 -1
  1605. package/locales/extra/yue-Hant.mjs +2 -2
  1606. package/locales/extra/yue.d.ts +1 -1
  1607. package/locales/extra/yue.mjs +2 -2
  1608. package/locales/extra/zgh.d.ts +1 -1
  1609. package/locales/extra/zgh.mjs +2 -2
  1610. package/locales/extra/zh-Hans-HK.d.ts +1 -1
  1611. package/locales/extra/zh-Hans-HK.mjs +2 -2
  1612. package/locales/extra/zh-Hans-MO.d.ts +1 -1
  1613. package/locales/extra/zh-Hans-MO.mjs +2 -2
  1614. package/locales/extra/zh-Hans-SG.d.ts +1 -1
  1615. package/locales/extra/zh-Hans-SG.mjs +2 -2
  1616. package/locales/extra/zh-Hans.d.ts +1 -1
  1617. package/locales/extra/zh-Hans.mjs +2 -2
  1618. package/locales/extra/zh-Hant-HK.d.ts +1 -1
  1619. package/locales/extra/zh-Hant-HK.mjs +2 -2
  1620. package/locales/extra/zh-Hant-MO.d.ts +1 -1
  1621. package/locales/extra/zh-Hant-MO.mjs +2 -2
  1622. package/locales/extra/zh-Hant.d.ts +1 -1
  1623. package/locales/extra/zh-Hant.mjs +2 -2
  1624. package/locales/extra/zh.d.ts +1 -1
  1625. package/locales/extra/zh.mjs +2 -2
  1626. package/locales/extra/zu.d.ts +1 -1
  1627. package/locales/extra/zu.mjs +2 -2
  1628. package/locales/fa-AF.d.ts +1 -1
  1629. package/locales/fa-AF.mjs +2 -2
  1630. package/locales/fa.d.ts +1 -1
  1631. package/locales/fa.mjs +2 -2
  1632. package/locales/ff-Adlm-BF.d.ts +1 -1
  1633. package/locales/ff-Adlm-BF.mjs +2 -2
  1634. package/locales/ff-Adlm-CM.d.ts +1 -1
  1635. package/locales/ff-Adlm-CM.mjs +2 -2
  1636. package/locales/ff-Adlm-GH.d.ts +1 -1
  1637. package/locales/ff-Adlm-GH.mjs +2 -2
  1638. package/locales/ff-Adlm-GM.d.ts +1 -1
  1639. package/locales/ff-Adlm-GM.mjs +2 -2
  1640. package/locales/ff-Adlm-GW.d.ts +1 -1
  1641. package/locales/ff-Adlm-GW.mjs +2 -2
  1642. package/locales/ff-Adlm-LR.d.ts +1 -1
  1643. package/locales/ff-Adlm-LR.mjs +2 -2
  1644. package/locales/ff-Adlm-MR.d.ts +1 -1
  1645. package/locales/ff-Adlm-MR.mjs +2 -2
  1646. package/locales/ff-Adlm-NE.d.ts +1 -1
  1647. package/locales/ff-Adlm-NE.mjs +2 -2
  1648. package/locales/ff-Adlm-NG.d.ts +1 -1
  1649. package/locales/ff-Adlm-NG.mjs +2 -2
  1650. package/locales/ff-Adlm-SL.d.ts +1 -1
  1651. package/locales/ff-Adlm-SL.mjs +2 -2
  1652. package/locales/ff-Adlm-SN.d.ts +1 -1
  1653. package/locales/ff-Adlm-SN.mjs +2 -2
  1654. package/locales/ff-Adlm.d.ts +1 -1
  1655. package/locales/ff-Adlm.mjs +2 -2
  1656. package/locales/ff-CM.d.ts +1 -1
  1657. package/locales/ff-CM.mjs +2 -2
  1658. package/locales/ff-GN.d.ts +1 -1
  1659. package/locales/ff-GN.mjs +2 -2
  1660. package/locales/ff-Latn-BF.d.ts +1 -1
  1661. package/locales/ff-Latn-BF.mjs +2 -2
  1662. package/locales/ff-Latn-CM.d.ts +1 -1
  1663. package/locales/ff-Latn-CM.mjs +2 -2
  1664. package/locales/ff-Latn-GH.d.ts +1 -1
  1665. package/locales/ff-Latn-GH.mjs +2 -2
  1666. package/locales/ff-Latn-GM.d.ts +1 -1
  1667. package/locales/ff-Latn-GM.mjs +2 -2
  1668. package/locales/ff-Latn-GN.d.ts +1 -1
  1669. package/locales/ff-Latn-GN.mjs +2 -2
  1670. package/locales/ff-Latn-GW.d.ts +1 -1
  1671. package/locales/ff-Latn-GW.mjs +2 -2
  1672. package/locales/ff-Latn-LR.d.ts +1 -1
  1673. package/locales/ff-Latn-LR.mjs +2 -2
  1674. package/locales/ff-Latn-MR.d.ts +1 -1
  1675. package/locales/ff-Latn-MR.mjs +2 -2
  1676. package/locales/ff-Latn-NE.d.ts +1 -1
  1677. package/locales/ff-Latn-NE.mjs +2 -2
  1678. package/locales/ff-Latn-NG.d.ts +1 -1
  1679. package/locales/ff-Latn-NG.mjs +2 -2
  1680. package/locales/ff-Latn-SL.d.ts +1 -1
  1681. package/locales/ff-Latn-SL.mjs +2 -2
  1682. package/locales/ff-Latn.d.ts +1 -1
  1683. package/locales/ff-Latn.mjs +2 -2
  1684. package/locales/ff-MR.d.ts +1 -1
  1685. package/locales/ff-MR.mjs +2 -2
  1686. package/locales/ff.d.ts +1 -1
  1687. package/locales/ff.mjs +2 -2
  1688. package/locales/fi.d.ts +1 -1
  1689. package/locales/fi.mjs +2 -2
  1690. package/locales/fil.d.ts +1 -1
  1691. package/locales/fil.mjs +2 -2
  1692. package/locales/fo-DK.d.ts +1 -1
  1693. package/locales/fo-DK.mjs +2 -2
  1694. package/locales/fo.d.ts +1 -1
  1695. package/locales/fo.mjs +2 -2
  1696. package/locales/fr-BE.d.ts +1 -1
  1697. package/locales/fr-BE.mjs +2 -2
  1698. package/locales/fr-BF.d.ts +1 -1
  1699. package/locales/fr-BF.mjs +2 -2
  1700. package/locales/fr-BI.d.ts +1 -1
  1701. package/locales/fr-BI.mjs +2 -2
  1702. package/locales/fr-BJ.d.ts +1 -1
  1703. package/locales/fr-BJ.mjs +2 -2
  1704. package/locales/fr-BL.d.ts +1 -1
  1705. package/locales/fr-BL.mjs +2 -2
  1706. package/locales/fr-CA.d.ts +1 -1
  1707. package/locales/fr-CA.mjs +2 -2
  1708. package/locales/fr-CD.d.ts +1 -1
  1709. package/locales/fr-CD.mjs +2 -2
  1710. package/locales/fr-CF.d.ts +1 -1
  1711. package/locales/fr-CF.mjs +2 -2
  1712. package/locales/fr-CG.d.ts +1 -1
  1713. package/locales/fr-CG.mjs +2 -2
  1714. package/locales/fr-CH.d.ts +1 -1
  1715. package/locales/fr-CH.mjs +2 -2
  1716. package/locales/fr-CI.d.ts +1 -1
  1717. package/locales/fr-CI.mjs +2 -2
  1718. package/locales/fr-CM.d.ts +1 -1
  1719. package/locales/fr-CM.mjs +2 -2
  1720. package/locales/fr-DJ.d.ts +1 -1
  1721. package/locales/fr-DJ.mjs +2 -2
  1722. package/locales/fr-DZ.d.ts +1 -1
  1723. package/locales/fr-DZ.mjs +2 -2
  1724. package/locales/fr-GA.d.ts +1 -1
  1725. package/locales/fr-GA.mjs +2 -2
  1726. package/locales/fr-GF.d.ts +1 -1
  1727. package/locales/fr-GF.mjs +2 -2
  1728. package/locales/fr-GN.d.ts +1 -1
  1729. package/locales/fr-GN.mjs +2 -2
  1730. package/locales/fr-GP.d.ts +1 -1
  1731. package/locales/fr-GP.mjs +2 -2
  1732. package/locales/fr-GQ.d.ts +1 -1
  1733. package/locales/fr-GQ.mjs +2 -2
  1734. package/locales/fr-HT.d.ts +1 -1
  1735. package/locales/fr-HT.mjs +2 -2
  1736. package/locales/fr-KM.d.ts +1 -1
  1737. package/locales/fr-KM.mjs +2 -2
  1738. package/locales/fr-LU.d.ts +1 -1
  1739. package/locales/fr-LU.mjs +2 -2
  1740. package/locales/fr-MA.d.ts +1 -1
  1741. package/locales/fr-MA.mjs +2 -2
  1742. package/locales/fr-MC.d.ts +1 -1
  1743. package/locales/fr-MC.mjs +2 -2
  1744. package/locales/fr-MF.d.ts +1 -1
  1745. package/locales/fr-MF.mjs +2 -2
  1746. package/locales/fr-MG.d.ts +1 -1
  1747. package/locales/fr-MG.mjs +2 -2
  1748. package/locales/fr-ML.d.ts +1 -1
  1749. package/locales/fr-ML.mjs +2 -2
  1750. package/locales/fr-MQ.d.ts +1 -1
  1751. package/locales/fr-MQ.mjs +2 -2
  1752. package/locales/fr-MR.d.ts +1 -1
  1753. package/locales/fr-MR.mjs +2 -2
  1754. package/locales/fr-MU.d.ts +1 -1
  1755. package/locales/fr-MU.mjs +2 -2
  1756. package/locales/fr-NC.d.ts +1 -1
  1757. package/locales/fr-NC.mjs +2 -2
  1758. package/locales/fr-NE.d.ts +1 -1
  1759. package/locales/fr-NE.mjs +2 -2
  1760. package/locales/fr-PF.d.ts +1 -1
  1761. package/locales/fr-PF.mjs +2 -2
  1762. package/locales/fr-PM.d.ts +1 -1
  1763. package/locales/fr-PM.mjs +2 -2
  1764. package/locales/fr-RE.d.ts +1 -1
  1765. package/locales/fr-RE.mjs +2 -2
  1766. package/locales/fr-RW.d.ts +1 -1
  1767. package/locales/fr-RW.mjs +2 -2
  1768. package/locales/fr-SC.d.ts +1 -1
  1769. package/locales/fr-SC.mjs +2 -2
  1770. package/locales/fr-SN.d.ts +1 -1
  1771. package/locales/fr-SN.mjs +2 -2
  1772. package/locales/fr-SY.d.ts +1 -1
  1773. package/locales/fr-SY.mjs +2 -2
  1774. package/locales/fr-TD.d.ts +1 -1
  1775. package/locales/fr-TD.mjs +2 -2
  1776. package/locales/fr-TG.d.ts +1 -1
  1777. package/locales/fr-TG.mjs +2 -2
  1778. package/locales/fr-TN.d.ts +1 -1
  1779. package/locales/fr-TN.mjs +2 -2
  1780. package/locales/fr-VU.d.ts +1 -1
  1781. package/locales/fr-VU.mjs +2 -2
  1782. package/locales/fr-WF.d.ts +1 -1
  1783. package/locales/fr-WF.mjs +2 -2
  1784. package/locales/fr-YT.d.ts +1 -1
  1785. package/locales/fr-YT.mjs +2 -2
  1786. package/locales/fr.d.ts +1 -1
  1787. package/locales/fr.mjs +2 -2
  1788. package/locales/fur.d.ts +1 -1
  1789. package/locales/fur.mjs +2 -2
  1790. package/locales/fy.d.ts +1 -1
  1791. package/locales/fy.mjs +2 -2
  1792. package/locales/ga-GB.d.ts +1 -1
  1793. package/locales/ga-GB.mjs +2 -2
  1794. package/locales/ga.d.ts +1 -1
  1795. package/locales/ga.mjs +2 -2
  1796. package/locales/gd.d.ts +1 -1
  1797. package/locales/gd.mjs +2 -2
  1798. package/locales/gl.d.ts +1 -1
  1799. package/locales/gl.mjs +2 -2
  1800. package/locales/global/af-NA.js +1 -1
  1801. package/locales/global/af.js +1 -1
  1802. package/locales/global/agq.js +1 -1
  1803. package/locales/global/ak.js +1 -1
  1804. package/locales/global/am.js +1 -1
  1805. package/locales/global/ar-AE.js +1 -1
  1806. package/locales/global/ar-BH.js +1 -1
  1807. package/locales/global/ar-DJ.js +1 -1
  1808. package/locales/global/ar-DZ.js +1 -1
  1809. package/locales/global/ar-EG.js +1 -1
  1810. package/locales/global/ar-EH.js +1 -1
  1811. package/locales/global/ar-ER.js +1 -1
  1812. package/locales/global/ar-IL.js +1 -1
  1813. package/locales/global/ar-IQ.js +1 -1
  1814. package/locales/global/ar-JO.js +1 -1
  1815. package/locales/global/ar-KM.js +1 -1
  1816. package/locales/global/ar-KW.js +1 -1
  1817. package/locales/global/ar-LB.js +1 -1
  1818. package/locales/global/ar-LY.js +1 -1
  1819. package/locales/global/ar-MA.js +1 -1
  1820. package/locales/global/ar-MR.js +1 -1
  1821. package/locales/global/ar-OM.js +1 -1
  1822. package/locales/global/ar-PS.js +1 -1
  1823. package/locales/global/ar-QA.js +1 -1
  1824. package/locales/global/ar-SA.js +1 -1
  1825. package/locales/global/ar-SD.js +1 -1
  1826. package/locales/global/ar-SO.js +1 -1
  1827. package/locales/global/ar-SS.js +1 -1
  1828. package/locales/global/ar-SY.js +1 -1
  1829. package/locales/global/ar-TD.js +1 -1
  1830. package/locales/global/ar-TN.js +1 -1
  1831. package/locales/global/ar-YE.js +1 -1
  1832. package/locales/global/ar.js +1 -1
  1833. package/locales/global/as.js +1 -1
  1834. package/locales/global/asa.js +1 -1
  1835. package/locales/global/ast.js +1 -1
  1836. package/locales/global/az-Cyrl.js +1 -1
  1837. package/locales/global/az-Latn.js +1 -1
  1838. package/locales/global/az.js +1 -1
  1839. package/locales/global/bas.js +1 -1
  1840. package/locales/global/be-tarask.js +1 -1
  1841. package/locales/global/be.js +1 -1
  1842. package/locales/global/bem.js +1 -1
  1843. package/locales/global/bez.js +1 -1
  1844. package/locales/global/bg.js +1 -1
  1845. package/locales/global/bm.js +1 -1
  1846. package/locales/global/bn-IN.js +1 -1
  1847. package/locales/global/bn.js +1 -1
  1848. package/locales/global/bo-IN.js +1 -1
  1849. package/locales/global/bo.js +1 -1
  1850. package/locales/global/br.js +1 -1
  1851. package/locales/global/brx.js +1 -1
  1852. package/locales/global/bs-Cyrl.js +1 -1
  1853. package/locales/global/bs-Latn.js +1 -1
  1854. package/locales/global/bs.js +1 -1
  1855. package/locales/global/ca-AD.js +1 -1
  1856. package/locales/global/ca-ES-valencia.js +1 -1
  1857. package/locales/global/ca-FR.js +1 -1
  1858. package/locales/global/ca-IT.js +1 -1
  1859. package/locales/global/ca.js +1 -1
  1860. package/locales/global/ccp-IN.js +1 -1
  1861. package/locales/global/ccp.js +1 -1
  1862. package/locales/global/ce.js +1 -1
  1863. package/locales/global/ceb.js +1 -1
  1864. package/locales/global/cgg.js +1 -1
  1865. package/locales/global/chr.js +1 -1
  1866. package/locales/global/ckb-IR.js +1 -1
  1867. package/locales/global/ckb.js +1 -1
  1868. package/locales/global/cs.js +1 -1
  1869. package/locales/global/cy.js +1 -1
  1870. package/locales/global/da-GL.js +1 -1
  1871. package/locales/global/da.js +1 -1
  1872. package/locales/global/dav.js +1 -1
  1873. package/locales/global/de-AT.js +1 -1
  1874. package/locales/global/de-BE.js +1 -1
  1875. package/locales/global/de-CH.js +1 -1
  1876. package/locales/global/de-IT.js +1 -1
  1877. package/locales/global/de-LI.js +1 -1
  1878. package/locales/global/de-LU.js +1 -1
  1879. package/locales/global/de.js +1 -1
  1880. package/locales/global/dje.js +1 -1
  1881. package/locales/global/doi.js +1 -1
  1882. package/locales/global/dsb.js +1 -1
  1883. package/locales/global/dua.js +1 -1
  1884. package/locales/global/dyo.js +1 -1
  1885. package/locales/global/dz.js +1 -1
  1886. package/locales/global/ebu.js +1 -1
  1887. package/locales/global/ee-TG.js +1 -1
  1888. package/locales/global/ee.js +1 -1
  1889. package/locales/global/el-CY.js +1 -1
  1890. package/locales/global/el.js +1 -1
  1891. package/locales/global/en-001.js +1 -1
  1892. package/locales/global/en-150.js +1 -1
  1893. package/locales/global/en-AE.js +1 -1
  1894. package/locales/global/en-AG.js +1 -1
  1895. package/locales/global/en-AI.js +1 -1
  1896. package/locales/global/en-AS.js +1 -1
  1897. package/locales/global/en-AT.js +1 -1
  1898. package/locales/global/en-AU.js +1 -1
  1899. package/locales/global/en-BB.js +1 -1
  1900. package/locales/global/en-BE.js +1 -1
  1901. package/locales/global/en-BI.js +1 -1
  1902. package/locales/global/en-BM.js +1 -1
  1903. package/locales/global/en-BS.js +1 -1
  1904. package/locales/global/en-BW.js +1 -1
  1905. package/locales/global/en-BZ.js +1 -1
  1906. package/locales/global/en-CA.js +1 -1
  1907. package/locales/global/en-CC.js +1 -1
  1908. package/locales/global/en-CH.js +1 -1
  1909. package/locales/global/en-CK.js +1 -1
  1910. package/locales/global/en-CM.js +1 -1
  1911. package/locales/global/en-CX.js +1 -1
  1912. package/locales/global/en-CY.js +1 -1
  1913. package/locales/global/en-DE.js +1 -1
  1914. package/locales/global/en-DG.js +1 -1
  1915. package/locales/global/en-DK.js +1 -1
  1916. package/locales/global/en-DM.js +1 -1
  1917. package/locales/global/en-ER.js +1 -1
  1918. package/locales/global/en-FI.js +1 -1
  1919. package/locales/global/en-FJ.js +1 -1
  1920. package/locales/global/en-FK.js +1 -1
  1921. package/locales/global/en-FM.js +1 -1
  1922. package/locales/global/en-GB.js +1 -1
  1923. package/locales/global/en-GD.js +1 -1
  1924. package/locales/global/en-GG.js +1 -1
  1925. package/locales/global/en-GH.js +1 -1
  1926. package/locales/global/en-GI.js +1 -1
  1927. package/locales/global/en-GM.js +1 -1
  1928. package/locales/global/en-GU.js +1 -1
  1929. package/locales/global/en-GY.js +1 -1
  1930. package/locales/global/en-HK.js +1 -1
  1931. package/locales/global/en-IE.js +1 -1
  1932. package/locales/global/en-IL.js +1 -1
  1933. package/locales/global/en-IM.js +1 -1
  1934. package/locales/global/en-IN.js +1 -1
  1935. package/locales/global/en-IO.js +1 -1
  1936. package/locales/global/en-JE.js +1 -1
  1937. package/locales/global/en-JM.js +1 -1
  1938. package/locales/global/en-KE.js +1 -1
  1939. package/locales/global/en-KI.js +1 -1
  1940. package/locales/global/en-KN.js +1 -1
  1941. package/locales/global/en-KY.js +1 -1
  1942. package/locales/global/en-LC.js +1 -1
  1943. package/locales/global/en-LR.js +1 -1
  1944. package/locales/global/en-LS.js +1 -1
  1945. package/locales/global/en-MG.js +1 -1
  1946. package/locales/global/en-MH.js +1 -1
  1947. package/locales/global/en-MO.js +1 -1
  1948. package/locales/global/en-MP.js +1 -1
  1949. package/locales/global/en-MS.js +1 -1
  1950. package/locales/global/en-MT.js +1 -1
  1951. package/locales/global/en-MU.js +1 -1
  1952. package/locales/global/en-MV.js +1 -1
  1953. package/locales/global/en-MW.js +1 -1
  1954. package/locales/global/en-MY.js +1 -1
  1955. package/locales/global/en-NA.js +1 -1
  1956. package/locales/global/en-NF.js +1 -1
  1957. package/locales/global/en-NG.js +1 -1
  1958. package/locales/global/en-NL.js +1 -1
  1959. package/locales/global/en-NR.js +1 -1
  1960. package/locales/global/en-NU.js +1 -1
  1961. package/locales/global/en-NZ.js +1 -1
  1962. package/locales/global/en-PG.js +1 -1
  1963. package/locales/global/en-PH.js +1 -1
  1964. package/locales/global/en-PK.js +1 -1
  1965. package/locales/global/en-PN.js +1 -1
  1966. package/locales/global/en-PR.js +1 -1
  1967. package/locales/global/en-PW.js +1 -1
  1968. package/locales/global/en-RW.js +1 -1
  1969. package/locales/global/en-SB.js +1 -1
  1970. package/locales/global/en-SC.js +1 -1
  1971. package/locales/global/en-SD.js +1 -1
  1972. package/locales/global/en-SE.js +1 -1
  1973. package/locales/global/en-SG.js +1 -1
  1974. package/locales/global/en-SH.js +1 -1
  1975. package/locales/global/en-SI.js +1 -1
  1976. package/locales/global/en-SL.js +1 -1
  1977. package/locales/global/en-SS.js +1 -1
  1978. package/locales/global/en-SX.js +1 -1
  1979. package/locales/global/en-SZ.js +1 -1
  1980. package/locales/global/en-TC.js +1 -1
  1981. package/locales/global/en-TK.js +1 -1
  1982. package/locales/global/en-TO.js +1 -1
  1983. package/locales/global/en-TT.js +1 -1
  1984. package/locales/global/en-TV.js +1 -1
  1985. package/locales/global/en-TZ.js +1 -1
  1986. package/locales/global/en-UG.js +1 -1
  1987. package/locales/global/en-UM.js +1 -1
  1988. package/locales/global/en-VC.js +1 -1
  1989. package/locales/global/en-VG.js +1 -1
  1990. package/locales/global/en-VI.js +1 -1
  1991. package/locales/global/en-VU.js +1 -1
  1992. package/locales/global/en-WS.js +1 -1
  1993. package/locales/global/en-ZA.js +1 -1
  1994. package/locales/global/en-ZM.js +1 -1
  1995. package/locales/global/en-ZW.js +1 -1
  1996. package/locales/global/en.js +1 -1
  1997. package/locales/global/eo.js +1 -1
  1998. package/locales/global/es-419.js +1 -1
  1999. package/locales/global/es-AR.js +1 -1
  2000. package/locales/global/es-BO.js +1 -1
  2001. package/locales/global/es-BR.js +1 -1
  2002. package/locales/global/es-BZ.js +1 -1
  2003. package/locales/global/es-CL.js +1 -1
  2004. package/locales/global/es-CO.js +1 -1
  2005. package/locales/global/es-CR.js +1 -1
  2006. package/locales/global/es-CU.js +1 -1
  2007. package/locales/global/es-DO.js +1 -1
  2008. package/locales/global/es-EA.js +1 -1
  2009. package/locales/global/es-EC.js +1 -1
  2010. package/locales/global/es-GQ.js +1 -1
  2011. package/locales/global/es-GT.js +1 -1
  2012. package/locales/global/es-HN.js +1 -1
  2013. package/locales/global/es-IC.js +1 -1
  2014. package/locales/global/es-MX.js +1 -1
  2015. package/locales/global/es-NI.js +1 -1
  2016. package/locales/global/es-PA.js +1 -1
  2017. package/locales/global/es-PE.js +1 -1
  2018. package/locales/global/es-PH.js +1 -1
  2019. package/locales/global/es-PR.js +1 -1
  2020. package/locales/global/es-PY.js +1 -1
  2021. package/locales/global/es-SV.js +1 -1
  2022. package/locales/global/es-US.js +1 -1
  2023. package/locales/global/es-UY.js +1 -1
  2024. package/locales/global/es-VE.js +1 -1
  2025. package/locales/global/es.js +1 -1
  2026. package/locales/global/et.js +1 -1
  2027. package/locales/global/eu.js +1 -1
  2028. package/locales/global/ewo.js +1 -1
  2029. package/locales/global/fa-AF.js +1 -1
  2030. package/locales/global/fa.js +1 -1
  2031. package/locales/global/ff-Adlm-BF.js +1 -1
  2032. package/locales/global/ff-Adlm-CM.js +1 -1
  2033. package/locales/global/ff-Adlm-GH.js +1 -1
  2034. package/locales/global/ff-Adlm-GM.js +1 -1
  2035. package/locales/global/ff-Adlm-GW.js +1 -1
  2036. package/locales/global/ff-Adlm-LR.js +1 -1
  2037. package/locales/global/ff-Adlm-MR.js +1 -1
  2038. package/locales/global/ff-Adlm-NE.js +1 -1
  2039. package/locales/global/ff-Adlm-NG.js +1 -1
  2040. package/locales/global/ff-Adlm-SL.js +1 -1
  2041. package/locales/global/ff-Adlm-SN.js +1 -1
  2042. package/locales/global/ff-Adlm.js +1 -1
  2043. package/locales/global/ff-CM.js +1 -1
  2044. package/locales/global/ff-GN.js +1 -1
  2045. package/locales/global/ff-Latn-BF.js +1 -1
  2046. package/locales/global/ff-Latn-CM.js +1 -1
  2047. package/locales/global/ff-Latn-GH.js +1 -1
  2048. package/locales/global/ff-Latn-GM.js +1 -1
  2049. package/locales/global/ff-Latn-GN.js +1 -1
  2050. package/locales/global/ff-Latn-GW.js +1 -1
  2051. package/locales/global/ff-Latn-LR.js +1 -1
  2052. package/locales/global/ff-Latn-MR.js +1 -1
  2053. package/locales/global/ff-Latn-NE.js +1 -1
  2054. package/locales/global/ff-Latn-NG.js +1 -1
  2055. package/locales/global/ff-Latn-SL.js +1 -1
  2056. package/locales/global/ff-Latn.js +1 -1
  2057. package/locales/global/ff-MR.js +1 -1
  2058. package/locales/global/ff.js +1 -1
  2059. package/locales/global/fi.js +1 -1
  2060. package/locales/global/fil.js +1 -1
  2061. package/locales/global/fo-DK.js +1 -1
  2062. package/locales/global/fo.js +1 -1
  2063. package/locales/global/fr-BE.js +1 -1
  2064. package/locales/global/fr-BF.js +1 -1
  2065. package/locales/global/fr-BI.js +1 -1
  2066. package/locales/global/fr-BJ.js +1 -1
  2067. package/locales/global/fr-BL.js +1 -1
  2068. package/locales/global/fr-CA.js +1 -1
  2069. package/locales/global/fr-CD.js +1 -1
  2070. package/locales/global/fr-CF.js +1 -1
  2071. package/locales/global/fr-CG.js +1 -1
  2072. package/locales/global/fr-CH.js +1 -1
  2073. package/locales/global/fr-CI.js +1 -1
  2074. package/locales/global/fr-CM.js +1 -1
  2075. package/locales/global/fr-DJ.js +1 -1
  2076. package/locales/global/fr-DZ.js +1 -1
  2077. package/locales/global/fr-GA.js +1 -1
  2078. package/locales/global/fr-GF.js +1 -1
  2079. package/locales/global/fr-GN.js +1 -1
  2080. package/locales/global/fr-GP.js +1 -1
  2081. package/locales/global/fr-GQ.js +1 -1
  2082. package/locales/global/fr-HT.js +1 -1
  2083. package/locales/global/fr-KM.js +1 -1
  2084. package/locales/global/fr-LU.js +1 -1
  2085. package/locales/global/fr-MA.js +1 -1
  2086. package/locales/global/fr-MC.js +1 -1
  2087. package/locales/global/fr-MF.js +1 -1
  2088. package/locales/global/fr-MG.js +1 -1
  2089. package/locales/global/fr-ML.js +1 -1
  2090. package/locales/global/fr-MQ.js +1 -1
  2091. package/locales/global/fr-MR.js +1 -1
  2092. package/locales/global/fr-MU.js +1 -1
  2093. package/locales/global/fr-NC.js +1 -1
  2094. package/locales/global/fr-NE.js +1 -1
  2095. package/locales/global/fr-PF.js +1 -1
  2096. package/locales/global/fr-PM.js +1 -1
  2097. package/locales/global/fr-RE.js +1 -1
  2098. package/locales/global/fr-RW.js +1 -1
  2099. package/locales/global/fr-SC.js +1 -1
  2100. package/locales/global/fr-SN.js +1 -1
  2101. package/locales/global/fr-SY.js +1 -1
  2102. package/locales/global/fr-TD.js +1 -1
  2103. package/locales/global/fr-TG.js +1 -1
  2104. package/locales/global/fr-TN.js +1 -1
  2105. package/locales/global/fr-VU.js +1 -1
  2106. package/locales/global/fr-WF.js +1 -1
  2107. package/locales/global/fr-YT.js +1 -1
  2108. package/locales/global/fr.js +1 -1
  2109. package/locales/global/fur.js +1 -1
  2110. package/locales/global/fy.js +1 -1
  2111. package/locales/global/ga-GB.js +1 -1
  2112. package/locales/global/ga.js +1 -1
  2113. package/locales/global/gd.js +1 -1
  2114. package/locales/global/gl.js +1 -1
  2115. package/locales/global/gsw-FR.js +1 -1
  2116. package/locales/global/gsw-LI.js +1 -1
  2117. package/locales/global/gsw.js +1 -1
  2118. package/locales/global/gu.js +1 -1
  2119. package/locales/global/guz.js +1 -1
  2120. package/locales/global/gv.js +1 -1
  2121. package/locales/global/ha-GH.js +1 -1
  2122. package/locales/global/ha-NE.js +1 -1
  2123. package/locales/global/ha.js +1 -1
  2124. package/locales/global/haw.js +1 -1
  2125. package/locales/global/he.js +1 -1
  2126. package/locales/global/hi-Latn.js +1 -1
  2127. package/locales/global/hi.js +1 -1
  2128. package/locales/global/hr-BA.js +1 -1
  2129. package/locales/global/hr.js +1 -1
  2130. package/locales/global/hsb.js +1 -1
  2131. package/locales/global/hu.js +1 -1
  2132. package/locales/global/hy.js +1 -1
  2133. package/locales/global/ia.js +1 -1
  2134. package/locales/global/id.js +1 -1
  2135. package/locales/global/ig.js +1 -1
  2136. package/locales/global/ii.js +1 -1
  2137. package/locales/global/is.js +1 -1
  2138. package/locales/global/it-CH.js +1 -1
  2139. package/locales/global/it-SM.js +1 -1
  2140. package/locales/global/it-VA.js +1 -1
  2141. package/locales/global/it.js +1 -1
  2142. package/locales/global/ja.js +1 -1
  2143. package/locales/global/jgo.js +1 -1
  2144. package/locales/global/jmc.js +1 -1
  2145. package/locales/global/jv.js +1 -1
  2146. package/locales/global/ka.js +1 -1
  2147. package/locales/global/kab.js +1 -1
  2148. package/locales/global/kam.js +1 -1
  2149. package/locales/global/kde.js +1 -1
  2150. package/locales/global/kea.js +1 -1
  2151. package/locales/global/kgp.js +1 -1
  2152. package/locales/global/khq.js +1 -1
  2153. package/locales/global/ki.js +1 -1
  2154. package/locales/global/kk.js +1 -1
  2155. package/locales/global/kkj.js +1 -1
  2156. package/locales/global/kl.js +1 -1
  2157. package/locales/global/kln.js +1 -1
  2158. package/locales/global/km.js +1 -1
  2159. package/locales/global/kn.js +1 -1
  2160. package/locales/global/ko-KP.js +1 -1
  2161. package/locales/global/ko.js +1 -1
  2162. package/locales/global/kok.js +1 -1
  2163. package/locales/global/ks-Arab.js +1 -1
  2164. package/locales/global/ks-Deva.js +1 -1
  2165. package/locales/global/ks.js +1 -1
  2166. package/locales/global/ksb.js +1 -1
  2167. package/locales/global/ksf.js +1 -1
  2168. package/locales/global/ksh.js +1 -1
  2169. package/locales/global/ku.js +1 -1
  2170. package/locales/global/kw.js +1 -1
  2171. package/locales/global/ky.js +1 -1
  2172. package/locales/global/lag.js +1 -1
  2173. package/locales/global/lb.js +1 -1
  2174. package/locales/global/lg.js +1 -1
  2175. package/locales/global/lkt.js +1 -1
  2176. package/locales/global/ln-AO.js +1 -1
  2177. package/locales/global/ln-CF.js +1 -1
  2178. package/locales/global/ln-CG.js +1 -1
  2179. package/locales/global/ln.js +1 -1
  2180. package/locales/global/lo.js +1 -1
  2181. package/locales/global/lrc-IQ.js +1 -1
  2182. package/locales/global/lrc.js +1 -1
  2183. package/locales/global/lt.js +1 -1
  2184. package/locales/global/lu.js +1 -1
  2185. package/locales/global/luo.js +1 -1
  2186. package/locales/global/luy.js +1 -1
  2187. package/locales/global/lv.js +1 -1
  2188. package/locales/global/mai.js +1 -1
  2189. package/locales/global/mas-TZ.js +1 -1
  2190. package/locales/global/mas.js +1 -1
  2191. package/locales/global/mer.js +1 -1
  2192. package/locales/global/mfe.js +1 -1
  2193. package/locales/global/mg.js +1 -1
  2194. package/locales/global/mgh.js +1 -1
  2195. package/locales/global/mgo.js +1 -1
  2196. package/locales/global/mi.js +1 -1
  2197. package/locales/global/mk.js +1 -1
  2198. package/locales/global/ml.js +1 -1
  2199. package/locales/global/mn.js +1 -1
  2200. package/locales/global/mni-Beng.js +1 -1
  2201. package/locales/global/mni.js +1 -1
  2202. package/locales/global/mr.js +1 -1
  2203. package/locales/global/ms-BN.js +1 -1
  2204. package/locales/global/ms-ID.js +1 -1
  2205. package/locales/global/ms-SG.js +1 -1
  2206. package/locales/global/ms.js +1 -1
  2207. package/locales/global/mt.js +1 -1
  2208. package/locales/global/mua.js +1 -1
  2209. package/locales/global/my.js +1 -1
  2210. package/locales/global/mzn.js +1 -1
  2211. package/locales/global/naq.js +1 -1
  2212. package/locales/global/nb-SJ.js +1 -1
  2213. package/locales/global/nb.js +1 -1
  2214. package/locales/global/nd.js +1 -1
  2215. package/locales/global/nds-NL.js +1 -1
  2216. package/locales/global/nds.js +1 -1
  2217. package/locales/global/ne-IN.js +1 -1
  2218. package/locales/global/ne.js +1 -1
  2219. package/locales/global/nl-AW.js +1 -1
  2220. package/locales/global/nl-BE.js +1 -1
  2221. package/locales/global/nl-BQ.js +1 -1
  2222. package/locales/global/nl-CW.js +1 -1
  2223. package/locales/global/nl-SR.js +1 -1
  2224. package/locales/global/nl-SX.js +1 -1
  2225. package/locales/global/nl.js +1 -1
  2226. package/locales/global/nmg.js +1 -1
  2227. package/locales/global/nn.js +1 -1
  2228. package/locales/global/nnh.js +1 -1
  2229. package/locales/global/no.js +1 -1
  2230. package/locales/global/nus.js +1 -1
  2231. package/locales/global/nyn.js +1 -1
  2232. package/locales/global/om-KE.js +1 -1
  2233. package/locales/global/om.js +1 -1
  2234. package/locales/global/or.js +1 -1
  2235. package/locales/global/os-RU.js +1 -1
  2236. package/locales/global/os.js +1 -1
  2237. package/locales/global/pa-Arab.js +1 -1
  2238. package/locales/global/pa-Guru.js +1 -1
  2239. package/locales/global/pa.js +1 -1
  2240. package/locales/global/pcm.js +1 -1
  2241. package/locales/global/pl.js +1 -1
  2242. package/locales/global/ps-PK.js +1 -1
  2243. package/locales/global/ps.js +1 -1
  2244. package/locales/global/pt-AO.js +1 -1
  2245. package/locales/global/pt-CH.js +1 -1
  2246. package/locales/global/pt-CV.js +1 -1
  2247. package/locales/global/pt-GQ.js +1 -1
  2248. package/locales/global/pt-GW.js +1 -1
  2249. package/locales/global/pt-LU.js +1 -1
  2250. package/locales/global/pt-MO.js +1 -1
  2251. package/locales/global/pt-MZ.js +1 -1
  2252. package/locales/global/pt-PT.js +1 -1
  2253. package/locales/global/pt-ST.js +1 -1
  2254. package/locales/global/pt-TL.js +1 -1
  2255. package/locales/global/pt.js +1 -1
  2256. package/locales/global/qu-BO.js +1 -1
  2257. package/locales/global/qu-EC.js +1 -1
  2258. package/locales/global/qu.js +1 -1
  2259. package/locales/global/rm.js +1 -1
  2260. package/locales/global/rn.js +1 -1
  2261. package/locales/global/ro-MD.js +1 -1
  2262. package/locales/global/ro.js +1 -1
  2263. package/locales/global/rof.js +1 -1
  2264. package/locales/global/ru-BY.js +1 -1
  2265. package/locales/global/ru-KG.js +1 -1
  2266. package/locales/global/ru-KZ.js +1 -1
  2267. package/locales/global/ru-MD.js +1 -1
  2268. package/locales/global/ru-UA.js +1 -1
  2269. package/locales/global/ru.js +1 -1
  2270. package/locales/global/rw.js +1 -1
  2271. package/locales/global/rwk.js +1 -1
  2272. package/locales/global/sa.js +1 -1
  2273. package/locales/global/sah.js +1 -1
  2274. package/locales/global/saq.js +1 -1
  2275. package/locales/global/sat-Olck.js +1 -1
  2276. package/locales/global/sat.js +1 -1
  2277. package/locales/global/sbp.js +1 -1
  2278. package/locales/global/sc.js +1 -1
  2279. package/locales/global/sd-Arab.js +1 -1
  2280. package/locales/global/sd-Deva.js +1 -1
  2281. package/locales/global/sd.js +1 -1
  2282. package/locales/global/se-FI.js +1 -1
  2283. package/locales/global/se-SE.js +1 -1
  2284. package/locales/global/se.js +1 -1
  2285. package/locales/global/seh.js +1 -1
  2286. package/locales/global/ses.js +1 -1
  2287. package/locales/global/sg.js +1 -1
  2288. package/locales/global/shi-Latn.js +1 -1
  2289. package/locales/global/shi-Tfng.js +1 -1
  2290. package/locales/global/shi.js +1 -1
  2291. package/locales/global/si.js +1 -1
  2292. package/locales/global/sk.js +1 -1
  2293. package/locales/global/sl.js +1 -1
  2294. package/locales/global/smn.js +1 -1
  2295. package/locales/global/sn.js +1 -1
  2296. package/locales/global/so-DJ.js +1 -1
  2297. package/locales/global/so-ET.js +1 -1
  2298. package/locales/global/so-KE.js +1 -1
  2299. package/locales/global/so.js +1 -1
  2300. package/locales/global/sq-MK.js +1 -1
  2301. package/locales/global/sq-XK.js +1 -1
  2302. package/locales/global/sq.js +1 -1
  2303. package/locales/global/sr-Cyrl-BA.js +1 -1
  2304. package/locales/global/sr-Cyrl-ME.js +1 -1
  2305. package/locales/global/sr-Cyrl-XK.js +1 -1
  2306. package/locales/global/sr-Cyrl.js +1 -1
  2307. package/locales/global/sr-Latn-BA.js +1 -1
  2308. package/locales/global/sr-Latn-ME.js +1 -1
  2309. package/locales/global/sr-Latn-XK.js +1 -1
  2310. package/locales/global/sr-Latn.js +1 -1
  2311. package/locales/global/sr.js +1 -1
  2312. package/locales/global/su-Latn.js +1 -1
  2313. package/locales/global/su.js +1 -1
  2314. package/locales/global/sv-AX.js +1 -1
  2315. package/locales/global/sv-FI.js +1 -1
  2316. package/locales/global/sv.js +1 -1
  2317. package/locales/global/sw-CD.js +1 -1
  2318. package/locales/global/sw-KE.js +1 -1
  2319. package/locales/global/sw-UG.js +1 -1
  2320. package/locales/global/sw.js +1 -1
  2321. package/locales/global/ta-LK.js +1 -1
  2322. package/locales/global/ta-MY.js +1 -1
  2323. package/locales/global/ta-SG.js +1 -1
  2324. package/locales/global/ta.js +1 -1
  2325. package/locales/global/te.js +1 -1
  2326. package/locales/global/teo-KE.js +1 -1
  2327. package/locales/global/teo.js +1 -1
  2328. package/locales/global/tg.js +1 -1
  2329. package/locales/global/th.js +1 -1
  2330. package/locales/global/ti-ER.js +1 -1
  2331. package/locales/global/ti.js +1 -1
  2332. package/locales/global/tk.js +1 -1
  2333. package/locales/global/to.js +1 -1
  2334. package/locales/global/tr-CY.js +1 -1
  2335. package/locales/global/tr.js +1 -1
  2336. package/locales/global/tt.js +1 -1
  2337. package/locales/global/twq.js +1 -1
  2338. package/locales/global/tzm.js +1 -1
  2339. package/locales/global/ug.js +1 -1
  2340. package/locales/global/uk.js +1 -1
  2341. package/locales/global/und.js +1 -1
  2342. package/locales/global/ur-IN.js +1 -1
  2343. package/locales/global/ur.js +1 -1
  2344. package/locales/global/uz-Arab.js +1 -1
  2345. package/locales/global/uz-Cyrl.js +1 -1
  2346. package/locales/global/uz-Latn.js +1 -1
  2347. package/locales/global/uz.js +1 -1
  2348. package/locales/global/vai-Latn.js +1 -1
  2349. package/locales/global/vai-Vaii.js +1 -1
  2350. package/locales/global/vai.js +1 -1
  2351. package/locales/global/vi.js +1 -1
  2352. package/locales/global/vun.js +1 -1
  2353. package/locales/global/wae.js +1 -1
  2354. package/locales/global/wo.js +1 -1
  2355. package/locales/global/xh.js +1 -1
  2356. package/locales/global/xog.js +1 -1
  2357. package/locales/global/yav.js +1 -1
  2358. package/locales/global/yi.js +1 -1
  2359. package/locales/global/yo-BJ.js +1 -1
  2360. package/locales/global/yo.js +1 -1
  2361. package/locales/global/yrl-CO.js +1 -1
  2362. package/locales/global/yrl-VE.js +1 -1
  2363. package/locales/global/yrl.js +1 -1
  2364. package/locales/global/yue-Hans.js +1 -1
  2365. package/locales/global/yue-Hant.js +1 -1
  2366. package/locales/global/yue.js +1 -1
  2367. package/locales/global/zgh.js +1 -1
  2368. package/locales/global/zh-Hans-HK.js +1 -1
  2369. package/locales/global/zh-Hans-MO.js +1 -1
  2370. package/locales/global/zh-Hans-SG.js +1 -1
  2371. package/locales/global/zh-Hans.js +1 -1
  2372. package/locales/global/zh-Hant-HK.js +1 -1
  2373. package/locales/global/zh-Hant-MO.js +1 -1
  2374. package/locales/global/zh-Hant.js +1 -1
  2375. package/locales/global/zh.js +1 -1
  2376. package/locales/global/zu.js +1 -1
  2377. package/locales/gsw-FR.d.ts +1 -1
  2378. package/locales/gsw-FR.mjs +2 -2
  2379. package/locales/gsw-LI.d.ts +1 -1
  2380. package/locales/gsw-LI.mjs +2 -2
  2381. package/locales/gsw.d.ts +1 -1
  2382. package/locales/gsw.mjs +2 -2
  2383. package/locales/gu.d.ts +1 -1
  2384. package/locales/gu.mjs +2 -2
  2385. package/locales/guz.d.ts +1 -1
  2386. package/locales/guz.mjs +2 -2
  2387. package/locales/gv.d.ts +1 -1
  2388. package/locales/gv.mjs +2 -2
  2389. package/locales/ha-GH.d.ts +1 -1
  2390. package/locales/ha-GH.mjs +2 -2
  2391. package/locales/ha-NE.d.ts +1 -1
  2392. package/locales/ha-NE.mjs +2 -2
  2393. package/locales/ha.d.ts +1 -1
  2394. package/locales/ha.mjs +2 -2
  2395. package/locales/haw.d.ts +1 -1
  2396. package/locales/haw.mjs +2 -2
  2397. package/locales/he.d.ts +1 -1
  2398. package/locales/he.mjs +2 -2
  2399. package/locales/hi-Latn.d.ts +1 -1
  2400. package/locales/hi-Latn.mjs +2 -2
  2401. package/locales/hi.d.ts +1 -1
  2402. package/locales/hi.mjs +2 -2
  2403. package/locales/hr-BA.d.ts +1 -1
  2404. package/locales/hr-BA.mjs +2 -2
  2405. package/locales/hr.d.ts +1 -1
  2406. package/locales/hr.mjs +2 -2
  2407. package/locales/hsb.d.ts +1 -1
  2408. package/locales/hsb.mjs +2 -2
  2409. package/locales/hu.d.ts +1 -1
  2410. package/locales/hu.mjs +2 -2
  2411. package/locales/hy.d.ts +1 -1
  2412. package/locales/hy.mjs +2 -2
  2413. package/locales/ia.d.ts +1 -1
  2414. package/locales/ia.mjs +2 -2
  2415. package/locales/id.d.ts +1 -1
  2416. package/locales/id.mjs +2 -2
  2417. package/locales/ig.d.ts +1 -1
  2418. package/locales/ig.mjs +2 -2
  2419. package/locales/ii.d.ts +1 -1
  2420. package/locales/ii.mjs +2 -2
  2421. package/locales/is.d.ts +1 -1
  2422. package/locales/is.mjs +2 -2
  2423. package/locales/it-CH.d.ts +1 -1
  2424. package/locales/it-CH.mjs +2 -2
  2425. package/locales/it-SM.d.ts +1 -1
  2426. package/locales/it-SM.mjs +2 -2
  2427. package/locales/it-VA.d.ts +1 -1
  2428. package/locales/it-VA.mjs +2 -2
  2429. package/locales/it.d.ts +1 -1
  2430. package/locales/it.mjs +2 -2
  2431. package/locales/ja.d.ts +1 -1
  2432. package/locales/ja.mjs +2 -2
  2433. package/locales/jgo.d.ts +1 -1
  2434. package/locales/jgo.mjs +2 -2
  2435. package/locales/jmc.d.ts +1 -1
  2436. package/locales/jmc.mjs +2 -2
  2437. package/locales/jv.d.ts +1 -1
  2438. package/locales/jv.mjs +2 -2
  2439. package/locales/ka.d.ts +1 -1
  2440. package/locales/ka.mjs +2 -2
  2441. package/locales/kab.d.ts +1 -1
  2442. package/locales/kab.mjs +2 -2
  2443. package/locales/kam.d.ts +1 -1
  2444. package/locales/kam.mjs +2 -2
  2445. package/locales/kde.d.ts +1 -1
  2446. package/locales/kde.mjs +2 -2
  2447. package/locales/kea.d.ts +1 -1
  2448. package/locales/kea.mjs +2 -2
  2449. package/locales/kgp.d.ts +1 -1
  2450. package/locales/kgp.mjs +2 -2
  2451. package/locales/khq.d.ts +1 -1
  2452. package/locales/khq.mjs +2 -2
  2453. package/locales/ki.d.ts +1 -1
  2454. package/locales/ki.mjs +2 -2
  2455. package/locales/kk.d.ts +1 -1
  2456. package/locales/kk.mjs +2 -2
  2457. package/locales/kkj.d.ts +1 -1
  2458. package/locales/kkj.mjs +2 -2
  2459. package/locales/kl.d.ts +1 -1
  2460. package/locales/kl.mjs +2 -2
  2461. package/locales/kln.d.ts +1 -1
  2462. package/locales/kln.mjs +2 -2
  2463. package/locales/km.d.ts +1 -1
  2464. package/locales/km.mjs +2 -2
  2465. package/locales/kn.d.ts +1 -1
  2466. package/locales/kn.mjs +2 -2
  2467. package/locales/ko-KP.d.ts +1 -1
  2468. package/locales/ko-KP.mjs +2 -2
  2469. package/locales/ko.d.ts +1 -1
  2470. package/locales/ko.mjs +2 -2
  2471. package/locales/kok.d.ts +1 -1
  2472. package/locales/kok.mjs +2 -2
  2473. package/locales/ks-Arab.d.ts +1 -1
  2474. package/locales/ks-Arab.mjs +2 -2
  2475. package/locales/ks-Deva.d.ts +1 -1
  2476. package/locales/ks-Deva.mjs +2 -2
  2477. package/locales/ks.d.ts +1 -1
  2478. package/locales/ks.mjs +2 -2
  2479. package/locales/ksb.d.ts +1 -1
  2480. package/locales/ksb.mjs +2 -2
  2481. package/locales/ksf.d.ts +1 -1
  2482. package/locales/ksf.mjs +2 -2
  2483. package/locales/ksh.d.ts +1 -1
  2484. package/locales/ksh.mjs +2 -2
  2485. package/locales/ku.d.ts +1 -1
  2486. package/locales/ku.mjs +2 -2
  2487. package/locales/kw.d.ts +1 -1
  2488. package/locales/kw.mjs +2 -2
  2489. package/locales/ky.d.ts +1 -1
  2490. package/locales/ky.mjs +2 -2
  2491. package/locales/lag.d.ts +1 -1
  2492. package/locales/lag.mjs +2 -2
  2493. package/locales/lb.d.ts +1 -1
  2494. package/locales/lb.mjs +2 -2
  2495. package/locales/lg.d.ts +1 -1
  2496. package/locales/lg.mjs +2 -2
  2497. package/locales/lkt.d.ts +1 -1
  2498. package/locales/lkt.mjs +2 -2
  2499. package/locales/ln-AO.d.ts +1 -1
  2500. package/locales/ln-AO.mjs +2 -2
  2501. package/locales/ln-CF.d.ts +1 -1
  2502. package/locales/ln-CF.mjs +2 -2
  2503. package/locales/ln-CG.d.ts +1 -1
  2504. package/locales/ln-CG.mjs +2 -2
  2505. package/locales/ln.d.ts +1 -1
  2506. package/locales/ln.mjs +2 -2
  2507. package/locales/lo.d.ts +1 -1
  2508. package/locales/lo.mjs +2 -2
  2509. package/locales/lrc-IQ.d.ts +1 -1
  2510. package/locales/lrc-IQ.mjs +2 -2
  2511. package/locales/lrc.d.ts +1 -1
  2512. package/locales/lrc.mjs +2 -2
  2513. package/locales/lt.d.ts +1 -1
  2514. package/locales/lt.mjs +2 -2
  2515. package/locales/lu.d.ts +1 -1
  2516. package/locales/lu.mjs +2 -2
  2517. package/locales/luo.d.ts +1 -1
  2518. package/locales/luo.mjs +2 -2
  2519. package/locales/luy.d.ts +1 -1
  2520. package/locales/luy.mjs +2 -2
  2521. package/locales/lv.d.ts +1 -1
  2522. package/locales/lv.mjs +2 -2
  2523. package/locales/mai.d.ts +1 -1
  2524. package/locales/mai.mjs +2 -2
  2525. package/locales/mas-TZ.d.ts +1 -1
  2526. package/locales/mas-TZ.mjs +2 -2
  2527. package/locales/mas.d.ts +1 -1
  2528. package/locales/mas.mjs +2 -2
  2529. package/locales/mer.d.ts +1 -1
  2530. package/locales/mer.mjs +2 -2
  2531. package/locales/mfe.d.ts +1 -1
  2532. package/locales/mfe.mjs +2 -2
  2533. package/locales/mg.d.ts +1 -1
  2534. package/locales/mg.mjs +2 -2
  2535. package/locales/mgh.d.ts +1 -1
  2536. package/locales/mgh.mjs +2 -2
  2537. package/locales/mgo.d.ts +1 -1
  2538. package/locales/mgo.mjs +2 -2
  2539. package/locales/mi.d.ts +1 -1
  2540. package/locales/mi.mjs +2 -2
  2541. package/locales/mk.d.ts +1 -1
  2542. package/locales/mk.mjs +2 -2
  2543. package/locales/ml.d.ts +1 -1
  2544. package/locales/ml.mjs +2 -2
  2545. package/locales/mn.d.ts +1 -1
  2546. package/locales/mn.mjs +2 -2
  2547. package/locales/mni-Beng.d.ts +1 -1
  2548. package/locales/mni-Beng.mjs +2 -2
  2549. package/locales/mni.d.ts +1 -1
  2550. package/locales/mni.mjs +2 -2
  2551. package/locales/mr.d.ts +1 -1
  2552. package/locales/mr.mjs +2 -2
  2553. package/locales/ms-BN.d.ts +1 -1
  2554. package/locales/ms-BN.mjs +2 -2
  2555. package/locales/ms-ID.d.ts +1 -1
  2556. package/locales/ms-ID.mjs +2 -2
  2557. package/locales/ms-SG.d.ts +1 -1
  2558. package/locales/ms-SG.mjs +2 -2
  2559. package/locales/ms.d.ts +1 -1
  2560. package/locales/ms.mjs +2 -2
  2561. package/locales/mt.d.ts +1 -1
  2562. package/locales/mt.mjs +2 -2
  2563. package/locales/mua.d.ts +1 -1
  2564. package/locales/mua.mjs +2 -2
  2565. package/locales/my.d.ts +1 -1
  2566. package/locales/my.mjs +2 -2
  2567. package/locales/mzn.d.ts +1 -1
  2568. package/locales/mzn.mjs +2 -2
  2569. package/locales/naq.d.ts +1 -1
  2570. package/locales/naq.mjs +2 -2
  2571. package/locales/nb-SJ.d.ts +1 -1
  2572. package/locales/nb-SJ.mjs +2 -2
  2573. package/locales/nb.d.ts +1 -1
  2574. package/locales/nb.mjs +2 -2
  2575. package/locales/nd.d.ts +1 -1
  2576. package/locales/nd.mjs +2 -2
  2577. package/locales/nds-NL.d.ts +1 -1
  2578. package/locales/nds-NL.mjs +2 -2
  2579. package/locales/nds.d.ts +1 -1
  2580. package/locales/nds.mjs +2 -2
  2581. package/locales/ne-IN.d.ts +1 -1
  2582. package/locales/ne-IN.mjs +2 -2
  2583. package/locales/ne.d.ts +1 -1
  2584. package/locales/ne.mjs +2 -2
  2585. package/locales/nl-AW.d.ts +1 -1
  2586. package/locales/nl-AW.mjs +2 -2
  2587. package/locales/nl-BE.d.ts +1 -1
  2588. package/locales/nl-BE.mjs +2 -2
  2589. package/locales/nl-BQ.d.ts +1 -1
  2590. package/locales/nl-BQ.mjs +2 -2
  2591. package/locales/nl-CW.d.ts +1 -1
  2592. package/locales/nl-CW.mjs +2 -2
  2593. package/locales/nl-SR.d.ts +1 -1
  2594. package/locales/nl-SR.mjs +2 -2
  2595. package/locales/nl-SX.d.ts +1 -1
  2596. package/locales/nl-SX.mjs +2 -2
  2597. package/locales/nl.d.ts +1 -1
  2598. package/locales/nl.mjs +2 -2
  2599. package/locales/nmg.d.ts +1 -1
  2600. package/locales/nmg.mjs +2 -2
  2601. package/locales/nn.d.ts +1 -1
  2602. package/locales/nn.mjs +2 -2
  2603. package/locales/nnh.d.ts +1 -1
  2604. package/locales/nnh.mjs +2 -2
  2605. package/locales/no.d.ts +1 -1
  2606. package/locales/no.mjs +2 -2
  2607. package/locales/nus.d.ts +1 -1
  2608. package/locales/nus.mjs +2 -2
  2609. package/locales/nyn.d.ts +1 -1
  2610. package/locales/nyn.mjs +2 -2
  2611. package/locales/om-KE.d.ts +1 -1
  2612. package/locales/om-KE.mjs +2 -2
  2613. package/locales/om.d.ts +1 -1
  2614. package/locales/om.mjs +2 -2
  2615. package/locales/or.d.ts +1 -1
  2616. package/locales/or.mjs +2 -2
  2617. package/locales/os-RU.d.ts +1 -1
  2618. package/locales/os-RU.mjs +2 -2
  2619. package/locales/os.d.ts +1 -1
  2620. package/locales/os.mjs +2 -2
  2621. package/locales/pa-Arab.d.ts +1 -1
  2622. package/locales/pa-Arab.mjs +2 -2
  2623. package/locales/pa-Guru.d.ts +1 -1
  2624. package/locales/pa-Guru.mjs +2 -2
  2625. package/locales/pa.d.ts +1 -1
  2626. package/locales/pa.mjs +2 -2
  2627. package/locales/pcm.d.ts +1 -1
  2628. package/locales/pcm.mjs +2 -2
  2629. package/locales/pl.d.ts +1 -1
  2630. package/locales/pl.mjs +2 -2
  2631. package/locales/ps-PK.d.ts +1 -1
  2632. package/locales/ps-PK.mjs +2 -2
  2633. package/locales/ps.d.ts +1 -1
  2634. package/locales/ps.mjs +2 -2
  2635. package/locales/pt-AO.d.ts +1 -1
  2636. package/locales/pt-AO.mjs +2 -2
  2637. package/locales/pt-CH.d.ts +1 -1
  2638. package/locales/pt-CH.mjs +2 -2
  2639. package/locales/pt-CV.d.ts +1 -1
  2640. package/locales/pt-CV.mjs +2 -2
  2641. package/locales/pt-GQ.d.ts +1 -1
  2642. package/locales/pt-GQ.mjs +2 -2
  2643. package/locales/pt-GW.d.ts +1 -1
  2644. package/locales/pt-GW.mjs +2 -2
  2645. package/locales/pt-LU.d.ts +1 -1
  2646. package/locales/pt-LU.mjs +2 -2
  2647. package/locales/pt-MO.d.ts +1 -1
  2648. package/locales/pt-MO.mjs +2 -2
  2649. package/locales/pt-MZ.d.ts +1 -1
  2650. package/locales/pt-MZ.mjs +2 -2
  2651. package/locales/pt-PT.d.ts +1 -1
  2652. package/locales/pt-PT.mjs +2 -2
  2653. package/locales/pt-ST.d.ts +1 -1
  2654. package/locales/pt-ST.mjs +2 -2
  2655. package/locales/pt-TL.d.ts +1 -1
  2656. package/locales/pt-TL.mjs +2 -2
  2657. package/locales/pt.d.ts +1 -1
  2658. package/locales/pt.mjs +2 -2
  2659. package/locales/qu-BO.d.ts +1 -1
  2660. package/locales/qu-BO.mjs +2 -2
  2661. package/locales/qu-EC.d.ts +1 -1
  2662. package/locales/qu-EC.mjs +2 -2
  2663. package/locales/qu.d.ts +1 -1
  2664. package/locales/qu.mjs +2 -2
  2665. package/locales/rm.d.ts +1 -1
  2666. package/locales/rm.mjs +2 -2
  2667. package/locales/rn.d.ts +1 -1
  2668. package/locales/rn.mjs +2 -2
  2669. package/locales/ro-MD.d.ts +1 -1
  2670. package/locales/ro-MD.mjs +2 -2
  2671. package/locales/ro.d.ts +1 -1
  2672. package/locales/ro.mjs +2 -2
  2673. package/locales/rof.d.ts +1 -1
  2674. package/locales/rof.mjs +2 -2
  2675. package/locales/ru-BY.d.ts +1 -1
  2676. package/locales/ru-BY.mjs +2 -2
  2677. package/locales/ru-KG.d.ts +1 -1
  2678. package/locales/ru-KG.mjs +2 -2
  2679. package/locales/ru-KZ.d.ts +1 -1
  2680. package/locales/ru-KZ.mjs +2 -2
  2681. package/locales/ru-MD.d.ts +1 -1
  2682. package/locales/ru-MD.mjs +2 -2
  2683. package/locales/ru-UA.d.ts +1 -1
  2684. package/locales/ru-UA.mjs +2 -2
  2685. package/locales/ru.d.ts +1 -1
  2686. package/locales/ru.mjs +2 -2
  2687. package/locales/rw.d.ts +1 -1
  2688. package/locales/rw.mjs +2 -2
  2689. package/locales/rwk.d.ts +1 -1
  2690. package/locales/rwk.mjs +2 -2
  2691. package/locales/sa.d.ts +1 -1
  2692. package/locales/sa.mjs +2 -2
  2693. package/locales/sah.d.ts +1 -1
  2694. package/locales/sah.mjs +2 -2
  2695. package/locales/saq.d.ts +1 -1
  2696. package/locales/saq.mjs +2 -2
  2697. package/locales/sat-Olck.d.ts +1 -1
  2698. package/locales/sat-Olck.mjs +2 -2
  2699. package/locales/sat.d.ts +1 -1
  2700. package/locales/sat.mjs +2 -2
  2701. package/locales/sbp.d.ts +1 -1
  2702. package/locales/sbp.mjs +2 -2
  2703. package/locales/sc.d.ts +1 -1
  2704. package/locales/sc.mjs +2 -2
  2705. package/locales/sd-Arab.d.ts +1 -1
  2706. package/locales/sd-Arab.mjs +2 -2
  2707. package/locales/sd-Deva.d.ts +1 -1
  2708. package/locales/sd-Deva.mjs +2 -2
  2709. package/locales/sd.d.ts +1 -1
  2710. package/locales/sd.mjs +2 -2
  2711. package/locales/se-FI.d.ts +1 -1
  2712. package/locales/se-FI.mjs +2 -2
  2713. package/locales/se-SE.d.ts +1 -1
  2714. package/locales/se-SE.mjs +2 -2
  2715. package/locales/se.d.ts +1 -1
  2716. package/locales/se.mjs +2 -2
  2717. package/locales/seh.d.ts +1 -1
  2718. package/locales/seh.mjs +2 -2
  2719. package/locales/ses.d.ts +1 -1
  2720. package/locales/ses.mjs +2 -2
  2721. package/locales/sg.d.ts +1 -1
  2722. package/locales/sg.mjs +2 -2
  2723. package/locales/shi-Latn.d.ts +1 -1
  2724. package/locales/shi-Latn.mjs +2 -2
  2725. package/locales/shi-Tfng.d.ts +1 -1
  2726. package/locales/shi-Tfng.mjs +2 -2
  2727. package/locales/shi.d.ts +1 -1
  2728. package/locales/shi.mjs +2 -2
  2729. package/locales/si.d.ts +1 -1
  2730. package/locales/si.mjs +2 -2
  2731. package/locales/sk.d.ts +1 -1
  2732. package/locales/sk.mjs +2 -2
  2733. package/locales/sl.d.ts +1 -1
  2734. package/locales/sl.mjs +2 -2
  2735. package/locales/smn.d.ts +1 -1
  2736. package/locales/smn.mjs +2 -2
  2737. package/locales/sn.d.ts +1 -1
  2738. package/locales/sn.mjs +2 -2
  2739. package/locales/so-DJ.d.ts +1 -1
  2740. package/locales/so-DJ.mjs +2 -2
  2741. package/locales/so-ET.d.ts +1 -1
  2742. package/locales/so-ET.mjs +2 -2
  2743. package/locales/so-KE.d.ts +1 -1
  2744. package/locales/so-KE.mjs +2 -2
  2745. package/locales/so.d.ts +1 -1
  2746. package/locales/so.mjs +2 -2
  2747. package/locales/sq-MK.d.ts +1 -1
  2748. package/locales/sq-MK.mjs +2 -2
  2749. package/locales/sq-XK.d.ts +1 -1
  2750. package/locales/sq-XK.mjs +2 -2
  2751. package/locales/sq.d.ts +1 -1
  2752. package/locales/sq.mjs +2 -2
  2753. package/locales/sr-Cyrl-BA.d.ts +1 -1
  2754. package/locales/sr-Cyrl-BA.mjs +2 -2
  2755. package/locales/sr-Cyrl-ME.d.ts +1 -1
  2756. package/locales/sr-Cyrl-ME.mjs +2 -2
  2757. package/locales/sr-Cyrl-XK.d.ts +1 -1
  2758. package/locales/sr-Cyrl-XK.mjs +2 -2
  2759. package/locales/sr-Cyrl.d.ts +1 -1
  2760. package/locales/sr-Cyrl.mjs +2 -2
  2761. package/locales/sr-Latn-BA.d.ts +1 -1
  2762. package/locales/sr-Latn-BA.mjs +2 -2
  2763. package/locales/sr-Latn-ME.d.ts +1 -1
  2764. package/locales/sr-Latn-ME.mjs +2 -2
  2765. package/locales/sr-Latn-XK.d.ts +1 -1
  2766. package/locales/sr-Latn-XK.mjs +2 -2
  2767. package/locales/sr-Latn.d.ts +1 -1
  2768. package/locales/sr-Latn.mjs +2 -2
  2769. package/locales/sr.d.ts +1 -1
  2770. package/locales/sr.mjs +2 -2
  2771. package/locales/su-Latn.d.ts +1 -1
  2772. package/locales/su-Latn.mjs +2 -2
  2773. package/locales/su.d.ts +1 -1
  2774. package/locales/su.mjs +2 -2
  2775. package/locales/sv-AX.d.ts +1 -1
  2776. package/locales/sv-AX.mjs +2 -2
  2777. package/locales/sv-FI.d.ts +1 -1
  2778. package/locales/sv-FI.mjs +2 -2
  2779. package/locales/sv.d.ts +1 -1
  2780. package/locales/sv.mjs +2 -2
  2781. package/locales/sw-CD.d.ts +1 -1
  2782. package/locales/sw-CD.mjs +2 -2
  2783. package/locales/sw-KE.d.ts +1 -1
  2784. package/locales/sw-KE.mjs +2 -2
  2785. package/locales/sw-UG.d.ts +1 -1
  2786. package/locales/sw-UG.mjs +2 -2
  2787. package/locales/sw.d.ts +1 -1
  2788. package/locales/sw.mjs +2 -2
  2789. package/locales/ta-LK.d.ts +1 -1
  2790. package/locales/ta-LK.mjs +2 -2
  2791. package/locales/ta-MY.d.ts +1 -1
  2792. package/locales/ta-MY.mjs +2 -2
  2793. package/locales/ta-SG.d.ts +1 -1
  2794. package/locales/ta-SG.mjs +2 -2
  2795. package/locales/ta.d.ts +1 -1
  2796. package/locales/ta.mjs +2 -2
  2797. package/locales/te.d.ts +1 -1
  2798. package/locales/te.mjs +2 -2
  2799. package/locales/teo-KE.d.ts +1 -1
  2800. package/locales/teo-KE.mjs +2 -2
  2801. package/locales/teo.d.ts +1 -1
  2802. package/locales/teo.mjs +2 -2
  2803. package/locales/tg.d.ts +1 -1
  2804. package/locales/tg.mjs +2 -2
  2805. package/locales/th.d.ts +1 -1
  2806. package/locales/th.mjs +2 -2
  2807. package/locales/ti-ER.d.ts +1 -1
  2808. package/locales/ti-ER.mjs +2 -2
  2809. package/locales/ti.d.ts +1 -1
  2810. package/locales/ti.mjs +2 -2
  2811. package/locales/tk.d.ts +1 -1
  2812. package/locales/tk.mjs +2 -2
  2813. package/locales/to.d.ts +1 -1
  2814. package/locales/to.mjs +2 -2
  2815. package/locales/tr-CY.d.ts +1 -1
  2816. package/locales/tr-CY.mjs +2 -2
  2817. package/locales/tr.d.ts +1 -1
  2818. package/locales/tr.mjs +2 -2
  2819. package/locales/tt.d.ts +1 -1
  2820. package/locales/tt.mjs +2 -2
  2821. package/locales/twq.d.ts +1 -1
  2822. package/locales/twq.mjs +2 -2
  2823. package/locales/tzm.d.ts +1 -1
  2824. package/locales/tzm.mjs +2 -2
  2825. package/locales/ug.d.ts +1 -1
  2826. package/locales/ug.mjs +2 -2
  2827. package/locales/uk.d.ts +1 -1
  2828. package/locales/uk.mjs +2 -2
  2829. package/locales/und.d.ts +1 -1
  2830. package/locales/und.mjs +2 -2
  2831. package/locales/ur-IN.d.ts +1 -1
  2832. package/locales/ur-IN.mjs +2 -2
  2833. package/locales/ur.d.ts +1 -1
  2834. package/locales/ur.mjs +2 -2
  2835. package/locales/uz-Arab.d.ts +1 -1
  2836. package/locales/uz-Arab.mjs +2 -2
  2837. package/locales/uz-Cyrl.d.ts +1 -1
  2838. package/locales/uz-Cyrl.mjs +2 -2
  2839. package/locales/uz-Latn.d.ts +1 -1
  2840. package/locales/uz-Latn.mjs +2 -2
  2841. package/locales/uz.d.ts +1 -1
  2842. package/locales/uz.mjs +2 -2
  2843. package/locales/vai-Latn.d.ts +1 -1
  2844. package/locales/vai-Latn.mjs +2 -2
  2845. package/locales/vai-Vaii.d.ts +1 -1
  2846. package/locales/vai-Vaii.mjs +2 -2
  2847. package/locales/vai.d.ts +1 -1
  2848. package/locales/vai.mjs +2 -2
  2849. package/locales/vi.d.ts +1 -1
  2850. package/locales/vi.mjs +2 -2
  2851. package/locales/vun.d.ts +1 -1
  2852. package/locales/vun.mjs +2 -2
  2853. package/locales/wae.d.ts +1 -1
  2854. package/locales/wae.mjs +2 -2
  2855. package/locales/wo.d.ts +1 -1
  2856. package/locales/wo.mjs +2 -2
  2857. package/locales/xh.d.ts +1 -1
  2858. package/locales/xh.mjs +2 -2
  2859. package/locales/xog.d.ts +1 -1
  2860. package/locales/xog.mjs +2 -2
  2861. package/locales/yav.d.ts +1 -1
  2862. package/locales/yav.mjs +2 -2
  2863. package/locales/yi.d.ts +1 -1
  2864. package/locales/yi.mjs +2 -2
  2865. package/locales/yo-BJ.d.ts +1 -1
  2866. package/locales/yo-BJ.mjs +2 -2
  2867. package/locales/yo.d.ts +1 -1
  2868. package/locales/yo.mjs +2 -2
  2869. package/locales/yrl-CO.d.ts +1 -1
  2870. package/locales/yrl-CO.mjs +2 -2
  2871. package/locales/yrl-VE.d.ts +1 -1
  2872. package/locales/yrl-VE.mjs +2 -2
  2873. package/locales/yrl.d.ts +1 -1
  2874. package/locales/yrl.mjs +2 -2
  2875. package/locales/yue-Hans.d.ts +1 -1
  2876. package/locales/yue-Hans.mjs +2 -2
  2877. package/locales/yue-Hant.d.ts +1 -1
  2878. package/locales/yue-Hant.mjs +2 -2
  2879. package/locales/yue.d.ts +1 -1
  2880. package/locales/yue.mjs +2 -2
  2881. package/locales/zgh.d.ts +1 -1
  2882. package/locales/zgh.mjs +2 -2
  2883. package/locales/zh-Hans-HK.d.ts +1 -1
  2884. package/locales/zh-Hans-HK.mjs +2 -2
  2885. package/locales/zh-Hans-MO.d.ts +1 -1
  2886. package/locales/zh-Hans-MO.mjs +2 -2
  2887. package/locales/zh-Hans-SG.d.ts +1 -1
  2888. package/locales/zh-Hans-SG.mjs +2 -2
  2889. package/locales/zh-Hans.d.ts +1 -1
  2890. package/locales/zh-Hans.mjs +2 -2
  2891. package/locales/zh-Hant-HK.d.ts +1 -1
  2892. package/locales/zh-Hant-HK.mjs +2 -2
  2893. package/locales/zh-Hant-MO.d.ts +1 -1
  2894. package/locales/zh-Hant-MO.mjs +2 -2
  2895. package/locales/zh-Hant.d.ts +1 -1
  2896. package/locales/zh-Hant.mjs +2 -2
  2897. package/locales/zh.d.ts +1 -1
  2898. package/locales/zh.mjs +2 -2
  2899. package/locales/zu.d.ts +1 -1
  2900. package/locales/zu.mjs +2 -2
  2901. package/package.json +2 -12
  2902. package/testing/index.d.ts +1 -1
  2903. package/upgrade/index.d.ts +1 -1
  2904. package/esm2022/common.mjs +0 -5
  2905. package/esm2022/http/http.mjs +0 -5
  2906. package/esm2022/http/index.mjs +0 -13
  2907. package/esm2022/http/public_api.mjs +0 -25
  2908. package/esm2022/http/src/backend.mjs +0 -34
  2909. package/esm2022/http/src/client.mjs +0 -325
  2910. package/esm2022/http/src/context.mjs +0 -108
  2911. package/esm2022/http/src/errors.mjs +0 -9
  2912. package/esm2022/http/src/fetch.mjs +0 -241
  2913. package/esm2022/http/src/headers.mjs +0 -247
  2914. package/esm2022/http/src/interceptor.mjs +0 -136
  2915. package/esm2022/http/src/jsonp.mjs +0 -254
  2916. package/esm2022/http/src/module.mjs +0 -124
  2917. package/esm2022/http/src/params.mjs +0 -276
  2918. package/esm2022/http/src/private_export.mjs +0 -9
  2919. package/esm2022/http/src/provider.mjs +0 -238
  2920. package/esm2022/http/src/request.mjs +0 -286
  2921. package/esm2022/http/src/response.mjs +0 -237
  2922. package/esm2022/http/src/transfer_cache.mjs +0 -280
  2923. package/esm2022/http/src/xhr.mjs +0 -298
  2924. package/esm2022/http/src/xsrf.mjs +0 -108
  2925. package/esm2022/http/testing/index.mjs +0 -9
  2926. package/esm2022/http/testing/public_api.mjs +0 -12
  2927. package/esm2022/http/testing/src/api.mjs +0 -16
  2928. package/esm2022/http/testing/src/backend.mjs +0 -148
  2929. package/esm2022/http/testing/src/module.mjs +0 -33
  2930. package/esm2022/http/testing/src/provider.mjs +0 -19
  2931. package/esm2022/http/testing/src/request.mjs +0 -177
  2932. package/esm2022/http/testing/testing.mjs +0 -5
  2933. package/esm2022/index.mjs +0 -13
  2934. package/esm2022/public_api.mjs +0 -15
  2935. package/esm2022/src/common.mjs +0 -31
  2936. package/esm2022/src/common_module.mjs +0 -51
  2937. package/esm2022/src/cookie.mjs +0 -19
  2938. package/esm2022/src/directives/index.mjs +0 -34
  2939. package/esm2022/src/directives/ng_class.mjs +0 -163
  2940. package/esm2022/src/directives/ng_component_outlet.mjs +0 -190
  2941. package/esm2022/src/directives/ng_for_of.mjs +0 -291
  2942. package/esm2022/src/directives/ng_if.mjs +0 -244
  2943. package/esm2022/src/directives/ng_optimized_image/asserts.mjs +0 -20
  2944. package/esm2022/src/directives/ng_optimized_image/error_helper.mjs +0 -15
  2945. package/esm2022/src/directives/ng_optimized_image/image_loaders/cloudflare_loader.mjs +0 -35
  2946. package/esm2022/src/directives/ng_optimized_image/image_loaders/cloudinary_loader.mjs +0 -56
  2947. package/esm2022/src/directives/ng_optimized_image/image_loaders/constants.mjs +0 -12
  2948. package/esm2022/src/directives/ng_optimized_image/image_loaders/image_loader.mjs +0 -74
  2949. package/esm2022/src/directives/ng_optimized_image/image_loaders/imagekit_loader.mjs +0 -52
  2950. package/esm2022/src/directives/ng_optimized_image/image_loaders/imgix_loader.mjs +0 -47
  2951. package/esm2022/src/directives/ng_optimized_image/image_loaders/netlify_loader.mjs +0 -89
  2952. package/esm2022/src/directives/ng_optimized_image/index.mjs +0 -18
  2953. package/esm2022/src/directives/ng_optimized_image/lcp_image_observer.mjs +0 -128
  2954. package/esm2022/src/directives/ng_optimized_image/ng_optimized_image.mjs +0 -1035
  2955. package/esm2022/src/directives/ng_optimized_image/preconnect_link_checker.mjs +0 -136
  2956. package/esm2022/src/directives/ng_optimized_image/preload-link-creator.mjs +0 -75
  2957. package/esm2022/src/directives/ng_optimized_image/tokens.mjs +0 -27
  2958. package/esm2022/src/directives/ng_optimized_image/url.mjs +0 -42
  2959. package/esm2022/src/directives/ng_plural.mjs +0 -124
  2960. package/esm2022/src/directives/ng_style.mjs +0 -96
  2961. package/esm2022/src/directives/ng_switch.mjs +0 -261
  2962. package/esm2022/src/directives/ng_template_outlet.mjs +0 -116
  2963. package/esm2022/src/dom_adapter.mjs +0 -24
  2964. package/esm2022/src/dom_tokens.mjs +0 -17
  2965. package/esm2022/src/errors.mjs +0 -9
  2966. package/esm2022/src/i18n/currencies.mjs +0 -10
  2967. package/esm2022/src/i18n/format_date.mjs +0 -765
  2968. package/esm2022/src/i18n/format_number.mjs +0 -396
  2969. package/esm2022/src/i18n/locale_data.mjs +0 -21
  2970. package/esm2022/src/i18n/locale_data_api.mjs +0 -722
  2971. package/esm2022/src/i18n/localization.mjs +0 -81
  2972. package/esm2022/src/location/hash_location_strategy.mjs +0 -101
  2973. package/esm2022/src/location/index.mjs +0 -12
  2974. package/esm2022/src/location/location.mjs +0 -291
  2975. package/esm2022/src/location/location_strategy.mjs +0 -160
  2976. package/esm2022/src/location/platform_location.mjs +0 -131
  2977. package/esm2022/src/location/util.mjs +0 -64
  2978. package/esm2022/src/navigation/navigation_types.mjs +0 -9
  2979. package/esm2022/src/navigation/platform_navigation.mjs +0 -22
  2980. package/esm2022/src/pipes/async_pipe.mjs +0 -154
  2981. package/esm2022/src/pipes/case_conversion_pipes.mjs +0 -117
  2982. package/esm2022/src/pipes/date_pipe.mjs +0 -251
  2983. package/esm2022/src/pipes/date_pipe_config.mjs +0 -13
  2984. package/esm2022/src/pipes/i18n_plural_pipe.mjs +0 -58
  2985. package/esm2022/src/pipes/i18n_select_pipe.mjs +0 -58
  2986. package/esm2022/src/pipes/index.mjs +0 -41
  2987. package/esm2022/src/pipes/invalid_pipe_argument_error.mjs +0 -12
  2988. package/esm2022/src/pipes/json_pipe.mjs +0 -43
  2989. package/esm2022/src/pipes/keyvalue_pipe.mjs +0 -100
  2990. package/esm2022/src/pipes/number_pipe.mjs +0 -295
  2991. package/esm2022/src/pipes/slice_pipe.mjs +0 -69
  2992. package/esm2022/src/platform_id.mjs +0 -24
  2993. package/esm2022/src/private_export.mjs +0 -10
  2994. package/esm2022/src/version.mjs +0 -18
  2995. package/esm2022/src/viewport_scroller.mjs +0 -163
  2996. package/esm2022/src/xhr.mjs +0 -15
  2997. package/esm2022/testing/index.mjs +0 -13
  2998. package/esm2022/testing/public_api.mjs +0 -15
  2999. package/esm2022/testing/src/location_mock.mjs +0 -176
  3000. package/esm2022/testing/src/mock_location_strategy.mjs +0 -92
  3001. package/esm2022/testing/src/mock_platform_location.mjs +0 -299
  3002. package/esm2022/testing/src/navigation/fake_navigation.mjs +0 -667
  3003. package/esm2022/testing/src/navigation/navigation_types.mjs +0 -9
  3004. package/esm2022/testing/src/navigation/provide_fake_platform_navigation.mjs +0 -29
  3005. package/esm2022/testing/src/private_export.mjs +0 -9
  3006. package/esm2022/testing/src/provide_location_mocks.mjs +0 -23
  3007. package/esm2022/testing/src/testing.mjs +0 -18
  3008. package/esm2022/testing/testing.mjs +0 -5
  3009. package/esm2022/upgrade/index.mjs +0 -13
  3010. package/esm2022/upgrade/public_api.mjs +0 -15
  3011. package/esm2022/upgrade/src/index.mjs +0 -11
  3012. package/esm2022/upgrade/src/location_shim.mjs +0 -561
  3013. package/esm2022/upgrade/src/location_upgrade_module.mjs +0 -84
  3014. package/esm2022/upgrade/src/params.mjs +0 -221
  3015. package/esm2022/upgrade/src/utils.mjs +0 -33
  3016. package/esm2022/upgrade/upgrade.mjs +0 -5
@@ -1,325 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { Injectable } from '@angular/core';
9
- import { of } from 'rxjs';
10
- import { concatMap, filter, map } from 'rxjs/operators';
11
- import { HttpHandler } from './backend';
12
- import { HttpHeaders } from './headers';
13
- import { HttpParams } from './params';
14
- import { HttpRequest } from './request';
15
- import { HttpResponse } from './response';
16
- import * as i0 from "@angular/core";
17
- import * as i1 from "./backend";
18
- /**
19
- * Constructs an instance of `HttpRequestOptions<T>` from a source `HttpMethodOptions` and
20
- * the given `body`. This function clones the object and adds the body.
21
- *
22
- * Note that the `responseType` *options* value is a String that identifies the
23
- * single data type of the response.
24
- * A single overload version of the method handles each response type.
25
- * The value of `responseType` cannot be a union, as the combined signature could imply.
26
- *
27
- */
28
- function addBody(options, body) {
29
- return {
30
- body,
31
- headers: options.headers,
32
- context: options.context,
33
- observe: options.observe,
34
- params: options.params,
35
- reportProgress: options.reportProgress,
36
- responseType: options.responseType,
37
- withCredentials: options.withCredentials,
38
- transferCache: options.transferCache,
39
- };
40
- }
41
- /**
42
- * Performs HTTP requests.
43
- * This service is available as an injectable class, with methods to perform HTTP requests.
44
- * Each request method has multiple signatures, and the return type varies based on
45
- * the signature that is called (mainly the values of `observe` and `responseType`).
46
- *
47
- * Note that the `responseType` *options* value is a String that identifies the
48
- * single data type of the response.
49
- * A single overload version of the method handles each response type.
50
- * The value of `responseType` cannot be a union, as the combined signature could imply.
51
-
52
- * TODO(adev): review
53
- * @usageNotes
54
- *
55
- * ### HTTP Request Example
56
- *
57
- * ```
58
- * // GET heroes whose name contains search term
59
- * searchHeroes(term: string): observable<Hero[]>{
60
- *
61
- * const params = new HttpParams({fromString: 'name=term'});
62
- * return this.httpClient.request('GET', this.heroesUrl, {responseType:'json', params});
63
- * }
64
- * ```
65
- *
66
- * Alternatively, the parameter string can be used without invoking HttpParams
67
- * by directly joining to the URL.
68
- * ```
69
- * this.httpClient.request('GET', this.heroesUrl + '?' + 'name=term', {responseType:'json'});
70
- * ```
71
- *
72
- *
73
- * ### JSONP Example
74
- * ```
75
- * requestJsonp(url, callback = 'callback') {
76
- * return this.httpClient.jsonp(this.heroesURL, callback);
77
- * }
78
- * ```
79
- *
80
- * ### PATCH Example
81
- * ```
82
- * // PATCH one of the heroes' name
83
- * patchHero (id: number, heroName: string): Observable<{}> {
84
- * const url = `${this.heroesUrl}/${id}`; // PATCH api/heroes/42
85
- * return this.httpClient.patch(url, {name: heroName}, httpOptions)
86
- * .pipe(catchError(this.handleError('patchHero')));
87
- * }
88
- * ```
89
- *
90
- * @see [HTTP Guide](guide/http)
91
- * @see [HTTP Request](api/common/http/HttpRequest)
92
- *
93
- * @publicApi
94
- */
95
- export class HttpClient {
96
- constructor(handler) {
97
- this.handler = handler;
98
- }
99
- /**
100
- * Constructs an observable for a generic HTTP request that, when subscribed,
101
- * fires the request through the chain of registered interceptors and on to the
102
- * server.
103
- *
104
- * You can pass an `HttpRequest` directly as the only parameter. In this case,
105
- * the call returns an observable of the raw `HttpEvent` stream.
106
- *
107
- * Alternatively you can pass an HTTP method as the first parameter,
108
- * a URL string as the second, and an options hash containing the request body as the third.
109
- * See `addBody()`. In this case, the specified `responseType` and `observe` options determine the
110
- * type of returned observable.
111
- * * The `responseType` value determines how a successful response body is parsed.
112
- * * If `responseType` is the default `json`, you can pass a type interface for the resulting
113
- * object as a type parameter to the call.
114
- *
115
- * The `observe` value determines the return type, according to what you are interested in
116
- * observing.
117
- * * An `observe` value of events returns an observable of the raw `HttpEvent` stream, including
118
- * progress events by default.
119
- * * An `observe` value of response returns an observable of `HttpResponse<T>`,
120
- * where the `T` parameter depends on the `responseType` and any optionally provided type
121
- * parameter.
122
- * * An `observe` value of body returns an observable of `<T>` with the same `T` body type.
123
- *
124
- */
125
- request(first, url, options = {}) {
126
- let req;
127
- // First, check whether the primary argument is an instance of `HttpRequest`.
128
- if (first instanceof HttpRequest) {
129
- // It is. The other arguments must be undefined (per the signatures) and can be
130
- // ignored.
131
- req = first;
132
- }
133
- else {
134
- // It's a string, so it represents a URL. Construct a request based on it,
135
- // and incorporate the remaining arguments (assuming `GET` unless a method is
136
- // provided.
137
- // Figure out the headers.
138
- let headers = undefined;
139
- if (options.headers instanceof HttpHeaders) {
140
- headers = options.headers;
141
- }
142
- else {
143
- headers = new HttpHeaders(options.headers);
144
- }
145
- // Sort out parameters.
146
- let params = undefined;
147
- if (!!options.params) {
148
- if (options.params instanceof HttpParams) {
149
- params = options.params;
150
- }
151
- else {
152
- params = new HttpParams({ fromObject: options.params });
153
- }
154
- }
155
- // Construct the request.
156
- req = new HttpRequest(first, url, options.body !== undefined ? options.body : null, {
157
- headers,
158
- context: options.context,
159
- params,
160
- reportProgress: options.reportProgress,
161
- // By default, JSON is assumed to be returned for all calls.
162
- responseType: options.responseType || 'json',
163
- withCredentials: options.withCredentials,
164
- transferCache: options.transferCache,
165
- });
166
- }
167
- // Start with an Observable.of() the initial request, and run the handler (which
168
- // includes all interceptors) inside a concatMap(). This way, the handler runs
169
- // inside an Observable chain, which causes interceptors to be re-run on every
170
- // subscription (this also makes retries re-run the handler, including interceptors).
171
- const events$ = of(req).pipe(concatMap((req) => this.handler.handle(req)));
172
- // If coming via the API signature which accepts a previously constructed HttpRequest,
173
- // the only option is to get the event stream. Otherwise, return the event stream if
174
- // that is what was requested.
175
- if (first instanceof HttpRequest || options.observe === 'events') {
176
- return events$;
177
- }
178
- // The requested stream contains either the full response or the body. In either
179
- // case, the first step is to filter the event stream to extract a stream of
180
- // responses(s).
181
- const res$ = (events$.pipe(filter((event) => event instanceof HttpResponse)));
182
- // Decide which stream to return.
183
- switch (options.observe || 'body') {
184
- case 'body':
185
- // The requested stream is the body. Map the response stream to the response
186
- // body. This could be done more simply, but a misbehaving interceptor might
187
- // transform the response body into a different format and ignore the requested
188
- // responseType. Guard against this by validating that the response is of the
189
- // requested type.
190
- switch (req.responseType) {
191
- case 'arraybuffer':
192
- return res$.pipe(map((res) => {
193
- // Validate that the body is an ArrayBuffer.
194
- if (res.body !== null && !(res.body instanceof ArrayBuffer)) {
195
- throw new Error('Response is not an ArrayBuffer.');
196
- }
197
- return res.body;
198
- }));
199
- case 'blob':
200
- return res$.pipe(map((res) => {
201
- // Validate that the body is a Blob.
202
- if (res.body !== null && !(res.body instanceof Blob)) {
203
- throw new Error('Response is not a Blob.');
204
- }
205
- return res.body;
206
- }));
207
- case 'text':
208
- return res$.pipe(map((res) => {
209
- // Validate that the body is a string.
210
- if (res.body !== null && typeof res.body !== 'string') {
211
- throw new Error('Response is not a string.');
212
- }
213
- return res.body;
214
- }));
215
- case 'json':
216
- default:
217
- // No validation needed for JSON responses, as they can be of any type.
218
- return res$.pipe(map((res) => res.body));
219
- }
220
- case 'response':
221
- // The response stream was requested directly, so return it.
222
- return res$;
223
- default:
224
- // Guard against new future observe types being added.
225
- throw new Error(`Unreachable: unhandled observe type ${options.observe}}`);
226
- }
227
- }
228
- /**
229
- * Constructs an observable that, when subscribed, causes the configured
230
- * `DELETE` request to execute on the server. See the individual overloads for
231
- * details on the return type.
232
- *
233
- * @param url The endpoint URL.
234
- * @param options The HTTP options to send with the request.
235
- *
236
- */
237
- delete(url, options = {}) {
238
- return this.request('DELETE', url, options);
239
- }
240
- /**
241
- * Constructs an observable that, when subscribed, causes the configured
242
- * `GET` request to execute on the server. See the individual overloads for
243
- * details on the return type.
244
- */
245
- get(url, options = {}) {
246
- return this.request('GET', url, options);
247
- }
248
- /**
249
- * Constructs an observable that, when subscribed, causes the configured
250
- * `HEAD` request to execute on the server. The `HEAD` method returns
251
- * meta information about the resource without transferring the
252
- * resource itself. See the individual overloads for
253
- * details on the return type.
254
- */
255
- head(url, options = {}) {
256
- return this.request('HEAD', url, options);
257
- }
258
- /**
259
- * Constructs an `Observable` that, when subscribed, causes a request with the special method
260
- * `JSONP` to be dispatched via the interceptor pipeline.
261
- * The [JSONP pattern](https://en.wikipedia.org/wiki/JSONP) works around limitations of certain
262
- * API endpoints that don't support newer,
263
- * and preferable [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) protocol.
264
- * JSONP treats the endpoint API as a JavaScript file and tricks the browser to process the
265
- * requests even if the API endpoint is not located on the same domain (origin) as the client-side
266
- * application making the request.
267
- * The endpoint API must support JSONP callback for JSONP requests to work.
268
- * The resource API returns the JSON response wrapped in a callback function.
269
- * You can pass the callback function name as one of the query parameters.
270
- * Note that JSONP requests can only be used with `GET` requests.
271
- *
272
- * @param url The resource URL.
273
- * @param callbackParam The callback function name.
274
- *
275
- */
276
- jsonp(url, callbackParam) {
277
- return this.request('JSONP', url, {
278
- params: new HttpParams().append(callbackParam, 'JSONP_CALLBACK'),
279
- observe: 'body',
280
- responseType: 'json',
281
- });
282
- }
283
- /**
284
- * Constructs an `Observable` that, when subscribed, causes the configured
285
- * `OPTIONS` request to execute on the server. This method allows the client
286
- * to determine the supported HTTP methods and other capabilities of an endpoint,
287
- * without implying a resource action. See the individual overloads for
288
- * details on the return type.
289
- */
290
- options(url, options = {}) {
291
- return this.request('OPTIONS', url, options);
292
- }
293
- /**
294
- * Constructs an observable that, when subscribed, causes the configured
295
- * `PATCH` request to execute on the server. See the individual overloads for
296
- * details on the return type.
297
- */
298
- patch(url, body, options = {}) {
299
- return this.request('PATCH', url, addBody(options, body));
300
- }
301
- /**
302
- * Constructs an observable that, when subscribed, causes the configured
303
- * `POST` request to execute on the server. The server responds with the location of
304
- * the replaced resource. See the individual overloads for
305
- * details on the return type.
306
- */
307
- post(url, body, options = {}) {
308
- return this.request('POST', url, addBody(options, body));
309
- }
310
- /**
311
- * Constructs an observable that, when subscribed, causes the configured
312
- * `PUT` request to execute on the server. The `PUT` method replaces an existing resource
313
- * with a new set of values.
314
- * See the individual overloads for details on the return type.
315
- */
316
- put(url, body, options = {}) {
317
- return this.request('PUT', url, addBody(options, body));
318
- }
319
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.0", ngImport: i0, type: HttpClient, deps: [{ token: i1.HttpHandler }], target: i0.ɵɵFactoryTarget.Injectable }); }
320
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.0", ngImport: i0, type: HttpClient }); }
321
- }
322
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.0", ngImport: i0, type: HttpClient, decorators: [{
323
- type: Injectable
324
- }], ctorParameters: () => [{ type: i1.HttpHandler }] });
325
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29tbW9uL2h0dHAvc3JjL2NsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFDLFNBQVMsRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFdEQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUV0QyxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQ3RDLE9BQU8sRUFBQyxVQUFVLEVBQW9CLE1BQU0sVUFBVSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFDdEMsT0FBTyxFQUFZLFlBQVksRUFBQyxNQUFNLFlBQVksQ0FBQzs7O0FBRW5EOzs7Ozs7Ozs7R0FTRztBQUNILFNBQVMsT0FBTyxDQUNkLE9BV0MsRUFDRCxJQUFjO0lBRWQsT0FBTztRQUNMLElBQUk7UUFDSixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87UUFDeEIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1FBQ3hCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztRQUN4QixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07UUFDdEIsY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjO1FBQ3RDLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtRQUNsQyxlQUFlLEVBQUUsT0FBTyxDQUFDLGVBQWU7UUFDeEMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhO0tBQ3JDLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcURHO0FBRUgsTUFBTSxPQUFPLFVBQVU7SUFDckIsWUFBb0IsT0FBb0I7UUFBcEIsWUFBTyxHQUFQLE9BQU8sQ0FBYTtJQUFHLENBQUM7SUE2YzVDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BeUJHO0lBQ0gsT0FBTyxDQUNMLEtBQWdDLEVBQ2hDLEdBQVksRUFDWixVQVlJLEVBQUU7UUFFTixJQUFJLEdBQXFCLENBQUM7UUFDMUIsNkVBQTZFO1FBQzdFLElBQUksS0FBSyxZQUFZLFdBQVcsRUFBRSxDQUFDO1lBQ2pDLCtFQUErRTtZQUMvRSxXQUFXO1lBQ1gsR0FBRyxHQUFHLEtBQUssQ0FBQztRQUNkLENBQUM7YUFBTSxDQUFDO1lBQ04sMEVBQTBFO1lBQzFFLDZFQUE2RTtZQUM3RSxZQUFZO1lBRVosMEJBQTBCO1lBQzFCLElBQUksT0FBTyxHQUE0QixTQUFTLENBQUM7WUFDakQsSUFBSSxPQUFPLENBQUMsT0FBTyxZQUFZLFdBQVcsRUFBRSxDQUFDO2dCQUMzQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUM1QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM3QyxDQUFDO1lBRUQsdUJBQXVCO1lBQ3ZCLElBQUksTUFBTSxHQUEyQixTQUFTLENBQUM7WUFDL0MsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNyQixJQUFJLE9BQU8sQ0FBQyxNQUFNLFlBQVksVUFBVSxFQUFFLENBQUM7b0JBQ3pDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO2dCQUMxQixDQUFDO3FCQUFNLENBQUM7b0JBQ04sTUFBTSxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQXNCLENBQUMsQ0FBQztnQkFDN0UsQ0FBQztZQUNILENBQUM7WUFFRCx5QkFBeUI7WUFDekIsR0FBRyxHQUFHLElBQUksV0FBVyxDQUFDLEtBQUssRUFBRSxHQUFJLEVBQUUsT0FBTyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRTtnQkFDbkYsT0FBTztnQkFDUCxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87Z0JBQ3hCLE1BQU07Z0JBQ04sY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjO2dCQUN0Qyw0REFBNEQ7Z0JBQzVELFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWSxJQUFJLE1BQU07Z0JBQzVDLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZTtnQkFDeEMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhO2FBQ3JDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxnRkFBZ0Y7UUFDaEYsOEVBQThFO1FBQzlFLDhFQUE4RTtRQUM5RSxxRkFBcUY7UUFDckYsTUFBTSxPQUFPLEdBQStCLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQ3RELFNBQVMsQ0FBQyxDQUFDLEdBQXFCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQy9ELENBQUM7UUFFRixzRkFBc0Y7UUFDdEYsb0ZBQW9GO1FBQ3BGLDhCQUE4QjtRQUM5QixJQUFJLEtBQUssWUFBWSxXQUFXLElBQUksT0FBTyxDQUFDLE9BQU8sS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNqRSxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDO1FBRUQsZ0ZBQWdGO1FBQ2hGLDRFQUE0RTtRQUM1RSxnQkFBZ0I7UUFDaEIsTUFBTSxJQUFJLEdBQWlFLENBQ3pFLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBcUIsRUFBRSxFQUFFLENBQUMsS0FBSyxZQUFZLFlBQVksQ0FBQyxDQUFDLENBQy9FLENBQUM7UUFFRixpQ0FBaUM7UUFDakMsUUFBUSxPQUFPLENBQUMsT0FBTyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ2xDLEtBQUssTUFBTTtnQkFDVCw0RUFBNEU7Z0JBQzVFLDRFQUE0RTtnQkFDNUUsK0VBQStFO2dCQUMvRSw2RUFBNkU7Z0JBQzdFLGtCQUFrQjtnQkFDbEIsUUFBUSxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7b0JBQ3pCLEtBQUssYUFBYTt3QkFDaEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUNkLEdBQUcsQ0FBQyxDQUFDLEdBQXNCLEVBQUUsRUFBRTs0QkFDN0IsNENBQTRDOzRCQUM1QyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxZQUFZLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0NBQzVELE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQzs0QkFDckQsQ0FBQzs0QkFDRCxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUM7d0JBQ2xCLENBQUMsQ0FBQyxDQUNILENBQUM7b0JBQ0osS0FBSyxNQUFNO3dCQUNULE9BQU8sSUFBSSxDQUFDLElBQUksQ0FDZCxHQUFHLENBQUMsQ0FBQyxHQUFzQixFQUFFLEVBQUU7NEJBQzdCLG9DQUFvQzs0QkFDcEMsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksWUFBWSxJQUFJLENBQUMsRUFBRSxDQUFDO2dDQUNyRCxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7NEJBQzdDLENBQUM7NEJBQ0QsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDO3dCQUNsQixDQUFDLENBQUMsQ0FDSCxDQUFDO29CQUNKLEtBQUssTUFBTTt3QkFDVCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQ2QsR0FBRyxDQUFDLENBQUMsR0FBc0IsRUFBRSxFQUFFOzRCQUM3QixzQ0FBc0M7NEJBQ3RDLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dDQUN0RCxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixDQUFDLENBQUM7NEJBQy9DLENBQUM7NEJBQ0QsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDO3dCQUNsQixDQUFDLENBQUMsQ0FDSCxDQUFDO29CQUNKLEtBQUssTUFBTSxDQUFDO29CQUNaO3dCQUNFLHVFQUF1RTt3QkFDdkUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQXNCLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUNoRSxDQUFDO1lBQ0gsS0FBSyxVQUFVO2dCQUNiLDREQUE0RDtnQkFDNUQsT0FBTyxJQUFJLENBQUM7WUFDZDtnQkFDRSxzREFBc0Q7Z0JBQ3RELE1BQU0sSUFBSSxLQUFLLENBQUMsdUNBQXVDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQy9FLENBQUM7SUFDSCxDQUFDO0lBK1hEOzs7Ozs7OztPQVFHO0lBQ0gsTUFBTSxDQUNKLEdBQVcsRUFDWCxVQVdJLEVBQUU7UUFFTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQU0sUUFBUSxFQUFFLEdBQUcsRUFBRSxPQUFjLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBZ1lEOzs7O09BSUc7SUFDSCxHQUFHLENBQ0QsR0FBVyxFQUNYLFVBV0ksRUFBRTtRQUVOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBTSxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQWMsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFzWUQ7Ozs7OztPQU1HO0lBQ0gsSUFBSSxDQUNGLEdBQVcsRUFDWCxVQVdJLEVBQUU7UUFFTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQU0sTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFjLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBMEJEOzs7Ozs7Ozs7Ozs7Ozs7OztPQWlCRztJQUNILEtBQUssQ0FBSSxHQUFXLEVBQUUsYUFBcUI7UUFDekMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFNLE9BQU8sRUFBRSxHQUFHLEVBQUU7WUFDckMsTUFBTSxFQUFFLElBQUksVUFBVSxFQUFFLENBQUMsTUFBTSxDQUFDLGFBQWEsRUFBRSxnQkFBZ0IsQ0FBQztZQUNoRSxPQUFPLEVBQUUsTUFBTTtZQUNmLFlBQVksRUFBRSxNQUFNO1NBQ3JCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFxWEQ7Ozs7OztPQU1HO0lBQ0gsT0FBTyxDQUNMLEdBQVcsRUFDWCxVQVVJLEVBQUU7UUFFTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQU0sU0FBUyxFQUFFLEdBQUcsRUFBRSxPQUFjLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBcVpEOzs7O09BSUc7SUFDSCxLQUFLLENBQ0gsR0FBVyxFQUNYLElBQWdCLEVBQ2hCLFVBVUksRUFBRTtRQUVOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBTSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBa2FEOzs7OztPQUtHO0lBQ0gsSUFBSSxDQUNGLEdBQVcsRUFDWCxJQUFnQixFQUNoQixVQVdJLEVBQUU7UUFFTixPQUFPLElBQUksQ0FBQyxPQUFPLENBQU0sTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQWtaRDs7Ozs7T0FLRztJQUNILEdBQUcsQ0FDRCxHQUFXLEVBQ1gsSUFBZ0IsRUFDaEIsVUFVSSxFQUFFO1FBRU4sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFNLEtBQUssRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQy9ELENBQUM7eUhBOS9HVSxVQUFVOzZIQUFWLFVBQVU7O3NHQUFWLFVBQVU7a0JBRHRCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtjb25jYXRNYXAsIGZpbHRlciwgbWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7SHR0cEhhbmRsZXJ9IGZyb20gJy4vYmFja2VuZCc7XG5pbXBvcnQge0h0dHBDb250ZXh0fSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IHtIdHRwSGVhZGVyc30gZnJvbSAnLi9oZWFkZXJzJztcbmltcG9ydCB7SHR0cFBhcmFtcywgSHR0cFBhcmFtc09wdGlvbnN9IGZyb20gJy4vcGFyYW1zJztcbmltcG9ydCB7SHR0cFJlcXVlc3R9IGZyb20gJy4vcmVxdWVzdCc7XG5pbXBvcnQge0h0dHBFdmVudCwgSHR0cFJlc3BvbnNlfSBmcm9tICcuL3Jlc3BvbnNlJztcblxuLyoqXG4gKiBDb25zdHJ1Y3RzIGFuIGluc3RhbmNlIG9mIGBIdHRwUmVxdWVzdE9wdGlvbnM8VD5gIGZyb20gYSBzb3VyY2UgYEh0dHBNZXRob2RPcHRpb25zYCBhbmRcbiAqIHRoZSBnaXZlbiBgYm9keWAuIFRoaXMgZnVuY3Rpb24gY2xvbmVzIHRoZSBvYmplY3QgYW5kIGFkZHMgdGhlIGJvZHkuXG4gKlxuICogTm90ZSB0aGF0IHRoZSBgcmVzcG9uc2VUeXBlYCAqb3B0aW9ucyogdmFsdWUgaXMgYSBTdHJpbmcgdGhhdCBpZGVudGlmaWVzIHRoZVxuICogc2luZ2xlIGRhdGEgdHlwZSBvZiB0aGUgcmVzcG9uc2UuXG4gKiBBIHNpbmdsZSBvdmVybG9hZCB2ZXJzaW9uIG9mIHRoZSBtZXRob2QgaGFuZGxlcyBlYWNoIHJlc3BvbnNlIHR5cGUuXG4gKiBUaGUgdmFsdWUgb2YgYHJlc3BvbnNlVHlwZWAgY2Fubm90IGJlIGEgdW5pb24sIGFzIHRoZSBjb21iaW5lZCBzaWduYXR1cmUgY291bGQgaW1wbHkuXG4gKlxuICovXG5mdW5jdGlvbiBhZGRCb2R5PFQ+KFxuICBvcHRpb25zOiB7XG4gICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgb2JzZXJ2ZT86ICdib2R5JyB8ICdldmVudHMnIHwgJ3Jlc3BvbnNlJztcbiAgICBwYXJhbXM/OlxuICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgcmVzcG9uc2VUeXBlPzogJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0JztcbiAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgIHRyYW5zZmVyQ2FjaGU/OiB7aW5jbHVkZUhlYWRlcnM/OiBzdHJpbmdbXX0gfCBib29sZWFuO1xuICB9LFxuICBib2R5OiBUIHwgbnVsbCxcbik6IGFueSB7XG4gIHJldHVybiB7XG4gICAgYm9keSxcbiAgICBoZWFkZXJzOiBvcHRpb25zLmhlYWRlcnMsXG4gICAgY29udGV4dDogb3B0aW9ucy5jb250ZXh0LFxuICAgIG9ic2VydmU6IG9wdGlvbnMub2JzZXJ2ZSxcbiAgICBwYXJhbXM6IG9wdGlvbnMucGFyYW1zLFxuICAgIHJlcG9ydFByb2dyZXNzOiBvcHRpb25zLnJlcG9ydFByb2dyZXNzLFxuICAgIHJlc3BvbnNlVHlwZTogb3B0aW9ucy5yZXNwb25zZVR5cGUsXG4gICAgd2l0aENyZWRlbnRpYWxzOiBvcHRpb25zLndpdGhDcmVkZW50aWFscyxcbiAgICB0cmFuc2ZlckNhY2hlOiBvcHRpb25zLnRyYW5zZmVyQ2FjaGUsXG4gIH07XG59XG5cbi8qKlxuICogUGVyZm9ybXMgSFRUUCByZXF1ZXN0cy5cbiAqIFRoaXMgc2VydmljZSBpcyBhdmFpbGFibGUgYXMgYW4gaW5qZWN0YWJsZSBjbGFzcywgd2l0aCBtZXRob2RzIHRvIHBlcmZvcm0gSFRUUCByZXF1ZXN0cy5cbiAqIEVhY2ggcmVxdWVzdCBtZXRob2QgaGFzIG11bHRpcGxlIHNpZ25hdHVyZXMsIGFuZCB0aGUgcmV0dXJuIHR5cGUgdmFyaWVzIGJhc2VkIG9uXG4gKiB0aGUgc2lnbmF0dXJlIHRoYXQgaXMgY2FsbGVkIChtYWlubHkgdGhlIHZhbHVlcyBvZiBgb2JzZXJ2ZWAgYW5kIGByZXNwb25zZVR5cGVgKS5cbiAqXG4gKiBOb3RlIHRoYXQgdGhlIGByZXNwb25zZVR5cGVgICpvcHRpb25zKiB2YWx1ZSBpcyBhIFN0cmluZyB0aGF0IGlkZW50aWZpZXMgdGhlXG4gKiBzaW5nbGUgZGF0YSB0eXBlIG9mIHRoZSByZXNwb25zZS5cbiAqIEEgc2luZ2xlIG92ZXJsb2FkIHZlcnNpb24gb2YgdGhlIG1ldGhvZCBoYW5kbGVzIGVhY2ggcmVzcG9uc2UgdHlwZS5cbiAqIFRoZSB2YWx1ZSBvZiBgcmVzcG9uc2VUeXBlYCBjYW5ub3QgYmUgYSB1bmlvbiwgYXMgdGhlIGNvbWJpbmVkIHNpZ25hdHVyZSBjb3VsZCBpbXBseS5cblxuICogVE9ETyhhZGV2KTogcmV2aWV3XG4gKiBAdXNhZ2VOb3Rlc1xuICpcbiAqICMjIyBIVFRQIFJlcXVlc3QgRXhhbXBsZVxuICpcbiAqIGBgYFxuICogIC8vIEdFVCBoZXJvZXMgd2hvc2UgbmFtZSBjb250YWlucyBzZWFyY2ggdGVybVxuICogc2VhcmNoSGVyb2VzKHRlcm06IHN0cmluZyk6IG9ic2VydmFibGU8SGVyb1tdPntcbiAqXG4gKiAgY29uc3QgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoe2Zyb21TdHJpbmc6ICduYW1lPXRlcm0nfSk7XG4gKiAgICByZXR1cm4gdGhpcy5odHRwQ2xpZW50LnJlcXVlc3QoJ0dFVCcsIHRoaXMuaGVyb2VzVXJsLCB7cmVzcG9uc2VUeXBlOidqc29uJywgcGFyYW1zfSk7XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBBbHRlcm5hdGl2ZWx5LCB0aGUgcGFyYW1ldGVyIHN0cmluZyBjYW4gYmUgdXNlZCB3aXRob3V0IGludm9raW5nIEh0dHBQYXJhbXNcbiAqIGJ5IGRpcmVjdGx5IGpvaW5pbmcgdG8gdGhlIFVSTC5cbiAqIGBgYFxuICogdGhpcy5odHRwQ2xpZW50LnJlcXVlc3QoJ0dFVCcsIHRoaXMuaGVyb2VzVXJsICsgJz8nICsgJ25hbWU9dGVybScsIHtyZXNwb25zZVR5cGU6J2pzb24nfSk7XG4gKiBgYGBcbiAqXG4gKlxuICogIyMjIEpTT05QIEV4YW1wbGVcbiAqIGBgYFxuICogcmVxdWVzdEpzb25wKHVybCwgY2FsbGJhY2sgPSAnY2FsbGJhY2snKSB7XG4gKiAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5qc29ucCh0aGlzLmhlcm9lc1VSTCwgY2FsbGJhY2spO1xuICogfVxuICogYGBgXG4gKlxuICogIyMjIFBBVENIIEV4YW1wbGVcbiAqIGBgYFxuICogLy8gUEFUQ0ggb25lIG9mIHRoZSBoZXJvZXMnIG5hbWVcbiAqIHBhdGNoSGVybyAoaWQ6IG51bWJlciwgaGVyb05hbWU6IHN0cmluZyk6IE9ic2VydmFibGU8e30+IHtcbiAqIGNvbnN0IHVybCA9IGAke3RoaXMuaGVyb2VzVXJsfS8ke2lkfWA7ICAgLy8gUEFUQ0ggYXBpL2hlcm9lcy80MlxuICogIHJldHVybiB0aGlzLmh0dHBDbGllbnQucGF0Y2godXJsLCB7bmFtZTogaGVyb05hbWV9LCBodHRwT3B0aW9ucylcbiAqICAgIC5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcigncGF0Y2hIZXJvJykpKTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqIEBzZWUgW0hUVFAgR3VpZGVdKGd1aWRlL2h0dHApXG4gKiBAc2VlIFtIVFRQIFJlcXVlc3RdKGFwaS9jb21tb24vaHR0cC9IdHRwUmVxdWVzdClcbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBIdHRwQ2xpZW50IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBoYW5kbGVyOiBIdHRwSGFuZGxlcikge31cblxuICAvKipcbiAgICogU2VuZHMgYW4gYEh0dHBSZXF1ZXN0YCBhbmQgcmV0dXJucyBhIHN0cmVhbSBvZiBgSHR0cEV2ZW50YHMuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSByZXNwb25zZSwgd2l0aCB0aGUgcmVzcG9uc2UgYm9keSBhcyBhIHN0cmVhbSBvZiBgSHR0cEV2ZW50YHMuXG4gICAqL1xuICByZXF1ZXN0PFI+KHJlcTogSHR0cFJlcXVlc3Q8YW55Pik6IE9ic2VydmFibGU8SHR0cEV2ZW50PFI+PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGFuIGBBcnJheUJ1ZmZlcmAgYW5kIHJldHVybnMgdGhlIHJlc3BvbnNlIGluXG4gICAqIGFuIGBBcnJheUJ1ZmZlcmAuXG4gICAqXG4gICAqIEBwYXJhbSBtZXRob2QgIFRoZSBIVFRQIG1ldGhvZC5cbiAgICogQHBhcmFtIHVybCAgICAgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIEhUVFAgb3B0aW9ucyB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QuXG4gICAqXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSByZXNwb25zZSwgd2l0aCB0aGUgcmVzcG9uc2UgYm9keSBhcyBhbiBgQXJyYXlCdWZmZXJgLlxuICAgKi9cbiAgcmVxdWVzdChcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBib2R5PzogYW55O1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgICAgdHJhbnNmZXJDYWNoZT86IHtpbmNsdWRlSGVhZGVycz86IHN0cmluZ1tdfSB8IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxBcnJheUJ1ZmZlcj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBhIGJsb2IgYW5kIHJldHVybnNcbiAgICogdGhlIHJlc3BvbnNlIGFzIGEgYmxvYi5cbiAgICpcbiAgICogQHBhcmFtIG1ldGhvZCAgVGhlIEhUVFAgbWV0aG9kLlxuICAgKiBAcGFyYW0gdXJsICAgICBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgSFRUUCBvcHRpb25zIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgdGhlIHJlc3BvbnNlLCB3aXRoIHRoZSByZXNwb25zZSBib2R5IG9mIHR5cGUgYEJsb2JgLlxuICAgKi9cbiAgcmVxdWVzdChcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBib2R5PzogYW55O1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgICB0cmFuc2ZlckNhY2hlPzoge2luY2x1ZGVIZWFkZXJzPzogc3RyaW5nW119IHwgYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEJsb2I+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgYSB0ZXh0IHN0cmluZyBhbmRcbiAgICogcmV0dXJucyBhIHN0cmluZyB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIG1ldGhvZCAgVGhlIEhUVFAgbWV0aG9kLlxuICAgKiBAcGFyYW0gdXJsICAgICBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgSFRUUCBvcHRpb25zIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgdGhlIHJlc3BvbnNlLCB3aXRoIHRoZSByZXNwb25zZSBib2R5IG9mIHR5cGUgc3RyaW5nLlxuICAgKi9cbiAgcmVxdWVzdChcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBib2R5PzogYW55O1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgICB0cmFuc2ZlckNhY2hlPzoge2luY2x1ZGVIZWFkZXJzPzogc3RyaW5nW119IHwgYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBhbiBgQXJyYXlCdWZmZXJgIGFuZCByZXR1cm5zIHRoZVxuICAgKiB0aGUgZnVsbCBldmVudCBzdHJlYW0uXG4gICAqXG4gICAqIEBwYXJhbSBtZXRob2QgIFRoZSBIVFRQIG1ldGhvZC5cbiAgICogQHBhcmFtIHVybCAgICAgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIEhUVFAgb3B0aW9ucyB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSByZXNwb25zZSwgd2l0aCB0aGUgcmVzcG9uc2UgYm9keSBhcyBhbiBhcnJheSBvZiBgSHR0cEV2ZW50YHMgZm9yXG4gICAqIHRoZSByZXF1ZXN0LlxuICAgKi9cbiAgcmVxdWVzdChcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBib2R5PzogYW55O1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiB7aW5jbHVkZUhlYWRlcnM/OiBzdHJpbmdbXX0gfCBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PEFycmF5QnVmZmVyPj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBhIGBCbG9iYCBhbmQgcmV0dXJuc1xuICAgKiB0aGUgZnVsbCBldmVudCBzdHJlYW0uXG4gICAqXG4gICAqIEBwYXJhbSBtZXRob2QgIFRoZSBIVFRQIG1ldGhvZC5cbiAgICogQHBhcmFtIHVybCAgICAgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIEhUVFAgb3B0aW9ucyB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIGFsbCBgSHR0cEV2ZW50YHMgZm9yIHRoZSByZXF1ZXN0LFxuICAgKiB3aXRoIHRoZSByZXNwb25zZSBib2R5IG9mIHR5cGUgYEJsb2JgLlxuICAgKi9cbiAgcmVxdWVzdChcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBib2R5PzogYW55O1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgICAgdHJhbnNmZXJDYWNoZT86IHtpbmNsdWRlSGVhZGVycz86IHN0cmluZ1tdfSB8IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8QmxvYj4+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgcmVxdWVzdCB3aGljaCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGEgdGV4dCBzdHJpbmcgYW5kIHJldHVybnMgdGhlIGZ1bGwgZXZlbnRcbiAgICogc3RyZWFtLlxuICAgKlxuICAgKiBAcGFyYW0gbWV0aG9kICBUaGUgSFRUUCBtZXRob2QuXG4gICAqIEBwYXJhbSB1cmwgICAgIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBIVFRQIG9wdGlvbnMgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiBhbGwgYEh0dHBFdmVudGBzIGZvciB0aGUgcmVxdWVzdCxcbiAgICogd2l0aCB0aGUgcmVzcG9uc2UgYm9keSBvZiB0eXBlIHN0cmluZy5cbiAgICovXG4gIHJlcXVlc3QoXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgYm9keT86IGFueTtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiB7aW5jbHVkZUhlYWRlcnM/OiBzdHJpbmdbXX0gfCBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PHN0cmluZz4+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgcmVxdWVzdCB3aGljaCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGEgSmF2YVNjcmlwdCBvYmplY3QgYW5kIHJldHVybnMgdGhlIGZ1bGxcbiAgICogZXZlbnQgc3RyZWFtLlxuICAgKlxuICAgKiBAcGFyYW0gbWV0aG9kICBUaGUgSFRUUCBtZXRob2QuXG4gICAqIEBwYXJhbSB1cmwgICAgIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBIVFRQIG9wdGlvbnMgdG8gc2VuZCB3aXRoIHRoZSAgcmVxdWVzdC5cbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgYWxsIGBIdHRwRXZlbnRgcyBmb3IgdGhlIHJlcXVlc3QsXG4gICAqIHdpdGggdGhlIHJlc3BvbnNlIGJvZHkgb2YgdHlwZSBgT2JqZWN0YC5cbiAgICovXG4gIHJlcXVlc3QoXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgYm9keT86IGFueTtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgICB0cmFuc2ZlckNhY2hlPzoge2luY2x1ZGVIZWFkZXJzPzogc3RyaW5nW119IHwgYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIHJlcXVlc3Qgd2hpY2ggaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBhIEphdmFTY3JpcHQgb2JqZWN0IGFuZCByZXR1cm5zIHRoZSBmdWxsXG4gICAqIGV2ZW50IHN0cmVhbS5cbiAgICpcbiAgICogQHBhcmFtIG1ldGhvZCAgVGhlIEhUVFAgbWV0aG9kLlxuICAgKiBAcGFyYW0gdXJsICAgICBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgSFRUUCBvcHRpb25zIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgYWxsIGBIdHRwRXZlbnRgcyBmb3IgdGhlIHJlcXVlc3QsXG4gICAqIHdpdGggdGhlIHJlc3BvbnNlIGJvZHkgb2YgdHlwZSBgUmAuXG4gICAqL1xuICByZXF1ZXN0PFI+KFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGJvZHk/OiBhbnk7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgICAgdHJhbnNmZXJDYWNoZT86IHtpbmNsdWRlSGVhZGVycz86IHN0cmluZ1tdfSB8IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8Uj4+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgcmVxdWVzdCB3aGljaCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGFuIGBBcnJheUJ1ZmZlcmBcbiAgICogYW5kIHJldHVybnMgdGhlIGZ1bGwgYEh0dHBSZXNwb25zZWAuXG4gICAqXG4gICAqIEBwYXJhbSBtZXRob2QgIFRoZSBIVFRQIG1ldGhvZC5cbiAgICogQHBhcmFtIHVybCAgICAgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIEhUVFAgb3B0aW9ucyB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSBgSHR0cFJlc3BvbnNlYCwgd2l0aCB0aGUgcmVzcG9uc2UgYm9keSBhcyBhbiBgQXJyYXlCdWZmZXJgLlxuICAgKi9cbiAgcmVxdWVzdChcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBib2R5PzogYW55O1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgICAgdHJhbnNmZXJDYWNoZT86IHtpbmNsdWRlSGVhZGVycz86IHN0cmluZ1tdfSB8IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8QXJyYXlCdWZmZXI+PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIHJlcXVlc3Qgd2hpY2ggaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBhIGBCbG9iYCBhbmQgcmV0dXJucyB0aGUgZnVsbCBgSHR0cFJlc3BvbnNlYC5cbiAgICpcbiAgICogQHBhcmFtIG1ldGhvZCAgVGhlIEhUVFAgbWV0aG9kLlxuICAgKiBAcGFyYW0gdXJsICAgICBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgSFRUUCBvcHRpb25zIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgdGhlIGBIdHRwUmVzcG9uc2VgLCB3aXRoIHRoZSByZXNwb25zZSBib2R5IG9mIHR5cGUgYEJsb2JgLlxuICAgKi9cbiAgcmVxdWVzdChcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBib2R5PzogYW55O1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgICB0cmFuc2ZlckNhY2hlPzoge2luY2x1ZGVIZWFkZXJzPzogc3RyaW5nW119IHwgYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxCbG9iPj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSByZXF1ZXN0IHdoaWNoIGludGVycHJldHMgdGhlIGJvZHkgYXMgYSB0ZXh0IHN0cmVhbSBhbmQgcmV0dXJucyB0aGUgZnVsbFxuICAgKiBgSHR0cFJlc3BvbnNlYC5cbiAgICpcbiAgICogQHBhcmFtIG1ldGhvZCAgVGhlIEhUVFAgbWV0aG9kLlxuICAgKiBAcGFyYW0gdXJsICAgICBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgSFRUUCBvcHRpb25zIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgdGhlIEhUVFAgcmVzcG9uc2UsIHdpdGggdGhlIHJlc3BvbnNlIGJvZHkgb2YgdHlwZSBzdHJpbmcuXG4gICAqL1xuICByZXF1ZXN0KFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGJvZHk/OiBhbnk7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiB7aW5jbHVkZUhlYWRlcnM/OiBzdHJpbmdbXX0gfCBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPHN0cmluZz4+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgcmVxdWVzdCB3aGljaCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGEgSmF2YVNjcmlwdCBvYmplY3QgYW5kIHJldHVybnMgdGhlIGZ1bGxcbiAgICogYEh0dHBSZXNwb25zZWAuXG4gICAqXG4gICAqIEBwYXJhbSBtZXRob2QgIFRoZSBIVFRQIG1ldGhvZC5cbiAgICogQHBhcmFtIHVybCAgICAgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIEhUVFAgb3B0aW9ucyB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSBmdWxsIGBIdHRwUmVzcG9uc2VgLFxuICAgKiB3aXRoIHRoZSByZXNwb25zZSBib2R5IG9mIHR5cGUgYE9iamVjdGAuXG4gICAqL1xuICByZXF1ZXN0KFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGJvZHk/OiBhbnk7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8T2JqZWN0Pj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSByZXF1ZXN0IHdoaWNoIGludGVycHJldHMgdGhlIGJvZHkgYXMgYSBKYXZhU2NyaXB0IG9iamVjdCBhbmQgcmV0dXJuc1xuICAgKiB0aGUgZnVsbCBgSHR0cFJlc3BvbnNlYCB3aXRoIHRoZSByZXNwb25zZSBib2R5IGluIHRoZSByZXF1ZXN0ZWQgdHlwZS5cbiAgICpcbiAgICogQHBhcmFtIG1ldGhvZCAgVGhlIEhUVFAgbWV0aG9kLlxuICAgKiBAcGFyYW0gdXJsICAgICBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgSFRUUCBvcHRpb25zIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICogQHJldHVybiAgQW4gYE9ic2VydmFibGVgIG9mIHRoZSBmdWxsIGBIdHRwUmVzcG9uc2VgLCB3aXRoIHRoZSByZXNwb25zZSBib2R5IG9mIHR5cGUgYFJgLlxuICAgKi9cbiAgcmVxdWVzdDxSPihcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBib2R5PzogYW55O1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgICAgdHJhbnNmZXJDYWNoZT86IHtpbmNsdWRlSGVhZGVycz86IHN0cmluZ1tdfSB8IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8Uj4+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgcmVxdWVzdCB3aGljaCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGEgSmF2YVNjcmlwdCBvYmplY3QgYW5kIHJldHVybnMgdGhlIGZ1bGxcbiAgICogYEh0dHBSZXNwb25zZWAgYXMgYSBKYXZhU2NyaXB0IG9iamVjdC5cbiAgICpcbiAgICogQHBhcmFtIG1ldGhvZCAgVGhlIEhUVFAgbWV0aG9kLlxuICAgKiBAcGFyYW0gdXJsICAgICBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgSFRUUCBvcHRpb25zIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgdGhlIGBIdHRwUmVzcG9uc2VgLCB3aXRoIHRoZSByZXNwb25zZSBib2R5IG9mIHR5cGUgYE9iamVjdGAuXG4gICAqL1xuICByZXF1ZXN0KFxuICAgIG1ldGhvZDogc3RyaW5nLFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBib2R5PzogYW55O1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgICAgdHJhbnNmZXJDYWNoZT86IHtpbmNsdWRlSGVhZGVycz86IHN0cmluZ1tdfSB8IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPYmplY3Q+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgcmVxdWVzdCB3aGljaCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGEgSmF2YVNjcmlwdCBvYmplY3RcbiAgICogd2l0aCB0aGUgcmVzcG9uc2UgYm9keSBvZiB0aGUgcmVxdWVzdGVkIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSBtZXRob2QgIFRoZSBIVFRQIG1ldGhvZC5cbiAgICogQHBhcmFtIHVybCAgICAgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIEhUVFAgb3B0aW9ucyB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSBgSHR0cFJlc3BvbnNlYCwgd2l0aCB0aGUgcmVzcG9uc2UgYm9keSBvZiB0eXBlIGBSYC5cbiAgICovXG4gIHJlcXVlc3Q8Uj4oXG4gICAgbWV0aG9kOiBzdHJpbmcsXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGJvZHk/OiBhbnk7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgICB0cmFuc2ZlckNhY2hlPzoge2luY2x1ZGVIZWFkZXJzPzogc3RyaW5nW119IHwgYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPFI+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgcmVxdWVzdCB3aGVyZSByZXNwb25zZSB0eXBlIGFuZCByZXF1ZXN0ZWQgb2JzZXJ2YWJsZSBhcmUgbm90IGtub3duIHN0YXRpY2FsbHkuXG4gICAqXG4gICAqIEBwYXJhbSBtZXRob2QgIFRoZSBIVFRQIG1ldGhvZC5cbiAgICogQHBhcmFtIHVybCAgICAgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIEhUVFAgb3B0aW9ucyB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSByZXF1ZXN0ZWQgcmVzcG9uc2UsIHdpdGggYm9keSBvZiB0eXBlIGBhbnlgLlxuICAgKi9cbiAgcmVxdWVzdChcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zPzoge1xuICAgICAgYm9keT86IGFueTtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICBvYnNlcnZlPzogJ2JvZHknIHwgJ2V2ZW50cycgfCAncmVzcG9uc2UnO1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0JztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgICB0cmFuc2ZlckNhY2hlPzoge2luY2x1ZGVIZWFkZXJzPzogc3RyaW5nW119IHwgYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPGFueT47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYW4gb2JzZXJ2YWJsZSBmb3IgYSBnZW5lcmljIEhUVFAgcmVxdWVzdCB0aGF0LCB3aGVuIHN1YnNjcmliZWQsXG4gICAqIGZpcmVzIHRoZSByZXF1ZXN0IHRocm91Z2ggdGhlIGNoYWluIG9mIHJlZ2lzdGVyZWQgaW50ZXJjZXB0b3JzIGFuZCBvbiB0byB0aGVcbiAgICogc2VydmVyLlxuICAgKlxuICAgKiBZb3UgY2FuIHBhc3MgYW4gYEh0dHBSZXF1ZXN0YCBkaXJlY3RseSBhcyB0aGUgb25seSBwYXJhbWV0ZXIuIEluIHRoaXMgY2FzZSxcbiAgICogdGhlIGNhbGwgcmV0dXJucyBhbiBvYnNlcnZhYmxlIG9mIHRoZSByYXcgYEh0dHBFdmVudGAgc3RyZWFtLlxuICAgKlxuICAgKiBBbHRlcm5hdGl2ZWx5IHlvdSBjYW4gcGFzcyBhbiBIVFRQIG1ldGhvZCBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyLFxuICAgKiBhIFVSTCBzdHJpbmcgYXMgdGhlIHNlY29uZCwgYW5kIGFuIG9wdGlvbnMgaGFzaCBjb250YWluaW5nIHRoZSByZXF1ZXN0IGJvZHkgYXMgdGhlIHRoaXJkLlxuICAgKiBTZWUgYGFkZEJvZHkoKWAuIEluIHRoaXMgY2FzZSwgdGhlIHNwZWNpZmllZCBgcmVzcG9uc2VUeXBlYCBhbmQgYG9ic2VydmVgIG9wdGlvbnMgZGV0ZXJtaW5lIHRoZVxuICAgKiB0eXBlIG9mIHJldHVybmVkIG9ic2VydmFibGUuXG4gICAqICAgKiBUaGUgYHJlc3BvbnNlVHlwZWAgdmFsdWUgZGV0ZXJtaW5lcyBob3cgYSBzdWNjZXNzZnVsIHJlc3BvbnNlIGJvZHkgaXMgcGFyc2VkLlxuICAgKiAgICogSWYgYHJlc3BvbnNlVHlwZWAgaXMgdGhlIGRlZmF1bHQgYGpzb25gLCB5b3UgY2FuIHBhc3MgYSB0eXBlIGludGVyZmFjZSBmb3IgdGhlIHJlc3VsdGluZ1xuICAgKiBvYmplY3QgYXMgYSB0eXBlIHBhcmFtZXRlciB0byB0aGUgY2FsbC5cbiAgICpcbiAgICogVGhlIGBvYnNlcnZlYCB2YWx1ZSBkZXRlcm1pbmVzIHRoZSByZXR1cm4gdHlwZSwgYWNjb3JkaW5nIHRvIHdoYXQgeW91IGFyZSBpbnRlcmVzdGVkIGluXG4gICAqIG9ic2VydmluZy5cbiAgICogICAqIEFuIGBvYnNlcnZlYCB2YWx1ZSBvZiBldmVudHMgcmV0dXJucyBhbiBvYnNlcnZhYmxlIG9mIHRoZSByYXcgYEh0dHBFdmVudGAgc3RyZWFtLCBpbmNsdWRpbmdcbiAgICogcHJvZ3Jlc3MgZXZlbnRzIGJ5IGRlZmF1bHQuXG4gICAqICAgKiBBbiBgb2JzZXJ2ZWAgdmFsdWUgb2YgcmVzcG9uc2UgcmV0dXJucyBhbiBvYnNlcnZhYmxlIG9mIGBIdHRwUmVzcG9uc2U8VD5gLFxuICAgKiB3aGVyZSB0aGUgYFRgIHBhcmFtZXRlciBkZXBlbmRzIG9uIHRoZSBgcmVzcG9uc2VUeXBlYCBhbmQgYW55IG9wdGlvbmFsbHkgcHJvdmlkZWQgdHlwZVxuICAgKiBwYXJhbWV0ZXIuXG4gICAqICAgKiBBbiBgb2JzZXJ2ZWAgdmFsdWUgb2YgYm9keSByZXR1cm5zIGFuIG9ic2VydmFibGUgb2YgYDxUPmAgd2l0aCB0aGUgc2FtZSBgVGAgYm9keSB0eXBlLlxuICAgKlxuICAgKi9cbiAgcmVxdWVzdChcbiAgICBmaXJzdDogc3RyaW5nIHwgSHR0cFJlcXVlc3Q8YW55PixcbiAgICB1cmw/OiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgYm9keT86IGFueTtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknIHwgJ2V2ZW50cycgfCAncmVzcG9uc2UnO1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0JztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgICB0cmFuc2ZlckNhY2hlPzoge2luY2x1ZGVIZWFkZXJzPzogc3RyaW5nW119IHwgYm9vbGVhbjtcbiAgICB9ID0ge30sXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgbGV0IHJlcTogSHR0cFJlcXVlc3Q8YW55PjtcbiAgICAvLyBGaXJzdCwgY2hlY2sgd2hldGhlciB0aGUgcHJpbWFyeSBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBgSHR0cFJlcXVlc3RgLlxuICAgIGlmIChmaXJzdCBpbnN0YW5jZW9mIEh0dHBSZXF1ZXN0KSB7XG4gICAgICAvLyBJdCBpcy4gVGhlIG90aGVyIGFyZ3VtZW50cyBtdXN0IGJlIHVuZGVmaW5lZCAocGVyIHRoZSBzaWduYXR1cmVzKSBhbmQgY2FuIGJlXG4gICAgICAvLyBpZ25vcmVkLlxuICAgICAgcmVxID0gZmlyc3Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEl0J3MgYSBzdHJpbmcsIHNvIGl0IHJlcHJlc2VudHMgYSBVUkwuIENvbnN0cnVjdCBhIHJlcXVlc3QgYmFzZWQgb24gaXQsXG4gICAgICAvLyBhbmQgaW5jb3Jwb3JhdGUgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgKGFzc3VtaW5nIGBHRVRgIHVubGVzcyBhIG1ldGhvZCBpc1xuICAgICAgLy8gcHJvdmlkZWQuXG5cbiAgICAgIC8vIEZpZ3VyZSBvdXQgdGhlIGhlYWRlcnMuXG4gICAgICBsZXQgaGVhZGVyczogSHR0cEhlYWRlcnMgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgICBpZiAob3B0aW9ucy5oZWFkZXJzIGluc3RhbmNlb2YgSHR0cEhlYWRlcnMpIHtcbiAgICAgICAgaGVhZGVycyA9IG9wdGlvbnMuaGVhZGVycztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKTtcbiAgICAgIH1cblxuICAgICAgLy8gU29ydCBvdXQgcGFyYW1ldGVycy5cbiAgICAgIGxldCBwYXJhbXM6IEh0dHBQYXJhbXMgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG4gICAgICBpZiAoISFvcHRpb25zLnBhcmFtcykge1xuICAgICAgICBpZiAob3B0aW9ucy5wYXJhbXMgaW5zdGFuY2VvZiBIdHRwUGFyYW1zKSB7XG4gICAgICAgICAgcGFyYW1zID0gb3B0aW9ucy5wYXJhbXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoe2Zyb21PYmplY3Q6IG9wdGlvbnMucGFyYW1zfSBhcyBIdHRwUGFyYW1zT3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gQ29uc3RydWN0IHRoZSByZXF1ZXN0LlxuICAgICAgcmVxID0gbmV3IEh0dHBSZXF1ZXN0KGZpcnN0LCB1cmwhLCBvcHRpb25zLmJvZHkgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMuYm9keSA6IG51bGwsIHtcbiAgICAgICAgaGVhZGVycyxcbiAgICAgICAgY29udGV4dDogb3B0aW9ucy5jb250ZXh0LFxuICAgICAgICBwYXJhbXMsXG4gICAgICAgIHJlcG9ydFByb2dyZXNzOiBvcHRpb25zLnJlcG9ydFByb2dyZXNzLFxuICAgICAgICAvLyBCeSBkZWZhdWx0LCBKU09OIGlzIGFzc3VtZWQgdG8gYmUgcmV0dXJuZWQgZm9yIGFsbCBjYWxscy5cbiAgICAgICAgcmVzcG9uc2VUeXBlOiBvcHRpb25zLnJlc3BvbnNlVHlwZSB8fCAnanNvbicsXG4gICAgICAgIHdpdGhDcmVkZW50aWFsczogb3B0aW9ucy53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgIHRyYW5zZmVyQ2FjaGU6IG9wdGlvbnMudHJhbnNmZXJDYWNoZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFN0YXJ0IHdpdGggYW4gT2JzZXJ2YWJsZS5vZigpIHRoZSBpbml0aWFsIHJlcXVlc3QsIGFuZCBydW4gdGhlIGhhbmRsZXIgKHdoaWNoXG4gICAgLy8gaW5jbHVkZXMgYWxsIGludGVyY2VwdG9ycykgaW5zaWRlIGEgY29uY2F0TWFwKCkuIFRoaXMgd2F5LCB0aGUgaGFuZGxlciBydW5zXG4gICAgLy8gaW5zaWRlIGFuIE9ic2VydmFibGUgY2hhaW4sIHdoaWNoIGNhdXNlcyBpbnRlcmNlcHRvcnMgdG8gYmUgcmUtcnVuIG9uIGV2ZXJ5XG4gICAgLy8gc3Vic2NyaXB0aW9uICh0aGlzIGFsc28gbWFrZXMgcmV0cmllcyByZS1ydW4gdGhlIGhhbmRsZXIsIGluY2x1ZGluZyBpbnRlcmNlcHRvcnMpLlxuICAgIGNvbnN0IGV2ZW50cyQ6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+ID0gb2YocmVxKS5waXBlKFxuICAgICAgY29uY2F0TWFwKChyZXE6IEh0dHBSZXF1ZXN0PGFueT4pID0+IHRoaXMuaGFuZGxlci5oYW5kbGUocmVxKSksXG4gICAgKTtcblxuICAgIC8vIElmIGNvbWluZyB2aWEgdGhlIEFQSSBzaWduYXR1cmUgd2hpY2ggYWNjZXB0cyBhIHByZXZpb3VzbHkgY29uc3RydWN0ZWQgSHR0cFJlcXVlc3QsXG4gICAgLy8gdGhlIG9ubHkgb3B0aW9uIGlzIHRvIGdldCB0aGUgZXZlbnQgc3RyZWFtLiBPdGhlcndpc2UsIHJldHVybiB0aGUgZXZlbnQgc3RyZWFtIGlmXG4gICAgLy8gdGhhdCBpcyB3aGF0IHdhcyByZXF1ZXN0ZWQuXG4gICAgaWYgKGZpcnN0IGluc3RhbmNlb2YgSHR0cFJlcXVlc3QgfHwgb3B0aW9ucy5vYnNlcnZlID09PSAnZXZlbnRzJykge1xuICAgICAgcmV0dXJuIGV2ZW50cyQ7XG4gICAgfVxuXG4gICAgLy8gVGhlIHJlcXVlc3RlZCBzdHJlYW0gY29udGFpbnMgZWl0aGVyIHRoZSBmdWxsIHJlc3BvbnNlIG9yIHRoZSBib2R5LiBJbiBlaXRoZXJcbiAgICAvLyBjYXNlLCB0aGUgZmlyc3Qgc3RlcCBpcyB0byBmaWx0ZXIgdGhlIGV2ZW50IHN0cmVhbSB0byBleHRyYWN0IGEgc3RyZWFtIG9mXG4gICAgLy8gcmVzcG9uc2VzKHMpLlxuICAgIGNvbnN0IHJlcyQ6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPGFueT4+ID0gPE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPGFueT4+PihcbiAgICAgIGV2ZW50cyQucGlwZShmaWx0ZXIoKGV2ZW50OiBIdHRwRXZlbnQ8YW55PikgPT4gZXZlbnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpKVxuICAgICk7XG5cbiAgICAvLyBEZWNpZGUgd2hpY2ggc3RyZWFtIHRvIHJldHVybi5cbiAgICBzd2l0Y2ggKG9wdGlvbnMub2JzZXJ2ZSB8fCAnYm9keScpIHtcbiAgICAgIGNhc2UgJ2JvZHknOlxuICAgICAgICAvLyBUaGUgcmVxdWVzdGVkIHN0cmVhbSBpcyB0aGUgYm9keS4gTWFwIHRoZSByZXNwb25zZSBzdHJlYW0gdG8gdGhlIHJlc3BvbnNlXG4gICAgICAgIC8vIGJvZHkuIFRoaXMgY291bGQgYmUgZG9uZSBtb3JlIHNpbXBseSwgYnV0IGEgbWlzYmVoYXZpbmcgaW50ZXJjZXB0b3IgbWlnaHRcbiAgICAgICAgLy8gdHJhbnNmb3JtIHRoZSByZXNwb25zZSBib2R5IGludG8gYSBkaWZmZXJlbnQgZm9ybWF0IGFuZCBpZ25vcmUgdGhlIHJlcXVlc3RlZFxuICAgICAgICAvLyByZXNwb25zZVR5cGUuIEd1YXJkIGFnYWluc3QgdGhpcyBieSB2YWxpZGF0aW5nIHRoYXQgdGhlIHJlc3BvbnNlIGlzIG9mIHRoZVxuICAgICAgICAvLyByZXF1ZXN0ZWQgdHlwZS5cbiAgICAgICAgc3dpdGNoIChyZXEucmVzcG9uc2VUeXBlKSB7XG4gICAgICAgICAgY2FzZSAnYXJyYXlidWZmZXInOlxuICAgICAgICAgICAgcmV0dXJuIHJlcyQucGlwZShcbiAgICAgICAgICAgICAgbWFwKChyZXM6IEh0dHBSZXNwb25zZTxhbnk+KSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgYm9keSBpcyBhbiBBcnJheUJ1ZmZlci5cbiAgICAgICAgICAgICAgICBpZiAocmVzLmJvZHkgIT09IG51bGwgJiYgIShyZXMuYm9keSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSkge1xuICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXNwb25zZSBpcyBub3QgYW4gQXJyYXlCdWZmZXIuJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXMuYm9keTtcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGNhc2UgJ2Jsb2InOlxuICAgICAgICAgICAgcmV0dXJuIHJlcyQucGlwZShcbiAgICAgICAgICAgICAgbWFwKChyZXM6IEh0dHBSZXNwb25zZTxhbnk+KSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gVmFsaWRhdGUgdGhhdCB0aGUgYm9keSBpcyBhIEJsb2IuXG4gICAgICAgICAgICAgICAgaWYgKHJlcy5ib2R5ICE9PSBudWxsICYmICEocmVzLmJvZHkgaW5zdGFuY2VvZiBCbG9iKSkge1xuICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXNwb25zZSBpcyBub3QgYSBCbG9iLicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzLmJvZHk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBjYXNlICd0ZXh0JzpcbiAgICAgICAgICAgIHJldHVybiByZXMkLnBpcGUoXG4gICAgICAgICAgICAgIG1hcCgocmVzOiBIdHRwUmVzcG9uc2U8YW55PikgPT4ge1xuICAgICAgICAgICAgICAgIC8vIFZhbGlkYXRlIHRoYXQgdGhlIGJvZHkgaXMgYSBzdHJpbmcuXG4gICAgICAgICAgICAgICAgaWYgKHJlcy5ib2R5ICE9PSBudWxsICYmIHR5cGVvZiByZXMuYm9keSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUmVzcG9uc2UgaXMgbm90IGEgc3RyaW5nLicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzLmJvZHk7XG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICBjYXNlICdqc29uJzpcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgLy8gTm8gdmFsaWRhdGlvbiBuZWVkZWQgZm9yIEpTT04gcmVzcG9uc2VzLCBhcyB0aGV5IGNhbiBiZSBvZiBhbnkgdHlwZS5cbiAgICAgICAgICAgIHJldHVybiByZXMkLnBpcGUobWFwKChyZXM6IEh0dHBSZXNwb25zZTxhbnk+KSA9PiByZXMuYm9keSkpO1xuICAgICAgICB9XG4gICAgICBjYXNlICdyZXNwb25zZSc6XG4gICAgICAgIC8vIFRoZSByZXNwb25zZSBzdHJlYW0gd2FzIHJlcXVlc3RlZCBkaXJlY3RseSwgc28gcmV0dXJuIGl0LlxuICAgICAgICByZXR1cm4gcmVzJDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIEd1YXJkIGFnYWluc3QgbmV3IGZ1dHVyZSBvYnNlcnZlIHR5cGVzIGJlaW5nIGFkZGVkLlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVucmVhY2hhYmxlOiB1bmhhbmRsZWQgb2JzZXJ2ZSB0eXBlICR7b3B0aW9ucy5vYnNlcnZlfX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBERUxFVEVgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGFuIGBBcnJheUJ1ZmZlcmBcbiAgICogIGFuZCByZXR1cm5zIHRoZSByZXNwb25zZSBhcyBhbiBgQXJyYXlCdWZmZXJgLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsICAgICBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgSFRUUCBvcHRpb25zIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICogQHJldHVybiAgQW4gYE9ic2VydmFibGVgIG9mIHRoZSByZXNwb25zZSBib2R5IGFzIGFuIGBBcnJheUJ1ZmZlcmAuXG4gICAqL1xuICBkZWxldGUoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgICAgYm9keT86IGFueSB8IG51bGw7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxBcnJheUJ1ZmZlcj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgREVMRVRFYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBhIGBCbG9iYCBhbmQgcmV0dXJuc1xuICAgKiB0aGUgcmVzcG9uc2UgYXMgYSBgQmxvYmAuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgICAgIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBIVFRQIG9wdGlvbnMgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgcmVzcG9uc2UgYm9keSBhcyBhIGBCbG9iYC5cbiAgICovXG4gIGRlbGV0ZShcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIGJvZHk/OiBhbnkgfCBudWxsO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8QmxvYj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgREVMRVRFYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBhIHRleHQgc3RyaW5nIGFuZCByZXR1cm5zXG4gICAqIGEgc3RyaW5nLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsICAgICBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgSFRUUCBvcHRpb25zIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgdGhlIHJlc3BvbnNlLCB3aXRoIHRoZSByZXNwb25zZSBib2R5IG9mIHR5cGUgc3RyaW5nLlxuICAgKi9cbiAgZGVsZXRlKFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCc7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgICAgYm9keT86IGFueSB8IG51bGw7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgYERFTEVURWAgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgYW4gYEFycmF5QnVmZmVyYFxuICAgKiAgYW5kIHJldHVybnMgdGhlIGZ1bGwgZXZlbnQgc3RyZWFtLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsICAgICBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgSFRUUCBvcHRpb25zIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgYWxsIGBIdHRwRXZlbnRgcyBmb3IgdGhlIHJlcXVlc3QsXG4gICAqIHdpdGggcmVzcG9uc2UgYm9keSBhcyBhbiBgQXJyYXlCdWZmZXJgLlxuICAgKi9cbiAgZGVsZXRlKFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgICBib2R5PzogYW55IHwgbnVsbDtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxBcnJheUJ1ZmZlcj4+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgYERFTEVURWAgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgYSBgQmxvYmBcbiAgICogIGFuZCByZXR1cm5zIHRoZSBmdWxsIGV2ZW50IHN0cmVhbS5cbiAgICpcbiAgICogQHBhcmFtIHVybCAgICAgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIEhUVFAgb3B0aW9ucyB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIGFsbCB0aGUgYEh0dHBFdmVudGBzIGZvciB0aGUgcmVxdWVzdCwgd2l0aCB0aGUgcmVzcG9uc2UgYm9keSBhcyBhXG4gICAqIGBCbG9iYC5cbiAgICovXG4gIGRlbGV0ZShcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgICBib2R5PzogYW55IHwgbnVsbDtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxCbG9iPj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgREVMRVRFYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBhIHRleHQgc3RyaW5nXG4gICAqIGFuZCByZXR1cm5zIHRoZSBmdWxsIGV2ZW50IHN0cmVhbS5cbiAgICpcbiAgICogQHBhcmFtIHVybCAgICAgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIEhUVFAgb3B0aW9ucyB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIGFsbCBgSHR0cEV2ZW50YHMgZm9yIHRoZSByZXF1ZXN0LCB3aXRoIHRoZSByZXNwb25zZVxuICAgKiBib2R5IG9mIHR5cGUgc3RyaW5nLlxuICAgKi9cbiAgZGVsZXRlKFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIGJvZHk/OiBhbnkgfCBudWxsO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PHN0cmluZz4+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgYERFTEVURWAgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgSlNPTlxuICAgKiBhbmQgcmV0dXJucyB0aGUgZnVsbCBldmVudCBzdHJlYW0uXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgICAgIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBIVFRQIG9wdGlvbnMgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiBhbGwgYEh0dHBFdmVudGBzIGZvciB0aGUgcmVxdWVzdCwgd2l0aCByZXNwb25zZSBib2R5IG9mXG4gICAqIHR5cGUgYE9iamVjdGAuXG4gICAqL1xuICBkZWxldGUoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIGJvZHk/OiBhbnkgfCBudWxsO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PE9iamVjdD4+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgYERFTEVURWByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBKU09OXG4gICAqIGFuZCByZXR1cm5zIHRoZSBmdWxsIGV2ZW50IHN0cmVhbS5cbiAgICpcbiAgICogQHBhcmFtIHVybCAgICAgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIEhUVFAgb3B0aW9ucyB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIGFsbCB0aGUgYEh0dHBFdmVudGBzIGZvciB0aGUgcmVxdWVzdCwgd2l0aCBhIHJlc3BvbnNlXG4gICAqIGJvZHkgaW4gdGhlIHJlcXVlc3RlZCB0eXBlLlxuICAgKi9cbiAgZGVsZXRlPFQ+KFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCAoc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbilbXX07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgICAgYm9keT86IGFueSB8IG51bGw7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8VD4+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgYERFTEVURWAgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgYW4gYEFycmF5QnVmZmVyYCBhbmQgcmV0dXJuc1xuICAgKiAgdGhlIGZ1bGwgYEh0dHBSZXNwb25zZWAuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgICAgIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBIVFRQIG9wdGlvbnMgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgZnVsbCBgSHR0cFJlc3BvbnNlYCwgd2l0aCB0aGUgcmVzcG9uc2UgYm9keSBhcyBhbiBgQXJyYXlCdWZmZXJgLlxuICAgKi9cbiAgZGVsZXRlKFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIGJvZHk/OiBhbnkgfCBudWxsO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEFycmF5QnVmZmVyPj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgREVMRVRFYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBhIGBCbG9iYCBhbmQgcmV0dXJucyB0aGUgZnVsbFxuICAgKiBgSHR0cFJlc3BvbnNlYC5cbiAgICpcbiAgICogQHBhcmFtIHVybCAgICAgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIEhUVFAgb3B0aW9ucyB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSBgSHR0cFJlc3BvbnNlYCwgd2l0aCB0aGUgcmVzcG9uc2UgYm9keSBvZiB0eXBlIGBCbG9iYC5cbiAgICovXG4gIGRlbGV0ZShcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIGJvZHk/OiBhbnkgfCBudWxsO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEJsb2I+PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBERUxFVEVgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGEgdGV4dCBzdHJlYW0gYW5kXG4gICAqICByZXR1cm5zIHRoZSBmdWxsIGBIdHRwUmVzcG9uc2VgLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsICAgICBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgSFRUUCBvcHRpb25zIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgdGhlIGZ1bGwgYEh0dHBSZXNwb25zZWAsIHdpdGggdGhlIHJlc3BvbnNlIGJvZHkgb2YgdHlwZSBzdHJpbmcuXG4gICAqL1xuICBkZWxldGUoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgICBib2R5PzogYW55IHwgbnVsbDtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxzdHJpbmc+PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBERUxFVEVgIHJlcXVlc3QgdGhlIGludGVycHJldHMgdGhlIGJvZHkgYXMgYSBKYXZhU2NyaXB0IG9iamVjdCBhbmQgcmV0dXJuc1xuICAgKiB0aGUgZnVsbCBgSHR0cFJlc3BvbnNlYC5cbiAgICpcbiAgICogQHBhcmFtIHVybCAgICAgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIEhUVFAgb3B0aW9ucyB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSBgSHR0cFJlc3BvbnNlYCwgd2l0aCB0aGUgcmVzcG9uc2UgYm9keSBvZiB0eXBlIGBPYmplY3RgLlxuICAgKlxuICAgKi9cbiAgZGVsZXRlKFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIGJvZHk/OiBhbnkgfCBudWxsO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPE9iamVjdD4+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgYERFTEVURWAgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgSlNPTlxuICAgKiBhbmQgcmV0dXJucyB0aGUgZnVsbCBgSHR0cFJlc3BvbnNlYC5cbiAgICpcbiAgICogQHBhcmFtIHVybCAgICAgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIEhUVFAgb3B0aW9ucyB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSBgSHR0cFJlc3BvbnNlYCwgd2l0aCB0aGUgcmVzcG9uc2UgYm9keSBvZiB0aGUgcmVxdWVzdGVkIHR5cGUuXG4gICAqL1xuICBkZWxldGU8VD4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgICAgYm9keT86IGFueSB8IG51bGw7XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8VD4+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgYERFTEVURWAgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgSlNPTiBhbmRcbiAgICogcmV0dXJucyB0aGUgcmVzcG9uc2UgYm9keSBhcyBhbiBvYmplY3QgcGFyc2VkIGZyb20gSlNPTi5cbiAgICpcbiAgICogQHBhcmFtIHVybCAgICAgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIEhUVFAgb3B0aW9ucyB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSByZXNwb25zZSwgd2l0aCB0aGUgcmVzcG9uc2UgYm9keSBvZiB0eXBlIGBPYmplY3RgLlxuICAgKi9cbiAgZGVsZXRlKFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgICBib2R5PzogYW55IHwgbnVsbDtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPE9iamVjdD47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBERUxFVEUgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgSlNPTiBhbmQgcmV0dXJuc1xuICAgKiB0aGUgcmVzcG9uc2UgaW4gYSBnaXZlbiB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsICAgICBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgSFRUUCBvcHRpb25zIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgdGhlIGBIdHRwUmVzcG9uc2VgLCB3aXRoIHJlc3BvbnNlIGJvZHkgaW4gdGhlIHJlcXVlc3RlZCB0eXBlLlxuICAgKi9cbiAgZGVsZXRlPFQ+KFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgICBib2R5PzogYW55IHwgbnVsbDtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPFQ+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGFuIG9ic2VydmFibGUgdGhhdCwgd2hlbiBzdWJzY3JpYmVkLCBjYXVzZXMgdGhlIGNvbmZpZ3VyZWRcbiAgICogYERFTEVURWAgcmVxdWVzdCB0byBleGVjdXRlIG9uIHRoZSBzZXJ2ZXIuIFNlZSB0aGUgaW5kaXZpZHVhbCBvdmVybG9hZHMgZm9yXG4gICAqIGRldGFpbHMgb24gdGhlIHJldHVybiB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsICAgICBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgSFRUUCBvcHRpb25zIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICovXG4gIGRlbGV0ZShcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JyB8ICdldmVudHMnIHwgJ3Jlc3BvbnNlJztcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgICAgYm9keT86IGFueSB8IG51bGw7XG4gICAgfSA9IHt9LFxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8YW55PignREVMRVRFJywgdXJsLCBvcHRpb25zIGFzIGFueSk7XG4gIH1cblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBHRVRgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGFuIGBBcnJheUJ1ZmZlcmAgYW5kIHJldHVybnMgdGhlXG4gICAqIHJlc3BvbnNlIGluIGFuIGBBcnJheUJ1ZmZlcmAuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgICAgIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBIVFRQIG9wdGlvbnMgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgcmVzcG9uc2UsIHdpdGggdGhlIHJlc3BvbnNlIGJvZHkgYXMgYW4gYEFycmF5QnVmZmVyYC5cbiAgICovXG4gIGdldChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgICB0cmFuc2ZlckNhY2hlPzoge2luY2x1ZGVIZWFkZXJzPzogc3RyaW5nW119IHwgYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEFycmF5QnVmZmVyPjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBHRVRgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGEgYEJsb2JgXG4gICAqIGFuZCByZXR1cm5zIHRoZSByZXNwb25zZSBhcyBhIGBCbG9iYC5cbiAgICpcbiAgICogQHBhcmFtIHVybCAgICAgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIEhUVFAgb3B0aW9ucyB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSByZXNwb25zZSwgd2l0aCB0aGUgcmVzcG9uc2UgYm9keSBhcyBhIGBCbG9iYC5cbiAgICovXG4gIGdldChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiB7aW5jbHVkZUhlYWRlcnM/OiBzdHJpbmdbXX0gfCBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8QmxvYj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgR0VUYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBhIHRleHQgc3RyaW5nXG4gICAqIGFuZCByZXR1cm5zIHRoZSByZXNwb25zZSBhcyBhIHN0cmluZyB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHVybCAgICAgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIEhUVFAgb3B0aW9ucyB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSByZXNwb25zZSwgd2l0aCB0aGUgcmVzcG9uc2UgYm9keSBvZiB0eXBlIHN0cmluZy5cbiAgICovXG4gIGdldChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiB7aW5jbHVkZUhlYWRlcnM/OiBzdHJpbmdbXX0gfCBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBHRVRgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGFuIGBBcnJheUJ1ZmZlcmAgYW5kIHJldHVybnNcbiAgICogIHRoZSBmdWxsIGV2ZW50IHN0cmVhbS5cbiAgICpcbiAgICogQHBhcmFtIHVybCAgICAgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIEhUVFAgb3B0aW9ucyB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIGFsbCBgSHR0cEV2ZW50YHMgZm9yIHRoZSByZXF1ZXN0LCB3aXRoIHRoZSByZXNwb25zZVxuICAgKiBib2R5IGFzIGFuIGBBcnJheUJ1ZmZlcmAuXG4gICAqL1xuICBnZXQoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiB7aW5jbHVkZUhlYWRlcnM/OiBzdHJpbmdbXX0gfCBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PEFycmF5QnVmZmVyPj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgR0VUYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBhIGBCbG9iYCBhbmRcbiAgICogcmV0dXJucyB0aGUgZnVsbCBldmVudCBzdHJlYW0uXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgICAgIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBIVFRQIG9wdGlvbnMgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgcmVzcG9uc2UsIHdpdGggdGhlIHJlc3BvbnNlIGJvZHkgYXMgYSBgQmxvYmAuXG4gICAqL1xuICBnZXQoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgICAgdHJhbnNmZXJDYWNoZT86IHtpbmNsdWRlSGVhZGVycz86IHN0cmluZ1tdfSB8IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8QmxvYj4+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgYEdFVGAgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgYSB0ZXh0IHN0cmluZyBhbmQgcmV0dXJuc1xuICAgKiB0aGUgZnVsbCBldmVudCBzdHJlYW0uXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgICAgIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBIVFRQIG9wdGlvbnMgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgcmVzcG9uc2UsIHdpdGggdGhlIHJlc3BvbnNlIGJvZHkgb2YgdHlwZSBzdHJpbmcuXG4gICAqL1xuICBnZXQoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCc7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgICAgdHJhbnNmZXJDYWNoZT86IHtpbmNsdWRlSGVhZGVycz86IHN0cmluZ1tdfSB8IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8c3RyaW5nPj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgR0VUYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBKU09OXG4gICAqIGFuZCByZXR1cm5zIHRoZSBmdWxsIGV2ZW50IHN0cmVhbS5cbiAgICpcbiAgICogQHBhcmFtIHVybCAgICAgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIEhUVFAgb3B0aW9ucyB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSByZXNwb25zZSwgd2l0aCB0aGUgcmVzcG9uc2UgYm9keSBvZiB0eXBlIGBPYmplY3RgLlxuICAgKi9cbiAgZ2V0KFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgICB0cmFuc2ZlckNhY2hlPzoge2luY2x1ZGVIZWFkZXJzPzogc3RyaW5nW119IHwgYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxPYmplY3Q+PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBHRVRgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIEpTT04gYW5kIHJldHVybnMgdGhlIGZ1bGxcbiAgICogZXZlbnQgc3RyZWFtLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsICAgICBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgSFRUUCBvcHRpb25zIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgdGhlIHJlc3BvbnNlLCB3aXRoIGEgcmVzcG9uc2UgYm9keSBpbiB0aGUgcmVxdWVzdGVkIHR5cGUuXG4gICAqL1xuICBnZXQ8VD4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiB7aW5jbHVkZUhlYWRlcnM/OiBzdHJpbmdbXX0gfCBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PFQ+PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBHRVRgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGFuIGBBcnJheUJ1ZmZlcmAgYW5kXG4gICAqIHJldHVybnMgdGhlIGZ1bGwgYEh0dHBSZXNwb25zZWAuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgICAgIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBIVFRQIG9wdGlvbnMgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgYEh0dHBSZXNwb25zZWAgZm9yIHRoZSByZXF1ZXN0LFxuICAgKiB3aXRoIHRoZSByZXNwb25zZSBib2R5IGFzIGFuIGBBcnJheUJ1ZmZlcmAuXG4gICAqL1xuICBnZXQoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgICAgdHJhbnNmZXJDYWNoZT86IHtpbmNsdWRlSGVhZGVycz86IHN0cmluZ1tdfSB8IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8QXJyYXlCdWZmZXI+PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBHRVRgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGEgYEJsb2JgIGFuZFxuICAgKiByZXR1cm5zIHRoZSBmdWxsIGBIdHRwUmVzcG9uc2VgLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsICAgICBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgSFRUUCBvcHRpb25zIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgdGhlIGBIdHRwUmVzcG9uc2VgIGZvciB0aGUgcmVxdWVzdCxcbiAgICogd2l0aCB0aGUgcmVzcG9uc2UgYm9keSBhcyBhIGBCbG9iYC5cbiAgICovXG4gIGdldChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiB7aW5jbHVkZUhlYWRlcnM/OiBzdHJpbmdbXX0gfCBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEJsb2I+PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBHRVRgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGEgdGV4dCBzdHJlYW0gYW5kXG4gICAqIHJldHVybnMgdGhlIGZ1bGwgYEh0dHBSZXNwb25zZWAuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgICAgIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBIVFRQIG9wdGlvbnMgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgYEh0dHBSZXNwb25zZWAgZm9yIHRoZSByZXF1ZXN0LFxuICAgKiB3aXRoIHRoZSByZXNwb25zZSBib2R5IG9mIHR5cGUgc3RyaW5nLlxuICAgKi9cbiAgZ2V0KFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCc7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgICAgdHJhbnNmZXJDYWNoZT86IHtpbmNsdWRlSGVhZGVycz86IHN0cmluZ1tdfSB8IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8c3RyaW5nPj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgR0VUYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBKU09OIGFuZFxuICAgKiByZXR1cm5zIHRoZSBmdWxsIGBIdHRwUmVzcG9uc2VgLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsICAgICBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgSFRUUCBvcHRpb25zIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgdGhlIGZ1bGwgYEh0dHBSZXNwb25zZWAsXG4gICAqIHdpdGggdGhlIHJlc3BvbnNlIGJvZHkgb2YgdHlwZSBgT2JqZWN0YC5cbiAgICovXG4gIGdldChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgICB0cmFuc2ZlckNhY2hlPzoge2luY2x1ZGVIZWFkZXJzPzogc3RyaW5nW119IHwgYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxPYmplY3Q+PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBHRVRgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIEpTT04gYW5kXG4gICAqIHJldHVybnMgdGhlIGZ1bGwgYEh0dHBSZXNwb25zZWAuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgICAgIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBIVFRQIG9wdGlvbnMgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgZnVsbCBgSHR0cFJlc3BvbnNlYCBmb3IgdGhlIHJlcXVlc3QsXG4gICAqIHdpdGggYSByZXNwb25zZSBib2R5IGluIHRoZSByZXF1ZXN0ZWQgdHlwZS5cbiAgICovXG4gIGdldDxUPihcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgICB0cmFuc2ZlckNhY2hlPzoge2luY2x1ZGVIZWFkZXJzPzogc3RyaW5nW119IHwgYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxUPj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgR0VUYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBKU09OIGFuZFxuICAgKiByZXR1cm5zIHRoZSByZXNwb25zZSBib2R5IGFzIGFuIG9iamVjdCBwYXJzZWQgZnJvbSBKU09OLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsICAgICBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgSFRUUCBvcHRpb25zIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgdGhlIHJlc3BvbnNlIGJvZHkgYXMgYSBKYXZhU2NyaXB0IG9iamVjdC5cbiAgICovXG4gIGdldChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zPzoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgICAgdHJhbnNmZXJDYWNoZT86IHtpbmNsdWRlSGVhZGVycz86IHN0cmluZ1tdfSB8IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPYmplY3Q+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgYEdFVGAgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgSlNPTiBhbmQgcmV0dXJuc1xuICAgKiB0aGUgcmVzcG9uc2UgYm9keSBpbiBhIGdpdmVuIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgICAgIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBIVFRQIG9wdGlvbnMgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgYEh0dHBSZXNwb25zZWAsIHdpdGggYSByZXNwb25zZSBib2R5IGluIHRoZSByZXF1ZXN0ZWQgdHlwZS5cbiAgICovXG4gIGdldDxUPihcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zPzoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgICAgdHJhbnNmZXJDYWNoZT86IHtpbmNsdWRlSGVhZGVycz86IHN0cmluZ1tdfSB8IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxUPjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhbiBvYnNlcnZhYmxlIHRoYXQsIHdoZW4gc3Vic2NyaWJlZCwgY2F1c2VzIHRoZSBjb25maWd1cmVkXG4gICAqIGBHRVRgIHJlcXVlc3QgdG8gZXhlY3V0ZSBvbiB0aGUgc2VydmVyLiBTZWUgdGhlIGluZGl2aWR1YWwgb3ZlcmxvYWRzIGZvclxuICAgKiBkZXRhaWxzIG9uIHRoZSByZXR1cm4gdHlwZS5cbiAgICovXG4gIGdldChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JyB8ICdldmVudHMnIHwgJ3Jlc3BvbnNlJztcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgICAgdHJhbnNmZXJDYWNoZT86IHtpbmNsdWRlSGVhZGVycz86IHN0cmluZ1tdfSB8IGJvb2xlYW47XG4gICAgfSA9IHt9LFxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8YW55PignR0VUJywgdXJsLCBvcHRpb25zIGFzIGFueSk7XG4gIH1cblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBIRUFEYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBhbiBgQXJyYXlCdWZmZXJgIGFuZFxuICAgKiByZXR1cm5zIHRoZSByZXNwb25zZSBhcyBhbiBgQXJyYXlCdWZmZXJgLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsICAgICBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgSFRUUCBvcHRpb25zIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgdGhlIHJlc3BvbnNlLCB3aXRoIHRoZSByZXNwb25zZSBib2R5IGFzIGFuIGBBcnJheUJ1ZmZlcmAuXG4gICAqL1xuICBoZWFkKFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiB7aW5jbHVkZUhlYWRlcnM/OiBzdHJpbmdbXX0gfCBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8QXJyYXlCdWZmZXI+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgYEhFQURgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGEgYEJsb2JgIGFuZCByZXR1cm5zXG4gICAqIHRoZSByZXNwb25zZSBhcyBhIGBCbG9iYC5cbiAgICpcbiAgICogQHBhcmFtIHVybCAgICAgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIEhUVFAgb3B0aW9ucyB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QuXG4gICAqXG4gICAqIEByZXR1cm4gIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgcmVzcG9uc2UsIHdpdGggdGhlIHJlc3BvbnNlIGJvZHkgYXMgYSBgQmxvYmAuXG4gICAqL1xuXG4gIGhlYWQoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgICB0cmFuc2ZlckNhY2hlPzoge2luY2x1ZGVIZWFkZXJzPzogc3RyaW5nW119IHwgYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEJsb2I+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgYEhFQURgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGEgdGV4dCBzdHJpbmcgYW5kIHJldHVybnMgdGhlIHJlc3BvbnNlXG4gICAqIGFzIGEgc3RyaW5nIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsICAgICBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgSFRUUCBvcHRpb25zIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgdGhlIHJlc3BvbnNlLCB3aXRoIHRoZSByZXNwb25zZSBib2R5IG9mIHR5cGUgc3RyaW5nLlxuICAgKi9cbiAgaGVhZChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiB7aW5jbHVkZUhlYWRlcnM/OiBzdHJpbmdbXX0gfCBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBIRUFEYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBhbiAgYEFycmF5QnVmZmVyYFxuICAgKiAgYW5kIHJldHVybnMgdGhlIGZ1bGwgZXZlbnQgc3RyZWFtLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsICAgICBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgSFRUUCBvcHRpb25zIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgYWxsIGBIdHRwRXZlbnRgcyBmb3IgdGhlIHJlcXVlc3QsXG4gICAqIHdpdGggdGhlIHJlc3BvbnNlIGJvZHkgYXMgYW4gYEFycmF5QnVmZmVyYC5cbiAgICovXG4gIGhlYWQoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiB7aW5jbHVkZUhlYWRlcnM/OiBzdHJpbmdbXX0gfCBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PEFycmF5QnVmZmVyPj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgSEVBRGAgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgYSBgQmxvYmAgYW5kXG4gICAqIHJldHVybnMgdGhlIGZ1bGwgZXZlbnQgc3RyZWFtLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsICAgICBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgSFRUUCBvcHRpb25zIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgYWxsIGBIdHRwRXZlbnRgcyBmb3IgdGhlIHJlcXVlc3QsXG4gICAqIHdpdGggdGhlIHJlc3BvbnNlIGJvZHkgYXMgYSBgQmxvYmAuXG4gICAqL1xuICBoZWFkKFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiB7aW5jbHVkZUhlYWRlcnM/OiBzdHJpbmdbXX0gfCBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PEJsb2I+PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBIRUFEYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBhIHRleHQgc3RyaW5nXG4gICAqIGFuZCByZXR1cm5zIHRoZSBmdWxsIGV2ZW50IHN0cmVhbS5cbiAgICpcbiAgICogQHBhcmFtIHVybCAgICAgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIG9wdGlvbnMgVGhlIEhUVFAgb3B0aW9ucyB0byBzZW5kIHdpdGggdGhlIHJlcXVlc3QuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIGFsbCBgSHR0cEV2ZW50YHMgZm9yIHRoZSByZXF1ZXN0LCB3aXRoIHRoZSByZXNwb25zZSBib2R5IG9mIHR5cGVcbiAgICogc3RyaW5nLlxuICAgKi9cbiAgaGVhZChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgICB0cmFuc2ZlckNhY2hlPzoge2luY2x1ZGVIZWFkZXJzPzogc3RyaW5nW119IHwgYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxzdHJpbmc+PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBIRUFEYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBKU09OXG4gICAqIGFuZCByZXR1cm5zIHRoZSBmdWxsIEhUVFAgZXZlbnQgc3RyZWFtLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsICAgICBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgSFRUUCBvcHRpb25zIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgYWxsIGBIdHRwRXZlbnRgcyBmb3IgdGhlIHJlcXVlc3QsIHdpdGggYSByZXNwb25zZSBib2R5IG9mXG4gICAqIHR5cGUgYE9iamVjdGAuXG4gICAqL1xuICBoZWFkKFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgICB0cmFuc2ZlckNhY2hlPzoge2luY2x1ZGVIZWFkZXJzPzogc3RyaW5nW119IHwgYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxPYmplY3Q+PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBIRUFEYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBKU09OIGFuZFxuICAgKiByZXR1cm5zIHRoZSBmdWxsIGV2ZW50IHN0cmVhbS5cbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgYWxsIHRoZSBgSHR0cEV2ZW50YHMgZm9yIHRoZSByZXF1ZXN0LFxuICAgKiB3aXRoIGEgcmVzcG9uc2UgYm9keSBpbiB0aGUgcmVxdWVzdGVkIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgICAgIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBIVFRQIG9wdGlvbnMgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxuICAgKi9cbiAgaGVhZDxUPihcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgICAgdHJhbnNmZXJDYWNoZT86IHtpbmNsdWRlSGVhZGVycz86IHN0cmluZ1tdfSB8IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8VD4+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgYEhFQURgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGFuIGBBcnJheUJ1ZmZlcmBcbiAgICogIGFuZCByZXR1cm5zIHRoZSBmdWxsIEhUVFAgcmVzcG9uc2UuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgICAgIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBIVFRQIG9wdGlvbnMgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgYEh0dHBSZXNwb25zZWAgZm9yIHRoZSByZXF1ZXN0LFxuICAgKiB3aXRoIHRoZSByZXNwb25zZSBib2R5IGFzIGFuIGBBcnJheUJ1ZmZlcmAuXG4gICAqL1xuICBoZWFkKFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiB7aW5jbHVkZUhlYWRlcnM/OiBzdHJpbmdbXX0gfCBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEFycmF5QnVmZmVyPj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgSEVBRGAgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgYSBgQmxvYmAgYW5kIHJldHVybnNcbiAgICogdGhlIGZ1bGwgYEh0dHBSZXNwb25zZWAuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgICAgIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBIVFRQIG9wdGlvbnMgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgYEh0dHBSZXNwb25zZWAgZm9yIHRoZSByZXF1ZXN0LFxuICAgKiB3aXRoIHRoZSByZXNwb25zZSBib2R5IGFzIGEgYmxvYi5cbiAgICovXG4gIGhlYWQoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgICB0cmFuc2ZlckNhY2hlPzoge2luY2x1ZGVIZWFkZXJzPzogc3RyaW5nW119IHwgYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxCbG9iPj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgSEVBRGAgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgdGV4dCBzdHJlYW1cbiAgICogYW5kIHJldHVybnMgdGhlIGZ1bGwgYEh0dHBSZXNwb25zZWAuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgICAgIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBIVFRQIG9wdGlvbnMgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgYEh0dHBSZXNwb25zZWAgZm9yIHRoZSByZXF1ZXN0LFxuICAgKiB3aXRoIHRoZSByZXNwb25zZSBib2R5IG9mIHR5cGUgc3RyaW5nLlxuICAgKi9cbiAgaGVhZChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiB7aW5jbHVkZUhlYWRlcnM/OiBzdHJpbmdbXX0gfCBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPHN0cmluZz4+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgYEhFQURgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIEpTT04gYW5kXG4gICAqIHJldHVybnMgdGhlIGZ1bGwgYEh0dHBSZXNwb25zZWAuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgICAgIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBIVFRQIG9wdGlvbnMgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgYEh0dHBSZXNwb25zZWAgZm9yIHRoZSByZXF1ZXN0LFxuICAgKiB3aXRoIHRoZSByZXNwb25zZSBib2R5IG9mIHR5cGUgYE9iamVjdGAuXG4gICAqL1xuICBoZWFkKFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiB7aW5jbHVkZUhlYWRlcnM/OiBzdHJpbmdbXX0gfCBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPE9iamVjdD4+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgYEhFQURgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIEpTT05cbiAgICogYW5kIHJldHVybnMgdGhlIGZ1bGwgYEh0dHBSZXNwb25zZWAuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgICAgIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBIVFRQIG9wdGlvbnMgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgYEh0dHBSZXNwb25zZWAgZm9yIHRoZSByZXF1ZXN0LFxuICAgKiB3aXRoIGEgcmVzcG9uc2UgYm9keSBvZiB0aGUgcmVxdWVzdGVkIHR5cGUuXG4gICAqL1xuICBoZWFkPFQ+KFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiB7aW5jbHVkZUhlYWRlcnM/OiBzdHJpbmdbXX0gfCBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPFQ+PjtcblxuICAvKipcblxuICAgKiBDb25zdHJ1Y3RzIGEgYEhFQURgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIEpTT04gYW5kXG4gICAqIHJldHVybnMgdGhlIHJlc3BvbnNlIGJvZHkgYXMgYW4gb2JqZWN0IHBhcnNlZCBmcm9tIEpTT04uXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgICAgIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBIVFRQIG9wdGlvbnMgdG8gc2VuZCB3aXRoIHRoZSByZXF1ZXN0LlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgcmVzcG9uc2UsIHdpdGggdGhlIHJlc3BvbnNlIGJvZHkgYXMgYW4gb2JqZWN0IHBhcnNlZCBmcm9tIEpTT04uXG4gICAqL1xuICBoZWFkKFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgICB0cmFuc2ZlckNhY2hlPzoge2luY2x1ZGVIZWFkZXJzPzogc3RyaW5nW119IHwgYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPE9iamVjdD47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgSEVBRGAgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgSlNPTiBhbmQgcmV0dXJuc1xuICAgKiB0aGUgcmVzcG9uc2UgaW4gYSBnaXZlbiB0eXBlLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsICAgICBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgSFRUUCBvcHRpb25zIHRvIHNlbmQgd2l0aCB0aGUgcmVxdWVzdC5cbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgdGhlIGBIdHRwUmVzcG9uc2VgIGZvciB0aGUgcmVxdWVzdCxcbiAgICogd2l0aCBhIHJlc3BvbnNlIGJvZHkgb2YgdGhlIGdpdmVuIHR5cGUuXG4gICAqL1xuICBoZWFkPFQ+KFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgICB0cmFuc2ZlckNhY2hlPzoge2luY2x1ZGVIZWFkZXJzPzogc3RyaW5nW119IHwgYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPFQ+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGFuIG9ic2VydmFibGUgdGhhdCwgd2hlbiBzdWJzY3JpYmVkLCBjYXVzZXMgdGhlIGNvbmZpZ3VyZWRcbiAgICogYEhFQURgIHJlcXVlc3QgdG8gZXhlY3V0ZSBvbiB0aGUgc2VydmVyLiBUaGUgYEhFQURgIG1ldGhvZCByZXR1cm5zXG4gICAqIG1ldGEgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlc291cmNlIHdpdGhvdXQgdHJhbnNmZXJyaW5nIHRoZVxuICAgKiByZXNvdXJjZSBpdHNlbGYuIFNlZSB0aGUgaW5kaXZpZHVhbCBvdmVybG9hZHMgZm9yXG4gICAqIGRldGFpbHMgb24gdGhlIHJldHVybiB0eXBlLlxuICAgKi9cbiAgaGVhZChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JyB8ICdldmVudHMnIHwgJ3Jlc3BvbnNlJztcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgICAgdHJhbnNmZXJDYWNoZT86IHtpbmNsdWRlSGVhZGVycz86IHN0cmluZ1tdfSB8IGJvb2xlYW47XG4gICAgfSA9IHt9LFxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8YW55PignSEVBRCcsIHVybCwgb3B0aW9ucyBhcyBhbnkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgSlNPTlBgIHJlcXVlc3QgZm9yIHRoZSBnaXZlbiBVUkwgYW5kIG5hbWUgb2YgdGhlIGNhbGxiYWNrIHBhcmFtZXRlci5cbiAgICpcbiAgICogQHBhcmFtIHVybCBUaGUgcmVzb3VyY2UgVVJMLlxuICAgKiBAcGFyYW0gY2FsbGJhY2tQYXJhbSBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gbmFtZS5cbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgdGhlIHJlc3BvbnNlIG9iamVjdCwgd2l0aCByZXNwb25zZSBib2R5IGFzIGFuIG9iamVjdC5cbiAgICovXG4gIGpzb25wKHVybDogc3RyaW5nLCBjYWxsYmFja1BhcmFtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPE9iamVjdD47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgSlNPTlBgIHJlcXVlc3QgZm9yIHRoZSBnaXZlbiBVUkwgYW5kIG5hbWUgb2YgdGhlIGNhbGxiYWNrIHBhcmFtZXRlci5cbiAgICpcbiAgICogQHBhcmFtIHVybCBUaGUgcmVzb3VyY2UgVVJMLlxuICAgKiBAcGFyYW0gY2FsbGJhY2tQYXJhbSBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gbmFtZS5cbiAgICpcbiAgICogWW91IG11c3QgaW5zdGFsbCBhIHN1aXRhYmxlIGludGVyY2VwdG9yLCBzdWNoIGFzIG9uZSBwcm92aWRlZCBieSBgSHR0cENsaWVudEpzb25wTW9kdWxlYC5cbiAgICogSWYgbm8gc3VjaCBpbnRlcmNlcHRvciBpcyByZWFjaGVkLFxuICAgKiB0aGVuIHRoZSBgSlNPTlBgIHJlcXVlc3QgY2FuIGJlIHJlamVjdGVkIGJ5IHRoZSBjb25maWd1cmVkIGJhY2tlbmQuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSByZXNwb25zZSBvYmplY3QsIHdpdGggcmVzcG9uc2UgYm9keSBpbiB0aGUgcmVxdWVzdGVkIHR5cGUuXG4gICAqL1xuICBqc29ucDxUPih1cmw6IHN0cmluZywgY2FsbGJhY2tQYXJhbTogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhbiBgT2JzZXJ2YWJsZWAgdGhhdCwgd2hlbiBzdWJzY3JpYmVkLCBjYXVzZXMgYSByZXF1ZXN0IHdpdGggdGhlIHNwZWNpYWwgbWV0aG9kXG4gICAqIGBKU09OUGAgdG8gYmUgZGlzcGF0Y2hlZCB2aWEgdGhlIGludGVyY2VwdG9yIHBpcGVsaW5lLlxuICAgKiBUaGUgW0pTT05QIHBhdHRlcm5dKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0pTT05QKSB3b3JrcyBhcm91bmQgbGltaXRhdGlvbnMgb2YgY2VydGFpblxuICAgKiBBUEkgZW5kcG9pbnRzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBuZXdlcixcbiAgICogYW5kIHByZWZlcmFibGUgW0NPUlNdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUVFAvQ09SUykgcHJvdG9jb2wuXG4gICAqIEpTT05QIHRyZWF0cyB0aGUgZW5kcG9pbnQgQVBJIGFzIGEgSmF2YVNjcmlwdCBmaWxlIGFuZCB0cmlja3MgdGhlIGJyb3dzZXIgdG8gcHJvY2VzcyB0aGVcbiAgICogcmVxdWVzdHMgZXZlbiBpZiB0aGUgQVBJIGVuZHBvaW50IGlzIG5vdCBsb2NhdGVkIG9uIHRoZSBzYW1lIGRvbWFpbiAob3JpZ2luKSBhcyB0aGUgY2xpZW50LXNpZGVcbiAgICogYXBwbGljYXRpb24gbWFraW5nIHRoZSByZXF1ZXN0LlxuICAgKiBUaGUgZW5kcG9pbnQgQVBJIG11c3Qgc3VwcG9ydCBKU09OUCBjYWxsYmFjayBmb3IgSlNPTlAgcmVxdWVzdHMgdG8gd29yay5cbiAgICogVGhlIHJlc291cmNlIEFQSSByZXR1cm5zIHRoZSBKU09OIHJlc3BvbnNlIHdyYXBwZWQgaW4gYSBjYWxsYmFjayBmdW5jdGlvbi5cbiAgICogWW91IGNhbiBwYXNzIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBuYW1lIGFzIG9uZSBvZiB0aGUgcXVlcnkgcGFyYW1ldGVycy5cbiAgICogTm90ZSB0aGF0IEpTT05QIHJlcXVlc3RzIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBgR0VUYCByZXF1ZXN0cy5cbiAgICpcbiAgICogQHBhcmFtIHVybCBUaGUgcmVzb3VyY2UgVVJMLlxuICAgKiBAcGFyYW0gY2FsbGJhY2tQYXJhbSBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gbmFtZS5cbiAgICpcbiAgICovXG4gIGpzb25wPFQ+KHVybDogc3RyaW5nLCBjYWxsYmFja1BhcmFtOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0PGFueT4oJ0pTT05QJywgdXJsLCB7XG4gICAgICBwYXJhbXM6IG5ldyBIdHRwUGFyYW1zKCkuYXBwZW5kKGNhbGxiYWNrUGFyYW0sICdKU09OUF9DQUxMQkFDSycpLFxuICAgICAgb2JzZXJ2ZTogJ2JvZHknLFxuICAgICAgcmVzcG9uc2VUeXBlOiAnanNvbicsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhbiBgT1BUSU9OU2AgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgYW5cbiAgICogYEFycmF5QnVmZmVyYCBhbmQgcmV0dXJucyB0aGUgcmVzcG9uc2UgYXMgYW4gYEFycmF5QnVmZmVyYC5cbiAgICpcbiAgICogQHBhcmFtIHVybCBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBIVFRQIG9wdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSByZXNwb25zZSwgd2l0aCB0aGUgcmVzcG9uc2UgYm9keSBhcyBhbiBgQXJyYXlCdWZmZXJgLlxuICAgKi9cbiAgb3B0aW9ucyhcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxBcnJheUJ1ZmZlcj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYW4gYE9QVElPTlNgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGEgYEJsb2JgIGFuZCByZXR1cm5zXG4gICAqIHRoZSByZXNwb25zZSBhcyBhIGBCbG9iYC5cbiAgICpcbiAgICogQHBhcmFtIHVybCBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBIVFRQIG9wdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSByZXNwb25zZSwgd2l0aCB0aGUgcmVzcG9uc2UgYm9keSBhcyBhIGBCbG9iYC5cbiAgICovXG4gIG9wdGlvbnMoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxCbG9iPjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhbiBgT1BUSU9OU2AgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgYSB0ZXh0IHN0cmluZyBhbmRcbiAgICogcmV0dXJucyBhIHN0cmluZyB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHVybCBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBIVFRQIG9wdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSByZXNwb25zZSwgd2l0aCB0aGUgcmVzcG9uc2UgYm9keSBvZiB0eXBlIHN0cmluZy5cbiAgICovXG4gIG9wdGlvbnMoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGFuIGBPUFRJT05TYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBhbiBgQXJyYXlCdWZmZXJgXG4gICAqICBhbmQgcmV0dXJucyB0aGUgZnVsbCBldmVudCBzdHJlYW0uXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuICBBbiBgT2JzZXJ2YWJsZWAgb2YgYWxsIGBIdHRwRXZlbnRgcyBmb3IgdGhlIHJlcXVlc3QsXG4gICAqIHdpdGggdGhlIHJlc3BvbnNlIGJvZHkgYXMgYW4gYEFycmF5QnVmZmVyYC5cbiAgICovXG4gIG9wdGlvbnMoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxBcnJheUJ1ZmZlcj4+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGFuIGBPUFRJT05TYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBhIGBCbG9iYCBhbmRcbiAgICogcmV0dXJucyB0aGUgZnVsbCBldmVudCBzdHJlYW0uXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiBhbGwgYEh0dHBFdmVudGBzIGZvciB0aGUgcmVxdWVzdCxcbiAgICogd2l0aCB0aGUgcmVzcG9uc2UgYm9keSBhcyBhIGBCbG9iYC5cbiAgICovXG4gIG9wdGlvbnMoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PEJsb2I+PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhbiBgT1BUSU9OU2AgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgYSB0ZXh0IHN0cmluZ1xuICAgKiBhbmQgcmV0dXJucyB0aGUgZnVsbCBldmVudCBzdHJlYW0uXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiBhbGwgdGhlIGBIdHRwRXZlbnRgcyBmb3IgdGhlIHJlcXVlc3QsXG4gICAqIHdpdGggdGhlIHJlc3BvbnNlIGJvZHkgb2YgdHlwZSBzdHJpbmcuXG4gICAqL1xuICBvcHRpb25zKFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxzdHJpbmc+PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhbiBgT1BUSU9OU2AgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgSlNPTlxuICAgKiBhbmQgcmV0dXJucyB0aGUgZnVsbCBldmVudCBzdHJlYW0uXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiBhbGwgdGhlIGBIdHRwRXZlbnRgcyBmb3IgdGhlIHJlcXVlc3Qgd2l0aCB0aGUgcmVzcG9uc2VcbiAgICogYm9keSBvZiB0eXBlIGBPYmplY3RgLlxuICAgKi9cbiAgb3B0aW9ucyhcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PE9iamVjdD4+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGFuIGBPUFRJT05TYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBKU09OIGFuZFxuICAgKiByZXR1cm5zIHRoZSBmdWxsIGV2ZW50IHN0cmVhbS5cbiAgICpcbiAgICogQHBhcmFtIHVybCBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBIVFRQIG9wdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIGFsbCB0aGUgYEh0dHBFdmVudGBzIGZvciB0aGUgcmVxdWVzdCxcbiAgICogd2l0aCBhIHJlc3BvbnNlIGJvZHkgaW4gdGhlIHJlcXVlc3RlZCB0eXBlLlxuICAgKi9cbiAgb3B0aW9uczxUPihcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PFQ+PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhbiBgT1BUSU9OU2AgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgYW4gYEFycmF5QnVmZmVyYFxuICAgKiAgYW5kIHJldHVybnMgdGhlIGZ1bGwgSFRUUCByZXNwb25zZS5cbiAgICpcbiAgICogQHBhcmFtIHVybCBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBIVFRQIG9wdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSBgSHR0cFJlc3BvbnNlYCBmb3IgdGhlIHJlcXVlc3QsXG4gICAqIHdpdGggdGhlIHJlc3BvbnNlIGJvZHkgYXMgYW4gYEFycmF5QnVmZmVyYC5cbiAgICovXG4gIG9wdGlvbnMoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEFycmF5QnVmZmVyPj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYW4gYE9QVElPTlNgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGEgYEJsb2JgXG4gICAqICBhbmQgcmV0dXJucyB0aGUgZnVsbCBgSHR0cFJlc3BvbnNlYC5cbiAgICpcbiAgICogQHBhcmFtIHVybCBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBIVFRQIG9wdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSBgSHR0cFJlc3BvbnNlYCBmb3IgdGhlIHJlcXVlc3QsXG4gICAqIHdpdGggdGhlIHJlc3BvbnNlIGJvZHkgYXMgYSBgQmxvYmAuXG4gICAqL1xuICBvcHRpb25zKFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEJsb2I+PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhbiBgT1BUSU9OU2AgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgdGV4dCBzdHJlYW1cbiAgICogYW5kIHJldHVybnMgdGhlIGZ1bGwgYEh0dHBSZXNwb25zZWAuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgYEh0dHBSZXNwb25zZWAgZm9yIHRoZSByZXF1ZXN0LFxuICAgKiB3aXRoIHRoZSByZXNwb25zZSBib2R5IG9mIHR5cGUgc3RyaW5nLlxuICAgKi9cbiAgb3B0aW9ucyhcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxzdHJpbmc+PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhbiBgT1BUSU9OU2AgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgSlNPTlxuICAgKiBhbmQgcmV0dXJucyB0aGUgZnVsbCBgSHR0cFJlc3BvbnNlYC5cbiAgICpcbiAgICogQHBhcmFtIHVybCBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBIVFRQIG9wdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSBgSHR0cFJlc3BvbnNlYCBmb3IgdGhlIHJlcXVlc3QsXG4gICAqIHdpdGggdGhlIHJlc3BvbnNlIGJvZHkgb2YgdHlwZSBgT2JqZWN0YC5cbiAgICovXG4gIG9wdGlvbnMoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPE9iamVjdD4+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGFuIGBPUFRJT05TYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBKU09OIGFuZFxuICAgKiByZXR1cm5zIHRoZSBmdWxsIGBIdHRwUmVzcG9uc2VgLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBvcHRpb25zIEhUVFAgb3B0aW9ucy5cbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgdGhlIGBIdHRwUmVzcG9uc2VgIGZvciB0aGUgcmVxdWVzdCxcbiAgICogd2l0aCBhIHJlc3BvbnNlIGJvZHkgaW4gdGhlIHJlcXVlc3RlZCB0eXBlLlxuICAgKi9cbiAgb3B0aW9uczxUPihcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8VD4+O1xuXG4gIC8qKlxuXG4gICAqIENvbnN0cnVjdHMgYW4gYE9QVElPTlNgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIEpTT04gYW5kIHJldHVybnMgdGhlXG4gICAqIHJlc3BvbnNlIGJvZHkgYXMgYW4gb2JqZWN0IHBhcnNlZCBmcm9tIEpTT04uXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgcmVzcG9uc2UsIHdpdGggdGhlIHJlc3BvbnNlIGJvZHkgYXMgYW4gb2JqZWN0IHBhcnNlZCBmcm9tIEpTT04uXG4gICAqL1xuICBvcHRpb25zKFxuICAgIHVybDogc3RyaW5nLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPYmplY3Q+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGFuIGBPUFRJT05TYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBKU09OIGFuZCByZXR1cm5zIHRoZVxuICAgKiByZXNwb25zZSBpbiBhIGdpdmVuIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgYEh0dHBSZXNwb25zZWAsIHdpdGggYSByZXNwb25zZSBib2R5IG9mIHRoZSBnaXZlbiB0eXBlLlxuICAgKi9cbiAgb3B0aW9uczxUPihcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zPzoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8VD47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYW4gYE9ic2VydmFibGVgIHRoYXQsIHdoZW4gc3Vic2NyaWJlZCwgY2F1c2VzIHRoZSBjb25maWd1cmVkXG4gICAqIGBPUFRJT05TYCByZXF1ZXN0IHRvIGV4ZWN1dGUgb24gdGhlIHNlcnZlci4gVGhpcyBtZXRob2QgYWxsb3dzIHRoZSBjbGllbnRcbiAgICogdG8gZGV0ZXJtaW5lIHRoZSBzdXBwb3J0ZWQgSFRUUCBtZXRob2RzIGFuZCBvdGhlciBjYXBhYmlsaXRpZXMgb2YgYW4gZW5kcG9pbnQsXG4gICAqIHdpdGhvdXQgaW1wbHlpbmcgYSByZXNvdXJjZSBhY3Rpb24uIFNlZSB0aGUgaW5kaXZpZHVhbCBvdmVybG9hZHMgZm9yXG4gICAqIGRldGFpbHMgb24gdGhlIHJldHVybiB0eXBlLlxuICAgKi9cbiAgb3B0aW9ucyhcbiAgICB1cmw6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JyB8ICdldmVudHMnIHwgJ3Jlc3BvbnNlJztcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgIH0gPSB7fSxcbiAgKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yZXF1ZXN0PGFueT4oJ09QVElPTlMnLCB1cmwsIG9wdGlvbnMgYXMgYW55KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgYFBBVENIYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBhbiBgQXJyYXlCdWZmZXJgIGFuZCByZXR1cm5zXG4gICAqIHRoZSByZXNwb25zZSBhcyBhbiBgQXJyYXlCdWZmZXJgLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBib2R5IFRoZSByZXNvdXJjZXMgdG8gZWRpdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgcmVzcG9uc2UsIHdpdGggdGhlIHJlc3BvbnNlIGJvZHkgYXMgYW4gYEFycmF5QnVmZmVyYC5cbiAgICovXG4gIHBhdGNoKFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8QXJyYXlCdWZmZXI+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgYFBBVENIYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBhIGBCbG9iYCBhbmQgcmV0dXJucyB0aGUgcmVzcG9uc2VcbiAgICogYXMgYSBgQmxvYmAuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIGJvZHkgVGhlIHJlc291cmNlcyB0byBlZGl0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyBIVFRQIG9wdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSByZXNwb25zZSwgd2l0aCB0aGUgcmVzcG9uc2UgYm9keSBhcyBhIGBCbG9iYC5cbiAgICovXG4gIHBhdGNoKFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxCbG9iPjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBQQVRDSGAgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgYSB0ZXh0IHN0cmluZyBhbmRcbiAgICogcmV0dXJucyB0aGUgcmVzcG9uc2UgYXMgYSBzdHJpbmcgdmFsdWUuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIGJvZHkgVGhlIHJlc291cmNlcyB0byBlZGl0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyBIVFRQIG9wdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSByZXNwb25zZSwgd2l0aCBhIHJlc3BvbnNlIGJvZHkgb2YgdHlwZSBzdHJpbmcuXG4gICAqL1xuICBwYXRjaChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCc7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBQQVRDSGAgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgYW4gYEFycmF5QnVmZmVyYCBhbmRcbiAgICogIHJldHVybnMgdGhlIGZ1bGwgZXZlbnQgc3RyZWFtLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBib2R5IFRoZSByZXNvdXJjZXMgdG8gZWRpdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiBhbGwgdGhlIGBIdHRwRXZlbnRgcyBmb3IgdGhlIHJlcXVlc3QsXG4gICAqIHdpdGggdGhlIHJlc3BvbnNlIGJvZHkgYXMgYW4gYEFycmF5QnVmZmVyYC5cbiAgICovXG5cbiAgcGF0Y2goXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PEFycmF5QnVmZmVyPj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgUEFUQ0hgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGEgYEJsb2JgXG4gICAqICBhbmQgcmV0dXJucyB0aGUgZnVsbCBldmVudCBzdHJlYW0uXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIGJvZHkgVGhlIHJlc291cmNlcyB0byBlZGl0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyBIVFRQIG9wdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIGFsbCB0aGUgYEh0dHBFdmVudGBzIGZvciB0aGUgcmVxdWVzdCwgd2l0aCB0aGVcbiAgICogcmVzcG9uc2UgYm9keSBhcyBgQmxvYmAuXG4gICAqL1xuICBwYXRjaChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxCbG9iPj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgUEFUQ0hgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGEgdGV4dCBzdHJpbmcgYW5kXG4gICAqIHJldHVybnMgdGhlIGZ1bGwgZXZlbnQgc3RyZWFtLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBib2R5IFRoZSByZXNvdXJjZXMgdG8gZWRpdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiBhbGwgdGhlIGBIdHRwRXZlbnRgcyBmb3IgdGhlIHJlcXVlc3QsIHdpdGggYVxuICAgKiByZXNwb25zZSBib2R5IG9mIHR5cGUgc3RyaW5nLlxuICAgKi9cbiAgcGF0Y2goXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8c3RyaW5nPj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgUEFUQ0hgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIEpTT05cbiAgICogYW5kIHJldHVybnMgdGhlIGZ1bGwgZXZlbnQgc3RyZWFtLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBib2R5IFRoZSByZXNvdXJjZXMgdG8gZWRpdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiBhbGwgdGhlIGBIdHRwRXZlbnRgcyBmb3IgdGhlIHJlcXVlc3QsXG4gICAqIHdpdGggYSByZXNwb25zZSBib2R5IG9mIHR5cGUgYE9iamVjdGAuXG4gICAqL1xuICBwYXRjaChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8T2JqZWN0Pj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgUEFUQ0hgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIEpTT05cbiAgICogYW5kIHJldHVybnMgdGhlIGZ1bGwgZXZlbnQgc3RyZWFtLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBib2R5IFRoZSByZXNvdXJjZXMgdG8gZWRpdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiBhbGwgdGhlIGBIdHRwRXZlbnRgcyBmb3IgdGhlIHJlcXVlc3QsXG4gICAqIHdpdGggYSByZXNwb25zZSBib2R5IGluIHRoZSByZXF1ZXN0ZWQgdHlwZS5cbiAgICovXG4gIHBhdGNoPFQ+KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxUPj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgUEFUQ0hgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGFuIGBBcnJheUJ1ZmZlcmBcbiAgICogIGFuZCByZXR1cm5zIHRoZSBmdWxsIGBIdHRwUmVzcG9uc2VgLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBib2R5IFRoZSByZXNvdXJjZXMgdG8gZWRpdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuICBBbiBgT2JzZXJ2YWJsZWAgb2YgdGhlIGBIdHRwUmVzcG9uc2VgIGZvciB0aGUgcmVxdWVzdCxcbiAgICogd2l0aCB0aGUgcmVzcG9uc2UgYm9keSBhcyBhbiBgQXJyYXlCdWZmZXJgLlxuICAgKi9cbiAgcGF0Y2goXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8QXJyYXlCdWZmZXI+PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBQQVRDSGAgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgYSBgQmxvYmAgYW5kIHJldHVybnMgdGhlIGZ1bGxcbiAgICogYEh0dHBSZXNwb25zZWAuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIGJvZHkgVGhlIHJlc291cmNlcyB0byBlZGl0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyBIVFRQIG9wdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm4gIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgYEh0dHBSZXNwb25zZWAgZm9yIHRoZSByZXF1ZXN0LFxuICAgKiB3aXRoIHRoZSByZXNwb25zZSBib2R5IGFzIGEgYEJsb2JgLlxuICAgKi9cbiAgcGF0Y2goXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxCbG9iPj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgUEFUQ0hgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGEgdGV4dCBzdHJlYW0gYW5kIHJldHVybnMgdGhlXG4gICAqIGZ1bGwgYEh0dHBSZXNwb25zZWAuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIGJvZHkgVGhlIHJlc291cmNlcyB0byBlZGl0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyBIVFRQIG9wdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm4gIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgYEh0dHBSZXNwb25zZWAgZm9yIHRoZSByZXF1ZXN0LFxuICAgKiB3aXRoIGEgcmVzcG9uc2UgYm9keSBvZiB0eXBlIHN0cmluZy5cbiAgICovXG4gIHBhdGNoKFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8c3RyaW5nPj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgUEFUQ0hgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIEpTT05cbiAgICogYW5kIHJldHVybnMgdGhlIGZ1bGwgYEh0dHBSZXNwb25zZWAuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIGJvZHkgVGhlIHJlc291cmNlcyB0byBlZGl0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyBIVFRQIG9wdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSBgSHR0cFJlc3BvbnNlYCBmb3IgdGhlIHJlcXVlc3QsXG4gICAqIHdpdGggYSByZXNwb25zZSBib2R5IGluIHRoZSByZXF1ZXN0ZWQgdHlwZS5cbiAgICovXG4gIHBhdGNoKFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPE9iamVjdD4+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgYFBBVENIYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBKU09OXG4gICAqIGFuZCByZXR1cm5zIHRoZSBmdWxsIGBIdHRwUmVzcG9uc2VgLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBib2R5IFRoZSByZXNvdXJjZXMgdG8gZWRpdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgYEh0dHBSZXNwb25zZWAgZm9yIHRoZSByZXF1ZXN0LFxuICAgKiB3aXRoIGEgcmVzcG9uc2UgYm9keSBpbiB0aGUgZ2l2ZW4gdHlwZS5cbiAgICovXG4gIHBhdGNoPFQ+KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPFQ+PjtcblxuICAvKipcblxuICAgKiBDb25zdHJ1Y3RzIGEgYFBBVENIYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBKU09OIGFuZFxuICAgKiByZXR1cm5zIHRoZSByZXNwb25zZSBib2R5IGFzIGFuIG9iamVjdCBwYXJzZWQgZnJvbSBKU09OLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBib2R5IFRoZSByZXNvdXJjZXMgdG8gZWRpdC5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgcmVzcG9uc2UsIHdpdGggdGhlIHJlc3BvbnNlIGJvZHkgYXMgYW4gb2JqZWN0IHBhcnNlZCBmcm9tIEpTT04uXG4gICAqL1xuICBwYXRjaChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM/OiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxPYmplY3Q+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgYFBBVENIYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBKU09OXG4gICAqIGFuZCByZXR1cm5zIHRoZSByZXNwb25zZSBpbiBhIGdpdmVuIHR5cGUuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIGJvZHkgVGhlIHJlc291cmNlcyB0byBlZGl0LlxuICAgKiBAcGFyYW0gb3B0aW9ucyBIVFRQIG9wdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm4gIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgYEh0dHBSZXNwb25zZWAgZm9yIHRoZSByZXF1ZXN0LFxuICAgKiB3aXRoIGEgcmVzcG9uc2UgYm9keSBpbiB0aGUgZ2l2ZW4gdHlwZS5cbiAgICovXG4gIHBhdGNoPFQ+KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPFQ+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGFuIG9ic2VydmFibGUgdGhhdCwgd2hlbiBzdWJzY3JpYmVkLCBjYXVzZXMgdGhlIGNvbmZpZ3VyZWRcbiAgICogYFBBVENIYCByZXF1ZXN0IHRvIGV4ZWN1dGUgb24gdGhlIHNlcnZlci4gU2VlIHRoZSBpbmRpdmlkdWFsIG92ZXJsb2FkcyBmb3JcbiAgICogZGV0YWlscyBvbiB0aGUgcmV0dXJuIHR5cGUuXG4gICAqL1xuICBwYXRjaChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknIHwgJ2V2ZW50cycgfCAncmVzcG9uc2UnO1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2FycmF5YnVmZmVyJyB8ICdibG9iJyB8ICdqc29uJyB8ICd0ZXh0JztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgfSA9IHt9LFxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8YW55PignUEFUQ0gnLCB1cmwsIGFkZEJvZHkob3B0aW9ucywgYm9keSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgUE9TVGAgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgYW4gYEFycmF5QnVmZmVyYCBhbmQgcmV0dXJuc1xuICAgKiBhbiBgQXJyYXlCdWZmZXJgLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBib2R5IFRoZSBjb250ZW50IHRvIHJlcGxhY2Ugd2l0aC5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zLlxuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgcmVzcG9uc2UsIHdpdGggdGhlIHJlc3BvbnNlIGJvZHkgYXMgYW4gYEFycmF5QnVmZmVyYC5cbiAgICovXG4gIHBvc3QoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgICB0cmFuc2ZlckNhY2hlPzoge2luY2x1ZGVIZWFkZXJzPzogc3RyaW5nW119IHwgYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEFycmF5QnVmZmVyPjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBQT1NUYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBhIGBCbG9iYCBhbmQgcmV0dXJucyB0aGVcbiAgICogcmVzcG9uc2UgYXMgYSBgQmxvYmAuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIGJvZHkgVGhlIGNvbnRlbnQgdG8gcmVwbGFjZSB3aXRoLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBIVFRQIG9wdGlvbnNcbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgdGhlIHJlc3BvbnNlLCB3aXRoIHRoZSByZXNwb25zZSBib2R5IGFzIGEgYEJsb2JgLlxuICAgKi9cbiAgcG9zdChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgICAgdHJhbnNmZXJDYWNoZT86IHtpbmNsdWRlSGVhZGVycz86IHN0cmluZ1tdfSB8IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxCbG9iPjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBQT1NUYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBhIHRleHQgc3RyaW5nIGFuZFxuICAgKiByZXR1cm5zIHRoZSByZXNwb25zZSBhcyBhIHN0cmluZyB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHVybCBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gYm9keSBUaGUgY29udGVudCB0byByZXBsYWNlIHdpdGguXG4gICAqIEBwYXJhbSBvcHRpb25zIEhUVFAgb3B0aW9uc1xuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgcmVzcG9uc2UsIHdpdGggYSByZXNwb25zZSBib2R5IG9mIHR5cGUgc3RyaW5nLlxuICAgKi9cbiAgcG9zdChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlOiAndGV4dCc7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgICAgdHJhbnNmZXJDYWNoZT86IHtpbmNsdWRlSGVhZGVycz86IHN0cmluZ1tdfSB8IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgYFBPU1RgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGFuIGBBcnJheUJ1ZmZlcmAgYW5kXG4gICAqIHJldHVybnMgdGhlIGZ1bGwgZXZlbnQgc3RyZWFtLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBib2R5IFRoZSBjb250ZW50IHRvIHJlcGxhY2Ugd2l0aC5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIGFsbCBgSHR0cEV2ZW50YHMgZm9yIHRoZSByZXF1ZXN0LFxuICAgKiB3aXRoIHRoZSByZXNwb25zZSBib2R5IGFzIGFuIGBBcnJheUJ1ZmZlcmAuXG4gICAqL1xuICBwb3N0KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiB7aW5jbHVkZUhlYWRlcnM/OiBzdHJpbmdbXX0gfCBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PEFycmF5QnVmZmVyPj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgUE9TVGAgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgYSBgQmxvYmBcbiAgICogYW5kIHJldHVybnMgdGhlIHJlc3BvbnNlIGluIGFuIG9ic2VydmFibGUgb2YgdGhlIGZ1bGwgZXZlbnQgc3RyZWFtLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBib2R5IFRoZSBjb250ZW50IHRvIHJlcGxhY2Ugd2l0aC5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIGFsbCBgSHR0cEV2ZW50YHMgZm9yIHRoZSByZXF1ZXN0LCB3aXRoIHRoZSByZXNwb25zZSBib2R5IGFzIGBCbG9iYC5cbiAgICovXG4gIHBvc3QoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgICB0cmFuc2ZlckNhY2hlPzoge2luY2x1ZGVIZWFkZXJzPzogc3RyaW5nW119IHwgYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxCbG9iPj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgUE9TVGAgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgYSB0ZXh0IHN0cmluZyBhbmQgcmV0dXJucyB0aGUgZnVsbFxuICAgKiBldmVudCBzdHJlYW0uXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIGJvZHkgVGhlIGNvbnRlbnQgdG8gcmVwbGFjZSB3aXRoLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBIVFRQIG9wdGlvbnNcbiAgICpcbiAgICogQHJldHVybiAgQW4gYE9ic2VydmFibGVgIG9mIGFsbCBgSHR0cEV2ZW50YHMgZm9yIHRoZSByZXF1ZXN0LFxuICAgKiB3aXRoIGEgcmVzcG9uc2UgYm9keSBvZiB0eXBlIHN0cmluZy5cbiAgICovXG4gIHBvc3QoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgICB0cmFuc2ZlckNhY2hlPzoge2luY2x1ZGVIZWFkZXJzPzogc3RyaW5nW119IHwgYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxzdHJpbmc+PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIFBPU1QgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgSlNPTiBhbmQgcmV0dXJucyB0aGUgZnVsbFxuICAgKiBldmVudCBzdHJlYW0uXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIGJvZHkgVGhlIGNvbnRlbnQgdG8gcmVwbGFjZSB3aXRoLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBIVFRQIG9wdGlvbnNcbiAgICpcbiAgICogQHJldHVybiAgQW4gYE9ic2VydmFibGVgIG9mIGFsbCBgSHR0cEV2ZW50YHMgZm9yIHRoZSByZXF1ZXN0LFxuICAgKiB3aXRoIGEgcmVzcG9uc2UgYm9keSBvZiB0eXBlIGBPYmplY3RgLlxuICAgKi9cbiAgcG9zdChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgICB0cmFuc2ZlckNhY2hlPzoge2luY2x1ZGVIZWFkZXJzPzogc3RyaW5nW119IHwgYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxPYmplY3Q+PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIFBPU1QgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgSlNPTiBhbmQgcmV0dXJucyB0aGUgZnVsbFxuICAgKiBldmVudCBzdHJlYW0uXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIGJvZHkgVGhlIGNvbnRlbnQgdG8gcmVwbGFjZSB3aXRoLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBIVFRQIG9wdGlvbnNcbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgYWxsIGBIdHRwRXZlbnRgcyBmb3IgdGhlIHJlcXVlc3QsXG4gICAqIHdpdGggYSByZXNwb25zZSBib2R5IGluIHRoZSByZXF1ZXN0ZWQgdHlwZS5cbiAgICovXG4gIHBvc3Q8VD4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgICAgdHJhbnNmZXJDYWNoZT86IHtpbmNsdWRlSGVhZGVycz86IHN0cmluZ1tdfSB8IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8VD4+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgUE9TVCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBhbiBgQXJyYXlCdWZmZXJgXG4gICAqICBhbmQgcmV0dXJucyB0aGUgZnVsbCBgSHR0cFJlc3BvbnNlYC5cbiAgICpcbiAgICogQHBhcmFtIHVybCBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gYm9keSBUaGUgY29udGVudCB0byByZXBsYWNlIHdpdGguXG4gICAqIEBwYXJhbSBvcHRpb25zIEhUVFAgb3B0aW9uc1xuICAgKlxuICAgKiBAcmV0dXJuICBBbiBgT2JzZXJ2YWJsZWAgb2YgdGhlIGBIdHRwUmVzcG9uc2VgIGZvciB0aGUgcmVxdWVzdCwgd2l0aCB0aGUgcmVzcG9uc2UgYm9keSBhcyBhblxuICAgKiBgQXJyYXlCdWZmZXJgLlxuICAgKi9cbiAgcG9zdChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiB7aW5jbHVkZUhlYWRlcnM/OiBzdHJpbmdbXX0gfCBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEFycmF5QnVmZmVyPj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgUE9TVGAgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgYSBgQmxvYmAgYW5kIHJldHVybnMgdGhlIGZ1bGxcbiAgICogYEh0dHBSZXNwb25zZWAuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIGJvZHkgVGhlIGNvbnRlbnQgdG8gcmVwbGFjZSB3aXRoLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBIVFRQIG9wdGlvbnNcbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgdGhlIGBIdHRwUmVzcG9uc2VgIGZvciB0aGUgcmVxdWVzdCxcbiAgICogd2l0aCB0aGUgcmVzcG9uc2UgYm9keSBhcyBhIGBCbG9iYC5cbiAgICovXG4gIHBvc3QoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2Jsb2InO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiB7aW5jbHVkZUhlYWRlcnM/OiBzdHJpbmdbXX0gfCBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEJsb2I+PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBQT1NUYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBhIHRleHQgc3RyZWFtIGFuZCByZXR1cm5zXG4gICAqIHRoZSBmdWxsIGBIdHRwUmVzcG9uc2VgLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBib2R5IFRoZSBjb250ZW50IHRvIHJlcGxhY2Ugd2l0aC5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zXG4gICAqXG4gICAqIEByZXR1cm4gIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgYEh0dHBSZXNwb25zZWAgZm9yIHRoZSByZXF1ZXN0LFxuICAgKiB3aXRoIGEgcmVzcG9uc2UgYm9keSBvZiB0eXBlIHN0cmluZy5cbiAgICovXG4gIHBvc3QoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiB7aW5jbHVkZUhlYWRlcnM/OiBzdHJpbmdbXX0gfCBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPHN0cmluZz4+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgYFBPU1RgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIEpTT05cbiAgICogYW5kIHJldHVybnMgdGhlIGZ1bGwgYEh0dHBSZXNwb25zZWAuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIGJvZHkgVGhlIGNvbnRlbnQgdG8gcmVwbGFjZSB3aXRoLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBIVFRQIG9wdGlvbnNcbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgdGhlIGBIdHRwUmVzcG9uc2VgIGZvciB0aGUgcmVxdWVzdCwgd2l0aCBhIHJlc3BvbnNlIGJvZHkgb2YgdHlwZVxuICAgKiBgT2JqZWN0YC5cbiAgICovXG4gIHBvc3QoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgICB0cmFuc2ZlckNhY2hlPzoge2luY2x1ZGVIZWFkZXJzPzogc3RyaW5nW119IHwgYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxPYmplY3Q+PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBQT1NUYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBKU09OIGFuZCByZXR1cm5zIHRoZVxuICAgKiBmdWxsIGBIdHRwUmVzcG9uc2VgLlxuICAgKlxuICAgKlxuICAgKiBAcGFyYW0gdXJsIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBib2R5IFRoZSBjb250ZW50IHRvIHJlcGxhY2Ugd2l0aC5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSBgSHR0cFJlc3BvbnNlYCBmb3IgdGhlIHJlcXVlc3QsIHdpdGggYSByZXNwb25zZSBib2R5IGluIHRoZVxuICAgKiByZXF1ZXN0ZWQgdHlwZS5cbiAgICovXG4gIHBvc3Q8VD4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgb2JzZXJ2ZTogJ3Jlc3BvbnNlJztcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdqc29uJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgICB0cmFuc2ZlckNhY2hlPzoge2luY2x1ZGVIZWFkZXJzPzogc3RyaW5nW119IHwgYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxUPj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgUE9TVGAgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgSlNPTlxuICAgKiBhbmQgcmV0dXJucyB0aGUgcmVzcG9uc2UgYm9keSBhcyBhbiBvYmplY3QgcGFyc2VkIGZyb20gSlNPTi5cbiAgICpcbiAgICogQHBhcmFtIHVybCBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gYm9keSBUaGUgY29udGVudCB0byByZXBsYWNlIHdpdGguXG4gICAqIEBwYXJhbSBvcHRpb25zIEhUVFAgb3B0aW9uc1xuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgcmVzcG9uc2UsIHdpdGggdGhlIHJlc3BvbnNlIGJvZHkgYXMgYW4gb2JqZWN0IHBhcnNlZCBmcm9tIEpTT04uXG4gICAqL1xuICBwb3N0KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiB7aW5jbHVkZUhlYWRlcnM/OiBzdHJpbmdbXX0gfCBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T2JqZWN0PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBQT1NUYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBKU09OXG4gICAqIGFuZCByZXR1cm5zIGFuIG9ic2VydmFibGUgb2YgdGhlIHJlc3BvbnNlLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBib2R5IFRoZSBjb250ZW50IHRvIHJlcGxhY2Ugd2l0aC5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zXG4gICAqXG4gICAqIEByZXR1cm4gIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgYEh0dHBSZXNwb25zZWAgZm9yIHRoZSByZXF1ZXN0LCB3aXRoIGEgcmVzcG9uc2UgYm9keSBpbiB0aGVcbiAgICogcmVxdWVzdGVkIHR5cGUuXG4gICAqL1xuICBwb3N0PFQ+KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9ucz86IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBvYnNlcnZlPzogJ2JvZHknO1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICAgIHRyYW5zZmVyQ2FjaGU/OiB7aW5jbHVkZUhlYWRlcnM/OiBzdHJpbmdbXX0gfCBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8VD47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYW4gb2JzZXJ2YWJsZSB0aGF0LCB3aGVuIHN1YnNjcmliZWQsIGNhdXNlcyB0aGUgY29uZmlndXJlZFxuICAgKiBgUE9TVGAgcmVxdWVzdCB0byBleGVjdXRlIG9uIHRoZSBzZXJ2ZXIuIFRoZSBzZXJ2ZXIgcmVzcG9uZHMgd2l0aCB0aGUgbG9jYXRpb24gb2ZcbiAgICogdGhlIHJlcGxhY2VkIHJlc291cmNlLiBTZWUgdGhlIGluZGl2aWR1YWwgb3ZlcmxvYWRzIGZvclxuICAgKiBkZXRhaWxzIG9uIHRoZSByZXR1cm4gdHlwZS5cbiAgICovXG4gIHBvc3QoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JyB8ICdldmVudHMnIHwgJ3Jlc3BvbnNlJztcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZT86ICdhcnJheWJ1ZmZlcicgfCAnYmxvYicgfCAnanNvbicgfCAndGV4dCc7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgICAgdHJhbnNmZXJDYWNoZT86IHtpbmNsdWRlSGVhZGVycz86IHN0cmluZ1tdfSB8IGJvb2xlYW47XG4gICAgfSA9IHt9LFxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVlc3Q8YW55PignUE9TVCcsIHVybCwgYWRkQm9keShvcHRpb25zLCBib2R5KSk7XG4gIH1cblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBQVVRgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGFuIGBBcnJheUJ1ZmZlcmAgYW5kIHJldHVybnMgdGhlXG4gICAqIHJlc3BvbnNlIGFzIGFuIGBBcnJheUJ1ZmZlcmAuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIGJvZHkgVGhlIHJlc291cmNlcyB0byBhZGQvdXBkYXRlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBIVFRQIG9wdGlvbnNcbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgdGhlIHJlc3BvbnNlLCB3aXRoIHRoZSByZXNwb25zZSBib2R5IGFzIGFuIGBBcnJheUJ1ZmZlcmAuXG4gICAqL1xuICBwdXQoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ2FycmF5YnVmZmVyJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxBcnJheUJ1ZmZlcj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgUFVUYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBhIGBCbG9iYCBhbmQgcmV0dXJuc1xuICAgKiB0aGUgcmVzcG9uc2UgYXMgYSBgQmxvYmAuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIGJvZHkgVGhlIHJlc291cmNlcyB0byBhZGQvdXBkYXRlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBIVFRQIG9wdGlvbnNcbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgdGhlIHJlc3BvbnNlLCB3aXRoIHRoZSByZXNwb25zZSBib2R5IGFzIGEgYEJsb2JgLlxuICAgKi9cbiAgcHV0KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxCbG9iPjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBQVVRgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGEgdGV4dCBzdHJpbmcgYW5kXG4gICAqIHJldHVybnMgdGhlIHJlc3BvbnNlIGFzIGEgc3RyaW5nIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBib2R5IFRoZSByZXNvdXJjZXMgdG8gYWRkL3VwZGF0ZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSByZXNwb25zZSwgd2l0aCBhIHJlc3BvbnNlIGJvZHkgb2YgdHlwZSBzdHJpbmcuXG4gICAqL1xuICBwdXQoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgb2JzZXJ2ZT86ICdib2R5JztcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgUFVUYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBhbiBgQXJyYXlCdWZmZXJgIGFuZFxuICAgKiByZXR1cm5zIHRoZSBmdWxsIGV2ZW50IHN0cmVhbS5cbiAgICpcbiAgICogQHBhcmFtIHVybCBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gYm9keSBUaGUgcmVzb3VyY2VzIHRvIGFkZC91cGRhdGUuXG4gICAqIEBwYXJhbSBvcHRpb25zIEhUVFAgb3B0aW9uc1xuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiBhbGwgYEh0dHBFdmVudGBzIGZvciB0aGUgcmVxdWVzdCxcbiAgICogd2l0aCB0aGUgcmVzcG9uc2UgYm9keSBhcyBhbiBgQXJyYXlCdWZmZXJgLlxuICAgKi9cbiAgcHV0KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxBcnJheUJ1ZmZlcj4+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgYFBVVGAgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgYSBgQmxvYmAgYW5kIHJldHVybnMgdGhlIGZ1bGwgZXZlbnRcbiAgICogc3RyZWFtLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBib2R5IFRoZSByZXNvdXJjZXMgdG8gYWRkL3VwZGF0ZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIGFsbCBgSHR0cEV2ZW50YHMgZm9yIHRoZSByZXF1ZXN0LFxuICAgKiB3aXRoIHRoZSByZXNwb25zZSBib2R5IGFzIGEgYEJsb2JgLlxuICAgKi9cbiAgcHV0KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYmxvYic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PEJsb2I+PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBQVVRgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGEgdGV4dCBzdHJpbmcgYW5kIHJldHVybnMgdGhlIGZ1bGwgZXZlbnRcbiAgICogc3RyZWFtLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBib2R5IFRoZSByZXNvdXJjZXMgdG8gYWRkL3VwZGF0ZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIGFsbCBgSHR0cEV2ZW50YHMgZm9yIHRoZSByZXF1ZXN0LCB3aXRoIGEgcmVzcG9uc2UgYm9keVxuICAgKiBvZiB0eXBlIHN0cmluZy5cbiAgICovXG4gIHB1dChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBvYnNlcnZlOiAnZXZlbnRzJztcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIHBhcmFtcz86XG4gICAgICAgIHwgSHR0cFBhcmFtc1xuICAgICAgICB8IHtbcGFyYW06IHN0cmluZ106IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBSZWFkb25seUFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+fTtcbiAgICAgIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbjtcbiAgICAgIHJlc3BvbnNlVHlwZTogJ3RleHQnO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxzdHJpbmc+PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBQVVRgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIEpTT04gYW5kIHJldHVybnMgdGhlIGZ1bGxcbiAgICogZXZlbnQgc3RyZWFtLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBib2R5IFRoZSByZXNvdXJjZXMgdG8gYWRkL3VwZGF0ZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIGFsbCBgSHR0cEV2ZW50YHMgZm9yIHRoZSByZXF1ZXN0LCB3aXRoIGEgcmVzcG9uc2UgYm9keSBvZlxuICAgKiB0eXBlIGBPYmplY3RgLlxuICAgKi9cbiAgcHV0KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6ICdldmVudHMnO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxPYmplY3Q+PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBQVVRgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIEpTT04gYW5kIHJldHVybnMgdGhlXG4gICAqIGZ1bGwgZXZlbnQgc3RyZWFtLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBib2R5IFRoZSByZXNvdXJjZXMgdG8gYWRkL3VwZGF0ZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIGFsbCBgSHR0cEV2ZW50YHMgZm9yIHRoZSByZXF1ZXN0LFxuICAgKiB3aXRoIGEgcmVzcG9uc2UgYm9keSBpbiB0aGUgcmVxdWVzdGVkIHR5cGUuXG4gICAqL1xuICBwdXQ8VD4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zOiB7XG4gICAgICBoZWFkZXJzPzogSHR0cEhlYWRlcnMgfCB7W2hlYWRlcjogc3RyaW5nXTogc3RyaW5nIHwgc3RyaW5nW119O1xuICAgICAgb2JzZXJ2ZTogJ2V2ZW50cyc7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8SHR0cEV2ZW50PFQ+PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBQVVRgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGFuXG4gICAqIGBBcnJheUJ1ZmZlcmAgYW5kIHJldHVybnMgYW4gb2JzZXJ2YWJsZSBvZiB0aGUgZnVsbCBIVFRQIHJlc3BvbnNlLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBib2R5IFRoZSByZXNvdXJjZXMgdG8gYWRkL3VwZGF0ZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSBgSHR0cFJlc3BvbnNlYCBmb3IgdGhlIHJlcXVlc3QsIHdpdGggdGhlIHJlc3BvbnNlIGJvZHkgYXMgYW5cbiAgICogYEFycmF5QnVmZmVyYC5cbiAgICovXG4gIHB1dChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxBcnJheUJ1ZmZlcj4+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgYFBVVGAgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgYSBgQmxvYmAgYW5kIHJldHVybnMgdGhlXG4gICAqIGZ1bGwgSFRUUCByZXNwb25zZS5cbiAgICpcbiAgICogQHBhcmFtIHVybCBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gYm9keSBUaGUgcmVzb3VyY2VzIHRvIGFkZC91cGRhdGUuXG4gICAqIEBwYXJhbSBvcHRpb25zIEhUVFAgb3B0aW9uc1xuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgYEh0dHBSZXNwb25zZWAgZm9yIHRoZSByZXF1ZXN0LFxuICAgKiB3aXRoIHRoZSByZXNwb25zZSBib2R5IGFzIGEgYEJsb2JgLlxuICAgKi9cbiAgcHV0KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU6ICdibG9iJztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8QmxvYj4+O1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgYFBVVGAgcmVxdWVzdCB0aGF0IGludGVycHJldHMgdGhlIGJvZHkgYXMgYSB0ZXh0IHN0cmVhbSBhbmQgcmV0dXJucyB0aGVcbiAgICogZnVsbCBIVFRQIHJlc3BvbnNlLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBib2R5IFRoZSByZXNvdXJjZXMgdG8gYWRkL3VwZGF0ZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSBgSHR0cFJlc3BvbnNlYCBmb3IgdGhlIHJlcXVlc3QsIHdpdGggYSByZXNwb25zZSBib2R5IG9mIHR5cGVcbiAgICogc3RyaW5nLlxuICAgKi9cbiAgcHV0KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIG9ic2VydmU6ICdyZXNwb25zZSc7XG4gICAgICBjb250ZXh0PzogSHR0cENvbnRleHQ7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU6ICd0ZXh0JztcbiAgICAgIHdpdGhDcmVkZW50aWFscz86IGJvb2xlYW47XG4gICAgfSxcbiAgKTogT2JzZXJ2YWJsZTxIdHRwUmVzcG9uc2U8c3RyaW5nPj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgUFVUYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBKU09OIGFuZCByZXR1cm5zIHRoZSBmdWxsXG4gICAqIEhUVFAgcmVzcG9uc2UuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIGJvZHkgVGhlIHJlc291cmNlcyB0byBhZGQvdXBkYXRlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBIVFRQIG9wdGlvbnNcbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgdGhlIGBIdHRwUmVzcG9uc2VgIGZvciB0aGUgcmVxdWVzdCwgd2l0aCBhIHJlc3BvbnNlIGJvZHlcbiAgICogb2YgdHlwZSAnT2JqZWN0YC5cbiAgICovXG4gIHB1dChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxPYmplY3Q+PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBQVVRgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGFuIGluc3RhbmNlIG9mIHRoZSByZXF1ZXN0ZWQgdHlwZSBhbmRcbiAgICogcmV0dXJucyB0aGUgZnVsbCBIVFRQIHJlc3BvbnNlLlxuICAgKlxuICAgKiBAcGFyYW0gdXJsIFRoZSBlbmRwb2ludCBVUkwuXG4gICAqIEBwYXJhbSBib2R5IFRoZSByZXNvdXJjZXMgdG8gYWRkL3VwZGF0ZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgSFRUUCBvcHRpb25zXG4gICAqXG4gICAqIEByZXR1cm4gQW4gYE9ic2VydmFibGVgIG9mIHRoZSBgSHR0cFJlc3BvbnNlYCBmb3IgdGhlIHJlcXVlc3QsXG4gICAqIHdpdGggYSByZXNwb25zZSBib2R5IGluIHRoZSByZXF1ZXN0ZWQgdHlwZS5cbiAgICovXG4gIHB1dDxUPihcbiAgICB1cmw6IHN0cmluZyxcbiAgICBib2R5OiBhbnkgfCBudWxsLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGhlYWRlcnM/OiBIdHRwSGVhZGVycyB8IHtbaGVhZGVyOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gICAgICBvYnNlcnZlOiAncmVzcG9uc2UnO1xuICAgICAgY29udGV4dD86IEh0dHBDb250ZXh0O1xuICAgICAgcGFyYW1zPzpcbiAgICAgICAgfCBIdHRwUGFyYW1zXG4gICAgICAgIHwge1twYXJhbTogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IFJlYWRvbmx5QXJyYXk8c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbj59O1xuICAgICAgcmVwb3J0UHJvZ3Jlc3M/OiBib29sZWFuO1xuICAgICAgcmVzcG9uc2VUeXBlPzogJ2pzb24nO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICB9LFxuICApOiBPYnNlcnZhYmxlPEh0dHBSZXNwb25zZTxUPj47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBgUFVUYCByZXF1ZXN0IHRoYXQgaW50ZXJwcmV0cyB0aGUgYm9keSBhcyBKU09OXG4gICAqIGFuZCByZXR1cm5zIGFuIG9ic2VydmFibGUgb2YgSmF2YVNjcmlwdCBvYmplY3QuXG4gICAqXG4gICAqIEBwYXJhbSB1cmwgVGhlIGVuZHBvaW50IFVSTC5cbiAgICogQHBhcmFtIGJvZHkgVGhlIHJlc291cmNlcyB0byBhZGQvdXBkYXRlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBIVFRQIG9wdGlvbnNcbiAgICpcbiAgICogQHJldHVybiBBbiBgT2JzZXJ2YWJsZWAgb2YgdGhlIHJlc3BvbnNlIGFzIGEgSmF2YVNjcmlwdCBvYmplY3QuXG4gICAqL1xuICBwdXQoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zPzoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8T2JqZWN0PjtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGBQVVRgIHJlcXVlc3QgdGhhdCBpbnRlcnByZXRzIHRoZSBib2R5IGFzIGFuIGluc3RhbmNlIG9mIHRoZSByZXF1ZXN0ZWQgdHlwZVxuICAgKiBhbmQgcmV0dXJucyBhbiBvYnNlcnZhYmxlIG9mIHRoZSByZXF1ZXN0ZWQgdHlwZS5cbiAgICpcbiAgICogQHBhcmFtIHVybCBUaGUgZW5kcG9pbnQgVVJMLlxuICAgKiBAcGFyYW0gYm9keSBUaGUgcmVzb3VyY2VzIHRvIGFkZC91cGRhdGUuXG4gICAqIEBwYXJhbSBvcHRpb25zIEhUVFAgb3B0aW9uc1xuICAgKlxuICAgKiBAcmV0dXJuIEFuIGBPYnNlcnZhYmxlYCBvZiB0aGUgcmVxdWVzdGVkIHR5cGUuXG4gICAqL1xuICBwdXQ8VD4oXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgYm9keTogYW55IHwgbnVsbCxcbiAgICBvcHRpb25zPzoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIG9ic2VydmU/OiAnYm9keSc7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU/OiAnanNvbic7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xuICAgIH0sXG4gICk6IE9ic2VydmFibGU8VD47XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYW4gb2JzZXJ2YWJsZSB0aGF0LCB3aGVuIHN1YnNjcmliZWQsIGNhdXNlcyB0aGUgY29uZmlndXJlZFxuICAgKiBgUFVUYCByZXF1ZXN0IHRvIGV4ZWN1dGUgb24gdGhlIHNlcnZlci4gVGhlIGBQVVRgIG1ldGhvZCByZXBsYWNlcyBhbiBleGlzdGluZyByZXNvdXJjZVxuICAgKiB3aXRoIGEgbmV3IHNldCBvZiB2YWx1ZXMuXG4gICAqIFNlZSB0aGUgaW5kaXZpZHVhbCBvdmVybG9hZHMgZm9yIGRldGFpbHMgb24gdGhlIHJldHVybiB0eXBlLlxuICAgKi9cbiAgcHV0KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IGFueSB8IG51bGwsXG4gICAgb3B0aW9uczoge1xuICAgICAgaGVhZGVycz86IEh0dHBIZWFkZXJzIHwge1toZWFkZXI6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfTtcbiAgICAgIGNvbnRleHQ/OiBIdHRwQ29udGV4dDtcbiAgICAgIG9ic2VydmU/OiAnYm9keScgfCAnZXZlbnRzJyB8ICdyZXNwb25zZSc7XG4gICAgICBwYXJhbXM/OlxuICAgICAgICB8IEh0dHBQYXJhbXNcbiAgICAgICAgfCB7W3BhcmFtOiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgUmVhZG9ubHlBcnJheTxzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuPn07XG4gICAgICByZXBvcnRQcm9ncmVzcz86IGJvb2xlYW47XG4gICAgICByZXNwb25zZVR5cGU/OiAnYXJyYXlidWZmZXInIHwgJ2Jsb2InIHwgJ2pzb24nIHwgJ3RleHQnO1xuICAgICAgd2l0aENyZWRlbnRpYWxzPzogYm9vbGVhbjtcbiAgICB9ID0ge30sXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucmVxdWVzdDxhbnk+KCdQVVQnLCB1cmwsIGFkZEJvZHkob3B0aW9ucywgYm9keSkpO1xuICB9XG59XG4iXX0=