@ray-js/robot-map-sdk 0.0.3-beta-23 → 0.0.3-beta-24

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 (119) hide show
  1. package/dist/index.d.ts +1 -311
  2. package/dist/index.js +1 -1
  3. package/dist/utils/index.js +1 -1
  4. package/dist-docs/404.html +2 -2
  5. package/dist-docs/assets/{app.DKcv5ocC.js → app.DKtY-QgA.js} +1 -1
  6. package/dist-docs/assets/chunks/@localSearchIndexroot.Ck3G2TnR.js +1 -0
  7. package/dist-docs/assets/chunks/{VPLocalSearchBox.Ry2KicD5.js → VPLocalSearchBox.Is_bIGtF.js} +1 -1
  8. package/dist-docs/assets/chunks/{theme.D-vPQmyU.js → theme.CoICOtg5.js} +2 -2
  9. package/dist-docs/assets/{guide_advanced-usage.md.BquC67D7.js → guide_advanced-usage.md.BrZgx45A.js} +3 -1
  10. package/dist-docs/assets/{guide_advanced-usage.md.BquC67D7.lean.js → guide_advanced-usage.md.BrZgx45A.lean.js} +1 -1
  11. package/dist-docs/assets/{guide_getting-started.md.zACqR2O5.js → guide_getting-started.md.Cip1vgx6.js} +1 -1
  12. package/dist-docs/assets/reference_config.md.CfEp0H9c.js +61 -0
  13. package/dist-docs/assets/reference_config.md.CfEp0H9c.lean.js +1 -0
  14. package/dist-docs/guide/advanced-usage.html +7 -5
  15. package/dist-docs/guide/concepts.html +3 -3
  16. package/dist-docs/guide/getting-started.html +5 -5
  17. package/dist-docs/hashmap.json +1 -1
  18. package/dist-docs/index.html +3 -3
  19. package/dist-docs/reference/callbacks.html +3 -3
  20. package/dist-docs/reference/config.html +14 -8
  21. package/dist-docs/reference/data.html +3 -3
  22. package/dist-docs/reference/methods.html +3 -3
  23. package/dist-docs/reference/runtime.html +3 -3
  24. package/dist-docs/reference/types.html +3 -3
  25. package/dist-docs/reference/utils.html +3 -3
  26. package/package.json +1 -1
  27. package/dist/application/AppContainer.js +0 -1
  28. package/dist/application/AppService.js +0 -1
  29. package/dist/application/Interaction.js +0 -1
  30. package/dist/application/MapApplication.js +0 -1
  31. package/dist/application/ViewportContainer.js +0 -1
  32. package/dist/assets/carpet.png.js +0 -1
  33. package/dist/assets/chargingStation.png.js +0 -1
  34. package/dist/assets/checkmark.png.js +0 -1
  35. package/dist/assets/cleanMode0.png.js +0 -1
  36. package/dist/assets/cleanMode1.png.js +0 -1
  37. package/dist/assets/cleanMode2.png.js +0 -1
  38. package/dist/assets/cleanMode3.png.js +0 -1
  39. package/dist/assets/cleanTimes1.png.js +0 -1
  40. package/dist/assets/cleanTimes2.png.js +0 -1
  41. package/dist/assets/controlDelete.png.js +0 -1
  42. package/dist/assets/controlMove.png.js +0 -1
  43. package/dist/assets/controlRotate.png.js +0 -1
  44. package/dist/assets/controlScale.png.js +0 -1
  45. package/dist/assets/fan0.png.js +0 -1
  46. package/dist/assets/fan1.png.js +0 -1
  47. package/dist/assets/fan2.png.js +0 -1
  48. package/dist/assets/fan3.png.js +0 -1
  49. package/dist/assets/fan4.png.js +0 -1
  50. package/dist/assets/floorType1.png.js +0 -1
  51. package/dist/assets/floorType2.png.js +0 -1
  52. package/dist/assets/floorType3.png.js +0 -1
  53. package/dist/assets/robot.png.js +0 -1
  54. package/dist/assets/sleep.json.js +0 -1
  55. package/dist/assets/spot.png.js +0 -1
  56. package/dist/assets/water0.png.js +0 -1
  57. package/dist/assets/water1.png.js +0 -1
  58. package/dist/assets/water2.png.js +0 -1
  59. package/dist/assets/water3.png.js +0 -1
  60. package/dist/components/Base/BaseControlButton.js +0 -1
  61. package/dist/components/Base/Border.js +0 -1
  62. package/dist/components/Base/ControlFill.js +0 -1
  63. package/dist/components/Base/DashLine.js +0 -1
  64. package/dist/components/Base/EndPoint.js +0 -1
  65. package/dist/components/Base/EnhancedAnimatedSprite.js +0 -1
  66. package/dist/components/Base/EnhancedGifSprite.js +0 -1
  67. package/dist/components/Base/EnhancedSprite.js +0 -1
  68. package/dist/components/Base/FixedSizeContainer.js +0 -1
  69. package/dist/components/Base/FixedSizeDOMContainer.js +0 -1
  70. package/dist/components/Base/FixedSizeText.js +0 -1
  71. package/dist/components/Base/MoveControlButton.js +0 -1
  72. package/dist/components/Base/RemoveControlButton.js +0 -1
  73. package/dist/components/Base/Ring.js +0 -1
  74. package/dist/components/Base/RotateControlButton.js +0 -1
  75. package/dist/components/Base/ScaleControlButton.js +0 -1
  76. package/dist/components/Base/Zone.js +0 -1
  77. package/dist/components/ChargingStation/ChargingStationIcon.js +0 -1
  78. package/dist/components/ChargingStation/index.js +0 -1
  79. package/dist/components/Controls/CleanZone.js +0 -1
  80. package/dist/components/Controls/Divider.js +0 -1
  81. package/dist/components/Controls/ForbiddenMopZone.js +0 -1
  82. package/dist/components/Controls/ForbiddenSweepZone.js +0 -1
  83. package/dist/components/Controls/Spot.js +0 -1
  84. package/dist/components/Controls/VirtualWall.js +0 -1
  85. package/dist/components/CustomElements/CustomGif.js +0 -1
  86. package/dist/components/CustomElements/CustomHTML.js +0 -1
  87. package/dist/components/CustomElements/CustomImage.js +0 -1
  88. package/dist/components/DetectedObject/index.js +0 -1
  89. package/dist/components/Heatmap/index.js +0 -1
  90. package/dist/components/Map/Carpet.js +0 -1
  91. package/dist/components/Map/Free.js +0 -1
  92. package/dist/components/Map/Obstacle.js +0 -1
  93. package/dist/components/Map/RoomFill.js +0 -1
  94. package/dist/components/Path/index.js +0 -1
  95. package/dist/components/Robot/RobotIcon.js +0 -1
  96. package/dist/components/Robot/SleepAnimation.js +0 -1
  97. package/dist/components/Robot/index.js +0 -1
  98. package/dist/components/RoomFloorType/index.js +0 -1
  99. package/dist/components/RoomInfo/RoomName.js +0 -1
  100. package/dist/components/RoomInfo/RoomProperty.js +0 -1
  101. package/dist/components/RoomInfo/RoomSelectionIndicator.js +0 -1
  102. package/dist/components/RoomInfo/index.js +0 -1
  103. package/dist/constant/config.js +0 -1
  104. package/dist/constant/index.js +0 -1
  105. package/dist/managers/ControlsManager.js +0 -1
  106. package/dist/managers/CustomElementsManager.js +0 -1
  107. package/dist/managers/DetectedObjectManager.js +0 -1
  108. package/dist/managers/HeatmapManager.js +0 -1
  109. package/dist/managers/MapManager.js +0 -1
  110. package/dist/managers/PathManager.js +0 -1
  111. package/dist/managers/RoomManager.js +0 -1
  112. package/dist/mixins/ClickHandler.js +0 -1
  113. package/dist/utils/algorithm.js +0 -1
  114. package/dist/utils/browser.js +0 -1
  115. package/dist/utils/logger.js +0 -1
  116. package/dist-docs/assets/chunks/@localSearchIndexroot.C-cF3iZs.js +0 -1
  117. package/dist-docs/assets/reference_config.md.CRlb96P2.js +0 -55
  118. package/dist-docs/assets/reference_config.md.CRlb96P2.lean.js +0 -1
  119. /package/dist-docs/assets/{guide_getting-started.md.zACqR2O5.lean.js → guide_getting-started.md.Cip1vgx6.lean.js} +0 -0
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/assets/style.CN_tJoU2.css" as="style">
10
10
  <link rel="preload stylesheet" href="/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/assets/app.DKcv5ocC.js"></script>
12
+ <script type="module" src="/assets/app.DKtY-QgA.js"></script>
13
13
  <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/assets/chunks/theme.D-vPQmyU.js">
14
+ <link rel="modulepreload" href="/assets/chunks/theme.CoICOtg5.js">
15
15
  <link rel="modulepreload" href="/assets/chunks/framework.DRADY2L-.js">
16
16
  <link rel="modulepreload" href="/assets/reference_data.md.B8JfrRhl.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -174,7 +174,7 @@
174
174
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">]</span></span>
175
175
  <span class="line"></span>
176
176
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">RobotMap</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> customElements</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">{customElements} /&gt;</span></span></code></pre></div><p><strong>类型</strong>: <a href="/reference/types.html#customelementparam"><code>CustomElementParam[]</code></a></p></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-e257564d><!--[--><!--]--><div class="edit-info" data-v-e257564d><!----><div class="last-updated" data-v-e257564d><p class="VPLastUpdated" data-v-e257564d data-v-e98dd255>最后更新于: <time datetime="2025-10-09T07:01:12.000Z" data-v-e98dd255></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-e257564d><span class="visually-hidden" id="doc-footer-aria-label" data-v-e257564d>Pager</span><div class="pager" data-v-e257564d><!----></div><div class="pager" data-v-e257564d><a class="VPLink link pager-link next" href="/reference/config.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Next page</span><span class="title" data-v-e257564d>配置</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
177
- <script>window.__VP_HASH_MAP__=JSON.parse("{\"guide_advanced-usage.md\":\"BquC67D7\",\"guide_concepts.md\":\"CAoYwZmS\",\"guide_getting-started.md\":\"zACqR2O5\",\"index.md\":\"Sm6vD2Gl\",\"reference_callbacks.md\":\"-S6uhkXO\",\"reference_config.md\":\"CRlb96P2\",\"reference_data.md\":\"B8JfrRhl\",\"reference_methods.md\":\"D1VYgciC\",\"reference_runtime.md\":\"UJkdf65W\",\"reference_types.md\":\"DkIhhJD0\",\"reference_utils.md\":\"CSshxnp0\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Tuya Robot Map\",\"description\":\"涂鸦扫地机地图组件\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"siteTitle\":\"Tuya Robot Map\",\"outline\":{\"level\":[2,5],\"label\":\"页面导航\"},\"nav\":[{\"text\":\"首页\",\"link\":\"/\"},{\"text\":\"指南\",\"link\":\"/guide/concepts\",\"activeMatch\":\"^/guide/\"},{\"text\":\"参考\",\"link\":\"/reference/data\",\"activeMatch\":\"^/reference/\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指南\",\"items\":[{\"text\":\"基本概念\",\"link\":\"/guide/concepts\"},{\"text\":\"快速开始\",\"link\":\"/guide/getting-started\"},{\"text\":\"进阶使用\",\"link\":\"/guide/advanced-usage\"}]}],\"/reference/\":[{\"text\":\"组件Props\",\"items\":[{\"text\":\"数据\",\"link\":\"/reference/data\"},{\"text\":\"配置\",\"link\":\"/reference/config\"},{\"text\":\"运行时\",\"link\":\"/reference/runtime\"},{\"text\":\"地图事件回调\",\"link\":\"/reference/callbacks\"}]},{\"text\":\"方法\",\"items\":[{\"text\":\"地图方法\",\"link\":\"/reference/methods\"},{\"text\":\"工具方法\",\"link\":\"/reference/utils\"}]},{\"text\":\"类型定义\",\"items\":[{\"text\":\"类型定义\",\"link\":\"/reference/types\"}]}]},\"search\":{\"provider\":\"local\"},\"lastUpdated\":{\"text\":\"最后更新于\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"short\"}}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
177
+ <script>window.__VP_HASH_MAP__=JSON.parse("{\"guide_advanced-usage.md\":\"BrZgx45A\",\"guide_concepts.md\":\"CAoYwZmS\",\"guide_getting-started.md\":\"Cip1vgx6\",\"index.md\":\"Sm6vD2Gl\",\"reference_callbacks.md\":\"-S6uhkXO\",\"reference_config.md\":\"CfEp0H9c\",\"reference_data.md\":\"B8JfrRhl\",\"reference_methods.md\":\"D1VYgciC\",\"reference_runtime.md\":\"UJkdf65W\",\"reference_types.md\":\"DkIhhJD0\",\"reference_utils.md\":\"CSshxnp0\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Tuya Robot Map\",\"description\":\"涂鸦扫地机地图组件\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"siteTitle\":\"Tuya Robot Map\",\"outline\":{\"level\":[2,5],\"label\":\"页面导航\"},\"nav\":[{\"text\":\"首页\",\"link\":\"/\"},{\"text\":\"指南\",\"link\":\"/guide/concepts\",\"activeMatch\":\"^/guide/\"},{\"text\":\"参考\",\"link\":\"/reference/data\",\"activeMatch\":\"^/reference/\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指南\",\"items\":[{\"text\":\"基本概念\",\"link\":\"/guide/concepts\"},{\"text\":\"快速开始\",\"link\":\"/guide/getting-started\"},{\"text\":\"进阶使用\",\"link\":\"/guide/advanced-usage\"}]}],\"/reference/\":[{\"text\":\"组件Props\",\"items\":[{\"text\":\"数据\",\"link\":\"/reference/data\"},{\"text\":\"配置\",\"link\":\"/reference/config\"},{\"text\":\"运行时\",\"link\":\"/reference/runtime\"},{\"text\":\"地图事件回调\",\"link\":\"/reference/callbacks\"}]},{\"text\":\"方法\",\"items\":[{\"text\":\"地图方法\",\"link\":\"/reference/methods\"},{\"text\":\"工具方法\",\"link\":\"/reference/utils\"}]},{\"text\":\"类型定义\",\"items\":[{\"text\":\"类型定义\",\"link\":\"/reference/types\"}]}]},\"search\":{\"provider\":\"local\"},\"lastUpdated\":{\"text\":\"最后更新于\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"short\"}}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
178
178
 
179
179
  </body>
180
180
  </html>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/assets/style.CN_tJoU2.css" as="style">
10
10
  <link rel="preload stylesheet" href="/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/assets/app.DKcv5ocC.js"></script>
12
+ <script type="module" src="/assets/app.DKtY-QgA.js"></script>
13
13
  <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/assets/chunks/theme.D-vPQmyU.js">
14
+ <link rel="modulepreload" href="/assets/chunks/theme.CoICOtg5.js">
15
15
  <link rel="modulepreload" href="/assets/chunks/framework.DRADY2L-.js">
16
16
  <link rel="modulepreload" href="/assets/reference_methods.md.D1VYgciC.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -80,7 +80,7 @@
80
80
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> },</span></span>
81
81
  <span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> runtime</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> DeepPartialRuntimeConfig</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
82
82
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Promise</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">string</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt;</span></span></code></pre></div><p><strong>参数</strong>:</p><ul><li><code>data</code> - 地图数据对象</li><li><code>data.map</code>: <code>string</code> - 地图字符串数据</li><li><code>data.path</code>: <code>string</code> - 可选的路径数据</li><li><code>data.roomProperties</code>: <code>RoomProperty[]</code> - 可选的房间属性数据</li><li><code>data.customElements</code>: <code>CustomElementParam[]</code> - 可选的自定义元素数据</li><li><code>data.forbiddenSweepZones</code>: <code>ZoneParam[]</code> - 可选的禁扫区域数据</li><li><code>data.forbiddenMopZones</code>: <code>ZoneParam[]</code> - 可选的禁拖区域数据</li><li><code>data.virtualWalls</code>: <code>VirtualWallParam[]</code> - 可选的虚拟墙数据</li><li><code>data.detectedObjects</code>: <code>DetectedObjectParam[]</code> - 可选的检测物体数据</li><li><code>runtime</code> - 可选的运行时配置</li></ul><p><strong>返回值</strong>: <a href="/reference/types.html#string"><code>Promise&lt;string&gt;</code></a></p></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-e257564d><!--[--><!--]--><div class="edit-info" data-v-e257564d><!----><div class="last-updated" data-v-e257564d><p class="VPLastUpdated" data-v-e257564d data-v-e98dd255>最后更新于: <time datetime="2025-10-20T09:49:40.000Z" data-v-e98dd255></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-e257564d><span class="visually-hidden" id="doc-footer-aria-label" data-v-e257564d>Pager</span><div class="pager" data-v-e257564d><a class="VPLink link pager-link prev" href="/reference/callbacks.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Previous page</span><span class="title" data-v-e257564d>地图事件回调</span><!--]--></a></div><div class="pager" data-v-e257564d><a class="VPLink link pager-link next" href="/reference/utils.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Next page</span><span class="title" data-v-e257564d>工具方法</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
83
- <script>window.__VP_HASH_MAP__=JSON.parse("{\"guide_advanced-usage.md\":\"BquC67D7\",\"guide_concepts.md\":\"CAoYwZmS\",\"guide_getting-started.md\":\"zACqR2O5\",\"index.md\":\"Sm6vD2Gl\",\"reference_callbacks.md\":\"-S6uhkXO\",\"reference_config.md\":\"CRlb96P2\",\"reference_data.md\":\"B8JfrRhl\",\"reference_methods.md\":\"D1VYgciC\",\"reference_runtime.md\":\"UJkdf65W\",\"reference_types.md\":\"DkIhhJD0\",\"reference_utils.md\":\"CSshxnp0\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Tuya Robot Map\",\"description\":\"涂鸦扫地机地图组件\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"siteTitle\":\"Tuya Robot Map\",\"outline\":{\"level\":[2,5],\"label\":\"页面导航\"},\"nav\":[{\"text\":\"首页\",\"link\":\"/\"},{\"text\":\"指南\",\"link\":\"/guide/concepts\",\"activeMatch\":\"^/guide/\"},{\"text\":\"参考\",\"link\":\"/reference/data\",\"activeMatch\":\"^/reference/\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指南\",\"items\":[{\"text\":\"基本概念\",\"link\":\"/guide/concepts\"},{\"text\":\"快速开始\",\"link\":\"/guide/getting-started\"},{\"text\":\"进阶使用\",\"link\":\"/guide/advanced-usage\"}]}],\"/reference/\":[{\"text\":\"组件Props\",\"items\":[{\"text\":\"数据\",\"link\":\"/reference/data\"},{\"text\":\"配置\",\"link\":\"/reference/config\"},{\"text\":\"运行时\",\"link\":\"/reference/runtime\"},{\"text\":\"地图事件回调\",\"link\":\"/reference/callbacks\"}]},{\"text\":\"方法\",\"items\":[{\"text\":\"地图方法\",\"link\":\"/reference/methods\"},{\"text\":\"工具方法\",\"link\":\"/reference/utils\"}]},{\"text\":\"类型定义\",\"items\":[{\"text\":\"类型定义\",\"link\":\"/reference/types\"}]}]},\"search\":{\"provider\":\"local\"},\"lastUpdated\":{\"text\":\"最后更新于\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"short\"}}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
83
+ <script>window.__VP_HASH_MAP__=JSON.parse("{\"guide_advanced-usage.md\":\"BrZgx45A\",\"guide_concepts.md\":\"CAoYwZmS\",\"guide_getting-started.md\":\"Cip1vgx6\",\"index.md\":\"Sm6vD2Gl\",\"reference_callbacks.md\":\"-S6uhkXO\",\"reference_config.md\":\"CfEp0H9c\",\"reference_data.md\":\"B8JfrRhl\",\"reference_methods.md\":\"D1VYgciC\",\"reference_runtime.md\":\"UJkdf65W\",\"reference_types.md\":\"DkIhhJD0\",\"reference_utils.md\":\"CSshxnp0\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Tuya Robot Map\",\"description\":\"涂鸦扫地机地图组件\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"siteTitle\":\"Tuya Robot Map\",\"outline\":{\"level\":[2,5],\"label\":\"页面导航\"},\"nav\":[{\"text\":\"首页\",\"link\":\"/\"},{\"text\":\"指南\",\"link\":\"/guide/concepts\",\"activeMatch\":\"^/guide/\"},{\"text\":\"参考\",\"link\":\"/reference/data\",\"activeMatch\":\"^/reference/\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指南\",\"items\":[{\"text\":\"基本概念\",\"link\":\"/guide/concepts\"},{\"text\":\"快速开始\",\"link\":\"/guide/getting-started\"},{\"text\":\"进阶使用\",\"link\":\"/guide/advanced-usage\"}]}],\"/reference/\":[{\"text\":\"组件Props\",\"items\":[{\"text\":\"数据\",\"link\":\"/reference/data\"},{\"text\":\"配置\",\"link\":\"/reference/config\"},{\"text\":\"运行时\",\"link\":\"/reference/runtime\"},{\"text\":\"地图事件回调\",\"link\":\"/reference/callbacks\"}]},{\"text\":\"方法\",\"items\":[{\"text\":\"地图方法\",\"link\":\"/reference/methods\"},{\"text\":\"工具方法\",\"link\":\"/reference/utils\"}]},{\"text\":\"类型定义\",\"items\":[{\"text\":\"类型定义\",\"link\":\"/reference/types\"}]}]},\"search\":{\"provider\":\"local\"},\"lastUpdated\":{\"text\":\"最后更新于\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"short\"}}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
84
84
 
85
85
  </body>
86
86
  </html>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/assets/style.CN_tJoU2.css" as="style">
10
10
  <link rel="preload stylesheet" href="/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/assets/app.DKcv5ocC.js"></script>
12
+ <script type="module" src="/assets/app.DKtY-QgA.js"></script>
13
13
  <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/assets/chunks/theme.D-vPQmyU.js">
14
+ <link rel="modulepreload" href="/assets/chunks/theme.CoICOtg5.js">
15
15
  <link rel="modulepreload" href="/assets/chunks/framework.DRADY2L-.js">
16
16
  <link rel="modulepreload" href="/assets/reference_runtime.md.UJkdf65W.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -37,7 +37,7 @@
37
37
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> /&gt;</span></span>
38
38
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;"> )</span></span>
39
39
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div><h2 id="dividingroomid" tabindex="-1">dividingRoomId <a class="header-anchor" href="#dividingroomid" aria-label="Permalink to &quot;dividingRoomId&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>number</code> | <code>null</code></li><li><strong>默认值</strong>: <code>null</code></li></ul><p>正在分割的房间ID。</p><h2 id="enableroomselection" tabindex="-1">enableRoomSelection <a class="header-anchor" href="#enableroomselection" aria-label="Permalink to &quot;enableRoomSelection&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>false</code></li></ul><p>是否启用房间选择功能</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>当 <code>enableRoomSelection</code> 为 <code>false</code> 时,房间会始终处于高亮状态。</p><p>当 <code>enableRoomSelection</code> 为 <code>true</code> 时,房间是否高亮取决于 <code>selectRoomIds</code> 是否包含该房间ID。</p></div><h2 id="editingforbiddensweepzoneids" tabindex="-1">editingForbiddenSweepZoneIds <a class="header-anchor" href="#editingforbiddensweepzoneids" aria-label="Permalink to &quot;editingForbiddenSweepZoneIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>正在编辑的禁扫区域ID列表。</p><h2 id="editingforbiddenmopzoneids" tabindex="-1">editingForbiddenMopZoneIds <a class="header-anchor" href="#editingforbiddenmopzoneids" aria-label="Permalink to &quot;editingForbiddenMopZoneIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>正在编辑的禁拖区域ID列表。</p><h2 id="editingcleanzoneids" tabindex="-1">editingCleanZoneIds <a class="header-anchor" href="#editingcleanzoneids" aria-label="Permalink to &quot;editingCleanZoneIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>正在编辑的清扫区域ID列表。</p><h2 id="editingvirtualwallids" tabindex="-1">editingVirtualWallIds <a class="header-anchor" href="#editingvirtualwallids" aria-label="Permalink to &quot;editingVirtualWallIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>正在编辑的虚拟墙ID列表。</p><h2 id="editingspotids" tabindex="-1">editingSpotIds <a class="header-anchor" href="#editingspotids" aria-label="Permalink to &quot;editingSpotIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>string[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>正在编辑的定点清扫ID列表。</p><h2 id="roompropertyfoldids" tabindex="-1">roomPropertyFoldIds <a class="header-anchor" href="#roompropertyfoldids" aria-label="Permalink to &quot;roomPropertyFoldIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>number[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>处于折叠状态的房间ID列表。</p><h2 id="roomselectionmode" tabindex="-1">roomSelectionMode <a class="header-anchor" href="#roomselectionmode" aria-label="Permalink to &quot;roomSelectionMode&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>&#39;checkmark&#39; | &#39;order&#39;</code></li><li><strong>默认值</strong>: <code>&#39;checkmark&#39;</code></li></ul><p>房间选中的指示方式。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>当 <code>roomSelectionMode</code> 为 <code>&#39;checkmark&#39;</code> 时,房间选中后会显示选择指示器。</p><p>当 <code>roomSelectionMode</code> 为 <code>&#39;order&#39;</code> 时,房间选中后会显示清扫顺序数字。</p></div><h2 id="selectroomids" tabindex="-1">selectRoomIds <a class="header-anchor" href="#selectroomids" aria-label="Permalink to &quot;selectRoomIds&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>number[]</code></li><li><strong>默认值</strong>: <code>[]</code></li></ul><p>选中的房间ID列表。只有当 <code>enableRoomSelection</code> 为 <code>true</code> 时,这个值才会生效。</p><h2 id="showroomproperty" tabindex="-1">showRoomProperty <a class="header-anchor" href="#showroomproperty" aria-label="Permalink to &quot;showRoomProperty&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>false</code></li></ul><p>是否显示房间属性。</p><h2 id="showroomorder" tabindex="-1">showRoomOrder <a class="header-anchor" href="#showroomorder" aria-label="Permalink to &quot;showRoomOrder&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示房间清扫顺序。</p><h2 id="showroomname" tabindex="-1">showRoomName <a class="header-anchor" href="#showroomname" aria-label="Permalink to &quot;showRoomName&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示房间名称。</p><h2 id="showpath" tabindex="-1">showPath <a class="header-anchor" href="#showpath" aria-label="Permalink to &quot;showPath&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示机器人路径。</p><h2 id="showchargingstation" tabindex="-1">showChargingStation <a class="header-anchor" href="#showchargingstation" aria-label="Permalink to &quot;showChargingStation&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示充电桩。</p><h2 id="showroomfloortype" tabindex="-1">showRoomFloorType <a class="header-anchor" href="#showroomfloortype" aria-label="Permalink to &quot;showRoomFloorType&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示房间地板材质。</p><h2 id="showcarpet" tabindex="-1">showCarpet <a class="header-anchor" href="#showcarpet" aria-label="Permalink to &quot;showCarpet&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>true</code></li></ul><p>是否显示地毯。</p><h2 id="showchargingstationring" tabindex="-1">showChargingStationRing <a class="header-anchor" href="#showchargingstationring" aria-label="Permalink to &quot;showChargingStationRing&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>false</code></li></ul><p>是否显示充电桩预警圈。</p><h2 id="showrobotring" tabindex="-1">showRobotRing <a class="header-anchor" href="#showrobotring" aria-label="Permalink to &quot;showRobotRing&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>false</code></li></ul><p>是否显示机器人预警圈。</p><h2 id="showrobotsleepanimation" tabindex="-1">showRobotSleepAnimation <a class="header-anchor" href="#showrobotsleepanimation" aria-label="Permalink to &quot;showRobotSleepAnimation&quot;">​</a></h2><ul><li><strong>类型</strong>: <code>boolean</code></li><li><strong>默认值</strong>: <code>false</code></li></ul><p>是否显示机器人睡眠动画。</p></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-e257564d><!--[--><!--]--><div class="edit-info" data-v-e257564d><!----><div class="last-updated" data-v-e257564d><p class="VPLastUpdated" data-v-e257564d data-v-e98dd255>最后更新于: <time datetime="2025-10-09T07:25:35.000Z" data-v-e98dd255></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-e257564d><span class="visually-hidden" id="doc-footer-aria-label" data-v-e257564d>Pager</span><div class="pager" data-v-e257564d><a class="VPLink link pager-link prev" href="/reference/config.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Previous page</span><span class="title" data-v-e257564d>配置</span><!--]--></a></div><div class="pager" data-v-e257564d><a class="VPLink link pager-link next" href="/reference/callbacks.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Next page</span><span class="title" data-v-e257564d>地图事件回调</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
40
- <script>window.__VP_HASH_MAP__=JSON.parse("{\"guide_advanced-usage.md\":\"BquC67D7\",\"guide_concepts.md\":\"CAoYwZmS\",\"guide_getting-started.md\":\"zACqR2O5\",\"index.md\":\"Sm6vD2Gl\",\"reference_callbacks.md\":\"-S6uhkXO\",\"reference_config.md\":\"CRlb96P2\",\"reference_data.md\":\"B8JfrRhl\",\"reference_methods.md\":\"D1VYgciC\",\"reference_runtime.md\":\"UJkdf65W\",\"reference_types.md\":\"DkIhhJD0\",\"reference_utils.md\":\"CSshxnp0\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Tuya Robot Map\",\"description\":\"涂鸦扫地机地图组件\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"siteTitle\":\"Tuya Robot Map\",\"outline\":{\"level\":[2,5],\"label\":\"页面导航\"},\"nav\":[{\"text\":\"首页\",\"link\":\"/\"},{\"text\":\"指南\",\"link\":\"/guide/concepts\",\"activeMatch\":\"^/guide/\"},{\"text\":\"参考\",\"link\":\"/reference/data\",\"activeMatch\":\"^/reference/\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指南\",\"items\":[{\"text\":\"基本概念\",\"link\":\"/guide/concepts\"},{\"text\":\"快速开始\",\"link\":\"/guide/getting-started\"},{\"text\":\"进阶使用\",\"link\":\"/guide/advanced-usage\"}]}],\"/reference/\":[{\"text\":\"组件Props\",\"items\":[{\"text\":\"数据\",\"link\":\"/reference/data\"},{\"text\":\"配置\",\"link\":\"/reference/config\"},{\"text\":\"运行时\",\"link\":\"/reference/runtime\"},{\"text\":\"地图事件回调\",\"link\":\"/reference/callbacks\"}]},{\"text\":\"方法\",\"items\":[{\"text\":\"地图方法\",\"link\":\"/reference/methods\"},{\"text\":\"工具方法\",\"link\":\"/reference/utils\"}]},{\"text\":\"类型定义\",\"items\":[{\"text\":\"类型定义\",\"link\":\"/reference/types\"}]}]},\"search\":{\"provider\":\"local\"},\"lastUpdated\":{\"text\":\"最后更新于\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"short\"}}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
40
+ <script>window.__VP_HASH_MAP__=JSON.parse("{\"guide_advanced-usage.md\":\"BrZgx45A\",\"guide_concepts.md\":\"CAoYwZmS\",\"guide_getting-started.md\":\"Cip1vgx6\",\"index.md\":\"Sm6vD2Gl\",\"reference_callbacks.md\":\"-S6uhkXO\",\"reference_config.md\":\"CfEp0H9c\",\"reference_data.md\":\"B8JfrRhl\",\"reference_methods.md\":\"D1VYgciC\",\"reference_runtime.md\":\"UJkdf65W\",\"reference_types.md\":\"DkIhhJD0\",\"reference_utils.md\":\"CSshxnp0\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Tuya Robot Map\",\"description\":\"涂鸦扫地机地图组件\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"siteTitle\":\"Tuya Robot Map\",\"outline\":{\"level\":[2,5],\"label\":\"页面导航\"},\"nav\":[{\"text\":\"首页\",\"link\":\"/\"},{\"text\":\"指南\",\"link\":\"/guide/concepts\",\"activeMatch\":\"^/guide/\"},{\"text\":\"参考\",\"link\":\"/reference/data\",\"activeMatch\":\"^/reference/\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指南\",\"items\":[{\"text\":\"基本概念\",\"link\":\"/guide/concepts\"},{\"text\":\"快速开始\",\"link\":\"/guide/getting-started\"},{\"text\":\"进阶使用\",\"link\":\"/guide/advanced-usage\"}]}],\"/reference/\":[{\"text\":\"组件Props\",\"items\":[{\"text\":\"数据\",\"link\":\"/reference/data\"},{\"text\":\"配置\",\"link\":\"/reference/config\"},{\"text\":\"运行时\",\"link\":\"/reference/runtime\"},{\"text\":\"地图事件回调\",\"link\":\"/reference/callbacks\"}]},{\"text\":\"方法\",\"items\":[{\"text\":\"地图方法\",\"link\":\"/reference/methods\"},{\"text\":\"工具方法\",\"link\":\"/reference/utils\"}]},{\"text\":\"类型定义\",\"items\":[{\"text\":\"类型定义\",\"link\":\"/reference/types\"}]}]},\"search\":{\"provider\":\"local\"},\"lastUpdated\":{\"text\":\"最后更新于\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"short\"}}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
41
41
 
42
42
  </body>
43
43
  </html>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/assets/style.CN_tJoU2.css" as="style">
10
10
  <link rel="preload stylesheet" href="/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/assets/app.DKcv5ocC.js"></script>
12
+ <script type="module" src="/assets/app.DKtY-QgA.js"></script>
13
13
  <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/assets/chunks/theme.D-vPQmyU.js">
14
+ <link rel="modulepreload" href="/assets/chunks/theme.CoICOtg5.js">
15
15
  <link rel="modulepreload" href="/assets/chunks/framework.DRADY2L-.js">
16
16
  <link rel="modulepreload" href="/assets/reference_types.md.DkIhhJD0.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -190,7 +190,7 @@
190
190
  <span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#6A737D;"> /** 自定义数据 */</span></span>
191
191
  <span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> customData</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Record</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&lt;</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">string</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;">any</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">&gt;</span></span>
192
192
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">}</span></span></code></pre></div></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-e257564d><!--[--><!--]--><div class="edit-info" data-v-e257564d><!----><div class="last-updated" data-v-e257564d><p class="VPLastUpdated" data-v-e257564d data-v-e98dd255>最后更新于: <time datetime="2025-10-21T11:12:05.000Z" data-v-e98dd255></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-e257564d><span class="visually-hidden" id="doc-footer-aria-label" data-v-e257564d>Pager</span><div class="pager" data-v-e257564d><a class="VPLink link pager-link prev" href="/reference/utils.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Previous page</span><span class="title" data-v-e257564d>工具方法</span><!--]--></a></div><div class="pager" data-v-e257564d><!----></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
193
- <script>window.__VP_HASH_MAP__=JSON.parse("{\"guide_advanced-usage.md\":\"BquC67D7\",\"guide_concepts.md\":\"CAoYwZmS\",\"guide_getting-started.md\":\"zACqR2O5\",\"index.md\":\"Sm6vD2Gl\",\"reference_callbacks.md\":\"-S6uhkXO\",\"reference_config.md\":\"CRlb96P2\",\"reference_data.md\":\"B8JfrRhl\",\"reference_methods.md\":\"D1VYgciC\",\"reference_runtime.md\":\"UJkdf65W\",\"reference_types.md\":\"DkIhhJD0\",\"reference_utils.md\":\"CSshxnp0\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Tuya Robot Map\",\"description\":\"涂鸦扫地机地图组件\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"siteTitle\":\"Tuya Robot Map\",\"outline\":{\"level\":[2,5],\"label\":\"页面导航\"},\"nav\":[{\"text\":\"首页\",\"link\":\"/\"},{\"text\":\"指南\",\"link\":\"/guide/concepts\",\"activeMatch\":\"^/guide/\"},{\"text\":\"参考\",\"link\":\"/reference/data\",\"activeMatch\":\"^/reference/\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指南\",\"items\":[{\"text\":\"基本概念\",\"link\":\"/guide/concepts\"},{\"text\":\"快速开始\",\"link\":\"/guide/getting-started\"},{\"text\":\"进阶使用\",\"link\":\"/guide/advanced-usage\"}]}],\"/reference/\":[{\"text\":\"组件Props\",\"items\":[{\"text\":\"数据\",\"link\":\"/reference/data\"},{\"text\":\"配置\",\"link\":\"/reference/config\"},{\"text\":\"运行时\",\"link\":\"/reference/runtime\"},{\"text\":\"地图事件回调\",\"link\":\"/reference/callbacks\"}]},{\"text\":\"方法\",\"items\":[{\"text\":\"地图方法\",\"link\":\"/reference/methods\"},{\"text\":\"工具方法\",\"link\":\"/reference/utils\"}]},{\"text\":\"类型定义\",\"items\":[{\"text\":\"类型定义\",\"link\":\"/reference/types\"}]}]},\"search\":{\"provider\":\"local\"},\"lastUpdated\":{\"text\":\"最后更新于\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"short\"}}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
193
+ <script>window.__VP_HASH_MAP__=JSON.parse("{\"guide_advanced-usage.md\":\"BrZgx45A\",\"guide_concepts.md\":\"CAoYwZmS\",\"guide_getting-started.md\":\"Cip1vgx6\",\"index.md\":\"Sm6vD2Gl\",\"reference_callbacks.md\":\"-S6uhkXO\",\"reference_config.md\":\"CfEp0H9c\",\"reference_data.md\":\"B8JfrRhl\",\"reference_methods.md\":\"D1VYgciC\",\"reference_runtime.md\":\"UJkdf65W\",\"reference_types.md\":\"DkIhhJD0\",\"reference_utils.md\":\"CSshxnp0\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Tuya Robot Map\",\"description\":\"涂鸦扫地机地图组件\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"siteTitle\":\"Tuya Robot Map\",\"outline\":{\"level\":[2,5],\"label\":\"页面导航\"},\"nav\":[{\"text\":\"首页\",\"link\":\"/\"},{\"text\":\"指南\",\"link\":\"/guide/concepts\",\"activeMatch\":\"^/guide/\"},{\"text\":\"参考\",\"link\":\"/reference/data\",\"activeMatch\":\"^/reference/\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指南\",\"items\":[{\"text\":\"基本概念\",\"link\":\"/guide/concepts\"},{\"text\":\"快速开始\",\"link\":\"/guide/getting-started\"},{\"text\":\"进阶使用\",\"link\":\"/guide/advanced-usage\"}]}],\"/reference/\":[{\"text\":\"组件Props\",\"items\":[{\"text\":\"数据\",\"link\":\"/reference/data\"},{\"text\":\"配置\",\"link\":\"/reference/config\"},{\"text\":\"运行时\",\"link\":\"/reference/runtime\"},{\"text\":\"地图事件回调\",\"link\":\"/reference/callbacks\"}]},{\"text\":\"方法\",\"items\":[{\"text\":\"地图方法\",\"link\":\"/reference/methods\"},{\"text\":\"工具方法\",\"link\":\"/reference/utils\"}]},{\"text\":\"类型定义\",\"items\":[{\"text\":\"类型定义\",\"link\":\"/reference/types\"}]}]},\"search\":{\"provider\":\"local\"},\"lastUpdated\":{\"text\":\"最后更新于\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"short\"}}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
194
194
 
195
195
  </body>
196
196
  </html>
@@ -9,9 +9,9 @@
9
9
  <link rel="preload stylesheet" href="/assets/style.CN_tJoU2.css" as="style">
10
10
  <link rel="preload stylesheet" href="/vp-icons.css" as="style">
11
11
 
12
- <script type="module" src="/assets/app.DKcv5ocC.js"></script>
12
+ <script type="module" src="/assets/app.DKtY-QgA.js"></script>
13
13
  <link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
14
- <link rel="modulepreload" href="/assets/chunks/theme.D-vPQmyU.js">
14
+ <link rel="modulepreload" href="/assets/chunks/theme.CoICOtg5.js">
15
15
  <link rel="modulepreload" href="/assets/chunks/framework.DRADY2L-.js">
16
16
  <link rel="modulepreload" href="/assets/reference_utils.md.CSshxnp0.lean.js">
17
17
  <script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"auto",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
@@ -34,7 +34,7 @@
34
34
  <span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> existingPointsArray</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Point</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[][],</span></span>
35
35
  <span class="line"><span style="--shiki-light:#E36209;--shiki-dark:#FFAB70;"> maxAttempts</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">?:</span><span style="--shiki-light:#005CC5;--shiki-dark:#79B8FF;"> number</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">,</span></span>
36
36
  <span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">)</span><span style="--shiki-light:#D73A49;--shiki-dark:#F97583;">:</span><span style="--shiki-light:#6F42C1;--shiki-dark:#B392F0;"> Point</span><span style="--shiki-light:#24292E;--shiki-dark:#E1E4E8;">[]</span></span></code></pre></div><p><strong>参数</strong></p><ul><li><code>points</code>: 需要偏移的点位数组</li><li><code>existingPointsArray</code>: 已存在的点位数组</li><li><code>maxAttempts</code>: 最大尝试次数,默认20次(最多偏移100个单位)</li></ul><p><strong>返回值</strong></p><ul><li><code>Point[]</code>: 偏移后的点位数组</li></ul></div></div></main><footer class="VPDocFooter" data-v-39a288b8 data-v-e257564d><!--[--><!--]--><div class="edit-info" data-v-e257564d><!----><div class="last-updated" data-v-e257564d><p class="VPLastUpdated" data-v-e257564d data-v-e98dd255>最后更新于: <time datetime="2025-10-21T11:12:05.000Z" data-v-e98dd255></time></p></div></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-e257564d><span class="visually-hidden" id="doc-footer-aria-label" data-v-e257564d>Pager</span><div class="pager" data-v-e257564d><a class="VPLink link pager-link prev" href="/reference/methods.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Previous page</span><span class="title" data-v-e257564d>地图方法</span><!--]--></a></div><div class="pager" data-v-e257564d><a class="VPLink link pager-link next" href="/reference/types.html" data-v-e257564d><!--[--><span class="desc" data-v-e257564d>Next page</span><span class="title" data-v-e257564d>类型定义</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><!----><!--[--><!--]--></div></div>
37
- <script>window.__VP_HASH_MAP__=JSON.parse("{\"guide_advanced-usage.md\":\"BquC67D7\",\"guide_concepts.md\":\"CAoYwZmS\",\"guide_getting-started.md\":\"zACqR2O5\",\"index.md\":\"Sm6vD2Gl\",\"reference_callbacks.md\":\"-S6uhkXO\",\"reference_config.md\":\"CRlb96P2\",\"reference_data.md\":\"B8JfrRhl\",\"reference_methods.md\":\"D1VYgciC\",\"reference_runtime.md\":\"UJkdf65W\",\"reference_types.md\":\"DkIhhJD0\",\"reference_utils.md\":\"CSshxnp0\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Tuya Robot Map\",\"description\":\"涂鸦扫地机地图组件\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"siteTitle\":\"Tuya Robot Map\",\"outline\":{\"level\":[2,5],\"label\":\"页面导航\"},\"nav\":[{\"text\":\"首页\",\"link\":\"/\"},{\"text\":\"指南\",\"link\":\"/guide/concepts\",\"activeMatch\":\"^/guide/\"},{\"text\":\"参考\",\"link\":\"/reference/data\",\"activeMatch\":\"^/reference/\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指南\",\"items\":[{\"text\":\"基本概念\",\"link\":\"/guide/concepts\"},{\"text\":\"快速开始\",\"link\":\"/guide/getting-started\"},{\"text\":\"进阶使用\",\"link\":\"/guide/advanced-usage\"}]}],\"/reference/\":[{\"text\":\"组件Props\",\"items\":[{\"text\":\"数据\",\"link\":\"/reference/data\"},{\"text\":\"配置\",\"link\":\"/reference/config\"},{\"text\":\"运行时\",\"link\":\"/reference/runtime\"},{\"text\":\"地图事件回调\",\"link\":\"/reference/callbacks\"}]},{\"text\":\"方法\",\"items\":[{\"text\":\"地图方法\",\"link\":\"/reference/methods\"},{\"text\":\"工具方法\",\"link\":\"/reference/utils\"}]},{\"text\":\"类型定义\",\"items\":[{\"text\":\"类型定义\",\"link\":\"/reference/types\"}]}]},\"search\":{\"provider\":\"local\"},\"lastUpdated\":{\"text\":\"最后更新于\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"short\"}}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
37
+ <script>window.__VP_HASH_MAP__=JSON.parse("{\"guide_advanced-usage.md\":\"BrZgx45A\",\"guide_concepts.md\":\"CAoYwZmS\",\"guide_getting-started.md\":\"Cip1vgx6\",\"index.md\":\"Sm6vD2Gl\",\"reference_callbacks.md\":\"-S6uhkXO\",\"reference_config.md\":\"CfEp0H9c\",\"reference_data.md\":\"B8JfrRhl\",\"reference_methods.md\":\"D1VYgciC\",\"reference_runtime.md\":\"UJkdf65W\",\"reference_types.md\":\"DkIhhJD0\",\"reference_utils.md\":\"CSshxnp0\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"Tuya Robot Map\",\"description\":\"涂鸦扫地机地图组件\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":true,\"themeConfig\":{\"siteTitle\":\"Tuya Robot Map\",\"outline\":{\"level\":[2,5],\"label\":\"页面导航\"},\"nav\":[{\"text\":\"首页\",\"link\":\"/\"},{\"text\":\"指南\",\"link\":\"/guide/concepts\",\"activeMatch\":\"^/guide/\"},{\"text\":\"参考\",\"link\":\"/reference/data\",\"activeMatch\":\"^/reference/\"}],\"sidebar\":{\"/guide/\":[{\"text\":\"指南\",\"items\":[{\"text\":\"基本概念\",\"link\":\"/guide/concepts\"},{\"text\":\"快速开始\",\"link\":\"/guide/getting-started\"},{\"text\":\"进阶使用\",\"link\":\"/guide/advanced-usage\"}]}],\"/reference/\":[{\"text\":\"组件Props\",\"items\":[{\"text\":\"数据\",\"link\":\"/reference/data\"},{\"text\":\"配置\",\"link\":\"/reference/config\"},{\"text\":\"运行时\",\"link\":\"/reference/runtime\"},{\"text\":\"地图事件回调\",\"link\":\"/reference/callbacks\"}]},{\"text\":\"方法\",\"items\":[{\"text\":\"地图方法\",\"link\":\"/reference/methods\"},{\"text\":\"工具方法\",\"link\":\"/reference/utils\"}]},{\"text\":\"类型定义\",\"items\":[{\"text\":\"类型定义\",\"link\":\"/reference/types\"}]}]},\"search\":{\"provider\":\"local\"},\"lastUpdated\":{\"text\":\"最后更新于\",\"formatOptions\":{\"dateStyle\":\"short\",\"timeStyle\":\"short\"}}},\"locales\":{},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
38
38
 
39
39
  </body>
40
40
  </html>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ray-js/robot-map-sdk",
3
- "version": "0.0.3-beta-23",
3
+ "version": "0.0.3-beta-24",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -1 +0,0 @@
1
- import{Logger as e}from"../utils/logger.js";import{Container as t}from"pixi.js";import{useAppService as r}from"./AppService.js";const i="interaction",o="roomFill",s="free",n="roomFloorType",a="carpet",l="obstacle",c="heatmap",h="path",d="controls",p="roomInfo",y="detectedObject",m="customElement",u="customElementGif",g="chargingStation",b="robot",v=[i,o,s,n,a,l,c,h,p,y,m,u,g,b,d];class L extends t{layers=new Map;constructor(){super();const e=r().getApp().getViewportBounds();this.position.set(Math.round(e.width/2),Math.round(e.height/2)),this.initializeLayers()}initializeLayers(){Object.values(v).forEach(e=>{const r=new t;r.label=e,e===d&&(r.isRenderGroup=!0),e!==n&&e!==a||(r.eventMode="none"),this.layers.set(e,r),this.addChild(r)})}getLayer(e){return this.layers.get(e)}addToLayer(t,r,i){const o=this.layers.get(t);return o?(void 0!==i&&(r.zIndex=i),o.addChild(r),!0):(e.warn("[AppContainer Debug] Layer not found:",t),!1)}removeFromLayer(e,t){const r=this.layers.get(e);return!!r&&t.parent===r&&(r.removeChild(t),!0)}clearLayer(e){const t=this.layers.get(e);return!!t&&(t.removeChildren(),!0)}setLayerVisibility(e,t){const r=this.layers.get(e);return!!r&&(r.visible=t,!0)}getLayerVisibility(e){const t=this.layers.get(e);return!!t&&t.visible}}export{L as AppContainer,v as LAYERS,a as LAYER_CARPET,g as LAYER_CHARGING_STATION,d as LAYER_CONTROLS,m as LAYER_CUSTOM_ELEMENT,u as LAYER_CUSTOM_ELEMENT_GIF,y as LAYER_DETECTED_OBJECT,s as LAYER_FREE,c as LAYER_HEATMAP,i as LAYER_INTERACTION,l as LAYER_OBSTACLE,h as LAYER_PATH,b as LAYER_ROBOT,o as LAYER_ROOM_FILL,n as LAYER_ROOM_FLOOR_TYPE,p as LAYER_ROOM_INFO};
@@ -1 +0,0 @@
1
- function t(){return r.getService()}import{snapshot as e}from"valtio/vanilla";import{MAIN_INSTANCE_KEY as n}from"../constant/index.js";class r{static contextStack=[];static instanceMap=new Map;static serviceCache=new WeakMap;static registerInstance(t,e){this.instanceMap.set(t,e)}static unregisterInstance(t){this.instanceMap.delete(t)}static getService(){const t=this.useContext();let e=this.serviceCache.get(t);return e||(e=new a,this.serviceCache.set(t,e)),e}static provide(t,e){this.contextStack.push(t);try{return e()}finally{this.contextStack.pop()}}static async provideAsync(t,e){this.contextStack.push(t);try{return await e()}finally{this.contextStack.pop()}}static useContext(){const t=this.contextStack[this.contextStack.length-1];if(!t){const t=this.instanceMap.get(n);if(!t)throw new Error("No MapApplication context found. Make sure you are calling useAppService() within a MapApplication context.");return t}return t}static hasContext(){return this.contextStack.length>0||this.instanceMap.has(n)}static clear(){this.contextStack.length=0,this.instanceMap.clear()}}class a{getApp(){return r.useContext()}getConfig(){return this.getApp().config}getRoomData(t){return this.getApp().managers.roomsManager.getRoomPropertyById(t)}metersToPixels(t){return this.getApp().metersToPixels(t)}pixelsToMeters(t){return this.getApp().pixelsToMeters(t)}get ticker(){return this.getApp().ticker}get mapState(){return this.getApp().mapState}get gloalConfig(){return this.getConfig().global}get mapConfig(){return this.getConfig().map}get roomConfig(){return this.getConfig().room}get heatMapConfig(){return this.getConfig().heatmap}get pathConfig(){return this.getConfig().path}get carpetConfig(){return this.getConfig().carpet}get robotConfig(){return this.getConfig().robot}get chargingStationConfig(){return this.getConfig().chargingStation}get interactionConfig(){return this.getConfig().interaction}get controlsConfig(){return this.getConfig().controls}get dividerConfig(){return this.getConfig().divider}get detectedObjectConfig(){return this.getConfig().detectedObject}get snapshotConfig(){return this.getConfig().snapshot}get appContainer(){return this.getApp().components.appContainer}get interaction(){return this.getApp().components.interaction}get viewportContainer(){return this.getApp().components.viewportContainer}get mapManager(){return this.getApp().managers.mapManager}get pathManager(){return this.getApp().managers.pathManager}get heatmapManager(){return this.getApp().managers.heatmapManager}get controlsManager(){return this.getApp().managers.controlsManager}get detectedObjectManager(){return this.getApp().managers.detectedObjectManager}get customElementsManager(){return this.getApp().managers.customElementsManager}get roomsManager(){return this.getApp().managers.roomsManager}get runtime(){return this.getApp().runtime}get runtimeSnapshot(){return e(this.getApp().runtime)}get events(){return this.getApp().events}get baseScale(){return this.getApp().components.interaction.targetScale.x}get currentScale(){return this.getApp().components.appContainer.scale.x}get emitter(){return this.getApp().emitter}}export{r as AppContext,t as useAppService};
@@ -1 +0,0 @@
1
- import{Container as t,Graphics as i}from"pixi.js";import{easeInOutCubic as e}from"../utils/index.js";import{getDistance as s}from"../utils/algorithm.js";import{Logger as n}from"../utils/logger.js";import{throttle as a,debounce as o}from"lodash-es";import{useAppService as h}from"./AppService.js";class r extends t{dragStart=null;initialTouchDistance=null;initialScale=null;activeTouches=new Map;firstTouchId=null;secondTouchId=null;zoomFactor=.8;scaleMin=.2;scaleMax=5;originalPosition={x:0,y:0};targetPosition={x:0,y:0};centerPosition={x:0,y:0};originalScale={x:1,y:1};targetScale={x:1,y:1};defaultScale={x:1,y:1};transitionDuration=500;transitionStartTime=null;initialPinchCenter=null;isGestureValid=!0;lastTapTime=0;doubleTapDelay=300;doubleTapZoomFactor=1.5;lastTapPosition=null;tapDistanceThreshold=20;tapDetectionEnabled=!0;isGestureHijacked=!1;hijackedPointerId=null;isHijackPaused=!1;interactionGraphics;viewportBounds;boundResetAnimation;debouncedStopWheelRender;interactionState={isInteracting:!1,isAnimating:!1,interactionTimer:null,renderReasons:new Set};throttledAntiScale;constructor(){super();const t=h().getApp();this.viewportBounds=t.getViewportBounds(),this.eventMode="static",this.interactionGraphics=new i,this.interactionGraphics.rect(0,0,this.viewportBounds.width,this.viewportBounds.height).fill({color:"#ffffff",alpha:0}),this.addChild(this.interactionGraphics),this.scaleMax=t.scaleMax,this.scaleMin=t.scaleMin,this.centerPosition={x:Math.round(this.viewportBounds.width/2),y:Math.round(this.viewportBounds.height/2)},this.originalPosition={x:Math.round(this.viewportBounds.width/2),y:Math.round(this.viewportBounds.height/2)},this.targetPosition={x:Math.round(this.viewportBounds.width/2),y:Math.round(this.viewportBounds.height/2)},this.throttledAntiScale=a(t=>{h().emitter.emit("antiScale",t)},16,{leading:!0,trailing:!0}),this.boundResetAnimation=this.resetAnimation.bind(this),this.debouncedStopWheelRender=o(()=>{t.stopRender("wheel")},300),this.setupInteraction()}setupInteraction(){this.on("pointerdown",t=>this.onPointerDown(t)),this.on("pointerup",t=>this.onPointerUp(t)),this.on("pointerupoutside",t=>this.onPointerUp(t)),this.on("pointermove",t=>this.onPointerMove(t)),this.on("wheel",t=>this.onWheel(t)),h().emitter.on("gestureHijackStart",this.handleGestureHijacked),document.addEventListener("pointercancel",()=>{this.clearTouches()})}resetPan(t){const i=h(),e=i.getApp(),s=i.appContainer;null!==this.transitionStartTime&&(e.ticker.remove(this.boundResetAnimation),this.transitionStartTime=null);const n=this.centerPosition.x-t.x*s.scale.x,a=this.centerPosition.y-t.y*s.scale.y;this.originalPosition={x:s.x,y:s.y},this.targetPosition={x:n,y:a},this.originalScale={x:s.scale.x,y:s.scale.y},this.targetScale={x:s.scale.x,y:s.scale.y};const o=(r=Math.sqrt((s.x-n)**2+(s.y-a)**2),Math.pow(Math.min(1,r/1e3),.5));var r;this.transitionDuration=500+1e3*Math.min(1,Math.pow(o,2)),this.transitionStartTime=e.ticker.lastTime,e.ticker.add(this.boundResetAnimation)}setPanZoom({targetPosition:t,targetScale:i,setCenter:e=!1,setScale:s=!1}={},a=!0){const o=h(),r=o.getApp(),c=o.appContainer;if(e&&t&&(this.centerPosition={x:t.x,y:t.y},n.debug("[Interaction] Set center position:",this.centerPosition)),s&&i&&(this.defaultScale={x:i.x,y:i.y},n.debug("[Interaction] Set scale:",this.defaultScale)),this.originalPosition={x:c.x,y:c.y},this.originalScale={x:c.scale.x,y:c.scale.y},this.targetPosition=t||{x:this.centerPosition.x,y:this.centerPosition.y},this.targetScale=i||this.defaultScale,!a)return c.position.set(this.targetPosition.x,this.targetPosition.y),c.scale.set(this.targetScale.x,this.targetScale.y),this.antiScale(this.targetScale.x),void(null!==this.transitionStartTime&&(r.ticker.remove(this.boundResetAnimation),this.transitionStartTime=null));var l,u,d;const p=.8*(l=Math.sqrt((c.x-this.targetPosition.x)**2+(c.y-this.targetPosition.y)**2),Math.pow(Math.min(1,l/1e3),.5))+.2*(u=c.scale.x,d=this.targetScale.x,Math.pow(Math.min(1,Math.abs(u-d)/Math.abs(-.8)),.5));this.transitionDuration=500+1e3*Math.min(1,Math.pow(p,2)),null!==this.transitionStartTime&&(r.ticker.remove(this.boundResetAnimation),this.interactionState.isAnimating=!1,r.stopRender("animation")),this.interactionState.isAnimating=!0,r.requestRender("animation",!0),this.transitionStartTime=r.ticker.lastTime,r.ticker.add(this.boundResetAnimation)}clearTouches(){const t=h().getApp();this.activeTouches.clear(),this.firstTouchId=null,this.secondTouchId=null,this.dragStart=null,this.initialTouchDistance=null,this.initialScale=null,this.initialPinchCenter=null,this.isGestureValid=!0,null!==this.transitionStartTime&&(t.ticker.remove(this.boundResetAnimation),this.transitionStartTime=null),this.interactionState.isInteracting=!1,t.stopRender("interaction")}checkEventListeners(){return{wheel:this.listenerCount("wheel"),pointerdown:this.listenerCount("pointerdown"),pointerup:this.listenerCount("pointerup"),pointerupoutside:this.listenerCount("pointerupoutside"),pointermove:this.listenerCount("pointermove")}}destroy(){this.checkEventListeners(),this.interactionState.interactionTimer&&clearTimeout(this.interactionState.interactionTimer),this.interactionState.renderReasons.clear(),this.interactionState.isInteracting=!1,this.interactionState.isAnimating=!1,this.debouncedStopWheelRender.cancel(),h().emitter.off("gestureHijackStart",this.handleGestureHijacked),super.destroy()}handleGestureHijacked=t=>{this.isGestureHijacked=!0,this.hijackedPointerId=t.pointerId,this.isHijackPaused=!1,this.clearTouches();const i=t.global.x-this.viewportBounds.x,e=t.global.y-this.viewportBounds.y;this.activeTouches.set(t.pointerId,{x:i,y:e}),this.firstTouchId=t.pointerId,this.dragStart={x:i,y:e}};exitGestureHijacked(){null===this.hijackedPointerId||this.isHijackPaused||(this.activeTouches.delete(this.hijackedPointerId),this.firstTouchId===this.hijackedPointerId&&(this.firstTouchId=null,this.dragStart=null),this.secondTouchId===this.hijackedPointerId&&(this.secondTouchId=null)),this.isGestureHijacked=!1,this.hijackedPointerId=null,this.isHijackPaused=!1}pauseGestureHijack(){this.isHijackPaused=!0}resumeGestureHijack(){this.isHijackPaused=!1}antiScale(t){this.throttledAntiScale(t)}resetAnimation(){const t=h(),i=t.getApp(),s=t.appContainer;if(null===this.transitionStartTime)return;const{targetPosition:n,targetScale:a}=this,o=i.ticker.lastTime,r=Math.min(1,(o-this.transitionStartTime)/this.transitionDuration);if(r>=1)s.position.set(n.x,n.y),s.scale.set(a.x,a.y),this.antiScale(a.x),i.ticker.remove(this.boundResetAnimation),this.transitionStartTime=null,this.interactionState.isAnimating=!1,i.stopRender("animation");else{const t=e(r),i=this.originalPosition.x+(n.x-this.originalPosition.x)*t,o=this.originalPosition.y+(n.y-this.originalPosition.y)*t,h=this.originalScale.x+(a.x-this.originalScale.x)*t,c=this.originalScale.y+(a.y-this.originalScale.y)*t;s.position.set(i,o),s.scale.set(h,c),this.antiScale(h)}}onWheel(t){const i=h();if(this.isGestureHijacked)return void n.warn("⚠️ [onWheel] 被手势劫持阻止执行",{isGestureHijacked:this.isGestureHijacked,hijackedPointerId:this.hijackedPointerId,isHijackPaused:this.isHijackPaused});i.getApp().requestRender("wheel",!0),this.debouncedStopWheelRender();const{scaleMin:e,scaleMax:s}=this,a=i.appContainer;t.preventDefault();const o=t.global.x-this.viewportBounds.x,r=t.global.y-this.viewportBounds.y,c=(o-a.x)/a.scale.x,l=(r-a.y)/a.scale.y,u=t.deltaY>0?.95:1.05;let d=a.scale.x*u,p=a.scale.y*u;if(d=Math.max(e,Math.min(s,d)),p=Math.max(e,Math.min(s,p)),d===a.scale.x&&p===a.scale.y)return;const x=o-c*d,m=r-l*p;try{a.scale.set(d,p),a.position.set(x,m),this.antiScale(d)}catch(t){n.error("❌ [onWheel] 应用缩放时发生错误:",t)}}onPointerDown(t){const i=h();this.interactionState.isInteracting=!0,i.getApp().requestRender("interaction",!0),this.isGestureHijacked&&(t.pointerId===this.hijackedPointerId||this.isHijackPaused||this.pauseGestureHijack());const e=i.getApp(),s=i.appContainer;null!==this.transitionStartTime&&(e.ticker.remove(this.boundResetAnimation),this.transitionStartTime=null),this.activeTouches.has(t.pointerId-2)&&this.activeTouches.delete(t.pointerId-2),0===this.activeTouches.size&&(this.isGestureValid=!0,this.initialTouchDistance=null,this.initialScale=null,this.initialPinchCenter=null,this.dragStart=null,this.firstTouchId=null,this.secondTouchId=null),this.activeTouches.has(t.pointerId)&&1===this.activeTouches.size&&(this.isGestureValid=!0);const n=t.global.x-this.viewportBounds.x,a=t.global.y-this.viewportBounds.y;if(this.activeTouches.set(t.pointerId,{x:n,y:a}),1===this.activeTouches.size)this.firstTouchId=t.pointerId,this.dragStart={x:n,y:a};else if(2===this.activeTouches.size){const i=Array.from(this.activeTouches.keys());this.secondTouchId=i.find(t=>t!==this.firstTouchId)||t.pointerId,this.setInitialScaleAndDistance(s),this.tapDetectionEnabled=!1}}onPointerUp(t){const i=h();if(this.isGestureHijacked){if(t.pointerId===this.hijackedPointerId)return i.emitter.emit("gestureHijackPointerUp",t),void this.exitGestureHijacked();this.isHijackPaused}if(!this.activeTouches.has(t.pointerId))return;const e=null!==this.initialTouchDistance&&null!==this.initialScale;this.activeTouches.delete(t.pointerId),e&&1===this.activeTouches.size&&(this.isGestureValid=!1,this.initialTouchDistance=null,this.initialScale=null,this.initialPinchCenter=null),t.pointerId===this.firstTouchId?(this.firstTouchId=null,this.dragStart=null,0===this.activeTouches.size&&this.tapDetectionEnabled&&this.detectDoubleTap(t)):t.pointerId===this.secondTouchId&&(this.secondTouchId=null),this.isGestureHijacked&&this.isHijackPaused&&1===this.activeTouches.size&&Array.from(this.activeTouches.keys())[0]===this.hijackedPointerId&&this.resumeGestureHijack(),0===this.activeTouches.size&&(this.isGestureValid=!0,this.initialTouchDistance=null,this.initialScale=null,this.initialPinchCenter=null,this.firstTouchId=null,this.secondTouchId=null,this.dragStart=null,this.tapDetectionEnabled=!0,this.interactionState.isInteracting=!1,i.getApp().stopRender("interaction"))}detectDoubleTap(t){const i=h(),{interactionConfig:e}=i;if(!e.enableDoubleTapZoom)return;const n=performance.now(),a={x:t.global.x-this.viewportBounds.x,y:t.global.y-this.viewportBounds.y};n-this.lastTapTime<this.doubleTapDelay&&this.lastTapPosition&&s(a,this.lastTapPosition)<this.tapDistanceThreshold?(this.handleDoubleTap(a),this.lastTapTime=0,this.lastTapPosition=null):(this.lastTapTime=n,this.lastTapPosition=a)}handleDoubleTap(t){const i=h(),e=i.getApp(),s=i.appContainer,{scaleMin:n,scaleMax:a,doubleTapZoomFactor:o}=this,r=t.x,c=t.y,l=(r-s.x)/s.scale.x,u=(c-s.y)/s.scale.y;let d=s.scale.x*o,p=s.scale.y*o;d=Math.max(n,Math.min(a,d)),p=Math.max(n,Math.min(a,p)),this.originalPosition={x:s.x,y:s.y},this.originalScale={x:s.scale.x,y:s.scale.y};const x=r-l*d,m=c-u*p;this.targetPosition={x:x,y:m},this.targetScale={x:d,y:p},this.interactionState.isAnimating=!0,e.requestRender("animation",!0),this.transitionDuration=300,this.transitionStartTime=e.ticker.lastTime,e.ticker.add(this.boundResetAnimation)}onPointerMove(t){if(this.isGestureHijacked&&!this.isHijackPaused){if(t.pointerId===this.hijackedPointerId){const i=t.global.x-this.viewportBounds.x,e=t.global.y-this.viewportBounds.y;return this.activeTouches.set(t.pointerId,{x:i,y:e}),void h().emitter.emit("gestureHijackPointerMove",t)}return}if(!this.activeTouches.has(t.pointerId)||!this.isGestureValid)return;const i=t.global.x-this.viewportBounds.x,e=t.global.y-this.viewportBounds.y;this.activeTouches.set(t.pointerId,{x:i,y:e}),2===this.activeTouches.size&&null!==this.initialTouchDistance&&null!==this.initialScale&&this.applyPinchZoom(),1!==this.activeTouches.size||null===this.initialTouchDistance&&null===this.initialScale||(this.initialTouchDistance=null,this.initialScale=null,this.initialPinchCenter=null,this.secondTouchId=null),1===this.activeTouches.size&&t.pointerId===this.firstTouchId&&null!==this.dragStart&&this.applyPan(t)}applyPan(t){const i=h(),e=this.activeTouches.get(t.pointerId),s=i.appContainer,{x:n,y:a}=this.dragStart;s.position.set(s.x+e.x-n,s.y+e.y-a),this.dragStart={x:e.x,y:e.y}}applyPinchZoom(){const t=h().appContainer,i=Array.from(this.activeTouches.values());if(i.length<2||!this.initialTouchDistance||!this.initialScale||!this.initialPinchCenter)return;const e=s(i[0],i[1]),n={x:(i[0].x+i[1].x)/2,y:(i[0].y+i[1].y)/2},a=(n.x-t.position.x)/t.scale.x,o=(n.y-t.position.y)/t.scale.y,r=(e/this.initialTouchDistance)**this.zoomFactor,c=Math.max(this.scaleMin,Math.min(this.scaleMax,this.initialScale.x*r)),l=Math.max(this.scaleMin,Math.min(this.scaleMax,this.initialScale.y*r));t.scale.set(c,l);let u=n.x-a*c,d=n.y-o*l;u+=n.x-this.initialPinchCenter.x,d+=n.y-this.initialPinchCenter.y,t.position.set(u,d),this.antiScale(c),this.initialPinchCenter=n}setInitialScaleAndDistance(t){const i=Array.from(this.activeTouches.values());i.length<2||(this.initialTouchDistance=s(i[0],i[1]),this.initialScale={x:t.scale.x,y:t.scale.y},this.initialPinchCenter={x:(i[0].x+i[1].x)/2,y:(i[0].y+i[1].y)/2})}}export{r as Interaction};
@@ -1 +0,0 @@
1
- import{Application as t,isMobile as e,Assets as n}from"pixi.js";import{Interaction as a}from"./Interaction.js";import{mergeWith as r}from"lodash-es";import{proxy as i}from"valtio/vanilla";import{MAIN_INSTANCE_KEY as o}from"../constant/index.js";import s from"mitt";import{Logger as c}from"../utils/logger.js";import{AppContext as h}from"./AppService.js";import{nanoid as m}from"nanoid/non-secure";import{calculateLineEndpoints as p,isPointInPolygon as d,binarySearch as l,areStructuredRoomsAdjacent as g,areMultipleRoomsConnected as u,areRasterRoomsAdjacent as w}from"../utils/algorithm.js";import{ViewportContainer as f}from"./ViewportContainer.js";import{AppContainer as y}from"./AppContainer.js";import{MapManager as M}from"../managers/MapManager.js";import{PathManager as S}from"../managers/PathManager.js";import{HeatmapManager as x}from"../managers/HeatmapManager.js";import{ControlsManager as P}from"../managers/ControlsManager.js";import{DetectedObjectManager as b}from"../managers/DetectedObjectManager.js";import{CustomElementsManager as v}from"../managers/CustomElementsManager.js";import{RoomManager as R}from"../managers/RoomManager.js";import{getOptimalAntialiasingStrategy as C}from"../utils/browser.js";import{DEFAULT_CONFIG as I,DEFAULT_RUNTIME_CONFIG as O}from"../constant/config.js";class j extends t{mapState=null;components={};managers={};config=I;runtime;scaleMin=.5;scaleMax=5;events={};instanceKey;containerElement;emitter=s();tickerState={renderReasons:new Set,renderTimer:null};pendingAsyncRender=!1;isFirstMapDraw=!0;constructor(t=o){super(),this.instanceKey=t,h.registerInstance(t,this),globalThis.__PIXI_APP__=this}async initialize(t){return h.provideAsync(this,async()=>{const{resizeTo:n,events:a,config:s,runtime:h={},...m}=t;this.config=r(this.config,s??{},(t,e)=>{if(Array.isArray(e))return e}),c.log("Applying config",this.config,s),this.runtime=i(Object.assign({},O,h));const p=this.instanceKey===o;this.containerElement=n;const d=p?{textureGCMaxIdle:e.any?180:3600,textureGCCheckCountMax:e.any?100:50,autoStart:!1,eventFeatures:{move:!0,globalMove:!1,click:!0,wheel:!0}}:{textureGCMaxIdle:60,textureGCCheckCountMax:10,autoStart:!1,eventFeatures:{move:!1,globalMove:!1,click:!1,wheel:!1}};await this.init({resizeTo:p?n:void 0,preferWebGLVersion:2,resolution:window.devicePixelRatio||1,antialias:C(),autoDensity:!0,backgroundColor:this.config.global.backgroundColor,...d,...m}),this.preloadAssets(),this.scaleMax=this.config.interaction.zoomRange.max,this.scaleMin=this.config.interaction.zoomRange.min,this.events=a,this.initializeViewportContainer(),this.initializeInteraction(),this.initializeAppContainer(),this.managers.mapManager=new M,this.managers.heatmapManager=new x,this.managers.pathManager=new S,this.managers.controlsManager=new P,this.managers.detectedObjectManager=new b,this.managers.customElementsManager=new v,this.managers.roomsManager=new R,document.addEventListener("visibilitychange",this.onVisibilityChange)})}async drawMap(t){return h.provideAsync(this,async()=>{c.log("[Map] drawMap",t);const{size:e,resolution:n,origin:a}=t;a[0]===this.mapState?.origin.x&&a[1]===this.mapState?.origin.y||(this.managers.pathManager.updatePositionByOrigin(...a),this.managers.controlsManager.updatePositionByOrigin(...a),this.managers.detectedObjectManager.updatePositionByOrigin(...a),this.managers.customElementsManager.updatePositionByOrigin(...a)),this.mapState={id:t.id,status:1===t.status,origin:{x:a[0],y:a[1]},charger:{x:t.charger.coordinate[0],y:t.charger.coordinate[1]},chargerDirection:t.charger.angle??0,resolution:n,width:e[0],height:e[1],mapType:"structured"},this.isFirstMapDraw&&(this.isFirstMapDraw=!1,this.events?.onMapFirstDrawed?.(this.mapState)),this.events?.onMapDrawed?.(this.mapState),await this.managers.mapManager.drawMap(t),this.renderOnce()})}async drawRasterMap(t){return h.provideAsync(this,async()=>{c.log("[Map] drawRasterMap",t);const{mapHeader:e,mapData:n}=t,{originX:a,originY:r}=e;a===this.mapState?.origin.x&&r===this.mapState?.origin.y||(this.managers.pathManager.updatePositionByOrigin(a,r),this.managers.controlsManager.updatePositionByOrigin(a,r),this.managers.detectedObjectManager.updatePositionByOrigin(a,r),this.managers.customElementsManager.updatePositionByOrigin(a,r)),this.mapState={id:e.id,status:e.mapStable,origin:{x:a,y:r},charger:{x:e.chargeX,y:e.chargeY},chargerDirection:e.chargeDirection??0,resolution:100*e.mapResolution,width:e.mapWidth,height:e.mapHeight,version:e.version,mapType:"raster"},this.isFirstMapDraw&&(this.isFirstMapDraw=!1,this.events?.onMapFirstDrawed?.(this.mapState)),this.events?.onMapDrawed?.(this.mapState),await this.managers.mapManager.drawRasterMap(n.parsed,this.mapState),this.renderOnce()})}drawPath(t){return h.provide(this,()=>{c.log("[Path] drawPath",t),this.events?.onPathDrawed?.({id:t.pathHeader.pathId,type:t.pathHeader.type,direction:t.pathHeader.direction,count:t.pathHeader.count,initFlag:t.pathHeader.initFlag,robotPosition:t.pathPoints[t.pathPoints.length-1]??null}),this.managers.pathManager.draw(t),this.renderOnce()})}async drawRoomProperty(t){return h.provide(this,()=>{c.log("[Room] drawRoomProperty",t),this.events?.onRoomPropertiesDrawed?.(t),this.managers.roomsManager.drawRoomProperty(t),this.renderOnceNextFrame()})}drawHeatmap({mapData:t,heatmapPoints:e,useGradient:n=!0}){return h.provide(this,()=>{c.log("[Heatmap] drawHeatmap",e),this.managers.heatmapManager.draw({mapData:t,heatmapPoints:e,useGradient:n}),this.renderOnce()})}drawForbiddenSweepZones(t){return h.provide(this,()=>{c.log("[Controls] drawForbiddenSweepZones",t),this.managers.controlsManager.drawForbiddenSweepZones(t),this.renderOnceNextFrame()})}drawForbiddenMopZones(t){return h.provide(this,()=>{c.log("[Controls] drawForbiddenMopZones",t),this.managers.controlsManager.drawForbiddenMopZones(t),this.renderOnceNextFrame()})}drawCleanZones(t){return h.provide(this,()=>{c.log("[Controls] drawCleanZones",t),this.managers.controlsManager.drawCleanZones(t),this.renderOnceNextFrame()})}drawVirtualWalls(t){return h.provide(this,()=>{c.log("[Controls] drawVirtualWalls",t),this.managers.controlsManager.drawVirtualWalls(t),this.renderOnceNextFrame()})}drawSpots(t){return h.provide(this,()=>{c.log("[Controls] drawSpots",t),this.managers.controlsManager.drawSpots(t),this.renderOnceNextFrame()})}async drawDetectedObjects(t){return h.provideAsync(this,async()=>{c.log("[DetectedObject] drawDetectedObjects",t),await this.managers.detectedObjectManager.drawDetectedObjects(t),this.renderOnceNextFrame()})}async drawCustomElements(t){return h.provideAsync(this,async()=>{c.log("[CustomElements] drawCustomElements",t),await this.managers.customElementsManager.drawCustomElements(t),this.renderOnceNextFrame()})}getForbiddenSweepZones(){return this.managers.controlsManager.getForbiddenSweepZones()}getForbiddenMopZones(){return this.managers.controlsManager.getForbiddenMopZones()}getCleanZones(){return this.managers.controlsManager.getCleanZones()}getVirtualWalls(){return this.managers.controlsManager.getVirtualWalls()}getSpots(){return this.managers.controlsManager.getSpots()}getEffectiveDividerPoints(){return this.managers.controlsManager.getEffectiveDividerPoints()}getDividerEndPoints(){return this.managers.controlsManager.getDividerEndPoints()}resetPanZoom(){this.components.interaction.setPanZoom()}fitMapToView(t,e=!1){return h.provide(this,()=>{if(!t||t.minX===t.maxX||t.minY===t.maxY)return void c.warn("地图边界无效,无法自动适配视图");const n=this.config.map.autoPaddingPercent||.1,a=this.getViewportBounds(),r=t.maxX-t.minX,i=t.maxY-t.minY,o=a.width,s=a.height,h=o*(1-2*n)/r,m=s*(1-2*n)/i,p=Math.min(h,m),d=Math.max(this.config.interaction.fitMinScale,this.scaleMin),l=Math.min(this.config.interaction.fitMaxScale,this.scaleMax),g=Math.max(d,Math.min(l,p)),u=o/2-(t.minX+r/2)*g,w=s/2-(t.minY+i/2)*g;this.components.interaction.setPanZoom({targetPosition:{x:u,y:w},targetScale:{x:g,y:g},setCenter:!0,setScale:!0},e)})}getViewportBounds(){return this.components.viewportContainer?.getViewportBounds()||{x:0,y:0,width:this.renderer.width,height:this.renderer.height}}updateRuntime(t){Object.assign(this.runtime,t),this.renderOnceNextFrame()}metersToPixels(t){return this.mapState?.resolution?t*(1/(this.mapState.resolution/100)):(c.warn("Map resolution not available, using default resolution (5cm/pixel)"),20*t)}pixelsToMeters(t){return this.mapState?.resolution?t*(this.mapState.resolution/100):(c.warn("Map resolution not available, using default resolution (5cm/pixel)"),.05*t)}toFixedSize(t,e){return t/(e??this.components.appContainer.scale.x)}fromFixedSize(t,e){return t*(e??this.components.appContainer.scale.x)}getViewportCenterPoint(){if(!this.mapState)return c.warn("Map state not available, cannot calculate center point"),null;const t=this.getViewportBounds(),e=t.x+t.width/2,n=t.y+t.height/2,a=this.components.appContainer,r=a.scale.x,i=(e-a.x)/r,o=(n-a.y)/r;return{x:i-this.mapState.origin.x,y:o-this.mapState.origin.y}}getMapCenterPoint(){if(!this.mapState)return c.warn("Map state not available, cannot calculate map center point"),null;const t=this.managers.mapManager.mapBounds;if(t.minX===1/0||t.minY===1/0||t.maxX===-1/0||t.maxY===-1/0)return c.warn("Invalid map bounds, cannot calculate map center point"),null;const e=(t.minX+t.maxX)/2,n=(t.minY+t.maxY)/2;return{x:e-this.mapState.origin.x,y:n-this.mapState.origin.y}}getWallPointsByViewportCenter(t){const{width:e=this.config.controls.virtualWall.minWidth,direction:n="horizontal",offsetX:a=0,offsetY:r=0}=t||{},i=this.getViewportCenterPoint()||{x:0,y:0},o=this.metersToPixels(e);return p(i.x,i.y,o,n).map(t=>({x:t.x+a,y:t.y+r}))}getForbiddenSweepZonePointsByViewportCenter(t){const e=this.config.controls.forbiddenSweepZone,{size:n=e.minSize,offsetX:a=0,offsetY:r=0}=t||{};return this.generateZonePoints(n,a,r)}getForbiddenMopZonePointsByViewportCenter(t){const e=this.config.controls.forbiddenMopZone,{size:n=e.minSize,offsetX:a=0,offsetY:r=0}=t||{};return this.generateZonePoints(n,a,r)}getCleanZonePointsByViewportCenter(t){const e=this.config.controls.cleanZone,{size:n=e.minSize,offsetX:a=0,offsetY:r=0}=t||{};return this.generateZonePoints(n,a,r)}getSpotPointByViewportCenter(t){const{offsetX:e=0,offsetY:n=0}=t||{},a=this.getViewportCenterPoint()||{x:0,y:0};return{x:a.x+e,y:a.y+n}}areRoomsAdjacent(t){const e=this.config.map.adjacencyThreshold;return h.provide(this,()=>{if(!t||0===t.length)return c.warn("[Room] No room IDs provided"),!1;if(1===t.length)return!0;const n=Array.from(new Set(t));return 1===n.length||("raster"===(this.mapState?.mapType??"structured")?this.areRasterRoomsAdjacentInternal(n,e):this.areStructuredRoomsAdjacentInternal(n,e))})}isPointInAnyRoom(t){return h.provide(this,()=>t&&"number"==typeof t.x&&"number"==typeof t.y?"raster"===(this.mapState?.mapType??"structured")?this.isPointInAnyRoomRasterInternal(t):this.isPointInAnyRoomStructuredInternal(t):(c.warn("[Room] Invalid point provided"),null))}isPointInAnyRoomStructuredInternal(t){if(!this.mapState)return c.warn("[Room] Map state not available"),null;const e={x:t.x+this.mapState.origin.x,y:t.y+this.mapState.origin.y},n=this.managers.mapManager.getAllRooms();for(const t of n)if(t.outlinePoints&&t.outlinePoints.length>=3&&d(e,t.outlinePoints))return this.managers.roomsManager.getRoomPropertyById(t.id)||(c.warn(`[Room] Room ${t.id} found in geometry but not in RoomManager`),null);return null}isPointInAnyRoomRasterInternal(t){if(!this.mapState)return c.warn("[Room] Map state not available"),null;const e=this.mapState.width,n=this.mapState.height,a=t.x+this.mapState.origin.x,r=t.y+this.mapState.origin.y,i=Math.round(a),o=Math.round(r);if(i<0||i>=e||o<0||o>=n)return c.warn(`[Room] Point (${i}, ${o}) is out of map bounds (${e}x${n})`),null;const s=o*e+i,h=this.managers.mapManager.getAllRooms();for(const t of h){const e=this.managers.mapManager.getRasterRoomPixels(t.id);if(e&&e.length>0&&l(e,s))return this.managers.roomsManager.getRoomPropertyById(t.id)||(c.warn(`[Room] Room ${t.id} found in geometry but not in RoomManager`),null)}return null}areStructuredRoomsAdjacentInternal(t,e){const n=[];for(const e of t){const t=this.managers.mapManager.getRoomById(e);if(!t)return c.warn(`[Room] Room ${e} not found in map`),!1;if(!t.outlinePoints||0===t.outlinePoints.length)return c.warn(`[Room] Room ${e} has no outline points`),!1;n.push({id:e,points:t.outlinePoints})}const a=[];for(let t=0;t<n.length;t++)for(let r=t+1;r<n.length;r++){const i=n[t],o=n[r];g(i.points,o.points,e)&&a.push([t,r])}return u(n.length,a)}areRasterRoomsAdjacentInternal(t,e){if(!this.mapState)return c.warn("[Room] Map state not available"),!1;const n=this.mapState.width,a=[];for(const e of t){const t=this.managers.mapManager.getRasterRoomPixels(e);if(!t)return c.warn(`[Room] Room ${e} pixel data not found in raster map`),!1;a.push({id:e,pixels:t})}const r=[];for(let t=0;t<a.length;t++)for(let i=t+1;i<a.length;i++){const o=a[t],s=a[i];w(o.pixels,s.pixels,n,e)&&r.push([t,i])}return u(a.length,r)}async snapshot(){this.render(),await new Promise(t=>setTimeout(t,0));const{snapshot:t}=this.config;return await this.renderer.extract.base64({target:this.components.appContainer,format:t.format,quality:t.quality,resolution:t.resolution,antialias:t.antialias})}async snapshotByData({map:t,path:e,roomProperties:n,customElements:a,forbiddenSweepZones:r,forbiddenMopZones:i,virtualWalls:o,detectedObjects:s},h={}){const p=`SNAPSHOT_${m()}`;c.log(`[MapApplication] ${p} snapshot start`);const d=new j(p);try{if(await d.initialize({config:this.config,runtime:h}),!t)throw new Error("Map data is required");if(t.startsWith("7b22")){const{decodeMapStructured:e}=await import("@ray-js/robot-protocol"),n=e(t);await d.drawMap(n)}else{const{decodeMap:e}=await import("@ray-js/robot-protocol"),n=e(t);if(!n)throw new Error("Failed to decode raster map data");await d.drawRasterMap(n)}if(e){const{decodePath:t}=await import("@ray-js/robot-protocol"),n=t(e);d.drawPath(n)}n&&n.length>0&&d.drawRoomProperty(n),r&&r.length>0&&d.drawForbiddenSweepZones(r),i&&i.length>0&&d.drawForbiddenMopZones(i),o&&o.length>0&&d.drawVirtualWalls(o),s&&s.length>0&&await d.drawDetectedObjects(s),a&&a.length>0&&await d.drawCustomElements(a);const m=await d.snapshot();return c.log(`[MapApplication] ${p} snapshot completed successfully`),m}catch(t){throw c.error(`[MapApplication] ${p} snapshot other map failed:`,t),t}finally{c.log(`[MapApplication] ${p} destroy`),d.destroy()}}renderOnce(){c.log("[Pixi] renderOnce"),this.render()}renderOnceNextFrame(){this.pendingAsyncRender||(this.pendingAsyncRender=!0,requestAnimationFrame(()=>{c.log("[Pixi] renderOnceNextFrame"),this.render(),this.pendingAsyncRender=!1}))}requestRender(t,e=!1){e?(this.tickerState.renderReasons.add(t),this.ticker.started||(c.debug(`🎬 [Ticker] START: ${t}`),this.ticker.start())):this.renderOnceNextFrame()}stopRender(t){this.tickerState.renderReasons.delete(t),0===this.tickerState.renderReasons.size&&this.scheduleStopRender("final",100)}destroy(){h.unregisterInstance(this.instanceKey),this.tickerState.renderTimer&&clearTimeout(this.tickerState.renderTimer),this.tickerState.renderReasons.clear(),this.emitter.all.clear(),document.removeEventListener("visibilitychange",this.onVisibilityChange),this.managers.pathManager.destroy(),this.managers.mapManager.destroy(),this.managers.controlsManager.destroy(),this.managers.detectedObjectManager.destroy(),this.managers.customElementsManager.destroy(),this.managers.roomsManager.destroy(),this.components.interaction.destroy(),this.components.viewportContainer.destroy(),this.components.appContainer.destroy(),super.destroy()}initializeViewportContainer(){this.components.viewportContainer=new f(this.config,this.containerElement),this.stage.addChild(this.components.viewportContainer)}initializeAppContainer(){this.components.appContainer=new y,this.components.interaction.addChild(this.components.appContainer)}initializeInteraction(){this.components.interaction=new a,this.components.viewportContainer.addChild(this.components.interaction)}scheduleStopRender(t,e){this.tickerState.renderTimer&&clearTimeout(this.tickerState.renderTimer),this.tickerState.renderTimer=setTimeout(()=>{this.tickerState.renderReasons.delete(t),0===this.tickerState.renderReasons.size&&(c.debug("⏸️ [Ticker] STOP"),this.ticker.stop())},e)}generateZonePoints(t,e,n){const a=this.getViewportCenterPoint()||{x:0,y:0},r=this.metersToPixels(t)/2,i=a.x+e,o=a.y+n;return[{x:i-r,y:o-r},{x:i+r,y:o-r},{x:i+r,y:o+r},{x:i-r,y:o+r}]}preloadAssets(){const t=this.config.robot.icon.src,e=this.config.chargingStation.icon.src,a=[];n.add({alias:"robot",src:t}),a.push("robot"),n.add({alias:"chargingStation",src:e}),a.push("chargingStation"),n.add({alias:"deleteIcon",src:this.config.controls.deleteIconSrc}),a.push("deleteIcon"),n.add({alias:"rotateIcon",src:this.config.controls.rotateIconSrc}),a.push("rotateIcon"),n.add({alias:"scaleIcon",src:this.config.controls.scaleIconSrc}),a.push("scaleIcon"),n.add({alias:"moveIcon",src:this.config.controls.moveIconSrc}),a.push("moveIcon"),n.add({alias:"checkmark",src:this.config.room.selectionIndicator.iconSrc}),a.push("checkmark"),n.add({alias:"spotIcon",src:this.config.controls.spot.iconSrc}),a.push("spotIcon"),this.config.room.property.cleanMode.assets.forEach((t,e)=>{const r=`cleanMode_${e}`;n.add({alias:r,src:t}),a.push(r)}),this.config.room.property.suction.assets.forEach((t,e)=>{const r=`fan_${e}`;n.add({alias:r,src:t}),a.push(r)}),this.config.room.property.cistern.assets.forEach((t,e)=>{const r=`water_${e}`;n.add({alias:r,src:t}),a.push(r)}),this.config.room.property.cleanTimes.assets.forEach((t,e)=>{const r=`cleanTimes${e+1}`;n.add({alias:r,src:t}),a.push(r)}),this.config.room.floorType.assets.forEach((t,e)=>{if(!t)return;const r=`floorType${e}`;n.add({alias:r,src:t}),a.push(r)}),this.config.room.property.customAssets&&Object.entries(this.config.room.property.customAssets).forEach(([t,e])=>{e.forEach((e,r)=>{const i=`custom_${t}_${r}`;n.add({alias:i,src:e}),a.push(i)})}),n.backgroundLoad(a)}onVisibilityChange=()=>{"visible"===document.visibilityState||this.components.interaction?.clearTouches()}}export{j as MapApplication};
@@ -1 +0,0 @@
1
- import{Container as i,Graphics as t}from"pixi.js";import{Logger as e}from"../utils/logger.js";class n extends i{viewportBounds={x:0,y:0,width:0,height:0};maskGraphics=null;containerElement=null;constructor(i,t){super(),this.containerElement=t||window,this.calculateViewportBounds(i.global),this.position.set(this.viewportBounds.x,this.viewportBounds.y),this.createMask()}calculateViewportBounds(i){const{containerTop:t,containerLeft:e,containerWidth:n,containerHeight:s}=i,{width:r,height:h}=this.getContainerSize(),o=this.parseSize(e,r),a=this.parseSize(t,h),d=this.parseSize(n,r),w=this.parseSize(s,h);this.viewportBounds={x:o,y:a,width:d,height:w}}getContainerSize(){if(!this.containerElement)return{width:window.innerWidth,height:window.innerHeight};if(this.containerElement===window)return{width:window.innerWidth,height:window.innerHeight};const i=this.containerElement;return{width:i.clientWidth||window.innerWidth,height:i.clientHeight||window.innerHeight}}createMask(){this.maskGraphics=new t,this.maskGraphics.rect(0,0,this.viewportBounds.width,this.viewportBounds.height).fill(16777215),this.addChild(this.maskGraphics),this.mask=this.maskGraphics}parseSize(i,t){if(!isNaN(Number(i)))return Number(i);if((i=i.trim()).endsWith("%"))return t*(parseFloat(i)/100);if(i.endsWith("vw")){const t=parseFloat(i)/100;return window.innerWidth*t}if(i.endsWith("vh")){const t=parseFloat(i)/100;return window.innerHeight*t}return i.endsWith("rpx")?parseFloat(i)*(window.innerWidth/750):i.endsWith("px")||!isNaN(parseFloat(i))?parseFloat(i):(e.warn(`Cannot parse size value: ${i}`),0)}getViewportBounds(){return{...this.viewportBounds}}updateViewport(i){this.calculateViewportBounds(i.global),this.position.set(this.viewportBounds.x,this.viewportBounds.y),this.maskGraphics?.clear(),this.maskGraphics?.rect(0,0,this.viewportBounds.width,this.viewportBounds.height).fill(16777215)}addContent(i){this.addChild(i)}}export{n as ViewportContainer};
@@ -1 +0,0 @@
1
- const A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAOklEQVR4AeySSQoAMAgDp/3/n9v4ABc8eRCSUyAwmgu8xIp9WYGfFpItgBk3OPpW5HAnMxBE0NciwAcAAP//bVPdOAAAAAZJREFUAwDM4hAZDjaEjwAAAABJRU5ErkJggg==";export{A as default};
@@ -1 +0,0 @@
1
- const A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAMAAAAOusbgAAAAaVBMVEUAAAA3yFI4x1E3yFM4x1Q3yFI4x1I3yFM3ylVAz1BEzF44yFI3ylI3yFI2yVNGzF9GzGA3yFM4x1JKzWJY0nB62or///83yFL///+b46hQz2jN8dRp1n1Ey13y+/SC3ZPm+Om06r6n57PA80FIAAAAF3RSTlMA3yC/QO9grzAQ75+PcFDfz8+Ar2AwEAVwkmAAAANrSURBVGje1ZtpktowEEZbkiVvmG1m+Ixg1vsfMqnUVPWPkLG6W+DKu8CrJ7UBG5nEnLrtsQ1h5yIwOLcP45ReerovXWoPuIlrJ0/3wad2wI/Ep1S/PLUoIjQ13X4cUEzcNJW0TYCQUEP9zNpHqr2DHLvajzCwUY9ZcjARJ13uAWaCl3u3DhWI4p0+opTrwk7LlnmHYi74mb2/z0V0nbGAKzZ3DoLgRTFcVzhWUeB9n+daI5Yg4aNEDKRlbwOIgsvE2C7ub5QFl4pjV2WeOZjFgtk2e1/fWGwz7yHiPAvE2P3buwFkwSIxjtaB5mAWW0bb80ALglms3uYARhAsEONwyzuBEQSzWPkJ1kcwgmCZ2Hn1RHOwRoxRPdEcrBLDKyeLg5ViZw5WivFsDFaLgyn4a1aL0RiC82wQB0Pwp0UMr76G82wSj+oPrU+beNCudJ5tYiTlaF2s4vZ7pSHjOpvEPF4JMi42Ma/1EwRwsFbMay2c6YtNzHPtIYCDTWJ08p88F6OYN7mFAA7WinmTHSRc6ogP0quYg5nzDV6xwIleIOEyF3EpmK4kCy7jWnA3M60SjCONAu97tWC0oq+mj2rBCLR/bDCL3SrB2JFbJRiOBhTyWjMYkVDKuWYwQMXBb1WCWRzXCR7IrRPsaPfYYBaHVYKxp7BKMAK1qwRjpOMqwZhou0owEnWrBOOFTljm/fw3X6Zg9EQHqMimYCf+Qc9iU3ArvktlsSUY029xBxVZG8x35gM0ZEtwJFJvcrYEPxGpNzlrg/lRhIeGbAhGT/q1zobgQKRf66wL5ue32rnO+uDY0zcj5GRVMB+UUI9XVgej0TwoZ7E6OKj+GmCxJdiSnC3BzDOkZFMw4yAk24L1g52twdprOSuvYfPpvGz80GISRGRV8EQ3OEBCVn8tGRc7K4Kjp5tsISArghvbQT0Wc7Buopkdisni4H2dQ0ZZEFz1eFPmYInXfpAsy4Jjxw7baGdZcFPtsGAWPgAooIlFYkFw3FY8EJrLg11X8whsLg52ksO3+2VxafDOk4TNorgw+CiQ8oiZcVsS4wPMHDxpmKIxN5GSfgMDo6/7OoroInq4Ojz/vy/h/FFvBGM2jJ7q0Zdmt4lq06enuNDapru91za1Djc5tKmj+9K/pGkMe+cGILpdCO1x251Iyi/g4vimU9Z1kQAAAABJRU5ErkJggg==";export{A as default};
@@ -1 +0,0 @@
1
- const A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAMAAAAOusbgAAAANlBMVEUAAAD////////////////////////////////////////////////////////////////////xY8b8AAAAEXRSTlMA3yB/YL9Az5+QEK/vj3BQMNgNE0EAAAEySURBVGje7dnLbsJAFIPhk2RmcoO2ef+X7SJSvaJe2VWF/7UPn1AEC6iUUkoppZRS+q2x9d6XucyN6brbvPRy/TR5ZLiQjzIEFz3LEFz0sLxluKiVIbhoL0Nw0VbC4LrfMVz+jLUumksXXP6Ite7r78y4ceNK3K/20Ybfbes9XLzucZKtyK2VrFXuQvYqdyYXKrcauVG5dZIrlVud3KncOsmlyq2d3KrcGuRa5dbxeHEvctEneQXiuj6L/EYj8wuNzPcama81Mt9qZL7UyHynkflKI/ONRuYLpcxdhcxdjcxcnUxcnfwkrkzWuZDdLmS3C9ntQna7kN0uZLcL2e1CdruQ/S7kf/e7mUDWupDdLmS3C9nvQv77/4LhWmrTddfheppbX6d1H5VSSimllFJ6674BgnCK71i7vw8AAAAASUVORK5CYII=";export{A as default};
@@ -1 +0,0 @@
1
- const A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAMAAAAOusbgAAAAPFBMVEUAAAD////////////////////////////////////////////////////////////////////////////YSWgTAAAAE3RSTlMAYN+fgL9AIO8QcFDPfzCQr49fa1RRAwAAAnlJREFUaN7t2NmumzAQgOHxvhEgnfd/17ZKDhMMSmobz+mR/F1Fraq/jAeywDAMwzAMwzB8N6EfHPBS+ORn4GRxY4CToLCED9jD4bYa8Q3hMOEfU+AMUxdRcYdXfFK8YYWbO2f4hi9uPGHqUpkrHDHziydsMednjrDz21/J7ZXrH3YvNXo9he5h83qV83b1qneYFnren3fsGxYUyjfc9gzTYml40jT6juFtmZaTp6fpFqYDlgE2QdL0O4UdTfV0/t71CdOgE+wkGnaXcKTFyiw07B5hQ3+Sm76GHa4P06QdkPyY79eFJ/iij4M+HoO7LGyy+2YCcjJs1SEMTk2TDh++e4Qrw5/R6mnusKPFZg3TJVveMJ2y4g3Tfe6Zw/TgdLxheq9IvGHaa8EdBnzQPyEsVvO0qr8Mhb3au7sLR33HAvLTjZwKtqKIhXORPukXPHMKxA/PTOgV1u/nNsE/c3oTxVGye+79oizAy3k6YlaKlp7VDWsemLN9ECf0UTjrVl0wlklnXbrgXrfTcW+dwbpfJBYsY7Kfjz1Wfjk3WCjQdkSDxJd1A5ay9NBo+Z0tYSlNO9XQBYWlTPb9sfR86Z8X8ie34RqgkMNyNt9KaWs+X5WL++0wAiqsWG79+k9LxElbqCKxnKeDClBpxhoOmkWsEaGZwRoKmmEVCa0sEtZDXrCOgEYT1lmgTUDCesgJa4XWT8PEKLXuLkotBonX2iNJ0ETu98Vm96rYD1dedsgOq8MGWogsnLK3IJuFLzvkNQuL7AOOexO20MBkYV0QTpeNWh/DkIWve5uIk5TSPCQAoV7cAOD5ctFaR4CotXhIMwzDMAzDMAz/j98ceskaOhA77AAAAABJRU5ErkJggg==";export{A as default};
@@ -1 +0,0 @@
1
- const A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAMAAAAOusbgAAAAM1BMVEUAAAD///////////////////////////////////////////////////////////////+3leKCAAAAEHRSTlMAYJ+Av0Df7xBwIJBQz68wzE7woAAAAVNJREFUaN7t2d1ugzAMhmHHSUj4Kfj+r3asmxrIClKYlwzpe8446XuQgi0gAAAAgNuIxj4ZqmsI8s1RVSwvnmpyKWzpBMIII4zwWdjQCYQRRhhhhBE+hDDCCCOMMHX/IOzpxG3D0fJeSGHHe0b35VKBntSMUqLTvHlKhFZhGUiLsVu9ecNvENxP9MlkfurtzkRaeml0I89SJpKSIGUM6fBSaCQdVgo99J6YTQ45SjFPGiYpNtaexrofox5SLGgc8iDS5pCNJFX3LpYLnOIKXXvvWuSSRWMktjnkWS5hjZHY5JC9XDTUHYmJqTsSE1YciczcycbMHCRxlvU2vin7Kc4eyJ0klrzeMsBZ2GVhdxw2eiPxTXg+Do8KIzGFuyzMWVhr41vycMjCYxZW+3e5LCxZ2B6Gw0S/Mbjuk3tar3lrDfvXhbWeol2ZL5EAAAAAAOCvfQALwYE8tktFzgAAAABJRU5ErkJggg==";export{A as default};
@@ -1 +0,0 @@
1
- const A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAMAAAAOusbgAAAANlBMVEUAAAD////////////////////////////////////////////////////////////////////xY8b8AAAAEnRSTlMA5VZzrI86yR0O12VHK4GeumR+Sig+AAAB1ElEQVRo3u3aYW+jMAyAYTuExEkItP//z550VHCVOGMzl02an6+b+i4hIRQNnHPOOed+KkoruNmAL7nAnQg3M9wp7OEMDA972MMe9vDvDkdgeNjDHvawhz38Xx72sIc9/H1hasNfLazGPZzDu8R8StG/XFIY4FCPFfERlC+XVBJ3cWZNeNKFA/u3N91S+upcx+2ntShGHDfLeGB4dzTVbxNyI2ImhGEbbnCnvIc7qNAUJFKBQ8+tu2iqZcgoNRIAs6wzKbpJluU/el7v7PSJbcy/tKcwtASqrtZotBP0ikG3ZNSbDMIjXtBOBkPCiba9yBQR61yAF9F6xJQlT0wJLyHBtZvsrzA+gVFFe66iXg3AwZdoPdO5y1bNDIym71YC3iQ5LGZ9OMielWs33kxZ9u2gFetdPIOJaH2z7LGKwos+fLqwPnRCzGePfLIRN9vFlcT/UjChWuKeZcSLr+jDD2ZIHbFOadXLyUVRG4twl0SyvXVhDvxZvAvW53FdhjCld+s8lLDEl4qIXb2hDBYdPdivMyUbh3eF39S9Xm6N/+qHKxe48jZm64Oq8mGgi+Vwfi7H01+5YuBFyVMDjfgJA5yj8LDO1qf8ZYSlVMA555xz7rv9AZlKFXj5dr43AAAAAElFTkSuQmCC";export{A as default};
@@ -1 +0,0 @@
1
- const A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAMAAAAOusbgAAAAOVBMVEUAAAD///////////////////////////////////////////////////////////////////////8KOjVvAAAAEnRSTlMAQCBggN+/nxDvcM8wkFCwoI+ASc+UAAACfUlEQVRo3u3Z7XajIBCAYWAAAVET7v9iN6my6CR0lmo+Np3nV3vSkzcKQmkFY4wxxhhj78EFfQVOPJDr05cgCpNmVjyQuo3IlEVRPDUsxePEV4UlhzmcfVy44zCHPzkMnx2GV4eHV4X1W4WVKDjMYQ6/fRh+TTiswnJ2TtkoVw7+FLqEVfqeFjecNsl3amc4JoKrnOq93BeWVFgKpEsz7/bdav0lwOzUmw1rI77glIU94XblFnXPDZdJMfw8HBTiBM3n8Eh+xuu4pYycw6MttKovAkZQhku3t4su0xlk8kJcwug5rtwvq8TBZKLKSneDFIeLxIN8BJVFuQCAgMLTkUX7zagPKGzEsxhqtc5gsnBk+ITCorhdtI07aNTLg0qtjJBnfRXo2blbTHZhspIZ8bTua5e0zAVLjBmtLMAeff/DsGrIzu9j18tHlaQ2GmgK+zzI9M6niU82pSYyXwv9G6cKQRLbWIMghCuXXxcVuebT8ArZ5xldv1ibB5eYfG2DPJBXbBIZ7lMjtdqSVf02Do76T08rWA2yrocjeUxq1ZU1p/r2LiWjZ6BqK3krs94nPNSeYWqRMamZ2+wT5jxGtTHfyd7MKuWY2o3EzECTqL+7YwcyQ+8T2O30Dbdhm9rZO+tsDwVu5HuNT1j7Bpk+7MC9M8VIJKh9IvOySvtkHPEwGV++vOjt3+9td+VX+4RvmY31hykot3n6DFpOYfPTU9PksPG2q9AQDShscbjsDU7V0QdMQOEJhU8ofNhfnCYUtv8YDnvDHoV7FB62r/uyT+wjEwobFNbb1w87LgW8geBlbzTLmV2Kq+XcBiB3ht0IMMqL6ARjjDHGGGP/qT+Hf7FSTq027wAAAABJRU5ErkJggg==";export{A as default};
@@ -1 +0,0 @@
1
- const A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAMAAAAOusbgAAAAM1BMVEUAAAD///////////////////////////////////////////////////////////////+3leKCAAAAEHRSTlMA378ggBAw78+fYECPcFCv86Xy/gAAAk9JREFUaN7t2WlPwzAMgGGnjnP2yP//tWgg0GavaVCOCpH3K1WfHWnjMpjNZrPZbDabzf5cZg8BYXTGq/TIBRgYBpd+8jAoCkt6aYURRZ9EBmQdvliZh77tKr3PQdd0Og16FtNNsL8LVv8OXu6C17tgfJYWNQ6G7ZtRHgEHwhDVJxsIAMAxuG8m7ObdWoMR/TkYg9Y7Qb6o143awto+DrQRMqFKj1ZqB9P34Raz7leOqmG5w6hTmRybLKpguaUqKtj+Yj0sb7dHwZyxNoKP9JyGN4X03NIFThuIjE3PHY3gcDUPI9vtdSOY2HkVigX9kqUy2MJVaJlM2XkuQBms4DLD5CM3OG/QDJayPl8BGlrCYOTbyr+keji/tOWCroelLJc2Oe42h6VMckGv0AOG7VVxyBe0hz4wc0QeKuAK2UEFXCE76gmDrnElXC8rhB6wlKXbHYY143aF4eCuRRgCo7yAx8B0F6w5rMbAxiaeHgGjTTLdB5ajrJS7wNKVbV1g6cpCF1i6sr0HLF2ZNV1gOdmpsDsm94GJMSieqhQ2gqXLH/uRyx1g//byMYnJzWF/csPYuNwY9qf7kWYyNYV1ZrJb+d8awjr7eTomN4Kla03+vuJbwVreG/Py2gaO1/uQ4RtGE/j6Z195UTWBXyeOpejrwBZw2WXq28Ou6MZEruhfbAf78HKFso0PVckFFX4zp6my8QZtyQ17+cWDDzr+EvMDtzL5k5UPaaTt43w7XGQ+347HgpOlA6EkMtEUHbdHhMtMjASz2Ww2m81ms9mIPgCfVZZTXlzW2AAAAABJRU5ErkJggg==";export{A as default};
@@ -1 +0,0 @@
1
- const A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAMAAAAOusbgAAAAM1BMVEUAAAD///////////////////////////////////////////////////////////////+3leKCAAAAEHRSTlMAgCDf7xAwz0BwYL+fj1CvJC6qIwAAAtFJREFUaN7tmUlu7CAURelbg9n/av/kKyX7GnjGppRInGmED/AaoMIWi8VisVgsFou/gnE5hOAE+yIi7Lb8YLesGTLBassZFR2bjNjKNXPVmpc6cV64hSwtlGdz4KUHZ8BUL5rne+ebfaERXva6QkSKd+tIQvHw7FxIEczb1ABv4lPaqhx5dcnHj++Hb4s4b8m5nbnpGOUXxYcGnRiwH8xuzk5L3eul/jWvgPU0N3t/TRzKh9ifWpzStTghGAzJPAXd0TjOvatWsWGXxPJB4ZbJ/rEpIp7qHD7azutq+2mYtb3oubmfOBuuGL1FiWbFYqTkz0jTWzHGWCvCEcKvDzhh/4/LrIItHyyk5qkLIKFaFTyqYrkgtZit1VATu8CogZ6LdeybJxvvXiLl6P3EtO8QHhN66Hjrl7E9mQ0m9Ogh45oTFrJ5O+IP7osbTBjM1dQO4B1MLaVZ17xDQoOXRIR66Zl57Q9p/MotGMXsbyc0IlR/KG6pgeToeBELC6aYpcCEtvqON0HwiGb3zOuhUKrkAox7HUSuQXjv0SUU5CrF/Nwrbyaln+ClBYm/4dUSBg+a1T2vhcGDZmVu7bOFwaNmdy++w5NW5wKe40XkSRy/5HWYWjO9OPbD/kXv0HFo1HPvyEXLPfBq8NLNAZrdvZ4zavYPvaNm/qS5x9LCT/NuJ1Hey4HwHW/ALchTvAk2ltwQtideDi8Gmhm9asCLTdLAYrql4B94rSaXJ5ZCGPdKQU+chPeVxK/wWTebDkYytcyu3CCd1KGzV7bxbI/lDrb5cuF4YlWHa7IT16RV9endf52bm+JYD2FEL35fQIiJSIhg5znpK/ddcVOsQEz7ERVDJcdXvHdbIkbEQEUQSZViCrRfNCJuRR9s41u9kDC18XnvFX2j3bHLR/A2zSqzAzpzGh/tYdKy29xFhH9cPsZkxwho5wRbLBaLxWKxWCx+I/8ANf2/u2NhQhAAAAAASUVORK5CYII=";export{A as default};
@@ -1 +0,0 @@
1
- const A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8BAMAAADI0sRBAAAAG1BMVEUAAAD////////////////////////////////rTT7CAAAACHRSTlMAgL9g36+fQGFJCmkAAADFSURBVDjL3dS7DcJAEIRhniJ1SIgEBSAqQFRARguEJBTgxJqy7cDeX7ZGmtwX+fbu8+t2d7Pqsb99lqHH617XX6mZr26lrrCkdr58ljTxnTRxsHQZJwfBwXqWhoP1rmfDwfrVFA5mO3Ozm4DHRCwmZDExjwlaDPcYDrYcbDnYcrDlYM/BnoM9b+Jyvnl+tfxh+beA4elIwoGmdAjJlFIxJHIqg1hEuQRzAZ9c+dN6jmB4bj2hcYW2F5omLfe6PMH/0HLXPHpWgenjpk040QAAAABJRU5ErkJggg==";export{A as default};
@@ -1 +0,0 @@
1
- const A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8BAMAAADI0sRBAAAAJFBMVEUAAAD///////////////////////////////////////////+0CY3pAAAAC3RSTlMAYIDvMBDPv4+fcLUOqFYAAAEWSURBVDjLvZW9isJAFIXHkLCw1S5ss9ikt00h2ETyAqn0CaxsbHwCSyvfwN7KEUQ8L2dilJPE4Z5GPFXgy5efOzP3um6i1FkZeYtGQGrJgDflSrfkSjdk6kGZekimHpTHwIZ6Xz5Ngb9JWB8C2QD4KYBrAM9wymscT7AI4GSZuRq74ly6QOZ5g+O1C6fBzHvwd9nHSfu20aKPZ75dsHPZxckSKWVg1cVfgG9XO+/iuK485az/7uKpUyamTpmYOmVi6o18+X3kH9g9r7d3PYKRtJKNeIHFw8WniR8TZRFFFUsiFlRsB7mZ9FZ0g9eNvP/AIdIHWB9/3TwObD1H0bhE2xNNU7Rc0bAN3ethoUeNHlR6zIkheQMcOzccp+sDkgAAAABJRU5ErkJggg==";export{A as default};
@@ -1 +0,0 @@
1
- const A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAMAAAANIilAAAAAM1BMVEUAAAD///////////////////////////////////////////////////////////////+3leKCAAAAEHRSTlMA32CAIEAQ779wz4+fUDCvilaH/gAAAZdJREFUSMftltuOxCAIhsWiVqst7/+0m5jsEIUqm72d/64M33BSWvfVP9WgzKZ4wqRyayhWojwbMwlVhfVAdAnrIeHmVK/TGWAvfOJDRAn3cGqSLURc8AJOSrcqcdIrGBT26r8EFd4FbsSBN2kDzgUnnsAOJohKwZSiBZ6PQpBG+5xP6gpWGGRgiksYDhGax0TFrWBAVzn03GqqK7igcwgces46L+DSS/IfuHDWopBBvrNdHBrdaAnuRdlH/p8xzfj7fLutkLr4JN+cyV7P535MqQQDzHnff4eRRu+DZ2dQ4Y4N8GGBK3sPa/mxwJnhoWawwG2EAxlnNXpnbqC5Yzg5Jz41VpgHe3LeVpg3hxebLV7HDgZ+Hi1YiNqmYZX339B/hNXlnpvrOTR2dgFfYlnCh66dXcCPGIwnThxoCSd5A4FYSzhwYLZZ4UO7+pcRTupRBBMciLQPFwQLfL68HTDt4fD2Jr4N8Ply91oSaeuBS9SO7BaOoLMHGeCq15tJwppTyk6qGuBG9KC6Hk6Y9ERRGXj31f/0A2zyPsVxnMRtAAAAAElFTkSuQmCC";export{A as default};
@@ -1 +0,0 @@
1
- const A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8BAMAAADI0sRBAAAAIVBMVEUAAAD////////////////////////////////////////PIev5AAAACnRSTlMA7zC/QN+fgCAQTQcGNgAAAMRJREFUOMvd0jEKwkAURdFPBEkdsLFKyAYk2UIqO1uXYOUSXIJbCCiCqzTDe8Ei3qmDrz3caebH+7tHLLZ6fvZpHfFYhwaPV8jOiZ0zn5QTd3vlwIdGOXGhnDiUIytHdk7sHNk5sXNi53dg5a9lPQxDHc6vQUu5YlqjmFbGv++W1W2V5ctY5+L534vpt37E89lspr9eaKmzIfbVIfvqzJSbKTdjLsZczLkYczHmrZjyXWLKtaDcTLkZc+K2TzsTH/Xu2vkDlC8AMDsTJN8AAAAASUVORK5CYII=";export{A as default};
@@ -1 +0,0 @@
1
- const A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAMAAAAOusbgAAAAOVBMVEUAAAD///////////////////////////////////////////////////////////////////////8KOjVvAAAAEnRSTlMAgH/fIL9gcEDvoBDPsJCPUDD8BuiCAAACCklEQVRo3u3Zza6bMBCG4Y/434aQzP1fbCt14SOZSac+zPQs/C4jwaME7ICN1Wq1Wq1W87VYd0dEe9gy7MqBvuQi9OusHp3PenqMPeiix31uZU5YiVTlB3PCk5jSTXChS9kTV2m3uG/mR0zEtt0Ce7qWKw873FK5livx+VvgRJdyIr6IW9ou5Ux8T2jKgYcrNOXMwwGq8qYM83IqLKws+8rB2jISA+vLkbmr9eUnM1mry819+GO0Hs8ZPdPx3NCzlB16pvKBnqkc0TOVPXqWskPPVH6iZyp79CzlHUM2csSQiewwZCNHDJnIAUM2cgOTosy35CUvecn/W37H83C/C8nbyT6FMhjqcnsE6pnJOdBFTVPu7FiEqvwOxJTAyeN1KrQf8Z/ck9gyZPLL0Z+cF7N+l6yX8rL3r7P0z8tb6jreLV7pLba77K01IWcR/MlNwIycxDsS/Er8lFwFrv/szslBAEeJK5fl8CFx5bIc3jn3AKblQwBzrmuYl5/fgD0wL78EcOEv8Lzsp6cPB3xDDhBUmZlyWpYenZgvPC8Lj27cfta8HCEq0Fi2eN7OzFjSlwMDq8u+MLC6nAYYsJGfw3aWlVyH6cNK3obpw0qOrrsehnLfN9299Zu7j4FKiD97zeBvcgKfqlwaDNukI1JT3mBalyNs26RzgZb8gnlxpxIyVqvVarVarb70C7CyrCEVukMsAAAAAElFTkSuQmCC";export{A as default};
@@ -1 +0,0 @@
1
- const A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAMAAAAOusbgAAAAPFBMVEUAAAD////////////////////////////////////////////////////////////////////////////YSWgTAAAAE3RSTlMA3yC/EECAYM+f73CQr1Awj6BvNXOp4gAAAlpJREFUaN7s1t1ugzAMhmE7TgghgdL5/u91ndBK11SYfFonTcpzXl7yR0Nd13Vd13Xd/+VWVk6OAD7PzCxDIMCHbtrTQfQbR2o1oD/2q97A6agPBjrPsd4BU+ZZgfLehQcd9acMdKEXF31yoVNYX0uewAewb9mRtfFkmaHZcroDy1qZfMMCweULtEGCHprJlrU2kiXpsRXanPbG9mrJZIjQzxY12O/O0BoVNbFHTiPDe3q32lu6NtnzZAv257Zmn32bGP9LaBgfsh9VwameoCHbXRVgjWtTc1eLEZ71FNfa1WCEIxS2u0wWAcOO9UiknblBphLdTViKTMb7W12mEyJv2cHTLpRRd0PjRLGjU0IecvDVoLLo5ko3IY0yx2prGF2Qi/PI8lVzsj/TvLbg3YMl3cp6oHgC2MddjsMS6Bddnj8NAmQRw/OlJgBZxFUfpNf3Dsme6P1hCqx3k5SloYpO9XA//SWlVPLi6G1Cdev8K/I407Z3fUBweFnQLi5+tmcGOQzCMBA0EBKSllz4/1/b+x6QVXmqVp4PrBDGeHfP7ei7JX9LmXM1nlKHIwUK+JaMQbfHw1C6RCoMTQ57iEUMAkOTIwDiEGsCoGddMYouthdiiNFnmBJtQHQNohkWV7YRYJrol6wZ+DCE05kjBawteK4d0VnAbEGPfF8cTAvhPnAcq0VTHTkWIKwdLySsBQkgDBxBsjHJ2W6qB9zYskDADVbGpSB+Zru+NF4TEHb3UtUi2aHhUqq3aPn9H4XV4MLDU06PWgyhbaCsNlDjrbmcz8wzkyRJkuRDXlF2skMkf3lIAAAAAElFTkSuQmCC";export{A as default};
@@ -1 +0,0 @@
1
- const A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAMAAAAOusbgAAAAPFBMVEUAAAD////////////////////////////////////////////////////////////////////////////YSWgTAAAAE3RSTlMA359AIL+QYBDvMIBwr6CPz1BvDk7raQAAAplJREFUaN7t2tuO3CAMBmDbQALkOOv3f9dKrVbWMiSQTHGqiu96oz94OGeh67qu67rP+JF2ZObdTQb0GMcscAQdnlgoRkfkdxM0ZyVXN5k4b4bGkPOChbb4yAAJreDgoSnkIwaaGpif6V6RjxAktJq8QGMr5zlobUTdYGFRsdTlZAIFRm+dKPewF2iw/CaCioVToMMojyYRdJdFMagsTuVaB9DilacP4RQqXf6REfSMCtuP8uRlQRE2GcTezLQ4t9D0isWFAu1fK+MWmIXbzOlIHuFA3JAZqfq9vgKnAr1nY6nQ23dFIlSZOAu/bNKecJ5L8qi/lSu2n9F2RSRTM97o6vj84PBv8eLMhnxqu5XL7n6D02QzE80WDpj0/f1HDZaq+YV/I59tLnFqLC6zRSSFzHdYs+Seutel05WIjk4Q3myBc3Y456qCY3Zfa8fNnTx1bq8q9fC+JBpCPgXnuCjYZFdNcu3WKFjm3TUJtoHbBn9PkGmpiYv228PYDaPNDjorT51wtzpXGIw/6vwEVcHTjRuOxUDK/5xAVi4yl6fq/P7BrjJl1sx3ePGAwHj4pnYmmqNsss+NFw8I5W1cXTJCkbmUK0a812Cx1vy9IUw3j3a43aXTDsvr+fYxxPRXxxu5ItZvWyFl1szOeIZKdkVmHGJ5yGX3+YP7OffYBvd6dFS01/TnADTLjPe5rXqU/CfH0zkZn2pQ9XZLmGSVVUPpAUFL+Dcu9J67wgygxPFDl6dqH1/KX/gsaHjpfvYRk9732/K2GzWKvfBDya7yEkohWKmHLfXXX206l/oXvvmp/wMxfAShKR/4CLQ1PBVsg26py92LoLWJ9abNcjJGUPB++CcPGtJoZ0CPmdzOzLjT6KHruq7ruo/8Ani9wIJR4hr/AAAAAElFTkSuQmCC";export{A as default};
@@ -1 +0,0 @@
1
- const A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAMAAAAOusbgAAAAOVBMVEUAAAD///////////////////////////////////////////////////////////////////////8KOjVvAAAAEnRSTlMAIN9A7xC/gGDPn3BQkK8wj6DdtO0oAAADPElEQVRo3u2Z2Y7rIAyGwWYnS8fv/7BHlTpi0gacsuTc8N1VivqDF2yMmEwmk8lk0h9nFJHfohT90HEDIlLG5f810C/GdZJFQwkrznnQH3yPXUtDB0CefkVHbLPuooguKAd649GoaylRUlb0TmjW/cQwlm7fc6RzHleEKdbHFeXYr3ypdK0wUA7D+LgttB3lceLI2nPLQHlAHEHqt2WkEu6KrU2V8EolzBXzqCphQ0XwyteyRthTkfXK11gj/EMJPmRVP2Ekuh5emk7RI5wc+FWCqEJC2dZ8NQliiDKy1kFRi/OUJ3LlxIgGtJRyX34YQzqmhtUjLZRCB5iFtSA/d12OaZCiEw5yB2KoOC5bolwyjU8/9HYq7NhS3I49OxAhoztKGVJo8brtxA8vhqH+TaBK6XJqaYViDBKOaUpHvBTDWNYQdaYHWMVtGEp4FPeBybtR3IBecH9ZHuiJt7pbGDkbjIcnxjwifgwKAF/S1kbsN3BR9M62vB/brrffDJ0T9DF3Vdfk2Q1l8U/lZUz6RCphj/cqKFsuQBqPcVgqot5uGaU4Mb+rW+rv4wl5EPbXGgdsaaZTGV4utHS7/a7VDZQn/QUc2xBtN2NMeESHuD/7YffwXzb3WrGWPtjFpl9lLFd4qIxyL49sf04uIJ6tzdJ+T8GwuD0tlgVa7qYqZvOPhxFWJWtJMU6YsgAymT9IeNUioa0hCDplAg/UmVrhySEDOo3EWEzVHNHLE900PtZADHwV27KlMGE+LjE7b+yloiR6nYsldz2+uMqI/A0bziqEqzi4uOjCfPLA4bmmBH7fBoRS+Gm2nvLJlEtKLFWR5fNprHoAZMsz562QJLYul86Tciu+t5hL7YsXl8BiaDHvHQ4aBk+xEFobF63SQv2F2eYXq3jvyeOubc0sbdMZNzB5gj/wcsUqvx0gKlIbZr3AnwwanXO76MXGZMowPPMoMgzmTXcYO3P+D2D0YLrqnuGHKXPlHhYxGFdxJRsrTFEMZaEcaqyfJdM3j0MVZjJDMUzjPIzI9HPD0IoRHoZlfDwOzzygD0MC/adKIf1tdYL3s9XiFuSriUyd5H3gap7iYFbUYjKZTCaTSRP/AEYn9FrTdrbUAAAAAElFTkSuQmCC";export{A as default};
@@ -1 +0,0 @@
1
- const A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAMAAAAOusbgAAAAOVBMVEUAAAD///////////////////////////////////////////////////////////////////////8KOjVvAAAAEnRSTlMA3yCAEGC/759AcFDPkDCvoI+BJCYaAAADo0lEQVRo3u2a2barIAyGCSQMjpX3f9izzunqoYoxbhD3jd9d6/CXEDJA1cPDw8PDw0MNYZkhxgh26VHdBhoXv/Ba3UPn4obljlGjjzlww6BtjL+iTHEfaG1tGxkW1RaIHIyx2wuPiqG1MKimvCJLW/cKvHCvmmJZYVJN0Y4T7lRbJs6/zOY+6vXFY36dEO6HusSlQ5hybzXiHC9VOTMsb6ta2j49Cl5tatKHtnyyx715DvuZxE0/06W190InLmdkwpugLE6j1cfL2SV/LkrWvPtArxJ9/sOSsbhLMr24YNDxF7vioKZPxIiR9y1TnLl85PC8e+Fq/ouGrGOUlZGdR4w5tmDAnLUtNyYqTdYYDzH7k6yPixQqqGCZ0NgztjTFFZkXhJ3eMQwJDjKX1xgJm5sUpJU4KBkXJbpU920GjEMsF44iDpMvrAc8C1aqFI7jZjZJdI+53tRpyHbzVpyF2RFI0yS8J6S0l+a3orMyp2yd7rQ6+XPNFKeMJ4fs6WV9yNdRaZKYkrIbvDHeDkINLen6s/l4/hRa+LFCP67Ew490B1Rn0Z33Y8D1d2TZEXhBt5ik7WJ0b0MHD2BJTmgjqkvQeuX8Fo+bVwjqWug7emg20hhUFwMrR3P3yK6NO+7Xw85eYuSJusV7b/q88vb/PsN6Zj3VDxb7ZciaqGkbPnX3vsnBPJJW1WBnd8MQup32VGuNF83k7LjAaxrubwV7lGperfZttRX28GhosmDIyckV9X//62hSMpXVAO0fFoDv2+qOfDfttssXzQzDfH55kZjk+A7AmoD/t40+XmFKG/PEC9+3LNYSWw8P1nu/Woq+dsCv790Gn7olkVNjHqTHzfdHPCXsUNbVki6t3+ZOKYeKzXCT5+J1i15Z4ZKgS5ulNV01ySSsX8jCdlNh2Lvssl37mrZtYjcgcp+fsr28irMSPPzBeu/rWRaeyk61gNlL9OsNbB5XmCKIiS5u1ejV9m3TQWOtmbjQV0xxwvKGImaVCA4G6hSB7+hn9oqR45bMyL5+EPapK49acWCiFh55TXfBqbaG/WGFw5dOwIbLMmV/dFphmadEXVkZ9KE1jRADTGmpOWih/DRHBZvrSs5NIVWImbuzJ4AE2TlZgTbK/xHIOyiaP3V2UBdhzv7zJfR0RVcjL1Wj2kJ82muLFhJ9O4BPA20xvyWMrqBTaOnXoJpjCpZTO2Wj7oCA2RtuDhIwm7TtCaP9Kw6zCerh4eHh4eFq/gDsgRtLdqAVbwAAAABJRU5ErkJggg==";export{A as default};
@@ -1 +0,0 @@
1
- const A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAPElEQVR4AezXMQoAMAgDwND//9n2B51EhxNcQ7gtJ7NX0wWiAAECBAgQIECAAAECBAgQWCFQb6G3/Sc7FwAA//+f4+OPAAAABklEQVQDAI04ICFaxIVcAAAAAElFTkSuQmCC";export{A as default};
@@ -1 +0,0 @@
1
- const A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAAAwAgMAAACTeJdcAAAACVBMVEUAAAAAAAAAAACDY+nAAAAAAnRSTlMAgJsrThgAAAAiSURBVDjLY2hgwA5GJUYliJBYhQMwOAwWF45KDEUJXOkKAA7xNyG+w0wTAAAAAElFTkSuQmCC";export{A as default};
@@ -1 +0,0 @@
1
- const A="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAABgAgMAAAAm4hnjAAAACVBMVEUAAAAAAAAAAACDY+nAAAAAAnRSTlMAgJsrThgAAAAjSURBVDjLY1gFBg4MQMAExGBqlDPKoS0HkuoGjXNGOcOVAwDBxwm1N3ts8gAAAABJRU5ErkJggg==";export{A as default};
@@ -1 +0,0 @@
1
- const v="data:image/png;base64,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";export{v as default};
@@ -1 +0,0 @@
1
- const I="data:application/json;base64,eyJmcmFtZXMiOiB7Cgoic2xlZXBfMDAwLnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDAxLnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6ODAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkicm90YXRlZCI6IGZhbHNlLAoJInRyaW1tZWQiOiBmYWxzZSwKCSJzcHJpdGVTb3VyY2VTaXplIjogeyJ4IjowLCJ5IjowLCJ3Ijo4MCwiaCI6ODB9LAoJInNvdXJjZVNpemUiOiB7InciOjgwLCJoIjo4MH0sCgkiYW5jaG9yIjogeyJ4IjowLjUsInkiOjAuNX0KfSwKInNsZWVwXzAwMi5wbmciOgp7CgkiZnJhbWUiOiB7IngiOjE2MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDAzLnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MjQwLCJ5IjowLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wMDQucG5nIjoKewoJImZyYW1lIjogeyJ4IjozMjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkicm90YXRlZCI6IGZhbHNlLAoJInRyaW1tZWQiOiBmYWxzZSwKCSJzcHJpdGVTb3VyY2VTaXplIjogeyJ4IjowLCJ5IjowLCJ3Ijo4MCwiaCI6ODB9LAoJInNvdXJjZVNpemUiOiB7InciOjgwLCJoIjo4MH0sCgkiYW5jaG9yIjogeyJ4IjowLjUsInkiOjAuNX0KfSwKInNsZWVwXzAwNS5wbmciOgp7CgkiZnJhbWUiOiB7IngiOjQwMCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDA2LnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MCwieSI6ODAsInciOjgwLCJoIjo4MH0sCgkicm90YXRlZCI6IGZhbHNlLAoJInRyaW1tZWQiOiBmYWxzZSwKCSJzcHJpdGVTb3VyY2VTaXplIjogeyJ4IjowLCJ5IjowLCJ3Ijo4MCwiaCI6ODB9LAoJInNvdXJjZVNpemUiOiB7InciOjgwLCJoIjo4MH0sCgkiYW5jaG9yIjogeyJ4IjowLjUsInkiOjAuNX0KfSwKInNsZWVwXzAwNy5wbmciOgp7CgkiZnJhbWUiOiB7IngiOjgwLCJ5Ijo4MCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDA4LnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MTYwLCJ5Ijo4MCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDA5LnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MjQwLCJ5Ijo4MCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDEwLnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MzIwLCJ5Ijo4MCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDExLnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6NDAwLCJ5Ijo4MCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDEyLnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MCwieSI6MTYwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wMTMucG5nIjoKewoJImZyYW1lIjogeyJ4Ijo4MCwieSI6MTYwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wMTQucG5nIjoKewoJImZyYW1lIjogeyJ4IjoxNjAsInkiOjE2MCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDE1LnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MjQwLCJ5IjoxNjAsInciOjgwLCJoIjo4MH0sCgkicm90YXRlZCI6IGZhbHNlLAoJInRyaW1tZWQiOiBmYWxzZSwKCSJzcHJpdGVTb3VyY2VTaXplIjogeyJ4IjowLCJ5IjowLCJ3Ijo4MCwiaCI6ODB9LAoJInNvdXJjZVNpemUiOiB7InciOjgwLCJoIjo4MH0sCgkiYW5jaG9yIjogeyJ4IjowLjUsInkiOjAuNX0KfSwKInNsZWVwXzAxNi5wbmciOgp7CgkiZnJhbWUiOiB7IngiOjMyMCwieSI6MTYwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wMTcucG5nIjoKewoJImZyYW1lIjogeyJ4Ijo0MDAsInkiOjE2MCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDE4LnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MCwieSI6MjQwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wMTkucG5nIjoKewoJImZyYW1lIjogeyJ4Ijo4MCwieSI6MjQwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wMjAucG5nIjoKewoJImZyYW1lIjogeyJ4IjoxNjAsInkiOjI0MCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDIxLnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MjQwLCJ5IjoyNDAsInciOjgwLCJoIjo4MH0sCgkicm90YXRlZCI6IGZhbHNlLAoJInRyaW1tZWQiOiBmYWxzZSwKCSJzcHJpdGVTb3VyY2VTaXplIjogeyJ4IjowLCJ5IjowLCJ3Ijo4MCwiaCI6ODB9LAoJInNvdXJjZVNpemUiOiB7InciOjgwLCJoIjo4MH0sCgkiYW5jaG9yIjogeyJ4IjowLjUsInkiOjAuNX0KfSwKInNsZWVwXzAyMi5wbmciOgp7CgkiZnJhbWUiOiB7IngiOjMyMCwieSI6MjQwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wMjMucG5nIjoKewoJImZyYW1lIjogeyJ4Ijo0MDAsInkiOjI0MCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDI0LnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MCwieSI6MzIwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wMjUucG5nIjoKewoJImZyYW1lIjogeyJ4Ijo4MCwieSI6MzIwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wMjYucG5nIjoKewoJImZyYW1lIjogeyJ4IjoxNjAsInkiOjMyMCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDI3LnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MjQwLCJ5IjozMjAsInciOjgwLCJoIjo4MH0sCgkicm90YXRlZCI6IGZhbHNlLAoJInRyaW1tZWQiOiBmYWxzZSwKCSJzcHJpdGVTb3VyY2VTaXplIjogeyJ4IjowLCJ5IjowLCJ3Ijo4MCwiaCI6ODB9LAoJInNvdXJjZVNpemUiOiB7InciOjgwLCJoIjo4MH0sCgkiYW5jaG9yIjogeyJ4IjowLjUsInkiOjAuNX0KfSwKInNsZWVwXzAyOC5wbmciOgp7CgkiZnJhbWUiOiB7IngiOjMyMCwieSI6MzIwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wMjkucG5nIjoKewoJImZyYW1lIjogeyJ4Ijo0MDAsInkiOjMyMCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDMwLnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MCwieSI6NDAwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wMzEucG5nIjoKewoJImZyYW1lIjogeyJ4Ijo4MCwieSI6NDAwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wMzIucG5nIjoKewoJImZyYW1lIjogeyJ4IjoxNjAsInkiOjQwMCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDMzLnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MjQwLCJ5Ijo0MDAsInciOjgwLCJoIjo4MH0sCgkicm90YXRlZCI6IGZhbHNlLAoJInRyaW1tZWQiOiBmYWxzZSwKCSJzcHJpdGVTb3VyY2VTaXplIjogeyJ4IjowLCJ5IjowLCJ3Ijo4MCwiaCI6ODB9LAoJInNvdXJjZVNpemUiOiB7InciOjgwLCJoIjo4MH0sCgkiYW5jaG9yIjogeyJ4IjowLjUsInkiOjAuNX0KfSwKInNsZWVwXzAzNC5wbmciOgp7CgkiZnJhbWUiOiB7IngiOjMyMCwieSI6NDAwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wMzUucG5nIjoKewoJImZyYW1lIjogeyJ4Ijo0MDAsInkiOjQwMCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDM2LnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MCwieSI6NDgwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wMzcucG5nIjoKewoJImZyYW1lIjogeyJ4Ijo4MCwieSI6NDgwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wMzgucG5nIjoKewoJImZyYW1lIjogeyJ4IjoxNjAsInkiOjQ4MCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDM5LnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MjQwLCJ5Ijo0ODAsInciOjgwLCJoIjo4MH0sCgkicm90YXRlZCI6IGZhbHNlLAoJInRyaW1tZWQiOiBmYWxzZSwKCSJzcHJpdGVTb3VyY2VTaXplIjogeyJ4IjowLCJ5IjowLCJ3Ijo4MCwiaCI6ODB9LAoJInNvdXJjZVNpemUiOiB7InciOjgwLCJoIjo4MH0sCgkiYW5jaG9yIjogeyJ4IjowLjUsInkiOjAuNX0KfSwKInNsZWVwXzA0MC5wbmciOgp7CgkiZnJhbWUiOiB7IngiOjMyMCwieSI6NDgwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wNDEucG5nIjoKewoJImZyYW1lIjogeyJ4Ijo0MDAsInkiOjQ4MCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDQyLnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MCwieSI6NTYwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wNDMucG5nIjoKewoJImZyYW1lIjogeyJ4Ijo4MCwieSI6NTYwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wNDQucG5nIjoKewoJImZyYW1lIjogeyJ4IjoxNjAsInkiOjU2MCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDQ1LnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MjQwLCJ5Ijo1NjAsInciOjgwLCJoIjo4MH0sCgkicm90YXRlZCI6IGZhbHNlLAoJInRyaW1tZWQiOiBmYWxzZSwKCSJzcHJpdGVTb3VyY2VTaXplIjogeyJ4IjowLCJ5IjowLCJ3Ijo4MCwiaCI6ODB9LAoJInNvdXJjZVNpemUiOiB7InciOjgwLCJoIjo4MH0sCgkiYW5jaG9yIjogeyJ4IjowLjUsInkiOjAuNX0KfSwKInNsZWVwXzA0Ni5wbmciOgp7CgkiZnJhbWUiOiB7IngiOjMyMCwieSI6NTYwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wNDcucG5nIjoKewoJImZyYW1lIjogeyJ4Ijo0MDAsInkiOjU2MCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDQ4LnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MCwieSI6NjQwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wNDkucG5nIjoKewoJImZyYW1lIjogeyJ4Ijo4MCwieSI6NjQwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wNTAucG5nIjoKewoJImZyYW1lIjogeyJ4IjoxNjAsInkiOjY0MCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDUxLnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MjQwLCJ5Ijo2NDAsInciOjgwLCJoIjo4MH0sCgkicm90YXRlZCI6IGZhbHNlLAoJInRyaW1tZWQiOiBmYWxzZSwKCSJzcHJpdGVTb3VyY2VTaXplIjogeyJ4IjowLCJ5IjowLCJ3Ijo4MCwiaCI6ODB9LAoJInNvdXJjZVNpemUiOiB7InciOjgwLCJoIjo4MH0sCgkiYW5jaG9yIjogeyJ4IjowLjUsInkiOjAuNX0KfSwKInNsZWVwXzA1Mi5wbmciOgp7CgkiZnJhbWUiOiB7IngiOjMyMCwieSI6NjQwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wNTMucG5nIjoKewoJImZyYW1lIjogeyJ4Ijo0MDAsInkiOjY0MCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDU0LnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MCwieSI6NzIwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wNTUucG5nIjoKewoJImZyYW1lIjogeyJ4Ijo4MCwieSI6NzIwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wNTYucG5nIjoKewoJImZyYW1lIjogeyJ4IjoxNjAsInkiOjcyMCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDU3LnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MjQwLCJ5Ijo3MjAsInciOjgwLCJoIjo4MH0sCgkicm90YXRlZCI6IGZhbHNlLAoJInRyaW1tZWQiOiBmYWxzZSwKCSJzcHJpdGVTb3VyY2VTaXplIjogeyJ4IjowLCJ5IjowLCJ3Ijo4MCwiaCI6ODB9LAoJInNvdXJjZVNpemUiOiB7InciOjgwLCJoIjo4MH0sCgkiYW5jaG9yIjogeyJ4IjowLjUsInkiOjAuNX0KfSwKInNsZWVwXzA1OC5wbmciOgp7CgkiZnJhbWUiOiB7IngiOjMyMCwieSI6NzIwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wNTkucG5nIjoKewoJImZyYW1lIjogeyJ4Ijo0MDAsInkiOjcyMCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDYwLnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MCwieSI6ODAwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wNjEucG5nIjoKewoJImZyYW1lIjogeyJ4Ijo4MCwieSI6ODAwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wNjIucG5nIjoKewoJImZyYW1lIjogeyJ4IjoxNjAsInkiOjgwMCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDYzLnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MjQwLCJ5Ijo4MDAsInciOjgwLCJoIjo4MH0sCgkicm90YXRlZCI6IGZhbHNlLAoJInRyaW1tZWQiOiBmYWxzZSwKCSJzcHJpdGVTb3VyY2VTaXplIjogeyJ4IjowLCJ5IjowLCJ3Ijo4MCwiaCI6ODB9LAoJInNvdXJjZVNpemUiOiB7InciOjgwLCJoIjo4MH0sCgkiYW5jaG9yIjogeyJ4IjowLjUsInkiOjAuNX0KfSwKInNsZWVwXzA2NC5wbmciOgp7CgkiZnJhbWUiOiB7IngiOjMyMCwieSI6ODAwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wNjUucG5nIjoKewoJImZyYW1lIjogeyJ4Ijo0MDAsInkiOjgwMCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDY2LnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MCwieSI6ODgwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wNjcucG5nIjoKewoJImZyYW1lIjogeyJ4Ijo4MCwieSI6ODgwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wNjgucG5nIjoKewoJImZyYW1lIjogeyJ4IjoxNjAsInkiOjg4MCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDY5LnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MjQwLCJ5Ijo4ODAsInciOjgwLCJoIjo4MH0sCgkicm90YXRlZCI6IGZhbHNlLAoJInRyaW1tZWQiOiBmYWxzZSwKCSJzcHJpdGVTb3VyY2VTaXplIjogeyJ4IjowLCJ5IjowLCJ3Ijo4MCwiaCI6ODB9LAoJInNvdXJjZVNpemUiOiB7InciOjgwLCJoIjo4MH0sCgkiYW5jaG9yIjogeyJ4IjowLjUsInkiOjAuNX0KfSwKInNsZWVwXzA3MC5wbmciOgp7CgkiZnJhbWUiOiB7IngiOjMyMCwieSI6ODgwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wNzEucG5nIjoKewoJImZyYW1lIjogeyJ4Ijo0MDAsInkiOjg4MCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDcyLnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MCwieSI6OTYwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wNzMucG5nIjoKewoJImZyYW1lIjogeyJ4Ijo4MCwieSI6OTYwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wNzQucG5nIjoKewoJImZyYW1lIjogeyJ4IjoxNjAsInkiOjk2MCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDc1LnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MjQwLCJ5Ijo5NjAsInciOjgwLCJoIjo4MH0sCgkicm90YXRlZCI6IGZhbHNlLAoJInRyaW1tZWQiOiBmYWxzZSwKCSJzcHJpdGVTb3VyY2VTaXplIjogeyJ4IjowLCJ5IjowLCJ3Ijo4MCwiaCI6ODB9LAoJInNvdXJjZVNpemUiOiB7InciOjgwLCJoIjo4MH0sCgkiYW5jaG9yIjogeyJ4IjowLjUsInkiOjAuNX0KfSwKInNsZWVwXzA3Ni5wbmciOgp7CgkiZnJhbWUiOiB7IngiOjMyMCwieSI6OTYwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wNzcucG5nIjoKewoJImZyYW1lIjogeyJ4Ijo0MDAsInkiOjk2MCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDc4LnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MCwieSI6MTA0MCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDc5LnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6ODAsInkiOjEwNDAsInciOjgwLCJoIjo4MH0sCgkicm90YXRlZCI6IGZhbHNlLAoJInRyaW1tZWQiOiBmYWxzZSwKCSJzcHJpdGVTb3VyY2VTaXplIjogeyJ4IjowLCJ5IjowLCJ3Ijo4MCwiaCI6ODB9LAoJInNvdXJjZVNpemUiOiB7InciOjgwLCJoIjo4MH0sCgkiYW5jaG9yIjogeyJ4IjowLjUsInkiOjAuNX0KfSwKInNsZWVwXzA4MC5wbmciOgp7CgkiZnJhbWUiOiB7IngiOjE2MCwieSI6MTA0MCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDgxLnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MjQwLCJ5IjoxMDQwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wODIucG5nIjoKewoJImZyYW1lIjogeyJ4IjozMjAsInkiOjEwNDAsInciOjgwLCJoIjo4MH0sCgkicm90YXRlZCI6IGZhbHNlLAoJInRyaW1tZWQiOiBmYWxzZSwKCSJzcHJpdGVTb3VyY2VTaXplIjogeyJ4IjowLCJ5IjowLCJ3Ijo4MCwiaCI6ODB9LAoJInNvdXJjZVNpemUiOiB7InciOjgwLCJoIjo4MH0sCgkiYW5jaG9yIjogeyJ4IjowLjUsInkiOjAuNX0KfSwKInNsZWVwXzA4My5wbmciOgp7CgkiZnJhbWUiOiB7IngiOjQwMCwieSI6MTA0MCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDg0LnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MCwieSI6MTEyMCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDg1LnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6ODAsInkiOjExMjAsInciOjgwLCJoIjo4MH0sCgkicm90YXRlZCI6IGZhbHNlLAoJInRyaW1tZWQiOiBmYWxzZSwKCSJzcHJpdGVTb3VyY2VTaXplIjogeyJ4IjowLCJ5IjowLCJ3Ijo4MCwiaCI6ODB9LAoJInNvdXJjZVNpemUiOiB7InciOjgwLCJoIjo4MH0sCgkiYW5jaG9yIjogeyJ4IjowLjUsInkiOjAuNX0KfSwKInNsZWVwXzA4Ni5wbmciOgp7CgkiZnJhbWUiOiB7IngiOjE2MCwieSI6MTEyMCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDg3LnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MjQwLCJ5IjoxMTIwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wODgucG5nIjoKewoJImZyYW1lIjogeyJ4IjozMjAsInkiOjExMjAsInciOjgwLCJoIjo4MH0sCgkicm90YXRlZCI6IGZhbHNlLAoJInRyaW1tZWQiOiBmYWxzZSwKCSJzcHJpdGVTb3VyY2VTaXplIjogeyJ4IjowLCJ5IjowLCJ3Ijo4MCwiaCI6ODB9LAoJInNvdXJjZVNpemUiOiB7InciOjgwLCJoIjo4MH0sCgkiYW5jaG9yIjogeyJ4IjowLjUsInkiOjAuNX0KfSwKInNsZWVwXzA4OS5wbmciOgp7CgkiZnJhbWUiOiB7IngiOjQwMCwieSI6MTEyMCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDkwLnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MCwieSI6MTIwMCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDkxLnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6ODAsInkiOjEyMDAsInciOjgwLCJoIjo4MH0sCgkicm90YXRlZCI6IGZhbHNlLAoJInRyaW1tZWQiOiBmYWxzZSwKCSJzcHJpdGVTb3VyY2VTaXplIjogeyJ4IjowLCJ5IjowLCJ3Ijo4MCwiaCI6ODB9LAoJInNvdXJjZVNpemUiOiB7InciOjgwLCJoIjo4MH0sCgkiYW5jaG9yIjogeyJ4IjowLjUsInkiOjAuNX0KfSwKInNsZWVwXzA5Mi5wbmciOgp7CgkiZnJhbWUiOiB7IngiOjE2MCwieSI6MTIwMCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9LAoic2xlZXBfMDkzLnBuZyI6CnsKCSJmcmFtZSI6IHsieCI6MjQwLCJ5IjoxMjAwLCJ3Ijo4MCwiaCI6ODB9LAoJInJvdGF0ZWQiOiBmYWxzZSwKCSJ0cmltbWVkIjogZmFsc2UsCgkic3ByaXRlU291cmNlU2l6ZSI6IHsieCI6MCwieSI6MCwidyI6ODAsImgiOjgwfSwKCSJzb3VyY2VTaXplIjogeyJ3Ijo4MCwiaCI6ODB9LAoJImFuY2hvciI6IHsieCI6MC41LCJ5IjowLjV9Cn0sCiJzbGVlcF8wOTQucG5nIjoKewoJImZyYW1lIjogeyJ4IjozMjAsInkiOjEyMDAsInciOjgwLCJoIjo4MH0sCgkicm90YXRlZCI6IGZhbHNlLAoJInRyaW1tZWQiOiBmYWxzZSwKCSJzcHJpdGVTb3VyY2VTaXplIjogeyJ4IjowLCJ5IjowLCJ3Ijo4MCwiaCI6ODB9LAoJInNvdXJjZVNpemUiOiB7InciOjgwLCJoIjo4MH0sCgkiYW5jaG9yIjogeyJ4IjowLjUsInkiOjAuNX0KfSwKInNsZWVwXzA5NS5wbmciOgp7CgkiZnJhbWUiOiB7IngiOjQwMCwieSI6MTIwMCwidyI6ODAsImgiOjgwfSwKCSJyb3RhdGVkIjogZmFsc2UsCgkidHJpbW1lZCI6IGZhbHNlLAoJInNwcml0ZVNvdXJjZVNpemUiOiB7IngiOjAsInkiOjAsInciOjgwLCJoIjo4MH0sCgkic291cmNlU2l6ZSI6IHsidyI6ODAsImgiOjgwfSwKCSJhbmNob3IiOiB7IngiOjAuNSwieSI6MC41fQp9fSwKImFuaW1hdGlvbnMiOiB7Cgkic2xlZXAiOiBbInNsZWVwXzAwMC5wbmciLCJzbGVlcF8wMDEucG5nIiwic2xlZXBfMDAyLnBuZyIsInNsZWVwXzAwMy5wbmciLCJzbGVlcF8wMDQucG5nIiwic2xlZXBfMDA1LnBuZyIsInNsZWVwXzAwNi5wbmciLCJzbGVlcF8wMDcucG5nIiwic2xlZXBfMDA4LnBuZyIsInNsZWVwXzAwOS5wbmciLCJzbGVlcF8wMTAucG5nIiwic2xlZXBfMDExLnBuZyIsInNsZWVwXzAxMi5wbmciLCJzbGVlcF8wMTMucG5nIiwic2xlZXBfMDE0LnBuZyIsInNsZWVwXzAxNS5wbmciLCJzbGVlcF8wMTYucG5nIiwic2xlZXBfMDE3LnBuZyIsInNsZWVwXzAxOC5wbmciLCJzbGVlcF8wMTkucG5nIiwic2xlZXBfMDIwLnBuZyIsInNsZWVwXzAyMS5wbmciLCJzbGVlcF8wMjIucG5nIiwic2xlZXBfMDIzLnBuZyIsInNsZWVwXzAyNC5wbmciLCJzbGVlcF8wMjUucG5nIiwic2xlZXBfMDI2LnBuZyIsInNsZWVwXzAyNy5wbmciLCJzbGVlcF8wMjgucG5nIiwic2xlZXBfMDI5LnBuZyIsInNsZWVwXzAzMC5wbmciLCJzbGVlcF8wMzEucG5nIiwic2xlZXBfMDMyLnBuZyIsInNsZWVwXzAzMy5wbmciLCJzbGVlcF8wMzQucG5nIiwic2xlZXBfMDM1LnBuZyIsInNsZWVwXzAzNi5wbmciLCJzbGVlcF8wMzcucG5nIiwic2xlZXBfMDM4LnBuZyIsInNsZWVwXzAzOS5wbmciLCJzbGVlcF8wNDAucG5nIiwic2xlZXBfMDQxLnBuZyIsInNsZWVwXzA0Mi5wbmciLCJzbGVlcF8wNDMucG5nIiwic2xlZXBfMDQ0LnBuZyIsInNsZWVwXzA0NS5wbmciLCJzbGVlcF8wNDYucG5nIiwic2xlZXBfMDQ3LnBuZyIsInNsZWVwXzA0OC5wbmciLCJzbGVlcF8wNDkucG5nIiwic2xlZXBfMDUwLnBuZyIsInNsZWVwXzA1MS5wbmciLCJzbGVlcF8wNTIucG5nIiwic2xlZXBfMDUzLnBuZyIsInNsZWVwXzA1NC5wbmciLCJzbGVlcF8wNTUucG5nIiwic2xlZXBfMDU2LnBuZyIsInNsZWVwXzA1Ny5wbmciLCJzbGVlcF8wNTgucG5nIiwic2xlZXBfMDU5LnBuZyIsInNsZWVwXzA2MC5wbmciLCJzbGVlcF8wNjEucG5nIiwic2xlZXBfMDYyLnBuZyIsInNsZWVwXzA2My5wbmciLCJzbGVlcF8wNjQucG5nIiwic2xlZXBfMDY1LnBuZyIsInNsZWVwXzA2Ni5wbmciLCJzbGVlcF8wNjcucG5nIiwic2xlZXBfMDY4LnBuZyIsInNsZWVwXzA2OS5wbmciLCJzbGVlcF8wNzAucG5nIiwic2xlZXBfMDcxLnBuZyIsInNsZWVwXzA3Mi5wbmciLCJzbGVlcF8wNzMucG5nIiwic2xlZXBfMDc0LnBuZyIsInNsZWVwXzA3NS5wbmciLCJzbGVlcF8wNzYucG5nIiwic2xlZXBfMDc3LnBuZyIsInNsZWVwXzA3OC5wbmciLCJzbGVlcF8wNzkucG5nIiwic2xlZXBfMDgwLnBuZyIsInNsZWVwXzA4MS5wbmciLCJzbGVlcF8wODIucG5nIiwic2xlZXBfMDgzLnBuZyIsInNsZWVwXzA4NC5wbmciLCJzbGVlcF8wODUucG5nIiwic2xlZXBfMDg2LnBuZyIsInNsZWVwXzA4Ny5wbmciLCJzbGVlcF8wODgucG5nIiwic2xlZXBfMDg5LnBuZyIsInNsZWVwXzA5MC5wbmciLCJzbGVlcF8wOTEucG5nIiwic2xlZXBfMDkyLnBuZyIsInNsZWVwXzA5My5wbmciLCJzbGVlcF8wOTQucG5nIiwic2xlZXBfMDk1LnBuZyJdCn0sCiJtZXRhIjogewoJImFwcCI6ICJodHRwczovL3d3dy5jb2RlYW5kd2ViLmNvbS90ZXh0dXJlcGFja2VyIiwKCSJ2ZXJzaW9uIjogIjEuMSIsCgkiaW1hZ2UiOiAic2xlZXAucG5nIiwKCSJmb3JtYXQiOiAiUkdCQTg4ODgiLAoJInNpemUiOiB7InciOjQ4MCwiaCI6MTI4MH0sCgkic2NhbGUiOiAiMSIsCgkic21hcnR1cGRhdGUiOiAiJFRleHR1cmVQYWNrZXI6U21hcnRVcGRhdGU6NjYyMDEzY2I2NDMwZGNjYWFjM2ExYTBiYjVlOTc4MzM6NTE3ZDlkN2RjOGI2MDBkMmQ2ZWIyOTVjMzc5ZTJmZmI6ZmViYzA4ZWVlMDM4NjliMDAwNmM5ZmQxNWI3NDMzOTkkIgp9Cn0K";export{I as default};