bbj-screen-widget 2.4.46 → 2.4.48

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 (717) hide show
  1. package/bbj-screen-widget.d.ts +117 -0
  2. package/bbj-screen-widget.metadata.json +1 -0
  3. package/bundles/bbj-screen-widget-core.umd.js +606 -0
  4. package/bundles/bbj-screen-widget-core.umd.js.map +1 -0
  5. package/bundles/bbj-screen-widget-core.umd.min.js +2 -0
  6. package/bundles/bbj-screen-widget-core.umd.min.js.map +1 -0
  7. package/bundles/bbj-screen-widget.umd.js +21311 -0
  8. package/bundles/bbj-screen-widget.umd.js.map +1 -0
  9. package/bundles/bbj-screen-widget.umd.min.js +2 -0
  10. package/bundles/bbj-screen-widget.umd.min.js.map +1 -0
  11. package/core/bbj-screen-widget-core.d.ts +4 -0
  12. package/core/bbj-screen-widget-core.metadata.json +1 -0
  13. package/core/package.json +10 -2
  14. package/core/service/baidu-map.service.d.ts +16 -0
  15. package/esm2015/bbj-screen-widget.js +118 -0
  16. package/esm2015/core/bbj-screen-widget-core.js +5 -0
  17. package/esm2015/core/public_api.js +2 -0
  18. package/esm2015/core/service/baidu-map.service.js +101 -0
  19. package/esm2015/lib/announcement/announcement.component.js +80 -0
  20. package/esm2015/lib/announcement/announcement.module.js +25 -0
  21. package/esm2015/lib/audio/audio.component.js +167 -0
  22. package/esm2015/lib/audio/audio.module.js +20 -0
  23. package/esm2015/lib/background/background.component.js +52 -0
  24. package/esm2015/lib/background/background.module.js +19 -0
  25. package/esm2015/lib/bar-chart-three-d/bar-chart-three-d.component.js +323 -0
  26. package/esm2015/lib/bar-chart-three-d/bar-chart-three-d.module.js +20 -0
  27. package/esm2015/lib/basic-bar-chart/basic-bar-chart.component.js +604 -0
  28. package/esm2015/lib/basic-bar-chart/basic-bar-chart.module.js +27 -0
  29. package/esm2015/lib/basic-line-chart/basic-line-chart.component.js +782 -0
  30. package/esm2015/lib/basic-line-chart/basic-line-chart.module.js +20 -0
  31. package/esm2015/lib/basic-pie-chart/basic-pie-chart.component.js +471 -0
  32. package/esm2015/lib/basic-pie-chart/basic-pie-chart.module.js +20 -0
  33. package/esm2015/lib/basic-planimetric-map/basic-planimetric-map.component.js +233 -0
  34. package/esm2015/lib/basic-planimetric-map/basic-planimetric-map.module.js +21 -0
  35. package/esm2015/lib/breathing-bubble-layer/breathing-bubble-layer.component.js +503 -0
  36. package/esm2015/lib/breathing-bubble-layer/breathing-bubble-layer.module.js +19 -0
  37. package/esm2015/lib/bubble-chart/bubble-chart.component.js +348 -0
  38. package/esm2015/lib/bubble-chart/bubble-chart.module.js +20 -0
  39. package/esm2015/lib/bulletin-board/bulletin-board.component.js +160 -0
  40. package/esm2015/lib/bulletin-board/bulletin-board.module.js +23 -0
  41. package/esm2015/lib/button/button.component.js +186 -0
  42. package/esm2015/lib/button/button.module.js +21 -0
  43. package/esm2015/lib/calendar/calendar.component.js +96 -0
  44. package/esm2015/lib/calendar/calendar.module.js +28 -0
  45. package/esm2015/lib/checkbox/checkbox.component.js +333 -0
  46. package/esm2015/lib/checkbox/checkbox.module.js +21 -0
  47. package/esm2015/lib/cross-table/cross-table.component.js +291 -0
  48. package/esm2015/lib/cross-table/cross-table.module.js +20 -0
  49. package/esm2015/lib/custom-baidu-map/baidu-marker-layer/baidu-marker-layer.component.js +685 -0
  50. package/esm2015/lib/custom-baidu-map/baidu-polyline-layer/baidu-polyline-layer.component.js +278 -0
  51. package/esm2015/lib/custom-baidu-map/base-layer.js +53 -0
  52. package/esm2015/lib/custom-baidu-map/custom-baidu-map.component.js +665 -0
  53. package/esm2015/lib/custom-baidu-map/custom-baidu-map.module.js +46 -0
  54. package/esm2015/lib/custom-baidu-map/typhoon-area-layer/typhoon-area-layer.component.js +116 -0
  55. package/esm2015/lib/custom-baidu-map/wind-layer/wind-layer.component.js +331 -0
  56. package/esm2015/lib/date-picker/date-picker.component.js +447 -0
  57. package/esm2015/lib/date-picker/date-picker.module.js +22 -0
  58. package/esm2015/lib/funnel-chart/funnel-chart.component.js +241 -0
  59. package/esm2015/lib/funnel-chart/funnel-chart.module.js +20 -0
  60. package/esm2015/lib/gantt/gantt.component.js +222 -0
  61. package/esm2015/lib/gantt/gantt.module.js +39 -0
  62. package/esm2015/lib/gauge/gauge.component.js +324 -0
  63. package/esm2015/lib/gauge/gauge.module.js +20 -0
  64. package/esm2015/lib/gauge-progress/gauge-progress.component.js +348 -0
  65. package/esm2015/lib/gauge-progress/gauge.module.js +21 -0
  66. package/esm2015/lib/general-text/general-text.component.js +144 -0
  67. package/esm2015/lib/general-text/general-text.module.js +20 -0
  68. package/esm2015/lib/iconfont/icon.js +199 -0
  69. package/esm2015/lib/iconfont/iconfont.component.js +56 -0
  70. package/esm2015/lib/iconfont/iconfont.module.js +20 -0
  71. package/esm2015/lib/iframe/iframe.component.js +46 -0
  72. package/esm2015/lib/iframe/iframe.module.js +20 -0
  73. package/esm2015/lib/image/image.component.js +98 -0
  74. package/esm2015/lib/image/image.module.js +19 -0
  75. package/esm2015/lib/item-swiper/item-swiper.component.js +334 -0
  76. package/esm2015/lib/item-swiper/item-swiper.module.js +28 -0
  77. package/esm2015/lib/line-bar-chart/line-bar-chart.component.js +398 -0
  78. package/esm2015/lib/line-bar-chart/line-bar-chart.module.js +20 -0
  79. package/esm2015/lib/line-light-flow/line-light-flow.component.js +241 -0
  80. package/esm2015/lib/line-light-flow/line-light-flow.module.js +24 -0
  81. package/esm2015/lib/liquid-fill/liquid-fill.component.js +158 -0
  82. package/esm2015/lib/liquid-fill/liquid-fill.module.js +20 -0
  83. package/esm2015/lib/marquee/marquee.component.js +110 -0
  84. package/esm2015/lib/marquee/marquee.module.js +19 -0
  85. package/esm2015/lib/mip-anim/mip-anim.component.js +26 -0
  86. package/esm2015/lib/mip-anim/mip-anim.module.js +19 -0
  87. package/esm2015/lib/multi-title-gauge/multi-title-gauge.component.js +277 -0
  88. package/esm2015/lib/multi-title-gauge/multi-title-gauge.module.js +22 -0
  89. package/esm2015/lib/number-flop/number-flop.component.js +124 -0
  90. package/esm2015/lib/number-flop/number-flop.module.js +19 -0
  91. package/esm2015/lib/parent-container/parent-container.component.js +21 -0
  92. package/esm2015/lib/parent-container/parent-container.module.js +19 -0
  93. package/esm2015/lib/percent-pie-chart/percent-pie-chart.component.js +248 -0
  94. package/esm2015/lib/percent-pie-chart/percent-pie-chart.module.js +20 -0
  95. package/esm2015/lib/pie3d-chart/pie3d-chart.component.js +303 -0
  96. package/esm2015/lib/pie3d-chart/pie3d-chart.module.js +19 -0
  97. package/esm2015/lib/planimetric-map2d/fly-line-layer/fly-line-layer.component.js +431 -0
  98. package/esm2015/lib/planimetric-map2d/fly-line-layer/fly-line-layer.module.js +19 -0
  99. package/esm2015/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.component.js +252 -0
  100. package/esm2015/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.module.js +19 -0
  101. package/esm2015/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.component.js +124 -0
  102. package/esm2015/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.module.js +19 -0
  103. package/esm2015/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.component.js +359 -0
  104. package/esm2015/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.module.js +21 -0
  105. package/esm2015/lib/planimetric-map2d/planimetric-map2d.component.js +712 -0
  106. package/esm2015/lib/planimetric-map2d/planimetric-map2d.module.js +34 -0
  107. package/esm2015/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.component.js +128 -0
  108. package/esm2015/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.module.js +19 -0
  109. package/esm2015/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.component.js +242 -0
  110. package/esm2015/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.module.js +19 -0
  111. package/esm2015/lib/planimetric-map3d/planimetric-map3d.component.js +265 -0
  112. package/esm2015/lib/planimetric-map3d/planimetric-map3d.module.js +22 -0
  113. package/esm2015/lib/radar-chart/radar-chart.component.js +236 -0
  114. package/esm2015/lib/radar-chart/radar-chart.module.js +20 -0
  115. package/esm2015/lib/radio/radio.component.js +148 -0
  116. package/esm2015/lib/radio/radio.module.js +21 -0
  117. package/esm2015/lib/rate/rate.component.js +57 -0
  118. package/esm2015/lib/rate/rate.module.js +23 -0
  119. package/esm2015/lib/scatter3d/scatter3d.component.js +166 -0
  120. package/esm2015/lib/scatter3d/scatter3d.module.js +20 -0
  121. package/esm2015/lib/screen-widget.module.js +536 -0
  122. package/esm2015/lib/search/search.component.js +130 -0
  123. package/esm2015/lib/search/search.module.js +29 -0
  124. package/esm2015/lib/select/select.component.js +343 -0
  125. package/esm2015/lib/select/select.module.js +21 -0
  126. package/esm2015/lib/shape/shape.component.js +248 -0
  127. package/esm2015/lib/shape/shape.module.js +19 -0
  128. package/esm2015/lib/shared/component/video-player/video-player.component.js +114 -0
  129. package/esm2015/lib/shared/component/video-player/video-player.module.js +14 -0
  130. package/esm2015/lib/shared/service/common.service.js +39 -0
  131. package/esm2015/lib/shared/service/file-url.service.js +12 -0
  132. package/esm2015/lib/shared/service/gaode-map.service.js +36 -0
  133. package/esm2015/lib/shared/service/highcharts.service.js +36 -0
  134. package/esm2015/lib/shared/service/http.service.js +20 -0
  135. package/esm2015/lib/shared/util/base.util.js +5 -0
  136. package/esm2015/lib/shared/util/echarts.util.js +12 -0
  137. package/esm2015/lib/shared/util/style.util.js +19 -0
  138. package/esm2015/lib/shuffling-list/color.pipe.js +23 -0
  139. package/esm2015/lib/shuffling-list/shuffling-list.component.js +600 -0
  140. package/esm2015/lib/shuffling-list/shuffling-list.module.js +22 -0
  141. package/esm2015/lib/table/table.component.js +657 -0
  142. package/esm2015/lib/table/table.module.js +38 -0
  143. package/esm2015/lib/tabs/tab/tab.component.js +27 -0
  144. package/esm2015/lib/tabs/tabs.component.js +85 -0
  145. package/esm2015/lib/tabs/tabs.module.js +22 -0
  146. package/esm2015/lib/temporary-data/temporary-data.component.js +49 -0
  147. package/esm2015/lib/temporary-data/temporary-data.module.js +20 -0
  148. package/esm2015/lib/time-picker/time-picker.component.js +112 -0
  149. package/esm2015/lib/time-picker/time-picker.module.js +21 -0
  150. package/esm2015/lib/timer/timer.component.js +108 -0
  151. package/esm2015/lib/timer/timer.module.js +20 -0
  152. package/esm2015/lib/tree-control/tree-control.component.js +435 -0
  153. package/esm2015/lib/tree-control/tree-control.module.js +24 -0
  154. package/esm2015/lib/tree-ring-chart/tree-ring-chart.component.js +215 -0
  155. package/esm2015/lib/tree-ring-chart/tree-ring-chart.module.js +20 -0
  156. package/esm2015/lib/upload/upload.component.js +127 -0
  157. package/esm2015/lib/upload/upload.module.js +22 -0
  158. package/esm2015/lib/video-grid/video-grid.component.js +133 -0
  159. package/esm2015/lib/video-grid/video-grid.module.js +22 -0
  160. package/esm2015/lib/visual-map-chart/visual-map-chart.component.js +395 -0
  161. package/esm2015/lib/visual-map-chart/visual-map-chart.module.js +20 -0
  162. package/esm2015/lib/vote/vote.component.js +100 -0
  163. package/esm2015/lib/vote/vote.module.js +21 -0
  164. package/esm2015/lib/weather/weather.component.js +92 -0
  165. package/esm2015/lib/weather/weather.module.js +21 -0
  166. package/esm2015/lib/wordart/wordart.component.js +84 -0
  167. package/esm2015/lib/wordart/wordart.module.js +19 -0
  168. package/esm2015/lib/workbench-widget.module.js +620 -0
  169. package/esm2015/public-api.js +39 -0
  170. package/fesm2015/bbj-screen-widget-core.js +107 -0
  171. package/fesm2015/bbj-screen-widget-core.js.map +1 -0
  172. package/fesm2015/bbj-screen-widget.js +20232 -0
  173. package/fesm2015/bbj-screen-widget.js.map +1 -0
  174. package/lib/announcement/announcement.component.d.ts +13 -0
  175. package/lib/announcement/announcement.module.d.ts +5 -0
  176. package/lib/audio/audio.component.d.ts +22 -0
  177. package/lib/audio/audio.module.d.ts +4 -0
  178. package/lib/background/background.component.d.ts +12 -0
  179. package/lib/background/background.module.d.ts +4 -0
  180. package/lib/bar-chart-three-d/bar-chart-three-d.component.d.ts +30 -0
  181. package/lib/bar-chart-three-d/bar-chart-three-d.module.d.ts +4 -0
  182. package/lib/basic-bar-chart/basic-bar-chart.component.d.ts +105 -0
  183. package/lib/basic-bar-chart/basic-bar-chart.module.d.ts +5 -0
  184. package/lib/basic-line-chart/basic-line-chart.component.d.ts +102 -0
  185. package/lib/basic-line-chart/basic-line-chart.module.d.ts +4 -0
  186. package/lib/basic-pie-chart/basic-pie-chart.component.d.ts +56 -0
  187. package/lib/basic-pie-chart/basic-pie-chart.module.d.ts +4 -0
  188. package/lib/basic-planimetric-map/basic-planimetric-map.component.d.ts +18 -0
  189. package/lib/basic-planimetric-map/basic-planimetric-map.module.d.ts +4 -0
  190. package/lib/breathing-bubble-layer/breathing-bubble-layer.component.d.ts +210 -0
  191. package/lib/breathing-bubble-layer/breathing-bubble-layer.module.d.ts +4 -0
  192. package/lib/bubble-chart/bubble-chart.component.d.ts +75 -0
  193. package/lib/bubble-chart/bubble-chart.module.d.ts +4 -0
  194. package/lib/bulletin-board/bulletin-board.component.d.ts +25 -0
  195. package/lib/bulletin-board/bulletin-board.module.d.ts +4 -0
  196. package/lib/button/button.component.d.ts +25 -0
  197. package/lib/button/button.module.d.ts +4 -0
  198. package/lib/calendar/calendar.component.d.ts +14 -0
  199. package/lib/calendar/calendar.module.d.ts +4 -0
  200. package/lib/checkbox/checkbox.component.d.ts +45 -0
  201. package/lib/checkbox/checkbox.module.d.ts +4 -0
  202. package/lib/cross-table/cross-table.component.d.ts +30 -0
  203. package/lib/cross-table/cross-table.module.d.ts +4 -0
  204. package/lib/custom-baidu-map/baidu-marker-layer/baidu-marker-layer.component.d.ts +67 -0
  205. package/lib/custom-baidu-map/baidu-polyline-layer/baidu-polyline-layer.component.d.ts +23 -0
  206. package/lib/custom-baidu-map/base-layer.d.ts +16 -0
  207. package/lib/custom-baidu-map/custom-baidu-map.component.d.ts +92 -0
  208. package/lib/custom-baidu-map/custom-baidu-map.module.d.ts +4 -0
  209. package/lib/custom-baidu-map/typhoon-area-layer/typhoon-area-layer.component.d.ts +16 -0
  210. package/lib/custom-baidu-map/wind-layer/wind-layer.component.d.ts +28 -0
  211. package/lib/date-picker/date-picker.component.d.ts +63 -0
  212. package/lib/date-picker/date-picker.module.d.ts +4 -0
  213. package/lib/funnel-chart/funnel-chart.component.d.ts +24 -0
  214. package/lib/funnel-chart/funnel-chart.module.d.ts +4 -0
  215. package/lib/gantt/gantt.component.d.ts +25 -0
  216. package/lib/gantt/gantt.module.d.ts +4 -0
  217. package/lib/gauge/gauge.component.d.ts +37 -0
  218. package/lib/gauge/gauge.module.d.ts +4 -0
  219. package/lib/gauge-progress/gauge-progress.component.d.ts +46 -0
  220. package/lib/gauge-progress/gauge.module.d.ts +4 -0
  221. package/lib/general-text/general-text.component.d.ts +21 -0
  222. package/lib/general-text/general-text.module.d.ts +4 -0
  223. package/lib/iconfont/icon.d.ts +1 -0
  224. package/lib/iconfont/iconfont.component.d.ts +11 -0
  225. package/lib/iconfont/iconfont.module.d.ts +4 -0
  226. package/lib/iframe/iframe.component.d.ts +10 -0
  227. package/lib/iframe/iframe.module.d.ts +4 -0
  228. package/lib/image/image.component.d.ts +21 -0
  229. package/lib/image/image.module.d.ts +4 -0
  230. package/lib/item-swiper/item-swiper.component.d.ts +41 -0
  231. package/lib/item-swiper/item-swiper.module.d.ts +4 -0
  232. package/lib/line-bar-chart/line-bar-chart.component.d.ts +63 -0
  233. package/lib/line-bar-chart/line-bar-chart.module.d.ts +4 -0
  234. package/lib/line-light-flow/line-light-flow.component.d.ts +26 -0
  235. package/lib/line-light-flow/line-light-flow.module.d.ts +4 -0
  236. package/lib/liquid-fill/liquid-fill.component.d.ts +18 -0
  237. package/lib/liquid-fill/liquid-fill.module.d.ts +4 -0
  238. package/lib/marquee/marquee.component.d.ts +20 -0
  239. package/lib/marquee/marquee.module.d.ts +4 -0
  240. package/lib/mip-anim/mip-anim.component.d.ts +6 -0
  241. package/lib/mip-anim/mip-anim.module.d.ts +4 -0
  242. package/lib/multi-title-gauge/multi-title-gauge.component.d.ts +26 -0
  243. package/lib/multi-title-gauge/multi-title-gauge.module.d.ts +4 -0
  244. package/lib/number-flop/number-flop.component.d.ts +22 -0
  245. package/lib/number-flop/number-flop.module.d.ts +4 -0
  246. package/lib/parent-container/parent-container.component.d.ts +9 -0
  247. package/lib/parent-container/parent-container.module.d.ts +4 -0
  248. package/lib/percent-pie-chart/percent-pie-chart.component.d.ts +24 -0
  249. package/lib/percent-pie-chart/percent-pie-chart.module.d.ts +4 -0
  250. package/lib/pie3d-chart/pie3d-chart.component.d.ts +30 -0
  251. package/lib/pie3d-chart/pie3d-chart.module.d.ts +4 -0
  252. package/lib/planimetric-map2d/fly-line-layer/fly-line-layer.component.d.ts +206 -0
  253. package/lib/planimetric-map2d/fly-line-layer/fly-line-layer.module.d.ts +4 -0
  254. package/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.component.d.ts +15 -0
  255. package/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.module.d.ts +4 -0
  256. package/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.component.d.ts +15 -0
  257. package/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.module.d.ts +4 -0
  258. package/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.component.d.ts +49 -0
  259. package/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.module.d.ts +4 -0
  260. package/lib/planimetric-map2d/planimetric-map2d.component.d.ts +48 -0
  261. package/lib/planimetric-map2d/planimetric-map2d.module.d.ts +4 -0
  262. package/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.component.d.ts +14 -0
  263. package/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.module.d.ts +4 -0
  264. package/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.component.d.ts +41 -0
  265. package/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.module.d.ts +4 -0
  266. package/lib/planimetric-map3d/planimetric-map3d.component.d.ts +29 -0
  267. package/lib/planimetric-map3d/planimetric-map3d.module.d.ts +4 -0
  268. package/lib/radar-chart/radar-chart.component.d.ts +23 -0
  269. package/lib/radar-chart/radar-chart.module.d.ts +4 -0
  270. package/lib/radio/radio.component.d.ts +21 -0
  271. package/lib/radio/radio.module.d.ts +4 -0
  272. package/lib/rate/rate.component.d.ts +13 -0
  273. package/lib/rate/rate.module.d.ts +4 -0
  274. package/lib/scatter3d/scatter3d.component.d.ts +25 -0
  275. package/lib/scatter3d/scatter3d.module.d.ts +4 -0
  276. package/lib/screen-widget.module.d.ts +4 -0
  277. package/lib/search/search.component.d.ts +21 -0
  278. package/lib/search/search.module.d.ts +6 -0
  279. package/lib/select/select.component.d.ts +34 -0
  280. package/lib/select/select.module.d.ts +4 -0
  281. package/lib/shape/shape.component.d.ts +50 -0
  282. package/lib/shape/shape.module.d.ts +4 -0
  283. package/lib/shared/component/video-player/video-player.component.d.ts +28 -0
  284. package/lib/shared/component/video-player/video-player.module.d.ts +2 -0
  285. package/lib/shared/service/common.service.d.ts +21 -0
  286. package/lib/shared/service/file-url.service.d.ts +3 -0
  287. package/lib/shared/service/gaode-map.service.d.ts +10 -0
  288. package/lib/shared/service/highcharts.service.d.ts +9 -0
  289. package/lib/shared/service/http.service.d.ts +7 -0
  290. package/lib/shared/util/base.util.d.ts +1 -0
  291. package/lib/shared/util/echarts.util.d.ts +1 -0
  292. package/lib/shared/util/style.util.d.ts +1 -0
  293. package/lib/shuffling-list/color.pipe.d.ts +4 -0
  294. package/lib/shuffling-list/shuffling-list.component.d.ts +76 -0
  295. package/lib/shuffling-list/shuffling-list.module.d.ts +4 -0
  296. package/lib/table/table.component.d.ts +65 -0
  297. package/lib/table/table.module.d.ts +4 -0
  298. package/lib/tabs/tab/tab.component.d.ts +7 -0
  299. package/lib/tabs/tabs.component.d.ts +13 -0
  300. package/lib/tabs/tabs.module.d.ts +4 -0
  301. package/lib/temporary-data/temporary-data.component.d.ts +13 -0
  302. package/lib/temporary-data/temporary-data.module.d.ts +4 -0
  303. package/lib/time-picker/time-picker.component.d.ts +17 -0
  304. package/lib/time-picker/time-picker.module.d.ts +4 -0
  305. package/lib/timer/timer.component.d.ts +21 -0
  306. package/lib/timer/timer.module.d.ts +4 -0
  307. package/lib/tree-control/tree-control.component.d.ts +62 -0
  308. package/lib/tree-control/tree-control.module.d.ts +4 -0
  309. package/lib/tree-ring-chart/tree-ring-chart.component.d.ts +24 -0
  310. package/lib/tree-ring-chart/tree-ring-chart.module.d.ts +4 -0
  311. package/lib/upload/upload.component.d.ts +21 -0
  312. package/lib/upload/upload.module.d.ts +4 -0
  313. package/lib/video-grid/video-grid.component.d.ts +23 -0
  314. package/lib/video-grid/video-grid.module.d.ts +4 -0
  315. package/lib/visual-map-chart/visual-map-chart.component.d.ts +49 -0
  316. package/lib/visual-map-chart/visual-map-chart.module.d.ts +4 -0
  317. package/lib/vote/vote.component.d.ts +15 -0
  318. package/lib/vote/vote.module.d.ts +4 -0
  319. package/lib/weather/weather.component.d.ts +26 -0
  320. package/lib/weather/weather.module.d.ts +4 -0
  321. package/lib/wordart/wordart.component.d.ts +14 -0
  322. package/lib/wordart/wordart.module.d.ts +4 -0
  323. package/lib/workbench-widget.module.d.ts +4 -0
  324. package/package.json +13 -4
  325. package/{src/public-api.ts → public-api.d.ts} +34 -46
  326. package/core/src/service/baidu-map.service.ts +0 -107
  327. package/karma.conf.js +0 -32
  328. package/ng-package.json +0 -59
  329. package/src/lib/announcement/announcement.component.html +0 -3
  330. package/src/lib/announcement/announcement.component.less +0 -5
  331. package/src/lib/announcement/announcement.component.spec.ts +0 -25
  332. package/src/lib/announcement/announcement.component.ts +0 -55
  333. package/src/lib/announcement/announcement.module.ts +0 -19
  334. package/src/lib/audio/audio.component.html +0 -6
  335. package/src/lib/audio/audio.component.less +0 -12
  336. package/src/lib/audio/audio.component.spec.ts +0 -25
  337. package/src/lib/audio/audio.component.ts +0 -167
  338. package/src/lib/audio/audio.module.ts +0 -15
  339. package/src/lib/background/background.component.html +0 -1
  340. package/src/lib/background/background.component.less +0 -6
  341. package/src/lib/background/background.component.spec.ts +0 -25
  342. package/src/lib/background/background.component.ts +0 -33
  343. package/src/lib/background/background.module.ts +0 -14
  344. package/src/lib/bar-chart-three-d/bar-chart-three-d.component.html +0 -1
  345. package/src/lib/bar-chart-three-d/bar-chart-three-d.component.less +0 -8
  346. package/src/lib/bar-chart-three-d/bar-chart-three-d.component.spec.ts +0 -25
  347. package/src/lib/bar-chart-three-d/bar-chart-three-d.component.ts +0 -271
  348. package/src/lib/bar-chart-three-d/bar-chart-three-d.module.ts +0 -15
  349. package/src/lib/basic-bar-chart/basic-bar-chart.component.html +0 -7
  350. package/src/lib/basic-bar-chart/basic-bar-chart.component.less +0 -5
  351. package/src/lib/basic-bar-chart/basic-bar-chart.component.spec.ts +0 -25
  352. package/src/lib/basic-bar-chart/basic-bar-chart.component.ts +0 -493
  353. package/src/lib/basic-bar-chart/basic-bar-chart.module.ts +0 -21
  354. package/src/lib/basic-line-chart/basic-line-chart.component.html +0 -7
  355. package/src/lib/basic-line-chart/basic-line-chart.component.less +0 -8
  356. package/src/lib/basic-line-chart/basic-line-chart.component.spec.ts +0 -25
  357. package/src/lib/basic-line-chart/basic-line-chart.component.ts +0 -654
  358. package/src/lib/basic-line-chart/basic-line-chart.module.ts +0 -15
  359. package/src/lib/basic-pie-chart/basic-pie-chart.component.html +0 -7
  360. package/src/lib/basic-pie-chart/basic-pie-chart.component.less +0 -8
  361. package/src/lib/basic-pie-chart/basic-pie-chart.component.spec.ts +0 -25
  362. package/src/lib/basic-pie-chart/basic-pie-chart.component.ts +0 -439
  363. package/src/lib/basic-pie-chart/basic-pie-chart.module.ts +0 -15
  364. package/src/lib/basic-planimetric-map/basic-planimetric-map.component.html +0 -2
  365. package/src/lib/basic-planimetric-map/basic-planimetric-map.component.less +0 -9
  366. package/src/lib/basic-planimetric-map/basic-planimetric-map.component.spec.ts +0 -25
  367. package/src/lib/basic-planimetric-map/basic-planimetric-map.component.ts +0 -211
  368. package/src/lib/basic-planimetric-map/basic-planimetric-map.module.ts +0 -16
  369. package/src/lib/breathing-bubble-layer/breathing-bubble-layer.component.css +0 -0
  370. package/src/lib/breathing-bubble-layer/breathing-bubble-layer.component.html +0 -1
  371. package/src/lib/breathing-bubble-layer/breathing-bubble-layer.component.spec.ts +0 -25
  372. package/src/lib/breathing-bubble-layer/breathing-bubble-layer.component.ts +0 -487
  373. package/src/lib/breathing-bubble-layer/breathing-bubble-layer.module.ts +0 -14
  374. package/src/lib/bubble-chart/bubble-chart.component.html +0 -7
  375. package/src/lib/bubble-chart/bubble-chart.component.less +0 -8
  376. package/src/lib/bubble-chart/bubble-chart.component.spec.ts +0 -25
  377. package/src/lib/bubble-chart/bubble-chart.component.ts +0 -307
  378. package/src/lib/bubble-chart/bubble-chart.module.ts +0 -15
  379. package/src/lib/bulletin-board/bulletin-board.component.html +0 -15
  380. package/src/lib/bulletin-board/bulletin-board.component.less +0 -27
  381. package/src/lib/bulletin-board/bulletin-board.component.spec.ts +0 -25
  382. package/src/lib/bulletin-board/bulletin-board.component.ts +0 -127
  383. package/src/lib/bulletin-board/bulletin-board.module.ts +0 -20
  384. package/src/lib/button/button.component.html +0 -1
  385. package/src/lib/button/button.component.less +0 -17
  386. package/src/lib/button/button.component.spec.ts +0 -25
  387. package/src/lib/button/button.component.ts +0 -137
  388. package/src/lib/button/button.module.ts +0 -16
  389. package/src/lib/calendar/calendar.component.html +0 -1
  390. package/src/lib/calendar/calendar.component.less +0 -14
  391. package/src/lib/calendar/calendar.component.spec.ts +0 -25
  392. package/src/lib/calendar/calendar.component.ts +0 -75
  393. package/src/lib/calendar/calendar.module.ts +0 -23
  394. package/src/lib/checkbox/checkbox.component.html +0 -61
  395. package/src/lib/checkbox/checkbox.component.less +0 -104
  396. package/src/lib/checkbox/checkbox.component.spec.ts +0 -25
  397. package/src/lib/checkbox/checkbox.component.ts +0 -292
  398. package/src/lib/checkbox/checkbox.module.ts +0 -16
  399. package/src/lib/cross-table/cross-table.component.html +0 -16
  400. package/src/lib/cross-table/cross-table.component.less +0 -75
  401. package/src/lib/cross-table/cross-table.component.spec.ts +0 -25
  402. package/src/lib/cross-table/cross-table.component.ts +0 -257
  403. package/src/lib/cross-table/cross-table.module.ts +0 -18
  404. package/src/lib/custom-baidu-map/baidu-marker-layer/baidu-marker-layer.component.html +0 -32
  405. package/src/lib/custom-baidu-map/baidu-marker-layer/baidu-marker-layer.component.less +0 -11
  406. package/src/lib/custom-baidu-map/baidu-marker-layer/baidu-marker-layer.component.spec.ts +0 -25
  407. package/src/lib/custom-baidu-map/baidu-marker-layer/baidu-marker-layer.component.ts +0 -638
  408. package/src/lib/custom-baidu-map/baidu-polyline-layer/baidu-polyline-layer.component.html +0 -0
  409. package/src/lib/custom-baidu-map/baidu-polyline-layer/baidu-polyline-layer.component.less +0 -0
  410. package/src/lib/custom-baidu-map/baidu-polyline-layer/baidu-polyline-layer.component.spec.ts +0 -25
  411. package/src/lib/custom-baidu-map/baidu-polyline-layer/baidu-polyline-layer.component.ts +0 -248
  412. package/src/lib/custom-baidu-map/base-layer.ts +0 -50
  413. package/src/lib/custom-baidu-map/custom-baidu-map.component.html +0 -15
  414. package/src/lib/custom-baidu-map/custom-baidu-map.component.less +0 -68
  415. package/src/lib/custom-baidu-map/custom-baidu-map.component.spec.ts +0 -25
  416. package/src/lib/custom-baidu-map/custom-baidu-map.component.ts +0 -636
  417. package/src/lib/custom-baidu-map/custom-baidu-map.module.ts +0 -41
  418. package/src/lib/custom-baidu-map/typhoon-area-layer/typhoon-area-layer.component.html +0 -0
  419. package/src/lib/custom-baidu-map/typhoon-area-layer/typhoon-area-layer.component.less +0 -0
  420. package/src/lib/custom-baidu-map/typhoon-area-layer/typhoon-area-layer.component.spec.ts +0 -25
  421. package/src/lib/custom-baidu-map/typhoon-area-layer/typhoon-area-layer.component.ts +0 -99
  422. package/src/lib/custom-baidu-map/wind-layer/wind-layer.component.html +0 -0
  423. package/src/lib/custom-baidu-map/wind-layer/wind-layer.component.less +0 -0
  424. package/src/lib/custom-baidu-map/wind-layer/wind-layer.component.spec.ts +0 -25
  425. package/src/lib/custom-baidu-map/wind-layer/wind-layer.component.ts +0 -404
  426. package/src/lib/data-map/data-map.component.html +0 -9
  427. package/src/lib/data-map/data-map.component.less +0 -0
  428. package/src/lib/data-map/data-map.component.spec.ts +0 -25
  429. package/src/lib/data-map/data-map.component.ts +0 -105
  430. package/src/lib/data-map/data-map.module.ts +0 -15
  431. package/src/lib/date-picker/date-picker.component.html +0 -32
  432. package/src/lib/date-picker/date-picker.component.less +0 -20
  433. package/src/lib/date-picker/date-picker.component.spec.ts +0 -25
  434. package/src/lib/date-picker/date-picker.component.ts +0 -389
  435. package/src/lib/date-picker/date-picker.module.ts +0 -18
  436. package/src/lib/drop-down-detail-list/drop-down-detail-list.component.html +0 -25
  437. package/src/lib/drop-down-detail-list/drop-down-detail-list.component.less +0 -35
  438. package/src/lib/drop-down-detail-list/drop-down-detail-list.component.spec.ts +0 -25
  439. package/src/lib/drop-down-detail-list/drop-down-detail-list.component.ts +0 -117
  440. package/src/lib/drop-down-detail-list/drop-down-detail-list.module.ts +0 -15
  441. package/src/lib/dynamic-list/dynamic-list.component.html +0 -15
  442. package/src/lib/dynamic-list/dynamic-list.component.less +0 -31
  443. package/src/lib/dynamic-list/dynamic-list.component.spec.ts +0 -25
  444. package/src/lib/dynamic-list/dynamic-list.component.ts +0 -57
  445. package/src/lib/dynamic-list/dynamic-list.module.ts +0 -15
  446. package/src/lib/funnel-chart/funnel-chart.component.html +0 -7
  447. package/src/lib/funnel-chart/funnel-chart.component.less +0 -8
  448. package/src/lib/funnel-chart/funnel-chart.component.spec.ts +0 -25
  449. package/src/lib/funnel-chart/funnel-chart.component.ts +0 -198
  450. package/src/lib/funnel-chart/funnel-chart.module.ts +0 -15
  451. package/src/lib/gantt/gantt.component.html +0 -10
  452. package/src/lib/gantt/gantt.component.less +0 -76
  453. package/src/lib/gantt/gantt.component.spec.ts +0 -25
  454. package/src/lib/gantt/gantt.component.ts +0 -213
  455. package/src/lib/gantt/gantt.module.ts +0 -37
  456. package/src/lib/gauge/gauge.component.html +0 -1
  457. package/src/lib/gauge/gauge.component.less +0 -8
  458. package/src/lib/gauge/gauge.component.spec.ts +0 -25
  459. package/src/lib/gauge/gauge.component.ts +0 -268
  460. package/src/lib/gauge/gauge.module.ts +0 -15
  461. package/src/lib/gauge-progress/gauge-progress.component.html +0 -29
  462. package/src/lib/gauge-progress/gauge-progress.component.less +0 -51
  463. package/src/lib/gauge-progress/gauge-progress.component.ts +0 -288
  464. package/src/lib/gauge-progress/gauge.module.ts +0 -16
  465. package/src/lib/general-text/general-text.component.html +0 -7
  466. package/src/lib/general-text/general-text.component.less +0 -8
  467. package/src/lib/general-text/general-text.component.spec.ts +0 -25
  468. package/src/lib/general-text/general-text.component.ts +0 -114
  469. package/src/lib/general-text/general-text.module.ts +0 -15
  470. package/src/lib/iconfont/icon.ts +0 -198
  471. package/src/lib/iconfont/iconfont.component.html +0 -4
  472. package/src/lib/iconfont/iconfont.component.less +0 -5
  473. package/src/lib/iconfont/iconfont.component.spec.ts +0 -25
  474. package/src/lib/iconfont/iconfont.component.ts +0 -42
  475. package/src/lib/iconfont/iconfont.module.ts +0 -15
  476. package/src/lib/iframe/iframe.component.html +0 -1
  477. package/src/lib/iframe/iframe.component.less +0 -13
  478. package/src/lib/iframe/iframe.component.spec.ts +0 -25
  479. package/src/lib/iframe/iframe.component.ts +0 -34
  480. package/src/lib/iframe/iframe.module.ts +0 -15
  481. package/src/lib/image/image.component.html +0 -2
  482. package/src/lib/image/image.component.less +0 -13
  483. package/src/lib/image/image.component.spec.ts +0 -25
  484. package/src/lib/image/image.component.ts +0 -79
  485. package/src/lib/image/image.module.ts +0 -14
  486. package/src/lib/item-swiper/item-swiper.component.html +0 -48
  487. package/src/lib/item-swiper/item-swiper.component.less +0 -75
  488. package/src/lib/item-swiper/item-swiper.component.spec.ts +0 -25
  489. package/src/lib/item-swiper/item-swiper.component.ts +0 -284
  490. package/src/lib/item-swiper/item-swiper.module.ts +0 -24
  491. package/src/lib/line-bar-chart/line-bar-chart.component.html +0 -7
  492. package/src/lib/line-bar-chart/line-bar-chart.component.less +0 -3
  493. package/src/lib/line-bar-chart/line-bar-chart.component.spec.ts +0 -25
  494. package/src/lib/line-bar-chart/line-bar-chart.component.ts +0 -346
  495. package/src/lib/line-bar-chart/line-bar-chart.module.ts +0 -15
  496. package/src/lib/line-light-flow/line-light-flow.component.css +0 -0
  497. package/src/lib/line-light-flow/line-light-flow.component.html +0 -3
  498. package/src/lib/line-light-flow/line-light-flow.component.spec.ts +0 -25
  499. package/src/lib/line-light-flow/line-light-flow.component.ts +0 -274
  500. package/src/lib/line-light-flow/line-light-flow.module.ts +0 -21
  501. package/src/lib/liquid-fill/liquid-fill.component.html +0 -1
  502. package/src/lib/liquid-fill/liquid-fill.component.less +0 -8
  503. package/src/lib/liquid-fill/liquid-fill.component.spec.ts +0 -25
  504. package/src/lib/liquid-fill/liquid-fill.component.ts +0 -127
  505. package/src/lib/liquid-fill/liquid-fill.module.ts +0 -15
  506. package/src/lib/marquee/marquee.component.html +0 -5
  507. package/src/lib/marquee/marquee.component.less +0 -9
  508. package/src/lib/marquee/marquee.component.spec.ts +0 -25
  509. package/src/lib/marquee/marquee.component.ts +0 -84
  510. package/src/lib/marquee/marquee.module.ts +0 -14
  511. package/src/lib/mip-anim/mip-anim.component.html +0 -1
  512. package/src/lib/mip-anim/mip-anim.component.less +0 -7
  513. package/src/lib/mip-anim/mip-anim.component.spec.ts +0 -25
  514. package/src/lib/mip-anim/mip-anim.component.ts +0 -18
  515. package/src/lib/mip-anim/mip-anim.module.ts +0 -14
  516. package/src/lib/multi-title-gauge/multi-title-gauge.component.html +0 -1
  517. package/src/lib/multi-title-gauge/multi-title-gauge.component.less +0 -9
  518. package/src/lib/multi-title-gauge/multi-title-gauge.component.spec.ts +0 -25
  519. package/src/lib/multi-title-gauge/multi-title-gauge.component.ts +0 -231
  520. package/src/lib/multi-title-gauge/multi-title-gauge.module.ts +0 -19
  521. package/src/lib/number-flop/number-flop.component.html +0 -31
  522. package/src/lib/number-flop/number-flop.component.less +0 -155
  523. package/src/lib/number-flop/number-flop.component.spec.ts +0 -25
  524. package/src/lib/number-flop/number-flop.component.ts +0 -96
  525. package/src/lib/number-flop/number-flop.module.ts +0 -14
  526. package/src/lib/parent-container/parent-container.component.html +0 -0
  527. package/src/lib/parent-container/parent-container.component.less +0 -0
  528. package/src/lib/parent-container/parent-container.component.spec.ts +0 -25
  529. package/src/lib/parent-container/parent-container.component.ts +0 -21
  530. package/src/lib/parent-container/parent-container.module.ts +0 -14
  531. package/src/lib/percent-pie-chart/percent-pie-chart.component.html +0 -8
  532. package/src/lib/percent-pie-chart/percent-pie-chart.component.less +0 -8
  533. package/src/lib/percent-pie-chart/percent-pie-chart.component.spec.ts +0 -25
  534. package/src/lib/percent-pie-chart/percent-pie-chart.component.ts +0 -213
  535. package/src/lib/percent-pie-chart/percent-pie-chart.module.ts +0 -15
  536. package/src/lib/pie3d-chart/pie3d-chart.component.html +0 -1
  537. package/src/lib/pie3d-chart/pie3d-chart.component.less +0 -9
  538. package/src/lib/pie3d-chart/pie3d-chart.component.spec.ts +0 -25
  539. package/src/lib/pie3d-chart/pie3d-chart.component.ts +0 -278
  540. package/src/lib/pie3d-chart/pie3d-chart.module.ts +0 -16
  541. package/src/lib/planimetric-map2d/fly-line-layer/fly-line-layer.component.html +0 -0
  542. package/src/lib/planimetric-map2d/fly-line-layer/fly-line-layer.component.less +0 -0
  543. package/src/lib/planimetric-map2d/fly-line-layer/fly-line-layer.component.spec.ts +0 -25
  544. package/src/lib/planimetric-map2d/fly-line-layer/fly-line-layer.component.ts +0 -411
  545. package/src/lib/planimetric-map2d/fly-line-layer/fly-line-layer.module.ts +0 -13
  546. package/src/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.component.html +0 -1
  547. package/src/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.component.less +0 -0
  548. package/src/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.component.spec.ts +0 -25
  549. package/src/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.component.ts +0 -235
  550. package/src/lib/planimetric-map2d/map2d-mark-layer/map2d-mark-layer.module.ts +0 -16
  551. package/src/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.component.html +0 -0
  552. package/src/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.component.less +0 -0
  553. package/src/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.component.spec.ts +0 -25
  554. package/src/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.component.ts +0 -107
  555. package/src/lib/planimetric-map2d/map2d-polyline-layer/map2d-polyline-layer.module.ts +0 -17
  556. package/src/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.component.html +0 -0
  557. package/src/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.component.less +0 -0
  558. package/src/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.component.spec.ts +0 -25
  559. package/src/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.component.ts +0 -337
  560. package/src/lib/planimetric-map2d/map2d-visual-layer/map2d-visual-layer.module.ts +0 -18
  561. package/src/lib/planimetric-map2d/planimetric-map2d.component.html +0 -3
  562. package/src/lib/planimetric-map2d/planimetric-map2d.component.less +0 -9
  563. package/src/lib/planimetric-map2d/planimetric-map2d.component.spec.ts +0 -25
  564. package/src/lib/planimetric-map2d/planimetric-map2d.component.ts +0 -649
  565. package/src/lib/planimetric-map2d/planimetric-map2d.module.ts +0 -29
  566. package/src/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.component.html +0 -0
  567. package/src/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.component.less +0 -0
  568. package/src/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.component.spec.ts +0 -25
  569. package/src/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.component.ts +0 -123
  570. package/src/lib/planimetric-map3d/map3d-line-layer/map3d-line-layer.module.ts +0 -14
  571. package/src/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.component.html +0 -0
  572. package/src/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.component.less +0 -0
  573. package/src/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.component.spec.ts +0 -25
  574. package/src/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.component.ts +0 -229
  575. package/src/lib/planimetric-map3d/map3d-mark-layer/map3d-mark-layer.module.ts +0 -14
  576. package/src/lib/planimetric-map3d/planimetric-map3d.component.html +0 -2
  577. package/src/lib/planimetric-map3d/planimetric-map3d.component.less +0 -10
  578. package/src/lib/planimetric-map3d/planimetric-map3d.component.spec.ts +0 -25
  579. package/src/lib/planimetric-map3d/planimetric-map3d.component.ts +0 -227
  580. package/src/lib/planimetric-map3d/planimetric-map3d.module.ts +0 -17
  581. package/src/lib/radar-chart/radar-chart.component.html +0 -7
  582. package/src/lib/radar-chart/radar-chart.component.less +0 -8
  583. package/src/lib/radar-chart/radar-chart.component.spec.ts +0 -25
  584. package/src/lib/radar-chart/radar-chart.component.ts +0 -203
  585. package/src/lib/radar-chart/radar-chart.module.ts +0 -15
  586. package/src/lib/radio/radio.component.html +0 -18
  587. package/src/lib/radio/radio.component.less +0 -61
  588. package/src/lib/radio/radio.component.spec.ts +0 -25
  589. package/src/lib/radio/radio.component.ts +0 -116
  590. package/src/lib/radio/radio.module.ts +0 -16
  591. package/src/lib/rate/rate.component.html +0 -16
  592. package/src/lib/rate/rate.component.less +0 -39
  593. package/src/lib/rate/rate.component.spec.ts +0 -25
  594. package/src/lib/rate/rate.component.ts +0 -40
  595. package/src/lib/rate/rate.module.ts +0 -18
  596. package/src/lib/scatter3d/scatter3d.component.html +0 -1
  597. package/src/lib/scatter3d/scatter3d.component.less +0 -8
  598. package/src/lib/scatter3d/scatter3d.component.spec.ts +0 -25
  599. package/src/lib/scatter3d/scatter3d.component.ts +0 -129
  600. package/src/lib/scatter3d/scatter3d.module.ts +0 -15
  601. package/src/lib/screen-widget.module.ts +0 -592
  602. package/src/lib/search/search.component.html +0 -30
  603. package/src/lib/search/search.component.less +0 -30
  604. package/src/lib/search/search.component.spec.ts +0 -25
  605. package/src/lib/search/search.component.ts +0 -103
  606. package/src/lib/search/search.module.ts +0 -22
  607. package/src/lib/select/select.component.html +0 -27
  608. package/src/lib/select/select.component.less +0 -112
  609. package/src/lib/select/select.component.spec.ts +0 -25
  610. package/src/lib/select/select.component.ts +0 -287
  611. package/src/lib/select/select.module.ts +0 -16
  612. package/src/lib/shape/shape.component.html +0 -39
  613. package/src/lib/shape/shape.component.less +0 -8
  614. package/src/lib/shape/shape.component.spec.ts +0 -25
  615. package/src/lib/shape/shape.component.ts +0 -207
  616. package/src/lib/shape/shape.module.ts +0 -14
  617. package/src/lib/shared/component/video-player/video-player.component.html +0 -2
  618. package/src/lib/shared/component/video-player/video-player.component.less +0 -15
  619. package/src/lib/shared/component/video-player/video-player.component.spec.ts +0 -25
  620. package/src/lib/shared/component/video-player/video-player.component.ts +0 -132
  621. package/src/lib/shared/component/video-player/video-player.module.ts +0 -11
  622. package/src/lib/shared/model/scale.token.ts +0 -8
  623. package/src/lib/shared/service/common.service.ts +0 -28
  624. package/src/lib/shared/service/file-url.service.ts +0 -8
  625. package/src/lib/shared/service/gaode-map.service.ts +0 -37
  626. package/src/lib/shared/service/highcharts.service.ts +0 -29
  627. package/src/lib/shared/service/http.service.ts +0 -15
  628. package/src/lib/shared/util/base.util.ts +0 -4
  629. package/src/lib/shared/util/echarts.util.ts +0 -11
  630. package/src/lib/shared/util/style.util.ts +0 -12
  631. package/src/lib/shuffling-list/color.pipe.ts +0 -21
  632. package/src/lib/shuffling-list/shuffling-list.component.html +0 -37
  633. package/src/lib/shuffling-list/shuffling-list.component.less +0 -55
  634. package/src/lib/shuffling-list/shuffling-list.component.spec.ts +0 -25
  635. package/src/lib/shuffling-list/shuffling-list.component.ts +0 -534
  636. package/src/lib/shuffling-list/shuffling-list.module.ts +0 -17
  637. package/src/lib/table/table.component.html +0 -123
  638. package/src/lib/table/table.component.less +0 -76
  639. package/src/lib/table/table.component.spec.ts +0 -25
  640. package/src/lib/table/table.component.ts +0 -608
  641. package/src/lib/table/table.module.ts +0 -33
  642. package/src/lib/tabs/tab/tab.component.html +0 -1
  643. package/src/lib/tabs/tab/tab.component.less +0 -5
  644. package/src/lib/tabs/tab/tab.component.spec.ts +0 -25
  645. package/src/lib/tabs/tab/tab.component.ts +0 -18
  646. package/src/lib/tabs/tabs.component.html +0 -13
  647. package/src/lib/tabs/tabs.component.less +0 -40
  648. package/src/lib/tabs/tabs.component.spec.ts +0 -25
  649. package/src/lib/tabs/tabs.component.ts +0 -68
  650. package/src/lib/tabs/tabs.module.ts +0 -17
  651. package/src/lib/temporary-data/temporary-data.component.html +0 -1
  652. package/src/lib/temporary-data/temporary-data.component.less +0 -4
  653. package/src/lib/temporary-data/temporary-data.component.spec.ts +0 -25
  654. package/src/lib/temporary-data/temporary-data.component.ts +0 -46
  655. package/src/lib/temporary-data/temporary-data.module.ts +0 -15
  656. package/src/lib/text/text.component.css +0 -0
  657. package/src/lib/text/text.component.html +0 -3
  658. package/src/lib/text/text.component.spec.ts +0 -25
  659. package/src/lib/text/text.component.ts +0 -22
  660. package/src/lib/text/text.module.ts +0 -14
  661. package/src/lib/time-picker/time-picker.component.html +0 -1
  662. package/src/lib/time-picker/time-picker.component.less +0 -14
  663. package/src/lib/time-picker/time-picker.component.spec.ts +0 -25
  664. package/src/lib/time-picker/time-picker.component.ts +0 -86
  665. package/src/lib/time-picker/time-picker.module.ts +0 -19
  666. package/src/lib/timer/timer.component.html +0 -7
  667. package/src/lib/timer/timer.component.less +0 -24
  668. package/src/lib/timer/timer.component.spec.ts +0 -25
  669. package/src/lib/timer/timer.component.ts +0 -74
  670. package/src/lib/timer/timer.module.ts +0 -15
  671. package/src/lib/tree-control/tree-control.component.html +0 -97
  672. package/src/lib/tree-control/tree-control.component.less +0 -111
  673. package/src/lib/tree-control/tree-control.component.spec.ts +0 -25
  674. package/src/lib/tree-control/tree-control.component.ts +0 -363
  675. package/src/lib/tree-control/tree-control.module.ts +0 -18
  676. package/src/lib/tree-ring-chart/tree-ring-chart.component.html +0 -7
  677. package/src/lib/tree-ring-chart/tree-ring-chart.component.less +0 -8
  678. package/src/lib/tree-ring-chart/tree-ring-chart.component.spec.ts +0 -25
  679. package/src/lib/tree-ring-chart/tree-ring-chart.component.ts +0 -192
  680. package/src/lib/tree-ring-chart/tree-ring-chart.module.ts +0 -15
  681. package/src/lib/upload/upload.component.html +0 -32
  682. package/src/lib/upload/upload.component.less +0 -14
  683. package/src/lib/upload/upload.component.spec.ts +0 -25
  684. package/src/lib/upload/upload.component.ts +0 -109
  685. package/src/lib/upload/upload.module.ts +0 -19
  686. package/src/lib/video-grid/video-grid.component.html +0 -33
  687. package/src/lib/video-grid/video-grid.component.less +0 -68
  688. package/src/lib/video-grid/video-grid.component.spec.ts +0 -25
  689. package/src/lib/video-grid/video-grid.component.ts +0 -114
  690. package/src/lib/video-grid/video-grid.module.ts +0 -17
  691. package/src/lib/visual-map-chart/visual-map-chart.component.html +0 -8
  692. package/src/lib/visual-map-chart/visual-map-chart.component.less +0 -21
  693. package/src/lib/visual-map-chart/visual-map-chart.component.spec.ts +0 -25
  694. package/src/lib/visual-map-chart/visual-map-chart.component.ts +0 -365
  695. package/src/lib/visual-map-chart/visual-map-chart.module.ts +0 -18
  696. package/src/lib/vote/vote.component.html +0 -6
  697. package/src/lib/vote/vote.component.less +0 -41
  698. package/src/lib/vote/vote.component.spec.ts +0 -25
  699. package/src/lib/vote/vote.component.ts +0 -71
  700. package/src/lib/vote/vote.module.ts +0 -16
  701. package/src/lib/weather/weather.component.html +0 -27
  702. package/src/lib/weather/weather.component.less +0 -67
  703. package/src/lib/weather/weather.component.spec.ts +0 -25
  704. package/src/lib/weather/weather.component.ts +0 -78
  705. package/src/lib/weather/weather.module.ts +0 -16
  706. package/src/lib/wordart/wordart.component.html +0 -2
  707. package/src/lib/wordart/wordart.component.less +0 -12
  708. package/src/lib/wordart/wordart.component.spec.ts +0 -25
  709. package/src/lib/wordart/wordart.component.ts +0 -56
  710. package/src/lib/wordart/wordart.module.ts +0 -14
  711. package/src/lib/workbench-widget.module.ts +0 -675
  712. package/src/test.ts +0 -22
  713. package/tsconfig.lib.json +0 -37
  714. package/tsconfig.lib.prod.json +0 -9
  715. package/tsconfig.spec.json +0 -17
  716. package/tslint.json +0 -17
  717. /package/core/{src/public_api.ts → public_api.d.ts} +0 -0
@@ -0,0 +1,665 @@
1
+ import { __awaiter, __decorate, __metadata } from "tslib";
2
+ import { HttpClient } from '@angular/common/http';
3
+ import { ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, NgZone, Optional, ViewChild, } from '@angular/core';
4
+ import { Subject } from 'rxjs';
5
+ import { take, takeUntil } from 'rxjs/operators';
6
+ import { ScaleSubject, TemplateUtil, WidgetRef } from 'bbj-widget-base';
7
+ import { Data, DataOutput, Property, Widget, Event } from 'bbj-widget-base';
8
+ import { BaiduMapService } from 'bbj-screen-widget/core';
9
+ const MapTypeEnum = [
10
+ { label: '普通', value: 'normal' },
11
+ { label: '深色', value: 'dark' },
12
+ { label: '卫星', value: 'satellite' },
13
+ { label: '自定义', value: 'custom' },
14
+ ];
15
+ let CustomBaiduMapComponent = class CustomBaiduMapComponent {
16
+ constructor(baiduMapService, http, elementRef, zone, scale$, cd, widgetRef) {
17
+ this.baiduMapService = baiduMapService;
18
+ this.http = http;
19
+ this.elementRef = elementRef;
20
+ this.zone = zone;
21
+ this.scale$ = scale$;
22
+ this.cd = cd;
23
+ this.widgetRef = widgetRef;
24
+ // @Property('字体', { ui: { widget: 'myFont' } })
25
+ // font: any = {
26
+ // family: '',
27
+ // color: '#000000',
28
+ // weight: 'normal',
29
+ // size: 16,
30
+ // space: 0,
31
+ // lineHeight: 0,
32
+ // };
33
+ this.mapType = 'normal';
34
+ this.minMapShow = false;
35
+ this.showType = 'click';
36
+ this.dragging = true;
37
+ this.shadeColor = '#004395';
38
+ this.mapCityColor = '#41b7ff';
39
+ this.zoom = 12;
40
+ // @Property('放大比例', { type: 'number' })
41
+ // scale = 1;
42
+ this.fillOpacity = 0;
43
+ this.strokesize = 2;
44
+ this.nightMode = false;
45
+ this.tilt = 73;
46
+ // @Property('中心经度', {
47
+ // ui: {widget: 'myRange', min: -180, max: 180, step: 1},
48
+ // })
49
+ this.centerLng = 120.7;
50
+ // @Property('中心纬度', {
51
+ // ui: {widget: 'myRange', min: -90, max: 90, step: 1},
52
+ // })
53
+ this.centerLat = 28;
54
+ this.cityName = null;
55
+ // markerTierClick: any;
56
+ // pingyang = '';
57
+ // ruian = '';
58
+ this._data = [{ lng: 120.7, lat: 28 }];
59
+ this.dataChange = new EventEmitter();
60
+ this.zoomChange = new EventEmitter();
61
+ this.mapClick = new EventEmitter();
62
+ this.destroy$ = new Subject();
63
+ // containerStyle: any = {};
64
+ // unloadedChildren = {};
65
+ this.overlaysMap = {};
66
+ this.init$ = new Promise((resolve) => {
67
+ this.inited = resolve;
68
+ });
69
+ this.mapTypeEnum = MapTypeEnum.slice(0, 3);
70
+ }
71
+ get element() {
72
+ return this.elementRef.nativeElement;
73
+ }
74
+ addLayer(layer) {
75
+ if (this.view) {
76
+ this.view.addLayer(layer);
77
+ }
78
+ }
79
+ removeLayer(layer) {
80
+ if (this.view) {
81
+ this.view.removeLayer(layer);
82
+ }
83
+ }
84
+ ngOnChanges(changes) {
85
+ if (changes._data && this._data[0]) {
86
+ this.centerLng = +this._data[0].lng;
87
+ this.centerLat = +this._data[0].lat;
88
+ this.setCenter(this.centerLng, this.centerLat);
89
+ }
90
+ }
91
+ ngOnInit() {
92
+ return __awaiter(this, void 0, void 0, function* () {
93
+ if (this.scale$) {
94
+ // 这是为了解决地图缩放中心不在鼠标所在位置的问题
95
+ this.scale$.pipe(takeUntil(this.destroy$)).subscribe((scale) => {
96
+ const { x: sx, y: sy, scaleContent } = scale;
97
+ const style = this.element.style;
98
+ if (scaleContent === false) {
99
+ this.zone.onStable.pipe(take(1)).subscribe(() => {
100
+ const parent = this.element.parentNode;
101
+ if (parent) {
102
+ const match = /translate\(([-\d.]+)px, ([-\d.]+)px\)/.exec(parent.style.transform);
103
+ if (match) {
104
+ const offsetX = parseFloat(match[1]);
105
+ const offsetY = parseFloat(match[2]);
106
+ style.transform = `translate(${-offsetX}px,${-offsetY}px)`;
107
+ style.height = parent.clientHeight + offsetY + 'px';
108
+ style.width = parent.clientWidth + offsetX + 'px';
109
+ style.padding = `${offsetY}px 0 0 ${offsetX}px`;
110
+ // this.containerStyle = {
111
+ // transformOrigin: `0 0`,
112
+ // transform: `translate(${-offsetX}px,${-offsetY}px)`,
113
+ // height: parent.clientHeight + offsetY + 'px',
114
+ // width: parent.clientWidth + offsetX + 'px',
115
+ // padding: `${offsetY}px 0 0 ${offsetX}px`,
116
+ // };
117
+ }
118
+ }
119
+ // this.cd.markForCheck();
120
+ });
121
+ }
122
+ else {
123
+ const { position, size } = this.widgetRef.widget;
124
+ const { x, y } = position;
125
+ const { width, height } = size;
126
+ style.transform = `translate(${-x}px,${-y}px) scale(${1 / sx},${1 / sy})`;
127
+ style.height = (y + height) * sy + 'px';
128
+ style.width = (x + width) * sx + 'px';
129
+ style.padding = `${y * sy}px 0 0 ${x * sx}px`;
130
+ }
131
+ // this.cd.markForCheck();
132
+ });
133
+ }
134
+ yield this.initMap();
135
+ });
136
+ }
137
+ initMap() {
138
+ return __awaiter(this, void 0, void 0, function* () {
139
+ yield this.baiduMapService.loadMapGL();
140
+ yield this.baiduMapService.loadMapVGL();
141
+ this.mapTypeValue = this.mapType;
142
+ // 兼容老的配置
143
+ if (this.mapType == null) {
144
+ if (this.uploadStyle) {
145
+ this.mapTypeValue = 'custom';
146
+ }
147
+ else if (this.nightMode) {
148
+ this.mapTypeValue = 'dark';
149
+ }
150
+ }
151
+ if (!this.destroyed) {
152
+ this.zone.runOutsideAngular(() => {
153
+ this.map = new BMapGL.Map(this.container.nativeElement, { restrictCenter: false });
154
+ this.map.centerAndZoom(new BMapGL.Point(this.centerLng, this.centerLat), this.zoom); // 设置中心点和缩放级别
155
+ this.map.enableScrollWheelZoom(); // 启用滚轮进行缩放功能
156
+ // var dist = new BMapGL.DistrictLayer({
157
+ // name: '(温州市)',
158
+ // kind: 1,
159
+ // fillColor: '#fff',
160
+ // fillOpacity: 0.1,
161
+ // strokeColor: '#daeafa',
162
+ // viewport: true,
163
+ // });
164
+ // this.map.addDistrictLayer(dist);
165
+ this.mapTypeChange(this.mapTypeValue);
166
+ if (this.edit || this.dragging === false) {
167
+ this.map.disableDragging();
168
+ }
169
+ if (this.enable3D) {
170
+ this.map.setTilt(this.tilt == null ? 73 : this.tilt, { noAnimation: true });
171
+ this.map.setDisplayOptions({ skyColors: ['rgba(0, 0, 0, 0)'] }); // 隐藏天空
172
+ // const navi3DCtrl = new BMapGL.NavigationControl3D(); // 添加3D控件
173
+ // this.map.addControl(navi3DCtrl);
174
+ }
175
+ else {
176
+ this.map.disableTilt();
177
+ this.map.disableRotate();
178
+ }
179
+ if (this.showLocationControl) {
180
+ const options = {
181
+ // 控件的停靠位置(可选,默认左上角)
182
+ anchor: BMAP_ANCHOR_TOP_LEFT,
183
+ // 控件基于停靠位置的偏移量(可选)
184
+ offset: new BMapGL.Size(20, 20),
185
+ };
186
+ let locationControl = new BMapGL.LocationControl(options);
187
+ // 将控件添加到地图上
188
+ this.map.addControl(locationControl);
189
+ }
190
+ if (this.minMapShow) {
191
+ const stCtrl = new BMapGL.PanoramaControl();
192
+ stCtrl.setOffset(new BMapGL.Size(20, 20));
193
+ this.map.addControl(stCtrl);
194
+ }
195
+ if (this.infoWindowBackground) {
196
+ this.element.style.setProperty('--info-window-background', this.infoWindowBackground);
197
+ }
198
+ if (this.infoWindowColor) {
199
+ this.element.style.setProperty('--info-window-color', this.infoWindowColor);
200
+ }
201
+ this.map.addEventListener('moveend', (event) => {
202
+ const center = this.map.getCenter();
203
+ this.dataChange.emit(center);
204
+ });
205
+ this.map.addEventListener('click', (event) => {
206
+ this.mapClick.emit(event.pointer);
207
+ });
208
+ this.map.addEventListener('zoomend', (event) => {
209
+ this.zoomChange.emit(this.map.getZoom());
210
+ this.dataChange.emit(this.map.getCenter());
211
+ });
212
+ this.view = new mapvgl.View({
213
+ map: this.map,
214
+ });
215
+ this.mapLoaded(this.map);
216
+ });
217
+ this.inited(this.map);
218
+ }
219
+ });
220
+ }
221
+ setCenter(lng, lat) {
222
+ if (this.map && lng && lat) {
223
+ const center = this.map.getCenter();
224
+ if (center.lng != lng || center.lat != lat) {
225
+ this.setCenterAndZoom(lng, lat, this.map.getZoom());
226
+ }
227
+ }
228
+ }
229
+ setCenterAndZoom(lng, lat, zoom) {
230
+ const center = this.map.getCenter();
231
+ const currentZoom = this.map.getZoom();
232
+ // 误差范围内不移动,防止背景抖动
233
+ if (zoom != currentZoom || Math.abs(lng - center.lng) > 1e-13 || Math.abs(lat - center.lat) > 1e-7) {
234
+ const point = new BMapGL.Point(lng, lat);
235
+ this.map.centerAndZoom(point, zoom, { tilt: this.map.getTilt() });
236
+ }
237
+ }
238
+ /**
239
+ * 根据经纬度范围设置中心和缩放等级
240
+ * @param minLng
241
+ * @param maxLng
242
+ * @param minLat
243
+ * @param maxLat
244
+ */
245
+ setRectCenterAndZoom(minLng, maxLng, minLat, maxLat) {
246
+ this.setCenterAndZoom((maxLng + minLng) / 2, (maxLat + minLat) / 2, this.getZoom(maxLng, minLng, maxLat, minLat));
247
+ }
248
+ getZoom(maxLng, minLng, maxLat, minLat) {
249
+ const zooms = [
250
+ 50, 100, 200, 500, 1000, 2000, 5000, 10000, 20000, 25000, 50000, 100000, 200000, 500000, 1000000, 2000000,
251
+ ]; //级别18到3。
252
+ const pointA = new BMapGL.Point(maxLng, maxLat); // 创建点坐标A
253
+ const pointB = new BMapGL.Point(minLng, minLat); // 创建点坐标B
254
+ const distance = +this.map.getDistance(pointA, pointB).toFixed(1); //获取两点距离,保留小数点后两位
255
+ const i = zooms.findIndex((zoom) => zoom - distance > 0);
256
+ if (i === -1) {
257
+ return 5;
258
+ }
259
+ //之所以会多3,是因为地图范围常常是比例尺距离的10倍以上。所以级别会增加3。
260
+ return 18 - i + 3;
261
+ }
262
+ openInfoWindow(data, lng, lat) {
263
+ if (data.information || this.infoWindowTemplate) {
264
+ const point = new BMapGL.Point(+lng, +lat);
265
+ // let offsetY = -25;
266
+ // if (this.hideInfoWindowTail) {
267
+ // offsetY = 0;
268
+ // }
269
+ let information = data.information;
270
+ if (this.infoWindowTemplate) {
271
+ information = TemplateUtil.parse(this.infoWindowTemplate, data);
272
+ }
273
+ const options = {
274
+ offset: new BMapGL.Size(0, 0),
275
+ width: this.infoWindowWidth || 0,
276
+ height: this.infoWindowHeight || 0,
277
+ };
278
+ const infoWindow = new BMapGL.InfoWindow(information, options);
279
+ // 第一次打开信息窗口后在短时间关闭或重新打开会导致click事件失效,临时解决方案是第一次打开后0.5秒内不关闭
280
+ if (!this.firstOpen) {
281
+ if (this.firstOpenPromise) {
282
+ this.firstOpenPromise.then(() => {
283
+ this.map.openInfoWindow(infoWindow, point);
284
+ });
285
+ }
286
+ else {
287
+ this.firstOpenPromise = new Promise((resolve) => {
288
+ setTimeout(() => {
289
+ this.firstOpen = true;
290
+ this.firstOpenPromise = null;
291
+ resolve();
292
+ }, 500);
293
+ });
294
+ this.map.openInfoWindow(infoWindow, point);
295
+ }
296
+ const rawClose = infoWindow.close;
297
+ infoWindow.close = () => {
298
+ if (this.firstOpenPromise) {
299
+ this.firstOpenPromise.then(() => rawClose.call(infoWindow));
300
+ }
301
+ else {
302
+ rawClose.call(infoWindow);
303
+ }
304
+ };
305
+ }
306
+ else {
307
+ this.map.openInfoWindow(infoWindow, point);
308
+ }
309
+ return infoWindow;
310
+ }
311
+ }
312
+ getCanvasOverlay(child) {
313
+ let canvasOverlay;
314
+ if (this.enable3D) {
315
+ const item = child.item;
316
+ if (item) {
317
+ var pStart = new BMapGL.Point(item.start.lng, item.start.lat);
318
+ var pEnd = new BMapGL.Point(item.end.lng, item.end.lat);
319
+ var bounds = new BMapGL.Bounds(new BMapGL.Point(pStart.lng, pEnd.lat), new BMapGL.Point(pEnd.lng, pStart.lat));
320
+ canvasOverlay = new BMapGL.GroundOverlay(bounds, {
321
+ type: 'canvas',
322
+ url: item.canvas,
323
+ opacity: 1,
324
+ });
325
+ }
326
+ }
327
+ else {
328
+ const pointToPixel = (data) => {
329
+ const point = new BMapGL.Point(data.lng, data.lat);
330
+ return this.map.pointToPixel(point);
331
+ };
332
+ canvasOverlay = new BMapGL.CanvasLayer({
333
+ paneName: 'markerShadow',
334
+ update: function () {
335
+ var ctx = this.canvas.getContext('2d');
336
+ if (!ctx) {
337
+ return;
338
+ }
339
+ ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
340
+ child.update(ctx, pointToPixel);
341
+ },
342
+ });
343
+ }
344
+ return canvasOverlay;
345
+ }
346
+ ngOnDestroy() {
347
+ this.destroy$.next();
348
+ this.destroy$.complete();
349
+ this.destroyed = true;
350
+ if (this.view) {
351
+ try {
352
+ this.view.destroy();
353
+ }
354
+ catch (e) {
355
+ console.error(e);
356
+ }
357
+ }
358
+ if (this.map) {
359
+ try {
360
+ this.map.destroy();
361
+ }
362
+ catch (e) {
363
+ console.error(e);
364
+ }
365
+ }
366
+ }
367
+ mapLoaded(map) {
368
+ return __awaiter(this, void 0, void 0, function* () {
369
+ if (this.cityName) {
370
+ if (this.cityName === '温州') {
371
+ this.cityName = 'wenzhou';
372
+ }
373
+ const json = yield this.http.get('assets/echarts/map/json/' + this.cityName + '.json').toPromise();
374
+ const polygonData = [];
375
+ let encodeScale = json.UTF8Scale || 1024;
376
+ json.features.forEach(({ geometry }) => {
377
+ geometry.coordinates = geometry.coordinates.forEach((coordinate, i) => {
378
+ if (geometry.type === 'MultiPolygon') {
379
+ const coordinates = coordinate.map((points, j) => {
380
+ if (json.UTF8Encoding) {
381
+ points = this.decodePolygon(points, geometry.encodeOffsets[i][j], encodeScale);
382
+ }
383
+ return points;
384
+ });
385
+ polygonData.push(coordinates);
386
+ }
387
+ else {
388
+ if (json.UTF8Encoding) {
389
+ coordinate = this.decodePolygon(coordinate, geometry.encodeOffsets[i], encodeScale);
390
+ }
391
+ polygonData.push([coordinate]);
392
+ }
393
+ });
394
+ });
395
+ const data = [
396
+ {
397
+ geometry: {
398
+ type: 'MultiPolygon',
399
+ coordinates: polygonData,
400
+ },
401
+ },
402
+ ];
403
+ var layer = new mapvgl.PolygonLayer({
404
+ lineColor: this.mapCityColor,
405
+ lineWidth: this.strokesize || 2,
406
+ fillColor: this.shadeColor,
407
+ data,
408
+ renderOrder: -2,
409
+ });
410
+ this.view.addLayer(layer);
411
+ if (this.mapBackColor && !this.mapBackColor.match(/rgba\(\d+,\d+,\d+,0\)/)) {
412
+ var maskLayer = new mapvgl.MaskLayer({
413
+ color: this.mapBackColor,
414
+ data,
415
+ renderOrder: -3,
416
+ });
417
+ this.view.addLayer(maskLayer);
418
+ }
419
+ }
420
+ });
421
+ }
422
+ decodePolygon(coordinate, encodeOffsets, encodeScale) {
423
+ const result = [];
424
+ let prevX = encodeOffsets[0];
425
+ let prevY = encodeOffsets[1];
426
+ for (let i = 0; i < coordinate.length; i += 2) {
427
+ var x = coordinate.charCodeAt(i) - 64;
428
+ var y = coordinate.charCodeAt(i + 1) - 64;
429
+ // ZigZag decoding
430
+ x = (x >> 1) ^ -(x & 1);
431
+ y = (y >> 1) ^ -(y & 1);
432
+ // Delta deocding
433
+ x += prevX;
434
+ y += prevY;
435
+ prevX = x;
436
+ prevY = y;
437
+ // Dequantize
438
+ result.push([x / encodeScale, y / encodeScale]);
439
+ }
440
+ return result;
441
+ }
442
+ mapTypeChange(mapType) {
443
+ return __awaiter(this, void 0, void 0, function* () {
444
+ switch (mapType) {
445
+ case 'dark':
446
+ if (!this.darkStyle) {
447
+ this.darkStyle = yield this.http.get('assets/echarts/map/json/custom_map.json').toPromise();
448
+ }
449
+ this.map.setMapType(BMAP_NORMAL_MAP);
450
+ this.map.setMapStyleV2({ styleJson: this.darkStyle });
451
+ break;
452
+ case 'satellite':
453
+ this.map.setMapType(BMAP_SATELLITE_MAP);
454
+ break;
455
+ case 'custom':
456
+ if (this.uploadStyle) {
457
+ const styleJson = yield this.http.get(this.uploadStyle).toPromise();
458
+ this.map.setMapType(BMAP_NORMAL_MAP);
459
+ this.map.setMapStyleV2({ styleJson });
460
+ }
461
+ break;
462
+ default:
463
+ this.map.setMapType(BMAP_NORMAL_MAP);
464
+ this.map.setMapStyleV2({ styleJson: null });
465
+ }
466
+ });
467
+ }
468
+ };
469
+ CustomBaiduMapComponent.decorators = [
470
+ { type: Component, args: [{
471
+ selector: 'sc-custom-baidu-map',
472
+ template: "<ng-template *ngFor=\"let child of children\" widget-host [widget]=\"child\"></ng-template>\n\n<!-- {{children|json}} -->\n<!-- <div class=\"map-container\" [ngStyle]=\"containerStyle\"> -->\n<div #container class=\"map\"></div>\n<nz-radio-group\n *ngIf=\"showMapTypeRadio\"\n class=\"map-type-radio\"\n [(ngModel)]=\"mapTypeValue\"\n (ngModelChange)=\"mapTypeChange($event)\"\n nzButtonStyle=\"solid\"\n>\n <label *ngFor=\"let item of mapTypeEnum\" nz-radio-button [nzValue]=\"item.value\">{{ item.label }}</label>\n</nz-radio-group>\n<!-- </div> -->\n",
473
+ styles: [":host{display:block;height:100%;width:100%;overflow:hidden;transform-origin:0 0;z-index:0;pointer-events:none}:host>*{pointer-events:auto}.map{height:100%;width:100%}:host::ng-deep .BMap_bubble_pop{background-color:var(--info-window-background,#fff)!important}:host::ng-deep .BMap_bubble_content{color:var(--info-window-color,\"#555555\")!important}:host::ng-deep .BMap_pop div{background-color:var(--info-window-background,#fff)!important}:host::ng-deep .BMap_pop>div:nth-child(8){background-color:transparent!important}:host.hideInfoWindowTail::ng-deep .BMap_bubble_pop>img,:host.hideInfoWindowTail::ng-deep .BMap_pop>div:nth-child(8),:host::ng-deep img[src$=\"/image/api/iws3.png\"]{display:none}:host.hideInfoWindowTop::ng-deep .BMap_bubble_pop{transform:translateY(31px)}:host.hideInfoWindowTop::ng-deep .BMap_bubble_pop>img{transform:translateY(-31px)}:host.hideInfoWindowTop::ng-deep .BMap_bubble_top,:host::ng-deep .anchorBL{display:none}.map-type-radio{position:absolute;bottom:20px;right:20px;z-index:10}"]
474
+ },] }
475
+ ];
476
+ CustomBaiduMapComponent.ctorParameters = () => [
477
+ { type: BaiduMapService },
478
+ { type: HttpClient },
479
+ { type: ElementRef },
480
+ { type: NgZone },
481
+ { type: ScaleSubject, decorators: [{ type: Optional }] },
482
+ { type: ChangeDetectorRef },
483
+ { type: WidgetRef }
484
+ ];
485
+ CustomBaiduMapComponent.propDecorators = {
486
+ hideInfoWindowTail: [{ type: HostBinding, args: ['class.hideInfoWindowTail',] }],
487
+ hideInfoWindowTop: [{ type: HostBinding, args: ['class.hideInfoWindowTop',] }],
488
+ container: [{ type: ViewChild, args: ['container', { static: true },] }]
489
+ };
490
+ __decorate([
491
+ Property('地图类型', {
492
+ enum: MapTypeEnum,
493
+ }),
494
+ __metadata("design:type", Object)
495
+ ], CustomBaiduMapComponent.prototype, "mapType", void 0);
496
+ __decorate([
497
+ Property('上传样式', { type: 'string', ui: { widget: 'myUploadAudio', visibleIf: { mapType: ['custom'] } } }),
498
+ __metadata("design:type", String)
499
+ ], CustomBaiduMapComponent.prototype, "uploadStyle", void 0);
500
+ __decorate([
501
+ Property('切换按钮'),
502
+ __metadata("design:type", Boolean)
503
+ ], CustomBaiduMapComponent.prototype, "showMapTypeRadio", void 0);
504
+ __decorate([
505
+ Property('全景地图', { type: 'boolean' }),
506
+ __metadata("design:type", Object)
507
+ ], CustomBaiduMapComponent.prototype, "minMapShow", void 0);
508
+ __decorate([
509
+ Property('显示信息', {
510
+ ui: { widget: 'select' },
511
+ enum: [
512
+ { label: '点击', value: 'click' },
513
+ { label: '悬停', value: 'mouseover' },
514
+ ],
515
+ }),
516
+ __metadata("design:type", Object)
517
+ ], CustomBaiduMapComponent.prototype, "showType", void 0);
518
+ __decorate([
519
+ Property('信息窗背景', { ui: { widget: 'myColor' } }),
520
+ __metadata("design:type", String)
521
+ ], CustomBaiduMapComponent.prototype, "infoWindowBackground", void 0);
522
+ __decorate([
523
+ Property('信息窗字体', { ui: { widget: 'myColor' } }),
524
+ __metadata("design:type", String)
525
+ ], CustomBaiduMapComponent.prototype, "infoWindowColor", void 0);
526
+ __decorate([
527
+ Property('信息窗宽度'),
528
+ __metadata("design:type", Number)
529
+ ], CustomBaiduMapComponent.prototype, "infoWindowWidth", void 0);
530
+ __decorate([
531
+ Property('信息窗高度'),
532
+ __metadata("design:type", Number)
533
+ ], CustomBaiduMapComponent.prototype, "infoWindowHeight", void 0);
534
+ __decorate([
535
+ Property('信息窗模板', { ui: { widget: 'textarea' } }),
536
+ __metadata("design:type", String)
537
+ ], CustomBaiduMapComponent.prototype, "infoWindowTemplate", void 0);
538
+ __decorate([
539
+ Property('隐藏尖角'),
540
+ __metadata("design:type", Boolean)
541
+ ], CustomBaiduMapComponent.prototype, "hideInfoWindowTail", void 0);
542
+ __decorate([
543
+ Property('隐藏关闭按钮'),
544
+ __metadata("design:type", Boolean)
545
+ ], CustomBaiduMapComponent.prototype, "hideInfoWindowTop", void 0);
546
+ __decorate([
547
+ Property('地图拖动', { type: 'boolean' }),
548
+ __metadata("design:type", Object)
549
+ ], CustomBaiduMapComponent.prototype, "dragging", void 0);
550
+ __decorate([
551
+ Property('遮罩颜色', {
552
+ ui: { widget: 'myColor' },
553
+ example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],
554
+ }),
555
+ __metadata("design:type", Object)
556
+ ], CustomBaiduMapComponent.prototype, "shadeColor", void 0);
557
+ __decorate([
558
+ Property('背景颜色', {
559
+ ui: { widget: 'myColor' },
560
+ example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],
561
+ }),
562
+ __metadata("design:type", String)
563
+ ], CustomBaiduMapComponent.prototype, "mapBackColor", void 0);
564
+ __decorate([
565
+ Property('多边线色', {
566
+ ui: { widget: 'myColor' },
567
+ example: ['#ffffff', '#F5A623', '#F8E71C', '#50E3C2', '#3285FF', '#B45FFF', '#9B9B9B', null],
568
+ }),
569
+ __metadata("design:type", Object)
570
+ ], CustomBaiduMapComponent.prototype, "mapCityColor", void 0);
571
+ __decorate([
572
+ Property('地图缩放', {
573
+ ui: { widget: 'myRange', min: 1, max: 40, step: 1 },
574
+ }),
575
+ __metadata("design:type", Object)
576
+ ], CustomBaiduMapComponent.prototype, "zoom", void 0);
577
+ __decorate([
578
+ Property('遮罩透明', { type: 'number' }),
579
+ __metadata("design:type", Object)
580
+ ], CustomBaiduMapComponent.prototype, "fillOpacity", void 0);
581
+ __decorate([
582
+ Property('多边线粗', { type: 'number' }),
583
+ __metadata("design:type", Object)
584
+ ], CustomBaiduMapComponent.prototype, "strokesize", void 0);
585
+ __decorate([
586
+ Property('黑夜模式', { type: 'boolean', ui: { hidden: true } }),
587
+ __metadata("design:type", Object)
588
+ ], CustomBaiduMapComponent.prototype, "nightMode", void 0);
589
+ __decorate([
590
+ Property('3D视角'),
591
+ __metadata("design:type", Boolean)
592
+ ], CustomBaiduMapComponent.prototype, "enable3D", void 0);
593
+ __decorate([
594
+ Property('定位控件'),
595
+ __metadata("design:type", Boolean)
596
+ ], CustomBaiduMapComponent.prototype, "showLocationControl", void 0);
597
+ __decorate([
598
+ Property('初始角度', { type: 'number', ui: { visibleIf: { enable3D: [true] } } }),
599
+ __metadata("design:type", Object)
600
+ ], CustomBaiduMapComponent.prototype, "tilt", void 0);
601
+ __decorate([
602
+ Property('显示省市', {
603
+ ui: {
604
+ widget: 'myUrlSelect',
605
+ allowClear: true,
606
+ url: '/assets/mapListItem.json',
607
+ },
608
+ }),
609
+ __metadata("design:type", Object)
610
+ ], CustomBaiduMapComponent.prototype, "cityName", void 0);
611
+ __decorate([
612
+ Data({
613
+ properties: {
614
+ lng: { type: 'number', title: '经度' },
615
+ lat: { type: 'number', title: '纬度' },
616
+ },
617
+ }),
618
+ __metadata("design:type", Array)
619
+ ], CustomBaiduMapComponent.prototype, "_data", void 0);
620
+ __decorate([
621
+ DataOutput(['lng', 'lat']),
622
+ Event('中心点改变', {
623
+ params: { properties: { lng: { title: '经度', type: 'number' }, lat: { title: '纬度', type: 'number' } } },
624
+ }),
625
+ __metadata("design:type", Object)
626
+ ], CustomBaiduMapComponent.prototype, "dataChange", void 0);
627
+ __decorate([
628
+ DataOutput('缩放等级'),
629
+ Event('缩放', {
630
+ params: '缩放等级',
631
+ }),
632
+ __metadata("design:type", Object)
633
+ ], CustomBaiduMapComponent.prototype, "zoomChange", void 0);
634
+ __decorate([
635
+ Event('地图点击', {
636
+ params: { properties: { lng: { title: '经度', type: 'number' }, lat: { title: '纬度', type: 'number' } } },
637
+ }),
638
+ __metadata("design:type", Object)
639
+ ], CustomBaiduMapComponent.prototype, "mapClick", void 0);
640
+ CustomBaiduMapComponent = __decorate([
641
+ Widget('百度地图', {
642
+ group: 'component',
643
+ image: 'assets/img/screen/my-baidu-map.png',
644
+ children: [
645
+ {
646
+ title: '标记层',
647
+ type: 'sc-baidu-marker-layer',
648
+ option: {},
649
+ hidden: true,
650
+ hideChild: true,
651
+ },
652
+ ],
653
+ childTypes: ['sc-baidu-marker-layer', 'sc-baidu-polyline-layer', 'sc-wind-layer', 'sc-typhoon-area-layer'],
654
+ description: 'hasChildItem',
655
+ }),
656
+ __metadata("design:paramtypes", [BaiduMapService,
657
+ HttpClient,
658
+ ElementRef,
659
+ NgZone,
660
+ ScaleSubject,
661
+ ChangeDetectorRef,
662
+ WidgetRef])
663
+ ], CustomBaiduMapComponent);
664
+ export { CustomBaiduMapComponent };
665
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLWJhaWR1LW1hcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY3JlZW4td2lkZ2V0L3NyYy9saWIvY3VzdG9tLWJhaWR1LW1hcC9jdXN0b20tYmFpZHUtbWFwLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFFTCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBRVosV0FBVyxFQUdYLE1BQU0sRUFJTixRQUFRLEVBRVIsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzVFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQVd6RCxNQUFNLFdBQVcsR0FBRztJQUNsQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtJQUNoQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtJQUM5QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTtJQUNuQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtDQUNsQyxDQUFDO0lBcUJXLHVCQUF1QixTQUF2Qix1QkFBdUI7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dUJBQXVCO2dCQUM3QixNQUFNLEVBQUUsRUFBRTtnQkFDVixNQUFNLEVBQUUsSUFBSTtnQkFDWixTQUFTLEVBQUUsSUFBSTthQUNoQjtTQUNGO1FBQ0QsVUFBVSxFQUFFLENBQUMsdUJBQXVCLEVBQUUseUJBQXlCLEVBQUUsZUFBZSxFQUFFLHVCQUF1QixDQUFDO1FBQzFHLFdBQVcsRUFBRSxjQUFjO0tBQ3JCLENBQUM7cUNBZ0xvQixlQUFlO1FBQzFCLFVBQVU7UUFDSixVQUFVO1FBQ2hCLE1BQU07UUFDUSxZQUFZO1FBQzVCLGlCQUFpQjtRQUNWLFNBQVM7R0FyTG5CLHVCQUF1QixDQXVrQm5DO1NBdmtCWSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIEhvc3RCaW5kaW5nLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbmplY3QsXHJcbiAgTmdab25lLFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgU2NhbGVTdWJqZWN0LCBUZW1wbGF0ZVV0aWwsIFdpZGdldFJlZiB9IGZyb20gJ2Jiai13aWRnZXQtYmFzZSc7XHJcbmltcG9ydCB7IERhdGEsIERhdGFPdXRwdXQsIFByb3BlcnR5LCBXaWRnZXQsIEV2ZW50IH0gZnJvbSAnYmJqLXdpZGdldC1iYXNlJztcclxuaW1wb3J0IHsgQmFpZHVNYXBTZXJ2aWNlIH0gZnJvbSAnYmJqLXNjcmVlbi13aWRnZXQvY29yZSc7XHJcblxyXG4vLyBkZWNsYXJlIGNvbnN0IEJNYXA7XHJcbmRlY2xhcmUgY29uc3QgQk1hcEdMOiBhbnk7XHJcbi8vIGRlY2xhcmUgY29uc3QgQk1hcEdMTGliO1xyXG4vLyBkZWNsYXJlIGNvbnN0IEJNYXBMaWI7XHJcbi8vIGRlY2xhcmUgY29uc3QgQk1BUF9BTkNIT1JfQk9UVE9NX0xFRlQ6IG51bWJlcjtcclxuZGVjbGFyZSBjb25zdCBCTUFQX0FOQ0hPUl9UT1BfTEVGVDogbnVtYmVyO1xyXG5kZWNsYXJlIGNvbnN0IG1hcHZnbDogYW55O1xyXG5kZWNsYXJlIGNvbnN0IEJNQVBfU0FURUxMSVRFX01BUDogbnVtYmVyO1xyXG5kZWNsYXJlIGNvbnN0IEJNQVBfTk9STUFMX01BUDogbnVtYmVyO1xyXG5jb25zdCBNYXBUeXBlRW51bSA9IFtcclxuICB7IGxhYmVsOiAn5pmu6YCaJywgdmFsdWU6ICdub3JtYWwnIH0sXHJcbiAgeyBsYWJlbDogJ+a3seiJsicsIHZhbHVlOiAnZGFyaycgfSxcclxuICB7IGxhYmVsOiAn5Y2r5pifJywgdmFsdWU6ICdzYXRlbGxpdGUnIH0sXHJcbiAgeyBsYWJlbDogJ+iHquWumuS5iScsIHZhbHVlOiAnY3VzdG9tJyB9LFxyXG5dO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NjLWN1c3RvbS1iYWlkdS1tYXAnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b20tYmFpZHUtbWFwLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jdXN0b20tYmFpZHUtbWFwLmNvbXBvbmVudC5sZXNzJ10sXHJcbn0pXHJcbkBXaWRnZXQoJ+eZvuW6puWcsOWbvicsIHtcclxuICBncm91cDogJ2NvbXBvbmVudCcsXHJcbiAgaW1hZ2U6ICdhc3NldHMvaW1nL3NjcmVlbi9teS1iYWlkdS1tYXAucG5nJyxcclxuICBjaGlsZHJlbjogW1xyXG4gICAge1xyXG4gICAgICB0aXRsZTogJ+agh+iusOWxgicsXHJcbiAgICAgIHR5cGU6ICdzYy1iYWlkdS1tYXJrZXItbGF5ZXInLFxyXG4gICAgICBvcHRpb246IHt9LFxyXG4gICAgICBoaWRkZW46IHRydWUsXHJcbiAgICAgIGhpZGVDaGlsZDogdHJ1ZSxcclxuICAgIH0sXHJcbiAgXSxcclxuICBjaGlsZFR5cGVzOiBbJ3NjLWJhaWR1LW1hcmtlci1sYXllcicsICdzYy1iYWlkdS1wb2x5bGluZS1sYXllcicsICdzYy13aW5kLWxheWVyJywgJ3NjLXR5cGhvb24tYXJlYS1sYXllciddLFxyXG4gIGRlc2NyaXB0aW9uOiAnaGFzQ2hpbGRJdGVtJyxcclxufSBhcyBhbnkpXHJcbmV4cG9ydCBjbGFzcyBDdXN0b21CYWlkdU1hcENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xyXG4gIC8vIEBQcm9wZXJ0eSgn5a2X5L2TJywgeyB1aTogeyB3aWRnZXQ6ICdteUZvbnQnIH0gfSlcclxuICAvLyBmb250OiBhbnkgPSB7XHJcbiAgLy8gICBmYW1pbHk6ICcnLFxyXG4gIC8vICAgY29sb3I6ICcjMDAwMDAwJyxcclxuICAvLyAgIHdlaWdodDogJ25vcm1hbCcsXHJcbiAgLy8gICBzaXplOiAxNixcclxuICAvLyAgIHNwYWNlOiAwLFxyXG4gIC8vICAgbGluZUhlaWdodDogMCxcclxuICAvLyB9O1xyXG4gIEBQcm9wZXJ0eSgn5Zyw5Zu+57G75Z6LJywge1xyXG4gICAgZW51bTogTWFwVHlwZUVudW0sXHJcbiAgfSlcclxuICBtYXBUeXBlID0gJ25vcm1hbCc7XHJcbiAgbWFwVHlwZVZhbHVlOiBzdHJpbmc7XHJcbiAgQFByb3BlcnR5KCfkuIrkvKDmoLflvI8nLCB7IHR5cGU6ICdzdHJpbmcnLCB1aTogeyB3aWRnZXQ6ICdteVVwbG9hZEF1ZGlvJywgdmlzaWJsZUlmOiB7IG1hcFR5cGU6IFsnY3VzdG9tJ10gfSB9IH0pXHJcbiAgdXBsb2FkU3R5bGU6IHN0cmluZztcclxuICBAUHJvcGVydHkoJ+WIh+aNouaMiemSricpXHJcbiAgc2hvd01hcFR5cGVSYWRpbzogYm9vbGVhbjtcclxuICBAUHJvcGVydHkoJ+WFqOaZr+WcsOWbvicsIHsgdHlwZTogJ2Jvb2xlYW4nIH0pXHJcbiAgbWluTWFwU2hvdyA9IGZhbHNlO1xyXG4gIEBQcm9wZXJ0eSgn5pi+56S65L+h5oGvJywge1xyXG4gICAgdWk6IHsgd2lkZ2V0OiAnc2VsZWN0JyB9LFxyXG4gICAgZW51bTogW1xyXG4gICAgICB7IGxhYmVsOiAn54K55Ye7JywgdmFsdWU6ICdjbGljaycgfSxcclxuICAgICAgeyBsYWJlbDogJ+aCrOWBnCcsIHZhbHVlOiAnbW91c2VvdmVyJyB9LFxyXG4gICAgXSxcclxuICB9KVxyXG4gIHNob3dUeXBlID0gJ2NsaWNrJztcclxuICBAUHJvcGVydHkoJ+S/oeaBr+eql+iDjOaZrycsIHsgdWk6IHsgd2lkZ2V0OiAnbXlDb2xvcicgfSB9KVxyXG4gIGluZm9XaW5kb3dCYWNrZ3JvdW5kOiBzdHJpbmc7XHJcbiAgQFByb3BlcnR5KCfkv6Hmga/nqpflrZfkvZMnLCB7IHVpOiB7IHdpZGdldDogJ215Q29sb3InIH0gfSlcclxuICBpbmZvV2luZG93Q29sb3I6IHN0cmluZztcclxuICBAUHJvcGVydHkoJ+S/oeaBr+eql+WuveW6picpXHJcbiAgaW5mb1dpbmRvd1dpZHRoOiBudW1iZXI7XHJcbiAgQFByb3BlcnR5KCfkv6Hmga/nqpfpq5jluqYnKVxyXG4gIGluZm9XaW5kb3dIZWlnaHQ6IG51bWJlcjtcclxuICBAUHJvcGVydHkoJ+S/oeaBr+eql+aooeadvycsIHsgdWk6IHsgd2lkZ2V0OiAndGV4dGFyZWEnIH0gfSlcclxuICBpbmZvV2luZG93VGVtcGxhdGU6IHN0cmluZztcclxuICBAUHJvcGVydHkoJ+makOiXj+WwluinkicpXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oaWRlSW5mb1dpbmRvd1RhaWwnKVxyXG4gIGhpZGVJbmZvV2luZG93VGFpbDogYm9vbGVhbjtcclxuICBAUHJvcGVydHkoJ+makOiXj+WFs+mXreaMiemSricpXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oaWRlSW5mb1dpbmRvd1RvcCcpXHJcbiAgaGlkZUluZm9XaW5kb3dUb3A6IGJvb2xlYW47XHJcbiAgQFByb3BlcnR5KCflnLDlm77mi5bliqgnLCB7IHR5cGU6ICdib29sZWFuJyB9KVxyXG4gIGRyYWdnaW5nID0gdHJ1ZTtcclxuXHJcbiAgQFByb3BlcnR5KCfpga7nvanpopzoibInLCB7XHJcbiAgICB1aTogeyB3aWRnZXQ6ICdteUNvbG9yJyB9LFxyXG4gICAgZXhhbXBsZTogWycjZmZmZmZmJywgJyNGNUE2MjMnLCAnI0Y4RTcxQycsICcjNTBFM0MyJywgJyMzMjg1RkYnLCAnI0I0NUZGRicsICcjOUI5QjlCJywgbnVsbF0sXHJcbiAgfSlcclxuICBzaGFkZUNvbG9yID0gJyMwMDQzOTUnO1xyXG4gIEBQcm9wZXJ0eSgn6IOM5pmv6aKc6ImyJywge1xyXG4gICAgdWk6IHsgd2lkZ2V0OiAnbXlDb2xvcicgfSxcclxuICAgIGV4YW1wbGU6IFsnI2ZmZmZmZicsICcjRjVBNjIzJywgJyNGOEU3MUMnLCAnIzUwRTNDMicsICcjMzI4NUZGJywgJyNCNDVGRkYnLCAnIzlCOUI5QicsIG51bGxdLFxyXG4gIH0pXHJcbiAgbWFwQmFja0NvbG9yOiBzdHJpbmc7XHJcblxyXG4gIEBQcm9wZXJ0eSgn5aSa6L6557q/6ImyJywge1xyXG4gICAgdWk6IHsgd2lkZ2V0OiAnbXlDb2xvcicgfSxcclxuICAgIGV4YW1wbGU6IFsnI2ZmZmZmZicsICcjRjVBNjIzJywgJyNGOEU3MUMnLCAnIzUwRTNDMicsICcjMzI4NUZGJywgJyNCNDVGRkYnLCAnIzlCOUI5QicsIG51bGxdLFxyXG4gIH0pXHJcbiAgbWFwQ2l0eUNvbG9yID0gJyM0MWI3ZmYnO1xyXG4gIEBQcm9wZXJ0eSgn5Zyw5Zu+57yp5pS+Jywge1xyXG4gICAgdWk6IHsgd2lkZ2V0OiAnbXlSYW5nZScsIG1pbjogMSwgbWF4OiA0MCwgc3RlcDogMSB9LFxyXG4gIH0pXHJcbiAgem9vbSA9IDEyO1xyXG4gIC8vIEBQcm9wZXJ0eSgn5pS+5aSn5q+U5L6LJywgeyB0eXBlOiAnbnVtYmVyJyB9KVxyXG4gIC8vIHNjYWxlID0gMTtcclxuICBAUHJvcGVydHkoJ+mBrue9qemAj+aYjicsIHsgdHlwZTogJ251bWJlcicgfSlcclxuICBmaWxsT3BhY2l0eSA9IDA7XHJcbiAgQFByb3BlcnR5KCflpJrovrnnur/nspcnLCB7IHR5cGU6ICdudW1iZXInIH0pXHJcbiAgc3Ryb2tlc2l6ZSA9IDI7XHJcbiAgQFByb3BlcnR5KCfpu5HlpJzmqKHlvI8nLCB7IHR5cGU6ICdib29sZWFuJywgdWk6IHsgaGlkZGVuOiB0cnVlIH0gfSlcclxuICBuaWdodE1vZGUgPSBmYWxzZTtcclxuICBAUHJvcGVydHkoJzNE6KeG6KeSJylcclxuICBlbmFibGUzRDogYm9vbGVhbjtcclxuICBAUHJvcGVydHkoJ+WumuS9jeaOp+S7ticpXHJcbiAgc2hvd0xvY2F0aW9uQ29udHJvbDogYm9vbGVhbjtcclxuICBAUHJvcGVydHkoJ+WIneWni+inkuW6picsIHsgdHlwZTogJ251bWJlcicsIHVpOiB7IHZpc2libGVJZjogeyBlbmFibGUzRDogW3RydWVdIH0gfSB9KVxyXG4gIHRpbHQgPSA3MztcclxuICAvLyBAUHJvcGVydHkoJ+S4reW/g+e7j+W6picsIHtcclxuICAvLyAgIHVpOiB7d2lkZ2V0OiAnbXlSYW5nZScsIG1pbjogLTE4MCwgbWF4OiAxODAsIHN0ZXA6IDF9LFxyXG4gIC8vIH0pXHJcbiAgY2VudGVyTG5nID0gMTIwLjc7XHJcbiAgLy8gQFByb3BlcnR5KCfkuK3lv4PnuqzluqYnLCB7XHJcbiAgLy8gICB1aToge3dpZGdldDogJ215UmFuZ2UnLCBtaW46IC05MCwgbWF4OiA5MCwgc3RlcDogMX0sXHJcbiAgLy8gfSlcclxuICBjZW50ZXJMYXQgPSAyODtcclxuICBAUHJvcGVydHkoJ+aYvuekuuecgeW4gicsIHtcclxuICAgIHVpOiB7XHJcbiAgICAgIHdpZGdldDogJ215VXJsU2VsZWN0JyxcclxuICAgICAgYWxsb3dDbGVhcjogdHJ1ZSxcclxuICAgICAgdXJsOiAnL2Fzc2V0cy9tYXBMaXN0SXRlbS5qc29uJyxcclxuICAgIH0sXHJcbiAgfSlcclxuICBjaXR5TmFtZSA9IG51bGw7XHJcbiAgcG9pbnQ6IGFueTtcclxuXHJcbiAgLy8gX2RhdGEgPSBbXHJcbiAgLy8gICB7XHJcbiAgLy8gICAgIG9wdGlvbnM6IHtcclxuICAvLyAgICAgICBpY29uOiB7XHJcbiAgLy8gICAgICAgICBpbWFnZVVybDogJ2Fzc2V0cy9pbWcvc2NyZWVuL251bWJlci1mbG9wLnBuZycsXHJcbiAgLy8gICAgICAgICBzaXplOiB7XHJcbiAgLy8gICAgICAgICAgIGhlaWdodDogMjYwLFxyXG4gIC8vICAgICAgICAgICB3aWR0aDogMjUwXHJcbiAgLy8gICAgICAgICB9XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9LFxyXG4gIC8vICAgICBwb2ludDoge1xyXG4gIC8vICAgICAgIGxuZzogMTIwLjcsICAgLy8g57uP5bqmXHJcbiAgLy8gICAgICAgbGF0OiAyOCwgICAgLy8g57qs5bqmXHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0sXHJcbiAgLy8gXTtcclxuICAvLyDmloflrZfmoIfms6hcclxuXHJcbiAgcHVibGljIHRleHQ6IHN0cmluZztcclxuICAvLyBfY2hpbGRyZW4gPSBbXTtcclxuICB0eXBlOiBzdHJpbmc7XHJcbiAgbWFwOiBhbnk7XHJcbiAgZWRpdDogYm9vbGVhbjtcclxuICAvLyBtYXJrZXJUaWVyQ2xpY2s6IGFueTtcclxuICAvLyBwaW5neWFuZyA9ICcnO1xyXG4gIC8vIHJ1aWFuID0gJyc7XHJcbiAgQERhdGEoe1xyXG4gICAgcHJvcGVydGllczoge1xyXG4gICAgICBsbmc6IHsgdHlwZTogJ251bWJlcicsIHRpdGxlOiAn57uP5bqmJyB9LFxyXG4gICAgICBsYXQ6IHsgdHlwZTogJ251bWJlcicsIHRpdGxlOiAn57qs5bqmJyB9LFxyXG4gICAgfSxcclxuICB9KVxyXG4gIF9kYXRhOiBhbnlbXSA9IFt7IGxuZzogMTIwLjcsIGxhdDogMjggfV07XHJcbiAgQERhdGFPdXRwdXQoWydsbmcnLCAnbGF0J10pXHJcbiAgQEV2ZW50KCfkuK3lv4PngrnmlLnlj5gnLCB7XHJcbiAgICBwYXJhbXM6IHsgcHJvcGVydGllczogeyBsbmc6IHsgdGl0bGU6ICfnu4/luqYnLCB0eXBlOiAnbnVtYmVyJyB9LCBsYXQ6IHsgdGl0bGU6ICfnuqzluqYnLCB0eXBlOiAnbnVtYmVyJyB9IH0gfSxcclxuICB9KVxyXG4gIGRhdGFDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgQERhdGFPdXRwdXQoJ+e8qeaUvuetiee6pycpXHJcbiAgQEV2ZW50KCfnvKnmlL4nLCB7XHJcbiAgICBwYXJhbXM6ICfnvKnmlL7nrYnnuqcnLFxyXG4gIH0pXHJcbiAgem9vbUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBFdmVudCgn5Zyw5Zu+54K55Ye7Jywge1xyXG4gICAgcGFyYW1zOiB7IHByb3BlcnRpZXM6IHsgbG5nOiB7IHRpdGxlOiAn57uP5bqmJywgdHlwZTogJ251bWJlcicgfSwgbGF0OiB7IHRpdGxlOiAn57qs5bqmJywgdHlwZTogJ251bWJlcicgfSB9IH0sXHJcbiAgfSlcclxuICBtYXBDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGNvbnRhaW5lcjogRWxlbWVudFJlZjtcclxuICBjaGlsZHJlbjogYW55W107XHJcbiAgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xyXG4gIGRlc3Ryb3llZDogYm9vbGVhbjtcclxuICAvLyBjb250YWluZXJTdHlsZTogYW55ID0ge307XHJcbiAgLy8gdW5sb2FkZWRDaGlsZHJlbiA9IHt9O1xyXG4gIG92ZXJsYXlzTWFwID0ge307XHJcblxyXG4gIC8vIEBIb3N0QmluZGluZygnY2xhc3MuaGlkZUluZm9XaW5kb3dUYWlsJylcclxuICAvLyBoaWRlSW5mb1dpbmRvd1RhaWw6IGJvb2xlYW47XHJcblxyXG4gIHByaXZhdGUgaW5pdGVkOiAobWFwOiBhbnkpID0+IHZvaWQ7XHJcbiAgaW5pdCQgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgdGhpcy5pbml0ZWQgPSByZXNvbHZlO1xyXG4gIH0pO1xyXG4gIHZpZXc6IGFueTtcclxuICBwaWNrZXJFdmVudDogYW55O1xyXG4gIHBpY2tlckl0ZW06IGFueTtcclxuICBwaWNrZXJUaW1lb3V0OiBhbnk7XHJcbiAgbWFwVHlwZUVudW0gPSBNYXBUeXBlRW51bS5zbGljZSgwLCAzKTtcclxuICBkYXJrU3R5bGU6IGFueTtcclxuICBmaXJzdE9wZW46IGJvb2xlYW47XHJcbiAgZmlyc3RPcGVuUHJvbWlzZTogUHJvbWlzZTx2b2lkPjtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYmFpZHVNYXBTZXJ2aWNlOiBCYWlkdU1hcFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICBwcml2YXRlIHpvbmU6IE5nWm9uZSxcclxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgc2NhbGUkOiBTY2FsZVN1YmplY3QsXHJcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgd2lkZ2V0UmVmOiBXaWRnZXRSZWYsXHJcbiAgKSB7fVxyXG5cclxuICBnZXQgZWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XHJcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgfVxyXG5cclxuICBhZGRMYXllcihsYXllcjogYW55KSB7XHJcbiAgICBpZiAodGhpcy52aWV3KSB7XHJcbiAgICAgIHRoaXMudmlldy5hZGRMYXllcihsYXllcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmVMYXllcihsYXllcjogYW55KSB7XHJcbiAgICBpZiAodGhpcy52aWV3KSB7XHJcbiAgICAgIHRoaXMudmlldy5yZW1vdmVMYXllcihsYXllcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlcy5fZGF0YSAmJiB0aGlzLl9kYXRhWzBdKSB7XHJcbiAgICAgIHRoaXMuY2VudGVyTG5nID0gK3RoaXMuX2RhdGFbMF0ubG5nO1xyXG4gICAgICB0aGlzLmNlbnRlckxhdCA9ICt0aGlzLl9kYXRhWzBdLmxhdDtcclxuICAgICAgdGhpcy5zZXRDZW50ZXIodGhpcy5jZW50ZXJMbmcsIHRoaXMuY2VudGVyTGF0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuc2NhbGUkKSB7XHJcbiAgICAgIC8vIOi/meaYr+S4uuS6huino+WGs+WcsOWbvue8qeaUvuS4reW/g+S4jeWcqOm8oOagh+aJgOWcqOS9jee9rueahOmXrumimFxyXG4gICAgICB0aGlzLnNjYWxlJC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChzY2FsZSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgeDogc3gsIHk6IHN5LCBzY2FsZUNvbnRlbnQgfSA9IHNjYWxlIGFzIGFueTtcclxuICAgICAgICBjb25zdCBzdHlsZSA9IHRoaXMuZWxlbWVudC5zdHlsZTtcclxuICAgICAgICBpZiAoc2NhbGVDb250ZW50ID09PSBmYWxzZSkge1xyXG4gICAgICAgICAgdGhpcy56b25lLm9uU3RhYmxlLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgcGFyZW50ID0gdGhpcy5lbGVtZW50LnBhcmVudE5vZGUgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgICAgIGlmIChwYXJlbnQpIHtcclxuICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9IC90cmFuc2xhdGVcXCgoWy1cXGQuXSspcHgsIChbLVxcZC5dKylweFxcKS8uZXhlYyhwYXJlbnQuc3R5bGUudHJhbnNmb3JtKTtcclxuICAgICAgICAgICAgICBpZiAobWF0Y2gpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG9mZnNldFggPSBwYXJzZUZsb2F0KG1hdGNoWzFdKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG9mZnNldFkgPSBwYXJzZUZsb2F0KG1hdGNoWzJdKTtcclxuICAgICAgICAgICAgICAgIHN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUoJHstb2Zmc2V0WH1weCwkey1vZmZzZXRZfXB4KWA7XHJcbiAgICAgICAgICAgICAgICBzdHlsZS5oZWlnaHQgPSBwYXJlbnQuY2xpZW50SGVpZ2h0ICsgb2Zmc2V0WSArICdweCc7XHJcbiAgICAgICAgICAgICAgICBzdHlsZS53aWR0aCA9IHBhcmVudC5jbGllbnRXaWR0aCArIG9mZnNldFggKyAncHgnO1xyXG4gICAgICAgICAgICAgICAgc3R5bGUucGFkZGluZyA9IGAke29mZnNldFl9cHggMCAwICR7b2Zmc2V0WH1weGA7XHJcbiAgICAgICAgICAgICAgICAvLyB0aGlzLmNvbnRhaW5lclN0eWxlID0ge1xyXG4gICAgICAgICAgICAgICAgLy8gICB0cmFuc2Zvcm1PcmlnaW46IGAwIDBgLFxyXG4gICAgICAgICAgICAgICAgLy8gICB0cmFuc2Zvcm06IGB0cmFuc2xhdGUoJHstb2Zmc2V0WH1weCwkey1vZmZzZXRZfXB4KWAsXHJcbiAgICAgICAgICAgICAgICAvLyAgIGhlaWdodDogcGFyZW50LmNsaWVudEhlaWdodCArIG9mZnNldFkgKyAncHgnLFxyXG4gICAgICAgICAgICAgICAgLy8gICB3aWR0aDogcGFyZW50LmNsaWVudFdpZHRoICsgb2Zmc2V0WCArICdweCcsXHJcbiAgICAgICAgICAgICAgICAvLyAgIHBhZGRpbmc6IGAke29mZnNldFl9cHggMCAwICR7b2Zmc2V0WH1weGAsXHJcbiAgICAgICAgICAgICAgICAvLyB9O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb25zdCB7IHBvc2l0aW9uLCBzaXplIH0gPSB0aGlzLndpZGdldFJlZi53aWRnZXQgYXMgYW55O1xyXG4gICAgICAgICAgY29uc3QgeyB4LCB5IH0gPSBwb3NpdGlvbjtcclxuICAgICAgICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gc2l6ZTtcclxuICAgICAgICAgIHN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUoJHsteH1weCwkey15fXB4KSBzY2FsZSgkezEgLyBzeH0sJHsxIC8gc3l9KWA7XHJcbiAgICAgICAgICBzdHlsZS5oZWlnaHQgPSAoeSArIGhlaWdodCkgKiBzeSArICdweCc7XHJcbiAgICAgICAgICBzdHlsZS53aWR0aCA9ICh4ICsgd2lkdGgpICogc3ggKyAncHgnO1xyXG4gICAgICAgICAgc3R5bGUucGFkZGluZyA9IGAke3kgKiBzeX1weCAwIDAgJHt4ICogc3h9cHhgO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBhd2FpdCB0aGlzLmluaXRNYXAoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGluaXRNYXAoKSB7XHJcbiAgICBhd2FpdCB0aGlzLmJhaWR1TWFwU2VydmljZS5sb2FkTWFwR0woKTtcclxuICAgIGF3YWl0IHRoaXMuYmFpZHVNYXBTZXJ2aWNlLmxvYWRNYXBWR0woKTtcclxuICAgIHRoaXMubWFwVHlwZVZhbHVlID0gdGhpcy5tYXBUeXBlO1xyXG4gICAgLy8g5YW85a656ICB55qE6YWN572uXHJcbiAgICBpZiAodGhpcy5tYXBUeXBlID09IG51bGwpIHtcclxuICAgICAgaWYgKHRoaXMudXBsb2FkU3R5bGUpIHtcclxuICAgICAgICB0aGlzLm1hcFR5cGVWYWx1ZSA9ICdjdXN0b20nO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMubmlnaHRNb2RlKSB7XHJcbiAgICAgICAgdGhpcy5tYXBUeXBlVmFsdWUgPSAnZGFyayc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghdGhpcy5kZXN0cm95ZWQpIHtcclxuICAgICAgdGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICB0aGlzLm1hcCA9IG5ldyBCTWFwR0wuTWFwKHRoaXMuY29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsIHsgcmVzdHJpY3RDZW50ZXI6IGZhbHNlIH0pO1xyXG4gICAgICAgIHRoaXMubWFwLmNlbnRlckFuZFpvb20obmV3IEJNYXBHTC5Qb2ludCh0aGlzLmNlbnRlckxuZywgdGhpcy5jZW50ZXJMYXQpLCB0aGlzLnpvb20pOyAvLyDorr7nva7kuK3lv4PngrnlkoznvKnmlL7nuqfliKtcclxuICAgICAgICB0aGlzLm1hcC5lbmFibGVTY3JvbGxXaGVlbFpvb20oKTsgLy8g5ZCv55So5rua6L2u6L+b6KGM57yp5pS+5Yqf6IO9XHJcbiAgICAgICAgLy8gdmFyIGRpc3QgPSBuZXcgQk1hcEdMLkRpc3RyaWN0TGF5ZXIoe1xyXG4gICAgICAgIC8vICAgbmFtZTogJyjmuKnlt57luIIpJyxcclxuICAgICAgICAvLyAgIGtpbmQ6IDEsXHJcbiAgICAgICAgLy8gICAgZmlsbENvbG9yOiAnI2ZmZicsXHJcbiAgICAgICAgLy8gICBmaWxsT3BhY2l0eTogMC4xLFxyXG4gICAgICAgIC8vICAgc3Ryb2tlQ29sb3I6ICcjZGFlYWZhJyxcclxuICAgICAgICAvLyAgIHZpZXdwb3J0OiB0cnVlLFxyXG4gICAgICAgIC8vIH0pO1xyXG4gICAgICAgIC8vIHRoaXMubWFwLmFkZERpc3RyaWN0TGF5ZXIoZGlzdCk7XHJcbiAgICAgICAgdGhpcy5tYXBUeXBlQ2hhbmdlKHRoaXMubWFwVHlwZVZhbHVlKTtcclxuICAgICAgICBpZiAodGhpcy5lZGl0IHx8IHRoaXMuZHJhZ2dpbmcgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICB0aGlzLm1hcC5kaXNhYmxlRHJhZ2dpbmcoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlM0QpIHtcclxuICAgICAgICAgIHRoaXMubWFwLnNldFRpbHQodGhpcy50aWx0ID09IG51bGwgPyA3MyA6IHRoaXMudGlsdCwgeyBub0FuaW1hdGlvbjogdHJ1ZSB9KTtcclxuICAgICAgICAgIHRoaXMubWFwLnNldERpc3BsYXlPcHRpb25zKHsgc2t5Q29sb3JzOiBbJ3JnYmEoMCwgMCwgMCwgMCknXSB9KTsgLy8g6ZqQ6JeP5aSp56m6XHJcbiAgICAgICAgICAvLyBjb25zdCBuYXZpM0RDdHJsID0gbmV3IEJNYXBHTC5OYXZpZ2F0aW9uQ29udHJvbDNEKCk7IC8vIOa3u+WKoDNE5o6n5Lu2XHJcbiAgICAgICAgICAvLyB0aGlzLm1hcC5hZGRDb250cm9sKG5hdmkzREN0cmwpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLm1hcC5kaXNhYmxlVGlsdCgpO1xyXG4gICAgICAgICAgdGhpcy5tYXAuZGlzYWJsZVJvdGF0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5zaG93TG9jYXRpb25Db250cm9sKSB7XHJcbiAgICAgICAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICAgICAgICAvLyDmjqfku7bnmoTlgZzpnaDkvY3nva7vvIjlj6/pgInvvIzpu5jorqTlt6bkuIrop5LvvIlcclxuICAgICAgICAgICAgYW5jaG9yOiBCTUFQX0FOQ0hPUl9UT1BfTEVGVCxcclxuICAgICAgICAgICAgLy8g5o6n5Lu25Z+65LqO5YGc6Z2g5L2N572u55qE5YGP56e76YeP77yI5Y+v6YCJ77yJXHJcbiAgICAgICAgICAgIG9mZnNldDogbmV3IEJNYXBHTC5TaXplKDIwLCAyMCksXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgbGV0IGxvY2F0aW9uQ29udHJvbCA9IG5ldyBCTWFwR0wuTG9jYXRpb25Db250cm9sKG9wdGlvbnMpO1xyXG4gICAgICAgICAgLy8g5bCG5o6n5Lu25re75Yqg5Yiw5Zyw5Zu+5LiKXHJcbiAgICAgICAgICB0aGlzLm1hcC5hZGRDb250cm9sKGxvY2F0aW9uQ29udHJvbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLm1pbk1hcFNob3cpIHtcclxuICAgICAgICAgIGNvbnN0IHN0Q3RybCA9IG5ldyBCTWFwR0wuUGFub3JhbWFDb250cm9sKCk7XHJcbiAgICAgICAgICBzdEN0cmwuc2V0T2Zmc2V0KG5ldyBCTWFwR0wuU2l6ZSgyMCwgMjApKTtcclxuICAgICAgICAgIHRoaXMubWFwLmFkZENvbnRyb2woc3RDdHJsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuaW5mb1dpbmRvd0JhY2tncm91bmQpIHtcclxuICAgICAgICAgIHRoaXMuZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1pbmZvLXdpbmRvdy1iYWNrZ3JvdW5kJywgdGhpcy5pbmZvV2luZG93QmFja2dyb3VuZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmluZm9XaW5kb3dDb2xvcikge1xyXG4gICAgICAgICAgdGhpcy5lbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWluZm8td2luZG93LWNvbG9yJywgdGhpcy5pbmZvV2luZG93Q29sb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLm1hcC5hZGRFdmVudExpc3RlbmVyKCdtb3ZlZW5kJywgKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBjZW50ZXIgPSB0aGlzLm1hcC5nZXRDZW50ZXIoKTtcclxuICAgICAgICAgIHRoaXMuZGF0YUNoYW5nZS5lbWl0KGNlbnRlcik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5tYXAuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZXZlbnQpID0+IHtcclxuICAgICAgICAgIHRoaXMubWFwQ2xpY2suZW1pdChldmVudC5wb2ludGVyKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLm1hcC5hZGRFdmVudExpc3RlbmVyKCd6b29tZW5kJywgKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnpvb21DaGFuZ2UuZW1pdCh0aGlzLm1hcC5nZXRab29tKCkpO1xyXG4gICAgICAgICAgdGhpcy5kYXRhQ2hhbmdlLmVtaXQodGhpcy5tYXAuZ2V0Q2VudGVyKCkpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMudmlldyA9IG5ldyBtYXB2Z2wuVmlldyh7XHJcbiAgICAgICAgICBtYXA6IHRoaXMubWFwLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMubWFwTG9hZGVkKHRoaXMubWFwKTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuaW5pdGVkKHRoaXMubWFwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldENlbnRlcihsbmc6IG51bWJlciwgbGF0OiBudW1iZXIpIHtcclxuICAgIGlmICh0aGlzLm1hcCAmJiBsbmcgJiYgbGF0KSB7XHJcbiAgICAgIGNvbnN0IGNlbnRlciA9IHRoaXMubWFwLmdldENlbnRlcigpO1xyXG4gICAgICBpZiAoY2VudGVyLmxuZyAhPSBsbmcgfHwgY2VudGVyLmxhdCAhPSBsYXQpIHtcclxuICAgICAgICB0aGlzLnNldENlbnRlckFuZFpvb20obG5nLCBsYXQsIHRoaXMubWFwLmdldFpvb20oKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldENlbnRlckFuZFpvb20obG5nOiBudW1iZXIsIGxhdDogbnVtYmVyLCB6b29tOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGNlbnRlciA9IHRoaXMubWFwLmdldENlbnRlcigpO1xyXG4gICAgY29uc3QgY3VycmVudFpvb20gPSB0aGlzLm1hcC5nZXRab29tKCk7XHJcbiAgICAvLyDor6/lt67ojIPlm7TlhoXkuI3np7vliqgs6Ziy5q2i6IOM5pmv5oqW5YqoXHJcbiAgICBpZiAoem9vbSAhPSBjdXJyZW50Wm9vbSB8fCBNYXRoLmFicyhsbmcgLSBjZW50ZXIubG5nKSA+IDFlLTEzIHx8IE1hdGguYWJzKGxhdCAtIGNlbnRlci5sYXQpID4gMWUtNykge1xyXG4gICAgICBjb25zdCBwb2ludCA9IG5ldyBCTWFwR0wuUG9pbnQobG5nLCBsYXQpO1xyXG4gICAgICB0aGlzLm1hcC5jZW50ZXJBbmRab29tKHBvaW50LCB6b29tLCB7IHRpbHQ6IHRoaXMubWFwLmdldFRpbHQoKSB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOagueaNrue7j+e6rOW6puiMg+WbtOiuvue9ruS4reW/g+WSjOe8qeaUvuetiee6p1xyXG4gICAqIEBwYXJhbSBtaW5MbmdcclxuICAgKiBAcGFyYW0gbWF4TG5nXHJcbiAgICogQHBhcmFtIG1pbkxhdFxyXG4gICAqIEBwYXJhbSBtYXhMYXRcclxuICAgKi9cclxuICBzZXRSZWN0Q2VudGVyQW5kWm9vbShtaW5Mbmc6IG51bWJlciwgbWF4TG5nOiBudW1iZXIsIG1pbkxhdDogbnVtYmVyLCBtYXhMYXQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5zZXRDZW50ZXJBbmRab29tKChtYXhMbmcgKyBtaW5MbmcpIC8gMiwgKG1heExhdCArIG1pbkxhdCkgLyAyLCB0aGlzLmdldFpvb20obWF4TG5nLCBtaW5MbmcsIG1heExhdCwgbWluTGF0KSk7XHJcbiAgfVxyXG5cclxuICBnZXRab29tKG1heExuZzogbnVtYmVyLCBtaW5Mbmc6IG51bWJlciwgbWF4TGF0OiBudW1iZXIsIG1pbkxhdDogbnVtYmVyKSB7XHJcbiAgICBjb25zdCB6b29tcyA9IFtcclxuICAgICAgNTAsIDEwMCwgMjAwLCA1MDAsIDEwMDAsIDIwMDAsIDUwMDAsIDEwMDAwLCAyMDAwMCwgMjUwMDAsIDUwMDAwLCAxMDAwMDAsIDIwMDAwMCwgNTAwMDAwLCAxMDAwMDAwLCAyMDAwMDAwLFxyXG4gICAgXTsgLy/nuqfliKsxOOWIsDPjgIJcclxuICAgIGNvbnN0IHBvaW50QSA9IG5ldyBCTWFwR0wuUG9pbnQobWF4TG5nLCBtYXhMYXQpOyAvLyDliJvlu7rngrnlnZDmoIdBXHJcbiAgICBjb25zdCBwb2ludEIgPSBuZXcgQk1hcEdMLlBvaW50KG1pbkxuZywgbWluTGF0KTsgLy8g5Yib5bu654K55Z2Q5qCHQlxyXG4gICAgY29uc3QgZGlzdGFuY2UgPSArdGhpcy5tYXAuZ2V0RGlzdGFuY2UocG9pbnRBLCBwb2ludEIpLnRvRml4ZWQoMSk7IC8v6I635Y+W5Lik54K56Led56a7LOS/neeVmeWwj+aVsOeCueWQjuS4pOS9jVxyXG4gICAgY29uc3QgaSA9IHpvb21zLmZpbmRJbmRleCgoem9vbSkgPT4gem9vbSAtIGRpc3RhbmNlID4gMCk7XHJcbiAgICBpZiAoaSA9PT0gLTEpIHtcclxuICAgICAgcmV0dXJuIDU7XHJcbiAgICB9XHJcbiAgICAvL+S5i+aJgOS7peS8muWkmjPvvIzmmK/lm6DkuLrlnLDlm77ojIPlm7TluLjluLjmmK/mr5TkvovlsLrot53nprvnmoQxMOWAjeS7peS4iuOAguaJgOS7pee6p+WIq+S8muWinuWKoDPjgIJcclxuICAgIHJldHVybiAxOCAtIGkgKyAzO1xyXG4gIH1cclxuXHJcbiAgb3BlbkluZm9XaW5kb3coZGF0YTogYW55LCBsbmc6IG51bWJlciwgbGF0OiBudW1iZXIpIHtcclxuICAgIGlmIChkYXRhLmluZm9ybWF0aW9uIHx8IHRoaXMuaW5mb1dpbmRvd1RlbXBsYXRlKSB7XHJcbiAgICAgIGNvbnN0IHBvaW50ID0gbmV3IEJNYXBHTC5Qb2ludCgrbG5nLCArbGF0KTtcclxuICAgICAgLy8gbGV0IG9mZnNldFkgPSAtMjU7XHJcbiAgICAgIC8vIGlmICh0aGlzLmhpZGVJbmZvV2luZG93VGFpbCkge1xyXG4gICAgICAvLyAgIG9mZnNldFkgPSAwO1xyXG4gICAgICAvLyB9XHJcbiAgICAgIGxldCBpbmZvcm1hdGlvbiA9IGRhdGEuaW5mb3JtYXRpb247XHJcbiAgICAgIGlmICh0aGlzLmluZm9XaW5kb3dUZW1wbGF0ZSkge1xyXG4gICAgICAgIGluZm9ybWF0aW9uID0gVGVtcGxhdGVVdGlsLnBhcnNlKHRoaXMuaW5mb1dpbmRvd1RlbXBsYXRlLCBkYXRhKTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICAgIG9mZnNldDogbmV3IEJNYXBHTC5TaXplKDAsIDApLFxyXG4gICAgICAgIHdpZHRoOiB0aGlzLmluZm9XaW5kb3dXaWR0aCB8fCAwLFxyXG4gICAgICAgIGhlaWdodDogdGhpcy5pbmZvV2luZG93SGVpZ2h0IHx8IDAsXHJcbiAgICAgIH07XHJcbiAgICAgIGNvbnN0IGluZm9XaW5kb3cgPSBuZXcgQk1hcEdMLkluZm9XaW5kb3coaW5mb3JtYXRpb24sIG9wdGlvbnMpO1xyXG4gICAgICAvLyDnrKzkuIDmrKHmiZPlvIDkv6Hmga/nqpflj6PlkI7lnKjnn63ml7bpl7TlhbPpl63miJbph43mlrDmiZPlvIDkvJrlr7zoh7RjbGlja+S6i+S7tuWkseaViO+8jOS4tOaXtuino+WGs+aWueahiOaYr+esrOS4gOasoeaJk+W8gOWQjjAuNeenkuWGheS4jeWFs+mXrVxyXG4gICAgICBpZiAoIXRoaXMuZmlyc3RPcGVuKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZmlyc3RPcGVuUHJvbWlzZSkge1xyXG4gICAgICAgICAgdGhpcy5maXJzdE9wZW5Qcm9taXNlLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm1hcC5vcGVuSW5mb1dpbmRvdyhpbmZvV2luZG93LCBwb2ludCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5maXJzdE9wZW5Qcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5maXJzdE9wZW4gPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuZmlyc3RPcGVuUHJvbWlzZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICB9LCA1MDApO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLm1hcC5vcGVuSW5mb1dpbmRvdyhpbmZvV2luZG93LCBwb2ludCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHJhd0Nsb3NlID0gaW5mb1dpbmRvdy5jbG9zZTtcclxuICAgICAgICBpbmZvV2luZG93LmNsb3NlID0gKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZmlyc3RPcGVuUHJvbWlzZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZpcnN0T3BlblByb21pc2UudGhlbigoKSA9PiByYXdDbG9zZS5jYWxsKGluZm9XaW5kb3cpKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJhd0Nsb3NlLmNhbGwoaW5mb1dpbmRvdyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm1hcC5vcGVuSW5mb1dpbmRvdyhpbmZvV2luZG93LCBwb2ludCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIGluZm9XaW5kb3c7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRDYW52YXNPdmVybGF5KGNoaWxkOiBhbnkpIHtcclxuICAgIGxldCBjYW52YXNPdmVybGF5O1xyXG4gICAgaWYgKHRoaXMuZW5hYmxlM0QpIHtcclxuICAgICAgY29uc3QgaXRlbSA9IGNoaWxkLml0ZW07XHJcbiAgICAgIGlmIChpdGVtKSB7XHJcbiAgICAgICAgdmFyIHBTdGFydCA9IG5ldyBCTWFwR0wuUG9pbnQoaXRlbS5zdGFydC5sbmcsIGl0ZW0uc3RhcnQubGF0KTtcclxuICAgICAgICB2YXIgcEVuZCA9IG5ldyBCTWFwR0wuUG9pbnQoaXRlbS5lbmQubG5nLCBpdGVtLmVuZC5sYXQpO1xyXG4gICAgICAgIHZhciBib3VuZHMgPSBuZXcgQk1hcEdMLkJvdW5kcyhuZXcgQk1hcEdMLlBvaW50KHBTdGFydC5sbmcsIHBFbmQubGF0KSwgbmV3IEJNYXBHTC5Qb2ludChwRW5kLmxuZywgcFN0YXJ0LmxhdCkpO1xyXG4gICAgICAgIGNhbnZhc092ZXJsYXkgPSBuZXcgQk1hcEdMLkdyb3VuZE92ZXJsYXkoYm91bmRzLCB7XHJcbiAgICAgICAgICB0eXBlOiAnY2FudmFzJyxcclxuICAgICAgICAgIHVybDogaXRlbS5jYW52YXMsXHJcbiAgICAgICAgICBvcGFjaXR5OiAxLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBwb2ludFRvUGl4ZWwgPSAoZGF0YSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHBvaW50ID0gbmV3IEJNYXBHTC5Qb2ludChkYXRhLmxuZywgZGF0YS5sYXQpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLm1hcC5wb2ludFRvUGl4ZWwocG9pbnQpO1xyXG4gICAgICB9O1xyXG4gICAgICBjYW52YXNPdmVybGF5ID0gbmV3IEJNYXBHTC5DYW52YXNMYXllcih7XHJcbiAgICAgICAgcGFuZU5hbWU6ICdtYXJrZXJTaGFkb3cnLFxyXG4gICAgICAgIHVwZGF0ZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgdmFyIGN0eCA9IHRoaXMuY2FudmFzLmdldENvbnRleHQoJzJkJyk7XHJcbiAgICAgICAgICBpZiAoIWN0eCkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjdHguY2xlYXJSZWN0KDAsIDAsIGN0eC5jYW52YXMud2lkdGgsIGN0eC5jYW52YXMuaGVpZ2h0KTtcclxuICAgICAgICAgIGNoaWxkLnVwZGF0ZShjdHgsIHBvaW50VG9QaXhlbCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gY2FudmFzT3ZlcmxheTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLmRlc3Ryb3llZCA9IHRydWU7XHJcbiAgICBpZiAodGhpcy52aWV3KSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgdGhpcy52aWV3LmRlc3Ryb3koKTtcclxuICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1hcCkge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHRoaXMubWFwLmRlc3Ryb3koKTtcclxuICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIG1hcExvYWRlZChtYXA6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuY2l0eU5hbWUpIHtcclxuICAgICAgaWYgKHRoaXMuY2l0eU5hbWUgPT09ICfmuKnlt54nKSB7XHJcbiAgICAgICAgdGhpcy5jaXR5TmFtZSA9ICd3ZW56aG91JztcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBqc29uOiBhbnkgPSBhd2FpdCB0aGlzLmh0dHAuZ2V0KCdhc3NldHMvZWNoYXJ0cy9tYXAvanNvbi8nICsgdGhpcy5jaXR5TmFtZSArICcuanNvbicpLnRvUHJvbWlzZSgpO1xyXG4gICAgICBjb25zdCBwb2x5Z29uRGF0YSA9IFtdO1xyXG4gICAgICBsZXQgZW5jb2RlU2NhbGUgPSBqc29uLlVURjhTY2FsZSB8fCAxMDI0O1xyXG4gICAgICBqc29uLmZlYXR1cmVzLmZvckVhY2goKHsgZ2VvbWV0cnkgfSkgPT4ge1xyXG4gICAgICAgIGdlb21ldHJ5LmNvb3JkaW5hdGVzID0gKGdlb21ldHJ5LmNvb3JkaW5hdGVzIGFzIGFueVtdKS5mb3JFYWNoKChjb29yZGluYXRlLCBpKSA9PiB7XHJcbiAgICAgICAgICBpZiAoZ2VvbWV0cnkudHlwZSA9PT0gJ011bHRpUG9seWdvbicpIHtcclxuICAgICAgICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSAoY29vcmRpbmF0ZSBhcyBhbnlbXSkubWFwKChwb2ludHMsIGopID0+IHtcclxuICAgICAgICAgICAgICBpZiAoanNvbi5VVEY4RW5jb2RpbmcpIHtcclxuICAgICAgICAgICAgICAgIHBvaW50cyA9IHRoaXMuZGVjb2RlUG9seWdvbihwb2ludHMsIGdlb21ldHJ5LmVuY29kZU9mZnNldHNbaV1bal0sIGVuY29kZVNjYWxlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHBvaW50cztcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHBvbHlnb25EYXRhLnB1c2goY29vcmRpbmF0ZXMpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKGpzb24uVVRGOEVuY29kaW5nKSB7XHJcbiAgICAgICAgICAgICAgY29vcmRpbmF0ZSA9IHRoaXMuZGVjb2RlUG9seWdvbihjb29yZGluYXRlLCBnZW9tZXRyeS5lbmNvZGVPZmZzZXRzW2ldLCBlbmNvZGVTY2FsZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcG9seWdvbkRhdGEucHVzaChbY29vcmRpbmF0ZV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgICAgY29uc3QgZGF0YSA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBnZW9tZXRyeToge1xyXG4gICAgICAgICAgICB0eXBlOiAnTXVsdGlQb2x5Z29uJyxcclxuICAgICAgICAgICAgY29vcmRpbmF0ZXM6IHBvbHlnb25EYXRhLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICBdO1xyXG4gICAgICB2YXIgbGF5ZXIgPSBuZXcgbWFwdmdsLlBvbHlnb25MYXllcih7XHJcbiAgICAgICAgbGluZUNvbG9yOiB0aGlzLm1hcENpdHlDb2xvcixcclxuICAgICAgICBsaW5lV2lkdGg6IHRoaXMuc3Ryb2tlc2l6ZSB8fCAyLFxyXG4gICAgICAgIGZpbGxDb2xvcjogdGhpcy5zaGFkZUNvbG9yLFxyXG4gICAgICAgIGRhdGEsXHJcbiAgICAgICAgcmVuZGVyT3JkZXI6IC0yLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy52aWV3LmFkZExheWVyKGxheWVyKTtcclxuICAgICAgaWYgKHRoaXMubWFwQmFja0NvbG9yICYmICF0aGlzLm1hcEJhY2tDb2xvci5tYXRjaCgvcmdiYVxcKFxcZCssXFxkKyxcXGQrLDBcXCkvKSkge1xyXG4gICAgICAgIHZhciBtYXNrTGF5ZXIgPSBuZXcgbWFwdmdsLk1hc2tMYXllcih7XHJcbiAgICAgICAgICBjb2xvcjogdGhpcy5tYXBCYWNrQ29sb3IsXHJcbiAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgcmVuZGVyT3JkZXI6IC0zLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMudmlldy5hZGRMYXllcihtYXNrTGF5ZXIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkZWNvZGVQb2x5Z29uKGNvb3JkaW5hdGU6IHN0cmluZywgZW5jb2RlT2Zmc2V0czogbnVtYmVyW10sIGVuY29kZVNjYWxlOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xyXG4gICAgbGV0IHByZXZYID0gZW5jb2RlT2Zmc2V0c1swXTtcclxuICAgIGxldCBwcmV2WSA9IGVuY29kZU9mZnNldHNbMV07XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb29yZGluYXRlLmxlbmd0aDsgaSArPSAyKSB7XHJcbiAgICAgIHZhciB4ID0gY29vcmRpbmF0ZS5jaGFyQ29kZUF0KGkpIC0gNjQ7XHJcbiAgICAgIHZhciB5ID0gY29vcmRpbmF0ZS5jaGFyQ29kZUF0KGkgKyAxKSAtIDY0O1xyXG4gICAgICAvLyBaaWdaYWcgZGVjb2RpbmdcclxuICAgICAgeCA9ICh4ID4+IDEpIF4gLSh4ICYgMSk7XHJcbiAgICAgIHkgPSAoeSA+PiAxKSBeIC0oeSAmIDEpO1xyXG4gICAgICAvLyBEZWx0YSBkZW9jZGluZ1xyXG4gICAgICB4ICs9IHByZXZYO1xyXG4gICAgICB5ICs9IHByZXZZO1xyXG5cclxuICAgICAgcHJldlggPSB4O1xyXG4gICAgICBwcmV2WSA9IHk7XHJcbiAgICAgIC8vIERlcXVhbnRpemVcclxuICAgICAgcmVzdWx0LnB1c2goW3ggLyBlbmNvZGVTY2FsZSwgeSAvIGVuY29kZVNjYWxlXSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIGFzeW5jIG1hcFR5cGVDaGFuZ2UobWFwVHlwZTogc3RyaW5nKSB7XHJcbiAgICBzd2l0Y2ggKG1hcFR5cGUpIHtcclxuICAgICAgY2FzZSAnZGFyayc6XHJcbiAgICAgICAgaWYgKCF0aGlzLmRhcmtTdHlsZSkge1xyXG4gICAgICAgICAgdGhpcy5kYXJrU3R5bGUgPSBhd2FpdCB0aGlzLmh0dHAuZ2V0KCdhc3NldHMvZWNoYXJ0cy9tYXAvanNvbi9jdXN0b21fbWFwLmpzb24nKS50b1Byb21pc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5tYXAuc2V0TWFwVHlwZShCTUFQX05PUk1BTF9NQVApO1xyXG4gICAgICAgIHRoaXMubWFwLnNldE1hcFN0eWxlVjIoeyBzdHlsZUpzb246IHRoaXMuZGFya1N0eWxlIH0pO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdzYXRlbGxpdGUnOlxyXG4gICAgICAgIHRoaXMubWFwLnNldE1hcFR5cGUoQk1BUF9TQVRFTExJVEVfTUFQKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnY3VzdG9tJzpcclxuICAgICAgICBpZiAodGhpcy51cGxvYWRTdHlsZSkge1xyXG4gICAgICAgICAgY29uc3Qgc3R5bGVKc29uID0gYXdhaXQgdGhpcy5odHRwLmdldCh0aGlzLnVwbG9hZFN0eWxlKS50b1Byb21pc2UoKTtcclxuICAgICAgICAgIHRoaXMubWFwLnNldE1hcFR5cGUoQk1BUF9OT1JNQUxfTUFQKTtcclxuICAgICAgICAgIHRoaXMubWFwLnNldE1hcFN0eWxlVjIoeyBzdHlsZUpzb24gfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMubWFwLnNldE1hcFR5cGUoQk1BUF9OT1JNQUxfTUFQKTtcclxuICAgICAgICB0aGlzLm1hcC5zZXRNYXBTdHlsZVYyKHsgc3R5bGVKc29uOiBudWxsIH0pO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=