@pinerohit11/testwidget 0.1.18 → 0.1.19

Sign up to get free protection for your applications and to get access to all the features.
Files changed (273) hide show
  1. package/.next/app-build-manifest.json +0 -5
  2. package/.next/cache/webpack/client-development/0.pack.gz +0 -0
  3. package/.next/cache/webpack/client-development/1.pack.gz +0 -0
  4. package/.next/cache/webpack/client-development/10.pack.gz +0 -0
  5. package/.next/cache/webpack/client-development/11.pack.gz +0 -0
  6. package/.next/cache/webpack/client-development/12.pack.gz +0 -0
  7. package/.next/cache/webpack/client-development/13.pack.gz +0 -0
  8. package/.next/cache/webpack/client-development/2.pack.gz +0 -0
  9. package/.next/cache/webpack/client-development/3.pack.gz +0 -0
  10. package/.next/cache/webpack/client-development/4.pack.gz +0 -0
  11. package/.next/cache/webpack/client-development/5.pack.gz +0 -0
  12. package/.next/cache/webpack/client-development/6.pack.gz +0 -0
  13. package/.next/cache/webpack/client-development/7.pack.gz +0 -0
  14. package/.next/cache/webpack/client-development/8.pack.gz +0 -0
  15. package/.next/cache/webpack/client-development/9.pack.gz +0 -0
  16. package/.next/cache/webpack/client-development/index.pack.gz +0 -0
  17. package/.next/cache/webpack/client-development/index.pack.gz.old +0 -0
  18. package/.next/cache/webpack/server-development/0.pack.gz +0 -0
  19. package/.next/cache/webpack/server-development/1.pack.gz +0 -0
  20. package/.next/cache/webpack/server-development/10.pack.gz +0 -0
  21. package/.next/cache/webpack/server-development/11.pack.gz +0 -0
  22. package/.next/cache/webpack/server-development/12.pack.gz +0 -0
  23. package/.next/cache/webpack/server-development/13.pack.gz +0 -0
  24. package/.next/cache/webpack/server-development/2.pack.gz +0 -0
  25. package/.next/cache/webpack/server-development/3.pack.gz +0 -0
  26. package/.next/cache/webpack/server-development/4.pack.gz +0 -0
  27. package/.next/cache/webpack/server-development/5.pack.gz +0 -0
  28. package/.next/cache/webpack/server-development/6.pack.gz +0 -0
  29. package/.next/cache/webpack/server-development/7.pack.gz +0 -0
  30. package/.next/cache/webpack/server-development/8.pack.gz +0 -0
  31. package/.next/cache/webpack/server-development/9.pack.gz +0 -0
  32. package/.next/cache/webpack/server-development/index.pack.gz +0 -0
  33. package/.next/cache/webpack/server-development/index.pack.gz.old +0 -0
  34. package/.next/server/app/_not-found/page.js +47 -13
  35. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  36. package/.next/server/app/page.js +48 -14
  37. package/.next/server/app/page_client-reference-manifest.js +1 -1
  38. package/.next/server/app-paths-manifest.json +0 -1
  39. package/.next/server/vendor-chunks/@babel.js +45 -0
  40. package/.next/server/vendor-chunks/@restart.js +275 -0
  41. package/.next/server/vendor-chunks/bootstrap.js +35 -0
  42. package/.next/server/vendor-chunks/classnames.js +24 -0
  43. package/.next/server/vendor-chunks/dom-helpers.js +215 -0
  44. package/.next/server/vendor-chunks/object-assign.js +25 -0
  45. package/.next/server/vendor-chunks/prop-types.js +67 -0
  46. package/.next/server/vendor-chunks/react-bootstrap.js +195 -0
  47. package/.next/server/vendor-chunks/react-is.js +35 -0
  48. package/.next/server/vendor-chunks/react-transition-group.js +65 -0
  49. package/.next/server/webpack-runtime.js +2 -2
  50. package/.next/static/chunks/app/layout.js +41 -9
  51. package/.next/static/chunks/app/page.js +834 -1
  52. package/.next/static/chunks/webpack.js +1 -1
  53. package/.next/static/css/app/layout.css +5 -2
  54. package/.next/static/css/app/page.css +699 -33
  55. package/.next/static/webpack/31b91c765347fb55.webpack.hot-update.json +1 -0
  56. package/.next/static/webpack/343e03d8261d3d56.webpack.hot-update.json +1 -0
  57. package/.next/static/webpack/511251a6a8797ede.webpack.hot-update.json +1 -0
  58. package/.next/static/webpack/5592a999a18ce828.webpack.hot-update.json +1 -0
  59. package/.next/static/webpack/79fe8ba93a0b810b.webpack.hot-update.json +1 -0
  60. package/.next/static/webpack/7bb361b5246e77d2.webpack.hot-update.json +1 -0
  61. package/.next/static/webpack/8635c08a046e0cc3.webpack.hot-update.json +1 -0
  62. package/.next/static/webpack/9c321599ae8772f6.webpack.hot-update.json +1 -0
  63. package/.next/static/webpack/9e012937cc8b78c3.webpack.hot-update.json +1 -0
  64. package/.next/static/webpack/9f1faeb236a539a7.webpack.hot-update.json +1 -0
  65. package/.next/static/webpack/a32ac07f1f02ef92.webpack.hot-update.json +1 -0
  66. package/.next/static/webpack/a3b2da5299326aea.webpack.hot-update.json +1 -0
  67. package/.next/static/webpack/a40ddad54b6bc90e.webpack.hot-update.json +1 -0
  68. package/.next/static/webpack/a81d8481ae8f1db5.webpack.hot-update.json +1 -0
  69. package/.next/static/webpack/a8e05348c0e655b9.webpack.hot-update.json +1 -0
  70. package/.next/static/webpack/app/{layout.b14b5cb733b2ab00.hot-update.js → layout.2813c5d79542e32e.hot-update.js} +1 -1
  71. package/.next/static/webpack/app/{layout.ef19dedc8664f556.hot-update.js → layout.31b91c765347fb55.hot-update.js} +1 -1
  72. package/.next/static/webpack/app/layout.343e03d8261d3d56.hot-update.js +32 -0
  73. package/.next/static/webpack/app/layout.660742a3b5333202.hot-update.js +22 -0
  74. package/.next/static/webpack/app/{layout.27d92b1ae58910aa.hot-update.js → layout.7dd58225de2c96b1.hot-update.js} +2 -2
  75. package/.next/static/webpack/app/layout.9211406c39b8c7d6.hot-update.js +22 -0
  76. package/.next/static/webpack/app/layout.a8d577cb610891a6.hot-update.js +22 -0
  77. package/.next/static/webpack/app/layout.a8e05348c0e655b9.hot-update.js +22 -0
  78. package/.next/static/webpack/app/layout.df471031cb4836a9.hot-update.js +22 -0
  79. package/.next/static/webpack/app/layout.e7d9eed4488f9850.hot-update.js +22 -0
  80. package/.next/static/webpack/app/layout.eb00615f06d96185.hot-update.js +22 -0
  81. package/.next/static/webpack/app/layout.fa81cc9e0039618f.hot-update.js +22 -0
  82. package/.next/static/webpack/app/page.03ee13d215584d59.hot-update.js +32 -0
  83. package/.next/static/webpack/app/page.05e804a9c98d6744.hot-update.js +32 -0
  84. package/.next/static/webpack/app/page.1c4c3e518f810365.hot-update.js +22 -0
  85. package/.next/static/webpack/app/page.217f0b5265f56be2.hot-update.js +22 -0
  86. package/.next/static/webpack/app/page.21d00cb457913b06.hot-update.js +22 -0
  87. package/.next/static/webpack/app/page.28ebfaec609673ec.hot-update.js +22 -0
  88. package/.next/static/webpack/app/{page.6c5ef9843eacf483.hot-update.js → page.31b91c765347fb55.hot-update.js} +5 -5
  89. package/.next/static/webpack/app/page.3d336feedc5241cc.hot-update.js +22 -0
  90. package/.next/static/webpack/app/page.3de1fe8a6a590578.hot-update.js +22 -0
  91. package/.next/static/webpack/app/page.511251a6a8797ede.hot-update.js +21 -0
  92. package/.next/static/webpack/app/page.5361cbc07110a7d3.hot-update.js +22 -0
  93. package/.next/static/webpack/app/page.55648f4af4cd339a.hot-update.js +22 -0
  94. package/.next/static/webpack/app/page.60b6b08662112fd8.hot-update.js +22 -0
  95. package/.next/static/webpack/app/page.68289df254bc1101.hot-update.js +22 -0
  96. package/.next/static/webpack/app/page.6965c86e8cf1c189.hot-update.js +22 -0
  97. package/.next/static/webpack/app/page.6ee5f39e8d123868.hot-update.js +22 -0
  98. package/.next/static/webpack/app/page.79fe8ba93a0b810b.hot-update.js +22 -0
  99. package/.next/static/webpack/app/page.7bb361b5246e77d2.hot-update.js +1436 -0
  100. package/.next/static/webpack/app/page.8635c08a046e0cc3.hot-update.js +22 -0
  101. package/.next/static/webpack/app/page.9c321599ae8772f6.hot-update.js +22 -0
  102. package/.next/static/webpack/app/page.9f1faeb236a539a7.hot-update.js +22 -0
  103. package/.next/static/webpack/app/page.a32ac07f1f02ef92.hot-update.js +22 -0
  104. package/.next/static/webpack/app/page.a40ddad54b6bc90e.hot-update.js +22 -0
  105. package/.next/static/webpack/app/page.a81d8481ae8f1db5.hot-update.js +22 -0
  106. package/.next/static/webpack/app/{page.cdb27633fb2a188d.hot-update.js → page.a8e05348c0e655b9.hot-update.js} +5 -5
  107. package/.next/static/webpack/app/page.b03ecf92b407ff16.hot-update.js +22 -0
  108. package/.next/static/webpack/app/page.cb073814fceeab04.hot-update.js +22 -0
  109. package/.next/static/webpack/app/page.cb900b98801a8b71.hot-update.js +22 -0
  110. package/.next/static/webpack/app/page.ce5481dea825fd10.hot-update.js +22 -0
  111. package/.next/static/webpack/app/page.dc647358f2db4ecb.hot-update.js +22 -0
  112. package/.next/static/webpack/app/page.df471031cb4836a9.hot-update.js +22 -0
  113. package/.next/static/webpack/app/page.e7d9eed4488f9850.hot-update.js +22 -0
  114. package/.next/static/webpack/app/page.ed88e0eaa00d7b0d.hot-update.js +22 -0
  115. package/.next/static/webpack/app/page.f237070410740d3e.hot-update.js +22 -0
  116. package/.next/static/webpack/app/page.f8210ae9a27d9415.hot-update.js +22 -0
  117. package/.next/static/webpack/app/page.f8cf2c2ac33a1f08.hot-update.js +22 -0
  118. package/.next/static/webpack/app/page.f92b6717ea88db27.hot-update.js +22 -0
  119. package/.next/static/webpack/app/page.fa81cc9e0039618f.hot-update.js +22 -0
  120. package/.next/static/webpack/app/page.facf69ec54a9c1ea.hot-update.js +22 -0
  121. package/.next/static/webpack/app/page.fbec410876605123.hot-update.js +22 -0
  122. package/.next/static/webpack/b03ecf92b407ff16.webpack.hot-update.json +1 -0
  123. package/.next/static/webpack/cb073814fceeab04.webpack.hot-update.json +1 -0
  124. package/.next/static/webpack/cb900b98801a8b71.webpack.hot-update.json +1 -0
  125. package/.next/static/webpack/ce5481dea825fd10.webpack.hot-update.json +1 -0
  126. package/.next/static/webpack/dc647358f2db4ecb.webpack.hot-update.json +1 -0
  127. package/.next/static/webpack/df471031cb4836a9.webpack.hot-update.json +1 -0
  128. package/.next/static/webpack/e7d9eed4488f9850.webpack.hot-update.json +1 -0
  129. package/.next/static/webpack/eb00615f06d96185.webpack.hot-update.json +1 -0
  130. package/.next/static/webpack/ed88e0eaa00d7b0d.webpack.hot-update.json +1 -0
  131. package/.next/static/webpack/f237070410740d3e.webpack.hot-update.json +1 -0
  132. package/.next/static/webpack/f8210ae9a27d9415.webpack.hot-update.json +1 -0
  133. package/.next/static/webpack/f8cf2c2ac33a1f08.webpack.hot-update.json +1 -0
  134. package/.next/static/webpack/f92b6717ea88db27.webpack.hot-update.json +1 -0
  135. package/.next/static/webpack/fa81cc9e0039618f.webpack.hot-update.json +1 -0
  136. package/.next/static/webpack/facf69ec54a9c1ea.webpack.hot-update.json +1 -0
  137. package/.next/static/webpack/fbec410876605123.webpack.hot-update.json +1 -0
  138. package/.next/static/webpack/{webpack.09217bd29f3a8742.hot-update.js → webpack.03ee13d215584d59.hot-update.js} +1 -1
  139. package/.next/static/webpack/{webpack.230183ef62b2b1f3.hot-update.js → webpack.05e804a9c98d6744.hot-update.js} +1 -1
  140. package/.next/static/webpack/{webpack.27d92b1ae58910aa.hot-update.js → webpack.19bfc21a985c41a3.hot-update.js} +1 -1
  141. package/.next/static/webpack/{webpack.2e7b4aa2b22e65d9.hot-update.js → webpack.1c4c3e518f810365.hot-update.js} +1 -1
  142. package/.next/static/webpack/webpack.217f0b5265f56be2.hot-update.js +18 -0
  143. package/.next/static/webpack/webpack.21d00cb457913b06.hot-update.js +18 -0
  144. package/.next/static/webpack/webpack.2813c5d79542e32e.hot-update.js +18 -0
  145. package/.next/static/webpack/webpack.28ebfaec609673ec.hot-update.js +18 -0
  146. package/.next/static/webpack/webpack.31b91c765347fb55.hot-update.js +18 -0
  147. package/.next/static/webpack/webpack.343e03d8261d3d56.hot-update.js +18 -0
  148. package/.next/static/webpack/webpack.3d336feedc5241cc.hot-update.js +18 -0
  149. package/.next/static/webpack/webpack.3de1fe8a6a590578.hot-update.js +18 -0
  150. package/.next/static/webpack/webpack.511251a6a8797ede.hot-update.js +18 -0
  151. package/.next/static/webpack/webpack.5361cbc07110a7d3.hot-update.js +18 -0
  152. package/.next/static/webpack/webpack.55648f4af4cd339a.hot-update.js +18 -0
  153. package/.next/static/webpack/webpack.5592a999a18ce828.hot-update.js +18 -0
  154. package/.next/static/webpack/webpack.60b6b08662112fd8.hot-update.js +18 -0
  155. package/.next/static/webpack/webpack.660742a3b5333202.hot-update.js +18 -0
  156. package/.next/static/webpack/webpack.68289df254bc1101.hot-update.js +18 -0
  157. package/.next/static/webpack/webpack.6965c86e8cf1c189.hot-update.js +18 -0
  158. package/.next/static/webpack/webpack.6ee5f39e8d123868.hot-update.js +18 -0
  159. package/.next/static/webpack/webpack.79fe8ba93a0b810b.hot-update.js +18 -0
  160. package/.next/static/webpack/webpack.7bb361b5246e77d2.hot-update.js +18 -0
  161. package/.next/static/webpack/webpack.7dd58225de2c96b1.hot-update.js +18 -0
  162. package/.next/static/webpack/webpack.8635c08a046e0cc3.hot-update.js +18 -0
  163. package/.next/static/webpack/webpack.9211406c39b8c7d6.hot-update.js +18 -0
  164. package/.next/static/webpack/webpack.9c321599ae8772f6.hot-update.js +18 -0
  165. package/.next/static/webpack/webpack.9e012937cc8b78c3.hot-update.js +18 -0
  166. package/.next/static/webpack/webpack.9f1faeb236a539a7.hot-update.js +18 -0
  167. package/.next/static/webpack/webpack.a32ac07f1f02ef92.hot-update.js +18 -0
  168. package/.next/static/webpack/webpack.a3b2da5299326aea.hot-update.js +18 -0
  169. package/.next/static/webpack/webpack.a40ddad54b6bc90e.hot-update.js +18 -0
  170. package/.next/static/webpack/webpack.a81d8481ae8f1db5.hot-update.js +18 -0
  171. package/.next/static/webpack/webpack.a8d577cb610891a6.hot-update.js +18 -0
  172. package/.next/static/webpack/webpack.a8e05348c0e655b9.hot-update.js +18 -0
  173. package/.next/static/webpack/webpack.b03ecf92b407ff16.hot-update.js +18 -0
  174. package/.next/static/webpack/webpack.cb073814fceeab04.hot-update.js +18 -0
  175. package/.next/static/webpack/webpack.cb900b98801a8b71.hot-update.js +18 -0
  176. package/.next/static/webpack/webpack.ce5481dea825fd10.hot-update.js +18 -0
  177. package/.next/static/webpack/webpack.dc647358f2db4ecb.hot-update.js +18 -0
  178. package/.next/static/webpack/webpack.df471031cb4836a9.hot-update.js +18 -0
  179. package/.next/static/webpack/webpack.e7d9eed4488f9850.hot-update.js +18 -0
  180. package/.next/static/webpack/webpack.eb00615f06d96185.hot-update.js +18 -0
  181. package/.next/static/webpack/webpack.ed88e0eaa00d7b0d.hot-update.js +18 -0
  182. package/.next/static/webpack/webpack.f237070410740d3e.hot-update.js +18 -0
  183. package/.next/static/webpack/webpack.f8210ae9a27d9415.hot-update.js +18 -0
  184. package/.next/static/webpack/webpack.f8cf2c2ac33a1f08.hot-update.js +18 -0
  185. package/.next/static/webpack/webpack.f92b6717ea88db27.hot-update.js +18 -0
  186. package/.next/static/webpack/webpack.fa81cc9e0039618f.hot-update.js +18 -0
  187. package/.next/static/webpack/webpack.facf69ec54a9c1ea.hot-update.js +18 -0
  188. package/.next/static/webpack/webpack.fbec410876605123.hot-update.js +18 -0
  189. package/.next/trace +83 -54
  190. package/dist/index.cjs +249 -221
  191. package/dist/index.css +1 -4
  192. package/dist/index.js +251 -221
  193. package/package.json +1 -1
  194. package/.next/static/webpack/8407cf02bdf4864d.webpack.hot-update.json +0 -1
  195. package/.next/static/webpack/97a9b97618a13104.webpack.hot-update.json +0 -1
  196. package/.next/static/webpack/abe429b78cb2cd5f.webpack.hot-update.json +0 -1
  197. package/.next/static/webpack/app/layout.2f388e6b66349419.hot-update.js +0 -31
  198. package/.next/static/webpack/app/layout.3def483773fe0f90.hot-update.js +0 -31
  199. package/.next/static/webpack/app/layout.4c7ecbad991e36d2.hot-update.js +0 -31
  200. package/.next/static/webpack/app/layout.5ff03b504f4dc152.hot-update.js +0 -31
  201. package/.next/static/webpack/app/layout.8407cf02bdf4864d.hot-update.js +0 -31
  202. package/.next/static/webpack/app/layout.97a9b97618a13104.hot-update.js +0 -31
  203. package/.next/static/webpack/app/layout.abe429b78cb2cd5f.hot-update.js +0 -31
  204. package/.next/static/webpack/app/layout.b62381d4132a6544.hot-update.js +0 -31
  205. package/.next/static/webpack/app/layout.be39acc05eac2b52.hot-update.js +0 -31
  206. package/.next/static/webpack/app/layout.d1cb5fc816df74fd.hot-update.js +0 -42
  207. package/.next/static/webpack/app/layout.e1d7a6f7992b7b70.hot-update.js +0 -31
  208. package/.next/static/webpack/app/page.09217bd29f3a8742.hot-update.js +0 -32
  209. package/.next/static/webpack/app/page.230183ef62b2b1f3.hot-update.js +0 -32
  210. package/.next/static/webpack/app/page.2e7b4aa2b22e65d9.hot-update.js +0 -22
  211. package/.next/static/webpack/app/page.4996a2c64be83d4d.hot-update.js +0 -22
  212. package/.next/static/webpack/app/page.548fbaf72ba2981b.hot-update.js +0 -62
  213. package/.next/static/webpack/app/page.627ec6e86b397d8c.hot-update.js +0 -22
  214. package/.next/static/webpack/app/page.6e5fce9246047620.hot-update.js +0 -22
  215. package/.next/static/webpack/app/page.7f3be6888ceaa76c.hot-update.js +0 -22
  216. package/.next/static/webpack/app/page.7f6a8530b9acce84.hot-update.js +0 -22
  217. package/.next/static/webpack/app/page.8b5683da7fe5505d.hot-update.js +0 -22
  218. package/.next/static/webpack/app/page.bb7fb7004da6fd3f.hot-update.js +0 -22
  219. package/.next/static/webpack/app/page.e7b0af7ee6cbe0d6.hot-update.js +0 -22
  220. package/.next/static/webpack/app/page.e9324f3a66999504.hot-update.js +0 -22
  221. package/.next/static/webpack/b14b5cb733b2ab00.webpack.hot-update.json +0 -1
  222. package/.next/static/webpack/b62381d4132a6544.webpack.hot-update.json +0 -1
  223. package/.next/static/webpack/be39acc05eac2b52.webpack.hot-update.json +0 -1
  224. package/.next/static/webpack/d1cb5fc816df74fd.webpack.hot-update.json +0 -1
  225. package/.next/static/webpack/e1d7a6f7992b7b70.webpack.hot-update.json +0 -1
  226. package/.next/static/webpack/e9324f3a66999504.webpack.hot-update.json +0 -1
  227. package/.next/static/webpack/ef19dedc8664f556.webpack.hot-update.json +0 -1
  228. package/.next/static/webpack/webpack.2f388e6b66349419.hot-update.js +0 -18
  229. package/.next/static/webpack/webpack.3def483773fe0f90.hot-update.js +0 -18
  230. package/.next/static/webpack/webpack.4996a2c64be83d4d.hot-update.js +0 -18
  231. package/.next/static/webpack/webpack.4c7ecbad991e36d2.hot-update.js +0 -18
  232. package/.next/static/webpack/webpack.5245476d8f6c86cd.hot-update.js +0 -18
  233. package/.next/static/webpack/webpack.548fbaf72ba2981b.hot-update.js +0 -18
  234. package/.next/static/webpack/webpack.5ff03b504f4dc152.hot-update.js +0 -18
  235. package/.next/static/webpack/webpack.627ec6e86b397d8c.hot-update.js +0 -18
  236. package/.next/static/webpack/webpack.6c5ef9843eacf483.hot-update.js +0 -18
  237. package/.next/static/webpack/webpack.6e5fce9246047620.hot-update.js +0 -18
  238. package/.next/static/webpack/webpack.7f3be6888ceaa76c.hot-update.js +0 -18
  239. package/.next/static/webpack/webpack.7f6a8530b9acce84.hot-update.js +0 -18
  240. package/.next/static/webpack/webpack.8407cf02bdf4864d.hot-update.js +0 -18
  241. package/.next/static/webpack/webpack.8b5683da7fe5505d.hot-update.js +0 -18
  242. package/.next/static/webpack/webpack.97a9b97618a13104.hot-update.js +0 -18
  243. package/.next/static/webpack/webpack.abe429b78cb2cd5f.hot-update.js +0 -18
  244. package/.next/static/webpack/webpack.b14b5cb733b2ab00.hot-update.js +0 -18
  245. package/.next/static/webpack/webpack.b62381d4132a6544.hot-update.js +0 -18
  246. package/.next/static/webpack/webpack.bb7fb7004da6fd3f.hot-update.js +0 -18
  247. package/.next/static/webpack/webpack.be39acc05eac2b52.hot-update.js +0 -18
  248. package/.next/static/webpack/webpack.cdb27633fb2a188d.hot-update.js +0 -18
  249. package/.next/static/webpack/webpack.d1cb5fc816df74fd.hot-update.js +0 -18
  250. package/.next/static/webpack/webpack.e1d7a6f7992b7b70.hot-update.js +0 -18
  251. package/.next/static/webpack/webpack.e7b0af7ee6cbe0d6.hot-update.js +0 -18
  252. package/.next/static/webpack/webpack.e9324f3a66999504.hot-update.js +0 -18
  253. package/.next/static/webpack/webpack.ef19dedc8664f556.hot-update.js +0 -18
  254. /package/.next/static/webpack/{09217bd29f3a8742.webpack.hot-update.json → 03ee13d215584d59.webpack.hot-update.json} +0 -0
  255. /package/.next/static/webpack/{230183ef62b2b1f3.webpack.hot-update.json → 05e804a9c98d6744.webpack.hot-update.json} +0 -0
  256. /package/.next/static/webpack/{5245476d8f6c86cd.webpack.hot-update.json → 19bfc21a985c41a3.webpack.hot-update.json} +0 -0
  257. /package/.next/static/webpack/{2e7b4aa2b22e65d9.webpack.hot-update.json → 1c4c3e518f810365.webpack.hot-update.json} +0 -0
  258. /package/.next/static/webpack/{4996a2c64be83d4d.webpack.hot-update.json → 217f0b5265f56be2.webpack.hot-update.json} +0 -0
  259. /package/.next/static/webpack/{548fbaf72ba2981b.webpack.hot-update.json → 21d00cb457913b06.webpack.hot-update.json} +0 -0
  260. /package/.next/static/webpack/{27d92b1ae58910aa.webpack.hot-update.json → 2813c5d79542e32e.webpack.hot-update.json} +0 -0
  261. /package/.next/static/webpack/{627ec6e86b397d8c.webpack.hot-update.json → 28ebfaec609673ec.webpack.hot-update.json} +0 -0
  262. /package/.next/static/webpack/{6c5ef9843eacf483.webpack.hot-update.json → 3d336feedc5241cc.webpack.hot-update.json} +0 -0
  263. /package/.next/static/webpack/{6e5fce9246047620.webpack.hot-update.json → 3de1fe8a6a590578.webpack.hot-update.json} +0 -0
  264. /package/.next/static/webpack/{7f3be6888ceaa76c.webpack.hot-update.json → 5361cbc07110a7d3.webpack.hot-update.json} +0 -0
  265. /package/.next/static/webpack/{7f6a8530b9acce84.webpack.hot-update.json → 55648f4af4cd339a.webpack.hot-update.json} +0 -0
  266. /package/.next/static/webpack/{8b5683da7fe5505d.webpack.hot-update.json → 60b6b08662112fd8.webpack.hot-update.json} +0 -0
  267. /package/.next/static/webpack/{2f388e6b66349419.webpack.hot-update.json → 660742a3b5333202.webpack.hot-update.json} +0 -0
  268. /package/.next/static/webpack/{bb7fb7004da6fd3f.webpack.hot-update.json → 68289df254bc1101.webpack.hot-update.json} +0 -0
  269. /package/.next/static/webpack/{cdb27633fb2a188d.webpack.hot-update.json → 6965c86e8cf1c189.webpack.hot-update.json} +0 -0
  270. /package/.next/static/webpack/{e7b0af7ee6cbe0d6.webpack.hot-update.json → 6ee5f39e8d123868.webpack.hot-update.json} +0 -0
  271. /package/.next/static/webpack/{3def483773fe0f90.webpack.hot-update.json → 7dd58225de2c96b1.webpack.hot-update.json} +0 -0
  272. /package/.next/static/webpack/{4c7ecbad991e36d2.webpack.hot-update.json → 9211406c39b8c7d6.webpack.hot-update.json} +0 -0
  273. /package/.next/static/webpack/{5ff03b504f4dc152.webpack.hot-update.json → a8d577cb610891a6.webpack.hot-update.json} +0 -0
@@ -0,0 +1,35 @@
1
+ /*
2
+ * ATTENTION: An "eval-source-map" devtool has been used.
3
+ * This devtool is neither made for production nor for readable output files.
4
+ * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
5
+ * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
6
+ * or disable the default devtool with "devtool: false".
7
+ * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
8
+ */
9
+ exports.id = "vendor-chunks/bootstrap";
10
+ exports.ids = ["vendor-chunks/bootstrap"];
11
+ exports.modules = {
12
+
13
+ /***/ "(ssr)/./node_modules/bootstrap/dist/js/bootstrap.bundle.min.js":
14
+ /*!****************************************************************!*\
15
+ !*** ./node_modules/bootstrap/dist/js/bootstrap.bundle.min.js ***!
16
+ \****************************************************************/
17
+ /***/ (function(module) {
18
+
19
+ eval("/*!\n * Bootstrap v5.3.3 (https://getbootstrap.com/)\n * Copyright 2011-2024 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n!function(t,e){ true?module.exports=e():0}(this,(function(){\"use strict\";const t=new Map,e={set(e,i,n){t.has(e)||t.set(e,new Map);const s=t.get(e);s.has(i)||0===s.size?s.set(i,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(e,i)=>t.has(e)&&t.get(e).get(i)||null,remove(e,i){if(!t.has(e))return;const n=t.get(e);n.delete(i),0===n.size&&t.delete(e)}},i=\"transitionend\",n=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\\s\"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),s=t=>{t.dispatchEvent(new Event(i))},o=t=>!(!t||\"object\"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),r=t=>o(t)?t.jquery?t[0]:t:\"string\"==typeof t&&t.length>0?document.querySelector(n(t)):null,a=t=>{if(!o(t)||0===t.getClientRects().length)return!1;const e=\"visible\"===getComputedStyle(t).getPropertyValue(\"visibility\"),i=t.closest(\"details:not([open])\");if(!i)return e;if(i!==t){const e=t.closest(\"summary\");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},l=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains(\"disabled\")||(void 0!==t.disabled?t.disabled:t.hasAttribute(\"disabled\")&&\"false\"!==t.getAttribute(\"disabled\")),c=t=>{if(!document.documentElement.attachShadow)return null;if(\"function\"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?c(t.parentNode):null},h=()=>{},d=t=>{t.offsetHeight},u=()=>window.jQuery&&!document.body.hasAttribute(\"data-bs-no-jquery\")?window.jQuery:null,f=[],p=()=>\"rtl\"===document.documentElement.dir,m=t=>{var e;e=()=>{const e=u();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},\"loading\"===document.readyState?(f.length||document.addEventListener(\"DOMContentLoaded\",(()=>{for(const t of f)t()})),f.push(e)):e()},g=(t,e=[],i=t)=>\"function\"==typeof t?t(...e):i,_=(t,e,n=!0)=>{if(!n)return void g(t);const o=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(\",\")[0],i=i.split(\",\")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let r=!1;const a=({target:n})=>{n===e&&(r=!0,e.removeEventListener(i,a),g(t))};e.addEventListener(i,a),setTimeout((()=>{r||s(e)}),o)},b=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},v=/[^.]*(?=\\..*)\\.|.*/,y=/\\..*/,w=/::\\d+$/,A={};let E=1;const T={mouseenter:\"mouseover\",mouseleave:\"mouseout\"},C=new Set([\"click\",\"dblclick\",\"mouseup\",\"mousedown\",\"contextmenu\",\"mousewheel\",\"DOMMouseScroll\",\"mouseover\",\"mouseout\",\"mousemove\",\"selectstart\",\"selectend\",\"keydown\",\"keypress\",\"keyup\",\"orientationchange\",\"touchstart\",\"touchmove\",\"touchend\",\"touchcancel\",\"pointerdown\",\"pointermove\",\"pointerup\",\"pointerleave\",\"pointercancel\",\"gesturestart\",\"gesturechange\",\"gestureend\",\"focus\",\"blur\",\"change\",\"reset\",\"select\",\"submit\",\"focusin\",\"focusout\",\"load\",\"unload\",\"beforeunload\",\"resize\",\"move\",\"DOMContentLoaded\",\"readystatechange\",\"error\",\"abort\",\"scroll\"]);function O(t,e){return e&&`${e}::${E++}`||t.uidEvent||E++}function x(t){const e=O(t);return t.uidEvent=e,A[e]=A[e]||{},A[e]}function k(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function L(t,e,i){const n=\"string\"==typeof e,s=n?i:e||i;let o=I(t);return C.has(o)||(o=t),[n,s,o]}function S(t,e,i,n,s){if(\"string\"!=typeof e||!t)return;let[o,r,a]=L(e,i,n);if(e in T){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=x(t),c=l[a]||(l[a]={}),h=k(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=O(r,e.replace(v,\"\")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return P(s,{delegateTarget:r}),n.oneOff&&N.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return P(n,{delegateTarget:t}),i.oneOff&&N.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function D(t,e,i,n,s){const o=k(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function $(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&D(t,e,i,r.callable,r.delegationSelector)}function I(t){return t=t.replace(y,\"\"),T[t]||t}const N={on(t,e,i,n){S(t,e,i,n,!1)},one(t,e,i,n){S(t,e,i,n,!0)},off(t,e,i,n){if(\"string\"!=typeof e||!t)return;const[s,o,r]=L(e,i,n),a=r!==e,l=x(t),c=l[r]||{},h=e.startsWith(\".\");if(void 0===o){if(h)for(const i of Object.keys(l))$(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(w,\"\");a&&!e.includes(s)||D(t,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;D(t,l,r,o,s?i:null)}},trigger(t,e,i){if(\"string\"!=typeof e||!t)return null;const n=u();let s=null,o=!0,r=!0,a=!1;e!==I(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=P(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function P(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}function j(t){if(\"true\"===t)return!0;if(\"false\"===t)return!1;if(t===Number(t).toString())return Number(t);if(\"\"===t||\"null\"===t)return null;if(\"string\"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function M(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const F={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${M(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${M(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith(\"bs\")&&!t.startsWith(\"bsConfig\")));for(const n of i){let i=n.replace(/^bs/,\"\");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=j(t.dataset[n])}return e},getDataAttribute:(t,e)=>j(t.getAttribute(`data-bs-${M(e)}`))};class H{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method \"NAME\", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=o(e)?F.getDataAttribute(e,\"config\"):{};return{...this.constructor.Default,...\"object\"==typeof i?i:{},...o(e)?F.getDataAttributes(e):{},...\"object\"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[n,s]of Object.entries(e)){const e=t[n],r=o(e)?\"element\":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option \"${n}\" provided type \"${r}\" but expected type \"${s}\".`)}var i}}class W extends H{constructor(t,i){super(),(t=r(t))&&(this._element=t,this._config=this._getConfig(i),e.set(this._element,this.constructor.DATA_KEY,this))}dispose(){e.remove(this._element,this.constructor.DATA_KEY),N.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){_(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return e.get(r(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,\"object\"==typeof e?e:null)}static get VERSION(){return\"5.3.3\"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const B=t=>{let e=t.getAttribute(\"data-bs-target\");if(!e||\"#\"===e){let i=t.getAttribute(\"href\");if(!i||!i.includes(\"#\")&&!i.startsWith(\".\"))return null;i.includes(\"#\")&&!i.startsWith(\"#\")&&(i=`#${i.split(\"#\")[1]}`),e=i&&\"#\"!==i?i.trim():null}return e?e.split(\",\").map((t=>n(t))).join(\",\"):null},z={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=[\"a\",\"button\",\"input\",\"textarea\",\"select\",\"details\",\"[tabindex]\",'[contenteditable=\"true\"]'].map((t=>`${t}:not([tabindex^=\"-\"])`)).join(\",\");return this.find(e,t).filter((t=>!l(t)&&a(t)))},getSelectorFromElement(t){const e=B(t);return e&&z.findOne(e)?e:null},getElementFromSelector(t){const e=B(t);return e?z.findOne(e):null},getMultipleElementsFromSelector(t){const e=B(t);return e?z.find(e):[]}},R=(t,e=\"hide\")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;N.on(document,i,`[data-bs-dismiss=\"${n}\"]`,(function(i){if([\"A\",\"AREA\"].includes(this.tagName)&&i.preventDefault(),l(this))return;const s=z.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},q=\".bs.alert\",V=`close${q}`,K=`closed${q}`;class Q extends W{static get NAME(){return\"alert\"}close(){if(N.trigger(this._element,V).defaultPrevented)return;this._element.classList.remove(\"show\");const t=this._element.classList.contains(\"fade\");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),N.trigger(this._element,K),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Q.getOrCreateInstance(this);if(\"string\"==typeof t){if(void 0===e[t]||t.startsWith(\"_\")||\"constructor\"===t)throw new TypeError(`No method named \"${t}\"`);e[t](this)}}))}}R(Q,\"close\"),m(Q);const X='[data-bs-toggle=\"button\"]';class Y extends W{static get NAME(){return\"button\"}toggle(){this._element.setAttribute(\"aria-pressed\",this._element.classList.toggle(\"active\"))}static jQueryInterface(t){return this.each((function(){const e=Y.getOrCreateInstance(this);\"toggle\"===t&&e[t]()}))}}N.on(document,\"click.bs.button.data-api\",X,(t=>{t.preventDefault();const e=t.target.closest(X);Y.getOrCreateInstance(e).toggle()})),m(Y);const U=\".bs.swipe\",G=`touchstart${U}`,J=`touchmove${U}`,Z=`touchend${U}`,tt=`pointerdown${U}`,et=`pointerup${U}`,it={endCallback:null,leftCallback:null,rightCallback:null},nt={endCallback:\"(function|null)\",leftCallback:\"(function|null)\",rightCallback:\"(function|null)\"};class st extends H{constructor(t,e){super(),this._element=t,t&&st.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return it}static get DefaultType(){return nt}static get NAME(){return\"swipe\"}dispose(){N.off(this._element,U)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),g(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&g(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(N.on(this._element,tt,(t=>this._start(t))),N.on(this._element,et,(t=>this._end(t))),this._element.classList.add(\"pointer-event\")):(N.on(this._element,G,(t=>this._start(t))),N.on(this._element,J,(t=>this._move(t))),N.on(this._element,Z,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&(\"pen\"===t.pointerType||\"touch\"===t.pointerType)}static isSupported(){return\"ontouchstart\"in document.documentElement||navigator.maxTouchPoints>0}}const ot=\".bs.carousel\",rt=\".data-api\",at=\"next\",lt=\"prev\",ct=\"left\",ht=\"right\",dt=`slide${ot}`,ut=`slid${ot}`,ft=`keydown${ot}`,pt=`mouseenter${ot}`,mt=`mouseleave${ot}`,gt=`dragstart${ot}`,_t=`load${ot}${rt}`,bt=`click${ot}${rt}`,vt=\"carousel\",yt=\"active\",wt=\".active\",At=\".carousel-item\",Et=wt+At,Tt={ArrowLeft:ht,ArrowRight:ct},Ct={interval:5e3,keyboard:!0,pause:\"hover\",ride:!1,touch:!0,wrap:!0},Ot={interval:\"(number|boolean)\",keyboard:\"boolean\",pause:\"(string|boolean)\",ride:\"(boolean|string)\",touch:\"boolean\",wrap:\"boolean\"};class xt extends W{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=z.findOne(\".carousel-indicators\",this._element),this._addEventListeners(),this._config.ride===vt&&this.cycle()}static get Default(){return Ct}static get DefaultType(){return Ot}static get NAME(){return\"carousel\"}next(){this._slide(at)}nextWhenVisible(){!document.hidden&&a(this._element)&&this.next()}prev(){this._slide(lt)}pause(){this._isSliding&&s(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?N.one(this._element,ut,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void N.one(this._element,ut,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?at:lt;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&N.on(this._element,ft,(t=>this._keydown(t))),\"hover\"===this._config.pause&&(N.on(this._element,pt,(()=>this.pause())),N.on(this._element,mt,(()=>this._maybeEnableCycle()))),this._config.touch&&st.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of z.find(\".carousel-item img\",this._element))N.on(t,gt,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(ct)),rightCallback:()=>this._slide(this._directionToOrder(ht)),endCallback:()=>{\"hover\"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new st(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=Tt[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=z.findOne(wt,this._indicatorsElement);e.classList.remove(yt),e.removeAttribute(\"aria-current\");const i=z.findOne(`[data-bs-slide-to=\"${t}\"]`,this._indicatorsElement);i&&(i.classList.add(yt),i.setAttribute(\"aria-current\",\"true\"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute(\"data-bs-interval\"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===at,s=e||b(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>N.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(dt).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?\"carousel-item-start\":\"carousel-item-end\",c=n?\"carousel-item-next\":\"carousel-item-prev\";s.classList.add(c),d(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(yt),i.classList.remove(yt,c,l),this._isSliding=!1,r(ut)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains(\"slide\")}_getActive(){return z.findOne(Et,this._element)}_getItems(){return z.find(At,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return p()?t===ct?lt:at:t===ct?at:lt}_orderToDirection(t){return p()?t===lt?ct:ht:t===lt?ht:ct}static jQueryInterface(t){return this.each((function(){const e=xt.getOrCreateInstance(this,t);if(\"number\"!=typeof t){if(\"string\"==typeof t){if(void 0===e[t]||t.startsWith(\"_\")||\"constructor\"===t)throw new TypeError(`No method named \"${t}\"`);e[t]()}}else e.to(t)}))}}N.on(document,bt,\"[data-bs-slide], [data-bs-slide-to]\",(function(t){const e=z.getElementFromSelector(this);if(!e||!e.classList.contains(vt))return;t.preventDefault();const i=xt.getOrCreateInstance(e),n=this.getAttribute(\"data-bs-slide-to\");return n?(i.to(n),void i._maybeEnableCycle()):\"next\"===F.getDataAttribute(this,\"slide\")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),N.on(window,_t,(()=>{const t=z.find('[data-bs-ride=\"carousel\"]');for(const e of t)xt.getOrCreateInstance(e)})),m(xt);const kt=\".bs.collapse\",Lt=`show${kt}`,St=`shown${kt}`,Dt=`hide${kt}`,$t=`hidden${kt}`,It=`click${kt}.data-api`,Nt=\"show\",Pt=\"collapse\",jt=\"collapsing\",Mt=`:scope .${Pt} .${Pt}`,Ft='[data-bs-toggle=\"collapse\"]',Ht={parent:null,toggle:!0},Wt={parent:\"(null|element)\",toggle:\"boolean\"};class Bt extends W{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=z.find(Ft);for(const t of i){const e=z.getSelectorFromElement(t),i=z.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return Ht}static get DefaultType(){return Wt}static get NAME(){return\"collapse\"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(\".collapse.show, .collapse.collapsing\").filter((t=>t!==this._element)).map((t=>Bt.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(N.trigger(this._element,Lt).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(Pt),this._element.classList.add(jt),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(jt),this._element.classList.add(Pt,Nt),this._element.style[e]=\"\",N.trigger(this._element,St)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(N.trigger(this._element,Dt).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,d(this._element),this._element.classList.add(jt),this._element.classList.remove(Pt,Nt);for(const t of this._triggerArray){const e=z.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]=\"\",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(jt),this._element.classList.add(Pt),N.trigger(this._element,$t)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(Nt)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=r(t.parent),t}_getDimension(){return this._element.classList.contains(\"collapse-horizontal\")?\"width\":\"height\"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(Ft);for(const e of t){const t=z.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=z.find(Mt,this._config.parent);return z.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle(\"collapsed\",!e),i.setAttribute(\"aria-expanded\",e)}static jQueryInterface(t){const e={};return\"string\"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=Bt.getOrCreateInstance(this,e);if(\"string\"==typeof t){if(void 0===i[t])throw new TypeError(`No method named \"${t}\"`);i[t]()}}))}}N.on(document,It,Ft,(function(t){(\"A\"===t.target.tagName||t.delegateTarget&&\"A\"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of z.getMultipleElementsFromSelector(this))Bt.getOrCreateInstance(t,{toggle:!1}).toggle()})),m(Bt);var zt=\"top\",Rt=\"bottom\",qt=\"right\",Vt=\"left\",Kt=\"auto\",Qt=[zt,Rt,qt,Vt],Xt=\"start\",Yt=\"end\",Ut=\"clippingParents\",Gt=\"viewport\",Jt=\"popper\",Zt=\"reference\",te=Qt.reduce((function(t,e){return t.concat([e+\"-\"+Xt,e+\"-\"+Yt])}),[]),ee=[].concat(Qt,[Kt]).reduce((function(t,e){return t.concat([e,e+\"-\"+Xt,e+\"-\"+Yt])}),[]),ie=\"beforeRead\",ne=\"read\",se=\"afterRead\",oe=\"beforeMain\",re=\"main\",ae=\"afterMain\",le=\"beforeWrite\",ce=\"write\",he=\"afterWrite\",de=[ie,ne,se,oe,re,ae,le,ce,he];function ue(t){return t?(t.nodeName||\"\").toLowerCase():null}function fe(t){if(null==t)return window;if(\"[object Window]\"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function pe(t){return t instanceof fe(t).Element||t instanceof Element}function me(t){return t instanceof fe(t).HTMLElement||t instanceof HTMLElement}function ge(t){return\"undefined\"!=typeof ShadowRoot&&(t instanceof fe(t).ShadowRoot||t instanceof ShadowRoot)}const _e={name:\"applyStyles\",enabled:!0,phase:\"write\",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];me(s)&&ue(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?\"\":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:\"0\",top:\"0\",margin:\"0\"},arrow:{position:\"absolute\"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]=\"\",t}),{});me(n)&&ue(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:[\"computeStyles\"]};function be(t){return t.split(\"-\")[0]}var ve=Math.max,ye=Math.min,we=Math.round;function Ae(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+\"/\"+t.version})).join(\" \"):navigator.userAgent}function Ee(){return!/^((?!chrome|android).)*safari/i.test(Ae())}function Te(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&me(t)&&(s=t.offsetWidth>0&&we(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&we(n.height)/t.offsetHeight||1);var r=(pe(t)?fe(t):window).visualViewport,a=!Ee()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function Ce(t){var e=Te(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function Oe(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&ge(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function xe(t){return fe(t).getComputedStyle(t)}function ke(t){return[\"table\",\"td\",\"th\"].indexOf(ue(t))>=0}function Le(t){return((pe(t)?t.ownerDocument:t.document)||window.document).documentElement}function Se(t){return\"html\"===ue(t)?t:t.assignedSlot||t.parentNode||(ge(t)?t.host:null)||Le(t)}function De(t){return me(t)&&\"fixed\"!==xe(t).position?t.offsetParent:null}function $e(t){for(var e=fe(t),i=De(t);i&&ke(i)&&\"static\"===xe(i).position;)i=De(i);return i&&(\"html\"===ue(i)||\"body\"===ue(i)&&\"static\"===xe(i).position)?e:i||function(t){var e=/firefox/i.test(Ae());if(/Trident/i.test(Ae())&&me(t)&&\"fixed\"===xe(t).position)return null;var i=Se(t);for(ge(i)&&(i=i.host);me(i)&&[\"html\",\"body\"].indexOf(ue(i))<0;){var n=xe(i);if(\"none\"!==n.transform||\"none\"!==n.perspective||\"paint\"===n.contain||-1!==[\"transform\",\"perspective\"].indexOf(n.willChange)||e&&\"filter\"===n.willChange||e&&n.filter&&\"none\"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function Ie(t){return[\"top\",\"bottom\"].indexOf(t)>=0?\"x\":\"y\"}function Ne(t,e,i){return ve(t,ye(e,i))}function Pe(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function je(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const Me={name:\"arrow\",enabled:!0,phase:\"main\",fn:function(t){var e,i=t.state,n=t.name,s=t.options,o=i.elements.arrow,r=i.modifiersData.popperOffsets,a=be(i.placement),l=Ie(a),c=[Vt,qt].indexOf(a)>=0?\"height\":\"width\";if(o&&r){var h=function(t,e){return Pe(\"number\"!=typeof(t=\"function\"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:je(t,Qt))}(s.padding,i),d=Ce(o),u=\"y\"===l?zt:Vt,f=\"y\"===l?Rt:qt,p=i.rects.reference[c]+i.rects.reference[l]-r[l]-i.rects.popper[c],m=r[l]-i.rects.reference[l],g=$e(o),_=g?\"y\"===l?g.clientHeight||0:g.clientWidth||0:0,b=p/2-m/2,v=h[u],y=_-d[c]-h[f],w=_/2-d[c]/2+b,A=Ne(v,w,y),E=l;i.modifiersData[n]=((e={})[E]=A,e.centerOffset=A-w,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?\"[data-popper-arrow]\":i;null!=n&&(\"string\"!=typeof n||(n=e.elements.popper.querySelector(n)))&&Oe(e.elements.popper,n)&&(e.elements.arrow=n)},requires:[\"popperOffsets\"],requiresIfExists:[\"preventOverflow\"]};function Fe(t){return t.split(\"-\")[1]}var He={top:\"auto\",right:\"auto\",bottom:\"auto\",left:\"auto\"};function We(t){var e,i=t.popper,n=t.popperRect,s=t.placement,o=t.variation,r=t.offsets,a=t.position,l=t.gpuAcceleration,c=t.adaptive,h=t.roundOffsets,d=t.isFixed,u=r.x,f=void 0===u?0:u,p=r.y,m=void 0===p?0:p,g=\"function\"==typeof h?h({x:f,y:m}):{x:f,y:m};f=g.x,m=g.y;var _=r.hasOwnProperty(\"x\"),b=r.hasOwnProperty(\"y\"),v=Vt,y=zt,w=window;if(c){var A=$e(i),E=\"clientHeight\",T=\"clientWidth\";A===fe(i)&&\"static\"!==xe(A=Le(i)).position&&\"absolute\"===a&&(E=\"scrollHeight\",T=\"scrollWidth\"),(s===zt||(s===Vt||s===qt)&&o===Yt)&&(y=Rt,m-=(d&&A===w&&w.visualViewport?w.visualViewport.height:A[E])-n.height,m*=l?1:-1),s!==Vt&&(s!==zt&&s!==Rt||o!==Yt)||(v=qt,f-=(d&&A===w&&w.visualViewport?w.visualViewport.width:A[T])-n.width,f*=l?1:-1)}var C,O=Object.assign({position:a},c&&He),x=!0===h?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:we(i*s)/s||0,y:we(n*s)/s||0}}({x:f,y:m},fe(i)):{x:f,y:m};return f=x.x,m=x.y,l?Object.assign({},O,((C={})[y]=b?\"0\":\"\",C[v]=_?\"0\":\"\",C.transform=(w.devicePixelRatio||1)<=1?\"translate(\"+f+\"px, \"+m+\"px)\":\"translate3d(\"+f+\"px, \"+m+\"px, 0)\",C)):Object.assign({},O,((e={})[y]=b?m+\"px\":\"\",e[v]=_?f+\"px\":\"\",e.transform=\"\",e))}const Be={name:\"computeStyles\",enabled:!0,phase:\"beforeWrite\",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:be(e.placement),variation:Fe(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:\"fixed\"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,We(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,We(Object.assign({},c,{offsets:e.modifiersData.arrow,position:\"absolute\",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{\"data-popper-placement\":e.placement})},data:{}};var ze={passive:!0};const Re={name:\"eventListeners\",enabled:!0,phase:\"write\",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=fe(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener(\"scroll\",i.update,ze)})),a&&l.addEventListener(\"resize\",i.update,ze),function(){o&&c.forEach((function(t){t.removeEventListener(\"scroll\",i.update,ze)})),a&&l.removeEventListener(\"resize\",i.update,ze)}},data:{}};var qe={left:\"right\",right:\"left\",bottom:\"top\",top:\"bottom\"};function Ve(t){return t.replace(/left|right|bottom|top/g,(function(t){return qe[t]}))}var Ke={start:\"end\",end:\"start\"};function Qe(t){return t.replace(/start|end/g,(function(t){return Ke[t]}))}function Xe(t){var e=fe(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Ye(t){return Te(Le(t)).left+Xe(t).scrollLeft}function Ue(t){var e=xe(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function Ge(t){return[\"html\",\"body\",\"#document\"].indexOf(ue(t))>=0?t.ownerDocument.body:me(t)&&Ue(t)?t:Ge(Se(t))}function Je(t,e){var i;void 0===e&&(e=[]);var n=Ge(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=fe(n),r=s?[o].concat(o.visualViewport||[],Ue(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(Je(Se(r)))}function Ze(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function ti(t,e,i){return e===Gt?Ze(function(t,e){var i=fe(t),n=Le(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=Ee();(c||!c&&\"fixed\"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+Ye(t),y:l}}(t,i)):pe(e)?function(t,e){var i=Te(t,!1,\"fixed\"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):Ze(function(t){var e,i=Le(t),n=Xe(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=ve(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=ve(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+Ye(t),l=-n.scrollTop;return\"rtl\"===xe(s||i).direction&&(a+=ve(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(Le(t)))}function ei(t){var e,i=t.reference,n=t.element,s=t.placement,o=s?be(s):null,r=s?Fe(s):null,a=i.x+i.width/2-n.width/2,l=i.y+i.height/2-n.height/2;switch(o){case zt:e={x:a,y:i.y-n.height};break;case Rt:e={x:a,y:i.y+i.height};break;case qt:e={x:i.x+i.width,y:l};break;case Vt:e={x:i.x-n.width,y:l};break;default:e={x:i.x,y:i.y}}var c=o?Ie(o):null;if(null!=c){var h=\"y\"===c?\"height\":\"width\";switch(r){case Xt:e[c]=e[c]-(i[h]/2-n[h]/2);break;case Yt:e[c]=e[c]+(i[h]/2-n[h]/2)}}return e}function ii(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=void 0===n?t.placement:n,o=i.strategy,r=void 0===o?t.strategy:o,a=i.boundary,l=void 0===a?Ut:a,c=i.rootBoundary,h=void 0===c?Gt:c,d=i.elementContext,u=void 0===d?Jt:d,f=i.altBoundary,p=void 0!==f&&f,m=i.padding,g=void 0===m?0:m,_=Pe(\"number\"!=typeof g?g:je(g,Qt)),b=u===Jt?Zt:Jt,v=t.rects.popper,y=t.elements[p?b:u],w=function(t,e,i,n){var s=\"clippingParents\"===e?function(t){var e=Je(Se(t)),i=[\"absolute\",\"fixed\"].indexOf(xe(t).position)>=0&&me(t)?$e(t):t;return pe(i)?e.filter((function(t){return pe(t)&&Oe(t,i)&&\"body\"!==ue(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=ti(t,i,n);return e.top=ve(s.top,e.top),e.right=ye(s.right,e.right),e.bottom=ye(s.bottom,e.bottom),e.left=ve(s.left,e.left),e}),ti(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(pe(y)?y:y.contextElement||Le(t.elements.popper),l,h,r),A=Te(t.elements.reference),E=ei({reference:A,element:v,strategy:\"absolute\",placement:s}),T=Ze(Object.assign({},v,E)),C=u===Jt?T:A,O={top:w.top-C.top+_.top,bottom:C.bottom-w.bottom+_.bottom,left:w.left-C.left+_.left,right:C.right-w.right+_.right},x=t.modifiersData.offset;if(u===Jt&&x){var k=x[s];Object.keys(O).forEach((function(t){var e=[qt,Rt].indexOf(t)>=0?1:-1,i=[zt,Rt].indexOf(t)>=0?\"y\":\"x\";O[t]+=k[i]*e}))}return O}function ni(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,c=void 0===l?ee:l,h=Fe(n),d=h?a?te:te.filter((function(t){return Fe(t)===h})):Qt,u=d.filter((function(t){return c.indexOf(t)>=0}));0===u.length&&(u=d);var f=u.reduce((function(e,i){return e[i]=ii(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[be(i)],e}),{});return Object.keys(f).sort((function(t,e){return f[t]-f[e]}))}const si={name:\"flip\",enabled:!0,phase:\"main\",fn:function(t){var e=t.state,i=t.options,n=t.name;if(!e.modifiersData[n]._skip){for(var s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0===r||r,l=i.fallbackPlacements,c=i.padding,h=i.boundary,d=i.rootBoundary,u=i.altBoundary,f=i.flipVariations,p=void 0===f||f,m=i.allowedAutoPlacements,g=e.options.placement,_=be(g),b=l||(_!==g&&p?function(t){if(be(t)===Kt)return[];var e=Ve(t);return[Qe(t),e,Qe(e)]}(g):[Ve(g)]),v=[g].concat(b).reduce((function(t,i){return t.concat(be(i)===Kt?ni(e,{placement:i,boundary:h,rootBoundary:d,padding:c,flipVariations:p,allowedAutoPlacements:m}):i)}),[]),y=e.rects.reference,w=e.rects.popper,A=new Map,E=!0,T=v[0],C=0;C<v.length;C++){var O=v[C],x=be(O),k=Fe(O)===Xt,L=[zt,Rt].indexOf(x)>=0,S=L?\"width\":\"height\",D=ii(e,{placement:O,boundary:h,rootBoundary:d,altBoundary:u,padding:c}),$=L?k?qt:Vt:k?Rt:zt;y[S]>w[S]&&($=Ve($));var I=Ve($),N=[];if(o&&N.push(D[x]<=0),a&&N.push(D[$]<=0,D[I]<=0),N.every((function(t){return t}))){T=O,E=!1;break}A.set(O,N)}if(E)for(var P=function(t){var e=v.find((function(e){var i=A.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return T=e,\"break\"},j=p?3:1;j>0&&\"break\"!==P(j);j--);e.placement!==T&&(e.modifiersData[n]._skip=!0,e.placement=T,e.reset=!0)}},requiresIfExists:[\"offset\"],data:{_skip:!1}};function oi(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function ri(t){return[zt,qt,Rt,Vt].some((function(e){return t[e]>=0}))}const ai={name:\"hide\",enabled:!0,phase:\"main\",requiresIfExists:[\"preventOverflow\"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=ii(e,{elementContext:\"reference\"}),a=ii(e,{altBoundary:!0}),l=oi(r,n),c=oi(a,s,o),h=ri(l),d=ri(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{\"data-popper-reference-hidden\":h,\"data-popper-escaped\":d})}},li={name:\"offset\",enabled:!0,phase:\"main\",requires:[\"popperOffsets\"],fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.offset,o=void 0===s?[0,0]:s,r=ee.reduce((function(t,i){return t[i]=function(t,e,i){var n=be(t),s=[Vt,zt].indexOf(n)>=0?-1:1,o=\"function\"==typeof i?i(Object.assign({},e,{placement:t})):i,r=o[0],a=o[1];return r=r||0,a=(a||0)*s,[Vt,qt].indexOf(n)>=0?{x:a,y:r}:{x:r,y:a}}(i,e.rects,o),t}),{}),a=r[e.placement],l=a.x,c=a.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=l,e.modifiersData.popperOffsets.y+=c),e.modifiersData[n]=r}},ci={name:\"popperOffsets\",enabled:!0,phase:\"read\",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=ei({reference:e.rects.reference,element:e.rects.popper,strategy:\"absolute\",placement:e.placement})},data:{}},hi={name:\"preventOverflow\",enabled:!0,phase:\"main\",fn:function(t){var e=t.state,i=t.options,n=t.name,s=i.mainAxis,o=void 0===s||s,r=i.altAxis,a=void 0!==r&&r,l=i.boundary,c=i.rootBoundary,h=i.altBoundary,d=i.padding,u=i.tether,f=void 0===u||u,p=i.tetherOffset,m=void 0===p?0:p,g=ii(e,{boundary:l,rootBoundary:c,padding:d,altBoundary:h}),_=be(e.placement),b=Fe(e.placement),v=!b,y=Ie(_),w=\"x\"===y?\"y\":\"x\",A=e.modifiersData.popperOffsets,E=e.rects.reference,T=e.rects.popper,C=\"function\"==typeof m?m(Object.assign({},e.rects,{placement:e.placement})):m,O=\"number\"==typeof C?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),x=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,k={x:0,y:0};if(A){if(o){var L,S=\"y\"===y?zt:Vt,D=\"y\"===y?Rt:qt,$=\"y\"===y?\"height\":\"width\",I=A[y],N=I+g[S],P=I-g[D],j=f?-T[$]/2:0,M=b===Xt?E[$]:T[$],F=b===Xt?-T[$]:-E[$],H=e.elements.arrow,W=f&&H?Ce(H):{width:0,height:0},B=e.modifiersData[\"arrow#persistent\"]?e.modifiersData[\"arrow#persistent\"].padding:{top:0,right:0,bottom:0,left:0},z=B[S],R=B[D],q=Ne(0,E[$],W[$]),V=v?E[$]/2-j-q-z-O.mainAxis:M-q-z-O.mainAxis,K=v?-E[$]/2+j+q+R+O.mainAxis:F+q+R+O.mainAxis,Q=e.elements.arrow&&$e(e.elements.arrow),X=Q?\"y\"===y?Q.clientTop||0:Q.clientLeft||0:0,Y=null!=(L=null==x?void 0:x[y])?L:0,U=I+K-Y,G=Ne(f?ye(N,I+V-Y-X):N,I,f?ve(P,U):P);A[y]=G,k[y]=G-I}if(a){var J,Z=\"x\"===y?zt:Vt,tt=\"x\"===y?Rt:qt,et=A[w],it=\"y\"===w?\"height\":\"width\",nt=et+g[Z],st=et-g[tt],ot=-1!==[zt,Vt].indexOf(_),rt=null!=(J=null==x?void 0:x[w])?J:0,at=ot?nt:et-E[it]-T[it]-rt+O.altAxis,lt=ot?et+E[it]+T[it]-rt-O.altAxis:st,ct=f&&ot?function(t,e,i){var n=Ne(t,e,i);return n>i?i:n}(at,et,lt):Ne(f?at:nt,et,f?lt:st);A[w]=ct,k[w]=ct-et}e.modifiersData[n]=k}},requiresIfExists:[\"offset\"]};function di(t,e,i){void 0===i&&(i=!1);var n,s,o=me(e),r=me(e)&&function(t){var e=t.getBoundingClientRect(),i=we(e.width)/t.offsetWidth||1,n=we(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=Le(e),l=Te(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&((\"body\"!==ue(e)||Ue(a))&&(c=(n=e)!==fe(n)&&me(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:Xe(n)),me(e)?((h=Te(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=Ye(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function ui(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var fi={placement:\"bottom\",modifiers:[],strategy:\"absolute\"};function pi(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];return!e.some((function(t){return!(t&&\"function\"==typeof t.getBoundingClientRect)}))}function mi(t){void 0===t&&(t={});var e=t,i=e.defaultModifiers,n=void 0===i?[]:i,s=e.defaultOptions,o=void 0===s?fi:s;return function(t,e,i){void 0===i&&(i=o);var s,r,a={placement:\"bottom\",orderedModifiers:[],options:Object.assign({},fi,o),modifiersData:{},elements:{reference:t,popper:e},attributes:{},styles:{}},l=[],c=!1,h={state:a,setOptions:function(i){var s=\"function\"==typeof i?i(a.options):i;d(),a.options=Object.assign({},o,a.options,s),a.scrollParents={reference:pe(t)?Je(t):t.contextElement?Je(t.contextElement):[],popper:Je(e)};var r,c,u=function(t){var e=ui(t);return de.reduce((function(t,i){return t.concat(e.filter((function(t){return t.phase===i})))}),[])}((r=[].concat(n,a.options.modifiers),c=r.reduce((function(t,e){var i=t[e.name];return t[e.name]=i?Object.assign({},i,e,{options:Object.assign({},i.options,e.options),data:Object.assign({},i.data,e.data)}):e,t}),{}),Object.keys(c).map((function(t){return c[t]}))));return a.orderedModifiers=u.filter((function(t){return t.enabled})),a.orderedModifiers.forEach((function(t){var e=t.name,i=t.options,n=void 0===i?{}:i,s=t.effect;if(\"function\"==typeof s){var o=s({state:a,name:e,instance:h,options:n});l.push(o||function(){})}})),h.update()},forceUpdate:function(){if(!c){var t=a.elements,e=t.reference,i=t.popper;if(pi(e,i)){a.rects={reference:di(e,$e(i),\"fixed\"===a.options.strategy),popper:Ce(i)},a.reset=!1,a.placement=a.options.placement,a.orderedModifiers.forEach((function(t){return a.modifiersData[t.name]=Object.assign({},t.data)}));for(var n=0;n<a.orderedModifiers.length;n++)if(!0!==a.reset){var s=a.orderedModifiers[n],o=s.fn,r=s.options,l=void 0===r?{}:r,d=s.name;\"function\"==typeof o&&(a=o({state:a,options:l,name:d,instance:h})||a)}else a.reset=!1,n=-1}}},update:(s=function(){return new Promise((function(t){h.forceUpdate(),t(a)}))},function(){return r||(r=new Promise((function(t){Promise.resolve().then((function(){r=void 0,t(s())}))}))),r}),destroy:function(){d(),c=!0}};if(!pi(t,e))return h;function d(){l.forEach((function(t){return t()})),l=[]}return h.setOptions(i).then((function(t){!c&&i.onFirstUpdate&&i.onFirstUpdate(t)})),h}}var gi=mi(),_i=mi({defaultModifiers:[Re,ci,Be,_e]}),bi=mi({defaultModifiers:[Re,ci,Be,_e,li,si,hi,Me,ai]});const vi=Object.freeze(Object.defineProperty({__proto__:null,afterMain:ae,afterRead:se,afterWrite:he,applyStyles:_e,arrow:Me,auto:Kt,basePlacements:Qt,beforeMain:oe,beforeRead:ie,beforeWrite:le,bottom:Rt,clippingParents:Ut,computeStyles:Be,createPopper:bi,createPopperBase:gi,createPopperLite:_i,detectOverflow:ii,end:Yt,eventListeners:Re,flip:si,hide:ai,left:Vt,main:re,modifierPhases:de,offset:li,placements:ee,popper:Jt,popperGenerator:mi,popperOffsets:ci,preventOverflow:hi,read:ne,reference:Zt,right:qt,start:Xt,top:zt,variationPlacements:te,viewport:Gt,write:ce},Symbol.toStringTag,{value:\"Module\"})),yi=\"dropdown\",wi=\".bs.dropdown\",Ai=\".data-api\",Ei=\"ArrowUp\",Ti=\"ArrowDown\",Ci=`hide${wi}`,Oi=`hidden${wi}`,xi=`show${wi}`,ki=`shown${wi}`,Li=`click${wi}${Ai}`,Si=`keydown${wi}${Ai}`,Di=`keyup${wi}${Ai}`,$i=\"show\",Ii='[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)',Ni=`${Ii}.${$i}`,Pi=\".dropdown-menu\",ji=p()?\"top-end\":\"top-start\",Mi=p()?\"top-start\":\"top-end\",Fi=p()?\"bottom-end\":\"bottom-start\",Hi=p()?\"bottom-start\":\"bottom-end\",Wi=p()?\"left-start\":\"right-start\",Bi=p()?\"right-start\":\"left-start\",zi={autoClose:!0,boundary:\"clippingParents\",display:\"dynamic\",offset:[0,2],popperConfig:null,reference:\"toggle\"},Ri={autoClose:\"(boolean|string)\",boundary:\"(string|element)\",display:\"string\",offset:\"(array|string|function)\",popperConfig:\"(null|object|function)\",reference:\"(string|element|object)\"};class qi extends W{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=z.next(this._element,Pi)[0]||z.prev(this._element,Pi)[0]||z.findOne(Pi,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return zi}static get DefaultType(){return Ri}static get NAME(){return yi}toggle(){return this._isShown()?this.hide():this.show()}show(){if(l(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!N.trigger(this._element,xi,t).defaultPrevented){if(this._createPopper(),\"ontouchstart\"in document.documentElement&&!this._parent.closest(\".navbar-nav\"))for(const t of[].concat(...document.body.children))N.on(t,\"mouseover\",h);this._element.focus(),this._element.setAttribute(\"aria-expanded\",!0),this._menu.classList.add($i),this._element.classList.add($i),N.trigger(this._element,ki,t)}}hide(){if(l(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!N.trigger(this._element,Ci,t).defaultPrevented){if(\"ontouchstart\"in document.documentElement)for(const t of[].concat(...document.body.children))N.off(t,\"mouseover\",h);this._popper&&this._popper.destroy(),this._menu.classList.remove($i),this._element.classList.remove($i),this._element.setAttribute(\"aria-expanded\",\"false\"),F.removeDataAttribute(this._menu,\"popper\"),N.trigger(this._element,Oi,t)}}_getConfig(t){if(\"object\"==typeof(t=super._getConfig(t)).reference&&!o(t.reference)&&\"function\"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${yi.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`);return t}_createPopper(){if(void 0===vi)throw new TypeError(\"Bootstrap's dropdowns require Popper (https://popper.js.org)\");let t=this._element;\"parent\"===this._config.reference?t=this._parent:o(this._config.reference)?t=r(this._config.reference):\"object\"==typeof this._config.reference&&(t=this._config.reference);const e=this._getPopperConfig();this._popper=bi(t,this._menu,e)}_isShown(){return this._menu.classList.contains($i)}_getPlacement(){const t=this._parent;if(t.classList.contains(\"dropend\"))return Wi;if(t.classList.contains(\"dropstart\"))return Bi;if(t.classList.contains(\"dropup-center\"))return\"top\";if(t.classList.contains(\"dropdown-center\"))return\"bottom\";const e=\"end\"===getComputedStyle(this._menu).getPropertyValue(\"--bs-position\").trim();return t.classList.contains(\"dropup\")?e?Mi:ji:e?Hi:Fi}_detectNavbar(){return null!==this._element.closest(\".navbar\")}_getOffset(){const{offset:t}=this._config;return\"string\"==typeof t?t.split(\",\").map((t=>Number.parseInt(t,10))):\"function\"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:\"preventOverflow\",options:{boundary:this._config.boundary}},{name:\"offset\",options:{offset:this._getOffset()}}]};return(this._inNavbar||\"static\"===this._config.display)&&(F.setDataAttribute(this._menu,\"popper\",\"static\"),t.modifiers=[{name:\"applyStyles\",enabled:!1}]),{...t,...g(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=z.find(\".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)\",this._menu).filter((t=>a(t)));i.length&&b(i,e,t===Ti,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=qi.getOrCreateInstance(this,t);if(\"string\"==typeof t){if(void 0===e[t])throw new TypeError(`No method named \"${t}\"`);e[t]()}}))}static clearMenus(t){if(2===t.button||\"keyup\"===t.type&&\"Tab\"!==t.key)return;const e=z.find(Ni);for(const i of e){const e=qi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||\"inside\"===e._config.autoClose&&!s||\"outside\"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&(\"keyup\"===t.type&&\"Tab\"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};\"click\"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i=\"Escape\"===t.key,n=[Ei,Ti].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ii)?this:z.prev(this,Ii)[0]||z.next(this,Ii)[0]||z.findOne(Ii,t.delegateTarget.parentNode),o=qi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}N.on(document,Si,Ii,qi.dataApiKeydownHandler),N.on(document,Si,Pi,qi.dataApiKeydownHandler),N.on(document,Li,qi.clearMenus),N.on(document,Di,qi.clearMenus),N.on(document,Li,Ii,(function(t){t.preventDefault(),qi.getOrCreateInstance(this).toggle()})),m(qi);const Vi=\"backdrop\",Ki=\"show\",Qi=`mousedown.bs.${Vi}`,Xi={className:\"modal-backdrop\",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:\"body\"},Yi={className:\"string\",clickCallback:\"(function|null)\",isAnimated:\"boolean\",isVisible:\"boolean\",rootElement:\"(element|string)\"};class Ui extends H{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Xi}static get DefaultType(){return Yi}static get NAME(){return Vi}show(t){if(!this._config.isVisible)return void g(t);this._append();const e=this._getElement();this._config.isAnimated&&d(e),e.classList.add(Ki),this._emulateAnimation((()=>{g(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Ki),this._emulateAnimation((()=>{this.dispose(),g(t)}))):g(t)}dispose(){this._isAppended&&(N.off(this._element,Qi),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement(\"div\");t.className=this._config.className,this._config.isAnimated&&t.classList.add(\"fade\"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=r(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),N.on(t,Qi,(()=>{g(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){_(t,this._getElement(),this._config.isAnimated)}}const Gi=\".bs.focustrap\",Ji=`focusin${Gi}`,Zi=`keydown.tab${Gi}`,tn=\"backward\",en={autofocus:!0,trapElement:null},nn={autofocus:\"boolean\",trapElement:\"element\"};class sn extends H{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return en}static get DefaultType(){return nn}static get NAME(){return\"focustrap\"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),N.off(document,Gi),N.on(document,Ji,(t=>this._handleFocusin(t))),N.on(document,Zi,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,N.off(document,Gi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=z.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===tn?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){\"Tab\"===t.key&&(this._lastTabNavDirection=t.shiftKey?tn:\"forward\")}}const on=\".fixed-top, .fixed-bottom, .is-fixed, .sticky-top\",rn=\".sticky-top\",an=\"padding-right\",ln=\"margin-right\";class cn{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,an,(e=>e+t)),this._setElementAttributes(on,an,(e=>e+t)),this._setElementAttributes(rn,ln,(e=>e-t))}reset(){this._resetElementAttributes(this._element,\"overflow\"),this._resetElementAttributes(this._element,an),this._resetElementAttributes(on,an),this._resetElementAttributes(rn,ln)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,\"overflow\"),this._element.style.overflow=\"hidden\"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&F.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=F.getDataAttribute(t,e);null!==i?(F.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(o(t))e(t);else for(const i of z.find(t,this._element))e(i)}}const hn=\".bs.modal\",dn=`hide${hn}`,un=`hidePrevented${hn}`,fn=`hidden${hn}`,pn=`show${hn}`,mn=`shown${hn}`,gn=`resize${hn}`,_n=`click.dismiss${hn}`,bn=`mousedown.dismiss${hn}`,vn=`keydown.dismiss${hn}`,yn=`click${hn}.data-api`,wn=\"modal-open\",An=\"show\",En=\"modal-static\",Tn={backdrop:!0,focus:!0,keyboard:!0},Cn={backdrop:\"(boolean|string)\",focus:\"boolean\",keyboard:\"boolean\"};class On extends W{constructor(t,e){super(t,e),this._dialog=z.findOne(\".modal-dialog\",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new cn,this._addEventListeners()}static get Default(){return Tn}static get DefaultType(){return Cn}static get NAME(){return\"modal\"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||N.trigger(this._element,pn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(wn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(N.trigger(this._element,dn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(An),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){N.off(window,hn),N.off(this._dialog,hn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ui({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display=\"block\",this._element.removeAttribute(\"aria-hidden\"),this._element.setAttribute(\"aria-modal\",!0),this._element.setAttribute(\"role\",\"dialog\"),this._element.scrollTop=0;const e=z.findOne(\".modal-body\",this._dialog);e&&(e.scrollTop=0),d(this._element),this._element.classList.add(An),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,N.trigger(this._element,mn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){N.on(this._element,vn,(t=>{\"Escape\"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),N.on(window,gn,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),N.on(this._element,bn,(t=>{N.one(this._element,_n,(e=>{this._element===t.target&&this._element===e.target&&(\"static\"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display=\"none\",this._element.setAttribute(\"aria-hidden\",!0),this._element.removeAttribute(\"aria-modal\"),this._element.removeAttribute(\"role\"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(wn),this._resetAdjustments(),this._scrollBar.reset(),N.trigger(this._element,fn)}))}_isAnimated(){return this._element.classList.contains(\"fade\")}_triggerBackdropTransition(){if(N.trigger(this._element,un).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;\"hidden\"===e||this._element.classList.contains(En)||(t||(this._element.style.overflowY=\"hidden\"),this._element.classList.add(En),this._queueCallback((()=>{this._element.classList.remove(En),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=p()?\"paddingLeft\":\"paddingRight\";this._element.style[t]=`${e}px`}if(!i&&t){const t=p()?\"paddingRight\":\"paddingLeft\";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft=\"\",this._element.style.paddingRight=\"\"}static jQueryInterface(t,e){return this.each((function(){const i=On.getOrCreateInstance(this,t);if(\"string\"==typeof t){if(void 0===i[t])throw new TypeError(`No method named \"${t}\"`);i[t](e)}}))}}N.on(document,yn,'[data-bs-toggle=\"modal\"]',(function(t){const e=z.getElementFromSelector(this);[\"A\",\"AREA\"].includes(this.tagName)&&t.preventDefault(),N.one(e,pn,(t=>{t.defaultPrevented||N.one(e,fn,(()=>{a(this)&&this.focus()}))}));const i=z.findOne(\".modal.show\");i&&On.getInstance(i).hide(),On.getOrCreateInstance(e).toggle(this)})),R(On),m(On);const xn=\".bs.offcanvas\",kn=\".data-api\",Ln=`load${xn}${kn}`,Sn=\"show\",Dn=\"showing\",$n=\"hiding\",In=\".offcanvas.show\",Nn=`show${xn}`,Pn=`shown${xn}`,jn=`hide${xn}`,Mn=`hidePrevented${xn}`,Fn=`hidden${xn}`,Hn=`resize${xn}`,Wn=`click${xn}${kn}`,Bn=`keydown.dismiss${xn}`,zn={backdrop:!0,keyboard:!0,scroll:!1},Rn={backdrop:\"(boolean|string)\",keyboard:\"boolean\",scroll:\"boolean\"};class qn extends W{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return zn}static get DefaultType(){return Rn}static get NAME(){return\"offcanvas\"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||N.trigger(this._element,Nn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new cn).hide(),this._element.setAttribute(\"aria-modal\",!0),this._element.setAttribute(\"role\",\"dialog\"),this._element.classList.add(Dn),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Sn),this._element.classList.remove(Dn),N.trigger(this._element,Pn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(N.trigger(this._element,jn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add($n),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Sn,$n),this._element.removeAttribute(\"aria-modal\"),this._element.removeAttribute(\"role\"),this._config.scroll||(new cn).reset(),N.trigger(this._element,Fn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Ui({className:\"offcanvas-backdrop\",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{\"static\"!==this._config.backdrop?this.hide():N.trigger(this._element,Mn)}:null})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_addEventListeners(){N.on(this._element,Bn,(t=>{\"Escape\"===t.key&&(this._config.keyboard?this.hide():N.trigger(this._element,Mn))}))}static jQueryInterface(t){return this.each((function(){const e=qn.getOrCreateInstance(this,t);if(\"string\"==typeof t){if(void 0===e[t]||t.startsWith(\"_\")||\"constructor\"===t)throw new TypeError(`No method named \"${t}\"`);e[t](this)}}))}}N.on(document,Wn,'[data-bs-toggle=\"offcanvas\"]',(function(t){const e=z.getElementFromSelector(this);if([\"A\",\"AREA\"].includes(this.tagName)&&t.preventDefault(),l(this))return;N.one(e,Fn,(()=>{a(this)&&this.focus()}));const i=z.findOne(In);i&&i!==e&&qn.getInstance(i).hide(),qn.getOrCreateInstance(e).toggle(this)})),N.on(window,Ln,(()=>{for(const t of z.find(In))qn.getOrCreateInstance(t).show()})),N.on(window,Hn,(()=>{for(const t of z.find(\"[aria-modal][class*=show][class*=offcanvas-]\"))\"fixed\"!==getComputedStyle(t).position&&qn.getOrCreateInstance(t).hide()})),R(qn),m(qn);const Vn={\"*\":[\"class\",\"dir\",\"id\",\"lang\",\"role\",/^aria-[\\w-]*$/i],a:[\"target\",\"href\",\"title\",\"rel\"],area:[],b:[],br:[],col:[],code:[],dd:[],div:[],dl:[],dt:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:[\"src\",\"srcset\",\"alt\",\"title\",\"width\",\"height\"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Kn=new Set([\"background\",\"cite\",\"href\",\"itemtype\",\"longdesc\",\"poster\",\"src\",\"xlink:href\"]),Qn=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Xn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Kn.has(i)||Boolean(Qn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Yn={allowList:Vn,content:{},extraClass:\"\",html:!1,sanitize:!0,sanitizeFn:null,template:\"<div></div>\"},Un={allowList:\"object\",content:\"object\",extraClass:\"(string|function)\",html:\"boolean\",sanitize:\"boolean\",sanitizeFn:\"(null|function)\",template:\"string\"},Gn={entry:\"(string|element|function|null)\",selector:\"(string|element)\"};class Jn extends H{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Yn}static get DefaultType(){return Un}static get NAME(){return\"TemplateFactory\"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement(\"div\");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(\" \")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Gn)}_setContent(t,e,i){const n=z.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?o(e)?this._putElementInTemplate(r(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&\"function\"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,\"text/html\"),s=[].concat(...n.body.querySelectorAll(\"*\"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e[\"*\"]||[],e[i]||[]);for(const e of n)Xn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return g(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML=\"\",void e.append(t);e.textContent=t.textContent}}const Zn=new Set([\"sanitize\",\"allowList\",\"sanitizeFn\"]),ts=\"fade\",es=\"show\",is=\".modal\",ns=\"hide.bs.modal\",ss=\"hover\",os=\"focus\",rs={AUTO:\"auto\",TOP:\"top\",RIGHT:p()?\"left\":\"right\",BOTTOM:\"bottom\",LEFT:p()?\"right\":\"left\"},as={allowList:Vn,animation:!0,boundary:\"clippingParents\",container:!1,customClass:\"\",delay:0,fallbackPlacements:[\"top\",\"right\",\"bottom\",\"left\"],html:!1,offset:[0,6],placement:\"top\",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',title:\"\",trigger:\"hover focus\"},ls={allowList:\"object\",animation:\"boolean\",boundary:\"(string|element)\",container:\"(string|element|boolean)\",customClass:\"(string|function)\",delay:\"(number|object)\",fallbackPlacements:\"array\",html:\"boolean\",offset:\"(array|string|function)\",placement:\"(string|function)\",popperConfig:\"(null|object|function)\",sanitize:\"boolean\",sanitizeFn:\"(null|function)\",selector:\"(string|boolean)\",template:\"string\",title:\"(string|element|function)\",trigger:\"string\"};class cs extends W{constructor(t,e){if(void 0===vi)throw new TypeError(\"Bootstrap's tooltips require Popper (https://popper.js.org)\");super(t,e),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return as}static get DefaultType(){return ls}static get NAME(){return\"tooltip\"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),N.off(this._element.closest(is),ns,this._hideModalHandler),this._element.getAttribute(\"data-bs-original-title\")&&this._element.setAttribute(\"title\",this._element.getAttribute(\"data-bs-original-title\")),this._disposePopper(),super.dispose()}show(){if(\"none\"===this._element.style.display)throw new Error(\"Please use show on visible elements\");if(!this._isWithContent()||!this._isEnabled)return;const t=N.trigger(this._element,this.constructor.eventName(\"show\")),e=(c(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute(\"aria-describedby\",i.getAttribute(\"id\"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),N.trigger(this._element,this.constructor.eventName(\"inserted\"))),this._popper=this._createPopper(i),i.classList.add(es),\"ontouchstart\"in document.documentElement)for(const t of[].concat(...document.body.children))N.on(t,\"mouseover\",h);this._queueCallback((()=>{N.trigger(this._element,this.constructor.eventName(\"shown\")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!N.trigger(this._element,this.constructor.eventName(\"hide\")).defaultPrevented){if(this._getTipElement().classList.remove(es),\"ontouchstart\"in document.documentElement)for(const t of[].concat(...document.body.children))N.off(t,\"mouseover\",h);this._activeTrigger.click=!1,this._activeTrigger[os]=!1,this._activeTrigger[ss]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute(\"aria-describedby\"),N.trigger(this._element,this.constructor.eventName(\"hidden\")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(ts,es),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute(\"id\",i),this._isAnimated()&&e.classList.add(ts),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Jn({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{\".tooltip-inner\":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute(\"data-bs-original-title\")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(ts)}_isShown(){return this.tip&&this.tip.classList.contains(es)}_createPopper(t){const e=g(this._config.placement,[this,t,this._element]),i=rs[e.toUpperCase()];return bi(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return\"string\"==typeof t?t.split(\",\").map((t=>Number.parseInt(t,10))):\"function\"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return g(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:\"flip\",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:\"offset\",options:{offset:this._getOffset()}},{name:\"preventOverflow\",options:{boundary:this._config.boundary}},{name:\"arrow\",options:{element:`.${this.constructor.NAME}-arrow`}},{name:\"preSetPlacement\",enabled:!0,phase:\"beforeMain\",fn:t=>{this._getTipElement().setAttribute(\"data-popper-placement\",t.state.placement)}}]};return{...e,...g(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(\" \");for(const e of t)if(\"click\"===e)N.on(this._element,this.constructor.eventName(\"click\"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if(\"manual\"!==e){const t=e===ss?this.constructor.eventName(\"mouseenter\"):this.constructor.eventName(\"focusin\"),i=e===ss?this.constructor.eventName(\"mouseleave\"):this.constructor.eventName(\"focusout\");N.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger[\"focusin\"===t.type?os:ss]=!0,e._enter()})),N.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger[\"focusout\"===t.type?os:ss]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},N.on(this._element.closest(is),ns,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute(\"title\");t&&(this._element.getAttribute(\"aria-label\")||this._element.textContent.trim()||this._element.setAttribute(\"aria-label\",t),this._element.setAttribute(\"data-bs-original-title\",t),this._element.removeAttribute(\"title\"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=F.getDataAttributes(this._element);for(const t of Object.keys(e))Zn.has(t)&&delete e[t];return t={...e,...\"object\"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:r(t.container),\"number\"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),\"number\"==typeof t.title&&(t.title=t.title.toString()),\"number\"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger=\"manual\",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=cs.getOrCreateInstance(this,t);if(\"string\"==typeof t){if(void 0===e[t])throw new TypeError(`No method named \"${t}\"`);e[t]()}}))}}m(cs);const hs={...cs.Default,content:\"\",offset:[0,8],placement:\"right\",template:'<div class=\"popover\" role=\"tooltip\"><div class=\"popover-arrow\"></div><h3 class=\"popover-header\"></h3><div class=\"popover-body\"></div></div>',trigger:\"click\"},ds={...cs.DefaultType,content:\"(null|string|element|function)\"};class us extends cs{static get Default(){return hs}static get DefaultType(){return ds}static get NAME(){return\"popover\"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{\".popover-header\":this._getTitle(),\".popover-body\":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=us.getOrCreateInstance(this,t);if(\"string\"==typeof t){if(void 0===e[t])throw new TypeError(`No method named \"${t}\"`);e[t]()}}))}}m(us);const fs=\".bs.scrollspy\",ps=`activate${fs}`,ms=`click${fs}`,gs=`load${fs}.data-api`,_s=\"active\",bs=\"[href]\",vs=\".nav-link\",ys=`${vs}, .nav-item > ${vs}, .list-group-item`,ws={offset:null,rootMargin:\"0px 0px -25%\",smoothScroll:!1,target:null,threshold:[.1,.5,1]},As={offset:\"(number|null)\",rootMargin:\"string\",smoothScroll:\"boolean\",target:\"element\",threshold:\"array\"};class Es extends W{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement=\"visible\"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return ws}static get DefaultType(){return As}static get NAME(){return\"scrollspy\"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=r(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,\"string\"==typeof t.threshold&&(t.threshold=t.threshold.split(\",\").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(N.off(this._config.target,ms),N.on(this._config.target,ms,bs,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:\"smooth\"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=z.find(bs,this._config.target);for(const e of t){if(!e.hash||l(e))continue;const t=z.findOne(decodeURI(e.hash),this._element);a(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(_s),this._activateParents(t),N.trigger(this._element,ps,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains(\"dropdown-item\"))z.findOne(\".dropdown-toggle\",t.closest(\".dropdown\")).classList.add(_s);else for(const e of z.parents(t,\".nav, .list-group\"))for(const t of z.prev(e,ys))t.classList.add(_s)}_clearActiveClass(t){t.classList.remove(_s);const e=z.find(`${bs}.${_s}`,t);for(const t of e)t.classList.remove(_s)}static jQueryInterface(t){return this.each((function(){const e=Es.getOrCreateInstance(this,t);if(\"string\"==typeof t){if(void 0===e[t]||t.startsWith(\"_\")||\"constructor\"===t)throw new TypeError(`No method named \"${t}\"`);e[t]()}}))}}N.on(window,gs,(()=>{for(const t of z.find('[data-bs-spy=\"scroll\"]'))Es.getOrCreateInstance(t)})),m(Es);const Ts=\".bs.tab\",Cs=`hide${Ts}`,Os=`hidden${Ts}`,xs=`show${Ts}`,ks=`shown${Ts}`,Ls=`click${Ts}`,Ss=`keydown${Ts}`,Ds=`load${Ts}`,$s=\"ArrowLeft\",Is=\"ArrowRight\",Ns=\"ArrowUp\",Ps=\"ArrowDown\",js=\"Home\",Ms=\"End\",Fs=\"active\",Hs=\"fade\",Ws=\"show\",Bs=\".dropdown-toggle\",zs=`:not(${Bs})`,Rs='[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]',qs=`.nav-link${zs}, .list-group-item${zs}, [role=\"tab\"]${zs}, ${Rs}`,Vs=`.${Fs}[data-bs-toggle=\"tab\"], .${Fs}[data-bs-toggle=\"pill\"], .${Fs}[data-bs-toggle=\"list\"]`;class Ks extends W{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role=\"tablist\"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),N.on(this._element,Ss,(t=>this._keydown(t))))}static get NAME(){return\"tab\"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?N.trigger(e,Cs,{relatedTarget:t}):null;N.trigger(t,xs,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(Fs),this._activate(z.getElementFromSelector(t)),this._queueCallback((()=>{\"tab\"===t.getAttribute(\"role\")?(t.removeAttribute(\"tabindex\"),t.setAttribute(\"aria-selected\",!0),this._toggleDropDown(t,!0),N.trigger(t,ks,{relatedTarget:e})):t.classList.add(Ws)}),t,t.classList.contains(Hs)))}_deactivate(t,e){t&&(t.classList.remove(Fs),t.blur(),this._deactivate(z.getElementFromSelector(t)),this._queueCallback((()=>{\"tab\"===t.getAttribute(\"role\")?(t.setAttribute(\"aria-selected\",!1),t.setAttribute(\"tabindex\",\"-1\"),this._toggleDropDown(t,!1),N.trigger(t,Os,{relatedTarget:e})):t.classList.remove(Ws)}),t,t.classList.contains(Hs)))}_keydown(t){if(![$s,Is,Ns,Ps,js,Ms].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!l(t)));let i;if([js,Ms].includes(t.key))i=e[t.key===js?0:e.length-1];else{const n=[Is,Ps].includes(t.key);i=b(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),Ks.getOrCreateInstance(i).show())}_getChildren(){return z.find(qs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,\"role\",\"tablist\");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute(\"aria-selected\",e),i!==t&&this._setAttributeIfNotExists(i,\"role\",\"presentation\"),e||t.setAttribute(\"tabindex\",\"-1\"),this._setAttributeIfNotExists(t,\"role\",\"tab\"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=z.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,\"role\",\"tabpanel\"),t.id&&this._setAttributeIfNotExists(e,\"aria-labelledby\",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains(\"dropdown\"))return;const n=(t,n)=>{const s=z.findOne(t,i);s&&s.classList.toggle(n,e)};n(Bs,Fs),n(\".dropdown-menu\",Ws),i.setAttribute(\"aria-expanded\",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(Fs)}_getInnerElement(t){return t.matches(qs)?t:z.findOne(qs,t)}_getOuterElement(t){return t.closest(\".nav-item, .list-group-item\")||t}static jQueryInterface(t){return this.each((function(){const e=Ks.getOrCreateInstance(this);if(\"string\"==typeof t){if(void 0===e[t]||t.startsWith(\"_\")||\"constructor\"===t)throw new TypeError(`No method named \"${t}\"`);e[t]()}}))}}N.on(document,Ls,Rs,(function(t){[\"A\",\"AREA\"].includes(this.tagName)&&t.preventDefault(),l(this)||Ks.getOrCreateInstance(this).show()})),N.on(window,Ds,(()=>{for(const t of z.find(Vs))Ks.getOrCreateInstance(t)})),m(Ks);const Qs=\".bs.toast\",Xs=`mouseover${Qs}`,Ys=`mouseout${Qs}`,Us=`focusin${Qs}`,Gs=`focusout${Qs}`,Js=`hide${Qs}`,Zs=`hidden${Qs}`,to=`show${Qs}`,eo=`shown${Qs}`,io=\"hide\",no=\"show\",so=\"showing\",oo={animation:\"boolean\",autohide:\"boolean\",delay:\"number\"},ro={animation:!0,autohide:!0,delay:5e3};class ao extends W{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return ro}static get DefaultType(){return oo}static get NAME(){return\"toast\"}show(){N.trigger(this._element,to).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add(\"fade\"),this._element.classList.remove(io),d(this._element),this._element.classList.add(no,so),this._queueCallback((()=>{this._element.classList.remove(so),N.trigger(this._element,eo),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(N.trigger(this._element,Js).defaultPrevented||(this._element.classList.add(so),this._queueCallback((()=>{this._element.classList.add(io),this._element.classList.remove(so,no),N.trigger(this._element,Zs)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(no),super.dispose()}isShown(){return this._element.classList.contains(no)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case\"mouseover\":case\"mouseout\":this._hasMouseInteraction=e;break;case\"focusin\":case\"focusout\":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){N.on(this._element,Xs,(t=>this._onInteraction(t,!0))),N.on(this._element,Ys,(t=>this._onInteraction(t,!1))),N.on(this._element,Us,(t=>this._onInteraction(t,!0))),N.on(this._element,Gs,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ao.getOrCreateInstance(this,t);if(\"string\"==typeof t){if(void 0===e[t])throw new TypeError(`No method named \"${t}\"`);e[t](this)}}))}}return R(ao),m(ao),{Alert:Q,Button:Y,Carousel:xt,Collapse:Bt,Dropdown:qi,Modal:On,Offcanvas:qn,Popover:us,ScrollSpy:Es,Tab:Ks,Toast:ao,Tooltip:cs}}));\n//# sourceMappingURL=bootstrap.bundle.min.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL2Rpc3QvanMvYm9vdHN0cmFwLmJ1bmRsZS5taW4uanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGVBQWUsS0FBb0Qsb0JBQW9CLENBQW1ILENBQUMsa0JBQWtCLGFBQWEsbUJBQW1CLFdBQVcsMkJBQTJCLGlCQUFpQiw2SEFBNkgsd0JBQXdCLElBQUksd0RBQXdELG9CQUFvQixpQkFBaUIscUNBQXFDLG9HQUFvRyxjQUFjLGNBQWMsOEJBQThCLG9MQUFvTCxpREFBaUQsMEdBQTBHLGVBQWUsVUFBVSw2QkFBNkIsZ0NBQWdDLHFCQUFxQixTQUFTLHNMQUFzTCxzREFBc0QscUNBQXFDLHdCQUF3QixzQ0FBc0MsbUVBQW1FLFNBQVMsT0FBTyxlQUFlLGdKQUFnSixNQUFNLE9BQU8sWUFBWSxNQUFNLHlCQUF5QixzR0FBc0csK0ZBQStGLHFCQUFxQixrQkFBa0IsK0RBQStELHVCQUF1QixhQUFhLGVBQWUsSUFBSSx1Q0FBdUMsNEJBQTRCLG9EQUFvRCxvR0FBb0csT0FBTyxTQUFTLFVBQVUsU0FBUyxJQUFJLCtDQUErQyx5Q0FBeUMsUUFBUSxLQUFLLGVBQWUsaUJBQWlCLG1CQUFtQix5RkFBeUYsaURBQWlELFFBQVEsU0FBUyw2Q0FBNkMsMmlCQUEyaUIsZ0JBQWdCLGFBQWEsRUFBRSxJQUFJLElBQUksbUJBQW1CLGNBQWMsYUFBYSxpQ0FBaUMsTUFBTSx1QkFBdUIsNEVBQTRFLGtCQUFrQixzQ0FBc0MsV0FBVywrQkFBK0Isc0JBQXNCLGlDQUFpQyxvQkFBb0IsV0FBVyx1QkFBdUIsNEhBQTRILE9BQU8sNkJBQTZCLG9CQUFvQix1Q0FBdUMsaURBQWlELHFCQUFxQiw4QkFBOEIsUUFBUSxTQUFTLEdBQUcsWUFBWSxxREFBcUQsaUJBQWlCLGdEQUFnRCxzQkFBc0IscUJBQXFCLFlBQVksaUJBQWlCLDhDQUE4QyxNQUFNLG9HQUFvRyxzQkFBc0Isb0JBQW9CLG1FQUFtRSxvQkFB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QUcsZ0JBQWdCLEdBQUcsWUFBWSxHQUFHLGNBQWMsR0FBRyxZQUFZLEdBQUcsYUFBYSxHQUFHLHVDQUF1QyxzREFBc0QsS0FBSyxvQ0FBb0MsbUJBQW1CLGlCQUFpQixnSEFBZ0gscUJBQXFCLFVBQVUseUJBQXlCLFVBQVUsa0JBQWtCLGNBQWMsT0FBTyxpUEFBaVAseUZBQXlGLHlDQUF5QyxPQUFPLDBIQUEwSCxrR0FBa0csMENBQTBDLFVBQVUsd0ZBQXdGLFVBQVUsNENBQTRDLHFCQUFxQixpSEFBaUgsWUFBWSx3QkFBd0Isb0JBQW9CLGVBQWUsMkRBQTJELE1BQU0sNERBQTRELHNDQUFzQyx3QkFBd0Isd0VBQXdFLGdCQUFnQix3TkFBd04sZ0JBQWdCLCtDQUErQywwQkFBMEIsNkJBQTZCLHVDQUF1Qyx1QkFBdUIseURBQXlELEVBQUUsSUFBSSxZQUFZLElBQUksb0JBQW9CLCtIQUErSDtBQUNoajlFIiwic291cmNlcyI6WyJDOlxcVXNlcnNcXFBpbmVzdWNjZWVkXFxEZXNrdG9wXFxXb3JrU3BhY2VcXHRlc3R3aWRnZXRcXG5vZGVfbW9kdWxlc1xcYm9vdHN0cmFwXFxkaXN0XFxqc1xcYm9vdHN0cmFwLmJ1bmRsZS5taW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gICogQm9vdHN0cmFwIHY1LjMuMyAoaHR0cHM6Ly9nZXRib290c3RyYXAuY29tLylcbiAgKiBDb3B5cmlnaHQgMjAxMS0yMDI0IFRoZSBCb290c3RyYXAgQXV0aG9ycyAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2dyYXBocy9jb250cmlidXRvcnMpXG4gICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gICovXG4hZnVuY3Rpb24odCxlKXtcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz1lKCk6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShlKToodD1cInVuZGVmaW5lZFwiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOnR8fHNlbGYpLmJvb3RzdHJhcD1lKCl9KHRoaXMsKGZ1bmN0aW9uKCl7XCJ1c2Ugc3RyaWN0XCI7Y29uc3QgdD1uZXcgTWFwLGU9e3NldChlLGksbil7dC5oYXMoZSl8fHQuc2V0KGUsbmV3IE1hcCk7Y29uc3Qgcz10LmdldChlKTtzLmhhcyhpKXx8MD09PXMuc2l6ZT9zLnNldChpLG4pOmNvbnNvbGUuZXJyb3IoYEJvb3RzdHJhcCBkb2Vzbid0IGFsbG93IG1vcmUgdGhhbiBvbmUgaW5zdGFuY2UgcGVyIGVsZW1lbnQuIEJvdW5kIGluc3RhbmNlOiAke0FycmF5LmZyb20ocy5rZXlzKCkpWzBdfS5gKX0sZ2V0OihlLGkpPT50LmhhcyhlKSYmdC5nZXQoZSkuZ2V0KGkpfHxudWxsLHJlbW92ZShlLGkpe2lmKCF0LmhhcyhlKSlyZXR1cm47Y29uc3Qgbj10LmdldChlKTtuLmRlbGV0ZShpKSwwPT09bi5zaXplJiZ0LmRlbGV0ZShlKX19LGk9XCJ0cmFuc2l0aW9uZW5kXCIsbj10PT4odCYmd2luZG93LkNTUyYmd2luZG93LkNTUy5lc2NhcGUmJih0PXQucmVwbGFjZSgvIyhbXlxcc1wiIyddKykvZywoKHQsZSk9PmAjJHtDU1MuZXNjYXBlKGUpfWApKSksdCkscz10PT57dC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudChpKSl9LG89dD0+ISghdHx8XCJvYmplY3RcIiE9dHlwZW9mIHQpJiYodm9pZCAwIT09dC5qcXVlcnkmJih0PXRbMF0pLHZvaWQgMCE9PXQubm9kZVR5cGUpLHI9dD0+byh0KT90LmpxdWVyeT90WzBdOnQ6XCJzdHJpbmdcIj09dHlwZW9mIHQmJnQubGVuZ3RoPjA/ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihuKHQpKTpudWxsLGE9dD0+e2lmKCFvKHQpfHwwPT09dC5nZXRDbGllbnRSZWN0cygpLmxlbmd0aClyZXR1cm4hMTtjb25zdCBlPVwidmlzaWJsZVwiPT09Z2V0Q29tcHV0ZWRTdHlsZSh0KS5nZXRQcm9wZXJ0eVZhbHVlKFwidmlzaWJpbGl0eVwiKSxpPXQuY2xvc2VzdChcImRldGFpbHM6bm90KFtvcGVuXSlcIik7aWYoIWkpcmV0dXJuIGU7aWYoaSE9PXQpe2NvbnN0IGU9dC5jbG9zZXN0KFwic3VtbWFyeVwiKTtpZihlJiZlLnBhcmVudE5vZGUhPT1pKXJldHVybiExO2lmKG51bGw9PT1lKXJldHVybiExfXJldHVybiBlfSxsPXQ9PiF0fHx0Lm5vZGVUeXBlIT09Tm9kZS5FTEVNRU5UX05PREV8fCEhdC5jbGFzc0xpc3QuY29udGFpbnMoXCJkaXNhYmxlZFwiKXx8KHZvaWQgMCE9PXQuZGlzYWJsZWQ/dC5kaXNhYmxlZDp0Lmhhc0F0dHJpYnV0ZShcImRpc2FibGVkXCIpJiZcImZhbHNlXCIhPT10LmdldEF0dHJpYnV0ZShcImRpc2FibGVkXCIpKSxjPXQ9PntpZighZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmF0dGFjaFNoYWRvdylyZXR1cm4gbnVsbDtpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiB0LmdldFJvb3ROb2RlKXtjb25zdCBlPXQuZ2V0Um9vdE5vZGUoKTtyZXR1cm4gZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3Q/ZTpudWxsfXJldHVybiB0IGluc3RhbmNlb2YgU2hhZG93Um9vdD90OnQucGFyZW50Tm9kZT9jKHQucGFyZW50Tm9kZSk6bnVsbH0saD0oKT0+e30sZD10PT57dC5vZmZzZXRIZWlnaHR9LHU9KCk9PndpbmRvdy5qUXVlcnkmJiFkb2N1bWVudC5ib2R5Lmhhc0F0dHJpYnV0ZShcImRhdGEtYnMtbm8tanF1ZXJ5XCIpP3dpbmRvdy5qUXVlcnk6bnVsbCxmPVtdLHA9KCk9PlwicnRsXCI9PT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZGlyLG09dD0+e3ZhciBlO2U9KCk9Pntjb25zdCBlPXUoKTtpZihlKXtjb25zdCBpPXQuTkFNRSxuPWUuZm5baV07ZS5mbltpXT10LmpRdWVyeUludGVyZmFjZSxlLmZuW2ldLkNvbnN0cnVjdG9yPXQsZS5mbltpXS5ub0NvbmZsaWN0PSgpPT4oZS5mbltpXT1uLHQualF1ZXJ5SW50ZXJmYWNlKX19LFwibG9hZGluZ1wiPT09ZG9jdW1lbnQucmVhZHlTdGF0ZT8oZi5sZW5ndGh8fGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJET01Db250ZW50TG9hZGVkXCIsKCgpPT57Zm9yKGNvbnN0IHQgb2YgZil0KCl9KSksZi5wdXNoKGUpKTplKCl9LGc9KHQsZT1bXSxpPXQpPT5cImZ1bmN0aW9uXCI9PXR5cGVvZiB0P3QoLi4uZSk6aSxfPSh0LGUsbj0hMCk9PntpZighbilyZXR1cm4gdm9pZCBnKHQpO2NvbnN0IG89KHQ9PntpZighdClyZXR1cm4gMDtsZXR7dHJhbnNpdGlvbkR1cmF0aW9uOmUsdHJhbnNpdGlvbkRlbGF5Oml9PXdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHQpO2NvbnN0IG49TnVtYmVyLnBhcnNlRmxvYXQoZSkscz1OdW1iZXIucGFyc2VGbG9hdChpKTtyZXR1cm4gbnx8cz8oZT1lLnNwbGl0KFwiLFwiKVswXSxpPWkuc3BsaXQoXCIsXCIpWzBdLDFlMyooTnVtYmVyLnBhcnNlRmxvYXQoZSkrTnVtYmVyLnBhcnNlRmxvYXQoaSkpKTowfSkoZSkrNTtsZXQgcj0hMTtjb25zdCBhPSh7dGFyZ2V0Om59KT0+e249PT1lJiYocj0hMCxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoaSxhKSxnKHQpKX07ZS5hZGRFdmVudExpc3RlbmVyKGksYSksc2V0VGltZW91dCgoKCk9PntyfHxzKGUpfSksbyl9LGI9KHQsZSxpLG4pPT57Y29uc3Qgcz10Lmxlbmd0aDtsZXQgbz10LmluZGV4T2YoZSk7cmV0dXJuLTE9PT1vPyFpJiZuP3Rbcy0xXTp0WzBdOihvKz1pPzE6LTEsbiYmKG89KG8rcyklcyksdFtNYXRoLm1heCgwLE1hdGgubWluKG8scy0xKSldKX0sdj0vW14uXSooPz1cXC4uKilcXC58LiovLHk9L1xcLi4qLyx3PS86OlxcZCskLyxBPXt9O2xldCBFPTE7Y29uc3QgVD17bW91c2VlbnRlcjpcIm1vdXNlb3ZlclwiLG1vdXNlbGVhdmU6XCJtb3VzZW91dFwifSxDPW5ldyBTZXQoW1wiY2xpY2tcIixcImRibGNsaWNrXCIsXCJtb3VzZXVwXCIsXCJtb3VzZWRvd25cIixcImNvbnRleHRtZW51XCIsXCJtb3VzZXdoZWVsXCIsXCJET01Nb3VzZVNjcm9sbFwiLFwibW91c2VvdmVyXCIsXCJtb3VzZW91dFwiLFwibW91c2Vtb3ZlXCIsXCJzZWxlY3RzdGFydFwiLFwic2VsZWN0ZW5kXCIsXCJrZXlkb3duXCIsXCJrZXlwcmVzc1wiLFwia2V5dXBcIixcIm9yaWVudGF0aW9uY2hhbmdlXCIsXCJ0b3VjaHN0YXJ0XCIsXCJ0b3VjaG1vdmVcIixcInRvdWNoZW5kXCIsXCJ0b3VjaGNhbmNlbFwiLFwicG9pbnRlcmRvd25cIixcInBvaW50ZXJtb3ZlXCIsXCJwb2ludGVydXBcIixcInBvaW50ZXJsZWF2ZVwiLFwicG9pbnRlcmNhbmNlbFwiLFwiZ2VzdHVyZXN0YXJ0XCIsXCJnZXN0dXJlY2hhbmdlXCIsXCJnZXN0dXJlZW5kXCIsXCJmb2N1c1wiLFwiYmx1clwiLFwiY2hhbmdlXCIsXCJyZXNldFwiLFwic2VsZWN0XCIsXCJzdWJtaXRcIixcImZvY3VzaW5cIixcImZvY3Vzb3V0XCIsXCJsb2FkXCIsXCJ1bmxvYWRcIixcImJlZm9yZXVubG9hZFwiLFwicmVzaXplXCIsXCJtb3ZlXCIsXCJET01Db250ZW50TG9hZGVkXCIsXCJyZWFkeXN0YXRlY2hhbmdlXCIsXCJlcnJvclwiLFwiYWJvcnRcIixcInNjcm9sbFwiXSk7ZnVuY3Rpb24gTyh0LGUpe3JldHVybiBlJiZgJHtlfTo6JHtFKyt9YHx8dC51aWRFdmVudHx8RSsrfWZ1bmN0aW9uIHgodCl7Y29uc3QgZT1PKHQpO3JldHVybiB0LnVpZEV2ZW50PWUsQVtlXT1BW2VdfHx7fSxBW2VdfWZ1bmN0aW9uIGsodCxlLGk9bnVsbCl7cmV0dXJuIE9iamVjdC52YWx1ZXModCkuZmluZCgodD0+dC5jYWxsYWJsZT09PWUmJnQuZGVsZWdhdGlvblNlbGVjdG9yPT09aSkpfWZ1bmN0aW9uIEwodCxlLGkpe2NvbnN0IG49XCJzdHJpbmdcIj09dHlwZW9mIGUscz1uP2k6ZXx8aTtsZXQgbz1JKHQpO3JldHVybiBDLmhhcyhvKXx8KG89dCksW24scyxvXX1mdW5jdGlvbiBTKHQsZSxpLG4scyl7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIGV8fCF0KXJldHVybjtsZXRbbyxyLGFdPUwoZSxpLG4pO2lmKGUgaW4gVCl7Y29uc3QgdD10PT5mdW5jdGlvbihlKXtpZighZS5yZWxhdGVkVGFyZ2V0fHxlLnJlbGF0ZWRUYXJnZXQhPT1lLmRlbGVnYXRlVGFyZ2V0JiYhZS5kZWxlZ2F0ZVRhcmdldC5jb250YWlucyhlLnJlbGF0ZWRUYXJnZXQpKXJldHVybiB0LmNhbGwodGhpcyxlKX07cj10KHIpfWNvbnN0IGw9eCh0KSxjPWxbYV18fChsW2FdPXt9KSxoPWsoYyxyLG8/aTpudWxsKTtpZihoKXJldHVybiB2b2lkKGgub25lT2ZmPWgub25lT2ZmJiZzKTtjb25zdCBkPU8ocixlLnJlcGxhY2UodixcIlwiKSksdT1vP2Z1bmN0aW9uKHQsZSxpKXtyZXR1cm4gZnVuY3Rpb24gbihzKXtjb25zdCBvPXQucXVlcnlTZWxlY3RvckFsbChlKTtmb3IobGV0e3RhcmdldDpyfT1zO3ImJnIhPT10aGlzO3I9ci5wYXJlbnROb2RlKWZvcihjb25zdCBhIG9mIG8paWYoYT09PXIpcmV0dXJuIFAocyx7ZGVsZWdhdGVUYXJnZXQ6cn0pLG4ub25lT2ZmJiZOLm9mZih0LHMudHlwZSxlLGkpLGkuYXBwbHkocixbc10pfX0odCxpLHIpOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIGZ1bmN0aW9uIGkobil7cmV0dXJuIFAobix7ZGVsZWdhdGVUYXJnZXQ6dH0pLGkub25lT2ZmJiZOLm9mZih0LG4udHlwZSxlKSxlLmFwcGx5KHQsW25dKX19KHQscik7dS5kZWxlZ2F0aW9uU2VsZWN0b3I9bz9pOm51bGwsdS5jYWxsYWJsZT1yLHUub25lT2ZmPXMsdS51aWRFdmVudD1kLGNbZF09dSx0LmFkZEV2ZW50TGlzdGVuZXIoYSx1LG8pfWZ1bmN0aW9uIEQodCxlLGksbixzKXtjb25zdCBvPWsoZVtpXSxuLHMpO28mJih0LnJlbW92ZUV2ZW50TGlzdGVuZXIoaSxvLEJvb2xlYW4ocykpLGRlbGV0ZSBlW2ldW28udWlkRXZlbnRdKX1mdW5jdGlvbiAkKHQsZSxpLG4pe2NvbnN0IHM9ZVtpXXx8e307Zm9yKGNvbnN0W28scl1vZiBPYmplY3QuZW50cmllcyhzKSlvLmluY2x1ZGVzKG4pJiZEKHQsZSxpLHIuY2FsbGFibGUsci5kZWxlZ2F0aW9uU2VsZWN0b3IpfWZ1bmN0aW9uIEkodCl7cmV0dXJuIHQ9dC5yZXBsYWNlKHksXCJcIiksVFt0XXx8dH1jb25zdCBOPXtvbih0LGUsaSxuKXtTKHQsZSxpLG4sITEpfSxvbmUodCxlLGksbil7Uyh0LGUsaSxuLCEwKX0sb2ZmKHQsZSxpLG4pe2lmKFwic3RyaW5nXCIhPXR5cGVvZiBlfHwhdClyZXR1cm47Y29uc3RbcyxvLHJdPUwoZSxpLG4pLGE9ciE9PWUsbD14KHQpLGM9bFtyXXx8e30saD1lLnN0YXJ0c1dpdGgoXCIuXCIpO2lmKHZvaWQgMD09PW8pe2lmKGgpZm9yKGNvbnN0IGkgb2YgT2JqZWN0LmtleXMobCkpJCh0LGwsaSxlLnNsaWNlKDEpKTtmb3IoY29uc3RbaSxuXW9mIE9iamVjdC5lbnRyaWVzKGMpKXtjb25zdCBzPWkucmVwbGFjZSh3LFwiXCIpO2EmJiFlLmluY2x1ZGVzKHMpfHxEKHQsbCxyLG4uY2FsbGFibGUsbi5kZWxlZ2F0aW9uU2VsZWN0b3IpfX1lbHNle2lmKCFPYmplY3Qua2V5cyhjKS5sZW5ndGgpcmV0dXJuO0QodCxsLHIsbyxzP2k6bnVsbCl9fSx0cmlnZ2VyKHQsZSxpKXtpZihcInN0cmluZ1wiIT10eXBlb2YgZXx8IXQpcmV0dXJuIG51bGw7Y29uc3Qgbj11KCk7bGV0IHM9bnVsbCxvPSEwLHI9ITAsYT0hMTtlIT09SShlKSYmbiYmKHM9bi5FdmVudChlLGkpLG4odCkudHJpZ2dlcihzKSxvPSFzLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkscj0hcy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpLGE9cy5pc0RlZmF1bHRQcmV2ZW50ZWQoKSk7Y29uc3QgbD1QKG5ldyBFdmVudChlLHtidWJibGVzOm8sY2FuY2VsYWJsZTohMH0pLGkpO3JldHVybiBhJiZsLnByZXZlbnREZWZhdWx0KCksciYmdC5kaXNwYXRjaEV2ZW50KGwpLGwuZGVmYXVsdFByZXZlbnRlZCYmcyYmcy5wcmV2ZW50RGVmYXVsdCgpLGx9fTtmdW5jdGlvbiBQKHQsZT17fSl7Zm9yKGNvbnN0W2ksbl1vZiBPYmplY3QuZW50cmllcyhlKSl0cnl7dFtpXT1ufWNhdGNoKGUpe09iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGkse2NvbmZpZ3VyYWJsZTohMCxnZXQ6KCk9Pm59KX1yZXR1cm4gdH1mdW5jdGlvbiBqKHQpe2lmKFwidHJ1ZVwiPT09dClyZXR1cm4hMDtpZihcImZhbHNlXCI9PT10KXJldHVybiExO2lmKHQ9PT1OdW1iZXIodCkudG9TdHJpbmcoKSlyZXR1cm4gTnVtYmVyKHQpO2lmKFwiXCI9PT10fHxcIm51bGxcIj09PXQpcmV0dXJuIG51bGw7aWYoXCJzdHJpbmdcIiE9dHlwZW9mIHQpcmV0dXJuIHQ7dHJ5e3JldHVybiBKU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudCh0KSl9Y2F0Y2goZSl7cmV0dXJuIHR9fWZ1bmN0aW9uIE0odCl7cmV0dXJuIHQucmVwbGFjZSgvW0EtWl0vZywodD0+YC0ke3QudG9Mb3dlckNhc2UoKX1gKSl9Y29uc3QgRj17c2V0RGF0YUF0dHJpYnV0ZSh0LGUsaSl7dC5zZXRBdHRyaWJ1dGUoYGRhdGEtYnMtJHtNKGUpfWAsaSl9LHJlbW92ZURhdGFBdHRyaWJ1dGUodCxlKXt0LnJlbW92ZUF0dHJpYnV0ZShgZGF0YS1icy0ke00oZSl9YCl9LGdldERhdGFBdHRyaWJ1dGVzKHQpe2lmKCF0KXJldHVybnt9O2NvbnN0IGU9e30saT1PYmplY3Qua2V5cyh0LmRhdGFzZXQpLmZpbHRlcigodD0+dC5zdGFydHNXaXRoKFwiYnNcIikmJiF0LnN0YXJ0c1dpdGgoXCJic0NvbmZpZ1wiKSkpO2Zvcihjb25zdCBuIG9mIGkpe2xldCBpPW4ucmVwbGFjZSgvXmJzLyxcIlwiKTtpPWkuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkraS5zbGljZSgxLGkubGVuZ3RoKSxlW2ldPWoodC5kYXRhc2V0W25dKX1yZXR1cm4gZX0sZ2V0RGF0YUF0dHJpYnV0ZToodCxlKT0+aih0LmdldEF0dHJpYnV0ZShgZGF0YS1icy0ke00oZSl9YCkpfTtjbGFzcyBIe3N0YXRpYyBnZXQgRGVmYXVsdCgpe3JldHVybnt9fXN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKXtyZXR1cm57fX1zdGF0aWMgZ2V0IE5BTUUoKXt0aHJvdyBuZXcgRXJyb3IoJ1lvdSBoYXZlIHRvIGltcGxlbWVudCB0aGUgc3RhdGljIG1ldGhvZCBcIk5BTUVcIiwgZm9yIGVhY2ggY29tcG9uZW50IScpfV9nZXRDb25maWcodCl7cmV0dXJuIHQ9dGhpcy5fbWVyZ2VDb25maWdPYmoodCksdD10aGlzLl9jb25maWdBZnRlck1lcmdlKHQpLHRoaXMuX3R5cGVDaGVja0NvbmZpZyh0KSx0fV9jb25maWdBZnRlck1lcmdlKHQpe3JldHVybiB0fV9tZXJnZUNvbmZpZ09iaih0LGUpe2NvbnN0IGk9byhlKT9GLmdldERhdGFBdHRyaWJ1dGUoZSxcImNvbmZpZ1wiKTp7fTtyZXR1cm57Li4udGhpcy5jb25zdHJ1Y3Rvci5EZWZhdWx0LC4uLlwib2JqZWN0XCI9PXR5cGVvZiBpP2k6e30sLi4ubyhlKT9GLmdldERhdGFBdHRyaWJ1dGVzKGUpOnt9LC4uLlwib2JqZWN0XCI9PXR5cGVvZiB0P3Q6e319fV90eXBlQ2hlY2tDb25maWcodCxlPXRoaXMuY29uc3RydWN0b3IuRGVmYXVsdFR5cGUpe2Zvcihjb25zdFtuLHNdb2YgT2JqZWN0LmVudHJpZXMoZSkpe2NvbnN0IGU9dFtuXSxyPW8oZSk/XCJlbGVtZW50XCI6bnVsbD09KGk9ZSk/YCR7aX1gOk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChpKS5tYXRjaCgvXFxzKFthLXpdKykvaSlbMV0udG9Mb3dlckNhc2UoKTtpZighbmV3IFJlZ0V4cChzKS50ZXN0KHIpKXRocm93IG5ldyBUeXBlRXJyb3IoYCR7dGhpcy5jb25zdHJ1Y3Rvci5OQU1FLnRvVXBwZXJDYXNlKCl9OiBPcHRpb24gXCIke259XCIgcHJvdmlkZWQgdHlwZSBcIiR7cn1cIiBidXQgZXhwZWN0ZWQgdHlwZSBcIiR7c31cIi5gKX12YXIgaX19Y2xhc3MgVyBleHRlbmRzIEh7Y29uc3RydWN0b3IodCxpKXtzdXBlcigpLCh0PXIodCkpJiYodGhpcy5fZWxlbWVudD10LHRoaXMuX2NvbmZpZz10aGlzLl9nZXRDb25maWcoaSksZS5zZXQodGhpcy5fZWxlbWVudCx0aGlzLmNvbnN0cnVjdG9yLkRBVEFfS0VZLHRoaXMpKX1kaXNwb3NlKCl7ZS5yZW1vdmUodGhpcy5fZWxlbWVudCx0aGlzLmNvbnN0cnVjdG9yLkRBVEFfS0VZKSxOLm9mZih0aGlzLl9lbGVtZW50LHRoaXMuY29uc3RydWN0b3IuRVZFTlRfS0VZKTtmb3IoY29uc3QgdCBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSl0aGlzW3RdPW51bGx9X3F1ZXVlQ2FsbGJhY2sodCxlLGk9ITApe18odCxlLGkpfV9nZXRDb25maWcodCl7cmV0dXJuIHQ9dGhpcy5fbWVyZ2VDb25maWdPYmoodCx0aGlzLl9lbGVtZW50KSx0PXRoaXMuX2NvbmZpZ0FmdGVyTWVyZ2UodCksdGhpcy5fdHlwZUNoZWNrQ29uZmlnKHQpLHR9c3RhdGljIGdldEluc3RhbmNlKHQpe3JldHVybiBlLmdldChyKHQpLHRoaXMuREFUQV9LRVkpfXN0YXRpYyBnZXRPckNyZWF0ZUluc3RhbmNlKHQsZT17fSl7cmV0dXJuIHRoaXMuZ2V0SW5zdGFuY2UodCl8fG5ldyB0aGlzKHQsXCJvYmplY3RcIj09dHlwZW9mIGU/ZTpudWxsKX1zdGF0aWMgZ2V0IFZFUlNJT04oKXtyZXR1cm5cIjUuMy4zXCJ9c3RhdGljIGdldCBEQVRBX0tFWSgpe3JldHVybmBicy4ke3RoaXMuTkFNRX1gfXN0YXRpYyBnZXQgRVZFTlRfS0VZKCl7cmV0dXJuYC4ke3RoaXMuREFUQV9LRVl9YH1zdGF0aWMgZXZlbnROYW1lKHQpe3JldHVybmAke3R9JHt0aGlzLkVWRU5UX0tFWX1gfX1jb25zdCBCPXQ9PntsZXQgZT10LmdldEF0dHJpYnV0ZShcImRhdGEtYnMtdGFyZ2V0XCIpO2lmKCFlfHxcIiNcIj09PWUpe2xldCBpPXQuZ2V0QXR0cmlidXRlKFwiaHJlZlwiKTtpZighaXx8IWkuaW5jbHVkZXMoXCIjXCIpJiYhaS5zdGFydHNXaXRoKFwiLlwiKSlyZXR1cm4gbnVsbDtpLmluY2x1ZGVzKFwiI1wiKSYmIWkuc3RhcnRzV2l0aChcIiNcIikmJihpPWAjJHtpLnNwbGl0KFwiI1wiKVsxXX1gKSxlPWkmJlwiI1wiIT09aT9pLnRyaW0oKTpudWxsfXJldHVybiBlP2Uuc3BsaXQoXCIsXCIpLm1hcCgodD0+bih0KSkpLmpvaW4oXCIsXCIpOm51bGx9LHo9e2ZpbmQ6KHQsZT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpPT5bXS5jb25jYXQoLi4uRWxlbWVudC5wcm90b3R5cGUucXVlcnlTZWxlY3RvckFsbC5jYWxsKGUsdCkpLGZpbmRPbmU6KHQsZT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpPT5FbGVtZW50LnByb3RvdHlwZS5xdWVyeVNlbGVjdG9yLmNhbGwoZSx0KSxjaGlsZHJlbjoodCxlKT0+W10uY29uY2F0KC4uLnQuY2hpbGRyZW4pLmZpbHRlcigodD0+dC5tYXRjaGVzKGUpKSkscGFyZW50cyh0LGUpe2NvbnN0IGk9W107bGV0IG49dC5wYXJlbnROb2RlLmNsb3Nlc3QoZSk7Zm9yKDtuOylpLnB1c2gobiksbj1uLnBhcmVudE5vZGUuY2xvc2VzdChlKTtyZXR1cm4gaX0scHJldih0LGUpe2xldCBpPXQucHJldmlvdXNFbGVtZW50U2libGluZztmb3IoO2k7KXtpZihpLm1hdGNoZXMoZSkpcmV0dXJuW2ldO2k9aS5wcmV2aW91c0VsZW1lbnRTaWJsaW5nfXJldHVybltdfSxuZXh0KHQsZSl7bGV0IGk9dC5uZXh0RWxlbWVudFNpYmxpbmc7Zm9yKDtpOyl7aWYoaS5tYXRjaGVzKGUpKXJldHVybltpXTtpPWkubmV4dEVsZW1lbnRTaWJsaW5nfXJldHVybltdfSxmb2N1c2FibGVDaGlsZHJlbih0KXtjb25zdCBlPVtcImFcIixcImJ1dHRvblwiLFwiaW5wdXRcIixcInRleHRhcmVhXCIsXCJzZWxlY3RcIixcImRldGFpbHNcIixcIlt0YWJpbmRleF1cIiwnW2NvbnRlbnRlZGl0YWJsZT1cInRydWVcIl0nXS5tYXAoKHQ9PmAke3R9Om5vdChbdGFiaW5kZXhePVwiLVwiXSlgKSkuam9pbihcIixcIik7cmV0dXJuIHRoaXMuZmluZChlLHQpLmZpbHRlcigodD0+IWwodCkmJmEodCkpKX0sZ2V0U2VsZWN0b3JGcm9tRWxlbWVudCh0KXtjb25zdCBlPUIodCk7cmV0dXJuIGUmJnouZmluZE9uZShlKT9lOm51bGx9LGdldEVsZW1lbnRGcm9tU2VsZWN0b3IodCl7Y29uc3QgZT1CKHQpO3JldHVybiBlP3ouZmluZE9uZShlKTpudWxsfSxnZXRNdWx0aXBsZUVsZW1lbnRzRnJvbVNlbGVjdG9yKHQpe2NvbnN0IGU9Qih0KTtyZXR1cm4gZT96LmZpbmQoZSk6W119fSxSPSh0LGU9XCJoaWRlXCIpPT57Y29uc3QgaT1gY2xpY2suZGlzbWlzcyR7dC5FVkVOVF9LRVl9YCxuPXQuTkFNRTtOLm9uKGRvY3VtZW50LGksYFtkYXRhLWJzLWRpc21pc3M9XCIke259XCJdYCwoZnVuY3Rpb24oaSl7aWYoW1wiQVwiLFwiQVJFQVwiXS5pbmNsdWRlcyh0aGlzLnRhZ05hbWUpJiZpLnByZXZlbnREZWZhdWx0KCksbCh0aGlzKSlyZXR1cm47Y29uc3Qgcz16LmdldEVsZW1lbnRGcm9tU2VsZWN0b3IodGhpcyl8fHRoaXMuY2xvc2VzdChgLiR7bn1gKTt0LmdldE9yQ3JlYXRlSW5zdGFuY2UocylbZV0oKX0pKX0scT1cIi5icy5hbGVydFwiLFY9YGNsb3NlJHtxfWAsSz1gY2xvc2VkJHtxfWA7Y2xhc3MgUSBleHRlbmRzIFd7c3RhdGljIGdldCBOQU1FKCl7cmV0dXJuXCJhbGVydFwifWNsb3NlKCl7aWYoTi50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsVikuZGVmYXVsdFByZXZlbnRlZClyZXR1cm47dGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFwic2hvd1wiKTtjb25zdCB0PXRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKFwiZmFkZVwiKTt0aGlzLl9xdWV1ZUNhbGxiYWNrKCgoKT0+dGhpcy5fZGVzdHJveUVsZW1lbnQoKSksdGhpcy5fZWxlbWVudCx0KX1fZGVzdHJveUVsZW1lbnQoKXt0aGlzLl9lbGVtZW50LnJlbW92ZSgpLE4udHJpZ2dlcih0aGlzLl9lbGVtZW50LEspLHRoaXMuZGlzcG9zZSgpfXN0YXRpYyBqUXVlcnlJbnRlcmZhY2UodCl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXtjb25zdCBlPVEuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzKTtpZihcInN0cmluZ1wiPT10eXBlb2YgdCl7aWYodm9pZCAwPT09ZVt0XXx8dC5zdGFydHNXaXRoKFwiX1wiKXx8XCJjb25zdHJ1Y3RvclwiPT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke3R9XCJgKTtlW3RdKHRoaXMpfX0pKX19UihRLFwiY2xvc2VcIiksbShRKTtjb25zdCBYPSdbZGF0YS1icy10b2dnbGU9XCJidXR0b25cIl0nO2NsYXNzIFkgZXh0ZW5kcyBXe3N0YXRpYyBnZXQgTkFNRSgpe3JldHVyblwiYnV0dG9uXCJ9dG9nZ2xlKCl7dGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJhcmlhLXByZXNzZWRcIix0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoXCJhY3RpdmVcIikpfXN0YXRpYyBqUXVlcnlJbnRlcmZhY2UodCl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXtjb25zdCBlPVkuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzKTtcInRvZ2dsZVwiPT09dCYmZVt0XSgpfSkpfX1OLm9uKGRvY3VtZW50LFwiY2xpY2suYnMuYnV0dG9uLmRhdGEtYXBpXCIsWCwodD0+e3QucHJldmVudERlZmF1bHQoKTtjb25zdCBlPXQudGFyZ2V0LmNsb3Nlc3QoWCk7WS5nZXRPckNyZWF0ZUluc3RhbmNlKGUpLnRvZ2dsZSgpfSkpLG0oWSk7Y29uc3QgVT1cIi5icy5zd2lwZVwiLEc9YHRvdWNoc3RhcnQke1V9YCxKPWB0b3VjaG1vdmUke1V9YCxaPWB0b3VjaGVuZCR7VX1gLHR0PWBwb2ludGVyZG93biR7VX1gLGV0PWBwb2ludGVydXAke1V9YCxpdD17ZW5kQ2FsbGJhY2s6bnVsbCxsZWZ0Q2FsbGJhY2s6bnVsbCxyaWdodENhbGxiYWNrOm51bGx9LG50PXtlbmRDYWxsYmFjazpcIihmdW5jdGlvbnxudWxsKVwiLGxlZnRDYWxsYmFjazpcIihmdW5jdGlvbnxudWxsKVwiLHJpZ2h0Q2FsbGJhY2s6XCIoZnVuY3Rpb258bnVsbClcIn07Y2xhc3Mgc3QgZXh0ZW5kcyBIe2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIoKSx0aGlzLl9lbGVtZW50PXQsdCYmc3QuaXNTdXBwb3J0ZWQoKSYmKHRoaXMuX2NvbmZpZz10aGlzLl9nZXRDb25maWcoZSksdGhpcy5fZGVsdGFYPTAsdGhpcy5fc3VwcG9ydFBvaW50ZXJFdmVudHM9Qm9vbGVhbih3aW5kb3cuUG9pbnRlckV2ZW50KSx0aGlzLl9pbml0RXZlbnRzKCkpfXN0YXRpYyBnZXQgRGVmYXVsdCgpe3JldHVybiBpdH1zdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCl7cmV0dXJuIG50fXN0YXRpYyBnZXQgTkFNRSgpe3JldHVyblwic3dpcGVcIn1kaXNwb3NlKCl7Ti5vZmYodGhpcy5fZWxlbWVudCxVKX1fc3RhcnQodCl7dGhpcy5fc3VwcG9ydFBvaW50ZXJFdmVudHM/dGhpcy5fZXZlbnRJc1BvaW50ZXJQZW5Ub3VjaCh0KSYmKHRoaXMuX2RlbHRhWD10LmNsaWVudFgpOnRoaXMuX2RlbHRhWD10LnRvdWNoZXNbMF0uY2xpZW50WH1fZW5kKHQpe3RoaXMuX2V2ZW50SXNQb2ludGVyUGVuVG91Y2godCkmJih0aGlzLl9kZWx0YVg9dC5jbGllbnRYLXRoaXMuX2RlbHRhWCksdGhpcy5faGFuZGxlU3dpcGUoKSxnKHRoaXMuX2NvbmZpZy5lbmRDYWxsYmFjayl9X21vdmUodCl7dGhpcy5fZGVsdGFYPXQudG91Y2hlcyYmdC50b3VjaGVzLmxlbmd0aD4xPzA6dC50b3VjaGVzWzBdLmNsaWVudFgtdGhpcy5fZGVsdGFYfV9oYW5kbGVTd2lwZSgpe2NvbnN0IHQ9TWF0aC5hYnModGhpcy5fZGVsdGFYKTtpZih0PD00MClyZXR1cm47Y29uc3QgZT10L3RoaXMuX2RlbHRhWDt0aGlzLl9kZWx0YVg9MCxlJiZnKGU+MD90aGlzLl9jb25maWcucmlnaHRDYWxsYmFjazp0aGlzLl9jb25maWcubGVmdENhbGxiYWNrKX1faW5pdEV2ZW50cygpe3RoaXMuX3N1cHBvcnRQb2ludGVyRXZlbnRzPyhOLm9uKHRoaXMuX2VsZW1lbnQsdHQsKHQ9PnRoaXMuX3N0YXJ0KHQpKSksTi5vbih0aGlzLl9lbGVtZW50LGV0LCh0PT50aGlzLl9lbmQodCkpKSx0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJwb2ludGVyLWV2ZW50XCIpKTooTi5vbih0aGlzLl9lbGVtZW50LEcsKHQ9PnRoaXMuX3N0YXJ0KHQpKSksTi5vbih0aGlzLl9lbGVtZW50LEosKHQ9PnRoaXMuX21vdmUodCkpKSxOLm9uKHRoaXMuX2VsZW1lbnQsWiwodD0+dGhpcy5fZW5kKHQpKSkpfV9ldmVudElzUG9pbnRlclBlblRvdWNoKHQpe3JldHVybiB0aGlzLl9zdXBwb3J0UG9pbnRlckV2ZW50cyYmKFwicGVuXCI9PT10LnBvaW50ZXJUeXBlfHxcInRvdWNoXCI9PT10LnBvaW50ZXJUeXBlKX1zdGF0aWMgaXNTdXBwb3J0ZWQoKXtyZXR1cm5cIm9udG91Y2hzdGFydFwiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fHxuYXZpZ2F0b3IubWF4VG91Y2hQb2ludHM+MH19Y29uc3Qgb3Q9XCIuYnMuY2Fyb3VzZWxcIixydD1cIi5kYXRhLWFwaVwiLGF0PVwibmV4dFwiLGx0PVwicHJldlwiLGN0PVwibGVmdFwiLGh0PVwicmlnaHRcIixkdD1gc2xpZGUke290fWAsdXQ9YHNsaWQke290fWAsZnQ9YGtleWRvd24ke290fWAscHQ9YG1vdXNlZW50ZXIke290fWAsbXQ9YG1vdXNlbGVhdmUke290fWAsZ3Q9YGRyYWdzdGFydCR7b3R9YCxfdD1gbG9hZCR7b3R9JHtydH1gLGJ0PWBjbGljayR7b3R9JHtydH1gLHZ0PVwiY2Fyb3VzZWxcIix5dD1cImFjdGl2ZVwiLHd0PVwiLmFjdGl2ZVwiLEF0PVwiLmNhcm91c2VsLWl0ZW1cIixFdD13dCtBdCxUdD17QXJyb3dMZWZ0Omh0LEFycm93UmlnaHQ6Y3R9LEN0PXtpbnRlcnZhbDo1ZTMsa2V5Ym9hcmQ6ITAscGF1c2U6XCJob3ZlclwiLHJpZGU6ITEsdG91Y2g6ITAsd3JhcDohMH0sT3Q9e2ludGVydmFsOlwiKG51bWJlcnxib29sZWFuKVwiLGtleWJvYXJkOlwiYm9vbGVhblwiLHBhdXNlOlwiKHN0cmluZ3xib29sZWFuKVwiLHJpZGU6XCIoYm9vbGVhbnxzdHJpbmcpXCIsdG91Y2g6XCJib29sZWFuXCIsd3JhcDpcImJvb2xlYW5cIn07Y2xhc3MgeHQgZXh0ZW5kcyBXe2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCxlKSx0aGlzLl9pbnRlcnZhbD1udWxsLHRoaXMuX2FjdGl2ZUVsZW1lbnQ9bnVsbCx0aGlzLl9pc1NsaWRpbmc9ITEsdGhpcy50b3VjaFRpbWVvdXQ9bnVsbCx0aGlzLl9zd2lwZUhlbHBlcj1udWxsLHRoaXMuX2luZGljYXRvcnNFbGVtZW50PXouZmluZE9uZShcIi5jYXJvdXNlbC1pbmRpY2F0b3JzXCIsdGhpcy5fZWxlbWVudCksdGhpcy5fYWRkRXZlbnRMaXN0ZW5lcnMoKSx0aGlzLl9jb25maWcucmlkZT09PXZ0JiZ0aGlzLmN5Y2xlKCl9c3RhdGljIGdldCBEZWZhdWx0KCl7cmV0dXJuIEN0fXN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKXtyZXR1cm4gT3R9c3RhdGljIGdldCBOQU1FKCl7cmV0dXJuXCJjYXJvdXNlbFwifW5leHQoKXt0aGlzLl9zbGlkZShhdCl9bmV4dFdoZW5WaXNpYmxlKCl7IWRvY3VtZW50LmhpZGRlbiYmYSh0aGlzLl9lbGVtZW50KSYmdGhpcy5uZXh0KCl9cHJldigpe3RoaXMuX3NsaWRlKGx0KX1wYXVzZSgpe3RoaXMuX2lzU2xpZGluZyYmcyh0aGlzLl9lbGVtZW50KSx0aGlzLl9jbGVhckludGVydmFsKCl9Y3ljbGUoKXt0aGlzLl9jbGVhckludGVydmFsKCksdGhpcy5fdXBkYXRlSW50ZXJ2YWwoKSx0aGlzLl9pbnRlcnZhbD1zZXRJbnRlcnZhbCgoKCk9PnRoaXMubmV4dFdoZW5WaXNpYmxlKCkpLHRoaXMuX2NvbmZpZy5pbnRlcnZhbCl9X21heWJlRW5hYmxlQ3ljbGUoKXt0aGlzLl9jb25maWcucmlkZSYmKHRoaXMuX2lzU2xpZGluZz9OLm9uZSh0aGlzLl9lbGVtZW50LHV0LCgoKT0+dGhpcy5jeWNsZSgpKSk6dGhpcy5jeWNsZSgpKX10byh0KXtjb25zdCBlPXRoaXMuX2dldEl0ZW1zKCk7aWYodD5lLmxlbmd0aC0xfHx0PDApcmV0dXJuO2lmKHRoaXMuX2lzU2xpZGluZylyZXR1cm4gdm9pZCBOLm9uZSh0aGlzLl9lbGVtZW50LHV0LCgoKT0+dGhpcy50byh0KSkpO2NvbnN0IGk9dGhpcy5fZ2V0SXRlbUluZGV4KHRoaXMuX2dldEFjdGl2ZSgpKTtpZihpPT09dClyZXR1cm47Y29uc3Qgbj10Pmk/YXQ6bHQ7dGhpcy5fc2xpZGUobixlW3RdKX1kaXNwb3NlKCl7dGhpcy5fc3dpcGVIZWxwZXImJnRoaXMuX3N3aXBlSGVscGVyLmRpc3Bvc2UoKSxzdXBlci5kaXNwb3NlKCl9X2NvbmZpZ0FmdGVyTWVyZ2UodCl7cmV0dXJuIHQuZGVmYXVsdEludGVydmFsPXQuaW50ZXJ2YWwsdH1fYWRkRXZlbnRMaXN0ZW5lcnMoKXt0aGlzLl9jb25maWcua2V5Ym9hcmQmJk4ub24odGhpcy5fZWxlbWVudCxmdCwodD0+dGhpcy5fa2V5ZG93bih0KSkpLFwiaG92ZXJcIj09PXRoaXMuX2NvbmZpZy5wYXVzZSYmKE4ub24odGhpcy5fZWxlbWVudCxwdCwoKCk9PnRoaXMucGF1c2UoKSkpLE4ub24odGhpcy5fZWxlbWVudCxtdCwoKCk9PnRoaXMuX21heWJlRW5hYmxlQ3ljbGUoKSkpKSx0aGlzLl9jb25maWcudG91Y2gmJnN0LmlzU3VwcG9ydGVkKCkmJnRoaXMuX2FkZFRvdWNoRXZlbnRMaXN0ZW5lcnMoKX1fYWRkVG91Y2hFdmVudExpc3RlbmVycygpe2Zvcihjb25zdCB0IG9mIHouZmluZChcIi5jYXJvdXNlbC1pdGVtIGltZ1wiLHRoaXMuX2VsZW1lbnQpKU4ub24odCxndCwodD0+dC5wcmV2ZW50RGVmYXVsdCgpKSk7Y29uc3QgdD17bGVmdENhbGxiYWNrOigpPT50aGlzLl9zbGlkZSh0aGlzLl9kaXJlY3Rpb25Ub09yZGVyKGN0KSkscmlnaHRDYWxsYmFjazooKT0+dGhpcy5fc2xpZGUodGhpcy5fZGlyZWN0aW9uVG9PcmRlcihodCkpLGVuZENhbGxiYWNrOigpPT57XCJob3ZlclwiPT09dGhpcy5fY29uZmlnLnBhdXNlJiYodGhpcy5wYXVzZSgpLHRoaXMudG91Y2hUaW1lb3V0JiZjbGVhclRpbWVvdXQodGhpcy50b3VjaFRpbWVvdXQpLHRoaXMudG91Y2hUaW1lb3V0PXNldFRpbWVvdXQoKCgpPT50aGlzLl9tYXliZUVuYWJsZUN5Y2xlKCkpLDUwMCt0aGlzLl9jb25maWcuaW50ZXJ2YWwpKX19O3RoaXMuX3N3aXBlSGVscGVyPW5ldyBzdCh0aGlzLl9lbGVtZW50LHQpfV9rZXlkb3duKHQpe2lmKC9pbnB1dHx0ZXh0YXJlYS9pLnRlc3QodC50YXJnZXQudGFnTmFtZSkpcmV0dXJuO2NvbnN0IGU9VHRbdC5rZXldO2UmJih0LnByZXZlbnREZWZhdWx0KCksdGhpcy5fc2xpZGUodGhpcy5fZGlyZWN0aW9uVG9PcmRlcihlKSkpfV9nZXRJdGVtSW5kZXgodCl7cmV0dXJuIHRoaXMuX2dldEl0ZW1zKCkuaW5kZXhPZih0KX1fc2V0QWN0aXZlSW5kaWNhdG9yRWxlbWVudCh0KXtpZighdGhpcy5faW5kaWNhdG9yc0VsZW1lbnQpcmV0dXJuO2NvbnN0IGU9ei5maW5kT25lKHd0LHRoaXMuX2luZGljYXRvcnNFbGVtZW50KTtlLmNsYXNzTGlzdC5yZW1vdmUoeXQpLGUucmVtb3ZlQXR0cmlidXRlKFwiYXJpYS1jdXJyZW50XCIpO2NvbnN0IGk9ei5maW5kT25lKGBbZGF0YS1icy1zbGlkZS10bz1cIiR7dH1cIl1gLHRoaXMuX2luZGljYXRvcnNFbGVtZW50KTtpJiYoaS5jbGFzc0xpc3QuYWRkKHl0KSxpLnNldEF0dHJpYnV0ZShcImFyaWEtY3VycmVudFwiLFwidHJ1ZVwiKSl9X3VwZGF0ZUludGVydmFsKCl7Y29uc3QgdD10aGlzLl9hY3RpdmVFbGVtZW50fHx0aGlzLl9nZXRBY3RpdmUoKTtpZighdClyZXR1cm47Y29uc3QgZT1OdW1iZXIucGFyc2VJbnQodC5nZXRBdHRyaWJ1dGUoXCJkYXRhLWJzLWludGVydmFsXCIpLDEwKTt0aGlzLl9jb25maWcuaW50ZXJ2YWw9ZXx8dGhpcy5fY29uZmlnLmRlZmF1bHRJbnRlcnZhbH1fc2xpZGUodCxlPW51bGwpe2lmKHRoaXMuX2lzU2xpZGluZylyZXR1cm47Y29uc3QgaT10aGlzLl9nZXRBY3RpdmUoKSxuPXQ9PT1hdCxzPWV8fGIodGhpcy5fZ2V0SXRlbXMoKSxpLG4sdGhpcy5fY29uZmlnLndyYXApO2lmKHM9PT1pKXJldHVybjtjb25zdCBvPXRoaXMuX2dldEl0ZW1JbmRleChzKSxyPWU9Pk4udHJpZ2dlcih0aGlzLl9lbGVtZW50LGUse3JlbGF0ZWRUYXJnZXQ6cyxkaXJlY3Rpb246dGhpcy5fb3JkZXJUb0RpcmVjdGlvbih0KSxmcm9tOnRoaXMuX2dldEl0ZW1JbmRleChpKSx0bzpvfSk7aWYocihkdCkuZGVmYXVsdFByZXZlbnRlZClyZXR1cm47aWYoIWl8fCFzKXJldHVybjtjb25zdCBhPUJvb2xlYW4odGhpcy5faW50ZXJ2YWwpO3RoaXMucGF1c2UoKSx0aGlzLl9pc1NsaWRpbmc9ITAsdGhpcy5fc2V0QWN0aXZlSW5kaWNhdG9yRWxlbWVudChvKSx0aGlzLl9hY3RpdmVFbGVtZW50PXM7Y29uc3QgbD1uP1wiY2Fyb3VzZWwtaXRlbS1zdGFydFwiOlwiY2Fyb3VzZWwtaXRlbS1lbmRcIixjPW4/XCJjYXJvdXNlbC1pdGVtLW5leHRcIjpcImNhcm91c2VsLWl0ZW0tcHJldlwiO3MuY2xhc3NMaXN0LmFkZChjKSxkKHMpLGkuY2xhc3NMaXN0LmFkZChsKSxzLmNsYXNzTGlzdC5hZGQobCksdGhpcy5fcXVldWVDYWxsYmFjaygoKCk9PntzLmNsYXNzTGlzdC5yZW1vdmUobCxjKSxzLmNsYXNzTGlzdC5hZGQoeXQpLGkuY2xhc3NMaXN0LnJlbW92ZSh5dCxjLGwpLHRoaXMuX2lzU2xpZGluZz0hMSxyKHV0KX0pLGksdGhpcy5faXNBbmltYXRlZCgpKSxhJiZ0aGlzLmN5Y2xlKCl9X2lzQW5pbWF0ZWQoKXtyZXR1cm4gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoXCJzbGlkZVwiKX1fZ2V0QWN0aXZlKCl7cmV0dXJuIHouZmluZE9uZShFdCx0aGlzLl9lbGVtZW50KX1fZ2V0SXRlbXMoKXtyZXR1cm4gei5maW5kKEF0LHRoaXMuX2VsZW1lbnQpfV9jbGVhckludGVydmFsKCl7dGhpcy5faW50ZXJ2YWwmJihjbGVhckludGVydmFsKHRoaXMuX2ludGVydmFsKSx0aGlzLl9pbnRlcnZhbD1udWxsKX1fZGlyZWN0aW9uVG9PcmRlcih0KXtyZXR1cm4gcCgpP3Q9PT1jdD9sdDphdDp0PT09Y3Q/YXQ6bHR9X29yZGVyVG9EaXJlY3Rpb24odCl7cmV0dXJuIHAoKT90PT09bHQ/Y3Q6aHQ6dD09PWx0P2h0OmN0fXN0YXRpYyBqUXVlcnlJbnRlcmZhY2UodCl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXtjb25zdCBlPXh0LmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcyx0KTtpZihcIm51bWJlclwiIT10eXBlb2YgdCl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpe2lmKHZvaWQgMD09PWVbdF18fHQuc3RhcnRzV2l0aChcIl9cIil8fFwiY29uc3RydWN0b3JcIj09PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkIFwiJHt0fVwiYCk7ZVt0XSgpfX1lbHNlIGUudG8odCl9KSl9fU4ub24oZG9jdW1lbnQsYnQsXCJbZGF0YS1icy1zbGlkZV0sIFtkYXRhLWJzLXNsaWRlLXRvXVwiLChmdW5jdGlvbih0KXtjb25zdCBlPXouZ2V0RWxlbWVudEZyb21TZWxlY3Rvcih0aGlzKTtpZighZXx8IWUuY2xhc3NMaXN0LmNvbnRhaW5zKHZ0KSlyZXR1cm47dC5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IGk9eHQuZ2V0T3JDcmVhdGVJbnN0YW5jZShlKSxuPXRoaXMuZ2V0QXR0cmlidXRlKFwiZGF0YS1icy1zbGlkZS10b1wiKTtyZXR1cm4gbj8oaS50byhuKSx2b2lkIGkuX21heWJlRW5hYmxlQ3ljbGUoKSk6XCJuZXh0XCI9PT1GLmdldERhdGFBdHRyaWJ1dGUodGhpcyxcInNsaWRlXCIpPyhpLm5leHQoKSx2b2lkIGkuX21heWJlRW5hYmxlQ3ljbGUoKSk6KGkucHJldigpLHZvaWQgaS5fbWF5YmVFbmFibGVDeWNsZSgpKX0pKSxOLm9uKHdpbmRvdyxfdCwoKCk9Pntjb25zdCB0PXouZmluZCgnW2RhdGEtYnMtcmlkZT1cImNhcm91c2VsXCJdJyk7Zm9yKGNvbnN0IGUgb2YgdCl4dC5nZXRPckNyZWF0ZUluc3RhbmNlKGUpfSkpLG0oeHQpO2NvbnN0IGt0PVwiLmJzLmNvbGxhcHNlXCIsTHQ9YHNob3cke2t0fWAsU3Q9YHNob3duJHtrdH1gLER0PWBoaWRlJHtrdH1gLCR0PWBoaWRkZW4ke2t0fWAsSXQ9YGNsaWNrJHtrdH0uZGF0YS1hcGlgLE50PVwic2hvd1wiLFB0PVwiY29sbGFwc2VcIixqdD1cImNvbGxhcHNpbmdcIixNdD1gOnNjb3BlIC4ke1B0fSAuJHtQdH1gLEZ0PSdbZGF0YS1icy10b2dnbGU9XCJjb2xsYXBzZVwiXScsSHQ9e3BhcmVudDpudWxsLHRvZ2dsZTohMH0sV3Q9e3BhcmVudDpcIihudWxsfGVsZW1lbnQpXCIsdG9nZ2xlOlwiYm9vbGVhblwifTtjbGFzcyBCdCBleHRlbmRzIFd7Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LGUpLHRoaXMuX2lzVHJhbnNpdGlvbmluZz0hMSx0aGlzLl90cmlnZ2VyQXJyYXk9W107Y29uc3QgaT16LmZpbmQoRnQpO2Zvcihjb25zdCB0IG9mIGkpe2NvbnN0IGU9ei5nZXRTZWxlY3RvckZyb21FbGVtZW50KHQpLGk9ei5maW5kKGUpLmZpbHRlcigodD0+dD09PXRoaXMuX2VsZW1lbnQpKTtudWxsIT09ZSYmaS5sZW5ndGgmJnRoaXMuX3RyaWdnZXJBcnJheS5wdXNoKHQpfXRoaXMuX2luaXRpYWxpemVDaGlsZHJlbigpLHRoaXMuX2NvbmZpZy5wYXJlbnR8fHRoaXMuX2FkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcyh0aGlzLl90cmlnZ2VyQXJyYXksdGhpcy5faXNTaG93bigpKSx0aGlzLl9jb25maWcudG9nZ2xlJiZ0aGlzLnRvZ2dsZSgpfXN0YXRpYyBnZXQgRGVmYXVsdCgpe3JldHVybiBIdH1zdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCl7cmV0dXJuIFd0fXN0YXRpYyBnZXQgTkFNRSgpe3JldHVyblwiY29sbGFwc2VcIn10b2dnbGUoKXt0aGlzLl9pc1Nob3duKCk/dGhpcy5oaWRlKCk6dGhpcy5zaG93KCl9c2hvdygpe2lmKHRoaXMuX2lzVHJhbnNpdGlvbmluZ3x8dGhpcy5faXNTaG93bigpKXJldHVybjtsZXQgdD1bXTtpZih0aGlzLl9jb25maWcucGFyZW50JiYodD10aGlzLl9nZXRGaXJzdExldmVsQ2hpbGRyZW4oXCIuY29sbGFwc2Uuc2hvdywgLmNvbGxhcHNlLmNvbGxhcHNpbmdcIikuZmlsdGVyKCh0PT50IT09dGhpcy5fZWxlbWVudCkpLm1hcCgodD0+QnQuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0LHt0b2dnbGU6ITF9KSkpKSx0Lmxlbmd0aCYmdFswXS5faXNUcmFuc2l0aW9uaW5nKXJldHVybjtpZihOLnRyaWdnZXIodGhpcy5fZWxlbWVudCxMdCkuZGVmYXVsdFByZXZlbnRlZClyZXR1cm47Zm9yKGNvbnN0IGUgb2YgdCllLmhpZGUoKTtjb25zdCBlPXRoaXMuX2dldERpbWVuc2lvbigpO3RoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShQdCksdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKGp0KSx0aGlzLl9lbGVtZW50LnN0eWxlW2VdPTAsdGhpcy5fYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzKHRoaXMuX3RyaWdnZXJBcnJheSwhMCksdGhpcy5faXNUcmFuc2l0aW9uaW5nPSEwO2NvbnN0IGk9YHNjcm9sbCR7ZVswXS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSl9YDt0aGlzLl9xdWV1ZUNhbGxiYWNrKCgoKT0+e3RoaXMuX2lzVHJhbnNpdGlvbmluZz0hMSx0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoanQpLHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChQdCxOdCksdGhpcy5fZWxlbWVudC5zdHlsZVtlXT1cIlwiLE4udHJpZ2dlcih0aGlzLl9lbGVtZW50LFN0KX0pLHRoaXMuX2VsZW1lbnQsITApLHRoaXMuX2VsZW1lbnQuc3R5bGVbZV09YCR7dGhpcy5fZWxlbWVudFtpXX1weGB9aGlkZSgpe2lmKHRoaXMuX2lzVHJhbnNpdGlvbmluZ3x8IXRoaXMuX2lzU2hvd24oKSlyZXR1cm47aWYoTi50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsRHQpLmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuO2NvbnN0IHQ9dGhpcy5fZ2V0RGltZW5zaW9uKCk7dGhpcy5fZWxlbWVudC5zdHlsZVt0XT1gJHt0aGlzLl9lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW3RdfXB4YCxkKHRoaXMuX2VsZW1lbnQpLHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChqdCksdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKFB0LE50KTtmb3IoY29uc3QgdCBvZiB0aGlzLl90cmlnZ2VyQXJyYXkpe2NvbnN0IGU9ei5nZXRFbGVtZW50RnJvbVNlbGVjdG9yKHQpO2UmJiF0aGlzLl9pc1Nob3duKGUpJiZ0aGlzLl9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3MoW3RdLCExKX10aGlzLl9pc1RyYW5zaXRpb25pbmc9ITAsdGhpcy5fZWxlbWVudC5zdHlsZVt0XT1cIlwiLHRoaXMuX3F1ZXVlQ2FsbGJhY2soKCgpPT57dGhpcy5faXNUcmFuc2l0aW9uaW5nPSExLHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShqdCksdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKFB0KSxOLnRyaWdnZXIodGhpcy5fZWxlbWVudCwkdCl9KSx0aGlzLl9lbGVtZW50LCEwKX1faXNTaG93bih0PXRoaXMuX2VsZW1lbnQpe3JldHVybiB0LmNsYXNzTGlzdC5jb250YWlucyhOdCl9X2NvbmZpZ0FmdGVyTWVyZ2UodCl7cmV0dXJuIHQudG9nZ2xlPUJvb2xlYW4odC50b2dnbGUpLHQucGFyZW50PXIodC5wYXJlbnQpLHR9X2dldERpbWVuc2lvbigpe3JldHVybiB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhcImNvbGxhcHNlLWhvcml6b250YWxcIik/XCJ3aWR0aFwiOlwiaGVpZ2h0XCJ9X2luaXRpYWxpemVDaGlsZHJlbigpe2lmKCF0aGlzLl9jb25maWcucGFyZW50KXJldHVybjtjb25zdCB0PXRoaXMuX2dldEZpcnN0TGV2ZWxDaGlsZHJlbihGdCk7Zm9yKGNvbnN0IGUgb2YgdCl7Y29uc3QgdD16LmdldEVsZW1lbnRGcm9tU2VsZWN0b3IoZSk7dCYmdGhpcy5fYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzKFtlXSx0aGlzLl9pc1Nob3duKHQpKX19X2dldEZpcnN0TGV2ZWxDaGlsZHJlbih0KXtjb25zdCBlPXouZmluZChNdCx0aGlzLl9jb25maWcucGFyZW50KTtyZXR1cm4gei5maW5kKHQsdGhpcy5fY29uZmlnLnBhcmVudCkuZmlsdGVyKCh0PT4hZS5pbmNsdWRlcyh0KSkpfV9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3ModCxlKXtpZih0Lmxlbmd0aClmb3IoY29uc3QgaSBvZiB0KWkuY2xhc3NMaXN0LnRvZ2dsZShcImNvbGxhcHNlZFwiLCFlKSxpLnNldEF0dHJpYnV0ZShcImFyaWEtZXhwYW5kZWRcIixlKX1zdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKHQpe2NvbnN0IGU9e307cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQmJi9zaG93fGhpZGUvLnRlc3QodCkmJihlLnRvZ2dsZT0hMSksdGhpcy5lYWNoKChmdW5jdGlvbigpe2NvbnN0IGk9QnQuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLGUpO2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXtpZih2b2lkIDA9PT1pW3RdKXRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCBcIiR7dH1cImApO2lbdF0oKX19KSl9fU4ub24oZG9jdW1lbnQsSXQsRnQsKGZ1bmN0aW9uKHQpeyhcIkFcIj09PXQudGFyZ2V0LnRhZ05hbWV8fHQuZGVsZWdhdGVUYXJnZXQmJlwiQVwiPT09dC5kZWxlZ2F0ZVRhcmdldC50YWdOYW1lKSYmdC5wcmV2ZW50RGVmYXVsdCgpO2Zvcihjb25zdCB0IG9mIHouZ2V0TXVsdGlwbGVFbGVtZW50c0Zyb21TZWxlY3Rvcih0aGlzKSlCdC5nZXRPckNyZWF0ZUluc3RhbmNlKHQse3RvZ2dsZTohMX0pLnRvZ2dsZSgpfSkpLG0oQnQpO3ZhciB6dD1cInRvcFwiLFJ0PVwiYm90dG9tXCIscXQ9XCJyaWdodFwiLFZ0PVwibGVmdFwiLEt0PVwiYXV0b1wiLFF0PVt6dCxSdCxxdCxWdF0sWHQ9XCJzdGFydFwiLFl0PVwiZW5kXCIsVXQ9XCJjbGlwcGluZ1BhcmVudHNcIixHdD1cInZpZXdwb3J0XCIsSnQ9XCJwb3BwZXJcIixadD1cInJlZmVyZW5jZVwiLHRlPVF0LnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5jb25jYXQoW2UrXCItXCIrWHQsZStcIi1cIitZdF0pfSksW10pLGVlPVtdLmNvbmNhdChRdCxbS3RdKS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQuY29uY2F0KFtlLGUrXCItXCIrWHQsZStcIi1cIitZdF0pfSksW10pLGllPVwiYmVmb3JlUmVhZFwiLG5lPVwicmVhZFwiLHNlPVwiYWZ0ZXJSZWFkXCIsb2U9XCJiZWZvcmVNYWluXCIscmU9XCJtYWluXCIsYWU9XCJhZnRlck1haW5cIixsZT1cImJlZm9yZVdyaXRlXCIsY2U9XCJ3cml0ZVwiLGhlPVwiYWZ0ZXJXcml0ZVwiLGRlPVtpZSxuZSxzZSxvZSxyZSxhZSxsZSxjZSxoZV07ZnVuY3Rpb24gdWUodCl7cmV0dXJuIHQ/KHQubm9kZU5hbWV8fFwiXCIpLnRvTG93ZXJDYXNlKCk6bnVsbH1mdW5jdGlvbiBmZSh0KXtpZihudWxsPT10KXJldHVybiB3aW5kb3c7aWYoXCJbb2JqZWN0IFdpbmRvd11cIiE9PXQudG9TdHJpbmcoKSl7dmFyIGU9dC5vd25lckRvY3VtZW50O3JldHVybiBlJiZlLmRlZmF1bHRWaWV3fHx3aW5kb3d9cmV0dXJuIHR9ZnVuY3Rpb24gcGUodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBmZSh0KS5FbGVtZW50fHx0IGluc3RhbmNlb2YgRWxlbWVudH1mdW5jdGlvbiBtZSh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIGZlKHQpLkhUTUxFbGVtZW50fHx0IGluc3RhbmNlb2YgSFRNTEVsZW1lbnR9ZnVuY3Rpb24gZ2UodCl7cmV0dXJuXCJ1bmRlZmluZWRcIiE9dHlwZW9mIFNoYWRvd1Jvb3QmJih0IGluc3RhbmNlb2YgZmUodCkuU2hhZG93Um9vdHx8dCBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QpfWNvbnN0IF9lPXtuYW1lOlwiYXBwbHlTdHlsZXNcIixlbmFibGVkOiEwLHBoYXNlOlwid3JpdGVcIixmbjpmdW5jdGlvbih0KXt2YXIgZT10LnN0YXRlO09iamVjdC5rZXlzKGUuZWxlbWVudHMpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBpPWUuc3R5bGVzW3RdfHx7fSxuPWUuYXR0cmlidXRlc1t0XXx8e30scz1lLmVsZW1lbnRzW3RdO21lKHMpJiZ1ZShzKSYmKE9iamVjdC5hc3NpZ24ocy5zdHlsZSxpKSxPYmplY3Qua2V5cyhuKS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT1uW3RdOyExPT09ZT9zLnJlbW92ZUF0dHJpYnV0ZSh0KTpzLnNldEF0dHJpYnV0ZSh0LCEwPT09ZT9cIlwiOmUpfSkpKX0pKX0sZWZmZWN0OmZ1bmN0aW9uKHQpe3ZhciBlPXQuc3RhdGUsaT17cG9wcGVyOntwb3NpdGlvbjplLm9wdGlvbnMuc3RyYXRlZ3ksbGVmdDpcIjBcIix0b3A6XCIwXCIsbWFyZ2luOlwiMFwifSxhcnJvdzp7cG9zaXRpb246XCJhYnNvbHV0ZVwifSxyZWZlcmVuY2U6e319O3JldHVybiBPYmplY3QuYXNzaWduKGUuZWxlbWVudHMucG9wcGVyLnN0eWxlLGkucG9wcGVyKSxlLnN0eWxlcz1pLGUuZWxlbWVudHMuYXJyb3cmJk9iamVjdC5hc3NpZ24oZS5lbGVtZW50cy5hcnJvdy5zdHlsZSxpLmFycm93KSxmdW5jdGlvbigpe09iamVjdC5rZXlzKGUuZWxlbWVudHMpLmZvckVhY2goKGZ1bmN0aW9uKHQpe3ZhciBuPWUuZWxlbWVudHNbdF0scz1lLmF0dHJpYnV0ZXNbdF18fHt9LG89T2JqZWN0LmtleXMoZS5zdHlsZXMuaGFzT3duUHJvcGVydHkodCk/ZS5zdHlsZXNbdF06aVt0XSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0W2VdPVwiXCIsdH0pLHt9KTttZShuKSYmdWUobikmJihPYmplY3QuYXNzaWduKG4uc3R5bGUsbyksT2JqZWN0LmtleXMocykuZm9yRWFjaCgoZnVuY3Rpb24odCl7bi5yZW1vdmVBdHRyaWJ1dGUodCl9KSkpfSkpfX0scmVxdWlyZXM6W1wiY29tcHV0ZVN0eWxlc1wiXX07ZnVuY3Rpb24gYmUodCl7cmV0dXJuIHQuc3BsaXQoXCItXCIpWzBdfXZhciB2ZT1NYXRoLm1heCx5ZT1NYXRoLm1pbix3ZT1NYXRoLnJvdW5kO2Z1bmN0aW9uIEFlKCl7dmFyIHQ9bmF2aWdhdG9yLnVzZXJBZ2VudERhdGE7cmV0dXJuIG51bGwhPXQmJnQuYnJhbmRzJiZBcnJheS5pc0FycmF5KHQuYnJhbmRzKT90LmJyYW5kcy5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiB0LmJyYW5kK1wiL1wiK3QudmVyc2lvbn0pKS5qb2luKFwiIFwiKTpuYXZpZ2F0b3IudXNlckFnZW50fWZ1bmN0aW9uIEVlKCl7cmV0dXJuIS9eKCg/IWNocm9tZXxhbmRyb2lkKS4pKnNhZmFyaS9pLnRlc3QoQWUoKSl9ZnVuY3Rpb24gVGUodCxlLGkpe3ZvaWQgMD09PWUmJihlPSExKSx2b2lkIDA9PT1pJiYoaT0hMSk7dmFyIG49dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxzPTEsbz0xO2UmJm1lKHQpJiYocz10Lm9mZnNldFdpZHRoPjAmJndlKG4ud2lkdGgpL3Qub2Zmc2V0V2lkdGh8fDEsbz10Lm9mZnNldEhlaWdodD4wJiZ3ZShuLmhlaWdodCkvdC5vZmZzZXRIZWlnaHR8fDEpO3ZhciByPShwZSh0KT9mZSh0KTp3aW5kb3cpLnZpc3VhbFZpZXdwb3J0LGE9IUVlKCkmJmksbD0obi5sZWZ0KyhhJiZyP3Iub2Zmc2V0TGVmdDowKSkvcyxjPShuLnRvcCsoYSYmcj9yLm9mZnNldFRvcDowKSkvbyxoPW4ud2lkdGgvcyxkPW4uaGVpZ2h0L287cmV0dXJue3dpZHRoOmgsaGVpZ2h0OmQsdG9wOmMscmlnaHQ6bCtoLGJvdHRvbTpjK2QsbGVmdDpsLHg6bCx5OmN9fWZ1bmN0aW9uIENlKHQpe3ZhciBlPVRlKHQpLGk9dC5vZmZzZXRXaWR0aCxuPXQub2Zmc2V0SGVpZ2h0O3JldHVybiBNYXRoLmFicyhlLndpZHRoLWkpPD0xJiYoaT1lLndpZHRoKSxNYXRoLmFicyhlLmhlaWdodC1uKTw9MSYmKG49ZS5oZWlnaHQpLHt4OnQub2Zmc2V0TGVmdCx5OnQub2Zmc2V0VG9wLHdpZHRoOmksaGVpZ2h0Om59fWZ1bmN0aW9uIE9lKHQsZSl7dmFyIGk9ZS5nZXRSb290Tm9kZSYmZS5nZXRSb290Tm9kZSgpO2lmKHQuY29udGFpbnMoZSkpcmV0dXJuITA7aWYoaSYmZ2UoaSkpe3ZhciBuPWU7ZG97aWYobiYmdC5pc1NhbWVOb2RlKG4pKXJldHVybiEwO249bi5wYXJlbnROb2RlfHxuLmhvc3R9d2hpbGUobil9cmV0dXJuITF9ZnVuY3Rpb24geGUodCl7cmV0dXJuIGZlKHQpLmdldENvbXB1dGVkU3R5bGUodCl9ZnVuY3Rpb24ga2UodCl7cmV0dXJuW1widGFibGVcIixcInRkXCIsXCJ0aFwiXS5pbmRleE9mKHVlKHQpKT49MH1mdW5jdGlvbiBMZSh0KXtyZXR1cm4oKHBlKHQpP3Qub3duZXJEb2N1bWVudDp0LmRvY3VtZW50KXx8d2luZG93LmRvY3VtZW50KS5kb2N1bWVudEVsZW1lbnR9ZnVuY3Rpb24gU2UodCl7cmV0dXJuXCJodG1sXCI9PT11ZSh0KT90OnQuYXNzaWduZWRTbG90fHx0LnBhcmVudE5vZGV8fChnZSh0KT90Lmhvc3Q6bnVsbCl8fExlKHQpfWZ1bmN0aW9uIERlKHQpe3JldHVybiBtZSh0KSYmXCJmaXhlZFwiIT09eGUodCkucG9zaXRpb24/dC5vZmZzZXRQYXJlbnQ6bnVsbH1mdW5jdGlvbiAkZSh0KXtmb3IodmFyIGU9ZmUodCksaT1EZSh0KTtpJiZrZShpKSYmXCJzdGF0aWNcIj09PXhlKGkpLnBvc2l0aW9uOylpPURlKGkpO3JldHVybiBpJiYoXCJodG1sXCI9PT11ZShpKXx8XCJib2R5XCI9PT11ZShpKSYmXCJzdGF0aWNcIj09PXhlKGkpLnBvc2l0aW9uKT9lOml8fGZ1bmN0aW9uKHQpe3ZhciBlPS9maXJlZm94L2kudGVzdChBZSgpKTtpZigvVHJpZGVudC9pLnRlc3QoQWUoKSkmJm1lKHQpJiZcImZpeGVkXCI9PT14ZSh0KS5wb3NpdGlvbilyZXR1cm4gbnVsbDt2YXIgaT1TZSh0KTtmb3IoZ2UoaSkmJihpPWkuaG9zdCk7bWUoaSkmJltcImh0bWxcIixcImJvZHlcIl0uaW5kZXhPZih1ZShpKSk8MDspe3ZhciBuPXhlKGkpO2lmKFwibm9uZVwiIT09bi50cmFuc2Zvcm18fFwibm9uZVwiIT09bi5wZXJzcGVjdGl2ZXx8XCJwYWludFwiPT09bi5jb250YWlufHwtMSE9PVtcInRyYW5zZm9ybVwiLFwicGVyc3BlY3RpdmVcIl0uaW5kZXhPZihuLndpbGxDaGFuZ2UpfHxlJiZcImZpbHRlclwiPT09bi53aWxsQ2hhbmdlfHxlJiZuLmZpbHRlciYmXCJub25lXCIhPT1uLmZpbHRlcilyZXR1cm4gaTtpPWkucGFyZW50Tm9kZX1yZXR1cm4gbnVsbH0odCl8fGV9ZnVuY3Rpb24gSWUodCl7cmV0dXJuW1widG9wXCIsXCJib3R0b21cIl0uaW5kZXhPZih0KT49MD9cInhcIjpcInlcIn1mdW5jdGlvbiBOZSh0LGUsaSl7cmV0dXJuIHZlKHQseWUoZSxpKSl9ZnVuY3Rpb24gUGUodCl7cmV0dXJuIE9iamVjdC5hc3NpZ24oe30se3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowfSx0KX1mdW5jdGlvbiBqZSh0LGUpe3JldHVybiBlLnJlZHVjZSgoZnVuY3Rpb24oZSxpKXtyZXR1cm4gZVtpXT10LGV9KSx7fSl9Y29uc3QgTWU9e25hbWU6XCJhcnJvd1wiLGVuYWJsZWQ6ITAscGhhc2U6XCJtYWluXCIsZm46ZnVuY3Rpb24odCl7dmFyIGUsaT10LnN0YXRlLG49dC5uYW1lLHM9dC5vcHRpb25zLG89aS5lbGVtZW50cy5hcnJvdyxyPWkubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLGE9YmUoaS5wbGFjZW1lbnQpLGw9SWUoYSksYz1bVnQscXRdLmluZGV4T2YoYSk+PTA/XCJoZWlnaHRcIjpcIndpZHRoXCI7aWYobyYmcil7dmFyIGg9ZnVuY3Rpb24odCxlKXtyZXR1cm4gUGUoXCJudW1iZXJcIiE9dHlwZW9mKHQ9XCJmdW5jdGlvblwiPT10eXBlb2YgdD90KE9iamVjdC5hc3NpZ24oe30sZS5yZWN0cyx7cGxhY2VtZW50OmUucGxhY2VtZW50fSkpOnQpP3Q6amUodCxRdCkpfShzLnBhZGRpbmcsaSksZD1DZShvKSx1PVwieVwiPT09bD96dDpWdCxmPVwieVwiPT09bD9SdDpxdCxwPWkucmVjdHMucmVmZXJlbmNlW2NdK2kucmVjdHMucmVmZXJlbmNlW2xdLXJbbF0taS5yZWN0cy5wb3BwZXJbY10sbT1yW2xdLWkucmVjdHMucmVmZXJlbmNlW2xdLGc9JGUobyksXz1nP1wieVwiPT09bD9nLmNsaWVudEhlaWdodHx8MDpnLmNsaWVudFdpZHRofHwwOjAsYj1wLzItbS8yLHY9aFt1XSx5PV8tZFtjXS1oW2ZdLHc9Xy8yLWRbY10vMitiLEE9TmUodix3LHkpLEU9bDtpLm1vZGlmaWVyc0RhdGFbbl09KChlPXt9KVtFXT1BLGUuY2VudGVyT2Zmc2V0PUEtdyxlKX19LGVmZmVjdDpmdW5jdGlvbih0KXt2YXIgZT10LnN0YXRlLGk9dC5vcHRpb25zLmVsZW1lbnQsbj12b2lkIDA9PT1pP1wiW2RhdGEtcG9wcGVyLWFycm93XVwiOmk7bnVsbCE9biYmKFwic3RyaW5nXCIhPXR5cGVvZiBufHwobj1lLmVsZW1lbnRzLnBvcHBlci5xdWVyeVNlbGVjdG9yKG4pKSkmJk9lKGUuZWxlbWVudHMucG9wcGVyLG4pJiYoZS5lbGVtZW50cy5hcnJvdz1uKX0scmVxdWlyZXM6W1wicG9wcGVyT2Zmc2V0c1wiXSxyZXF1aXJlc0lmRXhpc3RzOltcInByZXZlbnRPdmVyZmxvd1wiXX07ZnVuY3Rpb24gRmUodCl7cmV0dXJuIHQuc3BsaXQoXCItXCIpWzFdfXZhciBIZT17dG9wOlwiYXV0b1wiLHJpZ2h0OlwiYXV0b1wiLGJvdHRvbTpcImF1dG9cIixsZWZ0OlwiYXV0b1wifTtmdW5jdGlvbiBXZSh0KXt2YXIgZSxpPXQucG9wcGVyLG49dC5wb3BwZXJSZWN0LHM9dC5wbGFjZW1lbnQsbz10LnZhcmlhdGlvbixyPXQub2Zmc2V0cyxhPXQucG9zaXRpb24sbD10LmdwdUFjY2VsZXJhdGlvbixjPXQuYWRhcHRpdmUsaD10LnJvdW5kT2Zmc2V0cyxkPXQuaXNGaXhlZCx1PXIueCxmPXZvaWQgMD09PXU/MDp1LHA9ci55LG09dm9pZCAwPT09cD8wOnAsZz1cImZ1bmN0aW9uXCI9PXR5cGVvZiBoP2goe3g6Zix5Om19KTp7eDpmLHk6bX07Zj1nLngsbT1nLnk7dmFyIF89ci5oYXNPd25Qcm9wZXJ0eShcInhcIiksYj1yLmhhc093blByb3BlcnR5KFwieVwiKSx2PVZ0LHk9enQsdz13aW5kb3c7aWYoYyl7dmFyIEE9JGUoaSksRT1cImNsaWVudEhlaWdodFwiLFQ9XCJjbGllbnRXaWR0aFwiO0E9PT1mZShpKSYmXCJzdGF0aWNcIiE9PXhlKEE9TGUoaSkpLnBvc2l0aW9uJiZcImFic29sdXRlXCI9PT1hJiYoRT1cInNjcm9sbEhlaWdodFwiLFQ9XCJzY3JvbGxXaWR0aFwiKSwocz09PXp0fHwocz09PVZ0fHxzPT09cXQpJiZvPT09WXQpJiYoeT1SdCxtLT0oZCYmQT09PXcmJncudmlzdWFsVmlld3BvcnQ/dy52aXN1YWxWaWV3cG9ydC5oZWlnaHQ6QVtFXSktbi5oZWlnaHQsbSo9bD8xOi0xKSxzIT09VnQmJihzIT09enQmJnMhPT1SdHx8byE9PVl0KXx8KHY9cXQsZi09KGQmJkE9PT13JiZ3LnZpc3VhbFZpZXdwb3J0P3cudmlzdWFsVmlld3BvcnQud2lkdGg6QVtUXSktbi53aWR0aCxmKj1sPzE6LTEpfXZhciBDLE89T2JqZWN0LmFzc2lnbih7cG9zaXRpb246YX0sYyYmSGUpLHg9ITA9PT1oP2Z1bmN0aW9uKHQsZSl7dmFyIGk9dC54LG49dC55LHM9ZS5kZXZpY2VQaXhlbFJhdGlvfHwxO3JldHVybnt4OndlKGkqcykvc3x8MCx5OndlKG4qcykvc3x8MH19KHt4OmYseTptfSxmZShpKSk6e3g6Zix5Om19O3JldHVybiBmPXgueCxtPXgueSxsP09iamVjdC5hc3NpZ24oe30sTywoKEM9e30pW3ldPWI/XCIwXCI6XCJcIixDW3ZdPV8/XCIwXCI6XCJcIixDLnRyYW5zZm9ybT0ody5kZXZpY2VQaXhlbFJhdGlvfHwxKTw9MT9cInRyYW5zbGF0ZShcIitmK1wicHgsIFwiK20rXCJweClcIjpcInRyYW5zbGF0ZTNkKFwiK2YrXCJweCwgXCIrbStcInB4LCAwKVwiLEMpKTpPYmplY3QuYXNzaWduKHt9LE8sKChlPXt9KVt5XT1iP20rXCJweFwiOlwiXCIsZVt2XT1fP2YrXCJweFwiOlwiXCIsZS50cmFuc2Zvcm09XCJcIixlKSl9Y29uc3QgQmU9e25hbWU6XCJjb21wdXRlU3R5bGVzXCIsZW5hYmxlZDohMCxwaGFzZTpcImJlZm9yZVdyaXRlXCIsZm46ZnVuY3Rpb24odCl7dmFyIGU9dC5zdGF0ZSxpPXQub3B0aW9ucyxuPWkuZ3B1QWNjZWxlcmF0aW9uLHM9dm9pZCAwPT09bnx8bixvPWkuYWRhcHRpdmUscj12b2lkIDA9PT1vfHxvLGE9aS5yb3VuZE9mZnNldHMsbD12b2lkIDA9PT1hfHxhLGM9e3BsYWNlbWVudDpiZShlLnBsYWNlbWVudCksdmFyaWF0aW9uOkZlKGUucGxhY2VtZW50KSxwb3BwZXI6ZS5lbGVtZW50cy5wb3BwZXIscG9wcGVyUmVjdDplLnJlY3RzLnBvcHBlcixncHVBY2NlbGVyYXRpb246cyxpc0ZpeGVkOlwiZml4ZWRcIj09PWUub3B0aW9ucy5zdHJhdGVneX07bnVsbCE9ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMmJihlLnN0eWxlcy5wb3BwZXI9T2JqZWN0LmFzc2lnbih7fSxlLnN0eWxlcy5wb3BwZXIsV2UoT2JqZWN0LmFzc2lnbih7fSxjLHtvZmZzZXRzOmUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLHBvc2l0aW9uOmUub3B0aW9ucy5zdHJhdGVneSxhZGFwdGl2ZTpyLHJvdW5kT2Zmc2V0czpsfSkpKSksbnVsbCE9ZS5tb2RpZmllcnNEYXRhLmFycm93JiYoZS5zdHlsZXMuYXJyb3c9T2JqZWN0LmFzc2lnbih7fSxlLnN0eWxlcy5hcnJvdyxXZShPYmplY3QuYXNzaWduKHt9LGMse29mZnNldHM6ZS5tb2RpZmllcnNEYXRhLmFycm93LHBvc2l0aW9uOlwiYWJzb2x1dGVcIixhZGFwdGl2ZTohMSxyb3VuZE9mZnNldHM6bH0pKSkpLGUuYXR0cmlidXRlcy5wb3BwZXI9T2JqZWN0LmFzc2lnbih7fSxlLmF0dHJpYnV0ZXMucG9wcGVyLHtcImRhdGEtcG9wcGVyLXBsYWNlbWVudFwiOmUucGxhY2VtZW50fSl9LGRhdGE6e319O3ZhciB6ZT17cGFzc2l2ZTohMH07Y29uc3QgUmU9e25hbWU6XCJldmVudExpc3RlbmVyc1wiLGVuYWJsZWQ6ITAscGhhc2U6XCJ3cml0ZVwiLGZuOmZ1bmN0aW9uKCl7fSxlZmZlY3Q6ZnVuY3Rpb24odCl7dmFyIGU9dC5zdGF0ZSxpPXQuaW5zdGFuY2Usbj10Lm9wdGlvbnMscz1uLnNjcm9sbCxvPXZvaWQgMD09PXN8fHMscj1uLnJlc2l6ZSxhPXZvaWQgMD09PXJ8fHIsbD1mZShlLmVsZW1lbnRzLnBvcHBlciksYz1bXS5jb25jYXQoZS5zY3JvbGxQYXJlbnRzLnJlZmVyZW5jZSxlLnNjcm9sbFBhcmVudHMucG9wcGVyKTtyZXR1cm4gbyYmYy5mb3JFYWNoKChmdW5jdGlvbih0KXt0LmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIixpLnVwZGF0ZSx6ZSl9KSksYSYmbC5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsaS51cGRhdGUsemUpLGZ1bmN0aW9uKCl7byYmYy5mb3JFYWNoKChmdW5jdGlvbih0KXt0LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIixpLnVwZGF0ZSx6ZSl9KSksYSYmbC5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsaS51cGRhdGUsemUpfX0sZGF0YTp7fX07dmFyIHFlPXtsZWZ0OlwicmlnaHRcIixyaWdodDpcImxlZnRcIixib3R0b206XCJ0b3BcIix0b3A6XCJib3R0b21cIn07ZnVuY3Rpb24gVmUodCl7cmV0dXJuIHQucmVwbGFjZSgvbGVmdHxyaWdodHxib3R0b218dG9wL2csKGZ1bmN0aW9uKHQpe3JldHVybiBxZVt0XX0pKX12YXIgS2U9e3N0YXJ0OlwiZW5kXCIsZW5kOlwic3RhcnRcIn07ZnVuY3Rpb24gUWUodCl7cmV0dXJuIHQucmVwbGFjZSgvc3RhcnR8ZW5kL2csKGZ1bmN0aW9uKHQpe3JldHVybiBLZVt0XX0pKX1mdW5jdGlvbiBYZSh0KXt2YXIgZT1mZSh0KTtyZXR1cm57c2Nyb2xsTGVmdDplLnBhZ2VYT2Zmc2V0LHNjcm9sbFRvcDplLnBhZ2VZT2Zmc2V0fX1mdW5jdGlvbiBZZSh0KXtyZXR1cm4gVGUoTGUodCkpLmxlZnQrWGUodCkuc2Nyb2xsTGVmdH1mdW5jdGlvbiBVZSh0KXt2YXIgZT14ZSh0KSxpPWUub3ZlcmZsb3csbj1lLm92ZXJmbG93WCxzPWUub3ZlcmZsb3dZO3JldHVybi9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbi8udGVzdChpK3Mrbil9ZnVuY3Rpb24gR2UodCl7cmV0dXJuW1wiaHRtbFwiLFwiYm9keVwiLFwiI2RvY3VtZW50XCJdLmluZGV4T2YodWUodCkpPj0wP3Qub3duZXJEb2N1bWVudC5ib2R5Om1lKHQpJiZVZSh0KT90OkdlKFNlKHQpKX1mdW5jdGlvbiBKZSh0LGUpe3ZhciBpO3ZvaWQgMD09PWUmJihlPVtdKTt2YXIgbj1HZSh0KSxzPW49PT0obnVsbD09KGk9dC5vd25lckRvY3VtZW50KT92b2lkIDA6aS5ib2R5KSxvPWZlKG4pLHI9cz9bb10uY29uY2F0KG8udmlzdWFsVmlld3BvcnR8fFtdLFVlKG4pP246W10pOm4sYT1lLmNvbmNhdChyKTtyZXR1cm4gcz9hOmEuY29uY2F0KEplKFNlKHIpKSl9ZnVuY3Rpb24gWmUodCl7cmV0dXJuIE9iamVjdC5hc3NpZ24oe30sdCx7bGVmdDp0LngsdG9wOnQueSxyaWdodDp0LngrdC53aWR0aCxib3R0b206dC55K3QuaGVpZ2h0fSl9ZnVuY3Rpb24gdGkodCxlLGkpe3JldHVybiBlPT09R3Q/WmUoZnVuY3Rpb24odCxlKXt2YXIgaT1mZSh0KSxuPUxlKHQpLHM9aS52aXN1YWxWaWV3cG9ydCxvPW4uY2xpZW50V2lkdGgscj1uLmNsaWVudEhlaWdodCxhPTAsbD0wO2lmKHMpe289cy53aWR0aCxyPXMuaGVpZ2h0O3ZhciBjPUVlKCk7KGN8fCFjJiZcImZpeGVkXCI9PT1lKSYmKGE9cy5vZmZzZXRMZWZ0LGw9cy5vZmZzZXRUb3ApfXJldHVybnt3aWR0aDpvLGhlaWdodDpyLHg6YStZZSh0KSx5Omx9fSh0LGkpKTpwZShlKT9mdW5jdGlvbih0LGUpe3ZhciBpPVRlKHQsITEsXCJmaXhlZFwiPT09ZSk7cmV0dXJuIGkudG9wPWkudG9wK3QuY2xpZW50VG9wLGkubGVmdD1pLmxlZnQrdC5jbGllbnRMZWZ0LGkuYm90dG9tPWkudG9wK3QuY2xpZW50SGVpZ2h0LGkucmlnaHQ9aS5sZWZ0K3QuY2xpZW50V2lkdGgsaS53aWR0aD10LmNsaWVudFdpZHRoLGkuaGVpZ2h0PXQuY2xpZW50SGVpZ2h0LGkueD1pLmxlZnQsaS55PWkudG9wLGl9KGUsaSk6WmUoZnVuY3Rpb24odCl7dmFyIGUsaT1MZSh0KSxuPVhlKHQpLHM9bnVsbD09KGU9dC5vd25lckRvY3VtZW50KT92b2lkIDA6ZS5ib2R5LG89dmUoaS5zY3JvbGxXaWR0aCxpLmNsaWVudFdpZHRoLHM/cy5zY3JvbGxXaWR0aDowLHM/cy5jbGllbnRXaWR0aDowKSxyPXZlKGkuc2Nyb2xsSGVpZ2h0LGkuY2xpZW50SGVpZ2h0LHM/cy5zY3JvbGxIZWlnaHQ6MCxzP3MuY2xpZW50SGVpZ2h0OjApLGE9LW4uc2Nyb2xsTGVmdCtZZSh0KSxsPS1uLnNjcm9sbFRvcDtyZXR1cm5cInJ0bFwiPT09eGUoc3x8aSkuZGlyZWN0aW9uJiYoYSs9dmUoaS5jbGllbnRXaWR0aCxzP3MuY2xpZW50V2lkdGg6MCktbykse3dpZHRoOm8saGVpZ2h0OnIseDphLHk6bH19KExlKHQpKSl9ZnVuY3Rpb24gZWkodCl7dmFyIGUsaT10LnJlZmVyZW5jZSxuPXQuZWxlbWVudCxzPXQucGxhY2VtZW50LG89cz9iZShzKTpudWxsLHI9cz9GZShzKTpudWxsLGE9aS54K2kud2lkdGgvMi1uLndpZHRoLzIsbD1pLnkraS5oZWlnaHQvMi1uLmhlaWdodC8yO3N3aXRjaChvKXtjYXNlIHp0OmU9e3g6YSx5OmkueS1uLmhlaWdodH07YnJlYWs7Y2FzZSBSdDplPXt4OmEseTppLnkraS5oZWlnaHR9O2JyZWFrO2Nhc2UgcXQ6ZT17eDppLngraS53aWR0aCx5Omx9O2JyZWFrO2Nhc2UgVnQ6ZT17eDppLngtbi53aWR0aCx5Omx9O2JyZWFrO2RlZmF1bHQ6ZT17eDppLngseTppLnl9fXZhciBjPW8/SWUobyk6bnVsbDtpZihudWxsIT1jKXt2YXIgaD1cInlcIj09PWM/XCJoZWlnaHRcIjpcIndpZHRoXCI7c3dpdGNoKHIpe2Nhc2UgWHQ6ZVtjXT1lW2NdLShpW2hdLzItbltoXS8yKTticmVhaztjYXNlIFl0OmVbY109ZVtjXSsoaVtoXS8yLW5baF0vMil9fXJldHVybiBlfWZ1bmN0aW9uIGlpKHQsZSl7dm9pZCAwPT09ZSYmKGU9e30pO3ZhciBpPWUsbj1pLnBsYWNlbWVudCxzPXZvaWQgMD09PW4/dC5wbGFjZW1lbnQ6bixvPWkuc3RyYXRlZ3kscj12b2lkIDA9PT1vP3Quc3RyYXRlZ3k6byxhPWkuYm91bmRhcnksbD12b2lkIDA9PT1hP1V0OmEsYz1pLnJvb3RCb3VuZGFyeSxoPXZvaWQgMD09PWM/R3Q6YyxkPWkuZWxlbWVudENvbnRleHQsdT12b2lkIDA9PT1kP0p0OmQsZj1pLmFsdEJvdW5kYXJ5LHA9dm9pZCAwIT09ZiYmZixtPWkucGFkZGluZyxnPXZvaWQgMD09PW0/MDptLF89UGUoXCJudW1iZXJcIiE9dHlwZW9mIGc/ZzpqZShnLFF0KSksYj11PT09SnQ/WnQ6SnQsdj10LnJlY3RzLnBvcHBlcix5PXQuZWxlbWVudHNbcD9iOnVdLHc9ZnVuY3Rpb24odCxlLGksbil7dmFyIHM9XCJjbGlwcGluZ1BhcmVudHNcIj09PWU/ZnVuY3Rpb24odCl7dmFyIGU9SmUoU2UodCkpLGk9W1wiYWJzb2x1dGVcIixcImZpeGVkXCJdLmluZGV4T2YoeGUodCkucG9zaXRpb24pPj0wJiZtZSh0KT8kZSh0KTp0O3JldHVybiBwZShpKT9lLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHBlKHQpJiZPZSh0LGkpJiZcImJvZHlcIiE9PXVlKHQpfSkpOltdfSh0KTpbXS5jb25jYXQoZSksbz1bXS5jb25jYXQocyxbaV0pLHI9b1swXSxhPW8ucmVkdWNlKChmdW5jdGlvbihlLGkpe3ZhciBzPXRpKHQsaSxuKTtyZXR1cm4gZS50b3A9dmUocy50b3AsZS50b3ApLGUucmlnaHQ9eWUocy5yaWdodCxlLnJpZ2h0KSxlLmJvdHRvbT15ZShzLmJvdHRvbSxlLmJvdHRvbSksZS5sZWZ0PXZlKHMubGVmdCxlLmxlZnQpLGV9KSx0aSh0LHIsbikpO3JldHVybiBhLndpZHRoPWEucmlnaHQtYS5sZWZ0LGEuaGVpZ2h0PWEuYm90dG9tLWEudG9wLGEueD1hLmxlZnQsYS55PWEudG9wLGF9KHBlKHkpP3k6eS5jb250ZXh0RWxlbWVudHx8TGUodC5lbGVtZW50cy5wb3BwZXIpLGwsaCxyKSxBPVRlKHQuZWxlbWVudHMucmVmZXJlbmNlKSxFPWVpKHtyZWZlcmVuY2U6QSxlbGVtZW50OnYsc3RyYXRlZ3k6XCJhYnNvbHV0ZVwiLHBsYWNlbWVudDpzfSksVD1aZShPYmplY3QuYXNzaWduKHt9LHYsRSkpLEM9dT09PUp0P1Q6QSxPPXt0b3A6dy50b3AtQy50b3ArXy50b3AsYm90dG9tOkMuYm90dG9tLXcuYm90dG9tK18uYm90dG9tLGxlZnQ6dy5sZWZ0LUMubGVmdCtfLmxlZnQscmlnaHQ6Qy5yaWdodC13LnJpZ2h0K18ucmlnaHR9LHg9dC5tb2RpZmllcnNEYXRhLm9mZnNldDtpZih1PT09SnQmJngpe3ZhciBrPXhbc107T2JqZWN0LmtleXMoTykuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9W3F0LFJ0XS5pbmRleE9mKHQpPj0wPzE6LTEsaT1benQsUnRdLmluZGV4T2YodCk+PTA/XCJ5XCI6XCJ4XCI7T1t0XSs9a1tpXSplfSkpfXJldHVybiBPfWZ1bmN0aW9uIG5pKHQsZSl7dm9pZCAwPT09ZSYmKGU9e30pO3ZhciBpPWUsbj1pLnBsYWNlbWVudCxzPWkuYm91bmRhcnksbz1pLnJvb3RCb3VuZGFyeSxyPWkucGFkZGluZyxhPWkuZmxpcFZhcmlhdGlvbnMsbD1pLmFsbG93ZWRBdXRvUGxhY2VtZW50cyxjPXZvaWQgMD09PWw/ZWU6bCxoPUZlKG4pLGQ9aD9hP3RlOnRlLmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIEZlKHQpPT09aH0pKTpRdCx1PWQuZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gYy5pbmRleE9mKHQpPj0wfSkpOzA9PT11Lmxlbmd0aCYmKHU9ZCk7dmFyIGY9dS5yZWR1Y2UoKGZ1bmN0aW9uKGUsaSl7cmV0dXJuIGVbaV09aWkodCx7cGxhY2VtZW50OmksYm91bmRhcnk6cyxyb290Qm91bmRhcnk6byxwYWRkaW5nOnJ9KVtiZShpKV0sZX0pLHt9KTtyZXR1cm4gT2JqZWN0LmtleXMoZikuc29ydCgoZnVuY3Rpb24odCxlKXtyZXR1cm4gZlt0XS1mW2VdfSkpfWNvbnN0IHNpPXtuYW1lOlwiZmxpcFwiLGVuYWJsZWQ6ITAscGhhc2U6XCJtYWluXCIsZm46ZnVuY3Rpb24odCl7dmFyIGU9dC5zdGF0ZSxpPXQub3B0aW9ucyxuPXQubmFtZTtpZighZS5tb2RpZmllcnNEYXRhW25dLl9za2lwKXtmb3IodmFyIHM9aS5tYWluQXhpcyxvPXZvaWQgMD09PXN8fHMscj1pLmFsdEF4aXMsYT12b2lkIDA9PT1yfHxyLGw9aS5mYWxsYmFja1BsYWNlbWVudHMsYz1pLnBhZGRpbmcsaD1pLmJvdW5kYXJ5LGQ9aS5yb290Qm91bmRhcnksdT1pLmFsdEJvdW5kYXJ5LGY9aS5mbGlwVmFyaWF0aW9ucyxwPXZvaWQgMD09PWZ8fGYsbT1pLmFsbG93ZWRBdXRvUGxhY2VtZW50cyxnPWUub3B0aW9ucy5wbGFjZW1lbnQsXz1iZShnKSxiPWx8fChfIT09ZyYmcD9mdW5jdGlvbih0KXtpZihiZSh0KT09PUt0KXJldHVybltdO3ZhciBlPVZlKHQpO3JldHVybltRZSh0KSxlLFFlKGUpXX0oZyk6W1ZlKGcpXSksdj1bZ10uY29uY2F0KGIpLnJlZHVjZSgoZnVuY3Rpb24odCxpKXtyZXR1cm4gdC5jb25jYXQoYmUoaSk9PT1LdD9uaShlLHtwbGFjZW1lbnQ6aSxib3VuZGFyeTpoLHJvb3RCb3VuZGFyeTpkLHBhZGRpbmc6YyxmbGlwVmFyaWF0aW9uczpwLGFsbG93ZWRBdXRvUGxhY2VtZW50czptfSk6aSl9KSxbXSkseT1lLnJlY3RzLnJlZmVyZW5jZSx3PWUucmVjdHMucG9wcGVyLEE9bmV3IE1hcCxFPSEwLFQ9dlswXSxDPTA7Qzx2Lmxlbmd0aDtDKyspe3ZhciBPPXZbQ10seD1iZShPKSxrPUZlKE8pPT09WHQsTD1benQsUnRdLmluZGV4T2YoeCk+PTAsUz1MP1wid2lkdGhcIjpcImhlaWdodFwiLEQ9aWkoZSx7cGxhY2VtZW50Ok8sYm91bmRhcnk6aCxyb290Qm91bmRhcnk6ZCxhbHRCb3VuZGFyeTp1LHBhZGRpbmc6Y30pLCQ9TD9rP3F0OlZ0Oms/UnQ6enQ7eVtTXT53W1NdJiYoJD1WZSgkKSk7dmFyIEk9VmUoJCksTj1bXTtpZihvJiZOLnB1c2goRFt4XTw9MCksYSYmTi5wdXNoKERbJF08PTAsRFtJXTw9MCksTi5ldmVyeSgoZnVuY3Rpb24odCl7cmV0dXJuIHR9KSkpe1Q9TyxFPSExO2JyZWFrfUEuc2V0KE8sTil9aWYoRSlmb3IodmFyIFA9ZnVuY3Rpb24odCl7dmFyIGU9di5maW5kKChmdW5jdGlvbihlKXt2YXIgaT1BLmdldChlKTtpZihpKXJldHVybiBpLnNsaWNlKDAsdCkuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiB0fSkpfSkpO2lmKGUpcmV0dXJuIFQ9ZSxcImJyZWFrXCJ9LGo9cD8zOjE7aj4wJiZcImJyZWFrXCIhPT1QKGopO2otLSk7ZS5wbGFjZW1lbnQhPT1UJiYoZS5tb2RpZmllcnNEYXRhW25dLl9za2lwPSEwLGUucGxhY2VtZW50PVQsZS5yZXNldD0hMCl9fSxyZXF1aXJlc0lmRXhpc3RzOltcIm9mZnNldFwiXSxkYXRhOntfc2tpcDohMX19O2Z1bmN0aW9uIG9pKHQsZSxpKXtyZXR1cm4gdm9pZCAwPT09aSYmKGk9e3g6MCx5OjB9KSx7dG9wOnQudG9wLWUuaGVpZ2h0LWkueSxyaWdodDp0LnJpZ2h0LWUud2lkdGgraS54LGJvdHRvbTp0LmJvdHRvbS1lLmhlaWdodCtpLnksbGVmdDp0LmxlZnQtZS53aWR0aC1pLnh9fWZ1bmN0aW9uIHJpKHQpe3JldHVyblt6dCxxdCxSdCxWdF0uc29tZSgoZnVuY3Rpb24oZSl7cmV0dXJuIHRbZV0+PTB9KSl9Y29uc3QgYWk9e25hbWU6XCJoaWRlXCIsZW5hYmxlZDohMCxwaGFzZTpcIm1haW5cIixyZXF1aXJlc0lmRXhpc3RzOltcInByZXZlbnRPdmVyZmxvd1wiXSxmbjpmdW5jdGlvbih0KXt2YXIgZT10LnN0YXRlLGk9dC5uYW1lLG49ZS5yZWN0cy5yZWZlcmVuY2Uscz1lLnJlY3RzLnBvcHBlcixvPWUubW9kaWZpZXJzRGF0YS5wcmV2ZW50T3ZlcmZsb3cscj1paShlLHtlbGVtZW50Q29udGV4dDpcInJlZmVyZW5jZVwifSksYT1paShlLHthbHRCb3VuZGFyeTohMH0pLGw9b2kocixuKSxjPW9pKGEscyxvKSxoPXJpKGwpLGQ9cmkoYyk7ZS5tb2RpZmllcnNEYXRhW2ldPXtyZWZlcmVuY2VDbGlwcGluZ09mZnNldHM6bCxwb3BwZXJFc2NhcGVPZmZzZXRzOmMsaXNSZWZlcmVuY2VIaWRkZW46aCxoYXNQb3BwZXJFc2NhcGVkOmR9LGUuYXR0cmlidXRlcy5wb3BwZXI9T2JqZWN0LmFzc2lnbih7fSxlLmF0dHJpYnV0ZXMucG9wcGVyLHtcImRhdGEtcG9wcGVyLXJlZmVyZW5jZS1oaWRkZW5cIjpoLFwiZGF0YS1wb3BwZXItZXNjYXBlZFwiOmR9KX19LGxpPXtuYW1lOlwib2Zmc2V0XCIsZW5hYmxlZDohMCxwaGFzZTpcIm1haW5cIixyZXF1aXJlczpbXCJwb3BwZXJPZmZzZXRzXCJdLGZuOmZ1bmN0aW9uKHQpe3ZhciBlPXQuc3RhdGUsaT10Lm9wdGlvbnMsbj10Lm5hbWUscz1pLm9mZnNldCxvPXZvaWQgMD09PXM/WzAsMF06cyxyPWVlLnJlZHVjZSgoZnVuY3Rpb24odCxpKXtyZXR1cm4gdFtpXT1mdW5jdGlvbih0LGUsaSl7dmFyIG49YmUodCkscz1bVnQsenRdLmluZGV4T2Yobik+PTA/LTE6MSxvPVwiZnVuY3Rpb25cIj09dHlwZW9mIGk/aShPYmplY3QuYXNzaWduKHt9LGUse3BsYWNlbWVudDp0fSkpOmkscj1vWzBdLGE9b1sxXTtyZXR1cm4gcj1yfHwwLGE9KGF8fDApKnMsW1Z0LHF0XS5pbmRleE9mKG4pPj0wP3t4OmEseTpyfTp7eDpyLHk6YX19KGksZS5yZWN0cyxvKSx0fSkse30pLGE9cltlLnBsYWNlbWVudF0sbD1hLngsYz1hLnk7bnVsbCE9ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMmJihlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cy54Kz1sLGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLnkrPWMpLGUubW9kaWZpZXJzRGF0YVtuXT1yfX0sY2k9e25hbWU6XCJwb3BwZXJPZmZzZXRzXCIsZW5hYmxlZDohMCxwaGFzZTpcInJlYWRcIixmbjpmdW5jdGlvbih0KXt2YXIgZT10LnN0YXRlLGk9dC5uYW1lO2UubW9kaWZpZXJzRGF0YVtpXT1laSh7cmVmZXJlbmNlOmUucmVjdHMucmVmZXJlbmNlLGVsZW1lbnQ6ZS5yZWN0cy5wb3BwZXIsc3RyYXRlZ3k6XCJhYnNvbHV0ZVwiLHBsYWNlbWVudDplLnBsYWNlbWVudH0pfSxkYXRhOnt9fSxoaT17bmFtZTpcInByZXZlbnRPdmVyZmxvd1wiLGVuYWJsZWQ6ITAscGhhc2U6XCJtYWluXCIsZm46ZnVuY3Rpb24odCl7dmFyIGU9dC5zdGF0ZSxpPXQub3B0aW9ucyxuPXQubmFtZSxzPWkubWFpbkF4aXMsbz12b2lkIDA9PT1zfHxzLHI9aS5hbHRBeGlzLGE9dm9pZCAwIT09ciYmcixsPWkuYm91bmRhcnksYz1pLnJvb3RCb3VuZGFyeSxoPWkuYWx0Qm91bmRhcnksZD1pLnBhZGRpbmcsdT1pLnRldGhlcixmPXZvaWQgMD09PXV8fHUscD1pLnRldGhlck9mZnNldCxtPXZvaWQgMD09PXA/MDpwLGc9aWkoZSx7Ym91bmRhcnk6bCxyb290Qm91bmRhcnk6YyxwYWRkaW5nOmQsYWx0Qm91bmRhcnk6aH0pLF89YmUoZS5wbGFjZW1lbnQpLGI9RmUoZS5wbGFjZW1lbnQpLHY9IWIseT1JZShfKSx3PVwieFwiPT09eT9cInlcIjpcInhcIixBPWUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLEU9ZS5yZWN0cy5yZWZlcmVuY2UsVD1lLnJlY3RzLnBvcHBlcixDPVwiZnVuY3Rpb25cIj09dHlwZW9mIG0/bShPYmplY3QuYXNzaWduKHt9LGUucmVjdHMse3BsYWNlbWVudDplLnBsYWNlbWVudH0pKTptLE89XCJudW1iZXJcIj09dHlwZW9mIEM/e21haW5BeGlzOkMsYWx0QXhpczpDfTpPYmplY3QuYXNzaWduKHttYWluQXhpczowLGFsdEF4aXM6MH0sQykseD1lLm1vZGlmaWVyc0RhdGEub2Zmc2V0P2UubW9kaWZpZXJzRGF0YS5vZmZzZXRbZS5wbGFjZW1lbnRdOm51bGwsaz17eDowLHk6MH07aWYoQSl7aWYobyl7dmFyIEwsUz1cInlcIj09PXk/enQ6VnQsRD1cInlcIj09PXk/UnQ6cXQsJD1cInlcIj09PXk/XCJoZWlnaHRcIjpcIndpZHRoXCIsST1BW3ldLE49SStnW1NdLFA9SS1nW0RdLGo9Zj8tVFskXS8yOjAsTT1iPT09WHQ/RVskXTpUWyRdLEY9Yj09PVh0Py1UWyRdOi1FWyRdLEg9ZS5lbGVtZW50cy5hcnJvdyxXPWYmJkg/Q2UoSCk6e3dpZHRoOjAsaGVpZ2h0OjB9LEI9ZS5tb2RpZmllcnNEYXRhW1wiYXJyb3cjcGVyc2lzdGVudFwiXT9lLm1vZGlmaWVyc0RhdGFbXCJhcnJvdyNwZXJzaXN0ZW50XCJdLnBhZGRpbmc6e3RvcDowLHJpZ2h0OjAsYm90dG9tOjAsbGVmdDowfSx6PUJbU10sUj1CW0RdLHE9TmUoMCxFWyRdLFdbJF0pLFY9dj9FWyRdLzItai1xLXotTy5tYWluQXhpczpNLXEtei1PLm1haW5BeGlzLEs9dj8tRVskXS8yK2orcStSK08ubWFpbkF4aXM6RitxK1IrTy5tYWluQXhpcyxRPWUuZWxlbWVudHMuYXJyb3cmJiRlKGUuZWxlbWVudHMuYXJyb3cpLFg9UT9cInlcIj09PXk/US5jbGllbnRUb3B8fDA6US5jbGllbnRMZWZ0fHwwOjAsWT1udWxsIT0oTD1udWxsPT14P3ZvaWQgMDp4W3ldKT9MOjAsVT1JK0stWSxHPU5lKGY/eWUoTixJK1YtWS1YKTpOLEksZj92ZShQLFUpOlApO0FbeV09RyxrW3ldPUctSX1pZihhKXt2YXIgSixaPVwieFwiPT09eT96dDpWdCx0dD1cInhcIj09PXk/UnQ6cXQsZXQ9QVt3XSxpdD1cInlcIj09PXc/XCJoZWlnaHRcIjpcIndpZHRoXCIsbnQ9ZXQrZ1taXSxzdD1ldC1nW3R0XSxvdD0tMSE9PVt6dCxWdF0uaW5kZXhPZihfKSxydD1udWxsIT0oSj1udWxsPT14P3ZvaWQgMDp4W3ddKT9KOjAsYXQ9b3Q/bnQ6ZXQtRVtpdF0tVFtpdF0tcnQrTy5hbHRBeGlzLGx0PW90P2V0K0VbaXRdK1RbaXRdLXJ0LU8uYWx0QXhpczpzdCxjdD1mJiZvdD9mdW5jdGlvbih0LGUsaSl7dmFyIG49TmUodCxlLGkpO3JldHVybiBuPmk/aTpufShhdCxldCxsdCk6TmUoZj9hdDpudCxldCxmP2x0OnN0KTtBW3ddPWN0LGtbd109Y3QtZXR9ZS5tb2RpZmllcnNEYXRhW25dPWt9fSxyZXF1aXJlc0lmRXhpc3RzOltcIm9mZnNldFwiXX07ZnVuY3Rpb24gZGkodCxlLGkpe3ZvaWQgMD09PWkmJihpPSExKTt2YXIgbixzLG89bWUoZSkscj1tZShlKSYmZnVuY3Rpb24odCl7dmFyIGU9dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxpPXdlKGUud2lkdGgpL3Qub2Zmc2V0V2lkdGh8fDEsbj13ZShlLmhlaWdodCkvdC5vZmZzZXRIZWlnaHR8fDE7cmV0dXJuIDEhPT1pfHwxIT09bn0oZSksYT1MZShlKSxsPVRlKHQscixpKSxjPXtzY3JvbGxMZWZ0OjAsc2Nyb2xsVG9wOjB9LGg9e3g6MCx5OjB9O3JldHVybihvfHwhbyYmIWkpJiYoKFwiYm9keVwiIT09dWUoZSl8fFVlKGEpKSYmKGM9KG49ZSkhPT1mZShuKSYmbWUobik/e3Njcm9sbExlZnQ6KHM9bikuc2Nyb2xsTGVmdCxzY3JvbGxUb3A6cy5zY3JvbGxUb3B9OlhlKG4pKSxtZShlKT8oKGg9VGUoZSwhMCkpLngrPWUuY2xpZW50TGVmdCxoLnkrPWUuY2xpZW50VG9wKTphJiYoaC54PVllKGEpKSkse3g6bC5sZWZ0K2Muc2Nyb2xsTGVmdC1oLngseTpsLnRvcCtjLnNjcm9sbFRvcC1oLnksd2lkdGg6bC53aWR0aCxoZWlnaHQ6bC5oZWlnaHR9fWZ1bmN0aW9uIHVpKHQpe3ZhciBlPW5ldyBNYXAsaT1uZXcgU2V0LG49W107ZnVuY3Rpb24gcyh0KXtpLmFkZCh0Lm5hbWUpLFtdLmNvbmNhdCh0LnJlcXVpcmVzfHxbXSx0LnJlcXVpcmVzSWZFeGlzdHN8fFtdKS5mb3JFYWNoKChmdW5jdGlvbih0KXtpZighaS5oYXModCkpe3ZhciBuPWUuZ2V0KHQpO24mJnMobil9fSkpLG4ucHVzaCh0KX1yZXR1cm4gdC5mb3JFYWNoKChmdW5jdGlvbih0KXtlLnNldCh0Lm5hbWUsdCl9KSksdC5mb3JFYWNoKChmdW5jdGlvbih0KXtpLmhhcyh0Lm5hbWUpfHxzKHQpfSkpLG59dmFyIGZpPXtwbGFjZW1lbnQ6XCJib3R0b21cIixtb2RpZmllcnM6W10sc3RyYXRlZ3k6XCJhYnNvbHV0ZVwifTtmdW5jdGlvbiBwaSgpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLGU9bmV3IEFycmF5KHQpLGk9MDtpPHQ7aSsrKWVbaV09YXJndW1lbnRzW2ldO3JldHVybiFlLnNvbWUoKGZ1bmN0aW9uKHQpe3JldHVybiEodCYmXCJmdW5jdGlvblwiPT10eXBlb2YgdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QpfSkpfWZ1bmN0aW9uIG1pKHQpe3ZvaWQgMD09PXQmJih0PXt9KTt2YXIgZT10LGk9ZS5kZWZhdWx0TW9kaWZpZXJzLG49dm9pZCAwPT09aT9bXTppLHM9ZS5kZWZhdWx0T3B0aW9ucyxvPXZvaWQgMD09PXM/Zmk6cztyZXR1cm4gZnVuY3Rpb24odCxlLGkpe3ZvaWQgMD09PWkmJihpPW8pO3ZhciBzLHIsYT17cGxhY2VtZW50OlwiYm90dG9tXCIsb3JkZXJlZE1vZGlmaWVyczpbXSxvcHRpb25zOk9iamVjdC5hc3NpZ24oe30sZmksbyksbW9kaWZpZXJzRGF0YTp7fSxlbGVtZW50czp7cmVmZXJlbmNlOnQscG9wcGVyOmV9LGF0dHJpYnV0ZXM6e30sc3R5bGVzOnt9fSxsPVtdLGM9ITEsaD17c3RhdGU6YSxzZXRPcHRpb25zOmZ1bmN0aW9uKGkpe3ZhciBzPVwiZnVuY3Rpb25cIj09dHlwZW9mIGk/aShhLm9wdGlvbnMpOmk7ZCgpLGEub3B0aW9ucz1PYmplY3QuYXNzaWduKHt9LG8sYS5vcHRpb25zLHMpLGEuc2Nyb2xsUGFyZW50cz17cmVmZXJlbmNlOnBlKHQpP0plKHQpOnQuY29udGV4dEVsZW1lbnQ/SmUodC5jb250ZXh0RWxlbWVudCk6W10scG9wcGVyOkplKGUpfTt2YXIgcixjLHU9ZnVuY3Rpb24odCl7dmFyIGU9dWkodCk7cmV0dXJuIGRlLnJlZHVjZSgoZnVuY3Rpb24odCxpKXtyZXR1cm4gdC5jb25jYXQoZS5maWx0ZXIoKGZ1bmN0aW9uKHQpe3JldHVybiB0LnBoYXNlPT09aX0pKSl9KSxbXSl9KChyPVtdLmNvbmNhdChuLGEub3B0aW9ucy5tb2RpZmllcnMpLGM9ci5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7dmFyIGk9dFtlLm5hbWVdO3JldHVybiB0W2UubmFtZV09aT9PYmplY3QuYXNzaWduKHt9LGksZSx7b3B0aW9uczpPYmplY3QuYXNzaWduKHt9LGkub3B0aW9ucyxlLm9wdGlvbnMpLGRhdGE6T2JqZWN0LmFzc2lnbih7fSxpLmRhdGEsZS5kYXRhKX0pOmUsdH0pLHt9KSxPYmplY3Qua2V5cyhjKS5tYXAoKGZ1bmN0aW9uKHQpe3JldHVybiBjW3RdfSkpKSk7cmV0dXJuIGEub3JkZXJlZE1vZGlmaWVycz11LmZpbHRlcigoZnVuY3Rpb24odCl7cmV0dXJuIHQuZW5hYmxlZH0pKSxhLm9yZGVyZWRNb2RpZmllcnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5uYW1lLGk9dC5vcHRpb25zLG49dm9pZCAwPT09aT97fTppLHM9dC5lZmZlY3Q7aWYoXCJmdW5jdGlvblwiPT10eXBlb2Ygcyl7dmFyIG89cyh7c3RhdGU6YSxuYW1lOmUsaW5zdGFuY2U6aCxvcHRpb25zOm59KTtsLnB1c2gob3x8ZnVuY3Rpb24oKXt9KX19KSksaC51cGRhdGUoKX0sZm9yY2VVcGRhdGU6ZnVuY3Rpb24oKXtpZighYyl7dmFyIHQ9YS5lbGVtZW50cyxlPXQucmVmZXJlbmNlLGk9dC5wb3BwZXI7aWYocGkoZSxpKSl7YS5yZWN0cz17cmVmZXJlbmNlOmRpKGUsJGUoaSksXCJmaXhlZFwiPT09YS5vcHRpb25zLnN0cmF0ZWd5KSxwb3BwZXI6Q2UoaSl9LGEucmVzZXQ9ITEsYS5wbGFjZW1lbnQ9YS5vcHRpb25zLnBsYWNlbWVudCxhLm9yZGVyZWRNb2RpZmllcnMuZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIGEubW9kaWZpZXJzRGF0YVt0Lm5hbWVdPU9iamVjdC5hc3NpZ24oe30sdC5kYXRhKX0pKTtmb3IodmFyIG49MDtuPGEub3JkZXJlZE1vZGlmaWVycy5sZW5ndGg7bisrKWlmKCEwIT09YS5yZXNldCl7dmFyIHM9YS5vcmRlcmVkTW9kaWZpZXJzW25dLG89cy5mbixyPXMub3B0aW9ucyxsPXZvaWQgMD09PXI/e306cixkPXMubmFtZTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBvJiYoYT1vKHtzdGF0ZTphLG9wdGlvbnM6bCxuYW1lOmQsaW5zdGFuY2U6aH0pfHxhKX1lbHNlIGEucmVzZXQ9ITEsbj0tMX19fSx1cGRhdGU6KHM9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IFByb21pc2UoKGZ1bmN0aW9uKHQpe2guZm9yY2VVcGRhdGUoKSx0KGEpfSkpfSxmdW5jdGlvbigpe3JldHVybiByfHwocj1uZXcgUHJvbWlzZSgoZnVuY3Rpb24odCl7UHJvbWlzZS5yZXNvbHZlKCkudGhlbigoZnVuY3Rpb24oKXtyPXZvaWQgMCx0KHMoKSl9KSl9KSkpLHJ9KSxkZXN0cm95OmZ1bmN0aW9uKCl7ZCgpLGM9ITB9fTtpZighcGkodCxlKSlyZXR1cm4gaDtmdW5jdGlvbiBkKCl7bC5mb3JFYWNoKChmdW5jdGlvbih0KXtyZXR1cm4gdCgpfSkpLGw9W119cmV0dXJuIGguc2V0T3B0aW9ucyhpKS50aGVuKChmdW5jdGlvbih0KXshYyYmaS5vbkZpcnN0VXBkYXRlJiZpLm9uRmlyc3RVcGRhdGUodCl9KSksaH19dmFyIGdpPW1pKCksX2k9bWkoe2RlZmF1bHRNb2RpZmllcnM6W1JlLGNpLEJlLF9lXX0pLGJpPW1pKHtkZWZhdWx0TW9kaWZpZXJzOltSZSxjaSxCZSxfZSxsaSxzaSxoaSxNZSxhaV19KTtjb25zdCB2aT1PYmplY3QuZnJlZXplKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7X19wcm90b19fOm51bGwsYWZ0ZXJNYWluOmFlLGFmdGVyUmVhZDpzZSxhZnRlcldyaXRlOmhlLGFwcGx5U3R5bGVzOl9lLGFycm93Ok1lLGF1dG86S3QsYmFzZVBsYWNlbWVudHM6UXQsYmVmb3JlTWFpbjpvZSxiZWZvcmVSZWFkOmllLGJlZm9yZVdyaXRlOmxlLGJvdHRvbTpSdCxjbGlwcGluZ1BhcmVudHM6VXQsY29tcHV0ZVN0eWxlczpCZSxjcmVhdGVQb3BwZXI6YmksY3JlYXRlUG9wcGVyQmFzZTpnaSxjcmVhdGVQb3BwZXJMaXRlOl9pLGRldGVjdE92ZXJmbG93OmlpLGVuZDpZdCxldmVudExpc3RlbmVyczpSZSxmbGlwOnNpLGhpZGU6YWksbGVmdDpWdCxtYWluOnJlLG1vZGlmaWVyUGhhc2VzOmRlLG9mZnNldDpsaSxwbGFjZW1lbnRzOmVlLHBvcHBlcjpKdCxwb3BwZXJHZW5lcmF0b3I6bWkscG9wcGVyT2Zmc2V0czpjaSxwcmV2ZW50T3ZlcmZsb3c6aGkscmVhZDpuZSxyZWZlcmVuY2U6WnQscmlnaHQ6cXQsc3RhcnQ6WHQsdG9wOnp0LHZhcmlhdGlvblBsYWNlbWVudHM6dGUsdmlld3BvcnQ6R3Qsd3JpdGU6Y2V9LFN5bWJvbC50b1N0cmluZ1RhZyx7dmFsdWU6XCJNb2R1bGVcIn0pKSx5aT1cImRyb3Bkb3duXCIsd2k9XCIuYnMuZHJvcGRvd25cIixBaT1cIi5kYXRhLWFwaVwiLEVpPVwiQXJyb3dVcFwiLFRpPVwiQXJyb3dEb3duXCIsQ2k9YGhpZGUke3dpfWAsT2k9YGhpZGRlbiR7d2l9YCx4aT1gc2hvdyR7d2l9YCxraT1gc2hvd24ke3dpfWAsTGk9YGNsaWNrJHt3aX0ke0FpfWAsU2k9YGtleWRvd24ke3dpfSR7QWl9YCxEaT1ga2V5dXAke3dpfSR7QWl9YCwkaT1cInNob3dcIixJaT0nW2RhdGEtYnMtdG9nZ2xlPVwiZHJvcGRvd25cIl06bm90KC5kaXNhYmxlZCk6bm90KDpkaXNhYmxlZCknLE5pPWAke0lpfS4keyRpfWAsUGk9XCIuZHJvcGRvd24tbWVudVwiLGppPXAoKT9cInRvcC1lbmRcIjpcInRvcC1zdGFydFwiLE1pPXAoKT9cInRvcC1zdGFydFwiOlwidG9wLWVuZFwiLEZpPXAoKT9cImJvdHRvbS1lbmRcIjpcImJvdHRvbS1zdGFydFwiLEhpPXAoKT9cImJvdHRvbS1zdGFydFwiOlwiYm90dG9tLWVuZFwiLFdpPXAoKT9cImxlZnQtc3RhcnRcIjpcInJpZ2h0LXN0YXJ0XCIsQmk9cCgpP1wicmlnaHQtc3RhcnRcIjpcImxlZnQtc3RhcnRcIix6aT17YXV0b0Nsb3NlOiEwLGJvdW5kYXJ5OlwiY2xpcHBpbmdQYXJlbnRzXCIsZGlzcGxheTpcImR5bmFtaWNcIixvZmZzZXQ6WzAsMl0scG9wcGVyQ29uZmlnOm51bGwscmVmZXJlbmNlOlwidG9nZ2xlXCJ9LFJpPXthdXRvQ2xvc2U6XCIoYm9vbGVhbnxzdHJpbmcpXCIsYm91bmRhcnk6XCIoc3RyaW5nfGVsZW1lbnQpXCIsZGlzcGxheTpcInN0cmluZ1wiLG9mZnNldDpcIihhcnJheXxzdHJpbmd8ZnVuY3Rpb24pXCIscG9wcGVyQ29uZmlnOlwiKG51bGx8b2JqZWN0fGZ1bmN0aW9uKVwiLHJlZmVyZW5jZTpcIihzdHJpbmd8ZWxlbWVudHxvYmplY3QpXCJ9O2NsYXNzIHFpIGV4dGVuZHMgV3tjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSksdGhpcy5fcG9wcGVyPW51bGwsdGhpcy5fcGFyZW50PXRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZSx0aGlzLl9tZW51PXoubmV4dCh0aGlzLl9lbGVtZW50LFBpKVswXXx8ei5wcmV2KHRoaXMuX2VsZW1lbnQsUGkpWzBdfHx6LmZpbmRPbmUoUGksdGhpcy5fcGFyZW50KSx0aGlzLl9pbk5hdmJhcj10aGlzLl9kZXRlY3ROYXZiYXIoKX1zdGF0aWMgZ2V0IERlZmF1bHQoKXtyZXR1cm4geml9c3RhdGljIGdldCBEZWZhdWx0VHlwZSgpe3JldHVybiBSaX1zdGF0aWMgZ2V0IE5BTUUoKXtyZXR1cm4geWl9dG9nZ2xlKCl7cmV0dXJuIHRoaXMuX2lzU2hvd24oKT90aGlzLmhpZGUoKTp0aGlzLnNob3coKX1zaG93KCl7aWYobCh0aGlzLl9lbGVtZW50KXx8dGhpcy5faXNTaG93bigpKXJldHVybjtjb25zdCB0PXtyZWxhdGVkVGFyZ2V0OnRoaXMuX2VsZW1lbnR9O2lmKCFOLnRyaWdnZXIodGhpcy5fZWxlbWVudCx4aSx0KS5kZWZhdWx0UHJldmVudGVkKXtpZih0aGlzLl9jcmVhdGVQb3BwZXIoKSxcIm9udG91Y2hzdGFydFwiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50JiYhdGhpcy5fcGFyZW50LmNsb3Nlc3QoXCIubmF2YmFyLW5hdlwiKSlmb3IoY29uc3QgdCBvZltdLmNvbmNhdCguLi5kb2N1bWVudC5ib2R5LmNoaWxkcmVuKSlOLm9uKHQsXCJtb3VzZW92ZXJcIixoKTt0aGlzLl9lbGVtZW50LmZvY3VzKCksdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJhcmlhLWV4cGFuZGVkXCIsITApLHRoaXMuX21lbnUuY2xhc3NMaXN0LmFkZCgkaSksdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKCRpKSxOLnRyaWdnZXIodGhpcy5fZWxlbWVudCxraSx0KX19aGlkZSgpe2lmKGwodGhpcy5fZWxlbWVudCl8fCF0aGlzLl9pc1Nob3duKCkpcmV0dXJuO2NvbnN0IHQ9e3JlbGF0ZWRUYXJnZXQ6dGhpcy5fZWxlbWVudH07dGhpcy5fY29tcGxldGVIaWRlKHQpfWRpc3Bvc2UoKXt0aGlzLl9wb3BwZXImJnRoaXMuX3BvcHBlci5kZXN0cm95KCksc3VwZXIuZGlzcG9zZSgpfXVwZGF0ZSgpe3RoaXMuX2luTmF2YmFyPXRoaXMuX2RldGVjdE5hdmJhcigpLHRoaXMuX3BvcHBlciYmdGhpcy5fcG9wcGVyLnVwZGF0ZSgpfV9jb21wbGV0ZUhpZGUodCl7aWYoIU4udHJpZ2dlcih0aGlzLl9lbGVtZW50LENpLHQpLmRlZmF1bHRQcmV2ZW50ZWQpe2lmKFwib250b3VjaHN0YXJ0XCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpZm9yKGNvbnN0IHQgb2ZbXS5jb25jYXQoLi4uZG9jdW1lbnQuYm9keS5jaGlsZHJlbikpTi5vZmYodCxcIm1vdXNlb3ZlclwiLGgpO3RoaXMuX3BvcHBlciYmdGhpcy5fcG9wcGVyLmRlc3Ryb3koKSx0aGlzLl9tZW51LmNsYXNzTGlzdC5yZW1vdmUoJGkpLHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgkaSksdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJhcmlhLWV4cGFuZGVkXCIsXCJmYWxzZVwiKSxGLnJlbW92ZURhdGFBdHRyaWJ1dGUodGhpcy5fbWVudSxcInBvcHBlclwiKSxOLnRyaWdnZXIodGhpcy5fZWxlbWVudCxPaSx0KX19X2dldENvbmZpZyh0KXtpZihcIm9iamVjdFwiPT10eXBlb2YodD1zdXBlci5fZ2V0Q29uZmlnKHQpKS5yZWZlcmVuY2UmJiFvKHQucmVmZXJlbmNlKSYmXCJmdW5jdGlvblwiIT10eXBlb2YgdC5yZWZlcmVuY2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KXRocm93IG5ldyBUeXBlRXJyb3IoYCR7eWkudG9VcHBlckNhc2UoKX06IE9wdGlvbiBcInJlZmVyZW5jZVwiIHByb3ZpZGVkIHR5cGUgXCJvYmplY3RcIiB3aXRob3V0IGEgcmVxdWlyZWQgXCJnZXRCb3VuZGluZ0NsaWVudFJlY3RcIiBtZXRob2QuYCk7cmV0dXJuIHR9X2NyZWF0ZVBvcHBlcigpe2lmKHZvaWQgMD09PXZpKXRocm93IG5ldyBUeXBlRXJyb3IoXCJCb290c3RyYXAncyBkcm9wZG93bnMgcmVxdWlyZSBQb3BwZXIgKGh0dHBzOi8vcG9wcGVyLmpzLm9yZylcIik7bGV0IHQ9dGhpcy5fZWxlbWVudDtcInBhcmVudFwiPT09dGhpcy5fY29uZmlnLnJlZmVyZW5jZT90PXRoaXMuX3BhcmVudDpvKHRoaXMuX2NvbmZpZy5yZWZlcmVuY2UpP3Q9cih0aGlzLl9jb25maWcucmVmZXJlbmNlKTpcIm9iamVjdFwiPT10eXBlb2YgdGhpcy5fY29uZmlnLnJlZmVyZW5jZSYmKHQ9dGhpcy5fY29uZmlnLnJlZmVyZW5jZSk7Y29uc3QgZT10aGlzLl9nZXRQb3BwZXJDb25maWcoKTt0aGlzLl9wb3BwZXI9YmkodCx0aGlzLl9tZW51LGUpfV9pc1Nob3duKCl7cmV0dXJuIHRoaXMuX21lbnUuY2xhc3NMaXN0LmNvbnRhaW5zKCRpKX1fZ2V0UGxhY2VtZW50KCl7Y29uc3QgdD10aGlzLl9wYXJlbnQ7aWYodC5jbGFzc0xpc3QuY29udGFpbnMoXCJkcm9wZW5kXCIpKXJldHVybiBXaTtpZih0LmNsYXNzTGlzdC5jb250YWlucyhcImRyb3BzdGFydFwiKSlyZXR1cm4gQmk7aWYodC5jbGFzc0xpc3QuY29udGFpbnMoXCJkcm9wdXAtY2VudGVyXCIpKXJldHVyblwidG9wXCI7aWYodC5jbGFzc0xpc3QuY29udGFpbnMoXCJkcm9wZG93bi1jZW50ZXJcIikpcmV0dXJuXCJib3R0b21cIjtjb25zdCBlPVwiZW5kXCI9PT1nZXRDb21wdXRlZFN0eWxlKHRoaXMuX21lbnUpLmdldFByb3BlcnR5VmFsdWUoXCItLWJzLXBvc2l0aW9uXCIpLnRyaW0oKTtyZXR1cm4gdC5jbGFzc0xpc3QuY29udGFpbnMoXCJkcm9wdXBcIik/ZT9NaTpqaTplP0hpOkZpfV9kZXRlY3ROYXZiYXIoKXtyZXR1cm4gbnVsbCE9PXRoaXMuX2VsZW1lbnQuY2xvc2VzdChcIi5uYXZiYXJcIil9X2dldE9mZnNldCgpe2NvbnN0e29mZnNldDp0fT10aGlzLl9jb25maWc7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIHQ/dC5zcGxpdChcIixcIikubWFwKCh0PT5OdW1iZXIucGFyc2VJbnQodCwxMCkpKTpcImZ1bmN0aW9uXCI9PXR5cGVvZiB0P2U9PnQoZSx0aGlzLl9lbGVtZW50KTp0fV9nZXRQb3BwZXJDb25maWcoKXtjb25zdCB0PXtwbGFjZW1lbnQ6dGhpcy5fZ2V0UGxhY2VtZW50KCksbW9kaWZpZXJzOlt7bmFtZTpcInByZXZlbnRPdmVyZmxvd1wiLG9wdGlvbnM6e2JvdW5kYXJ5OnRoaXMuX2NvbmZpZy5ib3VuZGFyeX19LHtuYW1lOlwib2Zmc2V0XCIsb3B0aW9uczp7b2Zmc2V0OnRoaXMuX2dldE9mZnNldCgpfX1dfTtyZXR1cm4odGhpcy5faW5OYXZiYXJ8fFwic3RhdGljXCI9PT10aGlzLl9jb25maWcuZGlzcGxheSkmJihGLnNldERhdGFBdHRyaWJ1dGUodGhpcy5fbWVudSxcInBvcHBlclwiLFwic3RhdGljXCIpLHQubW9kaWZpZXJzPVt7bmFtZTpcImFwcGx5U3R5bGVzXCIsZW5hYmxlZDohMX1dKSx7Li4udCwuLi5nKHRoaXMuX2NvbmZpZy5wb3BwZXJDb25maWcsW3RdKX19X3NlbGVjdE1lbnVJdGVtKHtrZXk6dCx0YXJnZXQ6ZX0pe2NvbnN0IGk9ei5maW5kKFwiLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW06bm90KC5kaXNhYmxlZCk6bm90KDpkaXNhYmxlZClcIix0aGlzLl9tZW51KS5maWx0ZXIoKHQ9PmEodCkpKTtpLmxlbmd0aCYmYihpLGUsdD09PVRpLCFpLmluY2x1ZGVzKGUpKS5mb2N1cygpfXN0YXRpYyBqUXVlcnlJbnRlcmZhY2UodCl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXtjb25zdCBlPXFpLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcyx0KTtpZihcInN0cmluZ1wiPT10eXBlb2YgdCl7aWYodm9pZCAwPT09ZVt0XSl0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke3R9XCJgKTtlW3RdKCl9fSkpfXN0YXRpYyBjbGVhck1lbnVzKHQpe2lmKDI9PT10LmJ1dHRvbnx8XCJrZXl1cFwiPT09dC50eXBlJiZcIlRhYlwiIT09dC5rZXkpcmV0dXJuO2NvbnN0IGU9ei5maW5kKE5pKTtmb3IoY29uc3QgaSBvZiBlKXtjb25zdCBlPXFpLmdldEluc3RhbmNlKGkpO2lmKCFlfHwhMT09PWUuX2NvbmZpZy5hdXRvQ2xvc2UpY29udGludWU7Y29uc3Qgbj10LmNvbXBvc2VkUGF0aCgpLHM9bi5pbmNsdWRlcyhlLl9tZW51KTtpZihuLmluY2x1ZGVzKGUuX2VsZW1lbnQpfHxcImluc2lkZVwiPT09ZS5fY29uZmlnLmF1dG9DbG9zZSYmIXN8fFwib3V0c2lkZVwiPT09ZS5fY29uZmlnLmF1dG9DbG9zZSYmcyljb250aW51ZTtpZihlLl9tZW51LmNvbnRhaW5zKHQudGFyZ2V0KSYmKFwia2V5dXBcIj09PXQudHlwZSYmXCJUYWJcIj09PXQua2V5fHwvaW5wdXR8c2VsZWN0fG9wdGlvbnx0ZXh0YXJlYXxmb3JtL2kudGVzdCh0LnRhcmdldC50YWdOYW1lKSkpY29udGludWU7Y29uc3Qgbz17cmVsYXRlZFRhcmdldDplLl9lbGVtZW50fTtcImNsaWNrXCI9PT10LnR5cGUmJihvLmNsaWNrRXZlbnQ9dCksZS5fY29tcGxldGVIaWRlKG8pfX1zdGF0aWMgZGF0YUFwaUtleWRvd25IYW5kbGVyKHQpe2NvbnN0IGU9L2lucHV0fHRleHRhcmVhL2kudGVzdCh0LnRhcmdldC50YWdOYW1lKSxpPVwiRXNjYXBlXCI9PT10LmtleSxuPVtFaSxUaV0uaW5jbHVkZXModC5rZXkpO2lmKCFuJiYhaSlyZXR1cm47aWYoZSYmIWkpcmV0dXJuO3QucHJldmVudERlZmF1bHQoKTtjb25zdCBzPXRoaXMubWF0Y2hlcyhJaSk/dGhpczp6LnByZXYodGhpcyxJaSlbMF18fHoubmV4dCh0aGlzLElpKVswXXx8ei5maW5kT25lKElpLHQuZGVsZWdhdGVUYXJnZXQucGFyZW50Tm9kZSksbz1xaS5nZXRPckNyZWF0ZUluc3RhbmNlKHMpO2lmKG4pcmV0dXJuIHQuc3RvcFByb3BhZ2F0aW9uKCksby5zaG93KCksdm9pZCBvLl9zZWxlY3RNZW51SXRlbSh0KTtvLl9pc1Nob3duKCkmJih0LnN0b3BQcm9wYWdhdGlvbigpLG8uaGlkZSgpLHMuZm9jdXMoKSl9fU4ub24oZG9jdW1lbnQsU2ksSWkscWkuZGF0YUFwaUtleWRvd25IYW5kbGVyKSxOLm9uKGRvY3VtZW50LFNpLFBpLHFpLmRhdGFBcGlLZXlkb3duSGFuZGxlciksTi5vbihkb2N1bWVudCxMaSxxaS5jbGVhck1lbnVzKSxOLm9uKGRvY3VtZW50LERpLHFpLmNsZWFyTWVudXMpLE4ub24oZG9jdW1lbnQsTGksSWksKGZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKSxxaS5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMpLnRvZ2dsZSgpfSkpLG0ocWkpO2NvbnN0IFZpPVwiYmFja2Ryb3BcIixLaT1cInNob3dcIixRaT1gbW91c2Vkb3duLmJzLiR7Vml9YCxYaT17Y2xhc3NOYW1lOlwibW9kYWwtYmFja2Ryb3BcIixjbGlja0NhbGxiYWNrOm51bGwsaXNBbmltYXRlZDohMSxpc1Zpc2libGU6ITAscm9vdEVsZW1lbnQ6XCJib2R5XCJ9LFlpPXtjbGFzc05hbWU6XCJzdHJpbmdcIixjbGlja0NhbGxiYWNrOlwiKGZ1bmN0aW9ufG51bGwpXCIsaXNBbmltYXRlZDpcImJvb2xlYW5cIixpc1Zpc2libGU6XCJib29sZWFuXCIscm9vdEVsZW1lbnQ6XCIoZWxlbWVudHxzdHJpbmcpXCJ9O2NsYXNzIFVpIGV4dGVuZHMgSHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuX2NvbmZpZz10aGlzLl9nZXRDb25maWcodCksdGhpcy5faXNBcHBlbmRlZD0hMSx0aGlzLl9lbGVtZW50PW51bGx9c3RhdGljIGdldCBEZWZhdWx0KCl7cmV0dXJuIFhpfXN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKXtyZXR1cm4gWWl9c3RhdGljIGdldCBOQU1FKCl7cmV0dXJuIFZpfXNob3codCl7aWYoIXRoaXMuX2NvbmZpZy5pc1Zpc2libGUpcmV0dXJuIHZvaWQgZyh0KTt0aGlzLl9hcHBlbmQoKTtjb25zdCBlPXRoaXMuX2dldEVsZW1lbnQoKTt0aGlzLl9jb25maWcuaXNBbmltYXRlZCYmZChlKSxlLmNsYXNzTGlzdC5hZGQoS2kpLHRoaXMuX2VtdWxhdGVBbmltYXRpb24oKCgpPT57Zyh0KX0pKX1oaWRlKHQpe3RoaXMuX2NvbmZpZy5pc1Zpc2libGU/KHRoaXMuX2dldEVsZW1lbnQoKS5jbGFzc0xpc3QucmVtb3ZlKEtpKSx0aGlzLl9lbXVsYXRlQW5pbWF0aW9uKCgoKT0+e3RoaXMuZGlzcG9zZSgpLGcodCl9KSkpOmcodCl9ZGlzcG9zZSgpe3RoaXMuX2lzQXBwZW5kZWQmJihOLm9mZih0aGlzLl9lbGVtZW50LFFpKSx0aGlzLl9lbGVtZW50LnJlbW92ZSgpLHRoaXMuX2lzQXBwZW5kZWQ9ITEpfV9nZXRFbGVtZW50KCl7aWYoIXRoaXMuX2VsZW1lbnQpe2NvbnN0IHQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTt0LmNsYXNzTmFtZT10aGlzLl9jb25maWcuY2xhc3NOYW1lLHRoaXMuX2NvbmZpZy5pc0FuaW1hdGVkJiZ0LmNsYXNzTGlzdC5hZGQoXCJmYWRlXCIpLHRoaXMuX2VsZW1lbnQ9dH1yZXR1cm4gdGhpcy5fZWxlbWVudH1fY29uZmlnQWZ0ZXJNZXJnZSh0KXtyZXR1cm4gdC5yb290RWxlbWVudD1yKHQucm9vdEVsZW1lbnQpLHR9X2FwcGVuZCgpe2lmKHRoaXMuX2lzQXBwZW5kZWQpcmV0dXJuO2NvbnN0IHQ9dGhpcy5fZ2V0RWxlbWVudCgpO3RoaXMuX2NvbmZpZy5yb290RWxlbWVudC5hcHBlbmQodCksTi5vbih0LFFpLCgoKT0+e2codGhpcy5fY29uZmlnLmNsaWNrQ2FsbGJhY2spfSkpLHRoaXMuX2lzQXBwZW5kZWQ9ITB9X2VtdWxhdGVBbmltYXRpb24odCl7Xyh0LHRoaXMuX2dldEVsZW1lbnQoKSx0aGlzLl9jb25maWcuaXNBbmltYXRlZCl9fWNvbnN0IEdpPVwiLmJzLmZvY3VzdHJhcFwiLEppPWBmb2N1c2luJHtHaX1gLFppPWBrZXlkb3duLnRhYiR7R2l9YCx0bj1cImJhY2t3YXJkXCIsZW49e2F1dG9mb2N1czohMCx0cmFwRWxlbWVudDpudWxsfSxubj17YXV0b2ZvY3VzOlwiYm9vbGVhblwiLHRyYXBFbGVtZW50OlwiZWxlbWVudFwifTtjbGFzcyBzbiBleHRlbmRzIEh7Y29uc3RydWN0b3IodCl7c3VwZXIoKSx0aGlzLl9jb25maWc9dGhpcy5fZ2V0Q29uZmlnKHQpLHRoaXMuX2lzQWN0aXZlPSExLHRoaXMuX2xhc3RUYWJOYXZEaXJlY3Rpb249bnVsbH1zdGF0aWMgZ2V0IERlZmF1bHQoKXtyZXR1cm4gZW59c3RhdGljIGdldCBEZWZhdWx0VHlwZSgpe3JldHVybiBubn1zdGF0aWMgZ2V0IE5BTUUoKXtyZXR1cm5cImZvY3VzdHJhcFwifWFjdGl2YXRlKCl7dGhpcy5faXNBY3RpdmV8fCh0aGlzLl9jb25maWcuYXV0b2ZvY3VzJiZ0aGlzLl9jb25maWcudHJhcEVsZW1lbnQuZm9jdXMoKSxOLm9mZihkb2N1bWVudCxHaSksTi5vbihkb2N1bWVudCxKaSwodD0+dGhpcy5faGFuZGxlRm9jdXNpbih0KSkpLE4ub24oZG9jdW1lbnQsWmksKHQ9PnRoaXMuX2hhbmRsZUtleWRvd24odCkpKSx0aGlzLl9pc0FjdGl2ZT0hMCl9ZGVhY3RpdmF0ZSgpe3RoaXMuX2lzQWN0aXZlJiYodGhpcy5faXNBY3RpdmU9ITEsTi5vZmYoZG9jdW1lbnQsR2kpKX1faGFuZGxlRm9jdXNpbih0KXtjb25zdHt0cmFwRWxlbWVudDplfT10aGlzLl9jb25maWc7aWYodC50YXJnZXQ9PT1kb2N1bWVudHx8dC50YXJnZXQ9PT1lfHxlLmNvbnRhaW5zKHQudGFyZ2V0KSlyZXR1cm47Y29uc3QgaT16LmZvY3VzYWJsZUNoaWxkcmVuKGUpOzA9PT1pLmxlbmd0aD9lLmZvY3VzKCk6dGhpcy5fbGFzdFRhYk5hdkRpcmVjdGlvbj09PXRuP2lbaS5sZW5ndGgtMV0uZm9jdXMoKTppWzBdLmZvY3VzKCl9X2hhbmRsZUtleWRvd24odCl7XCJUYWJcIj09PXQua2V5JiYodGhpcy5fbGFzdFRhYk5hdkRpcmVjdGlvbj10LnNoaWZ0S2V5P3RuOlwiZm9yd2FyZFwiKX19Y29uc3Qgb249XCIuZml4ZWQtdG9wLCAuZml4ZWQtYm90dG9tLCAuaXMtZml4ZWQsIC5zdGlja3ktdG9wXCIscm49XCIuc3RpY2t5LXRvcFwiLGFuPVwicGFkZGluZy1yaWdodFwiLGxuPVwibWFyZ2luLXJpZ2h0XCI7Y2xhc3MgY257Y29uc3RydWN0b3IoKXt0aGlzLl9lbGVtZW50PWRvY3VtZW50LmJvZHl9Z2V0V2lkdGgoKXtjb25zdCB0PWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtyZXR1cm4gTWF0aC5hYnMod2luZG93LmlubmVyV2lkdGgtdCl9aGlkZSgpe2NvbnN0IHQ9dGhpcy5nZXRXaWR0aCgpO3RoaXMuX2Rpc2FibGVPdmVyRmxvdygpLHRoaXMuX3NldEVsZW1lbnRBdHRyaWJ1dGVzKHRoaXMuX2VsZW1lbnQsYW4sKGU9PmUrdCkpLHRoaXMuX3NldEVsZW1lbnRBdHRyaWJ1dGVzKG9uLGFuLChlPT5lK3QpKSx0aGlzLl9zZXRFbGVtZW50QXR0cmlidXRlcyhybixsbiwoZT0+ZS10KSl9cmVzZXQoKXt0aGlzLl9yZXNldEVsZW1lbnRBdHRyaWJ1dGVzKHRoaXMuX2VsZW1lbnQsXCJvdmVyZmxvd1wiKSx0aGlzLl9yZXNldEVsZW1lbnRBdHRyaWJ1dGVzKHRoaXMuX2VsZW1lbnQsYW4pLHRoaXMuX3Jlc2V0RWxlbWVudEF0dHJpYnV0ZXMob24sYW4pLHRoaXMuX3Jlc2V0RWxlbWVudEF0dHJpYnV0ZXMocm4sbG4pfWlzT3ZlcmZsb3dpbmcoKXtyZXR1cm4gdGhpcy5nZXRXaWR0aCgpPjB9X2Rpc2FibGVPdmVyRmxvdygpe3RoaXMuX3NhdmVJbml0aWFsQXR0cmlidXRlKHRoaXMuX2VsZW1lbnQsXCJvdmVyZmxvd1wiKSx0aGlzLl9lbGVtZW50LnN0eWxlLm92ZXJmbG93PVwiaGlkZGVuXCJ9X3NldEVsZW1lbnRBdHRyaWJ1dGVzKHQsZSxpKXtjb25zdCBuPXRoaXMuZ2V0V2lkdGgoKTt0aGlzLl9hcHBseU1hbmlwdWxhdGlvbkNhbGxiYWNrKHQsKHQ9PntpZih0IT09dGhpcy5fZWxlbWVudCYmd2luZG93LmlubmVyV2lkdGg+dC5jbGllbnRXaWR0aCtuKXJldHVybjt0aGlzLl9zYXZlSW5pdGlhbEF0dHJpYnV0ZSh0LGUpO2NvbnN0IHM9d2luZG93LmdldENvbXB1dGVkU3R5bGUodCkuZ2V0UHJvcGVydHlWYWx1ZShlKTt0LnN0eWxlLnNldFByb3BlcnR5KGUsYCR7aShOdW1iZXIucGFyc2VGbG9hdChzKSl9cHhgKX0pKX1fc2F2ZUluaXRpYWxBdHRyaWJ1dGUodCxlKXtjb25zdCBpPXQuc3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShlKTtpJiZGLnNldERhdGFBdHRyaWJ1dGUodCxlLGkpfV9yZXNldEVsZW1lbnRBdHRyaWJ1dGVzKHQsZSl7dGhpcy5fYXBwbHlNYW5pcHVsYXRpb25DYWxsYmFjayh0LCh0PT57Y29uc3QgaT1GLmdldERhdGFBdHRyaWJ1dGUodCxlKTtudWxsIT09aT8oRi5yZW1vdmVEYXRhQXR0cmlidXRlKHQsZSksdC5zdHlsZS5zZXRQcm9wZXJ0eShlLGkpKTp0LnN0eWxlLnJlbW92ZVByb3BlcnR5KGUpfSkpfV9hcHBseU1hbmlwdWxhdGlvbkNhbGxiYWNrKHQsZSl7aWYobyh0KSllKHQpO2Vsc2UgZm9yKGNvbnN0IGkgb2Ygei5maW5kKHQsdGhpcy5fZWxlbWVudCkpZShpKX19Y29uc3QgaG49XCIuYnMubW9kYWxcIixkbj1gaGlkZSR7aG59YCx1bj1gaGlkZVByZXZlbnRlZCR7aG59YCxmbj1gaGlkZGVuJHtobn1gLHBuPWBzaG93JHtobn1gLG1uPWBzaG93biR7aG59YCxnbj1gcmVzaXplJHtobn1gLF9uPWBjbGljay5kaXNtaXNzJHtobn1gLGJuPWBtb3VzZWRvd24uZGlzbWlzcyR7aG59YCx2bj1ga2V5ZG93bi5kaXNtaXNzJHtobn1gLHluPWBjbGljayR7aG59LmRhdGEtYXBpYCx3bj1cIm1vZGFsLW9wZW5cIixBbj1cInNob3dcIixFbj1cIm1vZGFsLXN0YXRpY1wiLFRuPXtiYWNrZHJvcDohMCxmb2N1czohMCxrZXlib2FyZDohMH0sQ249e2JhY2tkcm9wOlwiKGJvb2xlYW58c3RyaW5nKVwiLGZvY3VzOlwiYm9vbGVhblwiLGtleWJvYXJkOlwiYm9vbGVhblwifTtjbGFzcyBPbiBleHRlbmRzIFd7Y29uc3RydWN0b3IodCxlKXtzdXBlcih0LGUpLHRoaXMuX2RpYWxvZz16LmZpbmRPbmUoXCIubW9kYWwtZGlhbG9nXCIsdGhpcy5fZWxlbWVudCksdGhpcy5fYmFja2Ryb3A9dGhpcy5faW5pdGlhbGl6ZUJhY2tEcm9wKCksdGhpcy5fZm9jdXN0cmFwPXRoaXMuX2luaXRpYWxpemVGb2N1c1RyYXAoKSx0aGlzLl9pc1Nob3duPSExLHRoaXMuX2lzVHJhbnNpdGlvbmluZz0hMSx0aGlzLl9zY3JvbGxCYXI9bmV3IGNuLHRoaXMuX2FkZEV2ZW50TGlzdGVuZXJzKCl9c3RhdGljIGdldCBEZWZhdWx0KCl7cmV0dXJuIFRufXN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKXtyZXR1cm4gQ259c3RhdGljIGdldCBOQU1FKCl7cmV0dXJuXCJtb2RhbFwifXRvZ2dsZSh0KXtyZXR1cm4gdGhpcy5faXNTaG93bj90aGlzLmhpZGUoKTp0aGlzLnNob3codCl9c2hvdyh0KXt0aGlzLl9pc1Nob3dufHx0aGlzLl9pc1RyYW5zaXRpb25pbmd8fE4udHJpZ2dlcih0aGlzLl9lbGVtZW50LHBuLHtyZWxhdGVkVGFyZ2V0OnR9KS5kZWZhdWx0UHJldmVudGVkfHwodGhpcy5faXNTaG93bj0hMCx0aGlzLl9pc1RyYW5zaXRpb25pbmc9ITAsdGhpcy5fc2Nyb2xsQmFyLmhpZGUoKSxkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQod24pLHRoaXMuX2FkanVzdERpYWxvZygpLHRoaXMuX2JhY2tkcm9wLnNob3coKCgpPT50aGlzLl9zaG93RWxlbWVudCh0KSkpKX1oaWRlKCl7dGhpcy5faXNTaG93biYmIXRoaXMuX2lzVHJhbnNpdGlvbmluZyYmKE4udHJpZ2dlcih0aGlzLl9lbGVtZW50LGRuKS5kZWZhdWx0UHJldmVudGVkfHwodGhpcy5faXNTaG93bj0hMSx0aGlzLl9pc1RyYW5zaXRpb25pbmc9ITAsdGhpcy5fZm9jdXN0cmFwLmRlYWN0aXZhdGUoKSx0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQW4pLHRoaXMuX3F1ZXVlQ2FsbGJhY2soKCgpPT50aGlzLl9oaWRlTW9kYWwoKSksdGhpcy5fZWxlbWVudCx0aGlzLl9pc0FuaW1hdGVkKCkpKSl9ZGlzcG9zZSgpe04ub2ZmKHdpbmRvdyxobiksTi5vZmYodGhpcy5fZGlhbG9nLGhuKSx0aGlzLl9iYWNrZHJvcC5kaXNwb3NlKCksdGhpcy5fZm9jdXN0cmFwLmRlYWN0aXZhdGUoKSxzdXBlci5kaXNwb3NlKCl9aGFuZGxlVXBkYXRlKCl7dGhpcy5fYWRqdXN0RGlhbG9nKCl9X2luaXRpYWxpemVCYWNrRHJvcCgpe3JldHVybiBuZXcgVWkoe2lzVmlzaWJsZTpCb29sZWFuKHRoaXMuX2NvbmZpZy5iYWNrZHJvcCksaXNBbmltYXRlZDp0aGlzLl9pc0FuaW1hdGVkKCl9KX1faW5pdGlhbGl6ZUZvY3VzVHJhcCgpe3JldHVybiBuZXcgc24oe3RyYXBFbGVtZW50OnRoaXMuX2VsZW1lbnR9KX1fc2hvd0VsZW1lbnQodCl7ZG9jdW1lbnQuYm9keS5jb250YWlucyh0aGlzLl9lbGVtZW50KXx8ZG9jdW1lbnQuYm9keS5hcHBlbmQodGhpcy5fZWxlbWVudCksdGhpcy5fZWxlbWVudC5zdHlsZS5kaXNwbGF5PVwiYmxvY2tcIix0aGlzLl9lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShcImFyaWEtaGlkZGVuXCIpLHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKFwiYXJpYS1tb2RhbFwiLCEwKSx0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZShcInJvbGVcIixcImRpYWxvZ1wiKSx0aGlzLl9lbGVtZW50LnNjcm9sbFRvcD0wO2NvbnN0IGU9ei5maW5kT25lKFwiLm1vZGFsLWJvZHlcIix0aGlzLl9kaWFsb2cpO2UmJihlLnNjcm9sbFRvcD0wKSxkKHRoaXMuX2VsZW1lbnQpLHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChBbiksdGhpcy5fcXVldWVDYWxsYmFjaygoKCk9Pnt0aGlzLl9jb25maWcuZm9jdXMmJnRoaXMuX2ZvY3VzdHJhcC5hY3RpdmF0ZSgpLHRoaXMuX2lzVHJhbnNpdGlvbmluZz0hMSxOLnRyaWdnZXIodGhpcy5fZWxlbWVudCxtbix7cmVsYXRlZFRhcmdldDp0fSl9KSx0aGlzLl9kaWFsb2csdGhpcy5faXNBbmltYXRlZCgpKX1fYWRkRXZlbnRMaXN0ZW5lcnMoKXtOLm9uKHRoaXMuX2VsZW1lbnQsdm4sKHQ9PntcIkVzY2FwZVwiPT09dC5rZXkmJih0aGlzLl9jb25maWcua2V5Ym9hcmQ/dGhpcy5oaWRlKCk6dGhpcy5fdHJpZ2dlckJhY2tkcm9wVHJhbnNpdGlvbigpKX0pKSxOLm9uKHdpbmRvdyxnbiwoKCk9Pnt0aGlzLl9pc1Nob3duJiYhdGhpcy5faXNUcmFuc2l0aW9uaW5nJiZ0aGlzLl9hZGp1c3REaWFsb2coKX0pKSxOLm9uKHRoaXMuX2VsZW1lbnQsYm4sKHQ9PntOLm9uZSh0aGlzLl9lbGVtZW50LF9uLChlPT57dGhpcy5fZWxlbWVudD09PXQudGFyZ2V0JiZ0aGlzLl9lbGVtZW50PT09ZS50YXJnZXQmJihcInN0YXRpY1wiIT09dGhpcy5fY29uZmlnLmJhY2tkcm9wP3RoaXMuX2NvbmZpZy5iYWNrZHJvcCYmdGhpcy5oaWRlKCk6dGhpcy5fdHJpZ2dlckJhY2tkcm9wVHJhbnNpdGlvbigpKX0pKX0pKX1faGlkZU1vZGFsKCl7dGhpcy5fZWxlbWVudC5zdHlsZS5kaXNwbGF5PVwibm9uZVwiLHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIiwhMCksdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoXCJhcmlhLW1vZGFsXCIpLHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKFwicm9sZVwiKSx0aGlzLl9pc1RyYW5zaXRpb25pbmc9ITEsdGhpcy5fYmFja2Ryb3AuaGlkZSgoKCk9Pntkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUod24pLHRoaXMuX3Jlc2V0QWRqdXN0bWVudHMoKSx0aGlzLl9zY3JvbGxCYXIucmVzZXQoKSxOLnRyaWdnZXIodGhpcy5fZWxlbWVudCxmbil9KSl9X2lzQW5pbWF0ZWQoKXtyZXR1cm4gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoXCJmYWRlXCIpfV90cmlnZ2VyQmFja2Ryb3BUcmFuc2l0aW9uKCl7aWYoTi50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsdW4pLmRlZmF1bHRQcmV2ZW50ZWQpcmV0dXJuO2NvbnN0IHQ9dGhpcy5fZWxlbWVudC5zY3JvbGxIZWlnaHQ+ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCxlPXRoaXMuX2VsZW1lbnQuc3R5bGUub3ZlcmZsb3dZO1wiaGlkZGVuXCI9PT1lfHx0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhFbil8fCh0fHwodGhpcy5fZWxlbWVudC5zdHlsZS5vdmVyZmxvd1k9XCJoaWRkZW5cIiksdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKEVuKSx0aGlzLl9xdWV1ZUNhbGxiYWNrKCgoKT0+e3RoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShFbiksdGhpcy5fcXVldWVDYWxsYmFjaygoKCk9Pnt0aGlzLl9lbGVtZW50LnN0eWxlLm92ZXJmbG93WT1lfSksdGhpcy5fZGlhbG9nKX0pLHRoaXMuX2RpYWxvZyksdGhpcy5fZWxlbWVudC5mb2N1cygpKX1fYWRqdXN0RGlhbG9nKCl7Y29uc3QgdD10aGlzLl9lbGVtZW50LnNjcm9sbEhlaWdodD5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0LGU9dGhpcy5fc2Nyb2xsQmFyLmdldFdpZHRoKCksaT1lPjA7aWYoaSYmIXQpe2NvbnN0IHQ9cCgpP1wicGFkZGluZ0xlZnRcIjpcInBhZGRpbmdSaWdodFwiO3RoaXMuX2VsZW1lbnQuc3R5bGVbdF09YCR7ZX1weGB9aWYoIWkmJnQpe2NvbnN0IHQ9cCgpP1wicGFkZGluZ1JpZ2h0XCI6XCJwYWRkaW5nTGVmdFwiO3RoaXMuX2VsZW1lbnQuc3R5bGVbdF09YCR7ZX1weGB9fV9yZXNldEFkanVzdG1lbnRzKCl7dGhpcy5fZWxlbWVudC5zdHlsZS5wYWRkaW5nTGVmdD1cIlwiLHRoaXMuX2VsZW1lbnQuc3R5bGUucGFkZGluZ1JpZ2h0PVwiXCJ9c3RhdGljIGpRdWVyeUludGVyZmFjZSh0LGUpe3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7Y29uc3QgaT1Pbi5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMsdCk7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpe2lmKHZvaWQgMD09PWlbdF0pdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkIFwiJHt0fVwiYCk7aVt0XShlKX19KSl9fU4ub24oZG9jdW1lbnQseW4sJ1tkYXRhLWJzLXRvZ2dsZT1cIm1vZGFsXCJdJywoZnVuY3Rpb24odCl7Y29uc3QgZT16LmdldEVsZW1lbnRGcm9tU2VsZWN0b3IodGhpcyk7W1wiQVwiLFwiQVJFQVwiXS5pbmNsdWRlcyh0aGlzLnRhZ05hbWUpJiZ0LnByZXZlbnREZWZhdWx0KCksTi5vbmUoZSxwbiwodD0+e3QuZGVmYXVsdFByZXZlbnRlZHx8Ti5vbmUoZSxmbiwoKCk9PnthKHRoaXMpJiZ0aGlzLmZvY3VzKCl9KSl9KSk7Y29uc3QgaT16LmZpbmRPbmUoXCIubW9kYWwuc2hvd1wiKTtpJiZPbi5nZXRJbnN0YW5jZShpKS5oaWRlKCksT24uZ2V0T3JDcmVhdGVJbnN0YW5jZShlKS50b2dnbGUodGhpcyl9KSksUihPbiksbShPbik7Y29uc3QgeG49XCIuYnMub2ZmY2FudmFzXCIsa249XCIuZGF0YS1hcGlcIixMbj1gbG9hZCR7eG59JHtrbn1gLFNuPVwic2hvd1wiLERuPVwic2hvd2luZ1wiLCRuPVwiaGlkaW5nXCIsSW49XCIub2ZmY2FudmFzLnNob3dcIixObj1gc2hvdyR7eG59YCxQbj1gc2hvd24ke3hufWAsam49YGhpZGUke3hufWAsTW49YGhpZGVQcmV2ZW50ZWQke3hufWAsRm49YGhpZGRlbiR7eG59YCxIbj1gcmVzaXplJHt4bn1gLFduPWBjbGljayR7eG59JHtrbn1gLEJuPWBrZXlkb3duLmRpc21pc3Mke3hufWAsem49e2JhY2tkcm9wOiEwLGtleWJvYXJkOiEwLHNjcm9sbDohMX0sUm49e2JhY2tkcm9wOlwiKGJvb2xlYW58c3RyaW5nKVwiLGtleWJvYXJkOlwiYm9vbGVhblwiLHNjcm9sbDpcImJvb2xlYW5cIn07Y2xhc3MgcW4gZXh0ZW5kcyBXe2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCxlKSx0aGlzLl9pc1Nob3duPSExLHRoaXMuX2JhY2tkcm9wPXRoaXMuX2luaXRpYWxpemVCYWNrRHJvcCgpLHRoaXMuX2ZvY3VzdHJhcD10aGlzLl9pbml0aWFsaXplRm9jdXNUcmFwKCksdGhpcy5fYWRkRXZlbnRMaXN0ZW5lcnMoKX1zdGF0aWMgZ2V0IERlZmF1bHQoKXtyZXR1cm4gem59c3RhdGljIGdldCBEZWZhdWx0VHlwZSgpe3JldHVybiBSbn1zdGF0aWMgZ2V0IE5BTUUoKXtyZXR1cm5cIm9mZmNhbnZhc1wifXRvZ2dsZSh0KXtyZXR1cm4gdGhpcy5faXNTaG93bj90aGlzLmhpZGUoKTp0aGlzLnNob3codCl9c2hvdyh0KXt0aGlzLl9pc1Nob3dufHxOLnRyaWdnZXIodGhpcy5fZWxlbWVudCxObix7cmVsYXRlZFRhcmdldDp0fSkuZGVmYXVsdFByZXZlbnRlZHx8KHRoaXMuX2lzU2hvd249ITAsdGhpcy5fYmFja2Ryb3Auc2hvdygpLHRoaXMuX2NvbmZpZy5zY3JvbGx8fChuZXcgY24pLmhpZGUoKSx0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZShcImFyaWEtbW9kYWxcIiwhMCksdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJyb2xlXCIsXCJkaWFsb2dcIiksdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKERuKSx0aGlzLl9xdWV1ZUNhbGxiYWNrKCgoKT0+e3RoaXMuX2NvbmZpZy5zY3JvbGwmJiF0aGlzLl9jb25maWcuYmFja2Ryb3B8fHRoaXMuX2ZvY3VzdHJhcC5hY3RpdmF0ZSgpLHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChTbiksdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKERuKSxOLnRyaWdnZXIodGhpcy5fZWxlbWVudCxQbix7cmVsYXRlZFRhcmdldDp0fSl9KSx0aGlzLl9lbGVtZW50LCEwKSl9aGlkZSgpe3RoaXMuX2lzU2hvd24mJihOLnRyaWdnZXIodGhpcy5fZWxlbWVudCxqbikuZGVmYXVsdFByZXZlbnRlZHx8KHRoaXMuX2ZvY3VzdHJhcC5kZWFjdGl2YXRlKCksdGhpcy5fZWxlbWVudC5ibHVyKCksdGhpcy5faXNTaG93bj0hMSx0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoJG4pLHRoaXMuX2JhY2tkcm9wLmhpZGUoKSx0aGlzLl9xdWV1ZUNhbGxiYWNrKCgoKT0+e3RoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShTbiwkbiksdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoXCJhcmlhLW1vZGFsXCIpLHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKFwicm9sZVwiKSx0aGlzLl9jb25maWcuc2Nyb2xsfHwobmV3IGNuKS5yZXNldCgpLE4udHJpZ2dlcih0aGlzLl9lbGVtZW50LEZuKX0pLHRoaXMuX2VsZW1lbnQsITApKSl9ZGlzcG9zZSgpe3RoaXMuX2JhY2tkcm9wLmRpc3Bvc2UoKSx0aGlzLl9mb2N1c3RyYXAuZGVhY3RpdmF0ZSgpLHN1cGVyLmRpc3Bvc2UoKX1faW5pdGlhbGl6ZUJhY2tEcm9wKCl7Y29uc3QgdD1Cb29sZWFuKHRoaXMuX2NvbmZpZy5iYWNrZHJvcCk7cmV0dXJuIG5ldyBVaSh7Y2xhc3NOYW1lOlwib2ZmY2FudmFzLWJhY2tkcm9wXCIsaXNWaXNpYmxlOnQsaXNBbmltYXRlZDohMCxyb290RWxlbWVudDp0aGlzLl9lbGVtZW50LnBhcmVudE5vZGUsY2xpY2tDYWxsYmFjazp0PygpPT57XCJzdGF0aWNcIiE9PXRoaXMuX2NvbmZpZy5iYWNrZHJvcD90aGlzLmhpZGUoKTpOLnRyaWdnZXIodGhpcy5fZWxlbWVudCxNbil9Om51bGx9KX1faW5pdGlhbGl6ZUZvY3VzVHJhcCgpe3JldHVybiBuZXcgc24oe3RyYXBFbGVtZW50OnRoaXMuX2VsZW1lbnR9KX1fYWRkRXZlbnRMaXN0ZW5lcnMoKXtOLm9uKHRoaXMuX2VsZW1lbnQsQm4sKHQ9PntcIkVzY2FwZVwiPT09dC5rZXkmJih0aGlzLl9jb25maWcua2V5Ym9hcmQ/dGhpcy5oaWRlKCk6Ti50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsTW4pKX0pKX1zdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKHQpe3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7Y29uc3QgZT1xbi5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMsdCk7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpe2lmKHZvaWQgMD09PWVbdF18fHQuc3RhcnRzV2l0aChcIl9cIil8fFwiY29uc3RydWN0b3JcIj09PXQpdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkIFwiJHt0fVwiYCk7ZVt0XSh0aGlzKX19KSl9fU4ub24oZG9jdW1lbnQsV24sJ1tkYXRhLWJzLXRvZ2dsZT1cIm9mZmNhbnZhc1wiXScsKGZ1bmN0aW9uKHQpe2NvbnN0IGU9ei5nZXRFbGVtZW50RnJvbVNlbGVjdG9yKHRoaXMpO2lmKFtcIkFcIixcIkFSRUFcIl0uaW5jbHVkZXModGhpcy50YWdOYW1lKSYmdC5wcmV2ZW50RGVmYXVsdCgpLGwodGhpcykpcmV0dXJuO04ub25lKGUsRm4sKCgpPT57YSh0aGlzKSYmdGhpcy5mb2N1cygpfSkpO2NvbnN0IGk9ei5maW5kT25lKEluKTtpJiZpIT09ZSYmcW4uZ2V0SW5zdGFuY2UoaSkuaGlkZSgpLHFuLmdldE9yQ3JlYXRlSW5zdGFuY2UoZSkudG9nZ2xlKHRoaXMpfSkpLE4ub24od2luZG93LExuLCgoKT0+e2Zvcihjb25zdCB0IG9mIHouZmluZChJbikpcW4uZ2V0T3JDcmVhdGVJbnN0YW5jZSh0KS5zaG93KCl9KSksTi5vbih3aW5kb3csSG4sKCgpPT57Zm9yKGNvbnN0IHQgb2Ygei5maW5kKFwiW2FyaWEtbW9kYWxdW2NsYXNzKj1zaG93XVtjbGFzcyo9b2ZmY2FudmFzLV1cIikpXCJmaXhlZFwiIT09Z2V0Q29tcHV0ZWRTdHlsZSh0KS5wb3NpdGlvbiYmcW4uZ2V0T3JDcmVhdGVJbnN0YW5jZSh0KS5oaWRlKCl9KSksUihxbiksbShxbik7Y29uc3QgVm49e1wiKlwiOltcImNsYXNzXCIsXCJkaXJcIixcImlkXCIsXCJsYW5nXCIsXCJyb2xlXCIsL15hcmlhLVtcXHctXSokL2ldLGE6W1widGFyZ2V0XCIsXCJocmVmXCIsXCJ0aXRsZVwiLFwicmVsXCJdLGFyZWE6W10sYjpbXSxicjpbXSxjb2w6W10sY29kZTpbXSxkZDpbXSxkaXY6W10sZGw6W10sZHQ6W10sZW06W10saHI6W10saDE6W10saDI6W10saDM6W10saDQ6W10saDU6W10saDY6W10saTpbXSxpbWc6W1wic3JjXCIsXCJzcmNzZXRcIixcImFsdFwiLFwidGl0bGVcIixcIndpZHRoXCIsXCJoZWlnaHRcIl0sbGk6W10sb2w6W10scDpbXSxwcmU6W10sczpbXSxzbWFsbDpbXSxzcGFuOltdLHN1YjpbXSxzdXA6W10sc3Ryb25nOltdLHU6W10sdWw6W119LEtuPW5ldyBTZXQoW1wiYmFja2dyb3VuZFwiLFwiY2l0ZVwiLFwiaHJlZlwiLFwiaXRlbXR5cGVcIixcImxvbmdkZXNjXCIsXCJwb3N0ZXJcIixcInNyY1wiLFwieGxpbms6aHJlZlwiXSksUW49L14oPyFqYXZhc2NyaXB0OikoPzpbYS16MC05Ky4tXSs6fFteJjovPyNdKig/OlsvPyNdfCQpKS9pLFhuPSh0LGUpPT57Y29uc3QgaT10Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGUuaW5jbHVkZXMoaSk/IUtuLmhhcyhpKXx8Qm9vbGVhbihRbi50ZXN0KHQubm9kZVZhbHVlKSk6ZS5maWx0ZXIoKHQ9PnQgaW5zdGFuY2VvZiBSZWdFeHApKS5zb21lKCh0PT50LnRlc3QoaSkpKX0sWW49e2FsbG93TGlzdDpWbixjb250ZW50Ont9LGV4dHJhQ2xhc3M6XCJcIixodG1sOiExLHNhbml0aXplOiEwLHNhbml0aXplRm46bnVsbCx0ZW1wbGF0ZTpcIjxkaXY+PC9kaXY+XCJ9LFVuPXthbGxvd0xpc3Q6XCJvYmplY3RcIixjb250ZW50Olwib2JqZWN0XCIsZXh0cmFDbGFzczpcIihzdHJpbmd8ZnVuY3Rpb24pXCIsaHRtbDpcImJvb2xlYW5cIixzYW5pdGl6ZTpcImJvb2xlYW5cIixzYW5pdGl6ZUZuOlwiKG51bGx8ZnVuY3Rpb24pXCIsdGVtcGxhdGU6XCJzdHJpbmdcIn0sR249e2VudHJ5OlwiKHN0cmluZ3xlbGVtZW50fGZ1bmN0aW9ufG51bGwpXCIsc2VsZWN0b3I6XCIoc3RyaW5nfGVsZW1lbnQpXCJ9O2NsYXNzIEpuIGV4dGVuZHMgSHtjb25zdHJ1Y3Rvcih0KXtzdXBlcigpLHRoaXMuX2NvbmZpZz10aGlzLl9nZXRDb25maWcodCl9c3RhdGljIGdldCBEZWZhdWx0KCl7cmV0dXJuIFlufXN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKXtyZXR1cm4gVW59c3RhdGljIGdldCBOQU1FKCl7cmV0dXJuXCJUZW1wbGF0ZUZhY3RvcnlcIn1nZXRDb250ZW50KCl7cmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5fY29uZmlnLmNvbnRlbnQpLm1hcCgodD0+dGhpcy5fcmVzb2x2ZVBvc3NpYmxlRnVuY3Rpb24odCkpKS5maWx0ZXIoQm9vbGVhbil9aGFzQ29udGVudCgpe3JldHVybiB0aGlzLmdldENvbnRlbnQoKS5sZW5ndGg+MH1jaGFuZ2VDb250ZW50KHQpe3JldHVybiB0aGlzLl9jaGVja0NvbnRlbnQodCksdGhpcy5fY29uZmlnLmNvbnRlbnQ9ey4uLnRoaXMuX2NvbmZpZy5jb250ZW50LC4uLnR9LHRoaXN9dG9IdG1sKCl7Y29uc3QgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO3QuaW5uZXJIVE1MPXRoaXMuX21heWJlU2FuaXRpemUodGhpcy5fY29uZmlnLnRlbXBsYXRlKTtmb3IoY29uc3RbZSxpXW9mIE9iamVjdC5lbnRyaWVzKHRoaXMuX2NvbmZpZy5jb250ZW50KSl0aGlzLl9zZXRDb250ZW50KHQsaSxlKTtjb25zdCBlPXQuY2hpbGRyZW5bMF0saT10aGlzLl9yZXNvbHZlUG9zc2libGVGdW5jdGlvbih0aGlzLl9jb25maWcuZXh0cmFDbGFzcyk7cmV0dXJuIGkmJmUuY2xhc3NMaXN0LmFkZCguLi5pLnNwbGl0KFwiIFwiKSksZX1fdHlwZUNoZWNrQ29uZmlnKHQpe3N1cGVyLl90eXBlQ2hlY2tDb25maWcodCksdGhpcy5fY2hlY2tDb250ZW50KHQuY29udGVudCl9X2NoZWNrQ29udGVudCh0KXtmb3IoY29uc3RbZSxpXW9mIE9iamVjdC5lbnRyaWVzKHQpKXN1cGVyLl90eXBlQ2hlY2tDb25maWcoe3NlbGVjdG9yOmUsZW50cnk6aX0sR24pfV9zZXRDb250ZW50KHQsZSxpKXtjb25zdCBuPXouZmluZE9uZShpLHQpO24mJigoZT10aGlzLl9yZXNvbHZlUG9zc2libGVGdW5jdGlvbihlKSk/byhlKT90aGlzLl9wdXRFbGVtZW50SW5UZW1wbGF0ZShyKGUpLG4pOnRoaXMuX2NvbmZpZy5odG1sP24uaW5uZXJIVE1MPXRoaXMuX21heWJlU2FuaXRpemUoZSk6bi50ZXh0Q29udGVudD1lOm4ucmVtb3ZlKCkpfV9tYXliZVNhbml0aXplKHQpe3JldHVybiB0aGlzLl9jb25maWcuc2FuaXRpemU/ZnVuY3Rpb24odCxlLGkpe2lmKCF0Lmxlbmd0aClyZXR1cm4gdDtpZihpJiZcImZ1bmN0aW9uXCI9PXR5cGVvZiBpKXJldHVybiBpKHQpO2NvbnN0IG49KG5ldyB3aW5kb3cuRE9NUGFyc2VyKS5wYXJzZUZyb21TdHJpbmcodCxcInRleHQvaHRtbFwiKSxzPVtdLmNvbmNhdCguLi5uLmJvZHkucXVlcnlTZWxlY3RvckFsbChcIipcIikpO2Zvcihjb25zdCB0IG9mIHMpe2NvbnN0IGk9dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKCFPYmplY3Qua2V5cyhlKS5pbmNsdWRlcyhpKSl7dC5yZW1vdmUoKTtjb250aW51ZX1jb25zdCBuPVtdLmNvbmNhdCguLi50LmF0dHJpYnV0ZXMpLHM9W10uY29uY2F0KGVbXCIqXCJdfHxbXSxlW2ldfHxbXSk7Zm9yKGNvbnN0IGUgb2YgbilYbihlLHMpfHx0LnJlbW92ZUF0dHJpYnV0ZShlLm5vZGVOYW1lKX1yZXR1cm4gbi5ib2R5LmlubmVySFRNTH0odCx0aGlzLl9jb25maWcuYWxsb3dMaXN0LHRoaXMuX2NvbmZpZy5zYW5pdGl6ZUZuKTp0fV9yZXNvbHZlUG9zc2libGVGdW5jdGlvbih0KXtyZXR1cm4gZyh0LFt0aGlzXSl9X3B1dEVsZW1lbnRJblRlbXBsYXRlKHQsZSl7aWYodGhpcy5fY29uZmlnLmh0bWwpcmV0dXJuIGUuaW5uZXJIVE1MPVwiXCIsdm9pZCBlLmFwcGVuZCh0KTtlLnRleHRDb250ZW50PXQudGV4dENvbnRlbnR9fWNvbnN0IFpuPW5ldyBTZXQoW1wic2FuaXRpemVcIixcImFsbG93TGlzdFwiLFwic2FuaXRpemVGblwiXSksdHM9XCJmYWRlXCIsZXM9XCJzaG93XCIsaXM9XCIubW9kYWxcIixucz1cImhpZGUuYnMubW9kYWxcIixzcz1cImhvdmVyXCIsb3M9XCJmb2N1c1wiLHJzPXtBVVRPOlwiYXV0b1wiLFRPUDpcInRvcFwiLFJJR0hUOnAoKT9cImxlZnRcIjpcInJpZ2h0XCIsQk9UVE9NOlwiYm90dG9tXCIsTEVGVDpwKCk/XCJyaWdodFwiOlwibGVmdFwifSxhcz17YWxsb3dMaXN0OlZuLGFuaW1hdGlvbjohMCxib3VuZGFyeTpcImNsaXBwaW5nUGFyZW50c1wiLGNvbnRhaW5lcjohMSxjdXN0b21DbGFzczpcIlwiLGRlbGF5OjAsZmFsbGJhY2tQbGFjZW1lbnRzOltcInRvcFwiLFwicmlnaHRcIixcImJvdHRvbVwiLFwibGVmdFwiXSxodG1sOiExLG9mZnNldDpbMCw2XSxwbGFjZW1lbnQ6XCJ0b3BcIixwb3BwZXJDb25maWc6bnVsbCxzYW5pdGl6ZTohMCxzYW5pdGl6ZUZuOm51bGwsc2VsZWN0b3I6ITEsdGVtcGxhdGU6JzxkaXYgY2xhc3M9XCJ0b29sdGlwXCIgcm9sZT1cInRvb2x0aXBcIj48ZGl2IGNsYXNzPVwidG9vbHRpcC1hcnJvd1wiPjwvZGl2PjxkaXYgY2xhc3M9XCJ0b29sdGlwLWlubmVyXCI+PC9kaXY+PC9kaXY+Jyx0aXRsZTpcIlwiLHRyaWdnZXI6XCJob3ZlciBmb2N1c1wifSxscz17YWxsb3dMaXN0Olwib2JqZWN0XCIsYW5pbWF0aW9uOlwiYm9vbGVhblwiLGJvdW5kYXJ5OlwiKHN0cmluZ3xlbGVtZW50KVwiLGNvbnRhaW5lcjpcIihzdHJpbmd8ZWxlbWVudHxib29sZWFuKVwiLGN1c3RvbUNsYXNzOlwiKHN0cmluZ3xmdW5jdGlvbilcIixkZWxheTpcIihudW1iZXJ8b2JqZWN0KVwiLGZhbGxiYWNrUGxhY2VtZW50czpcImFycmF5XCIsaHRtbDpcImJvb2xlYW5cIixvZmZzZXQ6XCIoYXJyYXl8c3RyaW5nfGZ1bmN0aW9uKVwiLHBsYWNlbWVudDpcIihzdHJpbmd8ZnVuY3Rpb24pXCIscG9wcGVyQ29uZmlnOlwiKG51bGx8b2JqZWN0fGZ1bmN0aW9uKVwiLHNhbml0aXplOlwiYm9vbGVhblwiLHNhbml0aXplRm46XCIobnVsbHxmdW5jdGlvbilcIixzZWxlY3RvcjpcIihzdHJpbmd8Ym9vbGVhbilcIix0ZW1wbGF0ZTpcInN0cmluZ1wiLHRpdGxlOlwiKHN0cmluZ3xlbGVtZW50fGZ1bmN0aW9uKVwiLHRyaWdnZXI6XCJzdHJpbmdcIn07Y2xhc3MgY3MgZXh0ZW5kcyBXe2NvbnN0cnVjdG9yKHQsZSl7aWYodm9pZCAwPT09dmkpdGhyb3cgbmV3IFR5cGVFcnJvcihcIkJvb3RzdHJhcCdzIHRvb2x0aXBzIHJlcXVpcmUgUG9wcGVyIChodHRwczovL3BvcHBlci5qcy5vcmcpXCIpO3N1cGVyKHQsZSksdGhpcy5faXNFbmFibGVkPSEwLHRoaXMuX3RpbWVvdXQ9MCx0aGlzLl9pc0hvdmVyZWQ9bnVsbCx0aGlzLl9hY3RpdmVUcmlnZ2VyPXt9LHRoaXMuX3BvcHBlcj1udWxsLHRoaXMuX3RlbXBsYXRlRmFjdG9yeT1udWxsLHRoaXMuX25ld0NvbnRlbnQ9bnVsbCx0aGlzLnRpcD1udWxsLHRoaXMuX3NldExpc3RlbmVycygpLHRoaXMuX2NvbmZpZy5zZWxlY3Rvcnx8dGhpcy5fZml4VGl0bGUoKX1zdGF0aWMgZ2V0IERlZmF1bHQoKXtyZXR1cm4gYXN9c3RhdGljIGdldCBEZWZhdWx0VHlwZSgpe3JldHVybiBsc31zdGF0aWMgZ2V0IE5BTUUoKXtyZXR1cm5cInRvb2x0aXBcIn1lbmFibGUoKXt0aGlzLl9pc0VuYWJsZWQ9ITB9ZGlzYWJsZSgpe3RoaXMuX2lzRW5hYmxlZD0hMX10b2dnbGVFbmFibGVkKCl7dGhpcy5faXNFbmFibGVkPSF0aGlzLl9pc0VuYWJsZWR9dG9nZ2xlKCl7dGhpcy5faXNFbmFibGVkJiYodGhpcy5fYWN0aXZlVHJpZ2dlci5jbGljaz0hdGhpcy5fYWN0aXZlVHJpZ2dlci5jbGljayx0aGlzLl9pc1Nob3duKCk/dGhpcy5fbGVhdmUoKTp0aGlzLl9lbnRlcigpKX1kaXNwb3NlKCl7Y2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVvdXQpLE4ub2ZmKHRoaXMuX2VsZW1lbnQuY2xvc2VzdChpcyksbnMsdGhpcy5faGlkZU1vZGFsSGFuZGxlciksdGhpcy5fZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJkYXRhLWJzLW9yaWdpbmFsLXRpdGxlXCIpJiZ0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZShcInRpdGxlXCIsdGhpcy5fZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJkYXRhLWJzLW9yaWdpbmFsLXRpdGxlXCIpKSx0aGlzLl9kaXNwb3NlUG9wcGVyKCksc3VwZXIuZGlzcG9zZSgpfXNob3coKXtpZihcIm5vbmVcIj09PXRoaXMuX2VsZW1lbnQuc3R5bGUuZGlzcGxheSl0aHJvdyBuZXcgRXJyb3IoXCJQbGVhc2UgdXNlIHNob3cgb24gdmlzaWJsZSBlbGVtZW50c1wiKTtpZighdGhpcy5faXNXaXRoQ29udGVudCgpfHwhdGhpcy5faXNFbmFibGVkKXJldHVybjtjb25zdCB0PU4udHJpZ2dlcih0aGlzLl9lbGVtZW50LHRoaXMuY29uc3RydWN0b3IuZXZlbnROYW1lKFwic2hvd1wiKSksZT0oYyh0aGlzLl9lbGVtZW50KXx8dGhpcy5fZWxlbWVudC5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuY29udGFpbnModGhpcy5fZWxlbWVudCk7aWYodC5kZWZhdWx0UHJldmVudGVkfHwhZSlyZXR1cm47dGhpcy5fZGlzcG9zZVBvcHBlcigpO2NvbnN0IGk9dGhpcy5fZ2V0VGlwRWxlbWVudCgpO3RoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKFwiYXJpYS1kZXNjcmliZWRieVwiLGkuZ2V0QXR0cmlidXRlKFwiaWRcIikpO2NvbnN0e2NvbnRhaW5lcjpufT10aGlzLl9jb25maWc7aWYodGhpcy5fZWxlbWVudC5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jb250YWlucyh0aGlzLnRpcCl8fChuLmFwcGVuZChpKSxOLnRyaWdnZXIodGhpcy5fZWxlbWVudCx0aGlzLmNvbnN0cnVjdG9yLmV2ZW50TmFtZShcImluc2VydGVkXCIpKSksdGhpcy5fcG9wcGVyPXRoaXMuX2NyZWF0ZVBvcHBlcihpKSxpLmNsYXNzTGlzdC5hZGQoZXMpLFwib250b3VjaHN0YXJ0XCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpZm9yKGNvbnN0IHQgb2ZbXS5jb25jYXQoLi4uZG9jdW1lbnQuYm9keS5jaGlsZHJlbikpTi5vbih0LFwibW91c2VvdmVyXCIsaCk7dGhpcy5fcXVldWVDYWxsYmFjaygoKCk9PntOLnRyaWdnZXIodGhpcy5fZWxlbWVudCx0aGlzLmNvbnN0cnVjdG9yLmV2ZW50TmFtZShcInNob3duXCIpKSwhMT09PXRoaXMuX2lzSG92ZXJlZCYmdGhpcy5fbGVhdmUoKSx0aGlzLl9pc0hvdmVyZWQ9ITF9KSx0aGlzLnRpcCx0aGlzLl9pc0FuaW1hdGVkKCkpfWhpZGUoKXtpZih0aGlzLl9pc1Nob3duKCkmJiFOLnRyaWdnZXIodGhpcy5fZWxlbWVudCx0aGlzLmNvbnN0cnVjdG9yLmV2ZW50TmFtZShcImhpZGVcIikpLmRlZmF1bHRQcmV2ZW50ZWQpe2lmKHRoaXMuX2dldFRpcEVsZW1lbnQoKS5jbGFzc0xpc3QucmVtb3ZlKGVzKSxcIm9udG91Y2hzdGFydFwiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KWZvcihjb25zdCB0IG9mW10uY29uY2F0KC4uLmRvY3VtZW50LmJvZHkuY2hpbGRyZW4pKU4ub2ZmKHQsXCJtb3VzZW92ZXJcIixoKTt0aGlzLl9hY3RpdmVUcmlnZ2VyLmNsaWNrPSExLHRoaXMuX2FjdGl2ZVRyaWdnZXJbb3NdPSExLHRoaXMuX2FjdGl2ZVRyaWdnZXJbc3NdPSExLHRoaXMuX2lzSG92ZXJlZD1udWxsLHRoaXMuX3F1ZXVlQ2FsbGJhY2soKCgpPT57dGhpcy5faXNXaXRoQWN0aXZlVHJpZ2dlcigpfHwodGhpcy5faXNIb3ZlcmVkfHx0aGlzLl9kaXNwb3NlUG9wcGVyKCksdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoXCJhcmlhLWRlc2NyaWJlZGJ5XCIpLE4udHJpZ2dlcih0aGlzLl9lbGVtZW50LHRoaXMuY29uc3RydWN0b3IuZXZlbnROYW1lKFwiaGlkZGVuXCIpKSl9KSx0aGlzLnRpcCx0aGlzLl9pc0FuaW1hdGVkKCkpfX11cGRhdGUoKXt0aGlzLl9wb3BwZXImJnRoaXMuX3BvcHBlci51cGRhdGUoKX1faXNXaXRoQ29udGVudCgpe3JldHVybiBCb29sZWFuKHRoaXMuX2dldFRpdGxlKCkpfV9nZXRUaXBFbGVtZW50KCl7cmV0dXJuIHRoaXMudGlwfHwodGhpcy50aXA9dGhpcy5fY3JlYXRlVGlwRWxlbWVudCh0aGlzLl9uZXdDb250ZW50fHx0aGlzLl9nZXRDb250ZW50Rm9yVGVtcGxhdGUoKSkpLHRoaXMudGlwfV9jcmVhdGVUaXBFbGVtZW50KHQpe2NvbnN0IGU9dGhpcy5fZ2V0VGVtcGxhdGVGYWN0b3J5KHQpLnRvSHRtbCgpO2lmKCFlKXJldHVybiBudWxsO2UuY2xhc3NMaXN0LnJlbW92ZSh0cyxlcyksZS5jbGFzc0xpc3QuYWRkKGBicy0ke3RoaXMuY29uc3RydWN0b3IuTkFNRX0tYXV0b2ApO2NvbnN0IGk9KHQ9Pntkb3t0Kz1NYXRoLmZsb29yKDFlNipNYXRoLnJhbmRvbSgpKX13aGlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KSk7cmV0dXJuIHR9KSh0aGlzLmNvbnN0cnVjdG9yLk5BTUUpLnRvU3RyaW5nKCk7cmV0dXJuIGUuc2V0QXR0cmlidXRlKFwiaWRcIixpKSx0aGlzLl9pc0FuaW1hdGVkKCkmJmUuY2xhc3NMaXN0LmFkZCh0cyksZX1zZXRDb250ZW50KHQpe3RoaXMuX25ld0NvbnRlbnQ9dCx0aGlzLl9pc1Nob3duKCkmJih0aGlzLl9kaXNwb3NlUG9wcGVyKCksdGhpcy5zaG93KCkpfV9nZXRUZW1wbGF0ZUZhY3RvcnkodCl7cmV0dXJuIHRoaXMuX3RlbXBsYXRlRmFjdG9yeT90aGlzLl90ZW1wbGF0ZUZhY3RvcnkuY2hhbmdlQ29udGVudCh0KTp0aGlzLl90ZW1wbGF0ZUZhY3Rvcnk9bmV3IEpuKHsuLi50aGlzLl9jb25maWcsY29udGVudDp0LGV4dHJhQ2xhc3M6dGhpcy5fcmVzb2x2ZVBvc3NpYmxlRnVuY3Rpb24odGhpcy5fY29uZmlnLmN1c3RvbUNsYXNzKX0pLHRoaXMuX3RlbXBsYXRlRmFjdG9yeX1fZ2V0Q29udGVudEZvclRlbXBsYXRlKCl7cmV0dXJue1wiLnRvb2x0aXAtaW5uZXJcIjp0aGlzLl9nZXRUaXRsZSgpfX1fZ2V0VGl0bGUoKXtyZXR1cm4gdGhpcy5fcmVzb2x2ZVBvc3NpYmxlRnVuY3Rpb24odGhpcy5fY29uZmlnLnRpdGxlKXx8dGhpcy5fZWxlbWVudC5nZXRBdHRyaWJ1dGUoXCJkYXRhLWJzLW9yaWdpbmFsLXRpdGxlXCIpfV9pbml0aWFsaXplT25EZWxlZ2F0ZWRUYXJnZXQodCl7cmV0dXJuIHRoaXMuY29uc3RydWN0b3IuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0LmRlbGVnYXRlVGFyZ2V0LHRoaXMuX2dldERlbGVnYXRlQ29uZmlnKCkpfV9pc0FuaW1hdGVkKCl7cmV0dXJuIHRoaXMuX2NvbmZpZy5hbmltYXRpb258fHRoaXMudGlwJiZ0aGlzLnRpcC5jbGFzc0xpc3QuY29udGFpbnModHMpfV9pc1Nob3duKCl7cmV0dXJuIHRoaXMudGlwJiZ0aGlzLnRpcC5jbGFzc0xpc3QuY29udGFpbnMoZXMpfV9jcmVhdGVQb3BwZXIodCl7Y29uc3QgZT1nKHRoaXMuX2NvbmZpZy5wbGFjZW1lbnQsW3RoaXMsdCx0aGlzLl9lbGVtZW50XSksaT1yc1tlLnRvVXBwZXJDYXNlKCldO3JldHVybiBiaSh0aGlzLl9lbGVtZW50LHQsdGhpcy5fZ2V0UG9wcGVyQ29uZmlnKGkpKX1fZ2V0T2Zmc2V0KCl7Y29uc3R7b2Zmc2V0OnR9PXRoaXMuX2NvbmZpZztyZXR1cm5cInN0cmluZ1wiPT10eXBlb2YgdD90LnNwbGl0KFwiLFwiKS5tYXAoKHQ9Pk51bWJlci5wYXJzZUludCh0LDEwKSkpOlwiZnVuY3Rpb25cIj09dHlwZW9mIHQ/ZT0+dChlLHRoaXMuX2VsZW1lbnQpOnR9X3Jlc29sdmVQb3NzaWJsZUZ1bmN0aW9uKHQpe3JldHVybiBnKHQsW3RoaXMuX2VsZW1lbnRdKX1fZ2V0UG9wcGVyQ29uZmlnKHQpe2NvbnN0IGU9e3BsYWNlbWVudDp0LG1vZGlmaWVyczpbe25hbWU6XCJmbGlwXCIsb3B0aW9uczp7ZmFsbGJhY2tQbGFjZW1lbnRzOnRoaXMuX2NvbmZpZy5mYWxsYmFja1BsYWNlbWVudHN9fSx7bmFtZTpcIm9mZnNldFwiLG9wdGlvbnM6e29mZnNldDp0aGlzLl9nZXRPZmZzZXQoKX19LHtuYW1lOlwicHJldmVudE92ZXJmbG93XCIsb3B0aW9uczp7Ym91bmRhcnk6dGhpcy5fY29uZmlnLmJvdW5kYXJ5fX0se25hbWU6XCJhcnJvd1wiLG9wdGlvbnM6e2VsZW1lbnQ6YC4ke3RoaXMuY29uc3RydWN0b3IuTkFNRX0tYXJyb3dgfX0se25hbWU6XCJwcmVTZXRQbGFjZW1lbnRcIixlbmFibGVkOiEwLHBoYXNlOlwiYmVmb3JlTWFpblwiLGZuOnQ9Pnt0aGlzLl9nZXRUaXBFbGVtZW50KCkuc2V0QXR0cmlidXRlKFwiZGF0YS1wb3BwZXItcGxhY2VtZW50XCIsdC5zdGF0ZS5wbGFjZW1lbnQpfX1dfTtyZXR1cm57Li4uZSwuLi5nKHRoaXMuX2NvbmZpZy5wb3BwZXJDb25maWcsW2VdKX19X3NldExpc3RlbmVycygpe2NvbnN0IHQ9dGhpcy5fY29uZmlnLnRyaWdnZXIuc3BsaXQoXCIgXCIpO2Zvcihjb25zdCBlIG9mIHQpaWYoXCJjbGlja1wiPT09ZSlOLm9uKHRoaXMuX2VsZW1lbnQsdGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoXCJjbGlja1wiKSx0aGlzLl9jb25maWcuc2VsZWN0b3IsKHQ9Pnt0aGlzLl9pbml0aWFsaXplT25EZWxlZ2F0ZWRUYXJnZXQodCkudG9nZ2xlKCl9KSk7ZWxzZSBpZihcIm1hbnVhbFwiIT09ZSl7Y29uc3QgdD1lPT09c3M/dGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoXCJtb3VzZWVudGVyXCIpOnRoaXMuY29uc3RydWN0b3IuZXZlbnROYW1lKFwiZm9jdXNpblwiKSxpPWU9PT1zcz90aGlzLmNvbnN0cnVjdG9yLmV2ZW50TmFtZShcIm1vdXNlbGVhdmVcIik6dGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoXCJmb2N1c291dFwiKTtOLm9uKHRoaXMuX2VsZW1lbnQsdCx0aGlzLl9jb25maWcuc2VsZWN0b3IsKHQ9Pntjb25zdCBlPXRoaXMuX2luaXRpYWxpemVPbkRlbGVnYXRlZFRhcmdldCh0KTtlLl9hY3RpdmVUcmlnZ2VyW1wiZm9jdXNpblwiPT09dC50eXBlP29zOnNzXT0hMCxlLl9lbnRlcigpfSkpLE4ub24odGhpcy5fZWxlbWVudCxpLHRoaXMuX2NvbmZpZy5zZWxlY3RvciwodD0+e2NvbnN0IGU9dGhpcy5faW5pdGlhbGl6ZU9uRGVsZWdhdGVkVGFyZ2V0KHQpO2UuX2FjdGl2ZVRyaWdnZXJbXCJmb2N1c291dFwiPT09dC50eXBlP29zOnNzXT1lLl9lbGVtZW50LmNvbnRhaW5zKHQucmVsYXRlZFRhcmdldCksZS5fbGVhdmUoKX0pKX10aGlzLl9oaWRlTW9kYWxIYW5kbGVyPSgpPT57dGhpcy5fZWxlbWVudCYmdGhpcy5oaWRlKCl9LE4ub24odGhpcy5fZWxlbWVudC5jbG9zZXN0KGlzKSxucyx0aGlzLl9oaWRlTW9kYWxIYW5kbGVyKX1fZml4VGl0bGUoKXtjb25zdCB0PXRoaXMuX2VsZW1lbnQuZ2V0QXR0cmlidXRlKFwidGl0bGVcIik7dCYmKHRoaXMuX2VsZW1lbnQuZ2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiKXx8dGhpcy5fZWxlbWVudC50ZXh0Q29udGVudC50cmltKCl8fHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLHQpLHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKFwiZGF0YS1icy1vcmlnaW5hbC10aXRsZVwiLHQpLHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKFwidGl0bGVcIikpfV9lbnRlcigpe3RoaXMuX2lzU2hvd24oKXx8dGhpcy5faXNIb3ZlcmVkP3RoaXMuX2lzSG92ZXJlZD0hMDoodGhpcy5faXNIb3ZlcmVkPSEwLHRoaXMuX3NldFRpbWVvdXQoKCgpPT57dGhpcy5faXNIb3ZlcmVkJiZ0aGlzLnNob3coKX0pLHRoaXMuX2NvbmZpZy5kZWxheS5zaG93KSl9X2xlYXZlKCl7dGhpcy5faXNXaXRoQWN0aXZlVHJpZ2dlcigpfHwodGhpcy5faXNIb3ZlcmVkPSExLHRoaXMuX3NldFRpbWVvdXQoKCgpPT57dGhpcy5faXNIb3ZlcmVkfHx0aGlzLmhpZGUoKX0pLHRoaXMuX2NvbmZpZy5kZWxheS5oaWRlKSl9X3NldFRpbWVvdXQodCxlKXtjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dCksdGhpcy5fdGltZW91dD1zZXRUaW1lb3V0KHQsZSl9X2lzV2l0aEFjdGl2ZVRyaWdnZXIoKXtyZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLl9hY3RpdmVUcmlnZ2VyKS5pbmNsdWRlcyghMCl9X2dldENvbmZpZyh0KXtjb25zdCBlPUYuZ2V0RGF0YUF0dHJpYnV0ZXModGhpcy5fZWxlbWVudCk7Zm9yKGNvbnN0IHQgb2YgT2JqZWN0LmtleXMoZSkpWm4uaGFzKHQpJiZkZWxldGUgZVt0XTtyZXR1cm4gdD17Li4uZSwuLi5cIm9iamVjdFwiPT10eXBlb2YgdCYmdD90Ont9fSx0PXRoaXMuX21lcmdlQ29uZmlnT2JqKHQpLHQ9dGhpcy5fY29uZmlnQWZ0ZXJNZXJnZSh0KSx0aGlzLl90eXBlQ2hlY2tDb25maWcodCksdH1fY29uZmlnQWZ0ZXJNZXJnZSh0KXtyZXR1cm4gdC5jb250YWluZXI9ITE9PT10LmNvbnRhaW5lcj9kb2N1bWVudC5ib2R5OnIodC5jb250YWluZXIpLFwibnVtYmVyXCI9PXR5cGVvZiB0LmRlbGF5JiYodC5kZWxheT17c2hvdzp0LmRlbGF5LGhpZGU6dC5kZWxheX0pLFwibnVtYmVyXCI9PXR5cGVvZiB0LnRpdGxlJiYodC50aXRsZT10LnRpdGxlLnRvU3RyaW5nKCkpLFwibnVtYmVyXCI9PXR5cGVvZiB0LmNvbnRlbnQmJih0LmNvbnRlbnQ9dC5jb250ZW50LnRvU3RyaW5nKCkpLHR9X2dldERlbGVnYXRlQ29uZmlnKCl7Y29uc3QgdD17fTtmb3IoY29uc3RbZSxpXW9mIE9iamVjdC5lbnRyaWVzKHRoaXMuX2NvbmZpZykpdGhpcy5jb25zdHJ1Y3Rvci5EZWZhdWx0W2VdIT09aSYmKHRbZV09aSk7cmV0dXJuIHQuc2VsZWN0b3I9ITEsdC50cmlnZ2VyPVwibWFudWFsXCIsdH1fZGlzcG9zZVBvcHBlcigpe3RoaXMuX3BvcHBlciYmKHRoaXMuX3BvcHBlci5kZXN0cm95KCksdGhpcy5fcG9wcGVyPW51bGwpLHRoaXMudGlwJiYodGhpcy50aXAucmVtb3ZlKCksdGhpcy50aXA9bnVsbCl9c3RhdGljIGpRdWVyeUludGVyZmFjZSh0KXtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe2NvbnN0IGU9Y3MuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLHQpO2lmKFwic3RyaW5nXCI9PXR5cGVvZiB0KXtpZih2b2lkIDA9PT1lW3RdKXRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCBcIiR7dH1cImApO2VbdF0oKX19KSl9fW0oY3MpO2NvbnN0IGhzPXsuLi5jcy5EZWZhdWx0LGNvbnRlbnQ6XCJcIixvZmZzZXQ6WzAsOF0scGxhY2VtZW50OlwicmlnaHRcIix0ZW1wbGF0ZTonPGRpdiBjbGFzcz1cInBvcG92ZXJcIiByb2xlPVwidG9vbHRpcFwiPjxkaXYgY2xhc3M9XCJwb3BvdmVyLWFycm93XCI+PC9kaXY+PGgzIGNsYXNzPVwicG9wb3Zlci1oZWFkZXJcIj48L2gzPjxkaXYgY2xhc3M9XCJwb3BvdmVyLWJvZHlcIj48L2Rpdj48L2Rpdj4nLHRyaWdnZXI6XCJjbGlja1wifSxkcz17Li4uY3MuRGVmYXVsdFR5cGUsY29udGVudDpcIihudWxsfHN0cmluZ3xlbGVtZW50fGZ1bmN0aW9uKVwifTtjbGFzcyB1cyBleHRlbmRzIGNze3N0YXRpYyBnZXQgRGVmYXVsdCgpe3JldHVybiBoc31zdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCl7cmV0dXJuIGRzfXN0YXRpYyBnZXQgTkFNRSgpe3JldHVyblwicG9wb3ZlclwifV9pc1dpdGhDb250ZW50KCl7cmV0dXJuIHRoaXMuX2dldFRpdGxlKCl8fHRoaXMuX2dldENvbnRlbnQoKX1fZ2V0Q29udGVudEZvclRlbXBsYXRlKCl7cmV0dXJue1wiLnBvcG92ZXItaGVhZGVyXCI6dGhpcy5fZ2V0VGl0bGUoKSxcIi5wb3BvdmVyLWJvZHlcIjp0aGlzLl9nZXRDb250ZW50KCl9fV9nZXRDb250ZW50KCl7cmV0dXJuIHRoaXMuX3Jlc29sdmVQb3NzaWJsZUZ1bmN0aW9uKHRoaXMuX2NvbmZpZy5jb250ZW50KX1zdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKHQpe3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7Y29uc3QgZT11cy5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMsdCk7aWYoXCJzdHJpbmdcIj09dHlwZW9mIHQpe2lmKHZvaWQgMD09PWVbdF0pdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkIFwiJHt0fVwiYCk7ZVt0XSgpfX0pKX19bSh1cyk7Y29uc3QgZnM9XCIuYnMuc2Nyb2xsc3B5XCIscHM9YGFjdGl2YXRlJHtmc31gLG1zPWBjbGljayR7ZnN9YCxncz1gbG9hZCR7ZnN9LmRhdGEtYXBpYCxfcz1cImFjdGl2ZVwiLGJzPVwiW2hyZWZdXCIsdnM9XCIubmF2LWxpbmtcIix5cz1gJHt2c30sIC5uYXYtaXRlbSA+ICR7dnN9LCAubGlzdC1ncm91cC1pdGVtYCx3cz17b2Zmc2V0Om51bGwscm9vdE1hcmdpbjpcIjBweCAwcHggLTI1JVwiLHNtb290aFNjcm9sbDohMSx0YXJnZXQ6bnVsbCx0aHJlc2hvbGQ6Wy4xLC41LDFdfSxBcz17b2Zmc2V0OlwiKG51bWJlcnxudWxsKVwiLHJvb3RNYXJnaW46XCJzdHJpbmdcIixzbW9vdGhTY3JvbGw6XCJib29sZWFuXCIsdGFyZ2V0OlwiZWxlbWVudFwiLHRocmVzaG9sZDpcImFycmF5XCJ9O2NsYXNzIEVzIGV4dGVuZHMgV3tjb25zdHJ1Y3Rvcih0LGUpe3N1cGVyKHQsZSksdGhpcy5fdGFyZ2V0TGlua3M9bmV3IE1hcCx0aGlzLl9vYnNlcnZhYmxlU2VjdGlvbnM9bmV3IE1hcCx0aGlzLl9yb290RWxlbWVudD1cInZpc2libGVcIj09PWdldENvbXB1dGVkU3R5bGUodGhpcy5fZWxlbWVudCkub3ZlcmZsb3dZP251bGw6dGhpcy5fZWxlbWVudCx0aGlzLl9hY3RpdmVUYXJnZXQ9bnVsbCx0aGlzLl9vYnNlcnZlcj1udWxsLHRoaXMuX3ByZXZpb3VzU2Nyb2xsRGF0YT17dmlzaWJsZUVudHJ5VG9wOjAscGFyZW50U2Nyb2xsVG9wOjB9LHRoaXMucmVmcmVzaCgpfXN0YXRpYyBnZXQgRGVmYXVsdCgpe3JldHVybiB3c31zdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCl7cmV0dXJuIEFzfXN0YXRpYyBnZXQgTkFNRSgpe3JldHVyblwic2Nyb2xsc3B5XCJ9cmVmcmVzaCgpe3RoaXMuX2luaXRpYWxpemVUYXJnZXRzQW5kT2JzZXJ2YWJsZXMoKSx0aGlzLl9tYXliZUVuYWJsZVNtb290aFNjcm9sbCgpLHRoaXMuX29ic2VydmVyP3RoaXMuX29ic2VydmVyLmRpc2Nvbm5lY3QoKTp0aGlzLl9vYnNlcnZlcj10aGlzLl9nZXROZXdPYnNlcnZlcigpO2Zvcihjb25zdCB0IG9mIHRoaXMuX29ic2VydmFibGVTZWN0aW9ucy52YWx1ZXMoKSl0aGlzLl9vYnNlcnZlci5vYnNlcnZlKHQpfWRpc3Bvc2UoKXt0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCksc3VwZXIuZGlzcG9zZSgpfV9jb25maWdBZnRlck1lcmdlKHQpe3JldHVybiB0LnRhcmdldD1yKHQudGFyZ2V0KXx8ZG9jdW1lbnQuYm9keSx0LnJvb3RNYXJnaW49dC5vZmZzZXQ/YCR7dC5vZmZzZXR9cHggMHB4IC0zMCVgOnQucm9vdE1hcmdpbixcInN0cmluZ1wiPT10eXBlb2YgdC50aHJlc2hvbGQmJih0LnRocmVzaG9sZD10LnRocmVzaG9sZC5zcGxpdChcIixcIikubWFwKCh0PT5OdW1iZXIucGFyc2VGbG9hdCh0KSkpKSx0fV9tYXliZUVuYWJsZVNtb290aFNjcm9sbCgpe3RoaXMuX2NvbmZpZy5zbW9vdGhTY3JvbGwmJihOLm9mZih0aGlzLl9jb25maWcudGFyZ2V0LG1zKSxOLm9uKHRoaXMuX2NvbmZpZy50YXJnZXQsbXMsYnMsKHQ9Pntjb25zdCBlPXRoaXMuX29ic2VydmFibGVTZWN0aW9ucy5nZXQodC50YXJnZXQuaGFzaCk7aWYoZSl7dC5wcmV2ZW50RGVmYXVsdCgpO2NvbnN0IGk9dGhpcy5fcm9vdEVsZW1lbnR8fHdpbmRvdyxuPWUub2Zmc2V0VG9wLXRoaXMuX2VsZW1lbnQub2Zmc2V0VG9wO2lmKGkuc2Nyb2xsVG8pcmV0dXJuIHZvaWQgaS5zY3JvbGxUbyh7dG9wOm4sYmVoYXZpb3I6XCJzbW9vdGhcIn0pO2kuc2Nyb2xsVG9wPW59fSkpKX1fZ2V0TmV3T2JzZXJ2ZXIoKXtjb25zdCB0PXtyb290OnRoaXMuX3Jvb3RFbGVtZW50LHRocmVzaG9sZDp0aGlzLl9jb25maWcudGhyZXNob2xkLHJvb3RNYXJnaW46dGhpcy5fY29uZmlnLnJvb3RNYXJnaW59O3JldHVybiBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKHQ9PnRoaXMuX29ic2VydmVyQ2FsbGJhY2sodCkpLHQpfV9vYnNlcnZlckNhbGxiYWNrKHQpe2NvbnN0IGU9dD0+dGhpcy5fdGFyZ2V0TGlua3MuZ2V0KGAjJHt0LnRhcmdldC5pZH1gKSxpPXQ9Pnt0aGlzLl9wcmV2aW91c1Njcm9sbERhdGEudmlzaWJsZUVudHJ5VG9wPXQudGFyZ2V0Lm9mZnNldFRvcCx0aGlzLl9wcm9jZXNzKGUodCkpfSxuPSh0aGlzLl9yb290RWxlbWVudHx8ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5zY3JvbGxUb3Ascz1uPj10aGlzLl9wcmV2aW91c1Njcm9sbERhdGEucGFyZW50U2Nyb2xsVG9wO3RoaXMuX3ByZXZpb3VzU2Nyb2xsRGF0YS5wYXJlbnRTY3JvbGxUb3A9bjtmb3IoY29uc3QgbyBvZiB0KXtpZighby5pc0ludGVyc2VjdGluZyl7dGhpcy5fYWN0aXZlVGFyZ2V0PW51bGwsdGhpcy5fY2xlYXJBY3RpdmVDbGFzcyhlKG8pKTtjb250aW51ZX1jb25zdCB0PW8udGFyZ2V0Lm9mZnNldFRvcD49dGhpcy5fcHJldmlvdXNTY3JvbGxEYXRhLnZpc2libGVFbnRyeVRvcDtpZihzJiZ0KXtpZihpKG8pLCFuKXJldHVybn1lbHNlIHN8fHR8fGkobyl9fV9pbml0aWFsaXplVGFyZ2V0c0FuZE9ic2VydmFibGVzKCl7dGhpcy5fdGFyZ2V0TGlua3M9bmV3IE1hcCx0aGlzLl9vYnNlcnZhYmxlU2VjdGlvbnM9bmV3IE1hcDtjb25zdCB0PXouZmluZChicyx0aGlzLl9jb25maWcudGFyZ2V0KTtmb3IoY29uc3QgZSBvZiB0KXtpZighZS5oYXNofHxsKGUpKWNvbnRpbnVlO2NvbnN0IHQ9ei5maW5kT25lKGRlY29kZVVSSShlLmhhc2gpLHRoaXMuX2VsZW1lbnQpO2EodCkmJih0aGlzLl90YXJnZXRMaW5rcy5zZXQoZGVjb2RlVVJJKGUuaGFzaCksZSksdGhpcy5fb2JzZXJ2YWJsZVNlY3Rpb25zLnNldChlLmhhc2gsdCkpfX1fcHJvY2Vzcyh0KXt0aGlzLl9hY3RpdmVUYXJnZXQhPT10JiYodGhpcy5fY2xlYXJBY3RpdmVDbGFzcyh0aGlzLl9jb25maWcudGFyZ2V0KSx0aGlzLl9hY3RpdmVUYXJnZXQ9dCx0LmNsYXNzTGlzdC5hZGQoX3MpLHRoaXMuX2FjdGl2YXRlUGFyZW50cyh0KSxOLnRyaWdnZXIodGhpcy5fZWxlbWVudCxwcyx7cmVsYXRlZFRhcmdldDp0fSkpfV9hY3RpdmF0ZVBhcmVudHModCl7aWYodC5jbGFzc0xpc3QuY29udGFpbnMoXCJkcm9wZG93bi1pdGVtXCIpKXouZmluZE9uZShcIi5kcm9wZG93bi10b2dnbGVcIix0LmNsb3Nlc3QoXCIuZHJvcGRvd25cIikpLmNsYXNzTGlzdC5hZGQoX3MpO2Vsc2UgZm9yKGNvbnN0IGUgb2Ygei5wYXJlbnRzKHQsXCIubmF2LCAubGlzdC1ncm91cFwiKSlmb3IoY29uc3QgdCBvZiB6LnByZXYoZSx5cykpdC5jbGFzc0xpc3QuYWRkKF9zKX1fY2xlYXJBY3RpdmVDbGFzcyh0KXt0LmNsYXNzTGlzdC5yZW1vdmUoX3MpO2NvbnN0IGU9ei5maW5kKGAke2JzfS4ke19zfWAsdCk7Zm9yKGNvbnN0IHQgb2YgZSl0LmNsYXNzTGlzdC5yZW1vdmUoX3MpfXN0YXRpYyBqUXVlcnlJbnRlcmZhY2UodCl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXtjb25zdCBlPUVzLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcyx0KTtpZihcInN0cmluZ1wiPT10eXBlb2YgdCl7aWYodm9pZCAwPT09ZVt0XXx8dC5zdGFydHNXaXRoKFwiX1wiKXx8XCJjb25zdHJ1Y3RvclwiPT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke3R9XCJgKTtlW3RdKCl9fSkpfX1OLm9uKHdpbmRvdyxncywoKCk9Pntmb3IoY29uc3QgdCBvZiB6LmZpbmQoJ1tkYXRhLWJzLXNweT1cInNjcm9sbFwiXScpKUVzLmdldE9yQ3JlYXRlSW5zdGFuY2UodCl9KSksbShFcyk7Y29uc3QgVHM9XCIuYnMudGFiXCIsQ3M9YGhpZGUke1RzfWAsT3M9YGhpZGRlbiR7VHN9YCx4cz1gc2hvdyR7VHN9YCxrcz1gc2hvd24ke1RzfWAsTHM9YGNsaWNrJHtUc31gLFNzPWBrZXlkb3duJHtUc31gLERzPWBsb2FkJHtUc31gLCRzPVwiQXJyb3dMZWZ0XCIsSXM9XCJBcnJvd1JpZ2h0XCIsTnM9XCJBcnJvd1VwXCIsUHM9XCJBcnJvd0Rvd25cIixqcz1cIkhvbWVcIixNcz1cIkVuZFwiLEZzPVwiYWN0aXZlXCIsSHM9XCJmYWRlXCIsV3M9XCJzaG93XCIsQnM9XCIuZHJvcGRvd24tdG9nZ2xlXCIsenM9YDpub3QoJHtCc30pYCxScz0nW2RhdGEtYnMtdG9nZ2xlPVwidGFiXCJdLCBbZGF0YS1icy10b2dnbGU9XCJwaWxsXCJdLCBbZGF0YS1icy10b2dnbGU9XCJsaXN0XCJdJyxxcz1gLm5hdi1saW5rJHt6c30sIC5saXN0LWdyb3VwLWl0ZW0ke3pzfSwgW3JvbGU9XCJ0YWJcIl0ke3pzfSwgJHtSc31gLFZzPWAuJHtGc31bZGF0YS1icy10b2dnbGU9XCJ0YWJcIl0sIC4ke0ZzfVtkYXRhLWJzLXRvZ2dsZT1cInBpbGxcIl0sIC4ke0ZzfVtkYXRhLWJzLXRvZ2dsZT1cImxpc3RcIl1gO2NsYXNzIEtzIGV4dGVuZHMgV3tjb25zdHJ1Y3Rvcih0KXtzdXBlcih0KSx0aGlzLl9wYXJlbnQ9dGhpcy5fZWxlbWVudC5jbG9zZXN0KCcubGlzdC1ncm91cCwgLm5hdiwgW3JvbGU9XCJ0YWJsaXN0XCJdJyksdGhpcy5fcGFyZW50JiYodGhpcy5fc2V0SW5pdGlhbEF0dHJpYnV0ZXModGhpcy5fcGFyZW50LHRoaXMuX2dldENoaWxkcmVuKCkpLE4ub24odGhpcy5fZWxlbWVudCxTcywodD0+dGhpcy5fa2V5ZG93bih0KSkpKX1zdGF0aWMgZ2V0IE5BTUUoKXtyZXR1cm5cInRhYlwifXNob3coKXtjb25zdCB0PXRoaXMuX2VsZW1lbnQ7aWYodGhpcy5fZWxlbUlzQWN0aXZlKHQpKXJldHVybjtjb25zdCBlPXRoaXMuX2dldEFjdGl2ZUVsZW0oKSxpPWU/Ti50cmlnZ2VyKGUsQ3Mse3JlbGF0ZWRUYXJnZXQ6dH0pOm51bGw7Ti50cmlnZ2VyKHQseHMse3JlbGF0ZWRUYXJnZXQ6ZX0pLmRlZmF1bHRQcmV2ZW50ZWR8fGkmJmkuZGVmYXVsdFByZXZlbnRlZHx8KHRoaXMuX2RlYWN0aXZhdGUoZSx0KSx0aGlzLl9hY3RpdmF0ZSh0LGUpKX1fYWN0aXZhdGUodCxlKXt0JiYodC5jbGFzc0xpc3QuYWRkKEZzKSx0aGlzLl9hY3RpdmF0ZSh6LmdldEVsZW1lbnRGcm9tU2VsZWN0b3IodCkpLHRoaXMuX3F1ZXVlQ2FsbGJhY2soKCgpPT57XCJ0YWJcIj09PXQuZ2V0QXR0cmlidXRlKFwicm9sZVwiKT8odC5yZW1vdmVBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiKSx0LnNldEF0dHJpYnV0ZShcImFyaWEtc2VsZWN0ZWRcIiwhMCksdGhpcy5fdG9nZ2xlRHJvcERvd24odCwhMCksTi50cmlnZ2VyKHQsa3Mse3JlbGF0ZWRUYXJnZXQ6ZX0pKTp0LmNsYXNzTGlzdC5hZGQoV3MpfSksdCx0LmNsYXNzTGlzdC5jb250YWlucyhIcykpKX1fZGVhY3RpdmF0ZSh0LGUpe3QmJih0LmNsYXNzTGlzdC5yZW1vdmUoRnMpLHQuYmx1cigpLHRoaXMuX2RlYWN0aXZhdGUoei5nZXRFbGVtZW50RnJvbVNlbGVjdG9yKHQpKSx0aGlzLl9xdWV1ZUNhbGxiYWNrKCgoKT0+e1widGFiXCI9PT10LmdldEF0dHJpYnV0ZShcInJvbGVcIik/KHQuc2V0QXR0cmlidXRlKFwiYXJpYS1zZWxlY3RlZFwiLCExKSx0LnNldEF0dHJpYnV0ZShcInRhYmluZGV4XCIsXCItMVwiKSx0aGlzLl90b2dnbGVEcm9wRG93bih0LCExKSxOLnRyaWdnZXIodCxPcyx7cmVsYXRlZFRhcmdldDplfSkpOnQuY2xhc3NMaXN0LnJlbW92ZShXcyl9KSx0LHQuY2xhc3NMaXN0LmNvbnRhaW5zKEhzKSkpfV9rZXlkb3duKHQpe2lmKCFbJHMsSXMsTnMsUHMsanMsTXNdLmluY2x1ZGVzKHQua2V5KSlyZXR1cm47dC5zdG9wUHJvcGFnYXRpb24oKSx0LnByZXZlbnREZWZhdWx0KCk7Y29uc3QgZT10aGlzLl9nZXRDaGlsZHJlbigpLmZpbHRlcigodD0+IWwodCkpKTtsZXQgaTtpZihbanMsTXNdLmluY2x1ZGVzKHQua2V5KSlpPWVbdC5rZXk9PT1qcz8wOmUubGVuZ3RoLTFdO2Vsc2V7Y29uc3Qgbj1bSXMsUHNdLmluY2x1ZGVzKHQua2V5KTtpPWIoZSx0LnRhcmdldCxuLCEwKX1pJiYoaS5mb2N1cyh7cHJldmVudFNjcm9sbDohMH0pLEtzLmdldE9yQ3JlYXRlSW5zdGFuY2UoaSkuc2hvdygpKX1fZ2V0Q2hpbGRyZW4oKXtyZXR1cm4gei5maW5kKHFzLHRoaXMuX3BhcmVudCl9X2dldEFjdGl2ZUVsZW0oKXtyZXR1cm4gdGhpcy5fZ2V0Q2hpbGRyZW4oKS5maW5kKCh0PT50aGlzLl9lbGVtSXNBY3RpdmUodCkpKXx8bnVsbH1fc2V0SW5pdGlhbEF0dHJpYnV0ZXModCxlKXt0aGlzLl9zZXRBdHRyaWJ1dGVJZk5vdEV4aXN0cyh0LFwicm9sZVwiLFwidGFibGlzdFwiKTtmb3IoY29uc3QgdCBvZiBlKXRoaXMuX3NldEluaXRpYWxBdHRyaWJ1dGVzT25DaGlsZCh0KX1fc2V0SW5pdGlhbEF0dHJpYnV0ZXNPbkNoaWxkKHQpe3Q9dGhpcy5fZ2V0SW5uZXJFbGVtZW50KHQpO2NvbnN0IGU9dGhpcy5fZWxlbUlzQWN0aXZlKHQpLGk9dGhpcy5fZ2V0T3V0ZXJFbGVtZW50KHQpO3Quc2V0QXR0cmlidXRlKFwiYXJpYS1zZWxlY3RlZFwiLGUpLGkhPT10JiZ0aGlzLl9zZXRBdHRyaWJ1dGVJZk5vdEV4aXN0cyhpLFwicm9sZVwiLFwicHJlc2VudGF0aW9uXCIpLGV8fHQuc2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIixcIi0xXCIpLHRoaXMuX3NldEF0dHJpYnV0ZUlmTm90RXhpc3RzKHQsXCJyb2xlXCIsXCJ0YWJcIiksdGhpcy5fc2V0SW5pdGlhbEF0dHJpYnV0ZXNPblRhcmdldFBhbmVsKHQpfV9zZXRJbml0aWFsQXR0cmlidXRlc09uVGFyZ2V0UGFuZWwodCl7Y29uc3QgZT16LmdldEVsZW1lbnRGcm9tU2VsZWN0b3IodCk7ZSYmKHRoaXMuX3NldEF0dHJpYnV0ZUlmTm90RXhpc3RzKGUsXCJyb2xlXCIsXCJ0YWJwYW5lbFwiKSx0LmlkJiZ0aGlzLl9zZXRBdHRyaWJ1dGVJZk5vdEV4aXN0cyhlLFwiYXJpYS1sYWJlbGxlZGJ5XCIsYCR7dC5pZH1gKSl9X3RvZ2dsZURyb3BEb3duKHQsZSl7Y29uc3QgaT10aGlzLl9nZXRPdXRlckVsZW1lbnQodCk7aWYoIWkuY2xhc3NMaXN0LmNvbnRhaW5zKFwiZHJvcGRvd25cIikpcmV0dXJuO2NvbnN0IG49KHQsbik9Pntjb25zdCBzPXouZmluZE9uZSh0LGkpO3MmJnMuY2xhc3NMaXN0LnRvZ2dsZShuLGUpfTtuKEJzLEZzKSxuKFwiLmRyb3Bkb3duLW1lbnVcIixXcyksaS5zZXRBdHRyaWJ1dGUoXCJhcmlhLWV4cGFuZGVkXCIsZSl9X3NldEF0dHJpYnV0ZUlmTm90RXhpc3RzKHQsZSxpKXt0Lmhhc0F0dHJpYnV0ZShlKXx8dC5zZXRBdHRyaWJ1dGUoZSxpKX1fZWxlbUlzQWN0aXZlKHQpe3JldHVybiB0LmNsYXNzTGlzdC5jb250YWlucyhGcyl9X2dldElubmVyRWxlbWVudCh0KXtyZXR1cm4gdC5tYXRjaGVzKHFzKT90OnouZmluZE9uZShxcyx0KX1fZ2V0T3V0ZXJFbGVtZW50KHQpe3JldHVybiB0LmNsb3Nlc3QoXCIubmF2LWl0ZW0sIC5saXN0LWdyb3VwLWl0ZW1cIil8fHR9c3RhdGljIGpRdWVyeUludGVyZmFjZSh0KXtyZXR1cm4gdGhpcy5lYWNoKChmdW5jdGlvbigpe2NvbnN0IGU9S3MuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzKTtpZihcInN0cmluZ1wiPT10eXBlb2YgdCl7aWYodm9pZCAwPT09ZVt0XXx8dC5zdGFydHNXaXRoKFwiX1wiKXx8XCJjb25zdHJ1Y3RvclwiPT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke3R9XCJgKTtlW3RdKCl9fSkpfX1OLm9uKGRvY3VtZW50LExzLFJzLChmdW5jdGlvbih0KXtbXCJBXCIsXCJBUkVBXCJdLmluY2x1ZGVzKHRoaXMudGFnTmFtZSkmJnQucHJldmVudERlZmF1bHQoKSxsKHRoaXMpfHxLcy5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMpLnNob3coKX0pKSxOLm9uKHdpbmRvdyxEcywoKCk9Pntmb3IoY29uc3QgdCBvZiB6LmZpbmQoVnMpKUtzLmdldE9yQ3JlYXRlSW5zdGFuY2UodCl9KSksbShLcyk7Y29uc3QgUXM9XCIuYnMudG9hc3RcIixYcz1gbW91c2VvdmVyJHtRc31gLFlzPWBtb3VzZW91dCR7UXN9YCxVcz1gZm9jdXNpbiR7UXN9YCxHcz1gZm9jdXNvdXQke1FzfWAsSnM9YGhpZGUke1FzfWAsWnM9YGhpZGRlbiR7UXN9YCx0bz1gc2hvdyR7UXN9YCxlbz1gc2hvd24ke1FzfWAsaW89XCJoaWRlXCIsbm89XCJzaG93XCIsc289XCJzaG93aW5nXCIsb289e2FuaW1hdGlvbjpcImJvb2xlYW5cIixhdXRvaGlkZTpcImJvb2xlYW5cIixkZWxheTpcIm51bWJlclwifSxybz17YW5pbWF0aW9uOiEwLGF1dG9oaWRlOiEwLGRlbGF5OjVlM307Y2xhc3MgYW8gZXh0ZW5kcyBXe2NvbnN0cnVjdG9yKHQsZSl7c3VwZXIodCxlKSx0aGlzLl90aW1lb3V0PW51bGwsdGhpcy5faGFzTW91c2VJbnRlcmFjdGlvbj0hMSx0aGlzLl9oYXNLZXlib2FyZEludGVyYWN0aW9uPSExLHRoaXMuX3NldExpc3RlbmVycygpfXN0YXRpYyBnZXQgRGVmYXVsdCgpe3JldHVybiByb31zdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCl7cmV0dXJuIG9vfXN0YXRpYyBnZXQgTkFNRSgpe3JldHVyblwidG9hc3RcIn1zaG93KCl7Ti50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsdG8pLmRlZmF1bHRQcmV2ZW50ZWR8fCh0aGlzLl9jbGVhclRpbWVvdXQoKSx0aGlzLl9jb25maWcuYW5pbWF0aW9uJiZ0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJmYWRlXCIpLHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShpbyksZCh0aGlzLl9lbGVtZW50KSx0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQobm8sc28pLHRoaXMuX3F1ZXVlQ2FsbGJhY2soKCgpPT57dGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHNvKSxOLnRyaWdnZXIodGhpcy5fZWxlbWVudCxlbyksdGhpcy5fbWF5YmVTY2hlZHVsZUhpZGUoKX0pLHRoaXMuX2VsZW1lbnQsdGhpcy5fY29uZmlnLmFuaW1hdGlvbikpfWhpZGUoKXt0aGlzLmlzU2hvd24oKSYmKE4udHJpZ2dlcih0aGlzLl9lbGVtZW50LEpzKS5kZWZhdWx0UHJldmVudGVkfHwodGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKHNvKSx0aGlzLl9xdWV1ZUNhbGxiYWNrKCgoKT0+e3RoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChpbyksdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKHNvLG5vKSxOLnRyaWdnZXIodGhpcy5fZWxlbWVudCxacyl9KSx0aGlzLl9lbGVtZW50LHRoaXMuX2NvbmZpZy5hbmltYXRpb24pKSl9ZGlzcG9zZSgpe3RoaXMuX2NsZWFyVGltZW91dCgpLHRoaXMuaXNTaG93bigpJiZ0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUobm8pLHN1cGVyLmRpc3Bvc2UoKX1pc1Nob3duKCl7cmV0dXJuIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKG5vKX1fbWF5YmVTY2hlZHVsZUhpZGUoKXt0aGlzLl9jb25maWcuYXV0b2hpZGUmJih0aGlzLl9oYXNNb3VzZUludGVyYWN0aW9ufHx0aGlzLl9oYXNLZXlib2FyZEludGVyYWN0aW9ufHwodGhpcy5fdGltZW91dD1zZXRUaW1lb3V0KCgoKT0+e3RoaXMuaGlkZSgpfSksdGhpcy5fY29uZmlnLmRlbGF5KSkpfV9vbkludGVyYWN0aW9uKHQsZSl7c3dpdGNoKHQudHlwZSl7Y2FzZVwibW91c2VvdmVyXCI6Y2FzZVwibW91c2VvdXRcIjp0aGlzLl9oYXNNb3VzZUludGVyYWN0aW9uPWU7YnJlYWs7Y2FzZVwiZm9jdXNpblwiOmNhc2VcImZvY3Vzb3V0XCI6dGhpcy5faGFzS2V5Ym9hcmRJbnRlcmFjdGlvbj1lfWlmKGUpcmV0dXJuIHZvaWQgdGhpcy5fY2xlYXJUaW1lb3V0KCk7Y29uc3QgaT10LnJlbGF0ZWRUYXJnZXQ7dGhpcy5fZWxlbWVudD09PWl8fHRoaXMuX2VsZW1lbnQuY29udGFpbnMoaSl8fHRoaXMuX21heWJlU2NoZWR1bGVIaWRlKCl9X3NldExpc3RlbmVycygpe04ub24odGhpcy5fZWxlbWVudCxYcywodD0+dGhpcy5fb25JbnRlcmFjdGlvbih0LCEwKSkpLE4ub24odGhpcy5fZWxlbWVudCxZcywodD0+dGhpcy5fb25JbnRlcmFjdGlvbih0LCExKSkpLE4ub24odGhpcy5fZWxlbWVudCxVcywodD0+dGhpcy5fb25JbnRlcmFjdGlvbih0LCEwKSkpLE4ub24odGhpcy5fZWxlbWVudCxHcywodD0+dGhpcy5fb25JbnRlcmFjdGlvbih0LCExKSkpfV9jbGVhclRpbWVvdXQoKXtjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dCksdGhpcy5fdGltZW91dD1udWxsfXN0YXRpYyBqUXVlcnlJbnRlcmZhY2UodCl7cmV0dXJuIHRoaXMuZWFjaCgoZnVuY3Rpb24oKXtjb25zdCBlPWFvLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcyx0KTtpZihcInN0cmluZ1wiPT10eXBlb2YgdCl7aWYodm9pZCAwPT09ZVt0XSl0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke3R9XCJgKTtlW3RdKHRoaXMpfX0pKX19cmV0dXJuIFIoYW8pLG0oYW8pLHtBbGVydDpRLEJ1dHRvbjpZLENhcm91c2VsOnh0LENvbGxhcHNlOkJ0LERyb3Bkb3duOnFpLE1vZGFsOk9uLE9mZmNhbnZhczpxbixQb3BvdmVyOnVzLFNjcm9sbFNweTpFcyxUYWI6S3MsVG9hc3Q6YW8sVG9vbHRpcDpjc319KSk7XG4vLyMgc291cmNlTWFwcGluZ1VSTD1ib290c3RyYXAuYnVuZGxlLm1pbi5qcy5tYXAiXSwibmFtZXMiOltdLCJpZ25vcmVMaXN0IjpbMF0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/bootstrap/dist/js/bootstrap.bundle.min.js\n");
20
+
21
+ /***/ }),
22
+
23
+ /***/ "(rsc)/./node_modules/bootstrap/dist/css/bootstrap.min.css":
24
+ /*!***********************************************************!*\
25
+ !*** ./node_modules/bootstrap/dist/css/bootstrap.min.css ***!
26
+ \***********************************************************/
27
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
28
+
29
+ "use strict";
30
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (\"c5ac1dee961c\");\nif (false) {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvYm9vdHN0cmFwL2Rpc3QvY3NzL2Jvb3RzdHJhcC5taW4uY3NzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxpRUFBZSxjQUFjO0FBQzdCLElBQUksS0FBVSxFQUFFLEVBQXVCIiwic291cmNlcyI6WyJDOlxcVXNlcnNcXFBpbmVzdWNjZWVkXFxEZXNrdG9wXFxXb3JrU3BhY2VcXHRlc3R3aWRnZXRcXG5vZGVfbW9kdWxlc1xcYm9vdHN0cmFwXFxkaXN0XFxjc3NcXGJvb3RzdHJhcC5taW4uY3NzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IFwiYzVhYzFkZWU5NjFjXCJcbmlmIChtb2R1bGUuaG90KSB7IG1vZHVsZS5ob3QuYWNjZXB0KCkgfVxuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/bootstrap/dist/css/bootstrap.min.css\n");
31
+
32
+ /***/ })
33
+
34
+ };
35
+ ;
@@ -0,0 +1,24 @@
1
+ /*
2
+ * ATTENTION: An "eval-source-map" devtool has been used.
3
+ * This devtool is neither made for production nor for readable output files.
4
+ * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
5
+ * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
6
+ * or disable the default devtool with "devtool: false".
7
+ * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
8
+ */
9
+ exports.id = "vendor-chunks/classnames";
10
+ exports.ids = ["vendor-chunks/classnames"];
11
+ exports.modules = {
12
+
13
+ /***/ "(ssr)/./node_modules/classnames/index.js":
14
+ /*!******************************************!*\
15
+ !*** ./node_modules/classnames/index.js ***!
16
+ \******************************************/
17
+ /***/ ((module, exports) => {
18
+
19
+ eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif ( true && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (true) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\t!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n\t\t\treturn classNames;\n\t\t}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {}\n}());\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9pbmRleC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxnQkFBZ0I7O0FBRWhCO0FBQ0E7O0FBRUEsa0JBQWtCLHNCQUFzQjtBQUN4QztBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsS0FBSyxLQUE2QjtBQUNsQztBQUNBO0FBQ0EsR0FBRyxTQUFTLElBQTRFO0FBQ3hGO0FBQ0EsRUFBRSxpQ0FBcUIsRUFBRSxtQ0FBRTtBQUMzQjtBQUNBLEdBQUc7QUFBQSxrR0FBQztBQUNKLEdBQUcsS0FBSyxFQUVOO0FBQ0YsQ0FBQyIsInNvdXJjZXMiOlsiQzpcXFVzZXJzXFxQaW5lc3VjY2VlZFxcRGVza3RvcFxcV29ya1NwYWNlXFx0ZXN0d2lkZ2V0XFxub2RlX21vZHVsZXNcXGNsYXNzbmFtZXNcXGluZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIVxuXHRDb3B5cmlnaHQgKGMpIDIwMTggSmVkIFdhdHNvbi5cblx0TGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLCBzZWVcblx0aHR0cDovL2plZHdhdHNvbi5naXRodWIuaW8vY2xhc3NuYW1lc1xuKi9cbi8qIGdsb2JhbCBkZWZpbmUgKi9cblxuKGZ1bmN0aW9uICgpIHtcblx0J3VzZSBzdHJpY3QnO1xuXG5cdHZhciBoYXNPd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxuXHRmdW5jdGlvbiBjbGFzc05hbWVzICgpIHtcblx0XHR2YXIgY2xhc3NlcyA9ICcnO1xuXG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBhcmcgPSBhcmd1bWVudHNbaV07XG5cdFx0XHRpZiAoYXJnKSB7XG5cdFx0XHRcdGNsYXNzZXMgPSBhcHBlbmRDbGFzcyhjbGFzc2VzLCBwYXJzZVZhbHVlKGFyZykpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBjbGFzc2VzO1xuXHR9XG5cblx0ZnVuY3Rpb24gcGFyc2VWYWx1ZSAoYXJnKSB7XG5cdFx0aWYgKHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBhcmcgPT09ICdudW1iZXInKSB7XG5cdFx0XHRyZXR1cm4gYXJnO1xuXHRcdH1cblxuXHRcdGlmICh0eXBlb2YgYXJnICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0cmV0dXJuICcnO1xuXHRcdH1cblxuXHRcdGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcblx0XHRcdHJldHVybiBjbGFzc05hbWVzLmFwcGx5KG51bGwsIGFyZyk7XG5cdFx0fVxuXG5cdFx0aWYgKGFyZy50b1N0cmluZyAhPT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyAmJiAhYXJnLnRvU3RyaW5nLnRvU3RyaW5nKCkuaW5jbHVkZXMoJ1tuYXRpdmUgY29kZV0nKSkge1xuXHRcdFx0cmV0dXJuIGFyZy50b1N0cmluZygpO1xuXHRcdH1cblxuXHRcdHZhciBjbGFzc2VzID0gJyc7XG5cblx0XHRmb3IgKHZhciBrZXkgaW4gYXJnKSB7XG5cdFx0XHRpZiAoaGFzT3duLmNhbGwoYXJnLCBrZXkpICYmIGFyZ1trZXldKSB7XG5cdFx0XHRcdGNsYXNzZXMgPSBhcHBlbmRDbGFzcyhjbGFzc2VzLCBrZXkpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBjbGFzc2VzO1xuXHR9XG5cblx0ZnVuY3Rpb24gYXBwZW5kQ2xhc3MgKHZhbHVlLCBuZXdDbGFzcykge1xuXHRcdGlmICghbmV3Q2xhc3MpIHtcblx0XHRcdHJldHVybiB2YWx1ZTtcblx0XHR9XG5cdFxuXHRcdGlmICh2YWx1ZSkge1xuXHRcdFx0cmV0dXJuIHZhbHVlICsgJyAnICsgbmV3Q2xhc3M7XG5cdFx0fVxuXHRcblx0XHRyZXR1cm4gdmFsdWUgKyBuZXdDbGFzcztcblx0fVxuXG5cdGlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJyAmJiBtb2R1bGUuZXhwb3J0cykge1xuXHRcdGNsYXNzTmFtZXMuZGVmYXVsdCA9IGNsYXNzTmFtZXM7XG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBjbGFzc05hbWVzO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGRlZmluZS5hbWQgPT09ICdvYmplY3QnICYmIGRlZmluZS5hbWQpIHtcblx0XHQvLyByZWdpc3RlciBhcyAnY2xhc3NuYW1lcycsIGNvbnNpc3RlbnQgd2l0aCBucG0gcGFja2FnZSBuYW1lXG5cdFx0ZGVmaW5lKCdjbGFzc25hbWVzJywgW10sIGZ1bmN0aW9uICgpIHtcblx0XHRcdHJldHVybiBjbGFzc05hbWVzO1xuXHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHdpbmRvdy5jbGFzc05hbWVzID0gY2xhc3NOYW1lcztcblx0fVxufSgpKTtcbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/classnames/index.js\n");
20
+
21
+ /***/ })
22
+
23
+ };
24
+ ;