lean4monaco 1.0.45 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1094) hide show
  1. package/README.md +75 -0
  2. package/dist/JuliaMono-Regular.ttf +0 -0
  3. package/dist/css/custom.css +7 -1
  4. package/dist/infowebview.d.ts +4 -5
  5. package/dist/infowebview.js +5 -5
  6. package/dist/lean4-infoview/esm-shims/react-dom.d.ts +5 -0
  7. package/dist/lean4-infoview/esm-shims/react-jsx-runtime.d.ts +5 -0
  8. package/dist/lean4-infoview/esm-shims/react.d.ts +5 -0
  9. package/dist/{vscode-lean4/vscode-lean4/dist/lean4-infoview → lean4-infoview}/index.css +8 -213
  10. package/dist/lean4-infoview/index.d.ts +16 -0
  11. package/dist/lean4-infoview/index.development.js +37312 -0
  12. package/dist/lean4-infoview/index.production.min.js +1528 -0
  13. package/dist/lean4-infoview/infoview/collapsing.d.ts +12 -0
  14. package/dist/lean4-infoview/infoview/contexts.d.ts +10 -0
  15. package/dist/lean4-infoview/infoview/errors.d.ts +14 -0
  16. package/dist/lean4-infoview/infoview/goalLocation.d.ts +61 -0
  17. package/dist/lean4-infoview/infoview/goals.d.ts +46 -0
  18. package/dist/lean4-infoview/infoview/info.d.ts +18 -0
  19. package/dist/lean4-infoview/infoview/infos.d.ts +2 -0
  20. package/dist/lean4-infoview/infoview/interactiveCode.d.ts +19 -0
  21. package/dist/lean4-infoview/infoview/main.d.ts +13 -0
  22. package/dist/lean4-infoview/infoview/messages.d.ts +19 -0
  23. package/dist/lean4-infoview/infoview/rpcSessions.d.ts +11 -0
  24. package/dist/lean4-infoview/infoview/tooltips.d.ts +32 -0
  25. package/dist/lean4-infoview/infoview/traceExplorer.d.ts +11 -0
  26. package/dist/lean4-infoview/infoview/userWidget.d.ts +39 -0
  27. package/dist/{vscode-lean4/lean4-infoview/src → lean4-infoview}/infoview/util.d.ts +8 -5
  28. package/dist/lean4-infoview/loader.d.ts +20 -0
  29. package/dist/lean4-infoview/loader.development.js +1006 -0
  30. package/dist/lean4-infoview/loader.production.min.js +1 -0
  31. package/dist/lean4-infoview/react-dom.development.js +30537 -0
  32. package/dist/lean4-infoview/react-dom.production.min.js +21 -0
  33. package/dist/lean4-infoview/react-jsx-runtime.development.js +1362 -0
  34. package/dist/lean4-infoview/react-jsx-runtime.production.min.js +1 -0
  35. package/dist/lean4-infoview/react.development.js +2823 -0
  36. package/dist/lean4-infoview/react.production.min.js +1 -0
  37. package/dist/leanmonaco.d.ts +4 -4
  38. package/dist/leanmonaco.js +10 -9
  39. package/dist/monaco-lean4/vscode-lean4/package.json +944 -0
  40. package/dist/monaco-lean4/vscode-lean4/src/abbreviation/AbbreviationFeature.d.ts +9 -0
  41. package/dist/monaco-lean4/vscode-lean4/src/abbreviation/AbbreviationFeature.js +20 -0
  42. package/dist/monaco-lean4/vscode-lean4/src/abbreviation/AbbreviationHoverProvider.d.ts +12 -0
  43. package/dist/monaco-lean4/vscode-lean4/src/abbreviation/AbbreviationHoverProvider.js +40 -0
  44. package/dist/monaco-lean4/vscode-lean4/src/abbreviation/AbbreviationRewriterFeature.d.ts +20 -0
  45. package/dist/monaco-lean4/vscode-lean4/src/abbreviation/AbbreviationRewriterFeature.js +79 -0
  46. package/dist/monaco-lean4/vscode-lean4/src/abbreviation/VSCodeAbbreviationConfig.d.ts +13 -0
  47. package/dist/monaco-lean4/vscode-lean4/src/abbreviation/VSCodeAbbreviationConfig.js +29 -0
  48. package/dist/monaco-lean4/vscode-lean4/src/abbreviation/VSCodeAbbreviationRewriter.d.ts +28 -0
  49. package/dist/monaco-lean4/vscode-lean4/src/abbreviation/VSCodeAbbreviationRewriter.js +124 -0
  50. package/dist/monaco-lean4/vscode-lean4/src/config.d.ts +33 -0
  51. package/dist/monaco-lean4/vscode-lean4/src/config.js +119 -0
  52. package/dist/monaco-lean4/vscode-lean4/src/diagnostics/setupNotifs.d.ts +27 -0
  53. package/dist/monaco-lean4/vscode-lean4/src/diagnostics/setupNotifs.js +133 -0
  54. package/dist/monaco-lean4/vscode-lean4/src/infoview.d.ts +69 -0
  55. package/dist/monaco-lean4/vscode-lean4/src/infoview.js +711 -0
  56. package/dist/monaco-lean4/vscode-lean4/src/leanclient.d.ts +67 -0
  57. package/dist/monaco-lean4/vscode-lean4/src/leanclient.js +443 -0
  58. package/dist/monaco-lean4/vscode-lean4/src/rpc.d.ts +16 -0
  59. package/dist/monaco-lean4/vscode-lean4/src/rpc.js +102 -0
  60. package/dist/monaco-lean4/vscode-lean4/src/taskgutter.d.ts +11 -0
  61. package/dist/monaco-lean4/vscode-lean4/src/taskgutter.js +130 -0
  62. package/dist/{vscode-lean4/vscode-lean4/src/utils/batchBasics.d.ts → monaco-lean4/vscode-lean4/src/utils/batch.d.ts} +8 -11
  63. package/dist/monaco-lean4/vscode-lean4/src/utils/batch.js +203 -0
  64. package/dist/monaco-lean4/vscode-lean4/src/utils/clientProvider.d.ts +41 -0
  65. package/dist/monaco-lean4/vscode-lean4/src/utils/clientProvider.js +205 -0
  66. package/dist/monaco-lean4/vscode-lean4/src/utils/converters.d.ts +16 -0
  67. package/dist/monaco-lean4/vscode-lean4/src/utils/converters.js +129 -0
  68. package/dist/monaco-lean4/vscode-lean4/src/utils/elan.d.ts +3 -0
  69. package/dist/monaco-lean4/vscode-lean4/src/utils/elan.js +4 -0
  70. package/dist/monaco-lean4/vscode-lean4/src/utils/envPath.d.ts +21 -0
  71. package/dist/monaco-lean4/vscode-lean4/src/utils/envPath.js +53 -0
  72. package/dist/monaco-lean4/vscode-lean4/src/utils/exturi.d.ts +35 -0
  73. package/dist/monaco-lean4/vscode-lean4/src/utils/exturi.js +136 -0
  74. package/dist/monaco-lean4/vscode-lean4/src/utils/fsHelper.d.ts +17 -0
  75. package/dist/monaco-lean4/vscode-lean4/src/utils/fsHelper.js +36 -0
  76. package/dist/monaco-lean4/vscode-lean4/src/utils/leanInstaller.d.ts +37 -0
  77. package/dist/monaco-lean4/vscode-lean4/src/utils/leanInstaller.js +210 -0
  78. package/dist/monaco-lean4/vscode-lean4/src/utils/logger.d.ts +7 -0
  79. package/dist/monaco-lean4/vscode-lean4/src/utils/logger.js +20 -0
  80. package/dist/monaco-lean4/vscode-lean4/src/utils/notifs.d.ts +24 -0
  81. package/dist/monaco-lean4/vscode-lean4/src/utils/notifs.js +110 -0
  82. package/dist/monaco-lean4/vscode-lean4/src/utils/projectInfo.d.ts +9 -0
  83. package/dist/monaco-lean4/vscode-lean4/src/utils/projectInfo.js +125 -0
  84. package/dist/monacoleanclient.d.ts +1 -2
  85. package/dist/monacoleanclient.js +3 -3
  86. package/dist/preconditions.d.ts +2 -2
  87. package/dist/vscode-lean4/lean4-infoview/package.json +25 -23
  88. package/dist/vscode-lean4/lean4-infoview/tsconfig.json +6 -2
  89. package/dist/vscode-lean4/lean4-infoview-api/package.json +1 -1
  90. package/dist/vscode-lean4/lean4-unicode-input/package.json +1 -1
  91. package/dist/vscode-lean4/lean4-unicode-input/src/abbreviations.json +12 -12
  92. package/dist/vscode-lean4/lean4-unicode-input-component/package.json +2 -2
  93. package/dist/vscode-lean4/package-lock.json +6129 -3245
  94. package/dist/vscode-lean4/vscode-lean4/language-configuration.json +1 -1
  95. package/dist/vscode-lean4/vscode-lean4/loogleview/static/index.css +19 -16
  96. package/dist/vscode-lean4/vscode-lean4/package.json +638 -18
  97. package/dist/vscode-lean4/vscode-lean4/src/abbreviation/AbbreviationFeature.d.ts +2 -2
  98. package/dist/vscode-lean4/vscode-lean4/src/abbreviation/AbbreviationFeature.js +2 -2
  99. package/dist/vscode-lean4/vscode-lean4/src/abbreviation/AbbreviationRewriterFeature.d.ts +2 -3
  100. package/dist/vscode-lean4/vscode-lean4/src/abbreviation/AbbreviationRewriterFeature.js +3 -5
  101. package/dist/vscode-lean4/vscode-lean4/src/abbreviation/VSCodeAbbreviationRewriter.d.ts +1 -2
  102. package/dist/vscode-lean4/vscode-lean4/src/abbreviation/VSCodeAbbreviationRewriter.js +4 -8
  103. package/dist/vscode-lean4/vscode-lean4/src/config.d.ts +14 -1
  104. package/dist/vscode-lean4/vscode-lean4/src/config.js +56 -5
  105. package/dist/vscode-lean4/vscode-lean4/src/diagnostics/setupDiagnoser.d.ts +36 -5
  106. package/dist/vscode-lean4/vscode-lean4/src/diagnostics/setupDiagnoser.js +59 -23
  107. package/dist/vscode-lean4/vscode-lean4/src/diagnostics/setupDiagnostics.d.ts +22 -17
  108. package/dist/vscode-lean4/vscode-lean4/src/diagnostics/setupDiagnostics.js +182 -119
  109. package/dist/vscode-lean4/vscode-lean4/src/diagnostics/setupNotifs.d.ts +33 -20
  110. package/dist/vscode-lean4/vscode-lean4/src/diagnostics/setupNotifs.js +235 -89
  111. package/dist/vscode-lean4/vscode-lean4/src/infoview.d.ts +15 -17
  112. package/dist/vscode-lean4/vscode-lean4/src/infoview.js +218 -103
  113. package/dist/vscode-lean4/vscode-lean4/src/leanclient.d.ts +12 -7
  114. package/dist/vscode-lean4/vscode-lean4/src/leanclient.js +187 -64
  115. package/dist/vscode-lean4/vscode-lean4/src/taskgutter.d.ts +35 -3
  116. package/dist/vscode-lean4/vscode-lean4/src/taskgutter.js +533 -93
  117. package/dist/vscode-lean4/vscode-lean4/src/utils/batch.d.ts +12 -4
  118. package/dist/vscode-lean4/vscode-lean4/src/utils/batch.js +78 -72
  119. package/dist/vscode-lean4/vscode-lean4/src/utils/clientProvider.d.ts +9 -9
  120. package/dist/vscode-lean4/vscode-lean4/src/utils/clientProvider.js +121 -77
  121. package/dist/vscode-lean4/vscode-lean4/src/utils/converters.d.ts +15 -0
  122. package/dist/vscode-lean4/vscode-lean4/src/utils/converters.js +9 -0
  123. package/dist/vscode-lean4/vscode-lean4/src/utils/elan.d.ts +179 -1
  124. package/dist/vscode-lean4/vscode-lean4/src/utils/elan.js +422 -3
  125. package/dist/vscode-lean4/vscode-lean4/src/utils/exturi.d.ts +3 -1
  126. package/dist/vscode-lean4/vscode-lean4/src/utils/exturi.js +11 -11
  127. package/dist/vscode-lean4/vscode-lean4/src/utils/internalErrors.d.ts +2 -0
  128. package/dist/vscode-lean4/vscode-lean4/src/utils/internalErrors.js +35 -0
  129. package/dist/vscode-lean4/vscode-lean4/src/utils/leanCmdRunner.js +1 -1
  130. package/dist/vscode-lean4/vscode-lean4/src/utils/leanInstaller.d.ts +41 -12
  131. package/dist/vscode-lean4/vscode-lean4/src/utils/leanInstaller.js +245 -128
  132. package/dist/vscode-lean4/vscode-lean4/src/utils/notifs.d.ts +27 -22
  133. package/dist/vscode-lean4/vscode-lean4/src/utils/notifs.js +177 -82
  134. package/dist/vscode-lean4/vscode-lean4/src/utils/projectInfo.d.ts +11 -4
  135. package/dist/vscode-lean4/vscode-lean4/src/utils/projectInfo.js +18 -16
  136. package/dist/vscode-lean4/vscode-lean4/src/utils/semverRegex.d.ts +1 -0
  137. package/dist/vscode-lean4/vscode-lean4/src/utils/semverRegex.js +2 -0
  138. package/dist/vscode-lean4/vscode-lean4/tsconfig.json +2 -1
  139. package/dist/vscode-lean4/vscode-lean4/webview/tsconfig.json +3 -1
  140. package/dist/vscode.css +7 -0
  141. package/package.json +7 -3
  142. package/dist/tsconfig.tsbuildinfo +0 -1
  143. package/dist/vscode-lean4/lean4-infoview/dist/index.css +0 -4366
  144. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/_iconCloud/keywords.transforms.json +0 -83
  145. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/_iconCloud/keywords.variables.json +0 -47
  146. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/_iconCloud/manifest.json +0 -36
  147. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/_iconCloud/manifest.transforms.json +0 -368
  148. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/_iconCloud/manifest.variables.json +0 -149
  149. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/dist/codicon.css +0 -571
  150. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/dist/codicon.svg +0 -1
  151. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/dist/codicon.ttf +0 -0
  152. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/package.json +0 -34
  153. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/account.svg +0 -1
  154. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/activate-breakpoints.svg +0 -1
  155. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/add.svg +0 -1
  156. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/archive.svg +0 -1
  157. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/arrow-both.svg +0 -1
  158. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/arrow-circle-down.svg +0 -1
  159. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/arrow-circle-left.svg +0 -1
  160. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/arrow-circle-right.svg +0 -1
  161. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/arrow-circle-up.svg +0 -1
  162. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/arrow-down.svg +0 -1
  163. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/arrow-left.svg +0 -1
  164. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/arrow-right.svg +0 -1
  165. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/arrow-small-down.svg +0 -1
  166. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/arrow-small-left.svg +0 -1
  167. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/arrow-small-right.svg +0 -1
  168. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/arrow-small-up.svg +0 -1
  169. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/arrow-swap.svg +0 -1
  170. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/arrow-up.svg +0 -1
  171. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/azure-devops.svg +0 -1
  172. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/azure.svg +0 -1
  173. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/beaker-stop.svg +0 -1
  174. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/beaker.svg +0 -1
  175. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/bell-dot.svg +0 -1
  176. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/bell-slash-dot.svg +0 -1
  177. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/bell-slash.svg +0 -1
  178. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/bell.svg +0 -1
  179. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/blank.svg +0 -1
  180. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/bold.svg +0 -1
  181. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/book.svg +0 -1
  182. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/bookmark.svg +0 -1
  183. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/bracket-dot.svg +0 -1
  184. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/bracket-error.svg +0 -1
  185. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/briefcase.svg +0 -1
  186. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/broadcast.svg +0 -1
  187. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/browser.svg +0 -1
  188. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/bug.svg +0 -1
  189. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/calendar.svg +0 -1
  190. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/call-incoming.svg +0 -1
  191. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/call-outgoing.svg +0 -1
  192. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/case-sensitive.svg +0 -1
  193. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/check-all.svg +0 -1
  194. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/check.svg +0 -1
  195. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/checklist.svg +0 -1
  196. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/chevron-down.svg +0 -1
  197. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/chevron-left.svg +0 -1
  198. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/chevron-right.svg +0 -1
  199. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/chevron-up.svg +0 -1
  200. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/chrome-close.svg +0 -1
  201. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/chrome-maximize.svg +0 -1
  202. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/chrome-minimize.svg +0 -1
  203. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/chrome-restore.svg +0 -1
  204. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/circle-filled.svg +0 -1
  205. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/circle-large-filled.svg +0 -1
  206. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/circle-large-outline.svg +0 -1
  207. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/circle-outline.svg +0 -1
  208. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/circle-slash.svg +0 -1
  209. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/circle-small-filled.svg +0 -1
  210. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/circle-small.svg +0 -1
  211. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/circuit-board.svg +0 -1
  212. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/clear-all.svg +0 -1
  213. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/clippy.svg +0 -1
  214. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/close-all.svg +0 -1
  215. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/close.svg +0 -1
  216. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/cloud-download.svg +0 -1
  217. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/cloud-upload.svg +0 -1
  218. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/cloud.svg +0 -1
  219. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/code.svg +0 -1
  220. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/collapse-all.svg +0 -1
  221. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/color-mode.svg +0 -1
  222. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/combine.svg +0 -1
  223. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/comment-discussion.svg +0 -1
  224. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/comment-unresolved.svg +0 -1
  225. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/comment.svg +0 -1
  226. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/compass-active.svg +0 -1
  227. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/compass-dot.svg +0 -1
  228. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/compass.svg +0 -1
  229. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/copy.svg +0 -1
  230. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/credit-card.svg +0 -1
  231. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/dash.svg +0 -1
  232. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/dashboard.svg +0 -1
  233. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/database.svg +0 -1
  234. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-all.svg +0 -1
  235. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-alt-small.svg +0 -1
  236. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-alt.svg +0 -1
  237. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-breakpoint-conditional-unverified.svg +0 -1
  238. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-breakpoint-conditional.svg +0 -1
  239. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-breakpoint-data-unverified.svg +0 -1
  240. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-breakpoint-data.svg +0 -1
  241. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-breakpoint-function-unverified.svg +0 -1
  242. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-breakpoint-function.svg +0 -1
  243. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-breakpoint-log-unverified.svg +0 -1
  244. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-breakpoint-log.svg +0 -1
  245. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-breakpoint-unsupported.svg +0 -1
  246. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-console.svg +0 -1
  247. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-continue-small.svg +0 -1
  248. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-continue.svg +0 -1
  249. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-coverage.svg +0 -1
  250. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-disconnect.svg +0 -1
  251. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-line-by-line.svg +0 -1
  252. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-pause.svg +0 -1
  253. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-rerun.svg +0 -1
  254. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-restart-frame.svg +0 -1
  255. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-restart.svg +0 -1
  256. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-reverse-continue.svg +0 -1
  257. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-stackframe-active.svg +0 -1
  258. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-stackframe.svg +0 -1
  259. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-start.svg +0 -1
  260. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-step-back.svg +0 -1
  261. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-step-into.svg +0 -1
  262. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-step-out.svg +0 -1
  263. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-step-over.svg +0 -1
  264. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug-stop.svg +0 -1
  265. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/debug.svg +0 -1
  266. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/desktop-download.svg +0 -1
  267. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/device-camera-video.svg +0 -1
  268. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/device-camera.svg +0 -1
  269. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/device-mobile.svg +0 -1
  270. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/diff-added.svg +0 -1
  271. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/diff-ignored.svg +0 -1
  272. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/diff-modified.svg +0 -1
  273. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/diff-removed.svg +0 -1
  274. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/diff-renamed.svg +0 -1
  275. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/diff.svg +0 -1
  276. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/discard.svg +0 -1
  277. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/edit.svg +0 -1
  278. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/editor-layout.svg +0 -1
  279. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/ellipsis.svg +0 -1
  280. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/empty-window.svg +0 -1
  281. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/error-small.svg +0 -1
  282. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/error.svg +0 -1
  283. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/exclude.svg +0 -1
  284. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/expand-all.svg +0 -1
  285. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/export.svg +0 -1
  286. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/extensions.svg +0 -1
  287. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/eye-closed.svg +0 -1
  288. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/eye.svg +0 -1
  289. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/feedback.svg +0 -1
  290. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/file-binary.svg +0 -1
  291. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/file-code.svg +0 -1
  292. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/file-media.svg +0 -1
  293. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/file-pdf.svg +0 -1
  294. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/file-submodule.svg +0 -1
  295. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/file-symlink-directory.svg +0 -1
  296. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/file-symlink-file.svg +0 -1
  297. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/file-zip.svg +0 -1
  298. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/file.svg +0 -1
  299. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/files.svg +0 -1
  300. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/filter-filled.svg +0 -1
  301. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/filter.svg +0 -1
  302. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/flame.svg +0 -1
  303. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/fold-down.svg +0 -1
  304. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/fold-up.svg +0 -1
  305. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/fold.svg +0 -1
  306. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/folder-active.svg +0 -1
  307. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/folder-library.svg +0 -1
  308. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/folder-opened.svg +0 -1
  309. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/folder.svg +0 -1
  310. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/gear.svg +0 -1
  311. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/gift.svg +0 -1
  312. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/gist-secret.svg +0 -1
  313. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/gist.svg +0 -1
  314. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/git-commit.svg +0 -1
  315. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/git-compare.svg +0 -1
  316. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/git-merge.svg +0 -1
  317. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/git-pull-request-closed.svg +0 -1
  318. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/git-pull-request-create.svg +0 -1
  319. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/git-pull-request-draft.svg +0 -1
  320. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/git-pull-request-go-to-changes.svg +0 -1
  321. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/git-pull-request-new-changes.svg +0 -1
  322. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/git-pull-request.svg +0 -1
  323. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/github-action.svg +0 -1
  324. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/github-alt.svg +0 -1
  325. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/github-inverted.svg +0 -1
  326. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/github.svg +0 -1
  327. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/globe.svg +0 -1
  328. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/go-to-file.svg +0 -1
  329. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/grabber.svg +0 -1
  330. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/graph-left.svg +0 -1
  331. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/graph-line.svg +0 -1
  332. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/graph-scatter.svg +0 -1
  333. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/graph.svg +0 -1
  334. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/gripper.svg +0 -1
  335. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/group-by-ref-type.svg +0 -1
  336. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/heart-filled.svg +0 -1
  337. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/heart.svg +0 -1
  338. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/history.svg +0 -1
  339. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/home.svg +0 -1
  340. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/horizontal-rule.svg +0 -1
  341. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/hubot.svg +0 -1
  342. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/inbox.svg +0 -1
  343. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/indent.svg +0 -1
  344. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/info.svg +0 -1
  345. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/inspect.svg +0 -1
  346. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/issue-draft.svg +0 -1
  347. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/issue-reopened.svg +0 -1
  348. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/issues.svg +0 -1
  349. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/italic.svg +0 -1
  350. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/jersey.svg +0 -1
  351. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/json.svg +0 -1
  352. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/kebab-vertical.svg +0 -1
  353. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/key.svg +0 -1
  354. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/law.svg +0 -1
  355. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layers-active.svg +0 -1
  356. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layers-dot.svg +0 -1
  357. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layers.svg +0 -1
  358. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-activitybar-left.svg +0 -1
  359. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-activitybar-right.svg +0 -1
  360. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-centered.svg +0 -1
  361. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-menubar.svg +0 -1
  362. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-panel-center.svg +0 -1
  363. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-panel-justify.svg +0 -1
  364. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-panel-left.svg +0 -1
  365. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-panel-off.svg +0 -1
  366. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-panel-right.svg +0 -1
  367. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-panel.svg +0 -1
  368. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-sidebar-left-off.svg +0 -1
  369. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-sidebar-left.svg +0 -1
  370. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-sidebar-right-off.svg +0 -1
  371. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-sidebar-right.svg +0 -1
  372. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout-statusbar.svg +0 -1
  373. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/layout.svg +0 -1
  374. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/library.svg +0 -1
  375. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/lightbulb-autofix.svg +0 -1
  376. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/lightbulb.svg +0 -1
  377. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/link-external.svg +0 -1
  378. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/link.svg +0 -1
  379. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/list-filter.svg +0 -1
  380. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/list-flat.svg +0 -1
  381. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/list-ordered.svg +0 -1
  382. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/list-selection.svg +0 -1
  383. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/list-tree.svg +0 -1
  384. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/list-unordered.svg +0 -1
  385. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/live-share.svg +0 -1
  386. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/loading.svg +0 -1
  387. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/location.svg +0 -1
  388. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/lock-small.svg +0 -1
  389. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/lock.svg +0 -1
  390. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/magnet.svg +0 -1
  391. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/mail-read.svg +0 -1
  392. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/mail.svg +0 -1
  393. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/map-filled.svg +0 -1
  394. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/map.svg +0 -1
  395. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/markdown.svg +0 -1
  396. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/megaphone.svg +0 -1
  397. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/mention.svg +0 -1
  398. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/menu.svg +0 -1
  399. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/merge.svg +0 -1
  400. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/milestone.svg +0 -1
  401. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/mirror.svg +0 -1
  402. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/mortar-board.svg +0 -1
  403. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/move.svg +0 -1
  404. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/multiple-windows.svg +0 -1
  405. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/mute.svg +0 -1
  406. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/new-file.svg +0 -1
  407. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/new-folder.svg +0 -1
  408. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/newline.svg +0 -1
  409. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/no-newline.svg +0 -1
  410. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/note.svg +0 -1
  411. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/notebook-template.svg +0 -1
  412. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/notebook.svg +0 -1
  413. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/octoface.svg +0 -1
  414. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/open-preview.svg +0 -1
  415. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/organization.svg +0 -1
  416. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/output.svg +0 -1
  417. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/package.svg +0 -1
  418. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/paintcan.svg +0 -1
  419. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/pass-filled.svg +0 -1
  420. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/pass.svg +0 -1
  421. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/person-add.svg +0 -1
  422. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/person.svg +0 -1
  423. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/pie-chart.svg +0 -1
  424. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/pin.svg +0 -1
  425. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/pinned-dirty.svg +0 -1
  426. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/pinned.svg +0 -1
  427. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/play-circle.svg +0 -1
  428. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/play.svg +0 -1
  429. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/plug.svg +0 -1
  430. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/preserve-case.svg +0 -1
  431. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/preview.svg +0 -1
  432. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/primitive-square.svg +0 -1
  433. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/project.svg +0 -1
  434. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/pulse.svg +0 -1
  435. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/question.svg +0 -1
  436. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/quote.svg +0 -1
  437. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/radio-tower.svg +0 -1
  438. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/reactions.svg +0 -1
  439. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/record-keys.svg +0 -1
  440. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/record-small.svg +0 -1
  441. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/record.svg +0 -1
  442. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/redo.svg +0 -1
  443. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/references.svg +0 -1
  444. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/refresh.svg +0 -1
  445. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/regex.svg +0 -1
  446. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/remote-explorer.svg +0 -1
  447. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/remote.svg +0 -1
  448. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/remove.svg +0 -1
  449. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/replace-all.svg +0 -1
  450. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/replace.svg +0 -1
  451. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/reply.svg +0 -1
  452. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/repo-clone.svg +0 -1
  453. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/repo-force-push.svg +0 -1
  454. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/repo-forked.svg +0 -1
  455. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/repo-pull.svg +0 -1
  456. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/repo-push.svg +0 -1
  457. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/repo.svg +0 -1
  458. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/report.svg +0 -1
  459. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/request-changes.svg +0 -1
  460. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/rocket.svg +0 -1
  461. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/root-folder-opened.svg +0 -1
  462. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/root-folder.svg +0 -1
  463. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/rss.svg +0 -1
  464. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/ruby.svg +0 -1
  465. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/run-above.svg +0 -1
  466. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/run-all.svg +0 -1
  467. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/run-below.svg +0 -1
  468. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/run-errors.svg +0 -1
  469. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/save-all.svg +0 -1
  470. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/save-as.svg +0 -1
  471. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/save.svg +0 -1
  472. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/screen-full.svg +0 -1
  473. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/screen-normal.svg +0 -1
  474. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/search-stop.svg +0 -1
  475. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/search.svg +0 -1
  476. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/server-environment.svg +0 -1
  477. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/server-process.svg +0 -1
  478. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/server.svg +0 -1
  479. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/settings-gear.svg +0 -1
  480. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/settings.svg +0 -1
  481. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/shield.svg +0 -1
  482. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/sign-in.svg +0 -1
  483. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/sign-out.svg +0 -1
  484. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/smiley.svg +0 -1
  485. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/sort-precedence.svg +0 -1
  486. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/source-control.svg +0 -1
  487. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/split-horizontal.svg +0 -1
  488. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/split-vertical.svg +0 -1
  489. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/squirrel.svg +0 -1
  490. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/star-empty.svg +0 -1
  491. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/star-full.svg +0 -1
  492. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/star-half.svg +0 -1
  493. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/stop-circle.svg +0 -1
  494. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-array.svg +0 -1
  495. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-boolean.svg +0 -1
  496. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-class.svg +0 -1
  497. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-color.svg +0 -1
  498. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-constant.svg +0 -1
  499. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-enum-member.svg +0 -1
  500. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-enum.svg +0 -1
  501. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-event.svg +0 -1
  502. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-field.svg +0 -1
  503. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-file.svg +0 -1
  504. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-interface.svg +0 -1
  505. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-key.svg +0 -1
  506. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-keyword.svg +0 -1
  507. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-method.svg +0 -1
  508. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-misc.svg +0 -1
  509. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-namespace.svg +0 -1
  510. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-numeric.svg +0 -1
  511. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-operator.svg +0 -1
  512. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-parameter.svg +0 -1
  513. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-property.svg +0 -1
  514. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-ruler.svg +0 -1
  515. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-snippet.svg +0 -1
  516. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-string.svg +0 -1
  517. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-structure.svg +0 -1
  518. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/symbol-variable.svg +0 -1
  519. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/sync-ignored.svg +0 -1
  520. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/sync.svg +0 -1
  521. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/table.svg +0 -1
  522. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/tag.svg +0 -1
  523. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/target.svg +0 -1
  524. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/tasklist.svg +0 -1
  525. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/telescope.svg +0 -1
  526. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/terminal-bash.svg +0 -1
  527. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/terminal-cmd.svg +0 -1
  528. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/terminal-debian.svg +0 -1
  529. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/terminal-linux.svg +0 -1
  530. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/terminal-powershell.svg +0 -1
  531. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/terminal-tmux.svg +0 -1
  532. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/terminal-ubuntu.svg +0 -1
  533. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/terminal.svg +0 -1
  534. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/text-size.svg +0 -1
  535. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/three-bars.svg +0 -1
  536. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/thumbsdown.svg +0 -1
  537. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/thumbsup.svg +0 -1
  538. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/tools.svg +0 -1
  539. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/trash.svg +0 -1
  540. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/triangle-down.svg +0 -1
  541. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/triangle-left.svg +0 -1
  542. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/triangle-right.svg +0 -1
  543. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/triangle-up.svg +0 -1
  544. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/twitter.svg +0 -1
  545. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/type-hierarchy-sub.svg +0 -1
  546. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/type-hierarchy-super.svg +0 -1
  547. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/type-hierarchy.svg +0 -1
  548. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/unfold.svg +0 -1
  549. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/ungroup-by-ref-type.svg +0 -1
  550. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/unlock.svg +0 -1
  551. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/unmute.svg +0 -1
  552. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/unverified.svg +0 -1
  553. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/variable-group.svg +0 -1
  554. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/verified-filled.svg +0 -1
  555. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/verified.svg +0 -1
  556. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/versions.svg +0 -1
  557. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/vm-active.svg +0 -1
  558. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/vm-connect.svg +0 -1
  559. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/vm-outline.svg +0 -1
  560. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/vm-running.svg +0 -1
  561. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/vm.svg +0 -1
  562. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/wand.svg +0 -1
  563. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/warning.svg +0 -1
  564. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/watch.svg +0 -1
  565. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/whitespace.svg +0 -1
  566. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/whole-word.svg +0 -1
  567. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/window.svg +0 -1
  568. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/word-wrap.svg +0 -1
  569. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/workspace-trusted.svg +0 -1
  570. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/workspace-unknown.svg +0 -1
  571. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/workspace-untrusted.svg +0 -1
  572. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/zoom-in.svg +0 -1
  573. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/icons/zoom-out.svg +0 -1
  574. package/dist/vscode-lean4/lean4-infoview/node_modules/@vscode/codicons/src/template/mapping.json +0 -514
  575. package/dist/vscode-lean4/lean4-infoview/src/infoview/contexts.d.ts +0 -46
  576. package/dist/vscode-lean4/lean4-infoview/src/infoview/contexts.js +0 -44
  577. package/dist/vscode-lean4/lean4-infoview/src/infoview/editorConnection.js +0 -41
  578. package/dist/vscode-lean4/lean4-infoview/src/infoview/event.js +0 -57
  579. package/dist/vscode-lean4/lean4-infoview/src/infoview/serverVersion.js +0 -25
  580. package/dist/vscode-lean4/lean4-infoview/src/infoview/util.js +0 -336
  581. package/dist/vscode-lean4/lean4-unicode-input/dist/abbreviations.json +0 -1829
  582. package/dist/vscode-lean4/vscode-lean4/dist/lean4-infoview/codicon.ttf +0 -0
  583. package/dist/vscode-lean4/vscode-lean4/dist/loogleview/static/codicons/codicon.css +0 -571
  584. package/dist/vscode-lean4/vscode-lean4/dist/loogleview/static/codicons/codicon.svg +0 -1
  585. package/dist/vscode-lean4/vscode-lean4/dist/loogleview/static/codicons/codicon.ttf +0 -0
  586. package/dist/vscode-lean4/vscode-lean4/dist/loogleview/static/index.css +0 -97
  587. package/dist/vscode-lean4/vscode-lean4/dist/moogleview/static/codicons/codicon.css +0 -571
  588. package/dist/vscode-lean4/vscode-lean4/dist/moogleview/static/codicons/codicon.svg +0 -1
  589. package/dist/vscode-lean4/vscode-lean4/dist/moogleview/static/codicons/codicon.ttf +0 -0
  590. package/dist/vscode-lean4/vscode-lean4/dist/moogleview/static/index.css +0 -198
  591. package/dist/vscode-lean4/vscode-lean4/node_modules/@types/node/package.json +0 -220
  592. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/_iconCloud/keywords.transforms.json +0 -83
  593. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/_iconCloud/keywords.variables.json +0 -47
  594. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/_iconCloud/manifest.json +0 -36
  595. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/_iconCloud/manifest.transforms.json +0 -368
  596. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/_iconCloud/manifest.variables.json +0 -149
  597. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/dist/codicon.css +0 -629
  598. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/dist/codicon.svg +0 -1
  599. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/dist/codicon.ttf +0 -0
  600. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/package.json +0 -35
  601. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/account.svg +0 -1
  602. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/activate-breakpoints.svg +0 -1
  603. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/add.svg +0 -1
  604. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/archive.svg +0 -1
  605. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/arrow-both.svg +0 -1
  606. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/arrow-circle-down.svg +0 -1
  607. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/arrow-circle-left.svg +0 -1
  608. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/arrow-circle-right.svg +0 -1
  609. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/arrow-circle-up.svg +0 -1
  610. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/arrow-down.svg +0 -1
  611. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/arrow-left.svg +0 -1
  612. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/arrow-right.svg +0 -1
  613. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/arrow-small-down.svg +0 -1
  614. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/arrow-small-left.svg +0 -1
  615. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/arrow-small-right.svg +0 -1
  616. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/arrow-small-up.svg +0 -1
  617. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/arrow-swap.svg +0 -1
  618. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/arrow-up.svg +0 -1
  619. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/azure-devops.svg +0 -1
  620. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/azure.svg +0 -1
  621. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/beaker-stop.svg +0 -1
  622. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/beaker.svg +0 -1
  623. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/bell-dot.svg +0 -1
  624. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/bell-slash-dot.svg +0 -1
  625. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/bell-slash.svg +0 -1
  626. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/bell.svg +0 -1
  627. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/blank.svg +0 -1
  628. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/bold.svg +0 -1
  629. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/book.svg +0 -1
  630. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/bookmark.svg +0 -1
  631. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/bracket-dot.svg +0 -1
  632. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/bracket-error.svg +0 -1
  633. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/briefcase.svg +0 -1
  634. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/broadcast.svg +0 -1
  635. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/browser.svg +0 -1
  636. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/bug.svg +0 -1
  637. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/calendar.svg +0 -1
  638. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/call-incoming.svg +0 -1
  639. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/call-outgoing.svg +0 -1
  640. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/case-sensitive.svg +0 -1
  641. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/check-all.svg +0 -1
  642. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/check.svg +0 -1
  643. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/checklist.svg +0 -1
  644. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/chevron-down.svg +0 -1
  645. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/chevron-left.svg +0 -1
  646. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/chevron-right.svg +0 -1
  647. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/chevron-up.svg +0 -1
  648. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/chip.svg +0 -1
  649. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/chrome-close.svg +0 -1
  650. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/chrome-maximize.svg +0 -1
  651. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/chrome-minimize.svg +0 -1
  652. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/chrome-restore.svg +0 -1
  653. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/circle-filled.svg +0 -1
  654. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/circle-large-filled.svg +0 -1
  655. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/circle-large.svg +0 -1
  656. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/circle-slash.svg +0 -1
  657. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/circle-small-filled.svg +0 -1
  658. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/circle-small.svg +0 -1
  659. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/circle.svg +0 -1
  660. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/circuit-board.svg +0 -1
  661. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/clear-all.svg +0 -1
  662. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/clippy.svg +0 -1
  663. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/close-all.svg +0 -1
  664. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/close.svg +0 -1
  665. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/cloud-download.svg +0 -1
  666. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/cloud-upload.svg +0 -1
  667. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/cloud.svg +0 -1
  668. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/code-oss.svg +0 -1
  669. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/code.svg +0 -1
  670. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/coffee.svg +0 -1
  671. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/collapse-all.svg +0 -1
  672. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/color-mode.svg +0 -1
  673. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/combine.svg +0 -1
  674. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/comment-discussion.svg +0 -1
  675. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/comment-draft.svg +0 -1
  676. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/comment-unresolved.svg +0 -1
  677. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/comment.svg +0 -1
  678. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/compass-active.svg +0 -1
  679. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/compass-dot.svg +0 -1
  680. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/compass.svg +0 -1
  681. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/copilot.svg +0 -1
  682. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/copy.svg +0 -1
  683. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/coverage.svg +0 -1
  684. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/credit-card.svg +0 -1
  685. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/dash.svg +0 -1
  686. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/dashboard.svg +0 -1
  687. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/database.svg +0 -1
  688. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-all.svg +0 -1
  689. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-alt-small.svg +0 -1
  690. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-alt.svg +0 -1
  691. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-breakpoint-conditional-unverified.svg +0 -1
  692. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-breakpoint-conditional.svg +0 -1
  693. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-breakpoint-data-unverified.svg +0 -1
  694. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-breakpoint-data.svg +0 -1
  695. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-breakpoint-function-unverified.svg +0 -1
  696. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-breakpoint-function.svg +0 -1
  697. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-breakpoint-log-unverified.svg +0 -1
  698. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-breakpoint-log.svg +0 -1
  699. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-breakpoint-unsupported.svg +0 -1
  700. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-console.svg +0 -1
  701. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-continue-small.svg +0 -1
  702. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-continue.svg +0 -1
  703. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-coverage.svg +0 -1
  704. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-disconnect.svg +0 -1
  705. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-line-by-line.svg +0 -1
  706. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-pause.svg +0 -1
  707. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-rerun.svg +0 -1
  708. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-restart-frame.svg +0 -1
  709. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-restart.svg +0 -1
  710. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-reverse-continue.svg +0 -1
  711. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-stackframe-active.svg +0 -1
  712. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-stackframe.svg +0 -1
  713. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-start.svg +0 -1
  714. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-step-back.svg +0 -1
  715. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-step-into.svg +0 -1
  716. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-step-out.svg +0 -1
  717. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-step-over.svg +0 -1
  718. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug-stop.svg +0 -1
  719. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/debug.svg +0 -1
  720. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/desktop-download.svg +0 -1
  721. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/device-camera-video.svg +0 -1
  722. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/device-camera.svg +0 -1
  723. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/device-mobile.svg +0 -1
  724. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/diff-added.svg +0 -1
  725. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/diff-ignored.svg +0 -1
  726. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/diff-modified.svg +0 -1
  727. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/diff-multiple.svg +0 -1
  728. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/diff-removed.svg +0 -1
  729. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/diff-renamed.svg +0 -1
  730. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/diff-single.svg +0 -1
  731. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/diff.svg +0 -1
  732. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/discard.svg +0 -1
  733. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/edit.svg +0 -1
  734. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/editor-layout.svg +0 -1
  735. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/ellipsis.svg +0 -1
  736. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/empty-window.svg +0 -1
  737. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/error-small.svg +0 -1
  738. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/error.svg +0 -1
  739. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/exclude.svg +0 -1
  740. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/expand-all.svg +0 -1
  741. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/export.svg +0 -1
  742. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/extensions.svg +0 -1
  743. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/eye-closed.svg +0 -1
  744. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/eye.svg +0 -1
  745. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/feedback.svg +0 -1
  746. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/file-binary.svg +0 -1
  747. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/file-code.svg +0 -1
  748. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/file-media.svg +0 -1
  749. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/file-pdf.svg +0 -1
  750. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/file-submodule.svg +0 -1
  751. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/file-symlink-directory.svg +0 -1
  752. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/file-symlink-file.svg +0 -1
  753. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/file-zip.svg +0 -1
  754. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/file.svg +0 -1
  755. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/files.svg +0 -1
  756. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/filter-filled.svg +0 -1
  757. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/filter.svg +0 -1
  758. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/flame.svg +0 -1
  759. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/fold-down.svg +0 -1
  760. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/fold-up.svg +0 -1
  761. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/fold.svg +0 -1
  762. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/folder-active.svg +0 -1
  763. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/folder-library.svg +0 -1
  764. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/folder-opened.svg +0 -1
  765. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/folder.svg +0 -1
  766. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/game.svg +0 -1
  767. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/gear.svg +0 -1
  768. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/gift.svg +0 -1
  769. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/gist-secret.svg +0 -1
  770. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/gist.svg +0 -1
  771. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/git-commit.svg +0 -1
  772. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/git-compare.svg +0 -1
  773. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/git-fetch.svg +0 -1
  774. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/git-merge.svg +0 -1
  775. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/git-pull-request-closed.svg +0 -1
  776. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/git-pull-request-create.svg +0 -1
  777. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/git-pull-request-draft.svg +0 -1
  778. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/git-pull-request-go-to-changes.svg +0 -1
  779. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/git-pull-request-new-changes.svg +0 -1
  780. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/git-pull-request.svg +0 -1
  781. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/git-stash-apply.svg +0 -1
  782. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/git-stash-pop.svg +0 -1
  783. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/git-stash.svg +0 -1
  784. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/github-action.svg +0 -1
  785. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/github-alt.svg +0 -1
  786. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/github-inverted.svg +0 -1
  787. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/github-project.svg +0 -1
  788. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/github.svg +0 -1
  789. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/globe.svg +0 -1
  790. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/go-to-file.svg +0 -1
  791. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/go-to-search.svg +0 -1
  792. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/grabber.svg +0 -1
  793. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/graph-left.svg +0 -1
  794. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/graph-line.svg +0 -1
  795. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/graph-scatter.svg +0 -1
  796. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/graph.svg +0 -1
  797. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/gripper.svg +0 -1
  798. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/group-by-ref-type.svg +0 -1
  799. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/heart-filled.svg +0 -1
  800. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/heart.svg +0 -1
  801. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/history.svg +0 -1
  802. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/home.svg +0 -1
  803. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/horizontal-rule.svg +0 -1
  804. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/hubot.svg +0 -1
  805. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/inbox.svg +0 -1
  806. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/indent.svg +0 -1
  807. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/info.svg +0 -1
  808. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/insert.svg +0 -1
  809. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/inspect.svg +0 -1
  810. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/issue-draft.svg +0 -1
  811. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/issue-reopened.svg +0 -1
  812. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/issues.svg +0 -1
  813. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/italic.svg +0 -1
  814. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/jersey.svg +0 -1
  815. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/json.svg +0 -1
  816. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/kebab-vertical.svg +0 -1
  817. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/key.svg +0 -1
  818. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/law.svg +0 -1
  819. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layers-active.svg +0 -1
  820. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layers-dot.svg +0 -1
  821. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layers.svg +0 -1
  822. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-activitybar-left.svg +0 -1
  823. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-activitybar-right.svg +0 -1
  824. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-centered.svg +0 -1
  825. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-menubar.svg +0 -1
  826. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-panel-center.svg +0 -1
  827. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-panel-justify.svg +0 -1
  828. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-panel-left.svg +0 -1
  829. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-panel-off.svg +0 -1
  830. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-panel-right.svg +0 -1
  831. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-panel.svg +0 -1
  832. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-sidebar-left-off.svg +0 -1
  833. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-sidebar-left.svg +0 -1
  834. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-sidebar-right-off.svg +0 -1
  835. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-sidebar-right.svg +0 -1
  836. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout-statusbar.svg +0 -1
  837. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/layout.svg +0 -1
  838. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/library.svg +0 -1
  839. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/lightbulb-autofix.svg +0 -1
  840. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/lightbulb-sparkle.svg +0 -1
  841. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/lightbulb.svg +0 -1
  842. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/link-external.svg +0 -1
  843. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/link.svg +0 -1
  844. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/list-filter.svg +0 -1
  845. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/list-flat.svg +0 -1
  846. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/list-ordered.svg +0 -1
  847. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/list-selection.svg +0 -1
  848. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/list-tree.svg +0 -1
  849. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/list-unordered.svg +0 -1
  850. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/live-share.svg +0 -1
  851. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/loading.svg +0 -1
  852. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/location.svg +0 -1
  853. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/lock-small.svg +0 -1
  854. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/lock.svg +0 -1
  855. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/magnet.svg +0 -1
  856. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/mail-read.svg +0 -1
  857. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/mail.svg +0 -1
  858. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/map-filled.svg +0 -1
  859. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/map-vertical-filled.svg +0 -1
  860. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/map-vertical.svg +0 -1
  861. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/map.svg +0 -1
  862. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/markdown.svg +0 -1
  863. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/megaphone.svg +0 -1
  864. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/mention.svg +0 -1
  865. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/menu.svg +0 -1
  866. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/merge.svg +0 -1
  867. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/mic-filled.svg +0 -1
  868. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/mic.svg +0 -1
  869. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/milestone.svg +0 -1
  870. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/mirror.svg +0 -1
  871. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/mortar-board.svg +0 -1
  872. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/move.svg +0 -1
  873. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/multiple-windows.svg +0 -1
  874. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/music.svg +0 -1
  875. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/mute.svg +0 -1
  876. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/new-file.svg +0 -1
  877. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/new-folder.svg +0 -1
  878. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/newline.svg +0 -1
  879. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/no-newline.svg +0 -1
  880. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/note.svg +0 -1
  881. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/notebook-template.svg +0 -1
  882. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/notebook.svg +0 -1
  883. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/octoface.svg +0 -1
  884. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/open-preview.svg +0 -1
  885. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/organization.svg +0 -1
  886. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/output.svg +0 -1
  887. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/package.svg +0 -1
  888. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/paintcan.svg +0 -1
  889. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/pass-filled.svg +0 -1
  890. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/pass.svg +0 -1
  891. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/percentage.svg +0 -1
  892. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/person-add.svg +0 -1
  893. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/person.svg +0 -1
  894. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/piano.svg +0 -1
  895. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/pie-chart.svg +0 -1
  896. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/pin.svg +0 -1
  897. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/pinned-dirty.svg +0 -1
  898. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/pinned.svg +0 -1
  899. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/play-circle.svg +0 -1
  900. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/play.svg +0 -1
  901. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/plug.svg +0 -1
  902. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/preserve-case.svg +0 -1
  903. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/preview.svg +0 -1
  904. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/primitive-square.svg +0 -1
  905. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/project.svg +0 -1
  906. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/pulse.svg +0 -1
  907. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/question.svg +0 -1
  908. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/quote.svg +0 -1
  909. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/radio-tower.svg +0 -1
  910. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/reactions.svg +0 -1
  911. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/record-keys.svg +0 -1
  912. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/record-small.svg +0 -1
  913. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/record.svg +0 -1
  914. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/redo.svg +0 -1
  915. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/references.svg +0 -1
  916. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/refresh.svg +0 -1
  917. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/regex.svg +0 -1
  918. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/remote-explorer.svg +0 -1
  919. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/remote.svg +0 -1
  920. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/remove.svg +0 -1
  921. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/replace-all.svg +0 -1
  922. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/replace.svg +0 -1
  923. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/reply.svg +0 -1
  924. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/repo-clone.svg +0 -1
  925. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/repo-fetch.svg +0 -1
  926. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/repo-force-push.svg +0 -1
  927. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/repo-forked.svg +0 -1
  928. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/repo-pull.svg +0 -1
  929. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/repo-push.svg +0 -1
  930. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/repo.svg +0 -1
  931. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/report.svg +0 -1
  932. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/request-changes.svg +0 -1
  933. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/robot.svg +0 -1
  934. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/rocket.svg +0 -1
  935. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/root-folder-opened.svg +0 -1
  936. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/root-folder.svg +0 -1
  937. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/rss.svg +0 -1
  938. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/ruby.svg +0 -1
  939. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/run-above.svg +0 -1
  940. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/run-all-coverage.svg +0 -1
  941. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/run-all.svg +0 -1
  942. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/run-below.svg +0 -1
  943. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/run-coverage.svg +0 -1
  944. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/run-errors.svg +0 -1
  945. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/save-all.svg +0 -1
  946. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/save-as.svg +0 -1
  947. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/save.svg +0 -1
  948. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/screen-full.svg +0 -1
  949. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/screen-normal.svg +0 -1
  950. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/search-fuzzy.svg +0 -1
  951. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/search-stop.svg +0 -1
  952. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/search.svg +0 -1
  953. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/send.svg +0 -1
  954. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/server-environment.svg +0 -1
  955. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/server-process.svg +0 -1
  956. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/server.svg +0 -1
  957. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/settings-gear.svg +0 -1
  958. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/settings.svg +0 -1
  959. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/share.svg +0 -1
  960. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/shield.svg +0 -1
  961. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/sign-in.svg +0 -1
  962. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/sign-out.svg +0 -1
  963. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/smiley.svg +0 -1
  964. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/snake.svg +0 -1
  965. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/sort-precedence.svg +0 -1
  966. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/source-control.svg +0 -1
  967. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/sparkle-filled.svg +0 -1
  968. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/sparkle.svg +0 -1
  969. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/split-horizontal.svg +0 -1
  970. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/split-vertical.svg +0 -1
  971. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/squirrel.svg +0 -1
  972. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/star-empty.svg +0 -1
  973. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/star-full.svg +0 -1
  974. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/star-half.svg +0 -1
  975. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/stop-circle.svg +0 -1
  976. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/surround-with.svg +0 -1
  977. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-array.svg +0 -1
  978. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-boolean.svg +0 -1
  979. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-class.svg +0 -1
  980. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-color.svg +0 -1
  981. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-constant.svg +0 -1
  982. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-enum-member.svg +0 -1
  983. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-enum.svg +0 -1
  984. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-event.svg +0 -1
  985. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-field.svg +0 -1
  986. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-file.svg +0 -1
  987. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-interface.svg +0 -1
  988. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-key.svg +0 -1
  989. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-keyword.svg +0 -1
  990. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-method.svg +0 -1
  991. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-misc.svg +0 -1
  992. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-namespace.svg +0 -1
  993. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-numeric.svg +0 -1
  994. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-operator.svg +0 -1
  995. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-parameter.svg +0 -1
  996. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-property.svg +0 -1
  997. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-ruler.svg +0 -1
  998. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-snippet.svg +0 -1
  999. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-string.svg +0 -1
  1000. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-structure.svg +0 -1
  1001. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/symbol-variable.svg +0 -1
  1002. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/sync-ignored.svg +0 -1
  1003. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/sync.svg +0 -1
  1004. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/table.svg +0 -1
  1005. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/tag.svg +0 -1
  1006. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/target.svg +0 -1
  1007. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/tasklist.svg +0 -1
  1008. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/telescope.svg +0 -1
  1009. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/terminal-bash.svg +0 -1
  1010. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/terminal-cmd.svg +0 -1
  1011. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/terminal-debian.svg +0 -1
  1012. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/terminal-linux.svg +0 -1
  1013. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/terminal-powershell.svg +0 -1
  1014. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/terminal-tmux.svg +0 -1
  1015. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/terminal-ubuntu.svg +0 -1
  1016. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/terminal.svg +0 -1
  1017. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/text-size.svg +0 -1
  1018. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/three-bars.svg +0 -1
  1019. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/thumbsdown-filled.svg +0 -1
  1020. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/thumbsdown.svg +0 -1
  1021. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/thumbsup-filled.svg +0 -1
  1022. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/thumbsup.svg +0 -1
  1023. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/tools.svg +0 -1
  1024. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/trash.svg +0 -1
  1025. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/triangle-down.svg +0 -1
  1026. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/triangle-left.svg +0 -1
  1027. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/triangle-right.svg +0 -1
  1028. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/triangle-up.svg +0 -1
  1029. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/twitter.svg +0 -1
  1030. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/type-hierarchy-sub.svg +0 -1
  1031. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/type-hierarchy-super.svg +0 -1
  1032. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/type-hierarchy.svg +0 -1
  1033. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/unfold.svg +0 -1
  1034. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/ungroup-by-ref-type.svg +0 -1
  1035. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/unlock.svg +0 -1
  1036. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/unmute.svg +0 -1
  1037. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/unverified.svg +0 -1
  1038. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/variable-group.svg +0 -1
  1039. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/verified-filled.svg +0 -1
  1040. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/verified.svg +0 -1
  1041. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/versions.svg +0 -1
  1042. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/vm-active.svg +0 -1
  1043. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/vm-connect.svg +0 -1
  1044. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/vm-outline.svg +0 -1
  1045. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/vm-running.svg +0 -1
  1046. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/vm.svg +0 -1
  1047. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/vr.svg +0 -1
  1048. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/vscode-insiders.svg +0 -1
  1049. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/vscode.svg +0 -1
  1050. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/wand.svg +0 -1
  1051. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/warning.svg +0 -1
  1052. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/watch.svg +0 -1
  1053. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/whitespace.svg +0 -1
  1054. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/whole-word.svg +0 -1
  1055. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/window.svg +0 -1
  1056. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/word-wrap.svg +0 -1
  1057. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/workspace-trusted.svg +0 -1
  1058. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/workspace-unknown.svg +0 -1
  1059. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/workspace-untrusted.svg +0 -1
  1060. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/zoom-in.svg +0 -1
  1061. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/icons/zoom-out.svg +0 -1
  1062. package/dist/vscode-lean4/vscode-lean4/node_modules/@vscode/codicons/src/template/mapping.json +0 -571
  1063. package/dist/vscode-lean4/vscode-lean4/node_modules/brace-expansion/package.json +0 -46
  1064. package/dist/vscode-lean4/vscode-lean4/node_modules/glob/dist/commonjs/package.json +0 -3
  1065. package/dist/vscode-lean4/vscode-lean4/node_modules/glob/dist/esm/package.json +0 -3
  1066. package/dist/vscode-lean4/vscode-lean4/node_modules/glob/package.json +0 -99
  1067. package/dist/vscode-lean4/vscode-lean4/node_modules/jackspeak/dist/commonjs/package.json +0 -3
  1068. package/dist/vscode-lean4/vscode-lean4/node_modules/jackspeak/dist/esm/package.json +0 -3
  1069. package/dist/vscode-lean4/vscode-lean4/node_modules/jackspeak/package.json +0 -94
  1070. package/dist/vscode-lean4/vscode-lean4/node_modules/lru-cache/dist/commonjs/package.json +0 -3
  1071. package/dist/vscode-lean4/vscode-lean4/node_modules/lru-cache/dist/esm/package.json +0 -3
  1072. package/dist/vscode-lean4/vscode-lean4/node_modules/lru-cache/package.json +0 -115
  1073. package/dist/vscode-lean4/vscode-lean4/node_modules/minimatch/dist/commonjs/package.json +0 -3
  1074. package/dist/vscode-lean4/vscode-lean4/node_modules/minimatch/dist/esm/package.json +0 -3
  1075. package/dist/vscode-lean4/vscode-lean4/node_modules/minimatch/package.json +0 -82
  1076. package/dist/vscode-lean4/vscode-lean4/node_modules/path-scurry/dist/commonjs/package.json +0 -3
  1077. package/dist/vscode-lean4/vscode-lean4/node_modules/path-scurry/dist/esm/package.json +0 -3
  1078. package/dist/vscode-lean4/vscode-lean4/node_modules/path-scurry/package.json +0 -88
  1079. package/dist/vscode-lean4/vscode-lean4/node_modules/undici-types/package.json +0 -55
  1080. package/dist/vscode-lean4/vscode-lean4/node_modules/vscode-jsonrpc/package.json +0 -45
  1081. package/dist/vscode-lean4/vscode-lean4/node_modules/vscode-languageclient/node_modules/minimatch/package.json +0 -35
  1082. package/dist/vscode-lean4/vscode-lean4/node_modules/vscode-languageclient/package.json +0 -50
  1083. package/dist/vscode-lean4/vscode-lean4/node_modules/vscode-languageserver-protocol/metaModel.schema.json +0 -783
  1084. package/dist/vscode-lean4/vscode-lean4/node_modules/vscode-languageserver-protocol/package.json +0 -45
  1085. package/dist/vscode-lean4/vscode-lean4/node_modules/vscode-languageserver-types/package.json +0 -32
  1086. package/dist/vscode-lean4/vscode-lean4/src/leanclientsetup.d.ts +0 -3
  1087. package/dist/vscode-lean4/vscode-lean4/src/leanclientsetup.js +0 -58
  1088. package/dist/vscode-lean4/vscode-lean4/src/utils/batchBasics.js +0 -48
  1089. package/dist/vscode-lean4/vscode-lean4/src/utils/batchTypes.d.ts +0 -14
  1090. package/dist/vscode-lean4/vscode-lean4/src/utils/batchTypes.js +0 -22
  1091. /package/dist/{vscode-lean4/lean4-infoview/dist → lean4-infoview}/codicon.ttf +0 -0
  1092. /package/dist/{vscode-lean4/lean4-infoview/src → lean4-infoview}/infoview/editorConnection.d.ts +0 -0
  1093. /package/dist/{vscode-lean4/lean4-infoview/src → lean4-infoview}/infoview/event.d.ts +0 -0
  1094. /package/dist/{vscode-lean4/lean4-infoview/src → lean4-infoview}/infoview/serverVersion.d.ts +0 -0
@@ -0,0 +1,1362 @@
1
+ import require$$0 from 'react';
2
+
3
+ function _mergeNamespaces(n, m) {
4
+ m.forEach(function (e) {
5
+ e && typeof e !== 'string' && !Array.isArray(e) && Object.keys(e).forEach(function (k) {
6
+ if (k !== 'default' && !(k in n)) {
7
+ var d = Object.getOwnPropertyDescriptor(e, k);
8
+ Object.defineProperty(n, k, d.get ? d : {
9
+ enumerable: true,
10
+ get: function () { return e[k]; }
11
+ });
12
+ }
13
+ });
14
+ });
15
+ return Object.freeze(n);
16
+ }
17
+
18
+ function getDefaultExportFromCjs (x) {
19
+ return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
20
+ }
21
+
22
+ var jsxRuntimeExports = {};
23
+ var jsxRuntime$1 = {
24
+ get exports(){ return jsxRuntimeExports; },
25
+ set exports(v){ jsxRuntimeExports = v; },
26
+ };
27
+
28
+ var reactJsxRuntime_development = {};
29
+
30
+ /**
31
+ * @license React
32
+ * react-jsx-runtime.development.js
33
+ *
34
+ * Copyright (c) Facebook, Inc. and its affiliates.
35
+ *
36
+ * This source code is licensed under the MIT license found in the
37
+ * LICENSE file in the root directory of this source tree.
38
+ */
39
+
40
+ {
41
+ (function() {
42
+
43
+ var React = require$$0;
44
+
45
+ // ATTENTION
46
+ // When adding new symbols to this file,
47
+ // Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'
48
+ // The Symbol used to tag the ReactElement-like types.
49
+ var REACT_ELEMENT_TYPE = Symbol.for('react.element');
50
+ var REACT_PORTAL_TYPE = Symbol.for('react.portal');
51
+ var REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');
52
+ var REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');
53
+ var REACT_PROFILER_TYPE = Symbol.for('react.profiler');
54
+ var REACT_PROVIDER_TYPE = Symbol.for('react.provider');
55
+ var REACT_CONTEXT_TYPE = Symbol.for('react.context');
56
+ var REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');
57
+ var REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');
58
+ var REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');
59
+ var REACT_MEMO_TYPE = Symbol.for('react.memo');
60
+ var REACT_LAZY_TYPE = Symbol.for('react.lazy');
61
+ var REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');
62
+ var MAYBE_ITERATOR_SYMBOL = Symbol.iterator;
63
+ var FAUX_ITERATOR_SYMBOL = '@@iterator';
64
+ function getIteratorFn(maybeIterable) {
65
+ if (maybeIterable === null || typeof maybeIterable !== 'object') {
66
+ return null;
67
+ }
68
+
69
+ var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];
70
+
71
+ if (typeof maybeIterator === 'function') {
72
+ return maybeIterator;
73
+ }
74
+
75
+ return null;
76
+ }
77
+
78
+ var ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
79
+
80
+ function error(format) {
81
+ {
82
+ {
83
+ for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
84
+ args[_key2 - 1] = arguments[_key2];
85
+ }
86
+
87
+ printWarning('error', format, args);
88
+ }
89
+ }
90
+ }
91
+
92
+ function printWarning(level, format, args) {
93
+ // When changing this logic, you might want to also
94
+ // update consoleWithStackDev.www.js as well.
95
+ {
96
+ var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;
97
+ var stack = ReactDebugCurrentFrame.getStackAddendum();
98
+
99
+ if (stack !== '') {
100
+ format += '%s';
101
+ args = args.concat([stack]);
102
+ } // eslint-disable-next-line react-internal/safe-string-coercion
103
+
104
+
105
+ var argsWithFormat = args.map(function (item) {
106
+ return String(item);
107
+ }); // Careful: RN currently depends on this prefix
108
+
109
+ argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it
110
+ // breaks IE9: https://github.com/facebook/react/issues/13610
111
+ // eslint-disable-next-line react-internal/no-production-logging
112
+
113
+ Function.prototype.apply.call(console[level], console, argsWithFormat);
114
+ }
115
+ }
116
+
117
+ // -----------------------------------------------------------------------------
118
+
119
+ var enableScopeAPI = false; // Experimental Create Event Handle API.
120
+ var enableCacheElement = false;
121
+ var enableTransitionTracing = false; // No known bugs, but needs performance testing
122
+
123
+ var enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber
124
+ // stuff. Intended to enable React core members to more easily debug scheduling
125
+ // issues in DEV builds.
126
+
127
+ var enableDebugTracing = false; // Track which Fiber(s) schedule render work.
128
+
129
+ var REACT_MODULE_REFERENCE;
130
+
131
+ {
132
+ REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');
133
+ }
134
+
135
+ function isValidElementType(type) {
136
+ if (typeof type === 'string' || typeof type === 'function') {
137
+ return true;
138
+ } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).
139
+
140
+
141
+ if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {
142
+ return true;
143
+ }
144
+
145
+ if (typeof type === 'object' && type !== null) {
146
+ if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object
147
+ // types supported by any Flight configuration anywhere since
148
+ // we don't know which Flight build this will end up being used
149
+ // with.
150
+ type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {
151
+ return true;
152
+ }
153
+ }
154
+
155
+ return false;
156
+ }
157
+
158
+ function getWrappedName(outerType, innerType, wrapperName) {
159
+ var displayName = outerType.displayName;
160
+
161
+ if (displayName) {
162
+ return displayName;
163
+ }
164
+
165
+ var functionName = innerType.displayName || innerType.name || '';
166
+ return functionName !== '' ? wrapperName + "(" + functionName + ")" : wrapperName;
167
+ } // Keep in sync with react-reconciler/getComponentNameFromFiber
168
+
169
+
170
+ function getContextName(type) {
171
+ return type.displayName || 'Context';
172
+ } // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.
173
+
174
+
175
+ function getComponentNameFromType(type) {
176
+ if (type == null) {
177
+ // Host root, text node or just invalid type.
178
+ return null;
179
+ }
180
+
181
+ {
182
+ if (typeof type.tag === 'number') {
183
+ error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');
184
+ }
185
+ }
186
+
187
+ if (typeof type === 'function') {
188
+ return type.displayName || type.name || null;
189
+ }
190
+
191
+ if (typeof type === 'string') {
192
+ return type;
193
+ }
194
+
195
+ switch (type) {
196
+ case REACT_FRAGMENT_TYPE:
197
+ return 'Fragment';
198
+
199
+ case REACT_PORTAL_TYPE:
200
+ return 'Portal';
201
+
202
+ case REACT_PROFILER_TYPE:
203
+ return 'Profiler';
204
+
205
+ case REACT_STRICT_MODE_TYPE:
206
+ return 'StrictMode';
207
+
208
+ case REACT_SUSPENSE_TYPE:
209
+ return 'Suspense';
210
+
211
+ case REACT_SUSPENSE_LIST_TYPE:
212
+ return 'SuspenseList';
213
+
214
+ }
215
+
216
+ if (typeof type === 'object') {
217
+ switch (type.$$typeof) {
218
+ case REACT_CONTEXT_TYPE:
219
+ var context = type;
220
+ return getContextName(context) + '.Consumer';
221
+
222
+ case REACT_PROVIDER_TYPE:
223
+ var provider = type;
224
+ return getContextName(provider._context) + '.Provider';
225
+
226
+ case REACT_FORWARD_REF_TYPE:
227
+ return getWrappedName(type, type.render, 'ForwardRef');
228
+
229
+ case REACT_MEMO_TYPE:
230
+ var outerName = type.displayName || null;
231
+
232
+ if (outerName !== null) {
233
+ return outerName;
234
+ }
235
+
236
+ return getComponentNameFromType(type.type) || 'Memo';
237
+
238
+ case REACT_LAZY_TYPE:
239
+ {
240
+ var lazyComponent = type;
241
+ var payload = lazyComponent._payload;
242
+ var init = lazyComponent._init;
243
+
244
+ try {
245
+ return getComponentNameFromType(init(payload));
246
+ } catch (x) {
247
+ return null;
248
+ }
249
+ }
250
+
251
+ // eslint-disable-next-line no-fallthrough
252
+ }
253
+ }
254
+
255
+ return null;
256
+ }
257
+
258
+ var assign = Object.assign;
259
+
260
+ // Helpers to patch console.logs to avoid logging during side-effect free
261
+ // replaying on render function. This currently only patches the object
262
+ // lazily which won't cover if the log function was extracted eagerly.
263
+ // We could also eagerly patch the method.
264
+ var disabledDepth = 0;
265
+ var prevLog;
266
+ var prevInfo;
267
+ var prevWarn;
268
+ var prevError;
269
+ var prevGroup;
270
+ var prevGroupCollapsed;
271
+ var prevGroupEnd;
272
+
273
+ function disabledLog() {}
274
+
275
+ disabledLog.__reactDisabledLog = true;
276
+ function disableLogs() {
277
+ {
278
+ if (disabledDepth === 0) {
279
+ /* eslint-disable react-internal/no-production-logging */
280
+ prevLog = console.log;
281
+ prevInfo = console.info;
282
+ prevWarn = console.warn;
283
+ prevError = console.error;
284
+ prevGroup = console.group;
285
+ prevGroupCollapsed = console.groupCollapsed;
286
+ prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099
287
+
288
+ var props = {
289
+ configurable: true,
290
+ enumerable: true,
291
+ value: disabledLog,
292
+ writable: true
293
+ }; // $FlowFixMe Flow thinks console is immutable.
294
+
295
+ Object.defineProperties(console, {
296
+ info: props,
297
+ log: props,
298
+ warn: props,
299
+ error: props,
300
+ group: props,
301
+ groupCollapsed: props,
302
+ groupEnd: props
303
+ });
304
+ /* eslint-enable react-internal/no-production-logging */
305
+ }
306
+
307
+ disabledDepth++;
308
+ }
309
+ }
310
+ function reenableLogs() {
311
+ {
312
+ disabledDepth--;
313
+
314
+ if (disabledDepth === 0) {
315
+ /* eslint-disable react-internal/no-production-logging */
316
+ var props = {
317
+ configurable: true,
318
+ enumerable: true,
319
+ writable: true
320
+ }; // $FlowFixMe Flow thinks console is immutable.
321
+
322
+ Object.defineProperties(console, {
323
+ log: assign({}, props, {
324
+ value: prevLog
325
+ }),
326
+ info: assign({}, props, {
327
+ value: prevInfo
328
+ }),
329
+ warn: assign({}, props, {
330
+ value: prevWarn
331
+ }),
332
+ error: assign({}, props, {
333
+ value: prevError
334
+ }),
335
+ group: assign({}, props, {
336
+ value: prevGroup
337
+ }),
338
+ groupCollapsed: assign({}, props, {
339
+ value: prevGroupCollapsed
340
+ }),
341
+ groupEnd: assign({}, props, {
342
+ value: prevGroupEnd
343
+ })
344
+ });
345
+ /* eslint-enable react-internal/no-production-logging */
346
+ }
347
+
348
+ if (disabledDepth < 0) {
349
+ error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');
350
+ }
351
+ }
352
+ }
353
+
354
+ var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;
355
+ var prefix;
356
+ function describeBuiltInComponentFrame(name, source, ownerFn) {
357
+ {
358
+ if (prefix === undefined) {
359
+ // Extract the VM specific prefix used by each line.
360
+ try {
361
+ throw Error();
362
+ } catch (x) {
363
+ var match = x.stack.trim().match(/\n( *(at )?)/);
364
+ prefix = match && match[1] || '';
365
+ }
366
+ } // We use the prefix to ensure our stacks line up with native stack frames.
367
+
368
+
369
+ return '\n' + prefix + name;
370
+ }
371
+ }
372
+ var reentry = false;
373
+ var componentFrameCache;
374
+
375
+ {
376
+ var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;
377
+ componentFrameCache = new PossiblyWeakMap();
378
+ }
379
+
380
+ function describeNativeComponentFrame(fn, construct) {
381
+ // If something asked for a stack inside a fake render, it should get ignored.
382
+ if ( !fn || reentry) {
383
+ return '';
384
+ }
385
+
386
+ {
387
+ var frame = componentFrameCache.get(fn);
388
+
389
+ if (frame !== undefined) {
390
+ return frame;
391
+ }
392
+ }
393
+
394
+ var control;
395
+ reentry = true;
396
+ var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.
397
+
398
+ Error.prepareStackTrace = undefined;
399
+ var previousDispatcher;
400
+
401
+ {
402
+ previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function
403
+ // for warnings.
404
+
405
+ ReactCurrentDispatcher.current = null;
406
+ disableLogs();
407
+ }
408
+
409
+ try {
410
+ // This should throw.
411
+ if (construct) {
412
+ // Something should be setting the props in the constructor.
413
+ var Fake = function () {
414
+ throw Error();
415
+ }; // $FlowFixMe
416
+
417
+
418
+ Object.defineProperty(Fake.prototype, 'props', {
419
+ set: function () {
420
+ // We use a throwing setter instead of frozen or non-writable props
421
+ // because that won't throw in a non-strict mode function.
422
+ throw Error();
423
+ }
424
+ });
425
+
426
+ if (typeof Reflect === 'object' && Reflect.construct) {
427
+ // We construct a different control for this case to include any extra
428
+ // frames added by the construct call.
429
+ try {
430
+ Reflect.construct(Fake, []);
431
+ } catch (x) {
432
+ control = x;
433
+ }
434
+
435
+ Reflect.construct(fn, [], Fake);
436
+ } else {
437
+ try {
438
+ Fake.call();
439
+ } catch (x) {
440
+ control = x;
441
+ }
442
+
443
+ fn.call(Fake.prototype);
444
+ }
445
+ } else {
446
+ try {
447
+ throw Error();
448
+ } catch (x) {
449
+ control = x;
450
+ }
451
+
452
+ fn();
453
+ }
454
+ } catch (sample) {
455
+ // This is inlined manually because closure doesn't do it for us.
456
+ if (sample && control && typeof sample.stack === 'string') {
457
+ // This extracts the first frame from the sample that isn't also in the control.
458
+ // Skipping one frame that we assume is the frame that calls the two.
459
+ var sampleLines = sample.stack.split('\n');
460
+ var controlLines = control.stack.split('\n');
461
+ var s = sampleLines.length - 1;
462
+ var c = controlLines.length - 1;
463
+
464
+ while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {
465
+ // We expect at least one stack frame to be shared.
466
+ // Typically this will be the root most one. However, stack frames may be
467
+ // cut off due to maximum stack limits. In this case, one maybe cut off
468
+ // earlier than the other. We assume that the sample is longer or the same
469
+ // and there for cut off earlier. So we should find the root most frame in
470
+ // the sample somewhere in the control.
471
+ c--;
472
+ }
473
+
474
+ for (; s >= 1 && c >= 0; s--, c--) {
475
+ // Next we find the first one that isn't the same which should be the
476
+ // frame that called our sample function and the control.
477
+ if (sampleLines[s] !== controlLines[c]) {
478
+ // In V8, the first line is describing the message but other VMs don't.
479
+ // If we're about to return the first line, and the control is also on the same
480
+ // line, that's a pretty good indicator that our sample threw at same line as
481
+ // the control. I.e. before we entered the sample frame. So we ignore this result.
482
+ // This can happen if you passed a class to function component, or non-function.
483
+ if (s !== 1 || c !== 1) {
484
+ do {
485
+ s--;
486
+ c--; // We may still have similar intermediate frames from the construct call.
487
+ // The next one that isn't the same should be our match though.
488
+
489
+ if (c < 0 || sampleLines[s] !== controlLines[c]) {
490
+ // V8 adds a "new" prefix for native classes. Let's remove it to make it prettier.
491
+ var _frame = '\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled "<anonymous>"
492
+ // but we have a user-provided "displayName"
493
+ // splice it in to make the stack more readable.
494
+
495
+
496
+ if (fn.displayName && _frame.includes('<anonymous>')) {
497
+ _frame = _frame.replace('<anonymous>', fn.displayName);
498
+ }
499
+
500
+ {
501
+ if (typeof fn === 'function') {
502
+ componentFrameCache.set(fn, _frame);
503
+ }
504
+ } // Return the line we found.
505
+
506
+
507
+ return _frame;
508
+ }
509
+ } while (s >= 1 && c >= 0);
510
+ }
511
+
512
+ break;
513
+ }
514
+ }
515
+ }
516
+ } finally {
517
+ reentry = false;
518
+
519
+ {
520
+ ReactCurrentDispatcher.current = previousDispatcher;
521
+ reenableLogs();
522
+ }
523
+
524
+ Error.prepareStackTrace = previousPrepareStackTrace;
525
+ } // Fallback to just using the name if we couldn't make it throw.
526
+
527
+
528
+ var name = fn ? fn.displayName || fn.name : '';
529
+ var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';
530
+
531
+ {
532
+ if (typeof fn === 'function') {
533
+ componentFrameCache.set(fn, syntheticFrame);
534
+ }
535
+ }
536
+
537
+ return syntheticFrame;
538
+ }
539
+ function describeFunctionComponentFrame(fn, source, ownerFn) {
540
+ {
541
+ return describeNativeComponentFrame(fn, false);
542
+ }
543
+ }
544
+
545
+ function shouldConstruct(Component) {
546
+ var prototype = Component.prototype;
547
+ return !!(prototype && prototype.isReactComponent);
548
+ }
549
+
550
+ function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {
551
+
552
+ if (type == null) {
553
+ return '';
554
+ }
555
+
556
+ if (typeof type === 'function') {
557
+ {
558
+ return describeNativeComponentFrame(type, shouldConstruct(type));
559
+ }
560
+ }
561
+
562
+ if (typeof type === 'string') {
563
+ return describeBuiltInComponentFrame(type);
564
+ }
565
+
566
+ switch (type) {
567
+ case REACT_SUSPENSE_TYPE:
568
+ return describeBuiltInComponentFrame('Suspense');
569
+
570
+ case REACT_SUSPENSE_LIST_TYPE:
571
+ return describeBuiltInComponentFrame('SuspenseList');
572
+ }
573
+
574
+ if (typeof type === 'object') {
575
+ switch (type.$$typeof) {
576
+ case REACT_FORWARD_REF_TYPE:
577
+ return describeFunctionComponentFrame(type.render);
578
+
579
+ case REACT_MEMO_TYPE:
580
+ // Memo may contain any component type so we recursively resolve it.
581
+ return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);
582
+
583
+ case REACT_LAZY_TYPE:
584
+ {
585
+ var lazyComponent = type;
586
+ var payload = lazyComponent._payload;
587
+ var init = lazyComponent._init;
588
+
589
+ try {
590
+ // Lazy may contain any component type so we recursively resolve it.
591
+ return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);
592
+ } catch (x) {}
593
+ }
594
+ }
595
+ }
596
+
597
+ return '';
598
+ }
599
+
600
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
601
+
602
+ var loggedTypeFailures = {};
603
+ var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;
604
+
605
+ function setCurrentlyValidatingElement(element) {
606
+ {
607
+ if (element) {
608
+ var owner = element._owner;
609
+ var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);
610
+ ReactDebugCurrentFrame.setExtraStackFrame(stack);
611
+ } else {
612
+ ReactDebugCurrentFrame.setExtraStackFrame(null);
613
+ }
614
+ }
615
+ }
616
+
617
+ function checkPropTypes(typeSpecs, values, location, componentName, element) {
618
+ {
619
+ // $FlowFixMe This is okay but Flow doesn't know it.
620
+ var has = Function.call.bind(hasOwnProperty);
621
+
622
+ for (var typeSpecName in typeSpecs) {
623
+ if (has(typeSpecs, typeSpecName)) {
624
+ var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to
625
+ // fail the render phase where it didn't fail before. So we log it.
626
+ // After these have been cleaned up, we'll let them throw.
627
+
628
+ try {
629
+ // This is intentionally an invariant that gets caught. It's the same
630
+ // behavior as without this statement except with a better message.
631
+ if (typeof typeSpecs[typeSpecName] !== 'function') {
632
+ // eslint-disable-next-line react-internal/prod-error-codes
633
+ var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');
634
+ err.name = 'Invariant Violation';
635
+ throw err;
636
+ }
637
+
638
+ error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');
639
+ } catch (ex) {
640
+ error$1 = ex;
641
+ }
642
+
643
+ if (error$1 && !(error$1 instanceof Error)) {
644
+ setCurrentlyValidatingElement(element);
645
+
646
+ error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);
647
+
648
+ setCurrentlyValidatingElement(null);
649
+ }
650
+
651
+ if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {
652
+ // Only monitor this failure once because there tends to be a lot of the
653
+ // same error.
654
+ loggedTypeFailures[error$1.message] = true;
655
+ setCurrentlyValidatingElement(element);
656
+
657
+ error('Failed %s type: %s', location, error$1.message);
658
+
659
+ setCurrentlyValidatingElement(null);
660
+ }
661
+ }
662
+ }
663
+ }
664
+ }
665
+
666
+ var isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare
667
+
668
+ function isArray(a) {
669
+ return isArrayImpl(a);
670
+ }
671
+
672
+ /*
673
+ * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol
674
+ * and Temporal.* types. See https://github.com/facebook/react/pull/22064.
675
+ *
676
+ * The functions in this module will throw an easier-to-understand,
677
+ * easier-to-debug exception with a clear errors message message explaining the
678
+ * problem. (Instead of a confusing exception thrown inside the implementation
679
+ * of the `value` object).
680
+ */
681
+ // $FlowFixMe only called in DEV, so void return is not possible.
682
+ function typeName(value) {
683
+ {
684
+ // toStringTag is needed for namespaced types like Temporal.Instant
685
+ var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;
686
+ var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';
687
+ return type;
688
+ }
689
+ } // $FlowFixMe only called in DEV, so void return is not possible.
690
+
691
+
692
+ function willCoercionThrow(value) {
693
+ {
694
+ try {
695
+ testStringCoercion(value);
696
+ return false;
697
+ } catch (e) {
698
+ return true;
699
+ }
700
+ }
701
+ }
702
+
703
+ function testStringCoercion(value) {
704
+ // If you ended up here by following an exception call stack, here's what's
705
+ // happened: you supplied an object or symbol value to React (as a prop, key,
706
+ // DOM attribute, CSS property, string ref, etc.) and when React tried to
707
+ // coerce it to a string using `'' + value`, an exception was thrown.
708
+ //
709
+ // The most common types that will cause this exception are `Symbol` instances
710
+ // and Temporal objects like `Temporal.Instant`. But any object that has a
711
+ // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this
712
+ // exception. (Library authors do this to prevent users from using built-in
713
+ // numeric operators like `+` or comparison operators like `>=` because custom
714
+ // methods are needed to perform accurate arithmetic or comparison.)
715
+ //
716
+ // To fix the problem, coerce this object or symbol value to a string before
717
+ // passing it to React. The most reliable way is usually `String(value)`.
718
+ //
719
+ // To find which value is throwing, check the browser or debugger console.
720
+ // Before this exception was thrown, there should be `console.error` output
721
+ // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the
722
+ // problem and how that type was used: key, atrribute, input value prop, etc.
723
+ // In most cases, this console output also shows the component and its
724
+ // ancestor components where the exception happened.
725
+ //
726
+ // eslint-disable-next-line react-internal/safe-string-coercion
727
+ return '' + value;
728
+ }
729
+ function checkKeyStringCoercion(value) {
730
+ {
731
+ if (willCoercionThrow(value)) {
732
+ error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));
733
+
734
+ return testStringCoercion(value); // throw (to help callers find troubleshooting comments)
735
+ }
736
+ }
737
+ }
738
+
739
+ var ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;
740
+ var RESERVED_PROPS = {
741
+ key: true,
742
+ ref: true,
743
+ __self: true,
744
+ __source: true
745
+ };
746
+ var specialPropKeyWarningShown;
747
+ var specialPropRefWarningShown;
748
+ var didWarnAboutStringRefs;
749
+
750
+ {
751
+ didWarnAboutStringRefs = {};
752
+ }
753
+
754
+ function hasValidRef(config) {
755
+ {
756
+ if (hasOwnProperty.call(config, 'ref')) {
757
+ var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;
758
+
759
+ if (getter && getter.isReactWarning) {
760
+ return false;
761
+ }
762
+ }
763
+ }
764
+
765
+ return config.ref !== undefined;
766
+ }
767
+
768
+ function hasValidKey(config) {
769
+ {
770
+ if (hasOwnProperty.call(config, 'key')) {
771
+ var getter = Object.getOwnPropertyDescriptor(config, 'key').get;
772
+
773
+ if (getter && getter.isReactWarning) {
774
+ return false;
775
+ }
776
+ }
777
+ }
778
+
779
+ return config.key !== undefined;
780
+ }
781
+
782
+ function warnIfStringRefCannotBeAutoConverted(config, self) {
783
+ {
784
+ if (typeof config.ref === 'string' && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {
785
+ var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);
786
+
787
+ if (!didWarnAboutStringRefs[componentName]) {
788
+ error('Component "%s" contains the string ref "%s". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref);
789
+
790
+ didWarnAboutStringRefs[componentName] = true;
791
+ }
792
+ }
793
+ }
794
+ }
795
+
796
+ function defineKeyPropWarningGetter(props, displayName) {
797
+ {
798
+ var warnAboutAccessingKey = function () {
799
+ if (!specialPropKeyWarningShown) {
800
+ specialPropKeyWarningShown = true;
801
+
802
+ error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);
803
+ }
804
+ };
805
+
806
+ warnAboutAccessingKey.isReactWarning = true;
807
+ Object.defineProperty(props, 'key', {
808
+ get: warnAboutAccessingKey,
809
+ configurable: true
810
+ });
811
+ }
812
+ }
813
+
814
+ function defineRefPropWarningGetter(props, displayName) {
815
+ {
816
+ var warnAboutAccessingRef = function () {
817
+ if (!specialPropRefWarningShown) {
818
+ specialPropRefWarningShown = true;
819
+
820
+ error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);
821
+ }
822
+ };
823
+
824
+ warnAboutAccessingRef.isReactWarning = true;
825
+ Object.defineProperty(props, 'ref', {
826
+ get: warnAboutAccessingRef,
827
+ configurable: true
828
+ });
829
+ }
830
+ }
831
+ /**
832
+ * Factory method to create a new React element. This no longer adheres to
833
+ * the class pattern, so do not use new to call it. Also, instanceof check
834
+ * will not work. Instead test $$typeof field against Symbol.for('react.element') to check
835
+ * if something is a React Element.
836
+ *
837
+ * @param {*} type
838
+ * @param {*} props
839
+ * @param {*} key
840
+ * @param {string|object} ref
841
+ * @param {*} owner
842
+ * @param {*} self A *temporary* helper to detect places where `this` is
843
+ * different from the `owner` when React.createElement is called, so that we
844
+ * can warn. We want to get rid of owner and replace string `ref`s with arrow
845
+ * functions, and as long as `this` and owner are the same, there will be no
846
+ * change in behavior.
847
+ * @param {*} source An annotation object (added by a transpiler or otherwise)
848
+ * indicating filename, line number, and/or other information.
849
+ * @internal
850
+ */
851
+
852
+
853
+ var ReactElement = function (type, key, ref, self, source, owner, props) {
854
+ var element = {
855
+ // This tag allows us to uniquely identify this as a React Element
856
+ $$typeof: REACT_ELEMENT_TYPE,
857
+ // Built-in properties that belong on the element
858
+ type: type,
859
+ key: key,
860
+ ref: ref,
861
+ props: props,
862
+ // Record the component responsible for creating this element.
863
+ _owner: owner
864
+ };
865
+
866
+ {
867
+ // The validation flag is currently mutative. We put it on
868
+ // an external backing store so that we can freeze the whole object.
869
+ // This can be replaced with a WeakMap once they are implemented in
870
+ // commonly used development environments.
871
+ element._store = {}; // To make comparing ReactElements easier for testing purposes, we make
872
+ // the validation flag non-enumerable (where possible, which should
873
+ // include every environment we run tests in), so the test framework
874
+ // ignores it.
875
+
876
+ Object.defineProperty(element._store, 'validated', {
877
+ configurable: false,
878
+ enumerable: false,
879
+ writable: true,
880
+ value: false
881
+ }); // self and source are DEV only properties.
882
+
883
+ Object.defineProperty(element, '_self', {
884
+ configurable: false,
885
+ enumerable: false,
886
+ writable: false,
887
+ value: self
888
+ }); // Two elements created in two different places should be considered
889
+ // equal for testing purposes and therefore we hide it from enumeration.
890
+
891
+ Object.defineProperty(element, '_source', {
892
+ configurable: false,
893
+ enumerable: false,
894
+ writable: false,
895
+ value: source
896
+ });
897
+
898
+ if (Object.freeze) {
899
+ Object.freeze(element.props);
900
+ Object.freeze(element);
901
+ }
902
+ }
903
+
904
+ return element;
905
+ };
906
+ /**
907
+ * https://github.com/reactjs/rfcs/pull/107
908
+ * @param {*} type
909
+ * @param {object} props
910
+ * @param {string} key
911
+ */
912
+
913
+ function jsxDEV(type, config, maybeKey, source, self) {
914
+ {
915
+ var propName; // Reserved names are extracted
916
+
917
+ var props = {};
918
+ var key = null;
919
+ var ref = null; // Currently, key can be spread in as a prop. This causes a potential
920
+ // issue if key is also explicitly declared (ie. <div {...props} key="Hi" />
921
+ // or <div key="Hi" {...props} /> ). We want to deprecate key spread,
922
+ // but as an intermediary step, we will use jsxDEV for everything except
923
+ // <div {...props} key="Hi" />, because we aren't currently able to tell if
924
+ // key is explicitly declared to be undefined or not.
925
+
926
+ if (maybeKey !== undefined) {
927
+ {
928
+ checkKeyStringCoercion(maybeKey);
929
+ }
930
+
931
+ key = '' + maybeKey;
932
+ }
933
+
934
+ if (hasValidKey(config)) {
935
+ {
936
+ checkKeyStringCoercion(config.key);
937
+ }
938
+
939
+ key = '' + config.key;
940
+ }
941
+
942
+ if (hasValidRef(config)) {
943
+ ref = config.ref;
944
+ warnIfStringRefCannotBeAutoConverted(config, self);
945
+ } // Remaining properties are added to a new props object
946
+
947
+
948
+ for (propName in config) {
949
+ if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
950
+ props[propName] = config[propName];
951
+ }
952
+ } // Resolve default props
953
+
954
+
955
+ if (type && type.defaultProps) {
956
+ var defaultProps = type.defaultProps;
957
+
958
+ for (propName in defaultProps) {
959
+ if (props[propName] === undefined) {
960
+ props[propName] = defaultProps[propName];
961
+ }
962
+ }
963
+ }
964
+
965
+ if (key || ref) {
966
+ var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;
967
+
968
+ if (key) {
969
+ defineKeyPropWarningGetter(props, displayName);
970
+ }
971
+
972
+ if (ref) {
973
+ defineRefPropWarningGetter(props, displayName);
974
+ }
975
+ }
976
+
977
+ return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);
978
+ }
979
+ }
980
+
981
+ var ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;
982
+ var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;
983
+
984
+ function setCurrentlyValidatingElement$1(element) {
985
+ {
986
+ if (element) {
987
+ var owner = element._owner;
988
+ var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);
989
+ ReactDebugCurrentFrame$1.setExtraStackFrame(stack);
990
+ } else {
991
+ ReactDebugCurrentFrame$1.setExtraStackFrame(null);
992
+ }
993
+ }
994
+ }
995
+
996
+ var propTypesMisspellWarningShown;
997
+
998
+ {
999
+ propTypesMisspellWarningShown = false;
1000
+ }
1001
+ /**
1002
+ * Verifies the object is a ReactElement.
1003
+ * See https://reactjs.org/docs/react-api.html#isvalidelement
1004
+ * @param {?object} object
1005
+ * @return {boolean} True if `object` is a ReactElement.
1006
+ * @final
1007
+ */
1008
+
1009
+
1010
+ function isValidElement(object) {
1011
+ {
1012
+ return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
1013
+ }
1014
+ }
1015
+
1016
+ function getDeclarationErrorAddendum() {
1017
+ {
1018
+ if (ReactCurrentOwner$1.current) {
1019
+ var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);
1020
+
1021
+ if (name) {
1022
+ return '\n\nCheck the render method of `' + name + '`.';
1023
+ }
1024
+ }
1025
+
1026
+ return '';
1027
+ }
1028
+ }
1029
+
1030
+ function getSourceInfoErrorAddendum(source) {
1031
+ {
1032
+ if (source !== undefined) {
1033
+ var fileName = source.fileName.replace(/^.*[\\\/]/, '');
1034
+ var lineNumber = source.lineNumber;
1035
+ return '\n\nCheck your code at ' + fileName + ':' + lineNumber + '.';
1036
+ }
1037
+
1038
+ return '';
1039
+ }
1040
+ }
1041
+ /**
1042
+ * Warn if there's no key explicitly set on dynamic arrays of children or
1043
+ * object keys are not valid. This allows us to keep track of children between
1044
+ * updates.
1045
+ */
1046
+
1047
+
1048
+ var ownerHasKeyUseWarning = {};
1049
+
1050
+ function getCurrentComponentErrorInfo(parentType) {
1051
+ {
1052
+ var info = getDeclarationErrorAddendum();
1053
+
1054
+ if (!info) {
1055
+ var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;
1056
+
1057
+ if (parentName) {
1058
+ info = "\n\nCheck the top-level render call using <" + parentName + ">.";
1059
+ }
1060
+ }
1061
+
1062
+ return info;
1063
+ }
1064
+ }
1065
+ /**
1066
+ * Warn if the element doesn't have an explicit key assigned to it.
1067
+ * This element is in an array. The array could grow and shrink or be
1068
+ * reordered. All children that haven't already been validated are required to
1069
+ * have a "key" property assigned to it. Error statuses are cached so a warning
1070
+ * will only be shown once.
1071
+ *
1072
+ * @internal
1073
+ * @param {ReactElement} element Element that requires a key.
1074
+ * @param {*} parentType element's parent's type.
1075
+ */
1076
+
1077
+
1078
+ function validateExplicitKey(element, parentType) {
1079
+ {
1080
+ if (!element._store || element._store.validated || element.key != null) {
1081
+ return;
1082
+ }
1083
+
1084
+ element._store.validated = true;
1085
+ var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);
1086
+
1087
+ if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {
1088
+ return;
1089
+ }
1090
+
1091
+ ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a
1092
+ // property, it may be the creator of the child that's responsible for
1093
+ // assigning it a key.
1094
+
1095
+ var childOwner = '';
1096
+
1097
+ if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {
1098
+ // Give the component that originally created this child.
1099
+ childOwner = " It was passed a child from " + getComponentNameFromType(element._owner.type) + ".";
1100
+ }
1101
+
1102
+ setCurrentlyValidatingElement$1(element);
1103
+
1104
+ error('Each child in a list should have a unique "key" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);
1105
+
1106
+ setCurrentlyValidatingElement$1(null);
1107
+ }
1108
+ }
1109
+ /**
1110
+ * Ensure that every element either is passed in a static location, in an
1111
+ * array with an explicit keys property defined, or in an object literal
1112
+ * with valid key property.
1113
+ *
1114
+ * @internal
1115
+ * @param {ReactNode} node Statically passed child of any type.
1116
+ * @param {*} parentType node's parent's type.
1117
+ */
1118
+
1119
+
1120
+ function validateChildKeys(node, parentType) {
1121
+ {
1122
+ if (typeof node !== 'object') {
1123
+ return;
1124
+ }
1125
+
1126
+ if (isArray(node)) {
1127
+ for (var i = 0; i < node.length; i++) {
1128
+ var child = node[i];
1129
+
1130
+ if (isValidElement(child)) {
1131
+ validateExplicitKey(child, parentType);
1132
+ }
1133
+ }
1134
+ } else if (isValidElement(node)) {
1135
+ // This element was passed in a valid location.
1136
+ if (node._store) {
1137
+ node._store.validated = true;
1138
+ }
1139
+ } else if (node) {
1140
+ var iteratorFn = getIteratorFn(node);
1141
+
1142
+ if (typeof iteratorFn === 'function') {
1143
+ // Entry iterators used to provide implicit keys,
1144
+ // but now we print a separate warning for them later.
1145
+ if (iteratorFn !== node.entries) {
1146
+ var iterator = iteratorFn.call(node);
1147
+ var step;
1148
+
1149
+ while (!(step = iterator.next()).done) {
1150
+ if (isValidElement(step.value)) {
1151
+ validateExplicitKey(step.value, parentType);
1152
+ }
1153
+ }
1154
+ }
1155
+ }
1156
+ }
1157
+ }
1158
+ }
1159
+ /**
1160
+ * Given an element, validate that its props follow the propTypes definition,
1161
+ * provided by the type.
1162
+ *
1163
+ * @param {ReactElement} element
1164
+ */
1165
+
1166
+
1167
+ function validatePropTypes(element) {
1168
+ {
1169
+ var type = element.type;
1170
+
1171
+ if (type === null || type === undefined || typeof type === 'string') {
1172
+ return;
1173
+ }
1174
+
1175
+ var propTypes;
1176
+
1177
+ if (typeof type === 'function') {
1178
+ propTypes = type.propTypes;
1179
+ } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.
1180
+ // Inner props are checked in the reconciler.
1181
+ type.$$typeof === REACT_MEMO_TYPE)) {
1182
+ propTypes = type.propTypes;
1183
+ } else {
1184
+ return;
1185
+ }
1186
+
1187
+ if (propTypes) {
1188
+ // Intentionally inside to avoid triggering lazy initializers:
1189
+ var name = getComponentNameFromType(type);
1190
+ checkPropTypes(propTypes, element.props, 'prop', name, element);
1191
+ } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {
1192
+ propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:
1193
+
1194
+ var _name = getComponentNameFromType(type);
1195
+
1196
+ error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');
1197
+ }
1198
+
1199
+ if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {
1200
+ error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');
1201
+ }
1202
+ }
1203
+ }
1204
+ /**
1205
+ * Given a fragment, validate that it can only be provided with fragment props
1206
+ * @param {ReactElement} fragment
1207
+ */
1208
+
1209
+
1210
+ function validateFragmentProps(fragment) {
1211
+ {
1212
+ var keys = Object.keys(fragment.props);
1213
+
1214
+ for (var i = 0; i < keys.length; i++) {
1215
+ var key = keys[i];
1216
+
1217
+ if (key !== 'children' && key !== 'key') {
1218
+ setCurrentlyValidatingElement$1(fragment);
1219
+
1220
+ error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);
1221
+
1222
+ setCurrentlyValidatingElement$1(null);
1223
+ break;
1224
+ }
1225
+ }
1226
+
1227
+ if (fragment.ref !== null) {
1228
+ setCurrentlyValidatingElement$1(fragment);
1229
+
1230
+ error('Invalid attribute `ref` supplied to `React.Fragment`.');
1231
+
1232
+ setCurrentlyValidatingElement$1(null);
1233
+ }
1234
+ }
1235
+ }
1236
+
1237
+ function jsxWithValidation(type, props, key, isStaticChildren, source, self) {
1238
+ {
1239
+ var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to
1240
+ // succeed and there will likely be errors in render.
1241
+
1242
+ if (!validType) {
1243
+ var info = '';
1244
+
1245
+ if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {
1246
+ info += ' You likely forgot to export your component from the file ' + "it's defined in, or you might have mixed up default and named imports.";
1247
+ }
1248
+
1249
+ var sourceInfo = getSourceInfoErrorAddendum(source);
1250
+
1251
+ if (sourceInfo) {
1252
+ info += sourceInfo;
1253
+ } else {
1254
+ info += getDeclarationErrorAddendum();
1255
+ }
1256
+
1257
+ var typeString;
1258
+
1259
+ if (type === null) {
1260
+ typeString = 'null';
1261
+ } else if (isArray(type)) {
1262
+ typeString = 'array';
1263
+ } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {
1264
+ typeString = "<" + (getComponentNameFromType(type.type) || 'Unknown') + " />";
1265
+ info = ' Did you accidentally export a JSX literal instead of a component?';
1266
+ } else {
1267
+ typeString = typeof type;
1268
+ }
1269
+
1270
+ error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);
1271
+ }
1272
+
1273
+ var element = jsxDEV(type, props, key, source, self); // The result can be nullish if a mock or a custom function is used.
1274
+ // TODO: Drop this when these are no longer allowed as the type argument.
1275
+
1276
+ if (element == null) {
1277
+ return element;
1278
+ } // Skip key warning if the type isn't valid since our key validation logic
1279
+ // doesn't expect a non-string/function type and can throw confusing errors.
1280
+ // We don't want exception behavior to differ between dev and prod.
1281
+ // (Rendering will throw with a helpful message and as soon as the type is
1282
+ // fixed, the key warnings will appear.)
1283
+
1284
+
1285
+ if (validType) {
1286
+ var children = props.children;
1287
+
1288
+ if (children !== undefined) {
1289
+ if (isStaticChildren) {
1290
+ if (isArray(children)) {
1291
+ for (var i = 0; i < children.length; i++) {
1292
+ validateChildKeys(children[i], type);
1293
+ }
1294
+
1295
+ if (Object.freeze) {
1296
+ Object.freeze(children);
1297
+ }
1298
+ } else {
1299
+ error('React.jsx: Static children should always be an array. ' + 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + 'Use the Babel transform instead.');
1300
+ }
1301
+ } else {
1302
+ validateChildKeys(children, type);
1303
+ }
1304
+ }
1305
+ }
1306
+
1307
+ if (type === REACT_FRAGMENT_TYPE) {
1308
+ validateFragmentProps(element);
1309
+ } else {
1310
+ validatePropTypes(element);
1311
+ }
1312
+
1313
+ return element;
1314
+ }
1315
+ } // These two functions exist to still get child warnings in dev
1316
+ // even with the prod transform. This means that jsxDEV is purely
1317
+ // opt-in behavior for better messages but that we won't stop
1318
+ // giving you warnings if you use production apis.
1319
+
1320
+ function jsxWithValidationStatic(type, props, key) {
1321
+ {
1322
+ return jsxWithValidation(type, props, key, true);
1323
+ }
1324
+ }
1325
+ function jsxWithValidationDynamic(type, props, key) {
1326
+ {
1327
+ return jsxWithValidation(type, props, key, false);
1328
+ }
1329
+ }
1330
+
1331
+ var jsx = jsxWithValidationDynamic ; // we may want to special case jsxs internally to take advantage of static children.
1332
+ // for now we can ship identical prod functions
1333
+
1334
+ var jsxs = jsxWithValidationStatic ;
1335
+
1336
+ reactJsxRuntime_development.Fragment = REACT_FRAGMENT_TYPE;
1337
+ reactJsxRuntime_development.jsx = jsx;
1338
+ reactJsxRuntime_development.jsxs = jsxs;
1339
+ })();
1340
+ }
1341
+
1342
+ (function (module) {
1343
+
1344
+ {
1345
+ module.exports = reactJsxRuntime_development;
1346
+ }
1347
+ } (jsxRuntime$1));
1348
+
1349
+ var jsxRuntime = /*@__PURE__*/getDefaultExportFromCjs(jsxRuntimeExports);
1350
+
1351
+ var Jsx = /*#__PURE__*/_mergeNamespaces({
1352
+ __proto__: null,
1353
+ default: jsxRuntime
1354
+ }, [jsxRuntimeExports]);
1355
+
1356
+ /** @module See `rollup.config.js` for what this file does. */
1357
+
1358
+ var Fragment = jsxRuntimeExports.Fragment;
1359
+ var jsx = jsxRuntimeExports.jsx;
1360
+ var jsxs = jsxRuntimeExports.jsxs;
1361
+ export { Fragment, Jsx as default, jsx, jsxs };
1362
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMiLCJzb3VyY2VzIjpbIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QvanN4LXJ1bnRpbWUuanMiLCIuLi9zcmMvZXNtLXNoaW1zL3JlYWN0LWpzeC1ydW50aW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWpzeC1ydW50aW1lLmRldmVsb3BtZW50LmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBGYWNlYm9vaywgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gIChmdW5jdGlvbigpIHtcbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0ID0gcmVxdWlyZSgncmVhY3QnKTtcblxuLy8gQVRURU5USU9OXG4vLyBXaGVuIGFkZGluZyBuZXcgc3ltYm9scyB0byB0aGlzIGZpbGUsXG4vLyBQbGVhc2UgY29uc2lkZXIgYWxzbyBhZGRpbmcgdG8gJ3JlYWN0LWRldnRvb2xzLXNoYXJlZC9zcmMvYmFja2VuZC9SZWFjdFN5bWJvbHMnXG4vLyBUaGUgU3ltYm9sIHVzZWQgdG8gdGFnIHRoZSBSZWFjdEVsZW1lbnQtbGlrZSB0eXBlcy5cbnZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50Jyk7XG52YXIgUkVBQ1RfUE9SVEFMX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5wb3J0YWwnKTtcbnZhciBSRUFDVF9GUkFHTUVOVF9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QuZnJhZ21lbnQnKTtcbnZhciBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFID0gU3ltYm9sLmZvcigncmVhY3Quc3RyaWN0X21vZGUnKTtcbnZhciBSRUFDVF9QUk9GSUxFUl9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QucHJvZmlsZXInKTtcbnZhciBSRUFDVF9QUk9WSURFUl9UWVBFID0gU3ltYm9sLmZvcigncmVhY3QucHJvdmlkZXInKTtcbnZhciBSRUFDVF9DT05URVhUX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5jb250ZXh0Jyk7XG52YXIgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmZvcndhcmRfcmVmJyk7XG52YXIgUkVBQ1RfU1VTUEVOU0VfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LnN1c3BlbnNlJyk7XG52YXIgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFID0gU3ltYm9sLmZvcigncmVhY3Quc3VzcGVuc2VfbGlzdCcpO1xudmFyIFJFQUNUX01FTU9fVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0Lm1lbW8nKTtcbnZhciBSRUFDVF9MQVpZX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5sYXp5Jyk7XG52YXIgUkVBQ1RfT0ZGU0NSRUVOX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5vZmZzY3JlZW4nKTtcbnZhciBNQVlCRV9JVEVSQVRPUl9TWU1CT0wgPSBTeW1ib2wuaXRlcmF0b3I7XG52YXIgRkFVWF9JVEVSQVRPUl9TWU1CT0wgPSAnQEBpdGVyYXRvcic7XG5mdW5jdGlvbiBnZXRJdGVyYXRvckZuKG1heWJlSXRlcmFibGUpIHtcbiAgaWYgKG1heWJlSXRlcmFibGUgPT09IG51bGwgfHwgdHlwZW9mIG1heWJlSXRlcmFibGUgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB2YXIgbWF5YmVJdGVyYXRvciA9IE1BWUJFX0lURVJBVE9SX1NZTUJPTCAmJiBtYXliZUl0ZXJhYmxlW01BWUJFX0lURVJBVE9SX1NZTUJPTF0gfHwgbWF5YmVJdGVyYWJsZVtGQVVYX0lURVJBVE9SX1NZTUJPTF07XG5cbiAgaWYgKHR5cGVvZiBtYXliZUl0ZXJhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIG1heWJlSXRlcmF0b3I7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxudmFyIFJlYWN0U2hhcmVkSW50ZXJuYWxzID0gUmVhY3QuX19TRUNSRVRfSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfWU9VX1dJTExfQkVfRklSRUQ7XG5cbmZ1bmN0aW9uIGVycm9yKGZvcm1hdCkge1xuICB7XG4gICAge1xuICAgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yID4gMSA/IF9sZW4yIC0gMSA6IDApLCBfa2V5MiA9IDE7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgICAgYXJnc1tfa2V5MiAtIDFdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICAgIH1cblxuICAgICAgcHJpbnRXYXJuaW5nKCdlcnJvcicsIGZvcm1hdCwgYXJncyk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByaW50V2FybmluZyhsZXZlbCwgZm9ybWF0LCBhcmdzKSB7XG4gIC8vIFdoZW4gY2hhbmdpbmcgdGhpcyBsb2dpYywgeW91IG1pZ2h0IHdhbnQgdG8gYWxzb1xuICAvLyB1cGRhdGUgY29uc29sZVdpdGhTdGFja0Rldi53d3cuanMgYXMgd2VsbC5cbiAge1xuICAgIHZhciBSZWFjdERlYnVnQ3VycmVudEZyYW1lID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZTtcbiAgICB2YXIgc3RhY2sgPSBSZWFjdERlYnVnQ3VycmVudEZyYW1lLmdldFN0YWNrQWRkZW5kdW0oKTtcblxuICAgIGlmIChzdGFjayAhPT0gJycpIHtcbiAgICAgIGZvcm1hdCArPSAnJXMnO1xuICAgICAgYXJncyA9IGFyZ3MuY29uY2F0KFtzdGFja10pO1xuICAgIH0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWludGVybmFsL3NhZmUtc3RyaW5nLWNvZXJjaW9uXG5cblxuICAgIHZhciBhcmdzV2l0aEZvcm1hdCA9IGFyZ3MubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICByZXR1cm4gU3RyaW5nKGl0ZW0pO1xuICAgIH0pOyAvLyBDYXJlZnVsOiBSTiBjdXJyZW50bHkgZGVwZW5kcyBvbiB0aGlzIHByZWZpeFxuXG4gICAgYXJnc1dpdGhGb3JtYXQudW5zaGlmdCgnV2FybmluZzogJyArIGZvcm1hdCk7IC8vIFdlIGludGVudGlvbmFsbHkgZG9uJ3QgdXNlIHNwcmVhZCAob3IgLmFwcGx5KSBkaXJlY3RseSBiZWNhdXNlIGl0XG4gICAgLy8gYnJlYWtzIElFOTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xMzYxMFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmdcblxuICAgIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseS5jYWxsKGNvbnNvbGVbbGV2ZWxdLCBjb25zb2xlLCBhcmdzV2l0aEZvcm1hdCk7XG4gIH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxudmFyIGVuYWJsZVNjb3BlQVBJID0gZmFsc2U7IC8vIEV4cGVyaW1lbnRhbCBDcmVhdGUgRXZlbnQgSGFuZGxlIEFQSS5cbnZhciBlbmFibGVDYWNoZUVsZW1lbnQgPSBmYWxzZTtcbnZhciBlbmFibGVUcmFuc2l0aW9uVHJhY2luZyA9IGZhbHNlOyAvLyBObyBrbm93biBidWdzLCBidXQgbmVlZHMgcGVyZm9ybWFuY2UgdGVzdGluZ1xuXG52YXIgZW5hYmxlTGVnYWN5SGlkZGVuID0gZmFsc2U7IC8vIEVuYWJsZXMgdW5zdGFibGVfYXZvaWRUaGlzRmFsbGJhY2sgZmVhdHVyZSBpbiBGaWJlclxuLy8gc3R1ZmYuIEludGVuZGVkIHRvIGVuYWJsZSBSZWFjdCBjb3JlIG1lbWJlcnMgdG8gbW9yZSBlYXNpbHkgZGVidWcgc2NoZWR1bGluZ1xuLy8gaXNzdWVzIGluIERFViBidWlsZHMuXG5cbnZhciBlbmFibGVEZWJ1Z1RyYWNpbmcgPSBmYWxzZTsgLy8gVHJhY2sgd2hpY2ggRmliZXIocykgc2NoZWR1bGUgcmVuZGVyIHdvcmsuXG5cbnZhciBSRUFDVF9NT0RVTEVfUkVGRVJFTkNFO1xuXG57XG4gIFJFQUNUX01PRFVMRV9SRUZFUkVOQ0UgPSBTeW1ib2wuZm9yKCdyZWFjdC5tb2R1bGUucmVmZXJlbmNlJyk7XG59XG5cbmZ1bmN0aW9uIGlzVmFsaWRFbGVtZW50VHlwZSh0eXBlKSB7XG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSAvLyBOb3RlOiB0eXBlb2YgbWlnaHQgYmUgb3RoZXIgdGhhbiAnc3ltYm9sJyBvciAnbnVtYmVyJyAoZS5nLiBpZiBpdCdzIGEgcG9seWZpbGwpLlxuXG5cbiAgaWYgKHR5cGUgPT09IFJFQUNUX0ZSQUdNRU5UX1RZUEUgfHwgdHlwZSA9PT0gUkVBQ1RfUFJPRklMRVJfVFlQRSB8fCBlbmFibGVEZWJ1Z1RyYWNpbmcgIHx8IHR5cGUgPT09IFJFQUNUX1NUUklDVF9NT0RFX1RZUEUgfHwgdHlwZSA9PT0gUkVBQ1RfU1VTUEVOU0VfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEUgfHwgZW5hYmxlTGVnYWN5SGlkZGVuICB8fCB0eXBlID09PSBSRUFDVF9PRkZTQ1JFRU5fVFlQRSB8fCBlbmFibGVTY29wZUFQSSAgfHwgZW5hYmxlQ2FjaGVFbGVtZW50ICB8fCBlbmFibGVUcmFuc2l0aW9uVHJhY2luZyApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcgJiYgdHlwZSAhPT0gbnVsbCkge1xuICAgIGlmICh0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9MQVpZX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTUVNT19UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX1BST1ZJREVSX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfQ09OVEVYVF9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0ZPUldBUkRfUkVGX1RZUEUgfHwgLy8gVGhpcyBuZWVkcyB0byBpbmNsdWRlIGFsbCBwb3NzaWJsZSBtb2R1bGUgcmVmZXJlbmNlIG9iamVjdFxuICAgIC8vIHR5cGVzIHN1cHBvcnRlZCBieSBhbnkgRmxpZ2h0IGNvbmZpZ3VyYXRpb24gYW55d2hlcmUgc2luY2VcbiAgICAvLyB3ZSBkb24ndCBrbm93IHdoaWNoIEZsaWdodCBidWlsZCB0aGlzIHdpbGwgZW5kIHVwIGJlaW5nIHVzZWRcbiAgICAvLyB3aXRoLlxuICAgIHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX01PRFVMRV9SRUZFUkVOQ0UgfHwgdHlwZS5nZXRNb2R1bGVJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGdldFdyYXBwZWROYW1lKG91dGVyVHlwZSwgaW5uZXJUeXBlLCB3cmFwcGVyTmFtZSkge1xuICB2YXIgZGlzcGxheU5hbWUgPSBvdXRlclR5cGUuZGlzcGxheU5hbWU7XG5cbiAgaWYgKGRpc3BsYXlOYW1lKSB7XG4gICAgcmV0dXJuIGRpc3BsYXlOYW1lO1xuICB9XG5cbiAgdmFyIGZ1bmN0aW9uTmFtZSA9IGlubmVyVHlwZS5kaXNwbGF5TmFtZSB8fCBpbm5lclR5cGUubmFtZSB8fCAnJztcbiAgcmV0dXJuIGZ1bmN0aW9uTmFtZSAhPT0gJycgPyB3cmFwcGVyTmFtZSArIFwiKFwiICsgZnVuY3Rpb25OYW1lICsgXCIpXCIgOiB3cmFwcGVyTmFtZTtcbn0gLy8gS2VlcCBpbiBzeW5jIHdpdGggcmVhY3QtcmVjb25jaWxlci9nZXRDb21wb25lbnROYW1lRnJvbUZpYmVyXG5cblxuZnVuY3Rpb24gZ2V0Q29udGV4dE5hbWUodHlwZSkge1xuICByZXR1cm4gdHlwZS5kaXNwbGF5TmFtZSB8fCAnQ29udGV4dCc7XG59IC8vIE5vdGUgdGhhdCB0aGUgcmVjb25jaWxlciBwYWNrYWdlIHNob3VsZCBnZW5lcmFsbHkgcHJlZmVyIHRvIHVzZSBnZXRDb21wb25lbnROYW1lRnJvbUZpYmVyKCkgaW5zdGVhZC5cblxuXG5mdW5jdGlvbiBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZSkge1xuICBpZiAodHlwZSA9PSBudWxsKSB7XG4gICAgLy8gSG9zdCByb290LCB0ZXh0IG5vZGUgb3IganVzdCBpbnZhbGlkIHR5cGUuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICB7XG4gICAgaWYgKHR5cGVvZiB0eXBlLnRhZyA9PT0gJ251bWJlcicpIHtcbiAgICAgIGVycm9yKCdSZWNlaXZlZCBhbiB1bmV4cGVjdGVkIG9iamVjdCBpbiBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUoKS4gJyArICdUaGlzIGlzIGxpa2VseSBhIGJ1ZyBpbiBSZWFjdC4gUGxlYXNlIGZpbGUgYW4gaXNzdWUuJyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIHR5cGUuZGlzcGxheU5hbWUgfHwgdHlwZS5uYW1lIHx8IG51bGw7XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHR5cGU7XG4gIH1cblxuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFJFQUNUX0ZSQUdNRU5UX1RZUEU6XG4gICAgICByZXR1cm4gJ0ZyYWdtZW50JztcblxuICAgIGNhc2UgUkVBQ1RfUE9SVEFMX1RZUEU6XG4gICAgICByZXR1cm4gJ1BvcnRhbCc7XG5cbiAgICBjYXNlIFJFQUNUX1BST0ZJTEVSX1RZUEU6XG4gICAgICByZXR1cm4gJ1Byb2ZpbGVyJztcblxuICAgIGNhc2UgUkVBQ1RfU1RSSUNUX01PREVfVFlQRTpcbiAgICAgIHJldHVybiAnU3RyaWN0TW9kZSc7XG5cbiAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX1RZUEU6XG4gICAgICByZXR1cm4gJ1N1c3BlbnNlJztcblxuICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFOlxuICAgICAgcmV0dXJuICdTdXNwZW5zZUxpc3QnO1xuXG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgc3dpdGNoICh0eXBlLiQkdHlwZW9mKSB7XG4gICAgICBjYXNlIFJFQUNUX0NPTlRFWFRfVFlQRTpcbiAgICAgICAgdmFyIGNvbnRleHQgPSB0eXBlO1xuICAgICAgICByZXR1cm4gZ2V0Q29udGV4dE5hbWUoY29udGV4dCkgKyAnLkNvbnN1bWVyJztcblxuICAgICAgY2FzZSBSRUFDVF9QUk9WSURFUl9UWVBFOlxuICAgICAgICB2YXIgcHJvdmlkZXIgPSB0eXBlO1xuICAgICAgICByZXR1cm4gZ2V0Q29udGV4dE5hbWUocHJvdmlkZXIuX2NvbnRleHQpICsgJy5Qcm92aWRlcic7XG5cbiAgICAgIGNhc2UgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRTpcbiAgICAgICAgcmV0dXJuIGdldFdyYXBwZWROYW1lKHR5cGUsIHR5cGUucmVuZGVyLCAnRm9yd2FyZFJlZicpO1xuXG4gICAgICBjYXNlIFJFQUNUX01FTU9fVFlQRTpcbiAgICAgICAgdmFyIG91dGVyTmFtZSA9IHR5cGUuZGlzcGxheU5hbWUgfHwgbnVsbDtcblxuICAgICAgICBpZiAob3V0ZXJOYW1lICE9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIG91dGVyTmFtZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZS50eXBlKSB8fCAnTWVtbyc7XG5cbiAgICAgIGNhc2UgUkVBQ1RfTEFaWV9UWVBFOlxuICAgICAgICB7XG4gICAgICAgICAgdmFyIGxhenlDb21wb25lbnQgPSB0eXBlO1xuICAgICAgICAgIHZhciBwYXlsb2FkID0gbGF6eUNvbXBvbmVudC5fcGF5bG9hZDtcbiAgICAgICAgICB2YXIgaW5pdCA9IGxhenlDb21wb25lbnQuX2luaXQ7XG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZShpbml0KHBheWxvYWQpKTtcbiAgICAgICAgICB9IGNhdGNoICh4KSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWZhbGx0aHJvdWdoXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbnZhciBhc3NpZ24gPSBPYmplY3QuYXNzaWduO1xuXG4vLyBIZWxwZXJzIHRvIHBhdGNoIGNvbnNvbGUubG9ncyB0byBhdm9pZCBsb2dnaW5nIGR1cmluZyBzaWRlLWVmZmVjdCBmcmVlXG4vLyByZXBsYXlpbmcgb24gcmVuZGVyIGZ1bmN0aW9uLiBUaGlzIGN1cnJlbnRseSBvbmx5IHBhdGNoZXMgdGhlIG9iamVjdFxuLy8gbGF6aWx5IHdoaWNoIHdvbid0IGNvdmVyIGlmIHRoZSBsb2cgZnVuY3Rpb24gd2FzIGV4dHJhY3RlZCBlYWdlcmx5LlxuLy8gV2UgY291bGQgYWxzbyBlYWdlcmx5IHBhdGNoIHRoZSBtZXRob2QuXG52YXIgZGlzYWJsZWREZXB0aCA9IDA7XG52YXIgcHJldkxvZztcbnZhciBwcmV2SW5mbztcbnZhciBwcmV2V2FybjtcbnZhciBwcmV2RXJyb3I7XG52YXIgcHJldkdyb3VwO1xudmFyIHByZXZHcm91cENvbGxhcHNlZDtcbnZhciBwcmV2R3JvdXBFbmQ7XG5cbmZ1bmN0aW9uIGRpc2FibGVkTG9nKCkge31cblxuZGlzYWJsZWRMb2cuX19yZWFjdERpc2FibGVkTG9nID0gdHJ1ZTtcbmZ1bmN0aW9uIGRpc2FibGVMb2dzKCkge1xuICB7XG4gICAgaWYgKGRpc2FibGVkRGVwdGggPT09IDApIHtcbiAgICAgIC8qIGVzbGludC1kaXNhYmxlIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZyAqL1xuICAgICAgcHJldkxvZyA9IGNvbnNvbGUubG9nO1xuICAgICAgcHJldkluZm8gPSBjb25zb2xlLmluZm87XG4gICAgICBwcmV2V2FybiA9IGNvbnNvbGUud2FybjtcbiAgICAgIHByZXZFcnJvciA9IGNvbnNvbGUuZXJyb3I7XG4gICAgICBwcmV2R3JvdXAgPSBjb25zb2xlLmdyb3VwO1xuICAgICAgcHJldkdyb3VwQ29sbGFwc2VkID0gY29uc29sZS5ncm91cENvbGxhcHNlZDtcbiAgICAgIHByZXZHcm91cEVuZCA9IGNvbnNvbGUuZ3JvdXBFbmQ7IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMTkwOTlcblxuICAgICAgdmFyIHByb3BzID0ge1xuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIHZhbHVlOiBkaXNhYmxlZExvZyxcbiAgICAgICAgd3JpdGFibGU6IHRydWVcbiAgICAgIH07IC8vICRGbG93Rml4TWUgRmxvdyB0aGlua3MgY29uc29sZSBpcyBpbW11dGFibGUuXG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGNvbnNvbGUsIHtcbiAgICAgICAgaW5mbzogcHJvcHMsXG4gICAgICAgIGxvZzogcHJvcHMsXG4gICAgICAgIHdhcm46IHByb3BzLFxuICAgICAgICBlcnJvcjogcHJvcHMsXG4gICAgICAgIGdyb3VwOiBwcm9wcyxcbiAgICAgICAgZ3JvdXBDb2xsYXBzZWQ6IHByb3BzLFxuICAgICAgICBncm91cEVuZDogcHJvcHNcbiAgICAgIH0pO1xuICAgICAgLyogZXNsaW50LWVuYWJsZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmcgKi9cbiAgICB9XG5cbiAgICBkaXNhYmxlZERlcHRoKys7XG4gIH1cbn1cbmZ1bmN0aW9uIHJlZW5hYmxlTG9ncygpIHtcbiAge1xuICAgIGRpc2FibGVkRGVwdGgtLTtcblxuICAgIGlmIChkaXNhYmxlZERlcHRoID09PSAwKSB7XG4gICAgICAvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC1pbnRlcm5hbC9uby1wcm9kdWN0aW9uLWxvZ2dpbmcgKi9cbiAgICAgIHZhciBwcm9wcyA9IHtcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZVxuICAgICAgfTsgLy8gJEZsb3dGaXhNZSBGbG93IHRoaW5rcyBjb25zb2xlIGlzIGltbXV0YWJsZS5cblxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoY29uc29sZSwge1xuICAgICAgICBsb2c6IGFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgICAgICB2YWx1ZTogcHJldkxvZ1xuICAgICAgICB9KSxcbiAgICAgICAgaW5mbzogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2SW5mb1xuICAgICAgICB9KSxcbiAgICAgICAgd2FybjogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2V2FyblxuICAgICAgICB9KSxcbiAgICAgICAgZXJyb3I6IGFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgICAgICB2YWx1ZTogcHJldkVycm9yXG4gICAgICAgIH0pLFxuICAgICAgICBncm91cDogYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgICAgIHZhbHVlOiBwcmV2R3JvdXBcbiAgICAgICAgfSksXG4gICAgICAgIGdyb3VwQ29sbGFwc2VkOiBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgdmFsdWU6IHByZXZHcm91cENvbGxhcHNlZFxuICAgICAgICB9KSxcbiAgICAgICAgZ3JvdXBFbmQ6IGFzc2lnbih7fSwgcHJvcHMsIHtcbiAgICAgICAgICB2YWx1ZTogcHJldkdyb3VwRW5kXG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICAgIC8qIGVzbGludC1lbmFibGUgcmVhY3QtaW50ZXJuYWwvbm8tcHJvZHVjdGlvbi1sb2dnaW5nICovXG4gICAgfVxuXG4gICAgaWYgKGRpc2FibGVkRGVwdGggPCAwKSB7XG4gICAgICBlcnJvcignZGlzYWJsZWREZXB0aCBmZWxsIGJlbG93IHplcm8uICcgKyAnVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdC4gUGxlYXNlIGZpbGUgYW4gaXNzdWUuJyk7XG4gICAgfVxuICB9XG59XG5cbnZhciBSZWFjdEN1cnJlbnREaXNwYXRjaGVyID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuUmVhY3RDdXJyZW50RGlzcGF0Y2hlcjtcbnZhciBwcmVmaXg7XG5mdW5jdGlvbiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZShuYW1lLCBzb3VyY2UsIG93bmVyRm4pIHtcbiAge1xuICAgIGlmIChwcmVmaXggPT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gRXh0cmFjdCB0aGUgVk0gc3BlY2lmaWMgcHJlZml4IHVzZWQgYnkgZWFjaCBsaW5lLlxuICAgICAgdHJ5IHtcbiAgICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgdmFyIG1hdGNoID0geC5zdGFjay50cmltKCkubWF0Y2goL1xcbiggKihhdCApPykvKTtcbiAgICAgICAgcHJlZml4ID0gbWF0Y2ggJiYgbWF0Y2hbMV0gfHwgJyc7XG4gICAgICB9XG4gICAgfSAvLyBXZSB1c2UgdGhlIHByZWZpeCB0byBlbnN1cmUgb3VyIHN0YWNrcyBsaW5lIHVwIHdpdGggbmF0aXZlIHN0YWNrIGZyYW1lcy5cblxuXG4gICAgcmV0dXJuICdcXG4nICsgcHJlZml4ICsgbmFtZTtcbiAgfVxufVxudmFyIHJlZW50cnkgPSBmYWxzZTtcbnZhciBjb21wb25lbnRGcmFtZUNhY2hlO1xuXG57XG4gIHZhciBQb3NzaWJseVdlYWtNYXAgPSB0eXBlb2YgV2Vha01hcCA9PT0gJ2Z1bmN0aW9uJyA/IFdlYWtNYXAgOiBNYXA7XG4gIGNvbXBvbmVudEZyYW1lQ2FjaGUgPSBuZXcgUG9zc2libHlXZWFrTWFwKCk7XG59XG5cbmZ1bmN0aW9uIGRlc2NyaWJlTmF0aXZlQ29tcG9uZW50RnJhbWUoZm4sIGNvbnN0cnVjdCkge1xuICAvLyBJZiBzb21ldGhpbmcgYXNrZWQgZm9yIGEgc3RhY2sgaW5zaWRlIGEgZmFrZSByZW5kZXIsIGl0IHNob3VsZCBnZXQgaWdub3JlZC5cbiAgaWYgKCAhZm4gfHwgcmVlbnRyeSkge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHtcbiAgICB2YXIgZnJhbWUgPSBjb21wb25lbnRGcmFtZUNhY2hlLmdldChmbik7XG5cbiAgICBpZiAoZnJhbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZyYW1lO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjb250cm9sO1xuICByZWVudHJ5ID0gdHJ1ZTtcbiAgdmFyIHByZXZpb3VzUHJlcGFyZVN0YWNrVHJhY2UgPSBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZTsgLy8gJEZsb3dGaXhNZSBJdCBkb2VzIGFjY2VwdCB1bmRlZmluZWQuXG5cbiAgRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSB1bmRlZmluZWQ7XG4gIHZhciBwcmV2aW91c0Rpc3BhdGNoZXI7XG5cbiAge1xuICAgIHByZXZpb3VzRGlzcGF0Y2hlciA9IFJlYWN0Q3VycmVudERpc3BhdGNoZXIuY3VycmVudDsgLy8gU2V0IHRoZSBkaXNwYXRjaGVyIGluIERFViBiZWNhdXNlIHRoaXMgbWlnaHQgYmUgY2FsbCBpbiB0aGUgcmVuZGVyIGZ1bmN0aW9uXG4gICAgLy8gZm9yIHdhcm5pbmdzLlxuXG4gICAgUmVhY3RDdXJyZW50RGlzcGF0Y2hlci5jdXJyZW50ID0gbnVsbDtcbiAgICBkaXNhYmxlTG9ncygpO1xuICB9XG5cbiAgdHJ5IHtcbiAgICAvLyBUaGlzIHNob3VsZCB0aHJvdy5cbiAgICBpZiAoY29uc3RydWN0KSB7XG4gICAgICAvLyBTb21ldGhpbmcgc2hvdWxkIGJlIHNldHRpbmcgdGhlIHByb3BzIGluIHRoZSBjb25zdHJ1Y3Rvci5cbiAgICAgIHZhciBGYWtlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB0aHJvdyBFcnJvcigpO1xuICAgICAgfTsgLy8gJEZsb3dGaXhNZVxuXG5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShGYWtlLnByb3RvdHlwZSwgJ3Byb3BzJywge1xuICAgICAgICBzZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAvLyBXZSB1c2UgYSB0aHJvd2luZyBzZXR0ZXIgaW5zdGVhZCBvZiBmcm96ZW4gb3Igbm9uLXdyaXRhYmxlIHByb3BzXG4gICAgICAgICAgLy8gYmVjYXVzZSB0aGF0IHdvbid0IHRocm93IGluIGEgbm9uLXN0cmljdCBtb2RlIGZ1bmN0aW9uLlxuICAgICAgICAgIHRocm93IEVycm9yKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09ICdvYmplY3QnICYmIFJlZmxlY3QuY29uc3RydWN0KSB7XG4gICAgICAgIC8vIFdlIGNvbnN0cnVjdCBhIGRpZmZlcmVudCBjb250cm9sIGZvciB0aGlzIGNhc2UgdG8gaW5jbHVkZSBhbnkgZXh0cmFcbiAgICAgICAgLy8gZnJhbWVzIGFkZGVkIGJ5IHRoZSBjb25zdHJ1Y3QgY2FsbC5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBSZWZsZWN0LmNvbnN0cnVjdChGYWtlLCBbXSk7XG4gICAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgICBjb250cm9sID0geDtcbiAgICAgICAgfVxuXG4gICAgICAgIFJlZmxlY3QuY29uc3RydWN0KGZuLCBbXSwgRmFrZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIEZha2UuY2FsbCgpO1xuICAgICAgICB9IGNhdGNoICh4KSB7XG4gICAgICAgICAgY29udHJvbCA9IHg7XG4gICAgICAgIH1cblxuICAgICAgICBmbi5jYWxsKEZha2UucHJvdG90eXBlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgY29udHJvbCA9IHg7XG4gICAgICB9XG5cbiAgICAgIGZuKCk7XG4gICAgfVxuICB9IGNhdGNoIChzYW1wbGUpIHtcbiAgICAvLyBUaGlzIGlzIGlubGluZWQgbWFudWFsbHkgYmVjYXVzZSBjbG9zdXJlIGRvZXNuJ3QgZG8gaXQgZm9yIHVzLlxuICAgIGlmIChzYW1wbGUgJiYgY29udHJvbCAmJiB0eXBlb2Ygc2FtcGxlLnN0YWNrID09PSAnc3RyaW5nJykge1xuICAgICAgLy8gVGhpcyBleHRyYWN0cyB0aGUgZmlyc3QgZnJhbWUgZnJvbSB0aGUgc2FtcGxlIHRoYXQgaXNuJ3QgYWxzbyBpbiB0aGUgY29udHJvbC5cbiAgICAgIC8vIFNraXBwaW5nIG9uZSBmcmFtZSB0aGF0IHdlIGFzc3VtZSBpcyB0aGUgZnJhbWUgdGhhdCBjYWxscyB0aGUgdHdvLlxuICAgICAgdmFyIHNhbXBsZUxpbmVzID0gc2FtcGxlLnN0YWNrLnNwbGl0KCdcXG4nKTtcbiAgICAgIHZhciBjb250cm9sTGluZXMgPSBjb250cm9sLnN0YWNrLnNwbGl0KCdcXG4nKTtcbiAgICAgIHZhciBzID0gc2FtcGxlTGluZXMubGVuZ3RoIC0gMTtcbiAgICAgIHZhciBjID0gY29udHJvbExpbmVzLmxlbmd0aCAtIDE7XG5cbiAgICAgIHdoaWxlIChzID49IDEgJiYgYyA+PSAwICYmIHNhbXBsZUxpbmVzW3NdICE9PSBjb250cm9sTGluZXNbY10pIHtcbiAgICAgICAgLy8gV2UgZXhwZWN0IGF0IGxlYXN0IG9uZSBzdGFjayBmcmFtZSB0byBiZSBzaGFyZWQuXG4gICAgICAgIC8vIFR5cGljYWxseSB0aGlzIHdpbGwgYmUgdGhlIHJvb3QgbW9zdCBvbmUuIEhvd2V2ZXIsIHN0YWNrIGZyYW1lcyBtYXkgYmVcbiAgICAgICAgLy8gY3V0IG9mZiBkdWUgdG8gbWF4aW11bSBzdGFjayBsaW1pdHMuIEluIHRoaXMgY2FzZSwgb25lIG1heWJlIGN1dCBvZmZcbiAgICAgICAgLy8gZWFybGllciB0aGFuIHRoZSBvdGhlci4gV2UgYXNzdW1lIHRoYXQgdGhlIHNhbXBsZSBpcyBsb25nZXIgb3IgdGhlIHNhbWVcbiAgICAgICAgLy8gYW5kIHRoZXJlIGZvciBjdXQgb2ZmIGVhcmxpZXIuIFNvIHdlIHNob3VsZCBmaW5kIHRoZSByb290IG1vc3QgZnJhbWUgaW5cbiAgICAgICAgLy8gdGhlIHNhbXBsZSBzb21ld2hlcmUgaW4gdGhlIGNvbnRyb2wuXG4gICAgICAgIGMtLTtcbiAgICAgIH1cblxuICAgICAgZm9yICg7IHMgPj0gMSAmJiBjID49IDA7IHMtLSwgYy0tKSB7XG4gICAgICAgIC8vIE5leHQgd2UgZmluZCB0aGUgZmlyc3Qgb25lIHRoYXQgaXNuJ3QgdGhlIHNhbWUgd2hpY2ggc2hvdWxkIGJlIHRoZVxuICAgICAgICAvLyBmcmFtZSB0aGF0IGNhbGxlZCBvdXIgc2FtcGxlIGZ1bmN0aW9uIGFuZCB0aGUgY29udHJvbC5cbiAgICAgICAgaWYgKHNhbXBsZUxpbmVzW3NdICE9PSBjb250cm9sTGluZXNbY10pIHtcbiAgICAgICAgICAvLyBJbiBWOCwgdGhlIGZpcnN0IGxpbmUgaXMgZGVzY3JpYmluZyB0aGUgbWVzc2FnZSBidXQgb3RoZXIgVk1zIGRvbid0LlxuICAgICAgICAgIC8vIElmIHdlJ3JlIGFib3V0IHRvIHJldHVybiB0aGUgZmlyc3QgbGluZSwgYW5kIHRoZSBjb250cm9sIGlzIGFsc28gb24gdGhlIHNhbWVcbiAgICAgICAgICAvLyBsaW5lLCB0aGF0J3MgYSBwcmV0dHkgZ29vZCBpbmRpY2F0b3IgdGhhdCBvdXIgc2FtcGxlIHRocmV3IGF0IHNhbWUgbGluZSBhc1xuICAgICAgICAgIC8vIHRoZSBjb250cm9sLiBJLmUuIGJlZm9yZSB3ZSBlbnRlcmVkIHRoZSBzYW1wbGUgZnJhbWUuIFNvIHdlIGlnbm9yZSB0aGlzIHJlc3VsdC5cbiAgICAgICAgICAvLyBUaGlzIGNhbiBoYXBwZW4gaWYgeW91IHBhc3NlZCBhIGNsYXNzIHRvIGZ1bmN0aW9uIGNvbXBvbmVudCwgb3Igbm9uLWZ1bmN0aW9uLlxuICAgICAgICAgIGlmIChzICE9PSAxIHx8IGMgIT09IDEpIHtcbiAgICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgICAgcy0tO1xuICAgICAgICAgICAgICBjLS07IC8vIFdlIG1heSBzdGlsbCBoYXZlIHNpbWlsYXIgaW50ZXJtZWRpYXRlIGZyYW1lcyBmcm9tIHRoZSBjb25zdHJ1Y3QgY2FsbC5cbiAgICAgICAgICAgICAgLy8gVGhlIG5leHQgb25lIHRoYXQgaXNuJ3QgdGhlIHNhbWUgc2hvdWxkIGJlIG91ciBtYXRjaCB0aG91Z2guXG5cbiAgICAgICAgICAgICAgaWYgKGMgPCAwIHx8IHNhbXBsZUxpbmVzW3NdICE9PSBjb250cm9sTGluZXNbY10pIHtcbiAgICAgICAgICAgICAgICAvLyBWOCBhZGRzIGEgXCJuZXdcIiBwcmVmaXggZm9yIG5hdGl2ZSBjbGFzc2VzLiBMZXQncyByZW1vdmUgaXQgdG8gbWFrZSBpdCBwcmV0dGllci5cbiAgICAgICAgICAgICAgICB2YXIgX2ZyYW1lID0gJ1xcbicgKyBzYW1wbGVMaW5lc1tzXS5yZXBsYWNlKCcgYXQgbmV3ICcsICcgYXQgJyk7IC8vIElmIG91ciBjb21wb25lbnQgZnJhbWUgaXMgbGFiZWxlZCBcIjxhbm9ueW1vdXM+XCJcbiAgICAgICAgICAgICAgICAvLyBidXQgd2UgaGF2ZSBhIHVzZXItcHJvdmlkZWQgXCJkaXNwbGF5TmFtZVwiXG4gICAgICAgICAgICAgICAgLy8gc3BsaWNlIGl0IGluIHRvIG1ha2UgdGhlIHN0YWNrIG1vcmUgcmVhZGFibGUuXG5cblxuICAgICAgICAgICAgICAgIGlmIChmbi5kaXNwbGF5TmFtZSAmJiBfZnJhbWUuaW5jbHVkZXMoJzxhbm9ueW1vdXM+JykpIHtcbiAgICAgICAgICAgICAgICAgIF9mcmFtZSA9IF9mcmFtZS5yZXBsYWNlKCc8YW5vbnltb3VzPicsIGZuLmRpc3BsYXlOYW1lKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudEZyYW1lQ2FjaGUuc2V0KGZuLCBfZnJhbWUpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gLy8gUmV0dXJuIHRoZSBsaW5lIHdlIGZvdW5kLlxuXG5cbiAgICAgICAgICAgICAgICByZXR1cm4gX2ZyYW1lO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IHdoaWxlIChzID49IDEgJiYgYyA+PSAwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICByZWVudHJ5ID0gZmFsc2U7XG5cbiAgICB7XG4gICAgICBSZWFjdEN1cnJlbnREaXNwYXRjaGVyLmN1cnJlbnQgPSBwcmV2aW91c0Rpc3BhdGNoZXI7XG4gICAgICByZWVuYWJsZUxvZ3MoKTtcbiAgICB9XG5cbiAgICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IHByZXZpb3VzUHJlcGFyZVN0YWNrVHJhY2U7XG4gIH0gLy8gRmFsbGJhY2sgdG8ganVzdCB1c2luZyB0aGUgbmFtZSBpZiB3ZSBjb3VsZG4ndCBtYWtlIGl0IHRocm93LlxuXG5cbiAgdmFyIG5hbWUgPSBmbiA/IGZuLmRpc3BsYXlOYW1lIHx8IGZuLm5hbWUgOiAnJztcbiAgdmFyIHN5bnRoZXRpY0ZyYW1lID0gbmFtZSA/IGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKG5hbWUpIDogJyc7XG5cbiAge1xuICAgIGlmICh0eXBlb2YgZm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNvbXBvbmVudEZyYW1lQ2FjaGUuc2V0KGZuLCBzeW50aGV0aWNGcmFtZSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHN5bnRoZXRpY0ZyYW1lO1xufVxuZnVuY3Rpb24gZGVzY3JpYmVGdW5jdGlvbkNvbXBvbmVudEZyYW1lKGZuLCBzb3VyY2UsIG93bmVyRm4pIHtcbiAge1xuICAgIHJldHVybiBkZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lKGZuLCBmYWxzZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2hvdWxkQ29uc3RydWN0KENvbXBvbmVudCkge1xuICB2YXIgcHJvdG90eXBlID0gQ29tcG9uZW50LnByb3RvdHlwZTtcbiAgcmV0dXJuICEhKHByb3RvdHlwZSAmJiBwcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCk7XG59XG5cbmZ1bmN0aW9uIGRlc2NyaWJlVW5rbm93bkVsZW1lbnRUeXBlRnJhbWVJbkRFVih0eXBlLCBzb3VyY2UsIG93bmVyRm4pIHtcblxuICBpZiAodHlwZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nKSB7XG4gICAge1xuICAgICAgcmV0dXJuIGRlc2NyaWJlTmF0aXZlQ29tcG9uZW50RnJhbWUodHlwZSwgc2hvdWxkQ29uc3RydWN0KHR5cGUpKTtcbiAgICB9XG4gIH1cblxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKHR5cGUpO1xuICB9XG5cbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9UWVBFOlxuICAgICAgcmV0dXJuIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKCdTdXNwZW5zZScpO1xuXG4gICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEU6XG4gICAgICByZXR1cm4gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUoJ1N1c3BlbnNlTGlzdCcpO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnb2JqZWN0Jykge1xuICAgIHN3aXRjaCAodHlwZS4kJHR5cGVvZikge1xuICAgICAgY2FzZSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFOlxuICAgICAgICByZXR1cm4gZGVzY3JpYmVGdW5jdGlvbkNvbXBvbmVudEZyYW1lKHR5cGUucmVuZGVyKTtcblxuICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgIC8vIE1lbW8gbWF5IGNvbnRhaW4gYW55IGNvbXBvbmVudCB0eXBlIHNvIHdlIHJlY3Vyc2l2ZWx5IHJlc29sdmUgaXQuXG4gICAgICAgIHJldHVybiBkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYodHlwZS50eXBlLCBzb3VyY2UsIG93bmVyRm4pO1xuXG4gICAgICBjYXNlIFJFQUNUX0xBWllfVFlQRTpcbiAgICAgICAge1xuICAgICAgICAgIHZhciBsYXp5Q29tcG9uZW50ID0gdHlwZTtcbiAgICAgICAgICB2YXIgcGF5bG9hZCA9IGxhenlDb21wb25lbnQuX3BheWxvYWQ7XG4gICAgICAgICAgdmFyIGluaXQgPSBsYXp5Q29tcG9uZW50Ll9pbml0O1xuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIExhenkgbWF5IGNvbnRhaW4gYW55IGNvbXBvbmVudCB0eXBlIHNvIHdlIHJlY3Vyc2l2ZWx5IHJlc29sdmUgaXQuXG4gICAgICAgICAgICByZXR1cm4gZGVzY3JpYmVVbmtub3duRWxlbWVudFR5cGVGcmFtZUluREVWKGluaXQocGF5bG9hZCksIHNvdXJjZSwgb3duZXJGbik7XG4gICAgICAgICAgfSBjYXRjaCAoeCkge31cbiAgICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAnJztcbn1cblxudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxudmFyIGxvZ2dlZFR5cGVGYWlsdXJlcyA9IHt9O1xudmFyIFJlYWN0RGVidWdDdXJyZW50RnJhbWUgPSBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdERlYnVnQ3VycmVudEZyYW1lO1xuXG5mdW5jdGlvbiBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudChlbGVtZW50KSB7XG4gIHtcbiAgICBpZiAoZWxlbWVudCkge1xuICAgICAgdmFyIG93bmVyID0gZWxlbWVudC5fb3duZXI7XG4gICAgICB2YXIgc3RhY2sgPSBkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYoZWxlbWVudC50eXBlLCBlbGVtZW50Ll9zb3VyY2UsIG93bmVyID8gb3duZXIudHlwZSA6IG51bGwpO1xuICAgICAgUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZS5zZXRFeHRyYVN0YWNrRnJhbWUoc3RhY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICBSZWFjdERlYnVnQ3VycmVudEZyYW1lLnNldEV4dHJhU3RhY2tGcmFtZShudWxsKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2tQcm9wVHlwZXModHlwZVNwZWNzLCB2YWx1ZXMsIGxvY2F0aW9uLCBjb21wb25lbnROYW1lLCBlbGVtZW50KSB7XG4gIHtcbiAgICAvLyAkRmxvd0ZpeE1lIFRoaXMgaXMgb2theSBidXQgRmxvdyBkb2Vzbid0IGtub3cgaXQuXG4gICAgdmFyIGhhcyA9IEZ1bmN0aW9uLmNhbGwuYmluZChoYXNPd25Qcm9wZXJ0eSk7XG5cbiAgICBmb3IgKHZhciB0eXBlU3BlY05hbWUgaW4gdHlwZVNwZWNzKSB7XG4gICAgICBpZiAoaGFzKHR5cGVTcGVjcywgdHlwZVNwZWNOYW1lKSkge1xuICAgICAgICB2YXIgZXJyb3IkMSA9IHZvaWQgMDsgLy8gUHJvcCB0eXBlIHZhbGlkYXRpb24gbWF5IHRocm93LiBJbiBjYXNlIHRoZXkgZG8sIHdlIGRvbid0IHdhbnQgdG9cbiAgICAgICAgLy8gZmFpbCB0aGUgcmVuZGVyIHBoYXNlIHdoZXJlIGl0IGRpZG4ndCBmYWlsIGJlZm9yZS4gU28gd2UgbG9nIGl0LlxuICAgICAgICAvLyBBZnRlciB0aGVzZSBoYXZlIGJlZW4gY2xlYW5lZCB1cCwgd2UnbGwgbGV0IHRoZW0gdGhyb3cuXG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgYW4gaW52YXJpYW50IHRoYXQgZ2V0cyBjYXVnaHQuIEl0J3MgdGhlIHNhbWVcbiAgICAgICAgICAvLyBiZWhhdmlvciBhcyB3aXRob3V0IHRoaXMgc3RhdGVtZW50IGV4Y2VwdCB3aXRoIGEgYmV0dGVyIG1lc3NhZ2UuXG4gICAgICAgICAgaWYgKHR5cGVvZiB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWludGVybmFsL3Byb2QtZXJyb3ItY29kZXNcbiAgICAgICAgICAgIHZhciBlcnIgPSBFcnJvcigoY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnKSArICc6ICcgKyBsb2NhdGlvbiArICcgdHlwZSBgJyArIHR5cGVTcGVjTmFtZSArICdgIGlzIGludmFsaWQ7ICcgKyAnaXQgbXVzdCBiZSBhIGZ1bmN0aW9uLCB1c3VhbGx5IGZyb20gdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLCBidXQgcmVjZWl2ZWQgYCcgKyB0eXBlb2YgdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0gKyAnYC4nICsgJ1RoaXMgb2Z0ZW4gaGFwcGVucyBiZWNhdXNlIG9mIHR5cG9zIHN1Y2ggYXMgYFByb3BUeXBlcy5mdW5jdGlvbmAgaW5zdGVhZCBvZiBgUHJvcFR5cGVzLmZ1bmNgLicpO1xuICAgICAgICAgICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZXJyb3IkMSA9IHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdKHZhbHVlcywgdHlwZVNwZWNOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgbnVsbCwgJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJyk7XG4gICAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgZXJyb3IkMSA9IGV4O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVycm9yJDEgJiYgIShlcnJvciQxIGluc3RhbmNlb2YgRXJyb3IpKSB7XG4gICAgICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQoZWxlbWVudCk7XG5cbiAgICAgICAgICBlcnJvcignJXM6IHR5cGUgc3BlY2lmaWNhdGlvbiBvZiAlcycgKyAnIGAlc2AgaXMgaW52YWxpZDsgdGhlIHR5cGUgY2hlY2tlciAnICsgJ2Z1bmN0aW9uIG11c3QgcmV0dXJuIGBudWxsYCBvciBhbiBgRXJyb3JgIGJ1dCByZXR1cm5lZCBhICVzLiAnICsgJ1lvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gcGFzcyBhbiBhcmd1bWVudCB0byB0aGUgdHlwZSBjaGVja2VyICcgKyAnY3JlYXRvciAoYXJyYXlPZiwgaW5zdGFuY2VPZiwgb2JqZWN0T2YsIG9uZU9mLCBvbmVPZlR5cGUsIGFuZCAnICsgJ3NoYXBlIGFsbCByZXF1aXJlIGFuIGFyZ3VtZW50KS4nLCBjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIGxvY2F0aW9uLCB0eXBlU3BlY05hbWUsIHR5cGVvZiBlcnJvciQxKTtcblxuICAgICAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVycm9yJDEgaW5zdGFuY2VvZiBFcnJvciAmJiAhKGVycm9yJDEubWVzc2FnZSBpbiBsb2dnZWRUeXBlRmFpbHVyZXMpKSB7XG4gICAgICAgICAgLy8gT25seSBtb25pdG9yIHRoaXMgZmFpbHVyZSBvbmNlIGJlY2F1c2UgdGhlcmUgdGVuZHMgdG8gYmUgYSBsb3Qgb2YgdGhlXG4gICAgICAgICAgLy8gc2FtZSBlcnJvci5cbiAgICAgICAgICBsb2dnZWRUeXBlRmFpbHVyZXNbZXJyb3IkMS5tZXNzYWdlXSA9IHRydWU7XG4gICAgICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQoZWxlbWVudCk7XG5cbiAgICAgICAgICBlcnJvcignRmFpbGVkICVzIHR5cGU6ICVzJywgbG9jYXRpb24sIGVycm9yJDEubWVzc2FnZSk7XG5cbiAgICAgICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudChudWxsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG52YXIgaXNBcnJheUltcGwgPSBBcnJheS5pc0FycmF5OyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVkZWNsYXJlXG5cbmZ1bmN0aW9uIGlzQXJyYXkoYSkge1xuICByZXR1cm4gaXNBcnJheUltcGwoYSk7XG59XG5cbi8qXG4gKiBUaGUgYCcnICsgdmFsdWVgIHBhdHRlcm4gKHVzZWQgaW4gaW4gcGVyZi1zZW5zaXRpdmUgY29kZSkgdGhyb3dzIGZvciBTeW1ib2xcbiAqIGFuZCBUZW1wb3JhbC4qIHR5cGVzLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvMjIwNjQuXG4gKlxuICogVGhlIGZ1bmN0aW9ucyBpbiB0aGlzIG1vZHVsZSB3aWxsIHRocm93IGFuIGVhc2llci10by11bmRlcnN0YW5kLFxuICogZWFzaWVyLXRvLWRlYnVnIGV4Y2VwdGlvbiB3aXRoIGEgY2xlYXIgZXJyb3JzIG1lc3NhZ2UgbWVzc2FnZSBleHBsYWluaW5nIHRoZVxuICogcHJvYmxlbS4gKEluc3RlYWQgb2YgYSBjb25mdXNpbmcgZXhjZXB0aW9uIHRocm93biBpbnNpZGUgdGhlIGltcGxlbWVudGF0aW9uXG4gKiBvZiB0aGUgYHZhbHVlYCBvYmplY3QpLlxuICovXG4vLyAkRmxvd0ZpeE1lIG9ubHkgY2FsbGVkIGluIERFViwgc28gdm9pZCByZXR1cm4gaXMgbm90IHBvc3NpYmxlLlxuZnVuY3Rpb24gdHlwZU5hbWUodmFsdWUpIHtcbiAge1xuICAgIC8vIHRvU3RyaW5nVGFnIGlzIG5lZWRlZCBmb3IgbmFtZXNwYWNlZCB0eXBlcyBsaWtlIFRlbXBvcmFsLkluc3RhbnRcbiAgICB2YXIgaGFzVG9TdHJpbmdUYWcgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC50b1N0cmluZ1RhZztcbiAgICB2YXIgdHlwZSA9IGhhc1RvU3RyaW5nVGFnICYmIHZhbHVlW1N5bWJvbC50b1N0cmluZ1RhZ10gfHwgdmFsdWUuY29uc3RydWN0b3IubmFtZSB8fCAnT2JqZWN0JztcbiAgICByZXR1cm4gdHlwZTtcbiAgfVxufSAvLyAkRmxvd0ZpeE1lIG9ubHkgY2FsbGVkIGluIERFViwgc28gdm9pZCByZXR1cm4gaXMgbm90IHBvc3NpYmxlLlxuXG5cbmZ1bmN0aW9uIHdpbGxDb2VyY2lvblRocm93KHZhbHVlKSB7XG4gIHtcbiAgICB0cnkge1xuICAgICAgdGVzdFN0cmluZ0NvZXJjaW9uKHZhbHVlKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdGVzdFN0cmluZ0NvZXJjaW9uKHZhbHVlKSB7XG4gIC8vIElmIHlvdSBlbmRlZCB1cCBoZXJlIGJ5IGZvbGxvd2luZyBhbiBleGNlcHRpb24gY2FsbCBzdGFjaywgaGVyZSdzIHdoYXQnc1xuICAvLyBoYXBwZW5lZDogeW91IHN1cHBsaWVkIGFuIG9iamVjdCBvciBzeW1ib2wgdmFsdWUgdG8gUmVhY3QgKGFzIGEgcHJvcCwga2V5LFxuICAvLyBET00gYXR0cmlidXRlLCBDU1MgcHJvcGVydHksIHN0cmluZyByZWYsIGV0Yy4pIGFuZCB3aGVuIFJlYWN0IHRyaWVkIHRvXG4gIC8vIGNvZXJjZSBpdCB0byBhIHN0cmluZyB1c2luZyBgJycgKyB2YWx1ZWAsIGFuIGV4Y2VwdGlvbiB3YXMgdGhyb3duLlxuICAvL1xuICAvLyBUaGUgbW9zdCBjb21tb24gdHlwZXMgdGhhdCB3aWxsIGNhdXNlIHRoaXMgZXhjZXB0aW9uIGFyZSBgU3ltYm9sYCBpbnN0YW5jZXNcbiAgLy8gYW5kIFRlbXBvcmFsIG9iamVjdHMgbGlrZSBgVGVtcG9yYWwuSW5zdGFudGAuIEJ1dCBhbnkgb2JqZWN0IHRoYXQgaGFzIGFcbiAgLy8gYHZhbHVlT2ZgIG9yIGBbU3ltYm9sLnRvUHJpbWl0aXZlXWAgbWV0aG9kIHRoYXQgdGhyb3dzIHdpbGwgYWxzbyBjYXVzZSB0aGlzXG4gIC8vIGV4Y2VwdGlvbi4gKExpYnJhcnkgYXV0aG9ycyBkbyB0aGlzIHRvIHByZXZlbnQgdXNlcnMgZnJvbSB1c2luZyBidWlsdC1pblxuICAvLyBudW1lcmljIG9wZXJhdG9ycyBsaWtlIGArYCBvciBjb21wYXJpc29uIG9wZXJhdG9ycyBsaWtlIGA+PWAgYmVjYXVzZSBjdXN0b21cbiAgLy8gbWV0aG9kcyBhcmUgbmVlZGVkIHRvIHBlcmZvcm0gYWNjdXJhdGUgYXJpdGhtZXRpYyBvciBjb21wYXJpc29uLilcbiAgLy9cbiAgLy8gVG8gZml4IHRoZSBwcm9ibGVtLCBjb2VyY2UgdGhpcyBvYmplY3Qgb3Igc3ltYm9sIHZhbHVlIHRvIGEgc3RyaW5nIGJlZm9yZVxuICAvLyBwYXNzaW5nIGl0IHRvIFJlYWN0LiBUaGUgbW9zdCByZWxpYWJsZSB3YXkgaXMgdXN1YWxseSBgU3RyaW5nKHZhbHVlKWAuXG4gIC8vXG4gIC8vIFRvIGZpbmQgd2hpY2ggdmFsdWUgaXMgdGhyb3dpbmcsIGNoZWNrIHRoZSBicm93c2VyIG9yIGRlYnVnZ2VyIGNvbnNvbGUuXG4gIC8vIEJlZm9yZSB0aGlzIGV4Y2VwdGlvbiB3YXMgdGhyb3duLCB0aGVyZSBzaG91bGQgYmUgYGNvbnNvbGUuZXJyb3JgIG91dHB1dFxuICAvLyB0aGF0IHNob3dzIHRoZSB0eXBlIChTeW1ib2wsIFRlbXBvcmFsLlBsYWluRGF0ZSwgZXRjLikgdGhhdCBjYXVzZWQgdGhlXG4gIC8vIHByb2JsZW0gYW5kIGhvdyB0aGF0IHR5cGUgd2FzIHVzZWQ6IGtleSwgYXRycmlidXRlLCBpbnB1dCB2YWx1ZSBwcm9wLCBldGMuXG4gIC8vIEluIG1vc3QgY2FzZXMsIHRoaXMgY29uc29sZSBvdXRwdXQgYWxzbyBzaG93cyB0aGUgY29tcG9uZW50IGFuZCBpdHNcbiAgLy8gYW5jZXN0b3IgY29tcG9uZW50cyB3aGVyZSB0aGUgZXhjZXB0aW9uIGhhcHBlbmVkLlxuICAvL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaW50ZXJuYWwvc2FmZS1zdHJpbmctY29lcmNpb25cbiAgcmV0dXJuICcnICsgdmFsdWU7XG59XG5mdW5jdGlvbiBjaGVja0tleVN0cmluZ0NvZXJjaW9uKHZhbHVlKSB7XG4gIHtcbiAgICBpZiAod2lsbENvZXJjaW9uVGhyb3codmFsdWUpKSB7XG4gICAgICBlcnJvcignVGhlIHByb3ZpZGVkIGtleSBpcyBhbiB1bnN1cHBvcnRlZCB0eXBlICVzLicgKyAnIFRoaXMgdmFsdWUgbXVzdCBiZSBjb2VyY2VkIHRvIGEgc3RyaW5nIGJlZm9yZSBiZWZvcmUgdXNpbmcgaXQgaGVyZS4nLCB0eXBlTmFtZSh2YWx1ZSkpO1xuXG4gICAgICByZXR1cm4gdGVzdFN0cmluZ0NvZXJjaW9uKHZhbHVlKTsgLy8gdGhyb3cgKHRvIGhlbHAgY2FsbGVycyBmaW5kIHRyb3VibGVzaG9vdGluZyBjb21tZW50cylcbiAgICB9XG4gIH1cbn1cblxudmFyIFJlYWN0Q3VycmVudE93bmVyID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuUmVhY3RDdXJyZW50T3duZXI7XG52YXIgUkVTRVJWRURfUFJPUFMgPSB7XG4gIGtleTogdHJ1ZSxcbiAgcmVmOiB0cnVlLFxuICBfX3NlbGY6IHRydWUsXG4gIF9fc291cmNlOiB0cnVlXG59O1xudmFyIHNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duO1xudmFyIHNwZWNpYWxQcm9wUmVmV2FybmluZ1Nob3duO1xudmFyIGRpZFdhcm5BYm91dFN0cmluZ1JlZnM7XG5cbntcbiAgZGlkV2FybkFib3V0U3RyaW5nUmVmcyA9IHt9O1xufVxuXG5mdW5jdGlvbiBoYXNWYWxpZFJlZihjb25maWcpIHtcbiAge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgJ3JlZicpKSB7XG4gICAgICB2YXIgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjb25maWcsICdyZWYnKS5nZXQ7XG5cbiAgICAgIGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29uZmlnLnJlZiAhPT0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBoYXNWYWxpZEtleShjb25maWcpIHtcbiAge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgJ2tleScpKSB7XG4gICAgICB2YXIgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjb25maWcsICdrZXknKS5nZXQ7XG5cbiAgICAgIGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY29uZmlnLmtleSAhPT0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiB3YXJuSWZTdHJpbmdSZWZDYW5ub3RCZUF1dG9Db252ZXJ0ZWQoY29uZmlnLCBzZWxmKSB7XG4gIHtcbiAgICBpZiAodHlwZW9mIGNvbmZpZy5yZWYgPT09ICdzdHJpbmcnICYmIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgJiYgc2VsZiAmJiBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LnN0YXRlTm9kZSAhPT0gc2VsZikge1xuICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC50eXBlKTtcblxuICAgICAgaWYgKCFkaWRXYXJuQWJvdXRTdHJpbmdSZWZzW2NvbXBvbmVudE5hbWVdKSB7XG4gICAgICAgIGVycm9yKCdDb21wb25lbnQgXCIlc1wiIGNvbnRhaW5zIHRoZSBzdHJpbmcgcmVmIFwiJXNcIi4gJyArICdTdXBwb3J0IGZvciBzdHJpbmcgcmVmcyB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgbWFqb3IgcmVsZWFzZS4gJyArICdUaGlzIGNhc2UgY2Fubm90IGJlIGF1dG9tYXRpY2FsbHkgY29udmVydGVkIHRvIGFuIGFycm93IGZ1bmN0aW9uLiAnICsgJ1dlIGFzayB5b3UgdG8gbWFudWFsbHkgZml4IHRoaXMgY2FzZSBieSB1c2luZyB1c2VSZWYoKSBvciBjcmVhdGVSZWYoKSBpbnN0ZWFkLiAnICsgJ0xlYXJuIG1vcmUgYWJvdXQgdXNpbmcgcmVmcyBzYWZlbHkgaGVyZTogJyArICdodHRwczovL3JlYWN0anMub3JnL2xpbmsvc3RyaWN0LW1vZGUtc3RyaW5nLXJlZicsIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZShSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LnR5cGUpLCBjb25maWcucmVmKTtcblxuICAgICAgICBkaWRXYXJuQWJvdXRTdHJpbmdSZWZzW2NvbXBvbmVudE5hbWVdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVmaW5lS2V5UHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1lKSB7XG4gIHtcbiAgICB2YXIgd2FybkFib3V0QWNjZXNzaW5nS2V5ID0gZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFzcGVjaWFsUHJvcEtleVdhcm5pbmdTaG93bikge1xuICAgICAgICBzcGVjaWFsUHJvcEtleVdhcm5pbmdTaG93biA9IHRydWU7XG5cbiAgICAgICAgZXJyb3IoJyVzOiBga2V5YCBpcyBub3QgYSBwcm9wLiBUcnlpbmcgdG8gYWNjZXNzIGl0IHdpbGwgcmVzdWx0ICcgKyAnaW4gYHVuZGVmaW5lZGAgYmVpbmcgcmV0dXJuZWQuIElmIHlvdSBuZWVkIHRvIGFjY2VzcyB0aGUgc2FtZSAnICsgJ3ZhbHVlIHdpdGhpbiB0aGUgY2hpbGQgY29tcG9uZW50LCB5b3Ugc2hvdWxkIHBhc3MgaXQgYXMgYSBkaWZmZXJlbnQgJyArICdwcm9wLiAoaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL3NwZWNpYWwtcHJvcHMpJywgZGlzcGxheU5hbWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB3YXJuQWJvdXRBY2Nlc3NpbmdLZXkuaXNSZWFjdFdhcm5pbmcgPSB0cnVlO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9wcywgJ2tleScsIHtcbiAgICAgIGdldDogd2FybkFib3V0QWNjZXNzaW5nS2V5LFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVmaW5lUmVmUHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1lKSB7XG4gIHtcbiAgICB2YXIgd2FybkFib3V0QWNjZXNzaW5nUmVmID0gZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93bikge1xuICAgICAgICBzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93biA9IHRydWU7XG5cbiAgICAgICAgZXJyb3IoJyVzOiBgcmVmYCBpcyBub3QgYSBwcm9wLiBUcnlpbmcgdG8gYWNjZXNzIGl0IHdpbGwgcmVzdWx0ICcgKyAnaW4gYHVuZGVmaW5lZGAgYmVpbmcgcmV0dXJuZWQuIElmIHlvdSBuZWVkIHRvIGFjY2VzcyB0aGUgc2FtZSAnICsgJ3ZhbHVlIHdpdGhpbiB0aGUgY2hpbGQgY29tcG9uZW50LCB5b3Ugc2hvdWxkIHBhc3MgaXQgYXMgYSBkaWZmZXJlbnQgJyArICdwcm9wLiAoaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL3NwZWNpYWwtcHJvcHMpJywgZGlzcGxheU5hbWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB3YXJuQWJvdXRBY2Nlc3NpbmdSZWYuaXNSZWFjdFdhcm5pbmcgPSB0cnVlO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9wcywgJ3JlZicsIHtcbiAgICAgIGdldDogd2FybkFib3V0QWNjZXNzaW5nUmVmLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gIH1cbn1cbi8qKlxuICogRmFjdG9yeSBtZXRob2QgdG8gY3JlYXRlIGEgbmV3IFJlYWN0IGVsZW1lbnQuIFRoaXMgbm8gbG9uZ2VyIGFkaGVyZXMgdG9cbiAqIHRoZSBjbGFzcyBwYXR0ZXJuLCBzbyBkbyBub3QgdXNlIG5ldyB0byBjYWxsIGl0LiBBbHNvLCBpbnN0YW5jZW9mIGNoZWNrXG4gKiB3aWxsIG5vdCB3b3JrLiBJbnN0ZWFkIHRlc3QgJCR0eXBlb2YgZmllbGQgYWdhaW5zdCBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50JykgdG8gY2hlY2tcbiAqIGlmIHNvbWV0aGluZyBpcyBhIFJlYWN0IEVsZW1lbnQuXG4gKlxuICogQHBhcmFtIHsqfSB0eXBlXG4gKiBAcGFyYW0geyp9IHByb3BzXG4gKiBAcGFyYW0geyp9IGtleVxuICogQHBhcmFtIHtzdHJpbmd8b2JqZWN0fSByZWZcbiAqIEBwYXJhbSB7Kn0gb3duZXJcbiAqIEBwYXJhbSB7Kn0gc2VsZiBBICp0ZW1wb3JhcnkqIGhlbHBlciB0byBkZXRlY3QgcGxhY2VzIHdoZXJlIGB0aGlzYCBpc1xuICogZGlmZmVyZW50IGZyb20gdGhlIGBvd25lcmAgd2hlbiBSZWFjdC5jcmVhdGVFbGVtZW50IGlzIGNhbGxlZCwgc28gdGhhdCB3ZVxuICogY2FuIHdhcm4uIFdlIHdhbnQgdG8gZ2V0IHJpZCBvZiBvd25lciBhbmQgcmVwbGFjZSBzdHJpbmcgYHJlZmBzIHdpdGggYXJyb3dcbiAqIGZ1bmN0aW9ucywgYW5kIGFzIGxvbmcgYXMgYHRoaXNgIGFuZCBvd25lciBhcmUgdGhlIHNhbWUsIHRoZXJlIHdpbGwgYmUgbm9cbiAqIGNoYW5nZSBpbiBiZWhhdmlvci5cbiAqIEBwYXJhbSB7Kn0gc291cmNlIEFuIGFubm90YXRpb24gb2JqZWN0IChhZGRlZCBieSBhIHRyYW5zcGlsZXIgb3Igb3RoZXJ3aXNlKVxuICogaW5kaWNhdGluZyBmaWxlbmFtZSwgbGluZSBudW1iZXIsIGFuZC9vciBvdGhlciBpbmZvcm1hdGlvbi5cbiAqIEBpbnRlcm5hbFxuICovXG5cblxudmFyIFJlYWN0RWxlbWVudCA9IGZ1bmN0aW9uICh0eXBlLCBrZXksIHJlZiwgc2VsZiwgc291cmNlLCBvd25lciwgcHJvcHMpIHtcbiAgdmFyIGVsZW1lbnQgPSB7XG4gICAgLy8gVGhpcyB0YWcgYWxsb3dzIHVzIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoaXMgYXMgYSBSZWFjdCBFbGVtZW50XG4gICAgJCR0eXBlb2Y6IFJFQUNUX0VMRU1FTlRfVFlQRSxcbiAgICAvLyBCdWlsdC1pbiBwcm9wZXJ0aWVzIHRoYXQgYmVsb25nIG9uIHRoZSBlbGVtZW50XG4gICAgdHlwZTogdHlwZSxcbiAgICBrZXk6IGtleSxcbiAgICByZWY6IHJlZixcbiAgICBwcm9wczogcHJvcHMsXG4gICAgLy8gUmVjb3JkIHRoZSBjb21wb25lbnQgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIHRoaXMgZWxlbWVudC5cbiAgICBfb3duZXI6IG93bmVyXG4gIH07XG5cbiAge1xuICAgIC8vIFRoZSB2YWxpZGF0aW9uIGZsYWcgaXMgY3VycmVudGx5IG11dGF0aXZlLiBXZSBwdXQgaXQgb25cbiAgICAvLyBhbiBleHRlcm5hbCBiYWNraW5nIHN0b3JlIHNvIHRoYXQgd2UgY2FuIGZyZWV6ZSB0aGUgd2hvbGUgb2JqZWN0LlxuICAgIC8vIFRoaXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBXZWFrTWFwIG9uY2UgdGhleSBhcmUgaW1wbGVtZW50ZWQgaW5cbiAgICAvLyBjb21tb25seSB1c2VkIGRldmVsb3BtZW50IGVudmlyb25tZW50cy5cbiAgICBlbGVtZW50Ll9zdG9yZSA9IHt9OyAvLyBUbyBtYWtlIGNvbXBhcmluZyBSZWFjdEVsZW1lbnRzIGVhc2llciBmb3IgdGVzdGluZyBwdXJwb3Nlcywgd2UgbWFrZVxuICAgIC8vIHRoZSB2YWxpZGF0aW9uIGZsYWcgbm9uLWVudW1lcmFibGUgKHdoZXJlIHBvc3NpYmxlLCB3aGljaCBzaG91bGRcbiAgICAvLyBpbmNsdWRlIGV2ZXJ5IGVudmlyb25tZW50IHdlIHJ1biB0ZXN0cyBpbiksIHNvIHRoZSB0ZXN0IGZyYW1ld29ya1xuICAgIC8vIGlnbm9yZXMgaXQuXG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudC5fc3RvcmUsICd2YWxpZGF0ZWQnLCB7XG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgIHZhbHVlOiBmYWxzZVxuICAgIH0pOyAvLyBzZWxmIGFuZCBzb3VyY2UgYXJlIERFViBvbmx5IHByb3BlcnRpZXMuXG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudCwgJ19zZWxmJywge1xuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgdmFsdWU6IHNlbGZcbiAgICB9KTsgLy8gVHdvIGVsZW1lbnRzIGNyZWF0ZWQgaW4gdHdvIGRpZmZlcmVudCBwbGFjZXMgc2hvdWxkIGJlIGNvbnNpZGVyZWRcbiAgICAvLyBlcXVhbCBmb3IgdGVzdGluZyBwdXJwb3NlcyBhbmQgdGhlcmVmb3JlIHdlIGhpZGUgaXQgZnJvbSBlbnVtZXJhdGlvbi5cblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX3NvdXJjZScsIHtcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgIHZhbHVlOiBzb3VyY2VcbiAgICB9KTtcblxuICAgIGlmIChPYmplY3QuZnJlZXplKSB7XG4gICAgICBPYmplY3QuZnJlZXplKGVsZW1lbnQucHJvcHMpO1xuICAgICAgT2JqZWN0LmZyZWV6ZShlbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZWxlbWVudDtcbn07XG4vKipcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdGpzL3JmY3MvcHVsbC8xMDdcbiAqIEBwYXJhbSB7Kn0gdHlwZVxuICogQHBhcmFtIHtvYmplY3R9IHByb3BzXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5XG4gKi9cblxuZnVuY3Rpb24ganN4REVWKHR5cGUsIGNvbmZpZywgbWF5YmVLZXksIHNvdXJjZSwgc2VsZikge1xuICB7XG4gICAgdmFyIHByb3BOYW1lOyAvLyBSZXNlcnZlZCBuYW1lcyBhcmUgZXh0cmFjdGVkXG5cbiAgICB2YXIgcHJvcHMgPSB7fTtcbiAgICB2YXIga2V5ID0gbnVsbDtcbiAgICB2YXIgcmVmID0gbnVsbDsgLy8gQ3VycmVudGx5LCBrZXkgY2FuIGJlIHNwcmVhZCBpbiBhcyBhIHByb3AuIFRoaXMgY2F1c2VzIGEgcG90ZW50aWFsXG4gICAgLy8gaXNzdWUgaWYga2V5IGlzIGFsc28gZXhwbGljaXRseSBkZWNsYXJlZCAoaWUuIDxkaXYgey4uLnByb3BzfSBrZXk9XCJIaVwiIC8+XG4gICAgLy8gb3IgPGRpdiBrZXk9XCJIaVwiIHsuLi5wcm9wc30gLz4gKS4gV2Ugd2FudCB0byBkZXByZWNhdGUga2V5IHNwcmVhZCxcbiAgICAvLyBidXQgYXMgYW4gaW50ZXJtZWRpYXJ5IHN0ZXAsIHdlIHdpbGwgdXNlIGpzeERFViBmb3IgZXZlcnl0aGluZyBleGNlcHRcbiAgICAvLyA8ZGl2IHsuLi5wcm9wc30ga2V5PVwiSGlcIiAvPiwgYmVjYXVzZSB3ZSBhcmVuJ3QgY3VycmVudGx5IGFibGUgdG8gdGVsbCBpZlxuICAgIC8vIGtleSBpcyBleHBsaWNpdGx5IGRlY2xhcmVkIHRvIGJlIHVuZGVmaW5lZCBvciBub3QuXG5cbiAgICBpZiAobWF5YmVLZXkgIT09IHVuZGVmaW5lZCkge1xuICAgICAge1xuICAgICAgICBjaGVja0tleVN0cmluZ0NvZXJjaW9uKG1heWJlS2V5KTtcbiAgICAgIH1cblxuICAgICAga2V5ID0gJycgKyBtYXliZUtleTtcbiAgICB9XG5cbiAgICBpZiAoaGFzVmFsaWRLZXkoY29uZmlnKSkge1xuICAgICAge1xuICAgICAgICBjaGVja0tleVN0cmluZ0NvZXJjaW9uKGNvbmZpZy5rZXkpO1xuICAgICAgfVxuXG4gICAgICBrZXkgPSAnJyArIGNvbmZpZy5rZXk7XG4gICAgfVxuXG4gICAgaWYgKGhhc1ZhbGlkUmVmKGNvbmZpZykpIHtcbiAgICAgIHJlZiA9IGNvbmZpZy5yZWY7XG4gICAgICB3YXJuSWZTdHJpbmdSZWZDYW5ub3RCZUF1dG9Db252ZXJ0ZWQoY29uZmlnLCBzZWxmKTtcbiAgICB9IC8vIFJlbWFpbmluZyBwcm9wZXJ0aWVzIGFyZSBhZGRlZCB0byBhIG5ldyBwcm9wcyBvYmplY3RcblxuXG4gICAgZm9yIChwcm9wTmFtZSBpbiBjb25maWcpIHtcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgcHJvcE5hbWUpICYmICFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gY29uZmlnW3Byb3BOYW1lXTtcbiAgICAgIH1cbiAgICB9IC8vIFJlc29sdmUgZGVmYXVsdCBwcm9wc1xuXG5cbiAgICBpZiAodHlwZSAmJiB0eXBlLmRlZmF1bHRQcm9wcykge1xuICAgICAgdmFyIGRlZmF1bHRQcm9wcyA9IHR5cGUuZGVmYXVsdFByb3BzO1xuXG4gICAgICBmb3IgKHByb3BOYW1lIGluIGRlZmF1bHRQcm9wcykge1xuICAgICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBkZWZhdWx0UHJvcHNbcHJvcE5hbWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGtleSB8fCByZWYpIHtcbiAgICAgIHZhciBkaXNwbGF5TmFtZSA9IHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nID8gdHlwZS5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUgfHwgJ1Vua25vd24nIDogdHlwZTtcblxuICAgICAgaWYgKGtleSkge1xuICAgICAgICBkZWZpbmVLZXlQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVmKSB7XG4gICAgICAgIGRlZmluZVJlZlByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIFJlYWN0RWxlbWVudCh0eXBlLCBrZXksIHJlZiwgc2VsZiwgc291cmNlLCBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LCBwcm9wcyk7XG4gIH1cbn1cblxudmFyIFJlYWN0Q3VycmVudE93bmVyJDEgPSBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdEN1cnJlbnRPd25lcjtcbnZhciBSZWFjdERlYnVnQ3VycmVudEZyYW1lJDEgPSBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdERlYnVnQ3VycmVudEZyYW1lO1xuXG5mdW5jdGlvbiBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudCQxKGVsZW1lbnQpIHtcbiAge1xuICAgIGlmIChlbGVtZW50KSB7XG4gICAgICB2YXIgb3duZXIgPSBlbGVtZW50Ll9vd25lcjtcbiAgICAgIHZhciBzdGFjayA9IGRlc2NyaWJlVW5rbm93bkVsZW1lbnRUeXBlRnJhbWVJbkRFVihlbGVtZW50LnR5cGUsIGVsZW1lbnQuX3NvdXJjZSwgb3duZXIgPyBvd25lci50eXBlIDogbnVsbCk7XG4gICAgICBSZWFjdERlYnVnQ3VycmVudEZyYW1lJDEuc2V0RXh0cmFTdGFja0ZyYW1lKHN0YWNrKTtcbiAgICB9IGVsc2Uge1xuICAgICAgUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZSQxLnNldEV4dHJhU3RhY2tGcmFtZShudWxsKTtcbiAgICB9XG4gIH1cbn1cblxudmFyIHByb3BUeXBlc01pc3NwZWxsV2FybmluZ1Nob3duO1xuXG57XG4gIHByb3BUeXBlc01pc3NwZWxsV2FybmluZ1Nob3duID0gZmFsc2U7XG59XG4vKipcbiAqIFZlcmlmaWVzIHRoZSBvYmplY3QgaXMgYSBSZWFjdEVsZW1lbnQuXG4gKiBTZWUgaHR0cHM6Ly9yZWFjdGpzLm9yZy9kb2NzL3JlYWN0LWFwaS5odG1sI2lzdmFsaWRlbGVtZW50XG4gKiBAcGFyYW0gez9vYmplY3R9IG9iamVjdFxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBgb2JqZWN0YCBpcyBhIFJlYWN0RWxlbWVudC5cbiAqIEBmaW5hbFxuICovXG5cblxuZnVuY3Rpb24gaXNWYWxpZEVsZW1lbnQob2JqZWN0KSB7XG4gIHtcbiAgICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiYgb2JqZWN0ICE9PSBudWxsICYmIG9iamVjdC4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bSgpIHtcbiAge1xuICAgIGlmIChSZWFjdEN1cnJlbnRPd25lciQxLmN1cnJlbnQpIHtcbiAgICAgIHZhciBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKFJlYWN0Q3VycmVudE93bmVyJDEuY3VycmVudC50eXBlKTtcblxuICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuICdcXG5cXG5DaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRTb3VyY2VJbmZvRXJyb3JBZGRlbmR1bShzb3VyY2UpIHtcbiAge1xuICAgIGlmIChzb3VyY2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdmFyIGZpbGVOYW1lID0gc291cmNlLmZpbGVOYW1lLnJlcGxhY2UoL14uKltcXFxcXFwvXS8sICcnKTtcbiAgICAgIHZhciBsaW5lTnVtYmVyID0gc291cmNlLmxpbmVOdW1iZXI7XG4gICAgICByZXR1cm4gJ1xcblxcbkNoZWNrIHlvdXIgY29kZSBhdCAnICsgZmlsZU5hbWUgKyAnOicgKyBsaW5lTnVtYmVyICsgJy4nO1xuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxufVxuLyoqXG4gKiBXYXJuIGlmIHRoZXJlJ3Mgbm8ga2V5IGV4cGxpY2l0bHkgc2V0IG9uIGR5bmFtaWMgYXJyYXlzIG9mIGNoaWxkcmVuIG9yXG4gKiBvYmplY3Qga2V5cyBhcmUgbm90IHZhbGlkLiBUaGlzIGFsbG93cyB1cyB0byBrZWVwIHRyYWNrIG9mIGNoaWxkcmVuIGJldHdlZW5cbiAqIHVwZGF0ZXMuXG4gKi9cblxuXG52YXIgb3duZXJIYXNLZXlVc2VXYXJuaW5nID0ge307XG5cbmZ1bmN0aW9uIGdldEN1cnJlbnRDb21wb25lbnRFcnJvckluZm8ocGFyZW50VHlwZSkge1xuICB7XG4gICAgdmFyIGluZm8gPSBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oKTtcblxuICAgIGlmICghaW5mbykge1xuICAgICAgdmFyIHBhcmVudE5hbWUgPSB0eXBlb2YgcGFyZW50VHlwZSA9PT0gJ3N0cmluZycgPyBwYXJlbnRUeXBlIDogcGFyZW50VHlwZS5kaXNwbGF5TmFtZSB8fCBwYXJlbnRUeXBlLm5hbWU7XG5cbiAgICAgIGlmIChwYXJlbnROYW1lKSB7XG4gICAgICAgIGluZm8gPSBcIlxcblxcbkNoZWNrIHRoZSB0b3AtbGV2ZWwgcmVuZGVyIGNhbGwgdXNpbmcgPFwiICsgcGFyZW50TmFtZSArIFwiPi5cIjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaW5mbztcbiAgfVxufVxuLyoqXG4gKiBXYXJuIGlmIHRoZSBlbGVtZW50IGRvZXNuJ3QgaGF2ZSBhbiBleHBsaWNpdCBrZXkgYXNzaWduZWQgdG8gaXQuXG4gKiBUaGlzIGVsZW1lbnQgaXMgaW4gYW4gYXJyYXkuIFRoZSBhcnJheSBjb3VsZCBncm93IGFuZCBzaHJpbmsgb3IgYmVcbiAqIHJlb3JkZXJlZC4gQWxsIGNoaWxkcmVuIHRoYXQgaGF2ZW4ndCBhbHJlYWR5IGJlZW4gdmFsaWRhdGVkIGFyZSByZXF1aXJlZCB0b1xuICogaGF2ZSBhIFwia2V5XCIgcHJvcGVydHkgYXNzaWduZWQgdG8gaXQuIEVycm9yIHN0YXR1c2VzIGFyZSBjYWNoZWQgc28gYSB3YXJuaW5nXG4gKiB3aWxsIG9ubHkgYmUgc2hvd24gb25jZS5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50IEVsZW1lbnQgdGhhdCByZXF1aXJlcyBhIGtleS5cbiAqIEBwYXJhbSB7Kn0gcGFyZW50VHlwZSBlbGVtZW50J3MgcGFyZW50J3MgdHlwZS5cbiAqL1xuXG5cbmZ1bmN0aW9uIHZhbGlkYXRlRXhwbGljaXRLZXkoZWxlbWVudCwgcGFyZW50VHlwZSkge1xuICB7XG4gICAgaWYgKCFlbGVtZW50Ll9zdG9yZSB8fCBlbGVtZW50Ll9zdG9yZS52YWxpZGF0ZWQgfHwgZWxlbWVudC5rZXkgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCA9IHRydWU7XG4gICAgdmFyIGN1cnJlbnRDb21wb25lbnRFcnJvckluZm8gPSBnZXRDdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvKHBhcmVudFR5cGUpO1xuXG4gICAgaWYgKG93bmVySGFzS2V5VXNlV2FybmluZ1tjdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG93bmVySGFzS2V5VXNlV2FybmluZ1tjdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvXSA9IHRydWU7IC8vIFVzdWFsbHkgdGhlIGN1cnJlbnQgb3duZXIgaXMgdGhlIG9mZmVuZGVyLCBidXQgaWYgaXQgYWNjZXB0cyBjaGlsZHJlbiBhcyBhXG4gICAgLy8gcHJvcGVydHksIGl0IG1heSBiZSB0aGUgY3JlYXRvciBvZiB0aGUgY2hpbGQgdGhhdCdzIHJlc3BvbnNpYmxlIGZvclxuICAgIC8vIGFzc2lnbmluZyBpdCBhIGtleS5cblxuICAgIHZhciBjaGlsZE93bmVyID0gJyc7XG5cbiAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50Ll9vd25lciAmJiBlbGVtZW50Ll9vd25lciAhPT0gUmVhY3RDdXJyZW50T3duZXIkMS5jdXJyZW50KSB7XG4gICAgICAvLyBHaXZlIHRoZSBjb21wb25lbnQgdGhhdCBvcmlnaW5hbGx5IGNyZWF0ZWQgdGhpcyBjaGlsZC5cbiAgICAgIGNoaWxkT3duZXIgPSBcIiBJdCB3YXMgcGFzc2VkIGEgY2hpbGQgZnJvbSBcIiArIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZShlbGVtZW50Ll9vd25lci50eXBlKSArIFwiLlwiO1xuICAgIH1cblxuICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50JDEoZWxlbWVudCk7XG5cbiAgICBlcnJvcignRWFjaCBjaGlsZCBpbiBhIGxpc3Qgc2hvdWxkIGhhdmUgYSB1bmlxdWUgXCJrZXlcIiBwcm9wLicgKyAnJXMlcyBTZWUgaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL3dhcm5pbmcta2V5cyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nLCBjdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvLCBjaGlsZE93bmVyKTtcblxuICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50JDEobnVsbCk7XG4gIH1cbn1cbi8qKlxuICogRW5zdXJlIHRoYXQgZXZlcnkgZWxlbWVudCBlaXRoZXIgaXMgcGFzc2VkIGluIGEgc3RhdGljIGxvY2F0aW9uLCBpbiBhblxuICogYXJyYXkgd2l0aCBhbiBleHBsaWNpdCBrZXlzIHByb3BlcnR5IGRlZmluZWQsIG9yIGluIGFuIG9iamVjdCBsaXRlcmFsXG4gKiB3aXRoIHZhbGlkIGtleSBwcm9wZXJ0eS5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqIEBwYXJhbSB7UmVhY3ROb2RlfSBub2RlIFN0YXRpY2FsbHkgcGFzc2VkIGNoaWxkIG9mIGFueSB0eXBlLlxuICogQHBhcmFtIHsqfSBwYXJlbnRUeXBlIG5vZGUncyBwYXJlbnQncyB0eXBlLlxuICovXG5cblxuZnVuY3Rpb24gdmFsaWRhdGVDaGlsZEtleXMobm9kZSwgcGFyZW50VHlwZSkge1xuICB7XG4gICAgaWYgKHR5cGVvZiBub2RlICE9PSAnb2JqZWN0Jykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChpc0FycmF5KG5vZGUpKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoaWxkID0gbm9kZVtpXTtcblxuICAgICAgICBpZiAoaXNWYWxpZEVsZW1lbnQoY2hpbGQpKSB7XG4gICAgICAgICAgdmFsaWRhdGVFeHBsaWNpdEtleShjaGlsZCwgcGFyZW50VHlwZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzVmFsaWRFbGVtZW50KG5vZGUpKSB7XG4gICAgICAvLyBUaGlzIGVsZW1lbnQgd2FzIHBhc3NlZCBpbiBhIHZhbGlkIGxvY2F0aW9uLlxuICAgICAgaWYgKG5vZGUuX3N0b3JlKSB7XG4gICAgICAgIG5vZGUuX3N0b3JlLnZhbGlkYXRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChub2RlKSB7XG4gICAgICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4obm9kZSk7XG5cbiAgICAgIGlmICh0eXBlb2YgaXRlcmF0b3JGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAvLyBFbnRyeSBpdGVyYXRvcnMgdXNlZCB0byBwcm92aWRlIGltcGxpY2l0IGtleXMsXG4gICAgICAgIC8vIGJ1dCBub3cgd2UgcHJpbnQgYSBzZXBhcmF0ZSB3YXJuaW5nIGZvciB0aGVtIGxhdGVyLlxuICAgICAgICBpZiAoaXRlcmF0b3JGbiAhPT0gbm9kZS5lbnRyaWVzKSB7XG4gICAgICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKG5vZGUpO1xuICAgICAgICAgIHZhciBzdGVwO1xuXG4gICAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgICAgaWYgKGlzVmFsaWRFbGVtZW50KHN0ZXAudmFsdWUpKSB7XG4gICAgICAgICAgICAgIHZhbGlkYXRlRXhwbGljaXRLZXkoc3RlcC52YWx1ZSwgcGFyZW50VHlwZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4vKipcbiAqIEdpdmVuIGFuIGVsZW1lbnQsIHZhbGlkYXRlIHRoYXQgaXRzIHByb3BzIGZvbGxvdyB0aGUgcHJvcFR5cGVzIGRlZmluaXRpb24sXG4gKiBwcm92aWRlZCBieSB0aGUgdHlwZS5cbiAqXG4gKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZWxlbWVudFxuICovXG5cblxuZnVuY3Rpb24gdmFsaWRhdGVQcm9wVHlwZXMoZWxlbWVudCkge1xuICB7XG4gICAgdmFyIHR5cGUgPSBlbGVtZW50LnR5cGU7XG5cbiAgICBpZiAodHlwZSA9PT0gbnVsbCB8fCB0eXBlID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHByb3BUeXBlcztcblxuICAgIGlmICh0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcHJvcFR5cGVzID0gdHlwZS5wcm9wVHlwZXM7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcgJiYgKHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0ZPUldBUkRfUkVGX1RZUEUgfHwgLy8gTm90ZTogTWVtbyBvbmx5IGNoZWNrcyBvdXRlciBwcm9wcyBoZXJlLlxuICAgIC8vIElubmVyIHByb3BzIGFyZSBjaGVja2VkIGluIHRoZSByZWNvbmNpbGVyLlxuICAgIHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX01FTU9fVFlQRSkpIHtcbiAgICAgIHByb3BUeXBlcyA9IHR5cGUucHJvcFR5cGVzO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHByb3BUeXBlcykge1xuICAgICAgLy8gSW50ZW50aW9uYWxseSBpbnNpZGUgdG8gYXZvaWQgdHJpZ2dlcmluZyBsYXp5IGluaXRpYWxpemVyczpcbiAgICAgIHZhciBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpO1xuICAgICAgY2hlY2tQcm9wVHlwZXMocHJvcFR5cGVzLCBlbGVtZW50LnByb3BzLCAncHJvcCcsIG5hbWUsIGVsZW1lbnQpO1xuICAgIH0gZWxzZSBpZiAodHlwZS5Qcm9wVHlwZXMgIT09IHVuZGVmaW5lZCAmJiAhcHJvcFR5cGVzTWlzc3BlbGxXYXJuaW5nU2hvd24pIHtcbiAgICAgIHByb3BUeXBlc01pc3NwZWxsV2FybmluZ1Nob3duID0gdHJ1ZTsgLy8gSW50ZW50aW9uYWxseSBpbnNpZGUgdG8gYXZvaWQgdHJpZ2dlcmluZyBsYXp5IGluaXRpYWxpemVyczpcblxuICAgICAgdmFyIF9uYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpO1xuXG4gICAgICBlcnJvcignQ29tcG9uZW50ICVzIGRlY2xhcmVkIGBQcm9wVHlwZXNgIGluc3RlYWQgb2YgYHByb3BUeXBlc2AuIERpZCB5b3UgbWlzc3BlbGwgdGhlIHByb3BlcnR5IGFzc2lnbm1lbnQ/JywgX25hbWUgfHwgJ1Vua25vd24nKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHR5cGUuZ2V0RGVmYXVsdFByb3BzID09PSAnZnVuY3Rpb24nICYmICF0eXBlLmdldERlZmF1bHRQcm9wcy5pc1JlYWN0Q2xhc3NBcHByb3ZlZCkge1xuICAgICAgZXJyb3IoJ2dldERlZmF1bHRQcm9wcyBpcyBvbmx5IHVzZWQgb24gY2xhc3NpYyBSZWFjdC5jcmVhdGVDbGFzcyAnICsgJ2RlZmluaXRpb25zLiBVc2UgYSBzdGF0aWMgcHJvcGVydHkgbmFtZWQgYGRlZmF1bHRQcm9wc2AgaW5zdGVhZC4nKTtcbiAgICB9XG4gIH1cbn1cbi8qKlxuICogR2l2ZW4gYSBmcmFnbWVudCwgdmFsaWRhdGUgdGhhdCBpdCBjYW4gb25seSBiZSBwcm92aWRlZCB3aXRoIGZyYWdtZW50IHByb3BzXG4gKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gZnJhZ21lbnRcbiAqL1xuXG5cbmZ1bmN0aW9uIHZhbGlkYXRlRnJhZ21lbnRQcm9wcyhmcmFnbWVudCkge1xuICB7XG4gICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhmcmFnbWVudC5wcm9wcyk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuXG4gICAgICBpZiAoa2V5ICE9PSAnY2hpbGRyZW4nICYmIGtleSAhPT0gJ2tleScpIHtcbiAgICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShmcmFnbWVudCk7XG5cbiAgICAgICAgZXJyb3IoJ0ludmFsaWQgcHJvcCBgJXNgIHN1cHBsaWVkIHRvIGBSZWFjdC5GcmFnbWVudGAuICcgKyAnUmVhY3QuRnJhZ21lbnQgY2FuIG9ubHkgaGF2ZSBga2V5YCBhbmQgYGNoaWxkcmVuYCBwcm9wcy4nLCBrZXkpO1xuXG4gICAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50JDEobnVsbCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmcmFnbWVudC5yZWYgIT09IG51bGwpIHtcbiAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50JDEoZnJhZ21lbnQpO1xuXG4gICAgICBlcnJvcignSW52YWxpZCBhdHRyaWJ1dGUgYHJlZmAgc3VwcGxpZWQgdG8gYFJlYWN0LkZyYWdtZW50YC4nKTtcblxuICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQkMShudWxsKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24ganN4V2l0aFZhbGlkYXRpb24odHlwZSwgcHJvcHMsIGtleSwgaXNTdGF0aWNDaGlsZHJlbiwgc291cmNlLCBzZWxmKSB7XG4gIHtcbiAgICB2YXIgdmFsaWRUeXBlID0gaXNWYWxpZEVsZW1lbnRUeXBlKHR5cGUpOyAvLyBXZSB3YXJuIGluIHRoaXMgY2FzZSBidXQgZG9uJ3QgdGhyb3cuIFdlIGV4cGVjdCB0aGUgZWxlbWVudCBjcmVhdGlvbiB0b1xuICAgIC8vIHN1Y2NlZWQgYW5kIHRoZXJlIHdpbGwgbGlrZWx5IGJlIGVycm9ycyBpbiByZW5kZXIuXG5cbiAgICBpZiAoIXZhbGlkVHlwZSkge1xuICAgICAgdmFyIGluZm8gPSAnJztcblxuICAgICAgaWYgKHR5cGUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcgJiYgdHlwZSAhPT0gbnVsbCAmJiBPYmplY3Qua2V5cyh0eXBlKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgaW5mbyArPSAnIFlvdSBsaWtlbHkgZm9yZ290IHRvIGV4cG9ydCB5b3VyIGNvbXBvbmVudCBmcm9tIHRoZSBmaWxlICcgKyBcIml0J3MgZGVmaW5lZCBpbiwgb3IgeW91IG1pZ2h0IGhhdmUgbWl4ZWQgdXAgZGVmYXVsdCBhbmQgbmFtZWQgaW1wb3J0cy5cIjtcbiAgICAgIH1cblxuICAgICAgdmFyIHNvdXJjZUluZm8gPSBnZXRTb3VyY2VJbmZvRXJyb3JBZGRlbmR1bShzb3VyY2UpO1xuXG4gICAgICBpZiAoc291cmNlSW5mbykge1xuICAgICAgICBpbmZvICs9IHNvdXJjZUluZm87XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbmZvICs9IGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bSgpO1xuICAgICAgfVxuXG4gICAgICB2YXIgdHlwZVN0cmluZztcblxuICAgICAgaWYgKHR5cGUgPT09IG51bGwpIHtcbiAgICAgICAgdHlwZVN0cmluZyA9ICdudWxsJztcbiAgICAgIH0gZWxzZSBpZiAoaXNBcnJheSh0eXBlKSkge1xuICAgICAgICB0eXBlU3RyaW5nID0gJ2FycmF5JztcbiAgICAgIH0gZWxzZSBpZiAodHlwZSAhPT0gdW5kZWZpbmVkICYmIHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRSkge1xuICAgICAgICB0eXBlU3RyaW5nID0gXCI8XCIgKyAoZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUudHlwZSkgfHwgJ1Vua25vd24nKSArIFwiIC8+XCI7XG4gICAgICAgIGluZm8gPSAnIERpZCB5b3UgYWNjaWRlbnRhbGx5IGV4cG9ydCBhIEpTWCBsaXRlcmFsIGluc3RlYWQgb2YgYSBjb21wb25lbnQ/JztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHR5cGVTdHJpbmcgPSB0eXBlb2YgdHlwZTtcbiAgICAgIH1cblxuICAgICAgZXJyb3IoJ1JlYWN0LmpzeDogdHlwZSBpcyBpbnZhbGlkIC0tIGV4cGVjdGVkIGEgc3RyaW5nIChmb3IgJyArICdidWlsdC1pbiBjb21wb25lbnRzKSBvciBhIGNsYXNzL2Z1bmN0aW9uIChmb3IgY29tcG9zaXRlICcgKyAnY29tcG9uZW50cykgYnV0IGdvdDogJXMuJXMnLCB0eXBlU3RyaW5nLCBpbmZvKTtcbiAgICB9XG5cbiAgICB2YXIgZWxlbWVudCA9IGpzeERFVih0eXBlLCBwcm9wcywga2V5LCBzb3VyY2UsIHNlbGYpOyAvLyBUaGUgcmVzdWx0IGNhbiBiZSBudWxsaXNoIGlmIGEgbW9jayBvciBhIGN1c3RvbSBmdW5jdGlvbiBpcyB1c2VkLlxuICAgIC8vIFRPRE86IERyb3AgdGhpcyB3aGVuIHRoZXNlIGFyZSBubyBsb25nZXIgYWxsb3dlZCBhcyB0aGUgdHlwZSBhcmd1bWVudC5cblxuICAgIGlmIChlbGVtZW50ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBlbGVtZW50O1xuICAgIH0gLy8gU2tpcCBrZXkgd2FybmluZyBpZiB0aGUgdHlwZSBpc24ndCB2YWxpZCBzaW5jZSBvdXIga2V5IHZhbGlkYXRpb24gbG9naWNcbiAgICAvLyBkb2Vzbid0IGV4cGVjdCBhIG5vbi1zdHJpbmcvZnVuY3Rpb24gdHlwZSBhbmQgY2FuIHRocm93IGNvbmZ1c2luZyBlcnJvcnMuXG4gICAgLy8gV2UgZG9uJ3Qgd2FudCBleGNlcHRpb24gYmVoYXZpb3IgdG8gZGlmZmVyIGJldHdlZW4gZGV2IGFuZCBwcm9kLlxuICAgIC8vIChSZW5kZXJpbmcgd2lsbCB0aHJvdyB3aXRoIGEgaGVscGZ1bCBtZXNzYWdlIGFuZCBhcyBzb29uIGFzIHRoZSB0eXBlIGlzXG4gICAgLy8gZml4ZWQsIHRoZSBrZXkgd2FybmluZ3Mgd2lsbCBhcHBlYXIuKVxuXG5cbiAgICBpZiAodmFsaWRUeXBlKSB7XG4gICAgICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbjtcblxuICAgICAgaWYgKGNoaWxkcmVuICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKGlzU3RhdGljQ2hpbGRyZW4pIHtcbiAgICAgICAgICBpZiAoaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgdmFsaWRhdGVDaGlsZEtleXMoY2hpbGRyZW5baV0sIHR5cGUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoT2JqZWN0LmZyZWV6ZSkge1xuICAgICAgICAgICAgICBPYmplY3QuZnJlZXplKGNoaWxkcmVuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZXJyb3IoJ1JlYWN0LmpzeDogU3RhdGljIGNoaWxkcmVuIHNob3VsZCBhbHdheXMgYmUgYW4gYXJyYXkuICcgKyAnWW91IGFyZSBsaWtlbHkgZXhwbGljaXRseSBjYWxsaW5nIFJlYWN0LmpzeHMgb3IgUmVhY3QuanN4REVWLiAnICsgJ1VzZSB0aGUgQmFiZWwgdHJhbnNmb3JtIGluc3RlYWQuJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhbGlkYXRlQ2hpbGRLZXlzKGNoaWxkcmVuLCB0eXBlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0eXBlID09PSBSRUFDVF9GUkFHTUVOVF9UWVBFKSB7XG4gICAgICB2YWxpZGF0ZUZyYWdtZW50UHJvcHMoZWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbGlkYXRlUHJvcFR5cGVzKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG59IC8vIFRoZXNlIHR3byBmdW5jdGlvbnMgZXhpc3QgdG8gc3RpbGwgZ2V0IGNoaWxkIHdhcm5pbmdzIGluIGRldlxuLy8gZXZlbiB3aXRoIHRoZSBwcm9kIHRyYW5zZm9ybS4gVGhpcyBtZWFucyB0aGF0IGpzeERFViBpcyBwdXJlbHlcbi8vIG9wdC1pbiBiZWhhdmlvciBmb3IgYmV0dGVyIG1lc3NhZ2VzIGJ1dCB0aGF0IHdlIHdvbid0IHN0b3Bcbi8vIGdpdmluZyB5b3Ugd2FybmluZ3MgaWYgeW91IHVzZSBwcm9kdWN0aW9uIGFwaXMuXG5cbmZ1bmN0aW9uIGpzeFdpdGhWYWxpZGF0aW9uU3RhdGljKHR5cGUsIHByb3BzLCBrZXkpIHtcbiAge1xuICAgIHJldHVybiBqc3hXaXRoVmFsaWRhdGlvbih0eXBlLCBwcm9wcywga2V5LCB0cnVlKTtcbiAgfVxufVxuZnVuY3Rpb24ganN4V2l0aFZhbGlkYXRpb25EeW5hbWljKHR5cGUsIHByb3BzLCBrZXkpIHtcbiAge1xuICAgIHJldHVybiBqc3hXaXRoVmFsaWRhdGlvbih0eXBlLCBwcm9wcywga2V5LCBmYWxzZSk7XG4gIH1cbn1cblxudmFyIGpzeCA9ICBqc3hXaXRoVmFsaWRhdGlvbkR5bmFtaWMgOyAvLyB3ZSBtYXkgd2FudCB0byBzcGVjaWFsIGNhc2UganN4cyBpbnRlcm5hbGx5IHRvIHRha2UgYWR2YW50YWdlIG9mIHN0YXRpYyBjaGlsZHJlbi5cbi8vIGZvciBub3cgd2UgY2FuIHNoaXAgaWRlbnRpY2FsIHByb2QgZnVuY3Rpb25zXG5cbnZhciBqc3hzID0gIGpzeFdpdGhWYWxpZGF0aW9uU3RhdGljIDtcblxuZXhwb3J0cy5GcmFnbWVudCA9IFJFQUNUX0ZSQUdNRU5UX1RZUEU7XG5leHBvcnRzLmpzeCA9IGpzeDtcbmV4cG9ydHMuanN4cyA9IGpzeHM7XG4gIH0pKCk7XG59XG4iLCIndXNlIHN0cmljdCc7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUucHJvZHVjdGlvbi5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsIi8qKiBAbW9kdWxlIFNlZSBgcm9sbHVwLmNvbmZpZy5qc2AgZm9yIHdoYXQgdGhpcyBmaWxlIGRvZXMuICovXG5pbXBvcnQgKiBhcyBKc3ggZnJvbSAncmVhY3QvanN4LXJ1bnRpbWUnO1xuaW1wb3J0IHsgXG4vLyBAdHMtaWdub3JlXG5GcmFnbWVudCwgXG4vLyBAdHMtaWdub3JlXG5qc3gsIFxuLy8gQHRzLWlnbm9yZVxuanN4cywgfSBmcm9tICdyZWFjdC9qc3gtcnVudGltZSc7XG5leHBvcnQgZGVmYXVsdCBKc3g7XG5leHBvcnQgeyBGcmFnbWVudCwganN4LCBqc3hzIH07XG4iXSwibmFtZXMiOlsicmVxdWlyZSQkMCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFXQTtBQUMyQztBQUMzQyxFQUFFLENBQUMsV0FBVztBQUVkO0FBQ0EsSUFBSSxLQUFLLEdBQUcsVUFBZ0IsQ0FBQztBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxrQkFBa0IsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ3JELElBQUksaUJBQWlCLEdBQUcsTUFBTSxD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