f_000011 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. import { createHotContext as __vite__createHotContext } from "/@vite/client";import.meta.hot = __vite__createHotContext("/src/views/starter/index/index.tsx");import { Fragment as _Fragment, createTextVNode as _createTextVNode, createVNode as _createVNode } from "/node_modules/.vite/deps/vue.js?v=3bf0172c";
  2. import { getImageUrl } from "/src/utils/index.ts";
  3. import { useCtx } from "/src/comm/ctx/index.ts?t=1702975066869";
  4. import Modal from "/src/components/Provider/Modal.tsx";
  5. import { useVersion } from "/src/modules/index.ts?t=1702977548082";
  6. import { CaretRightOutlined } from "/node_modules/.vite/deps/@ant-design_icons-vue.js?v=2150c144";
  7. import { Button, Layout, message } from "/node_modules/.vite/deps/ant-design-vue.js?v=f7d2fa05";
  8. import { nanoid } from "/node_modules/.vite/deps/nanoid.js?v=553c8734";
  9. import { defineComponent, reactive } from "/node_modules/.vite/deps/vue.js?v=3bf0172c";
  10. import Header from "/src/views/starter/index/header.tsx?t=1702975066869";
  11. import HistoryVersion from "/src/views/starter/index/historyVersion.tsx?t=1702977548082";
  12. const __default__ = defineComponent(() => {
  13. const {
  14. installCtrl,
  15. deviceCtrl
  16. } = useCtx();
  17. const state = reactive({
  18. needUpdate: false,
  19. runLoading: false
  20. });
  21. const verStore = useVersion();
  22. const showHistory = () => {
  23. if (installCtrl.state.installing) {
  24. return;
  25. }
  26. Modal.show(_createVNode(HistoryVersion, null, null), {
  27. width: "5.6rem"
  28. });
  29. };
  30. const initLocal = async () => {
  31. await installCtrl.parseInstalledApp();
  32. };
  33. initLocal();
  34. const installApp = async () => {
  35. const res = await verStore.getLatestVersion();
  36. if (res) {
  37. installCtrl.install(res);
  38. }
  39. };
  40. const checkUpdate = async () => {
  41. const latest = await verStore.getLatestVersion();
  42. const app = installCtrl.state.apps[0];
  43. if (app.Version == latest.version) {
  44. Modal.confirm({
  45. title: "更新提示",
  46. content: "当前已经是最新版本,无需更新",
  47. type: "danger"
  48. });
  49. return;
  50. }
  51. const ok = await Modal.confirm({
  52. title: "更新提示",
  53. content: `当前版本v${app.Version},最新版本v${latest.version},是否需要更新?`,
  54. type: "danger",
  55. okText: "更新"
  56. });
  57. if (ok) {
  58. const runnings = await deviceCtrl.GetRunningApp();
  59. if (runnings.length) {
  60. message.warning("请先关闭软件,再进行更新!");
  61. return;
  62. }
  63. installCtrl.install(latest);
  64. }
  65. };
  66. const runApp = async () => {
  67. const runnings = await deviceCtrl.GetRunningApp();
  68. if (runnings.length) {
  69. message.warning("软件已启动!");
  70. return;
  71. }
  72. state.runLoading = true;
  73. const app = installCtrl.state.apps[0];
  74. const err = await deviceCtrl.RunNativeApp(nanoid(), app.ExePath, [], "成都7号线虚拟仿真教学系统", "cr");
  75. if (err) {
  76. message.error(err);
  77. return;
  78. }
  79. state.runLoading = false;
  80. deviceCtrl.TrayNotice({
  81. context: `软件启动成功!`
  82. });
  83. };
  84. const btnsRender = app => {
  85. if (!app) {
  86. return _createVNode(Button, {
  87. "class": "btn_primary",
  88. "onClick": installApp,
  89. "loading": installCtrl.state.installing
  90. }, {
  91. default: () => [_createTextVNode("\u5B89\u88C5\u8F6F\u4EF6")]
  92. });
  93. }
  94. return _createVNode(_Fragment, null, [_createVNode(Button, {
  95. "class": "btn_dark",
  96. "onClick": checkUpdate,
  97. "loading": installCtrl.state.installing
  98. }, {
  99. default: () => [installCtrl.state.installing ? "更新中" : "检查更新"]
  100. }), _createVNode(Button, {
  101. "class": "btn_primary",
  102. "onClick": runApp,
  103. "loading": state.runLoading,
  104. "disabled": installCtrl.state.installing
  105. }, {
  106. default: () => [_createTextVNode("\u542F\u52A8\u8F6F\u4EF6")]
  107. })]);
  108. };
  109. return () => {
  110. const app = installCtrl.state.apps[0];
  111. return _createVNode(Layout, {
  112. "class": PageRoot
  113. }, {
  114. default: () => [_createVNode(Header, null, null), _createVNode("div", {
  115. "class": "main_content"
  116. }, [_createVNode("div", {
  117. "class": "main_warpper"
  118. }, [_createVNode("div", {
  119. "class": "logo"
  120. }, [_createVNode("img", {
  121. "src": getImageUrl("logo.png")
  122. }, null)]), _createVNode("div", {
  123. "class": "info"
  124. }, [_createVNode("div", {
  125. "class": "font_logo"
  126. }, [_createVNode("img", {
  127. "src": getImageUrl("font_logo.png")
  128. }, null)]), _createVNode("div", {
  129. "class": "version"
  130. }, [app && _createVNode("div", {
  131. "class": "v_num"
  132. }, ["版本:v", app.Version]), _createVNode("div", {
  133. "class": "v_box"
  134. }, [state.needUpdate && _createVNode("div", {
  135. "class": "v_tips"
  136. }, [_createTextVNode("\u6709\u65B0\u7248\u672C\u53EF\u66F4\u65B0")]), installCtrl.state.downProgress && _createVNode("div", {
  137. "class": "install_bar_warpper"
  138. }, [_createVNode("div", {
  139. "class": "bar_text"
  140. }, [_createTextVNode("\u4E0B\u8F7D\u4E2D")]), _createVNode("div", {
  141. "class": "bar_box"
  142. }, [_createVNode("div", {
  143. "class": "bar_inner",
  144. "style": {
  145. width: `${installCtrl.state.downProgress}%`
  146. }
  147. }, null)]), _createVNode("div", {
  148. "class": "bar_num"
  149. }, [installCtrl.state.downProgress, "%"])]), installCtrl.state.installProgress && _createVNode("div", {
  150. "class": "install_bar_warpper"
  151. }, [_createVNode("div", {
  152. "class": "bar_text"
  153. }, [_createTextVNode("\u5B89\u88C5\u4E2D")]), _createVNode("div", {
  154. "class": "bar_box"
  155. }, [_createVNode("div", {
  156. "class": "bar_inner",
  157. "style": {
  158. width: `${installCtrl.state.installProgress}%`
  159. }
  160. }, null)]), _createVNode("div", {
  161. "class": "bar_num"
  162. }, [installCtrl.state.installProgress, "%"])])])])])])]), _createVNode("div", {
  163. "class": "bottom_warpper"
  164. }, [_createVNode("div", {
  165. "class": "btm_btns"
  166. }, [btnsRender(app)]), _createVNode("div", {
  167. "class": ["history_veriosn", installCtrl.state.installing ? "disabled" : null],
  168. "onClick": showHistory
  169. }, ["查看历史版本", _createVNode(CaretRightOutlined, {
  170. "class": "icon"
  171. }, null)])])]
  172. });
  173. };
  174. });
  175. const PageRoot = "p1frd04x";
  176. import "/src/views/starter/index/index_4g3o8o.css";
  177. export default __default__
  178. __default__.__hmrId = "ee08c58f"
  179. __VUE_HMR_RUNTIME__.createRecord("ee08c58f", __default__)
  180. import.meta.hot.accept(({default: __default}) => {
  181. __VUE_HMR_RUNTIME__.reload("ee08c58f", __default)
  182. })
  183. //# sourceMappingURL=data:application/json;base64,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QUFBLDBCQUFBakMsWUFBQTtRQUFBLFNBQ0E7TUFBQSxJQUFBQSxZQUFBO1FBQUEsU0FFRDtRQUFBLFNBQ0E7VUFDTEMsS0FBQSxFQUFPLEdBQUdWLFdBQUEsQ0FBWUUsS0FBQSxDQUFNNEMsZUFBQTtRQUM5QjtNQUFBLFlBQUFyQyxZQUFBO1FBQUEsU0FHUTtNQUFBLElBQ1RULFdBQUEsQ0FBWUUsS0FBQSxDQUFNNEMsZUFBQSxFQUFnQixPQVh0QyxZQUFBckMsWUFBQTtRQUFBLFNBb0JEO01BQUEsSUFBQUEsWUFBQTtRQUFBLFNBQ0U7TUFBQSxJQUFhK0IsVUFBQSxDQUFXckIsR0FBRyxLQUFBVixZQUFBO1FBQUEsU0FFOUIsQ0FDTCxtQkFDQVQsV0FBQSxDQUFZRSxLQUFBLENBQU1LLFVBQUEsR0FBYSxhQUFhLEtBQzlDO1FBQUEsV0FDU0Q7TUFBQSxJQUNWLFVBQUFHLFlBQUEsQ0FBQWxCLGtCQUFBO1FBQUEsU0FFNEI7TUFBQTtJQUFBO0VBS3JDO0FBQ0YsQ0FBQztBQUNELE1BQU1xRCxRQUFBLGFBQVciLCJuYW1lcyI6WyJnZXRJbWFnZVVybCIsInVzZUN0eCIsIk1vZGFsIiwidXNlVmVyc2lvbiIsIkNhcmV0UmlnaHRPdXRsaW5lZCIsIkJ1dHRvbiIsIkxheW91dCIsIm1lc3NhZ2UiLCJuYW5vaWQiLCJkZWZpbmVDb21wb25lbnQiLCJyZWFjdGl2ZSIsIkhlYWRlciIsIkhpc3RvcnlWZXJzaW9uIiwiaW5zdGFsbEN0cmwiLCJkZXZpY2VDdHJsIiwic3RhdGUiLCJuZWVkVXBkYXRlIiwicnVuTG9hZGluZyIsInZlclN0b3JlIiwic2hvd0hpc3RvcnkiLCJpbnN0YWxsaW5nIiwic2hvdyIsIl9jcmVhdGVWTm9kZSIsIndpZHRoIiwiaW5pdExvY2FsIiwicGFyc2VJbnN0YWxsZWRBcHAiLCJpbnN0YWxsQXBwIiwicmVzIiwiZ2V0TGF0ZXN0VmVyc2lvbiIsImluc3RhbGwiLCJjaGVja1VwZGF0ZSIsImxhdGVzdCIsImFwcCIsImFwcHMiLCJWZXJzaW9uIiwidmVyc2lvbiIsImNvbmZpcm0iLCJ0aXRsZSIsImNvbnRlbnQiLCJ0eXBlIiwib2siLCJva1RleHQiLCJydW5uaW5ncyIsIkdldFJ1bm5pbmdBcHAiLCJsZW5ndGgiLCJ3YXJuaW5nIiwicnVuQXBwIiwiZXJyIiwiUnVuTmF0aXZlQXBwIiwiRXhlUGF0aCIsImVycm9yIiwiVHJheU5vdGljZSIsImNvbnRleHQiLCJidG5zUmVuZGVyIiwiZGVmYXVsdCIsIl9jcmVhdGVUZXh0Vk5vZGUiLCJfRnJhZ21lbnQiLCJQYWdlUm9vdCIsImRvd25Qcm9ncmVzcyIsImluc3RhbGxQcm9ncmVzcyJdLCJzb3VyY2VzIjpbImluZGV4LnRzeCJdLCJmaWxlIjoiRDovd29ya19maWxlcy9jcnJjX2FkbWluL3NyYy92aWV3cy9zdGFydGVyL2luZGV4L2luZGV4LnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUN0eCB9IGZyb20gXCJAL2NvbW0vY3R4XCI7XHJcbmltcG9ydCBNb2RhbCBmcm9tIFwiQC9jb21wb25lbnRzL1Byb3ZpZGVyL01vZGFsXCI7XHJcbmltcG9ydCB7IHVzZVZlcnNpb24gfSBmcm9tIFwiQC9tb2R1bGVzXCI7XHJcbmltcG9ydCB7IENhcmV0UmlnaHRPdXRsaW5lZCB9IGZyb20gXCJAYW50LWRlc2lnbi9pY29ucy12dWVcIjtcclxuaW1wb3J0IHsgY3NzIH0gZnJvbSBcIkBsaW5hcmlhL2NvcmVcIjtcclxuaW1wb3J0IHsgQnV0dG9uLCBMYXlvdXQsIG1lc3NhZ2UgfSBmcm9tIFwiYW50LWRlc2lnbi12dWVcIjtcclxuaW1wb3J0IHsgbmFub2lkIH0gZnJvbSBcIm5hbm9pZFwiO1xyXG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQsIHJlYWN0aXZlIH0gZnJvbSBcInZ1ZVwiO1xyXG5pbXBvcnQgSGVhZGVyIGZyb20gXCIuL2hlYWRlclwiO1xyXG5pbXBvcnQgSGlzdG9yeVZlcnNpb24gZnJvbSBcIi4vaGlzdG9yeVZlcnNpb25cIjtcclxuZXhwb3J0IGRlZmF1bHQgZGVmaW5lQ29tcG9uZW50KCgpID0+IHtcclxuICBjb25zdCB7IGluc3RhbGxDdHJsLCBkZXZpY2VDdHJsIH0gPSB1c2VDdHgoKTtcclxuICBjb25zdCBzdGF0ZSA9IHJlYWN0aXZlKHtcclxuICAgIG5lZWRVcGRhdGU6IGZhbHNlLFxyXG4gICAgcnVuTG9hZGluZzogZmFsc2UsXHJcbiAgfSk7XHJcbiAgY29uc3QgdmVyU3RvcmUgPSB1c2VWZXJzaW9uKCk7XHJcbiAgY29uc3Qgc2hvd0hpc3RvcnkgPSAoKSA9PiB7XHJcbiAgICBpZiAoaW5zdGFsbEN0cmwuc3RhdGUuaW5zdGFsbGluZykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBNb2RhbC5zaG93KDxIaXN0b3J5VmVyc2lvbiAvPiwge1xyXG4gICAgICB3aWR0aDogXCI1LjZyZW1cIixcclxuICAgIH0pO1xyXG4gIH07XHJcbiAgY29uc3QgaW5pdExvY2FsID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgYXdhaXQgaW5zdGFsbEN0cmwucGFyc2VJbnN0YWxsZWRBcHAoKTtcclxuICB9O1xyXG4gIGluaXRMb2NhbCgpO1xyXG4gIGNvbnN0IGluc3RhbGxBcHAgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBjb25zdCByZXMgPSBhd2FpdCB2ZXJTdG9yZS5nZXRMYXRlc3RWZXJzaW9uKCk7XHJcbiAgICBpZiAocmVzKSB7XHJcbiAgICAgIGluc3RhbGxDdHJsLmluc3RhbGwocmVzKTtcclxuICAgIH1cclxuICB9O1xyXG4gIGNvbnN0IGNoZWNrVXBkYXRlID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgbGF0ZXN0ID0gYXdhaXQgdmVyU3RvcmUuZ2V0TGF0ZXN0VmVyc2lvbigpO1xyXG4gICAgY29uc3QgYXBwID0gaW5zdGFsbEN0cmwuc3RhdGUuYXBwc1swXTtcclxuICAgIGlmIChhcHAuVmVyc2lvbiA9PSBsYXRlc3QudmVyc2lvbikge1xyXG4gICAgICBNb2RhbC5jb25maXJtKHtcclxuICAgICAgICB0aXRsZTogXCLmm7TmlrDmj5DnpLpcIixcclxuICAgICAgICBjb250ZW50OiBcIuW9k+WJjeW3sue7j+aYr+acgOaWsOeJiOacrO+8jOaXoOmcgOabtOaWsFwiLFxyXG4gICAgICAgIHR5cGU6IFwiZGFuZ2VyXCIsXHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBvayA9IGF3YWl0IE1vZGFsLmNvbmZpcm0oe1xyXG4gICAgICB0aXRsZTogXCLmm7TmlrDmj5DnpLpcIixcclxuICAgICAgY29udGVudDogYOW9k+WJjeeJiOacrHYke2FwcC5WZXJzaW9ufe+8jOacgOaWsOeJiOacrHYke2xhdGVzdC52ZXJzaW9ufe+8jOaYr+WQpumcgOimgeabtOaWsO+8n2AsXHJcbiAgICAgIHR5cGU6IFwiZGFuZ2VyXCIsXHJcbiAgICAgIG9rVGV4dDogXCLmm7TmlrBcIixcclxuICAgIH0pO1xyXG4gICAgaWYgKG9rKSB7XHJcbiAgICAgIGNvbnN0IHJ1bm5pbmdzID0gYXdhaXQgZGV2aWNlQ3RybC5HZXRSdW5uaW5nQXBwKCk7XHJcbiAgICAgIGlmIChydW5uaW5ncy5sZW5ndGgpIHtcclxuICAgICAgICBtZXNzYWdlLndhcm5pbmcoXCLor7flhYjlhbPpl63ova/ku7bvvIzlho3ov5vooYzmm7TmlrDvvIFcIik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGluc3RhbGxDdHJsLmluc3RhbGwobGF0ZXN0KTtcclxuICAgIH1cclxuICB9O1xyXG4gIGNvbnN0IHJ1bkFwcCA9IGFzeW5jICgpID0+IHtcclxuICAgIGNvbnN0IHJ1bm5pbmdzID0gYXdhaXQgZGV2aWNlQ3RybC5HZXRSdW5uaW5nQXBwKCk7XHJcbiAgICBpZiAocnVubmluZ3MubGVuZ3RoKSB7XHJcbiAgICAgIG1lc3NhZ2Uud2FybmluZyhcIui9r+S7tuW3suWQr+WKqO+8gVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgc3RhdGUucnVuTG9hZGluZyA9IHRydWU7XHJcbiAgICBjb25zdCBhcHAgPSBpbnN0YWxsQ3RybC5zdGF0ZS5hcHBzWzBdO1xyXG4gICAgY29uc3QgZXJyID0gYXdhaXQgZGV2aWNlQ3RybC5SdW5OYXRpdmVBcHAoXHJcbiAgICAgIG5hbm9pZCgpLFxyXG4gICAgICBhcHAuRXhlUGF0aCxcclxuICAgICAgW10sXHJcbiAgICAgIFwi5oiQ6YO9N+WPt+e6v+iZmuaLn+S7v+ecn+aVmeWtpuezu+e7n1wiLFxyXG4gICAgICBcImNyXCJcclxuICAgICk7XHJcbiAgICBpZiAoZXJyKSB7XHJcbiAgICAgIG1lc3NhZ2UuZXJyb3IoZXJyKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgc3RhdGUucnVuTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgZGV2aWNlQ3RybC5UcmF5Tm90aWNlKHtcclxuICAgICAgY29udGV4dDogYOi9r+S7tuWQr+WKqOaIkOWKn++8gWAsXHJcbiAgICB9KTtcclxuICB9O1xyXG4gIGNvbnN0IGJ0bnNSZW5kZXIgPSAoYXBwOiBhbnkpID0+IHtcclxuICAgIGlmICghYXBwKSB7XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgY2xhc3M9e1wiYnRuX3ByaW1hcnlcIn1cclxuICAgICAgICAgIG9uQ2xpY2s9e2luc3RhbGxBcHB9XHJcbiAgICAgICAgICBsb2FkaW5nPXtpbnN0YWxsQ3RybC5zdGF0ZS5pbnN0YWxsaW5nfVxyXG4gICAgICAgID5cclxuICAgICAgICAgIOWuieijhei9r+S7tlxyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPD5cclxuICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICBjbGFzcz17XCJidG5fZGFya1wifVxyXG4gICAgICAgICAgb25DbGljaz17Y2hlY2tVcGRhdGV9XHJcbiAgICAgICAgICBsb2FkaW5nPXtpbnN0YWxsQ3RybC5zdGF0ZS5pbnN0YWxsaW5nfVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtpbnN0YWxsQ3RybC5zdGF0ZS5pbnN0YWxsaW5nID8gXCLmm7TmlrDkuK1cIiA6IFwi5qOA5p+l5pu05pawXCJ9XHJcbiAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgY2xhc3M9e1wiYnRuX3ByaW1hcnlcIn1cclxuICAgICAgICAgIG9uQ2xpY2s9e3J1bkFwcH1cclxuICAgICAgICAgIGxvYWRpbmc9e3N0YXRlLnJ1bkxvYWRpbmd9XHJcbiAgICAgICAgICBkaXNhYmxlZD17aW5zdGFsbEN0cmwuc3RhdGUuaW5zdGFsbGluZ31cclxuICAgICAgICA+XHJcbiAgICAgICAgICDlkK/liqjova/ku7ZcclxuICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgPC8+XHJcbiAgICApO1xyXG4gIH07XHJcblxyXG4gIHJldHVybiAoKSA9PiB7XHJcbiAgICBjb25zdCBhcHAgPSBpbnN0YWxsQ3RybC5zdGF0ZS5hcHBzWzBdO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgPExheW91dCBjbGFzcz17UGFnZVJvb3R9PlxyXG4gICAgICAgIDxIZWFkZXIgLz5cclxuICAgICAgICA8ZGl2IGNsYXNzPXtcIm1haW5fY29udGVudFwifT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9e1wibWFpbl93YXJwcGVyXCJ9PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPXtcImxvZ29cIn0+XHJcbiAgICAgICAgICAgICAgPGltZyBzcmM9e2dldEltYWdlVXJsKFwibG9nby5wbmdcIil9IC8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPXtcImluZm9cIn0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz17XCJmb250X2xvZ29cIn0+XHJcbiAgICAgICAgICAgICAgICA8aW1nIHNyYz17Z2V0SW1hZ2VVcmwoXCJmb250X2xvZ28ucG5nXCIpfSAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9e1widmVyc2lvblwifT5cclxuICAgICAgICAgICAgICAgIHthcHAgJiYgPGRpdiBjbGFzcz17XCJ2X251bVwifT7niYjmnKzvvJp2e2FwcC5WZXJzaW9ufTwvZGl2Pn1cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9e1widl9ib3hcIn0+XHJcbiAgICAgICAgICAgICAgICAgIHtzdGF0ZS5uZWVkVXBkYXRlICYmIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPXtcInZfdGlwc1wifT7mnInmlrDniYjmnKzlj6/mm7TmlrA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAge2luc3RhbGxDdHJsLnN0YXRlLmRvd25Qcm9ncmVzcyAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz17XCJpbnN0YWxsX2Jhcl93YXJwcGVyXCJ9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz17XCJiYXJfdGV4dFwifT7kuIvovb3kuK08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9e1wiYmFyX2JveFwifT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPXtcImJhcl9pbm5lclwifVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogYCR7aW5zdGFsbEN0cmwuc3RhdGUuZG93blByb2dyZXNzfSVgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz17XCJiYXJfbnVtXCJ9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7aW5zdGFsbEN0cmwuc3RhdGUuZG93blByb2dyZXNzfSVcclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICB7aW5zdGFsbEN0cmwuc3RhdGUuaW5zdGFsbFByb2dyZXNzICYmIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPXtcImluc3RhbGxfYmFyX3dhcnBwZXJcIn0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPXtcImJhcl90ZXh0XCJ9PuWuieijheS4rTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz17XCJiYXJfYm94XCJ9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9e1wiYmFyX2lubmVyXCJ9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBgJHtpbnN0YWxsQ3RybC5zdGF0ZS5pbnN0YWxsUHJvZ3Jlc3N9JWAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPXtcImJhcl9udW1cIn0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHtpbnN0YWxsQ3RybC5zdGF0ZS5pbnN0YWxsUHJvZ3Jlc3N9JVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPXtcImJvdHRvbV93YXJwcGVyXCJ9PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz17XCJidG1fYnRuc1wifT57YnRuc1JlbmRlcihhcHApfTwvZGl2PlxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz17W1xyXG4gICAgICAgICAgICAgIFwiaGlzdG9yeV92ZXJpb3NuXCIsXHJcbiAgICAgICAgICAgICAgaW5zdGFsbEN0cmwuc3RhdGUuaW5zdGFsbGluZyA/IFwiZGlzYWJsZWRcIiA6IG51bGwsXHJcbiAgICAgICAgICAgIF19XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9e3Nob3dIaXN0b3J5fVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICDmn6XnnIvljoblj7LniYjmnKxcclxuICAgICAgICAgICAgPENhcmV0UmlnaHRPdXRsaW5lZCBjbGFzcz17XCJpY29uXCJ9IC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9MYXlvdXQ+XHJcbiAgICApO1xyXG4gIH07XHJcbn0pO1xyXG5jb25zdCBQYWdlUm9vdCA9IGNzc2BcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgaGVpZ2h0OiAxMDB2aDtcclxuICBtaW4taGVpZ2h0OiA3LjJyZW07XHJcbiAgYmFja2dyb3VuZDogdXJsKFwiQC9hc3NldHMvc3RhcnRlcl9iZy5wbmdcIikgbm8tcmVwZWF0IGNlbnRlci9jb3ZlcjtcclxuXHJcbiAgLm1haW5fY29udGVudCB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICB0b3A6IDU1JTtcclxuICAgIGxlZnQ6IDA7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICB9XHJcbiAgLm1haW5fd2FycHBlciB7XHJcbiAgICBwYWRkaW5nOiAwIDAuNjRyZW07XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgLmxvZ28ge1xyXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICAgIHdpZHRoOiAxLjZyZW07XHJcbiAgICAgIGhlaWdodDogMS42cmVtO1xyXG4gICAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmO1xyXG4gICAgICBib3gtc2hhZG93OiAwcHggM3B4IDI0cHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcclxuICAgICAgYm9yZGVyLXJhZGl1czogMC4ycmVtO1xyXG4gICAgICBpbWcge1xyXG4gICAgICAgIGhlaWdodDogMC43NXJlbTtcclxuICAgICAgICBvYmplY3QtZml0OiBjb250YWluO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICAuaW5mbyB7XHJcbiAgICAgIGZsZXg6IDE7XHJcbiAgICAgIHBhZGRpbmctdG9wOiAwLjI2cmVtO1xyXG4gICAgICBwYWRkaW5nLWxlZnQ6IDAuNHJlbTtcclxuICAgICAgLmZvbnRfbG9nbyB7XHJcbiAgICAgICAgaW1nIHtcclxuICAgICAgICAgIGhlaWdodDogMC4zOHJlbTtcclxuICAgICAgICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC52ZXJzaW9uIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogMC41cmVtO1xyXG4gICAgICAgIC52X251bSB7XHJcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuNHJlbTtcclxuICAgICAgICAgIGZvbnQtc2l6ZTogMC4xOHJlbTtcclxuICAgICAgICAgIGNvbG9yOiAjNzc3O1xyXG4gICAgICAgIH1cclxuICAgICAgICAudl9ib3gge1xyXG4gICAgICAgICAgZmxleDogMTtcclxuICAgICAgICAgIC52X3RpcHMge1xyXG4gICAgICAgICAgICBmb250LXNpemU6IDAuMThyZW07XHJcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgICAgICAgICAgIGNvbG9yOiAjZTM1NzU3O1xyXG4gICAgICAgICAgICAmOjpiZWZvcmUge1xyXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IFwiwrdcIjtcclxuICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwLjA2cmVtO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAuaW5zdGFsbF9iYXJfd2FycHBlciB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgICAgICBtYXgtd2lkdGg6IDY0MHB4O1xyXG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMTtcclxuICAgICAgICAgICAgLmJhcl90ZXh0IHtcclxuICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwLjJyZW07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLmJhcl9ib3gge1xyXG4gICAgICAgICAgICAgIGZsZXg6IDE7XHJcbiAgICAgICAgICAgICAgaGVpZ2h0OiAwLjFyZW07XHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzMzMztcclxuICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwLjA4cmVtO1xyXG5cclxuICAgICAgICAgICAgICAuYmFyX2lubmVyIHtcclxuICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlMzU3NTc7XHJcbiAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwLjA4cmVtO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAuYmFyX251bSB7XHJcbiAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwLjJyZW07XHJcbiAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjE2cmVtO1xyXG4gICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgLmJvdHRvbV93YXJwcGVyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBib3R0b206IDA7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBwYWRkaW5nOiAwIDAuNjRyZW0gMC42cmVtO1xyXG4gICAgLmJ0bV9idG5zIHtcclxuICAgICAgLmFudC1idG4ge1xyXG4gICAgICAgIGhlaWdodDogMC43cmVtO1xyXG4gICAgICAgIHBhZGRpbmc6IDAgMC43cmVtO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMC4yMnJlbTtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XHJcbiAgICAgICAgJi5idG5fZGFyayB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzMzO1xyXG4gICAgICAgICAgYm9yZGVyLWNvbG9yOiAjMzMzO1xyXG4gICAgICAgICAgY29sb3I6ICNmZmY7XHJcbiAgICAgICAgICBib3gtc2hhZG93OiAwcHggM3B4IDEycHggMXB4IHJnYmEoNTEsIDUxLCA1MSwgMC4zKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgJi5idG5fcHJpbWFyeSB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTM1NzU3O1xyXG4gICAgICAgICAgYm9yZGVyLWNvbG9yOiAjZTM1NzU3O1xyXG4gICAgICAgICAgY29sb3I6ICNmZmY7XHJcbiAgICAgICAgICBib3gtc2hhZG93OiAwcHggM3B4IDEycHggMXB4IHJnYmEoMjI3LCA4NywgODcsIDAuMyk7XHJcbiAgICAgICAgICAmOmRpc2FibGVkIHtcclxuICAgICAgICAgICAgb3BhY2l0eTogMC41O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAmIH4gLmFudC1idG4ge1xyXG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IDAuNHJlbTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC5oaXN0b3J5X3Zlcmlvc24ge1xyXG4gICAgICBmb250LXNpemU6IDAuMTZyZW07XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICBjb2xvcjogIzMzMztcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAmLmRpc2FibGVkIHtcclxuICAgICAgICBvcGFjaXR5OiAwLjY7XHJcbiAgICAgIH1cclxuICAgICAgLmljb24ge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgICBtYXJnaW4tbGVmdDogNnB4O1xyXG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbmA7XHJcbiJdfQ==