ngx-bootstrap 3.1.2 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (441) hide show
  1. package/CHANGELOG.md +236 -0
  2. package/CONTRIBUTING.md +1 -1
  3. package/README.md +8 -5
  4. package/accordion/package.json +1 -1
  5. package/alert/package.json +1 -1
  6. package/bundles/ngx-bootstrap.es2015.js +13985 -11505
  7. package/bundles/ngx-bootstrap.es2015.js.map +1 -1
  8. package/bundles/ngx-bootstrap.umd.js +2 -1
  9. package/bundles/ngx-bootstrap.umd.js.map +1 -1
  10. package/bundles/ngx-bootstrap.umd.min.js +1 -1
  11. package/buttons/package.json +1 -1
  12. package/carousel/package.json +1 -1
  13. package/chronos/bundles/ngx-bootstrap-chronos.umd.js +217 -63
  14. package/chronos/bundles/ngx-bootstrap-chronos.umd.js.map +1 -1
  15. package/chronos/bundles/ngx-bootstrap-chronos.umd.min.js +1 -1
  16. package/chronos/bundles/ngx-bootstrap-chronos.umd.min.js.map +1 -1
  17. package/chronos/esm2015/i18n/ca.js +128 -0
  18. package/chronos/esm2015/i18n/lt.js +1 -1
  19. package/chronos/esm2015/i18n/pl.js +7 -1
  20. package/chronos/esm2015/index.js +2 -2
  21. package/chronos/esm2015/ngx-bootstrap-chronos.js +2 -2
  22. package/chronos/esm2015/public_api.js +3 -2
  23. package/chronos/esm2015/utils/date-compare.js +20 -1
  24. package/chronos/esm5/i18n/ca.js +128 -0
  25. package/chronos/esm5/i18n/lt.js +1 -1
  26. package/chronos/esm5/i18n/pl.js +7 -1
  27. package/chronos/esm5/index.js +2 -2
  28. package/chronos/esm5/ngx-bootstrap-chronos.js +2 -2
  29. package/chronos/esm5/public_api.js +3 -2
  30. package/chronos/esm5/utils/date-compare.js +20 -1
  31. package/chronos/fesm2015/ngx-bootstrap-chronos.js +223 -67
  32. package/chronos/fesm2015/ngx-bootstrap-chronos.js.map +1 -1
  33. package/chronos/fesm5/ngx-bootstrap-chronos.js +224 -67
  34. package/chronos/fesm5/ngx-bootstrap-chronos.js.map +1 -1
  35. package/chronos/i18n/ca.d.ts +2 -0
  36. package/chronos/ngx-bootstrap-chronos.metadata.json +1 -1
  37. package/chronos/package.json +1 -1
  38. package/chronos/public_api.d.ts +2 -1
  39. package/chronos/utils/date-compare.d.ts +2 -0
  40. package/collapse/package.json +1 -1
  41. package/component-loader/bundles/ngx-bootstrap-component-loader.umd.js +11 -1
  42. package/component-loader/bundles/ngx-bootstrap-component-loader.umd.js.map +1 -1
  43. package/component-loader/bundles/ngx-bootstrap-component-loader.umd.min.js +1 -1
  44. package/component-loader/bundles/ngx-bootstrap-component-loader.umd.min.js.map +1 -1
  45. package/component-loader/component-loader.class.d.ts +1 -1
  46. package/component-loader/esm2015/component-loader.class.js +12 -2
  47. package/component-loader/esm2015/listen-options.model.js +3 -1
  48. package/component-loader/esm5/component-loader.class.js +12 -2
  49. package/component-loader/esm5/listen-options.model.js +3 -1
  50. package/component-loader/fesm2015/ngx-bootstrap-component-loader.js +12 -2
  51. package/component-loader/fesm2015/ngx-bootstrap-component-loader.js.map +1 -1
  52. package/component-loader/fesm5/ngx-bootstrap-component-loader.js +12 -2
  53. package/component-loader/fesm5/ngx-bootstrap-component-loader.js.map +1 -1
  54. package/component-loader/listen-options.model.d.ts +1 -0
  55. package/component-loader/ngx-bootstrap-component-loader.metadata.json +1 -1
  56. package/component-loader/package.json +1 -1
  57. package/datepicker/base/bs-datepicker-container.d.ts +5 -1
  58. package/datepicker/bs-datepicker-inline.component.d.ts +48 -0
  59. package/datepicker/bs-datepicker-inline.config.d.ts +3 -0
  60. package/datepicker/bs-datepicker.component.d.ts +14 -0
  61. package/datepicker/bs-datepicker.config.d.ts +22 -1
  62. package/datepicker/bs-datepicker.css +56 -5
  63. package/datepicker/bs-datepicker.css.map +3 -3
  64. package/datepicker/bs-datepicker.module.d.ts +0 -1
  65. package/datepicker/bs-datepicker.scss +21 -8
  66. package/datepicker/bs-daterangepicker.component.d.ts +5 -0
  67. package/datepicker/bundles/ngx-bootstrap-datepicker.umd.js +2967 -2546
  68. package/datepicker/bundles/ngx-bootstrap-datepicker.umd.js.map +1 -1
  69. package/datepicker/bundles/ngx-bootstrap-datepicker.umd.min.js +1 -1
  70. package/datepicker/bundles/ngx-bootstrap-datepicker.umd.min.js.map +1 -1
  71. package/datepicker/engine/flag-days-calendar.d.ts +2 -0
  72. package/datepicker/engine/view-mode.d.ts +1 -1
  73. package/datepicker/esm2015/base/bs-datepicker-container.js +22 -1
  74. package/datepicker/esm2015/bs-datepicker-inline.component.js +179 -0
  75. package/datepicker/esm2015/bs-datepicker-inline.config.js +22 -0
  76. package/datepicker/esm2015/bs-datepicker-input.directive.js +2 -1
  77. package/datepicker/esm2015/bs-datepicker.component.js +34 -2
  78. package/datepicker/esm2015/bs-datepicker.config.js +28 -1
  79. package/datepicker/esm2015/bs-datepicker.module.js +10 -11
  80. package/datepicker/esm2015/bs-daterangepicker-input.directive.js +9 -4
  81. package/datepicker/esm2015/bs-daterangepicker.component.js +17 -2
  82. package/datepicker/esm2015/engine/flag-days-calendar.js +16 -6
  83. package/datepicker/esm2015/engine/view-mode.js +4 -3
  84. package/datepicker/esm2015/models/index.js +7 -1
  85. package/datepicker/esm2015/ngx-bootstrap-datepicker.js +19 -18
  86. package/datepicker/esm2015/public_api.js +11 -9
  87. package/datepicker/esm2015/reducer/bs-datepicker.actions.js +27 -1
  88. package/datepicker/esm2015/reducer/bs-datepicker.effects.js +25 -11
  89. package/datepicker/esm2015/reducer/bs-datepicker.reducer.js +15 -5
  90. package/datepicker/esm2015/reducer/bs-datepicker.state.js +9 -1
  91. package/datepicker/esm2015/themes/bs/bs-datepicker-container.component.js +5 -3
  92. package/datepicker/esm2015/themes/bs/bs-datepicker-day-decorator.directive.js +33 -2
  93. package/datepicker/esm2015/themes/bs/bs-datepicker-inline-container.component.js +50 -0
  94. package/datepicker/esm2015/themes/bs/bs-daterangepicker-container.component.js +5 -3
  95. package/datepicker/esm2015/themes/bs/bs-days-calendar-view.component.js +71 -4
  96. package/datepicker/esm2015/utils/bs-calendar-utils.js +13 -2
  97. package/datepicker/esm5/base/bs-datepicker-container.js +34 -1
  98. package/datepicker/esm5/bs-datepicker-inline.component.js +196 -0
  99. package/datepicker/esm5/bs-datepicker-inline.config.js +29 -0
  100. package/datepicker/esm5/bs-datepicker-input.directive.js +2 -1
  101. package/datepicker/esm5/bs-datepicker.component.js +34 -2
  102. package/datepicker/esm5/bs-datepicker.config.js +28 -1
  103. package/datepicker/esm5/bs-datepicker.module.js +10 -7
  104. package/datepicker/esm5/bs-daterangepicker-input.directive.js +9 -4
  105. package/datepicker/esm5/bs-daterangepicker.component.js +17 -2
  106. package/datepicker/esm5/engine/flag-days-calendar.js +16 -6
  107. package/datepicker/esm5/engine/view-mode.js +4 -3
  108. package/datepicker/esm5/models/index.js +7 -1
  109. package/datepicker/esm5/ngx-bootstrap-datepicker.js +19 -18
  110. package/datepicker/esm5/public_api.js +11 -9
  111. package/datepicker/esm5/reducer/bs-datepicker.actions.js +35 -1
  112. package/datepicker/esm5/reducer/bs-datepicker.effects.js +33 -11
  113. package/datepicker/esm5/reducer/bs-datepicker.reducer.js +15 -5
  114. package/datepicker/esm5/reducer/bs-datepicker.state.js +9 -1
  115. package/datepicker/esm5/themes/bs/bs-datepicker-container.component.js +5 -3
  116. package/datepicker/esm5/themes/bs/bs-datepicker-day-decorator.directive.js +30 -3
  117. package/datepicker/esm5/themes/bs/bs-datepicker-inline-container.component.js +48 -0
  118. package/datepicker/esm5/themes/bs/bs-daterangepicker-container.component.js +5 -3
  119. package/datepicker/esm5/themes/bs/bs-days-calendar-view.component.js +75 -3
  120. package/datepicker/esm5/utils/bs-calendar-utils.js +13 -2
  121. package/datepicker/fesm2015/ngx-bootstrap-datepicker.js +3192 -2829
  122. package/datepicker/fesm2015/ngx-bootstrap-datepicker.js.map +1 -1
  123. package/datepicker/fesm5/ngx-bootstrap-datepicker.js +3407 -2994
  124. package/datepicker/fesm5/ngx-bootstrap-datepicker.js.map +1 -1
  125. package/datepicker/models/index.d.ts +3 -0
  126. package/datepicker/ngx-bootstrap-datepicker.d.ts +17 -16
  127. package/datepicker/ngx-bootstrap-datepicker.metadata.json +1 -1
  128. package/datepicker/package.json +1 -1
  129. package/datepicker/public_api.d.ts +11 -8
  130. package/datepicker/reducer/bs-datepicker.actions.d.ts +4 -0
  131. package/datepicker/reducer/bs-datepicker.effects.d.ts +4 -2
  132. package/datepicker/reducer/bs-datepicker.state.d.ts +4 -0
  133. package/datepicker/themes/bs/bs-datepicker-day-decorator.directive.d.ts +8 -1
  134. package/datepicker/themes/bs/bs-datepicker-inline-container.component.d.ts +9 -0
  135. package/datepicker/themes/bs/bs-days-calendar-view.component.d.ts +8 -1
  136. package/datepicker/utils/bs-calendar-utils.d.ts +1 -0
  137. package/datepicker/utils/scss/mixins.css.map +4 -2
  138. package/datepicker/utils/scss/mixins.scss +10 -0
  139. package/dropdown/bs-dropdown-container.component.d.ts +3 -0
  140. package/dropdown/bs-dropdown-toggle.directive.d.ts +3 -1
  141. package/dropdown/bs-dropdown.config.d.ts +2 -0
  142. package/dropdown/bs-dropdown.directive.d.ts +8 -2
  143. package/dropdown/bs-dropdown.state.d.ts +1 -0
  144. package/dropdown/bundles/ngx-bootstrap-dropdown.umd.js +62 -5
  145. package/dropdown/bundles/ngx-bootstrap-dropdown.umd.js.map +1 -1
  146. package/dropdown/bundles/ngx-bootstrap-dropdown.umd.min.js +1 -1
  147. package/dropdown/bundles/ngx-bootstrap-dropdown.umd.min.js.map +1 -1
  148. package/dropdown/esm2015/bs-dropdown-container.component.js +13 -2
  149. package/dropdown/esm2015/bs-dropdown-toggle.directive.js +10 -3
  150. package/dropdown/esm2015/bs-dropdown.config.js +10 -1
  151. package/dropdown/esm2015/bs-dropdown.directive.js +30 -3
  152. package/dropdown/esm2015/bs-dropdown.module.js +2 -2
  153. package/dropdown/esm2015/bs-dropdown.state.js +3 -1
  154. package/dropdown/esm5/bs-dropdown-container.component.js +19 -2
  155. package/dropdown/esm5/bs-dropdown-toggle.directive.js +9 -3
  156. package/dropdown/esm5/bs-dropdown.config.js +10 -1
  157. package/dropdown/esm5/bs-dropdown.directive.js +40 -3
  158. package/dropdown/esm5/bs-dropdown.module.js +2 -2
  159. package/dropdown/esm5/bs-dropdown.state.js +3 -1
  160. package/dropdown/fesm2015/ngx-bootstrap-dropdown.js +49 -5
  161. package/dropdown/fesm2015/ngx-bootstrap-dropdown.js.map +1 -1
  162. package/dropdown/fesm5/ngx-bootstrap-dropdown.js +64 -5
  163. package/dropdown/fesm5/ngx-bootstrap-dropdown.js.map +1 -1
  164. package/dropdown/ngx-bootstrap-dropdown.metadata.json +1 -1
  165. package/dropdown/package.json +1 -1
  166. package/esm2015/ngx-bootstrap.js +2 -2
  167. package/esm2015/public_api.js +2 -2
  168. package/esm5/ngx-bootstrap.js +2 -2
  169. package/esm5/public_api.js +2 -2
  170. package/fesm2015/ngx-bootstrap.js +1 -1
  171. package/fesm5/ngx-bootstrap.js +1 -1
  172. package/locale/bundles/ngx-bootstrap-locale.umd.js +2 -1
  173. package/locale/bundles/ngx-bootstrap-locale.umd.js.map +1 -1
  174. package/locale/bundles/ngx-bootstrap-locale.umd.min.js +1 -1
  175. package/locale/esm2015/ngx-bootstrap-locale.js +2 -2
  176. package/locale/esm2015/public_api.js +2 -1
  177. package/locale/esm5/ngx-bootstrap-locale.js +2 -2
  178. package/locale/esm5/public_api.js +2 -1
  179. package/locale/fesm2015/ngx-bootstrap-locale.js +1 -1
  180. package/locale/fesm5/ngx-bootstrap-locale.js +1 -1
  181. package/locale/ngx-bootstrap-locale.metadata.json +1 -1
  182. package/locale/package.json +1 -1
  183. package/locale/public_api.d.ts +1 -0
  184. package/mini-ngrx/package.json +1 -1
  185. package/modal/bs-modal-ref.service.d.ts +4 -0
  186. package/modal/bundles/ngx-bootstrap-modal.umd.js +8 -1
  187. package/modal/bundles/ngx-bootstrap-modal.umd.js.map +1 -1
  188. package/modal/bundles/ngx-bootstrap-modal.umd.min.js +1 -1
  189. package/modal/bundles/ngx-bootstrap-modal.umd.min.js.map +1 -1
  190. package/modal/esm2015/bs-modal-ref.service.js +10 -1
  191. package/modal/esm2015/bs-modal.service.js +4 -1
  192. package/modal/esm5/bs-modal-ref.service.js +10 -1
  193. package/modal/esm5/bs-modal.service.js +4 -1
  194. package/modal/fesm2015/ngx-bootstrap-modal.js +8 -1
  195. package/modal/fesm2015/ngx-bootstrap-modal.js.map +1 -1
  196. package/modal/fesm5/ngx-bootstrap-modal.js +8 -1
  197. package/modal/fesm5/ngx-bootstrap-modal.js.map +1 -1
  198. package/modal/package.json +1 -1
  199. package/package.json +2 -2
  200. package/pagination/esm2015/models/index.js +1 -4
  201. package/pagination/esm5/models/index.js +1 -4
  202. package/pagination/models/index.d.ts +0 -1
  203. package/pagination/package.json +1 -1
  204. package/popover/bundles/ngx-bootstrap-popover.umd.js +3 -2
  205. package/popover/bundles/ngx-bootstrap-popover.umd.js.map +1 -1
  206. package/popover/bundles/ngx-bootstrap-popover.umd.min.js +1 -1
  207. package/popover/bundles/ngx-bootstrap-popover.umd.min.js.map +1 -1
  208. package/popover/esm2015/popover-container.component.js +19 -8
  209. package/popover/esm5/popover-container.component.js +3 -2
  210. package/popover/fesm2015/ngx-bootstrap-popover.js +19 -8
  211. package/popover/fesm2015/ngx-bootstrap-popover.js.map +1 -1
  212. package/popover/fesm5/ngx-bootstrap-popover.js +3 -2
  213. package/popover/fesm5/ngx-bootstrap-popover.js.map +1 -1
  214. package/popover/ngx-bootstrap-popover.metadata.json +1 -1
  215. package/popover/package.json +1 -1
  216. package/positioning/bundles/ngx-bootstrap-positioning.umd.js +1192 -252
  217. package/positioning/bundles/ngx-bootstrap-positioning.umd.js.map +1 -1
  218. package/positioning/bundles/ngx-bootstrap-positioning.umd.min.js +1 -1
  219. package/positioning/bundles/ngx-bootstrap-positioning.umd.min.js.map +1 -1
  220. package/positioning/esm2015/models/index.js +44 -0
  221. package/positioning/esm2015/modifiers/arrow.js +54 -0
  222. package/positioning/esm2015/modifiers/flip.js +65 -0
  223. package/positioning/esm2015/modifiers/index.js +11 -0
  224. package/positioning/esm2015/modifiers/initData.js +34 -0
  225. package/positioning/esm2015/modifiers/preventOverflow.js +70 -0
  226. package/positioning/esm2015/modifiers/shift.js +29 -0
  227. package/positioning/esm2015/ng-positioning.js +19 -220
  228. package/positioning/esm2015/positioning.service.js +44 -4
  229. package/positioning/esm2015/utils/computeAutoPlacement.js +64 -0
  230. package/positioning/esm2015/utils/findCommonOffsetParent.js +47 -0
  231. package/positioning/esm2015/utils/getBordersSize.js +20 -0
  232. package/positioning/esm2015/utils/getBoundaries.js +66 -0
  233. package/positioning/esm2015/utils/getBoundingClientRect.js +61 -0
  234. package/positioning/esm2015/utils/getClientRect.js +13 -0
  235. package/positioning/esm2015/utils/getFixedPositionOffsetParent.js +26 -0
  236. package/positioning/esm2015/utils/getOffsetParent.js +37 -0
  237. package/positioning/esm2015/utils/getOffsetRectRelativeToArbitraryNode.js +62 -0
  238. package/positioning/esm2015/utils/getOffsets.js +20 -0
  239. package/positioning/esm2015/utils/getOppositePlacement.js +15 -0
  240. package/positioning/esm2015/utils/getOppositeVariation.js +20 -0
  241. package/positioning/esm2015/utils/getOuterSizes.js +21 -0
  242. package/positioning/esm2015/utils/getParentNode.js +17 -0
  243. package/positioning/esm2015/utils/getReferenceOffsets.js +21 -0
  244. package/positioning/esm2015/utils/getRoot.js +17 -0
  245. package/positioning/esm2015/utils/getScroll.js +22 -0
  246. package/positioning/esm2015/utils/getScrollParent.js +32 -0
  247. package/positioning/esm2015/utils/getStyleComputedProperty.js +21 -0
  248. package/positioning/esm2015/utils/getTargetOffsets.js +38 -0
  249. package/positioning/esm2015/utils/getViewportOffsetRectRelativeToArtbitraryNode.js +29 -0
  250. package/positioning/esm2015/utils/getWindowSizes.js +34 -0
  251. package/positioning/esm2015/utils/includeScroll.js +23 -0
  252. package/positioning/esm2015/utils/index.js +28 -0
  253. package/positioning/esm2015/utils/isBrowser.js +7 -0
  254. package/positioning/esm2015/utils/isFixed.js +22 -0
  255. package/positioning/esm2015/utils/isIE.js +22 -0
  256. package/positioning/esm2015/utils/isNumeric.js +14 -0
  257. package/positioning/esm2015/utils/isOffsetContainer.js +18 -0
  258. package/positioning/esm2015/utils/setAllStyles.js +55 -0
  259. package/positioning/esm2015/utils/setStyles.js +28 -0
  260. package/positioning/esm5/models/index.js +44 -0
  261. package/positioning/esm5/modifiers/arrow.js +56 -0
  262. package/positioning/esm5/modifiers/flip.js +66 -0
  263. package/positioning/esm5/modifiers/index.js +11 -0
  264. package/positioning/esm5/modifiers/initData.js +34 -0
  265. package/positioning/esm5/modifiers/preventOverflow.js +73 -0
  266. package/positioning/esm5/modifiers/shift.js +31 -0
  267. package/positioning/esm5/ng-positioning.js +24 -247
  268. package/positioning/esm5/positioning.service.js +49 -5
  269. package/positioning/esm5/utils/computeAutoPlacement.js +72 -0
  270. package/positioning/esm5/utils/findCommonOffsetParent.js +47 -0
  271. package/positioning/esm5/utils/getBordersSize.js +20 -0
  272. package/positioning/esm5/utils/getBoundaries.js +68 -0
  273. package/positioning/esm5/utils/getBoundingClientRect.js +61 -0
  274. package/positioning/esm5/utils/getClientRect.js +14 -0
  275. package/positioning/esm5/utils/getFixedPositionOffsetParent.js +26 -0
  276. package/positioning/esm5/utils/getOffsetParent.js +37 -0
  277. package/positioning/esm5/utils/getOffsetRectRelativeToArbitraryNode.js +63 -0
  278. package/positioning/esm5/utils/getOffsets.js +20 -0
  279. package/positioning/esm5/utils/getOppositePlacement.js +15 -0
  280. package/positioning/esm5/utils/getOppositeVariation.js +20 -0
  281. package/positioning/esm5/utils/getOuterSizes.js +21 -0
  282. package/positioning/esm5/utils/getParentNode.js +17 -0
  283. package/positioning/esm5/utils/getReferenceOffsets.js +22 -0
  284. package/positioning/esm5/utils/getRoot.js +17 -0
  285. package/positioning/esm5/utils/getScroll.js +23 -0
  286. package/positioning/esm5/utils/getScrollParent.js +32 -0
  287. package/positioning/esm5/utils/getStyleComputedProperty.js +21 -0
  288. package/positioning/esm5/utils/getTargetOffsets.js +38 -0
  289. package/positioning/esm5/utils/getViewportOffsetRectRelativeToArtbitraryNode.js +30 -0
  290. package/positioning/esm5/utils/getWindowSizes.js +34 -0
  291. package/positioning/esm5/utils/includeScroll.js +24 -0
  292. package/positioning/esm5/utils/index.js +28 -0
  293. package/positioning/esm5/utils/isBrowser.js +7 -0
  294. package/positioning/esm5/utils/isFixed.js +22 -0
  295. package/positioning/esm5/utils/isIE.js +22 -0
  296. package/positioning/esm5/utils/isNumeric.js +14 -0
  297. package/positioning/esm5/utils/isOffsetContainer.js +18 -0
  298. package/positioning/esm5/utils/setAllStyles.js +55 -0
  299. package/positioning/esm5/utils/setStyles.js +28 -0
  300. package/positioning/fesm2015/ngx-bootstrap-positioning.js +1108 -211
  301. package/positioning/fesm2015/ngx-bootstrap-positioning.js.map +1 -1
  302. package/positioning/fesm5/ngx-bootstrap-positioning.js +1148 -249
  303. package/positioning/fesm5/ngx-bootstrap-positioning.js.map +1 -1
  304. package/positioning/models/index.d.ts +27 -0
  305. package/positioning/modifiers/arrow.d.ts +2 -0
  306. package/positioning/modifiers/flip.d.ts +2 -0
  307. package/positioning/modifiers/index.d.ts +5 -0
  308. package/positioning/modifiers/initData.d.ts +2 -0
  309. package/positioning/modifiers/preventOverflow.d.ts +2 -0
  310. package/positioning/modifiers/shift.d.ts +2 -0
  311. package/positioning/ng-positioning.d.ts +7 -10
  312. package/positioning/ngx-bootstrap-positioning.metadata.json +1 -1
  313. package/positioning/package.json +1 -1
  314. package/positioning/positioning.service.d.ts +7 -1
  315. package/positioning/utils/computeAutoPlacement.d.ts +2 -0
  316. package/positioning/utils/findCommonOffsetParent.d.ts +1 -0
  317. package/positioning/utils/getBordersSize.d.ts +4 -0
  318. package/positioning/utils/getBoundaries.d.ts +1 -0
  319. package/positioning/utils/getBoundingClientRect.d.ts +2 -0
  320. package/positioning/utils/getClientRect.d.ts +5 -0
  321. package/positioning/utils/getFixedPositionOffsetParent.d.ts +1 -0
  322. package/positioning/utils/getOffsetParent.d.ts +1 -0
  323. package/positioning/utils/getOffsetRectRelativeToArbitraryNode.d.ts +2 -0
  324. package/positioning/utils/getOffsets.d.ts +2 -0
  325. package/positioning/utils/getOppositePlacement.d.ts +4 -0
  326. package/positioning/utils/getOppositeVariation.d.ts +4 -0
  327. package/positioning/utils/getOuterSizes.d.ts +7 -0
  328. package/positioning/utils/getParentNode.d.ts +4 -0
  329. package/positioning/utils/getReferenceOffsets.d.ts +2 -0
  330. package/positioning/utils/getRoot.d.ts +4 -0
  331. package/positioning/utils/getScroll.d.ts +4 -0
  332. package/positioning/utils/getScrollParent.d.ts +1 -0
  333. package/positioning/utils/getStyleComputedProperty.d.ts +4 -0
  334. package/positioning/utils/getTargetOffsets.d.ts +2 -0
  335. package/positioning/utils/getViewportOffsetRectRelativeToArtbitraryNode.d.ts +2 -0
  336. package/positioning/utils/getWindowSizes.d.ts +4 -0
  337. package/positioning/utils/includeScroll.d.ts +2 -0
  338. package/positioning/utils/index.d.ts +22 -0
  339. package/positioning/utils/isBrowser.d.ts +1 -0
  340. package/positioning/utils/isFixed.d.ts +1 -0
  341. package/positioning/utils/isIE.d.ts +1 -0
  342. package/positioning/utils/isNumeric.d.ts +4 -0
  343. package/positioning/utils/isOffsetContainer.d.ts +1 -0
  344. package/positioning/utils/setAllStyles.d.ts +6 -0
  345. package/positioning/utils/setStyles.d.ts +5 -0
  346. package/progressbar/package.json +1 -1
  347. package/rating/bundles/ngx-bootstrap-rating.umd.js +3 -1
  348. package/rating/bundles/ngx-bootstrap-rating.umd.js.map +1 -1
  349. package/rating/bundles/ngx-bootstrap-rating.umd.min.js.map +1 -1
  350. package/rating/esm2015/rating.component.js +3 -1
  351. package/rating/esm5/rating.component.js +3 -1
  352. package/rating/fesm2015/ngx-bootstrap-rating.js +3 -1
  353. package/rating/fesm2015/ngx-bootstrap-rating.js.map +1 -1
  354. package/rating/fesm5/ngx-bootstrap-rating.js +3 -1
  355. package/rating/fesm5/ngx-bootstrap-rating.js.map +1 -1
  356. package/rating/package.json +1 -1
  357. package/schematics/ng-add/index.js +17 -9
  358. package/schematics/ng-add/index.js.map +1 -1
  359. package/schematics/ng-add/index.spec.js +2 -3
  360. package/schematics/ng-add/index.spec.js.map +1 -1
  361. package/sortable/package.json +1 -1
  362. package/tabs/package.json +1 -1
  363. package/timepicker/bundles/ngx-bootstrap-timepicker.umd.js +3 -1
  364. package/timepicker/bundles/ngx-bootstrap-timepicker.umd.js.map +1 -1
  365. package/timepicker/bundles/ngx-bootstrap-timepicker.umd.min.js +1 -1
  366. package/timepicker/bundles/ngx-bootstrap-timepicker.umd.min.js.map +1 -1
  367. package/timepicker/esm2015/timepicker.component.js +5 -1
  368. package/timepicker/esm5/timepicker.component.js +5 -1
  369. package/timepicker/fesm2015/ngx-bootstrap-timepicker.js +3 -1
  370. package/timepicker/fesm2015/ngx-bootstrap-timepicker.js.map +1 -1
  371. package/timepicker/fesm5/ngx-bootstrap-timepicker.js +3 -1
  372. package/timepicker/fesm5/ngx-bootstrap-timepicker.js.map +1 -1
  373. package/timepicker/ngx-bootstrap-timepicker.metadata.json +1 -1
  374. package/timepicker/package.json +1 -1
  375. package/timepicker/timepicker.component.d.ts +1 -0
  376. package/tooltip/bundles/ngx-bootstrap-tooltip.umd.js +15 -4
  377. package/tooltip/bundles/ngx-bootstrap-tooltip.umd.js.map +1 -1
  378. package/tooltip/bundles/ngx-bootstrap-tooltip.umd.min.js +1 -1
  379. package/tooltip/bundles/ngx-bootstrap-tooltip.umd.min.js.map +1 -1
  380. package/tooltip/esm2015/tooltip-container.component.js +15 -7
  381. package/tooltip/esm2015/tooltip.config.js +10 -1
  382. package/tooltip/esm2015/tooltip.directive.js +13 -4
  383. package/tooltip/esm5/tooltip-container.component.js +6 -2
  384. package/tooltip/esm5/tooltip.config.js +10 -1
  385. package/tooltip/esm5/tooltip.directive.js +13 -4
  386. package/tooltip/fesm2015/ngx-bootstrap-tooltip.js +25 -10
  387. package/tooltip/fesm2015/ngx-bootstrap-tooltip.js.map +1 -1
  388. package/tooltip/fesm5/ngx-bootstrap-tooltip.js +16 -5
  389. package/tooltip/fesm5/ngx-bootstrap-tooltip.js.map +1 -1
  390. package/tooltip/ngx-bootstrap-tooltip.metadata.json +1 -1
  391. package/tooltip/package.json +1 -1
  392. package/tooltip/tooltip-container.component.d.ts +1 -0
  393. package/tooltip/tooltip.config.d.ts +2 -0
  394. package/tooltip/tooltip.directive.d.ts +2 -0
  395. package/typeahead/bundles/ngx-bootstrap-typeahead.umd.js +93 -35
  396. package/typeahead/bundles/ngx-bootstrap-typeahead.umd.js.map +1 -1
  397. package/typeahead/bundles/ngx-bootstrap-typeahead.umd.min.js +1 -1
  398. package/typeahead/bundles/ngx-bootstrap-typeahead.umd.min.js.map +1 -1
  399. package/typeahead/esm2015/ngx-bootstrap-typeahead.js +2 -2
  400. package/typeahead/esm2015/public_api.js +2 -1
  401. package/typeahead/esm2015/typeahead-container.component.js +15 -4
  402. package/typeahead/esm2015/typeahead.config.js +55 -0
  403. package/typeahead/esm2015/typeahead.directive.js +68 -32
  404. package/typeahead/esm2015/typeahead.module.js +3 -2
  405. package/typeahead/esm5/ngx-bootstrap-typeahead.js +2 -2
  406. package/typeahead/esm5/public_api.js +2 -1
  407. package/typeahead/esm5/typeahead-container.component.js +12 -4
  408. package/typeahead/esm5/typeahead.config.js +57 -0
  409. package/typeahead/esm5/typeahead.directive.js +69 -34
  410. package/typeahead/esm5/typeahead.module.js +3 -2
  411. package/typeahead/fesm2015/ngx-bootstrap-typeahead.js +96 -36
  412. package/typeahead/fesm2015/ngx-bootstrap-typeahead.js.map +1 -1
  413. package/typeahead/fesm5/ngx-bootstrap-typeahead.js +95 -38
  414. package/typeahead/fesm5/ngx-bootstrap-typeahead.js.map +1 -1
  415. package/typeahead/ngx-bootstrap-typeahead.metadata.json +1 -1
  416. package/typeahead/package.json +1 -1
  417. package/typeahead/public_api.d.ts +1 -0
  418. package/typeahead/typeahead-container.component.d.ts +1 -1
  419. package/typeahead/typeahead.config.d.ts +11 -0
  420. package/typeahead/typeahead.directive.d.ts +14 -5
  421. package/utils/bundles/ngx-bootstrap-utils.umd.js +31 -11
  422. package/utils/bundles/ngx-bootstrap-utils.umd.js.map +1 -1
  423. package/utils/bundles/ngx-bootstrap-utils.umd.min.js +1 -1
  424. package/utils/bundles/ngx-bootstrap-utils.umd.min.js.map +1 -1
  425. package/utils/esm2015/facade/browser.js +13 -14
  426. package/utils/esm2015/ngx-bootstrap-utils.js +2 -2
  427. package/utils/esm2015/public_api.js +2 -2
  428. package/utils/esm2015/triggers.js +23 -1
  429. package/utils/esm5/facade/browser.js +10 -11
  430. package/utils/esm5/ngx-bootstrap-utils.js +2 -2
  431. package/utils/esm5/public_api.js +2 -2
  432. package/utils/esm5/triggers.js +23 -1
  433. package/utils/facade/browser.d.ts +5 -5
  434. package/utils/fesm2015/ngx-bootstrap-utils.js +34 -15
  435. package/utils/fesm2015/ngx-bootstrap-utils.js.map +1 -1
  436. package/utils/fesm5/ngx-bootstrap-utils.js +31 -12
  437. package/utils/fesm5/ngx-bootstrap-utils.js.map +1 -1
  438. package/utils/ngx-bootstrap-utils.metadata.json +1 -1
  439. package/utils/package.json +1 -1
  440. package/utils/public_api.d.ts +1 -1
  441. package/utils/triggers.d.ts +2 -0
@@ -156,12 +156,31 @@
156
156
  options.hide();
157
157
  });
158
158
  }
159
+ /**
160
+ * @param {?} renderer
161
+ * @param {?} options
162
+ * @return {?}
163
+ */
164
+ function registerEscClick(renderer, options) {
165
+ if (!options.outsideEsc) {
166
+ return Function.prototype;
167
+ }
168
+ return renderer.listen('document', 'keyup.esc', function (event) {
169
+ if (options.target && options.target.contains(event.target)) {
170
+ return undefined;
171
+ }
172
+ if (options.targets &&
173
+ options.targets.some(function (target) { return target.contains(event.target); })) {
174
+ return undefined;
175
+ }
176
+ options.hide();
177
+ });
178
+ }
159
179
 
160
180
  /**
161
181
  * @fileoverview added by tsickle
162
182
  * @suppress {checkTypes} checked by tsc
163
183
  */
164
- /*tslint:disable */
165
184
  /**
166
185
  * @license
167
186
  * Copyright Google Inc. All Rights Reserved.
@@ -175,15 +194,15 @@
175
194
  var /** @type {?} */ win = (typeof window !== 'undefined' && window) || /** @type {?} */ ({});
176
195
  var /** @type {?} */ document$1 = win.document;
177
196
  var /** @type {?} */ location = win.location;
178
- var /** @type {?} */ gc = win['gc'] ? function () { return win['gc'](); } : function () { return null; };
179
- var /** @type {?} */ performance = win['performance'] ? win['performance'] : null;
180
- var /** @type {?} */ Event = win['Event'];
181
- var /** @type {?} */ MouseEvent = win['MouseEvent'];
182
- var /** @type {?} */ KeyboardEvent = win['KeyboardEvent'];
183
- var /** @type {?} */ EventTarget = win['EventTarget'];
184
- var /** @type {?} */ History = win['History'];
185
- var /** @type {?} */ Location = win['Location'];
186
- var /** @type {?} */ EventListener = win['EventListener'];
197
+ var /** @type {?} */ gc = win.gc ? function () { return win.gc(); } : function () { return null; };
198
+ var /** @type {?} */ performance = win.performance ? win.performance : null;
199
+ var /** @type {?} */ Event = win.Event;
200
+ var /** @type {?} */ MouseEvent = win.MouseEvent;
201
+ var /** @type {?} */ KeyboardEvent = win.KeyboardEvent;
202
+ var /** @type {?} */ EventTarget = win.EventTarget;
203
+ var /** @type {?} */ History = win.History;
204
+ var /** @type {?} */ Location = win.Location;
205
+ var /** @type {?} */ EventListener = win.EventListener;
187
206
 
188
207
  /**
189
208
  * @fileoverview added by tsickle
@@ -755,6 +774,7 @@
755
774
  exports.LinkedList = LinkedList;
756
775
  exports.listenToTriggersV2 = listenToTriggersV2;
757
776
  exports.registerOutsideClick = registerOutsideClick;
777
+ exports.registerEscClick = registerEscClick;
758
778
  exports.OnChange = OnChange;
759
779
  exports.setTheme = setTheme;
760
780
  exports.Trigger = Trigger;
@@ -769,4 +789,4 @@
769
789
 
770
790
  })));
771
791
 
772
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWJvb3RzdHJhcC11dGlscy51bWQuanMubWFwIiwic291cmNlcyI6WyJuZzovL25neC1ib290c3RyYXAvdXRpbHMvdHJpZ2dlci5jbGFzcy50cyIsIm5nOi8vbmd4LWJvb3RzdHJhcC91dGlscy90cmlnZ2Vycy50cyIsIm5nOi8vbmd4LWJvb3RzdHJhcC91dGlscy9mYWNhZGUvYnJvd3Nlci50cyIsIm5nOi8vbmd4LWJvb3RzdHJhcC91dGlscy90aGVtZS1wcm92aWRlci50cyIsIm5nOi8vbmd4LWJvb3RzdHJhcC91dGlscy9saW5rZWQtbGlzdC5jbGFzcy50cyIsIm5nOi8vbmd4LWJvb3RzdHJhcC91dGlscy9kZWNvcmF0b3JzLnRzIiwibmc6Ly9uZ3gtYm9vdHN0cmFwL3V0aWxzL3V0aWxzLmNsYXNzLnRzIiwibmc6Ly9uZ3gtYm9vdHN0cmFwL3V0aWxzL3dhcm4tb25jZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBjb3B5cmlnaHQgVmFsb3IgU29mdHdhcmVcbiAqIEBjb3B5cmlnaHQgQW5ndWxhciBuZy1ib290c3RyYXAgdGVhbVxuICovXG5cbmV4cG9ydCBjbGFzcyBUcmlnZ2VyIHtcbiAgb3Blbjogc3RyaW5nO1xuICBjbG9zZT86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihvcGVuOiBzdHJpbmcsIGNsb3NlPzogc3RyaW5nKSB7XG4gICAgdGhpcy5vcGVuID0gb3BlbjtcbiAgICB0aGlzLmNsb3NlID0gY2xvc2UgfHwgb3BlbjtcbiAgfVxuXG4gIGlzTWFudWFsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9wZW4gPT09ICdtYW51YWwnIHx8IHRoaXMuY2xvc2UgPT09ICdtYW51YWwnO1xuICB9XG59XG4iLCIvKipcbiAqIEBjb3B5cmlnaHQgVmFsb3IgU29mdHdhcmVcbiAqIEBjb3B5cmlnaHQgQW5ndWxhciBuZy1ib290c3RyYXAgdGVhbVxuICovXG5pbXBvcnQgeyBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyaWdnZXIgfSBmcm9tICcuL3RyaWdnZXIuY2xhc3MnO1xuXG4vKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWFueSAqL1xuZXhwb3J0IHR5cGUgQnNFdmVudENhbGxiYWNrID0gKGV2ZW50PzogYW55KSA9PiBib29sZWFuIHwgdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBMaXN0ZW5PcHRpb25zIHtcbiAgdGFyZ2V0PzogSFRNTEVsZW1lbnQ7XG4gIHRhcmdldHM/OiBIVE1MRWxlbWVudFtdO1xuICB0cmlnZ2Vycz86IHN0cmluZztcbiAgb3V0c2lkZUNsaWNrPzogYm9vbGVhbjtcbiAgc2hvdz86IEJzRXZlbnRDYWxsYmFjaztcbiAgaGlkZT86IEJzRXZlbnRDYWxsYmFjaztcbiAgdG9nZ2xlPzogQnNFdmVudENhbGxiYWNrO1xufVxuXG5jb25zdCBERUZBVUxUX0FMSUFTRVMgPSB7XG4gIGhvdmVyOiBbJ21vdXNlb3ZlcicsICdtb3VzZW91dCddLFxuICBmb2N1czogWydmb2N1c2luJywgJ2ZvY3Vzb3V0J11cbn07XG5cbi8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55ICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUcmlnZ2Vycyh0cmlnZ2Vyczogc3RyaW5nLCBhbGlhc2VzOiBhbnkgPSBERUZBVUxUX0FMSUFTRVMpOiBUcmlnZ2VyW10ge1xuICBjb25zdCB0cmltbWVkVHJpZ2dlcnMgPSAodHJpZ2dlcnMgfHwgJycpLnRyaW0oKTtcblxuICBpZiAodHJpbW1lZFRyaWdnZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGNvbnN0IHBhcnNlZFRyaWdnZXJzID0gdHJpbW1lZFRyaWdnZXJzXG4gICAgLnNwbGl0KC9cXHMrLylcbiAgICAubWFwKCh0cmlnZ2VyOiBzdHJpbmcpID0+IHRyaWdnZXIuc3BsaXQoJzonKSlcbiAgICAubWFwKCh0cmlnZ2VyUGFpcjogc3RyaW5nW10pID0+IHtcbiAgICAgIGNvbnN0IGFsaWFzID0gYWxpYXNlc1t0cmlnZ2VyUGFpclswXV0gfHwgdHJpZ2dlclBhaXI7XG5cbiAgICAgIHJldHVybiBuZXcgVHJpZ2dlcihhbGlhc1swXSwgYWxpYXNbMV0pO1xuICAgIH0pO1xuXG4gIGNvbnN0IG1hbnVhbFRyaWdnZXJzID0gcGFyc2VkVHJpZ2dlcnMuZmlsdGVyKCh0cmlnZ2VyUGFpcjogVHJpZ2dlcikgPT5cbiAgICB0cmlnZ2VyUGFpci5pc01hbnVhbCgpXG4gICk7XG5cbiAgaWYgKG1hbnVhbFRyaWdnZXJzLmxlbmd0aCA+IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyaWdnZXJzIHBhcnNlIGVycm9yOiBvbmx5IG9uZSBtYW51YWwgdHJpZ2dlciBpcyBhbGxvd2VkJyk7XG4gIH1cblxuICBpZiAobWFudWFsVHJpZ2dlcnMubGVuZ3RoID09PSAxICYmIHBhcnNlZFRyaWdnZXJzLmxlbmd0aCA+IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RyaWdnZXJzIHBhcnNlIGVycm9yOiBtYW51YWwgdHJpZ2dlciBjYW5cXCd0IGJlIG1peGVkIHdpdGggb3RoZXIgdHJpZ2dlcnMnKTtcbiAgfVxuXG4gIHJldHVybiBwYXJzZWRUcmlnZ2Vycztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGxpc3RlblRvVHJpZ2dlcnMocmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55ICovXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IGFueSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93Rm46IEJzRXZlbnRDYWxsYmFjayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpZGVGbjogQnNFdmVudENhbGxiYWNrLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlRm46IEJzRXZlbnRDYWxsYmFjayk6IEZ1bmN0aW9uIHtcbiAgY29uc3QgcGFyc2VkVHJpZ2dlcnMgPSBwYXJzZVRyaWdnZXJzKHRyaWdnZXJzKTtcbiAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1hbnkgKi9cbiAgY29uc3QgbGlzdGVuZXJzOiBhbnlbXSA9IFtdO1xuXG4gIGlmIChwYXJzZWRUcmlnZ2Vycy5sZW5ndGggPT09IDEgJiYgcGFyc2VkVHJpZ2dlcnNbMF0uaXNNYW51YWwoKSkge1xuICAgIHJldHVybiBGdW5jdGlvbi5wcm90b3R5cGU7XG4gIH1cblxuICBwYXJzZWRUcmlnZ2Vycy5mb3JFYWNoKCh0cmlnZ2VyOiBUcmlnZ2VyKSA9PiB7XG4gICAgaWYgKHRyaWdnZXIub3BlbiA9PT0gdHJpZ2dlci5jbG9zZSkge1xuICAgICAgbGlzdGVuZXJzLnB1c2gocmVuZGVyZXIubGlzdGVuKHRhcmdldCwgdHJpZ2dlci5vcGVuLCB0b2dnbGVGbikpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGlzdGVuZXJzLnB1c2goXG4gICAgICByZW5kZXJlci5saXN0ZW4odGFyZ2V0LCB0cmlnZ2VyLm9wZW4sIHNob3dGbiksXG4gICAgICByZW5kZXJlci5saXN0ZW4odGFyZ2V0LCB0cmlnZ2VyLmNsb3NlLCBoaWRlRm4pXG4gICAgKTtcbiAgfSk7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBsaXN0ZW5lcnMuZm9yRWFjaCgodW5zdWJzY3JpYmVGbjogRnVuY3Rpb24pID0+IHVuc3Vic2NyaWJlRm4oKSk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaXN0ZW5Ub1RyaWdnZXJzVjIocmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogTGlzdGVuT3B0aW9ucyk6IEZ1bmN0aW9uIHtcbiAgY29uc3QgcGFyc2VkVHJpZ2dlcnMgPSBwYXJzZVRyaWdnZXJzKG9wdGlvbnMudHJpZ2dlcnMpO1xuICBjb25zdCB0YXJnZXQgPSBvcHRpb25zLnRhcmdldDtcbiAgLy8gZG8gbm90aGluZ1xuICBpZiAocGFyc2VkVHJpZ2dlcnMubGVuZ3RoID09PSAxICYmIHBhcnNlZFRyaWdnZXJzWzBdLmlzTWFudWFsKCkpIHtcbiAgICByZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlO1xuICB9XG5cbiAgLy8gYWxsIGxpc3RlbmVyc1xuICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWFueSAqL1xuICBjb25zdCBsaXN0ZW5lcnM6IGFueVtdID0gW107XG5cbiAgLy8gbGF6eSBsaXN0ZW5lcnMgcmVnaXN0cmF0aW9uXG4gIGNvbnN0IF9yZWdpc3RlckhpZGU6IEZ1bmN0aW9uW10gPSBbXTtcbiAgY29uc3QgcmVnaXN0ZXJIaWRlID0gKCkgPT4ge1xuICAgIC8vIGFkZCBoaWRlIGxpc3RlbmVycyB0byB1bnJlZ2lzdGVyIGFycmF5XG4gICAgX3JlZ2lzdGVySGlkZS5mb3JFYWNoKChmbjogRnVuY3Rpb24pID0+IGxpc3RlbmVycy5wdXNoKGZuKCkpKTtcbiAgICAvLyByZWdpc3RlciBoaWRlIGV2ZW50cyBvbmx5IG9uY2VcbiAgICBfcmVnaXN0ZXJIaWRlLmxlbmd0aCA9IDA7XG4gIH07XG5cbiAgLy8gcmVnaXN0ZXIgb3BlblxcY2xvc2VcXHRvZ2dsZSBsaXN0ZW5lcnNcbiAgcGFyc2VkVHJpZ2dlcnMuZm9yRWFjaCgodHJpZ2dlcjogVHJpZ2dlcikgPT4ge1xuICAgIGNvbnN0IHVzZVRvZ2dsZSA9IHRyaWdnZXIub3BlbiA9PT0gdHJpZ2dlci5jbG9zZTtcbiAgICBjb25zdCBzaG93Rm4gPSB1c2VUb2dnbGUgPyBvcHRpb25zLnRvZ2dsZSA6IG9wdGlvbnMuc2hvdztcblxuICAgIGlmICghdXNlVG9nZ2xlKSB7XG4gICAgICBfcmVnaXN0ZXJIaWRlLnB1c2goKCkgPT5cbiAgICAgICAgcmVuZGVyZXIubGlzdGVuKHRhcmdldCwgdHJpZ2dlci5jbG9zZSwgb3B0aW9ucy5oaWRlKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsaXN0ZW5lcnMucHVzaChcbiAgICAgIHJlbmRlcmVyLmxpc3Rlbih0YXJnZXQsIHRyaWdnZXIub3BlbiwgKCkgPT4gc2hvd0ZuKHJlZ2lzdGVySGlkZSkpXG4gICAgKTtcbiAgfSk7XG5cbiAgcmV0dXJuICgpID0+IHtcbiAgICBsaXN0ZW5lcnMuZm9yRWFjaCgodW5zdWJzY3JpYmVGbjogRnVuY3Rpb24pID0+IHVuc3Vic2NyaWJlRm4oKSk7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3Rlck91dHNpZGVDbGljayhyZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IExpc3Rlbk9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zLm91dHNpZGVDbGljaykge1xuICAgIHJldHVybiBGdW5jdGlvbi5wcm90b3R5cGU7XG4gIH1cblxuICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWFueSAqL1xuICByZXR1cm4gcmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdjbGljaycsIChldmVudDogYW55KSA9PiB7XG4gICAgaWYgKG9wdGlvbnMudGFyZ2V0ICYmIG9wdGlvbnMudGFyZ2V0LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGlmIChcbiAgICAgIG9wdGlvbnMudGFyZ2V0cyAmJlxuICAgICAgb3B0aW9ucy50YXJnZXRzLnNvbWUodGFyZ2V0ID0+IHRhcmdldC5jb250YWlucyhldmVudC50YXJnZXQpKVxuICAgICkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBvcHRpb25zLmhpZGUoKTtcbiAgfSk7XG59XG4iLCIvKnRzbGludDpkaXNhYmxlICovXG4vKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKlxuICogSlMgdmVyc2lvbiBvZiBicm93c2VyIEFQSXMuIFRoaXMgbGlicmFyeSBjYW4gb25seSBydW4gaW4gdGhlIGJyb3dzZXIuXG4gKi9cbnZhciB3aW4gPSAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93KSB8fCA8YW55Pnt9O1xuXG5leHBvcnQgeyB3aW4gYXMgd2luZG93IH07XG5leHBvcnQgdmFyIGRvY3VtZW50ID0gd2luLmRvY3VtZW50O1xuZXhwb3J0IHZhciBsb2NhdGlvbiA9IHdpbi5sb2NhdGlvbjtcbmV4cG9ydCB2YXIgZ2MgPSB3aW5bJ2djJ10gPyAoKSA9PiB3aW5bJ2djJ10oKSA6ICgpOiBhbnkgPT4gbnVsbDtcbmV4cG9ydCB2YXIgcGVyZm9ybWFuY2UgPSB3aW5bJ3BlcmZvcm1hbmNlJ10gPyB3aW5bJ3BlcmZvcm1hbmNlJ10gOiBudWxsO1xuZXhwb3J0IGNvbnN0IEV2ZW50ID0gd2luWydFdmVudCddO1xuZXhwb3J0IGNvbnN0IE1vdXNlRXZlbnQgPSB3aW5bJ01vdXNlRXZlbnQnXTtcbmV4cG9ydCBjb25zdCBLZXlib2FyZEV2ZW50ID0gd2luWydLZXlib2FyZEV2ZW50J107XG5leHBvcnQgY29uc3QgRXZlbnRUYXJnZXQgPSB3aW5bJ0V2ZW50VGFyZ2V0J107XG5leHBvcnQgY29uc3QgSGlzdG9yeSA9IHdpblsnSGlzdG9yeSddO1xuZXhwb3J0IGNvbnN0IExvY2F0aW9uID0gd2luWydMb2NhdGlvbiddO1xuZXhwb3J0IGNvbnN0IEV2ZW50TGlzdGVuZXIgPSB3aW5bJ0V2ZW50TGlzdGVuZXInXTtcbiIsImltcG9ydCB7IHdpbmRvdyB9IGZyb20gJy4vZmFjYWRlL2Jyb3dzZXInO1xuXG5sZXQgZ3Vlc3NlZFZlcnNpb246ICdiczMnIHwgJ2JzNCc7XG5cbmZ1bmN0aW9uIF9ndWVzc0JzVmVyc2lvbigpOiAnYnMzJyB8ICdiczQnIHtcbiAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdCBzcGFuRWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gIHNwYW5FbC5pbm5lclRleHQgPSAndGVzdCBicyB2ZXJzaW9uJztcbiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzcGFuRWwpO1xuICBzcGFuRWwuY2xhc3NMaXN0LmFkZCgnZC1ub25lJyk7XG4gIGNvbnN0IHJlY3QgPSBzcGFuRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoc3BhbkVsKTtcbiAgaWYgKCFyZWN0KSB7XG4gICAgcmV0dXJuICdiczMnO1xuICB9XG5cbiAgcmV0dXJuIHJlY3QudG9wID09PSAwID8gJ2JzNCcgOiAnYnMzJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldFRoZW1lKHRoZW1lOiAnYnMzJyB8ICdiczQnKTogdm9pZCB7XG4gIGd1ZXNzZWRWZXJzaW9uID0gdGhlbWU7XG59XG5cbi8vIHRvZG86IGluIG5neC1ib290c3RyYXAsIGJzNCB3aWxsIGJlY2FtZSBhIGRlZmF1bHQgb25lXG5leHBvcnQgZnVuY3Rpb24gaXNCczMoKTogYm9vbGVhbiB7XG4gIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHR5cGVvZiB3aW5kb3cuX190aGVtZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBpZiAoZ3Vlc3NlZFZlcnNpb24pIHtcbiAgICAgIHJldHVybiBndWVzc2VkVmVyc2lvbiA9PT0gJ2JzMyc7XG4gICAgfVxuICAgIGd1ZXNzZWRWZXJzaW9uID0gX2d1ZXNzQnNWZXJzaW9uKCk7XG5cbiAgICByZXR1cm4gZ3Vlc3NlZFZlcnNpb24gPT09ICdiczMnO1xuICB9XG5cbiAgcmV0dXJuIHdpbmRvdy5fX3RoZW1lICE9PSAnYnM0Jztcbn1cbiIsImV4cG9ydCBjbGFzcyBMaW5rZWRMaXN0PFQ+IHtcbiAgbGVuZ3RoID0gMDtcbiAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1hbnkqL1xuICBwcm90ZWN0ZWQgaGVhZDogYW55O1xuICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWFueSovXG4gIHByb3RlY3RlZCB0YWlsOiBhbnk7XG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55Ki9cbiAgcHJvdGVjdGVkIGN1cnJlbnQ6IGFueTtcbiAgcHJvdGVjdGVkIGFzQXJyYXk6IFRbXSA9IFtdO1xuXG4gIGdldChwb3NpdGlvbjogbnVtYmVyKTogVCB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwIHx8IHBvc2l0aW9uIDwgMCB8fCBwb3NpdGlvbiA+PSB0aGlzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICB9XG5cbiAgICBsZXQgY3VycmVudCA9IHRoaXMuaGVhZDtcblxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBwb3NpdGlvbjsgaW5kZXgrKykge1xuICAgICAgY3VycmVudCA9IGN1cnJlbnQubmV4dDtcbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVudC52YWx1ZTtcbiAgfVxuXG4gIGFkZCh2YWx1ZTogVCwgcG9zaXRpb246IG51bWJlciA9IHRoaXMubGVuZ3RoKTogdm9pZCB7XG4gICAgaWYgKHBvc2l0aW9uIDwgMCB8fCBwb3NpdGlvbiA+IHRoaXMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Bvc2l0aW9uIGlzIG91dCBvZiB0aGUgbGlzdCcpO1xuICAgIH1cblxuICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55Ki9cbiAgICBjb25zdCBub2RlOiBhbnkgPSB7XG4gICAgICB2YWx1ZSxcbiAgICAgIG5leHQ6IHVuZGVmaW5lZCxcbiAgICAgIHByZXZpb3VzOiB1bmRlZmluZWRcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLmhlYWQgPSBub2RlO1xuICAgICAgdGhpcy50YWlsID0gbm9kZTtcbiAgICAgIHRoaXMuY3VycmVudCA9IG5vZGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwb3NpdGlvbiA9PT0gMCkge1xuICAgICAgICAvLyBmaXJzdCBub2RlXG4gICAgICAgIG5vZGUubmV4dCA9IHRoaXMuaGVhZDtcbiAgICAgICAgdGhpcy5oZWFkLnByZXZpb3VzID0gbm9kZTtcbiAgICAgICAgdGhpcy5oZWFkID0gbm9kZTtcbiAgICAgIH0gZWxzZSBpZiAocG9zaXRpb24gPT09IHRoaXMubGVuZ3RoKSB7XG4gICAgICAgIC8vIGxhc3Qgbm9kZVxuICAgICAgICB0aGlzLnRhaWwubmV4dCA9IG5vZGU7XG4gICAgICAgIG5vZGUucHJldmlvdXMgPSB0aGlzLnRhaWw7XG4gICAgICAgIHRoaXMudGFpbCA9IG5vZGU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBub2RlIGluIG1pZGRsZVxuICAgICAgICBjb25zdCBjdXJyZW50UHJldmlvdXNOb2RlID0gdGhpcy5nZXROb2RlKHBvc2l0aW9uIC0gMSk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnROZXh0Tm9kZSA9IGN1cnJlbnRQcmV2aW91c05vZGUubmV4dDtcblxuICAgICAgICBjdXJyZW50UHJldmlvdXNOb2RlLm5leHQgPSBub2RlO1xuICAgICAgICBjdXJyZW50TmV4dE5vZGUucHJldmlvdXMgPSBub2RlO1xuXG4gICAgICAgIG5vZGUucHJldmlvdXMgPSBjdXJyZW50UHJldmlvdXNOb2RlO1xuICAgICAgICBub2RlLm5leHQgPSBjdXJyZW50TmV4dE5vZGU7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMubGVuZ3RoKys7XG4gICAgdGhpcy5jcmVhdGVJbnRlcm5hbEFycmF5UmVwcmVzZW50YXRpb24oKTtcbiAgfVxuXG4gIHJlbW92ZShwb3NpdGlvbiA9IDApOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDAgfHwgcG9zaXRpb24gPCAwIHx8IHBvc2l0aW9uID49IHRoaXMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Bvc2l0aW9uIGlzIG91dCBvZiB0aGUgbGlzdCcpO1xuICAgIH1cblxuICAgIGlmIChwb3NpdGlvbiA9PT0gMCkge1xuICAgICAgLy8gZmlyc3Qgbm9kZVxuICAgICAgdGhpcy5oZWFkID0gdGhpcy5oZWFkLm5leHQ7XG5cbiAgICAgIGlmICh0aGlzLmhlYWQpIHtcbiAgICAgICAgLy8gdGhlcmUgaXMgbm8gc2Vjb25kIG5vZGVcbiAgICAgICAgdGhpcy5oZWFkLnByZXZpb3VzID0gdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdGhlcmUgaXMgbm8gc2Vjb25kIG5vZGVcbiAgICAgICAgdGhpcy50YWlsID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAocG9zaXRpb24gPT09IHRoaXMubGVuZ3RoIC0gMSkge1xuICAgICAgLy8gbGFzdCBub2RlXG4gICAgICB0aGlzLnRhaWwgPSB0aGlzLnRhaWwucHJldmlvdXM7XG4gICAgICB0aGlzLnRhaWwubmV4dCA9IHVuZGVmaW5lZDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gbWlkZGxlIG5vZGVcbiAgICAgIGNvbnN0IHJlbW92ZWROb2RlID0gdGhpcy5nZXROb2RlKHBvc2l0aW9uKTtcbiAgICAgIHJlbW92ZWROb2RlLm5leHQucHJldmlvdXMgPSByZW1vdmVkTm9kZS5wcmV2aW91cztcbiAgICAgIHJlbW92ZWROb2RlLnByZXZpb3VzLm5leHQgPSByZW1vdmVkTm9kZS5uZXh0O1xuICAgIH1cblxuICAgIHRoaXMubGVuZ3RoLS07XG4gICAgdGhpcy5jcmVhdGVJbnRlcm5hbEFycmF5UmVwcmVzZW50YXRpb24oKTtcbiAgfVxuXG4gIHNldChwb3NpdGlvbjogbnVtYmVyLCB2YWx1ZTogVCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCB8fCBwb3NpdGlvbiA8IDAgfHwgcG9zaXRpb24gPj0gdGhpcy5sZW5ndGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUG9zaXRpb24gaXMgb3V0IG9mIHRoZSBsaXN0Jyk7XG4gICAgfVxuXG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZShwb3NpdGlvbik7XG4gICAgbm9kZS52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuY3JlYXRlSW50ZXJuYWxBcnJheVJlcHJlc2VudGF0aW9uKCk7XG4gIH1cblxuICB0b0FycmF5KCk6IFRbXSB7XG4gICAgcmV0dXJuIHRoaXMuYXNBcnJheTtcbiAgfVxuXG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55Ki9cbiAgZmluZEFsbChmbjogYW55KTogYW55W10ge1xuICAgIGxldCBjdXJyZW50ID0gdGhpcy5oZWFkO1xuICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55Ki9cbiAgICBjb25zdCByZXN1bHQ6IGFueVtdID0gW107XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBpZiAoZm4oY3VycmVudC52YWx1ZSwgaW5kZXgpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHtpbmRleCwgdmFsdWU6IGN1cnJlbnQudmFsdWV9KTtcbiAgICAgIH1cbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8vIEFycmF5IG1ldGhvZHMgb3ZlcnJpZGluZyBzdGFydFxuICBwdXNoKC4uLmFyZ3M6IFRbXSk6IG51bWJlciB7XG4gICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1hbnkqL1xuICAgIGFyZ3MuZm9yRWFjaCgoYXJnOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuYWRkKGFyZyk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5sZW5ndGg7XG4gIH1cblxuICBwb3AoKTogVCB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBjb25zdCBsYXN0ID0gdGhpcy50YWlsO1xuICAgIHRoaXMucmVtb3ZlKHRoaXMubGVuZ3RoIC0gMSk7XG5cbiAgICByZXR1cm4gbGFzdC52YWx1ZTtcbiAgfVxuXG4gIHVuc2hpZnQoLi4uYXJnczogVFtdKTogbnVtYmVyIHtcbiAgICBhcmdzLnJldmVyc2UoKTtcbiAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWFueSovXG4gICAgYXJncy5mb3JFYWNoKChhcmc6IGFueSkgPT4ge1xuICAgICAgdGhpcy5hZGQoYXJnLCAwKTtcbiAgICB9KTtcblxuICAgIHJldHVybiB0aGlzLmxlbmd0aDtcbiAgfVxuXG4gIHNoaWZ0KCk6IFQge1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgbGFzdEl0ZW0gPSB0aGlzLmhlYWQudmFsdWU7XG4gICAgdGhpcy5yZW1vdmUoKTtcblxuICAgIHJldHVybiBsYXN0SXRlbTtcbiAgfVxuXG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55Ki9cbiAgZm9yRWFjaChmbjogYW55KTogdm9pZCB7XG4gICAgbGV0IGN1cnJlbnQgPSB0aGlzLmhlYWQ7XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBmbihjdXJyZW50LnZhbHVlLCBpbmRleCk7XG4gICAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0O1xuICAgIH1cbiAgfVxuXG4gIGluZGV4T2YodmFsdWU6IFQpOiBudW1iZXIge1xuICAgIGxldCBjdXJyZW50ID0gdGhpcy5oZWFkO1xuICAgIGxldCBwb3NpdGlvbiA9IDA7XG5cbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGlmIChjdXJyZW50LnZhbHVlID09PSB2YWx1ZSkge1xuICAgICAgICBwb3NpdGlvbiA9IGluZGV4O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBvc2l0aW9uO1xuICB9XG5cbiAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1hbnkqL1xuICBzb21lKGZuOiBhbnkpOiBib29sZWFuIHtcbiAgICBsZXQgY3VycmVudCA9IHRoaXMuaGVhZDtcbiAgICBsZXQgcmVzdWx0ID0gZmFsc2U7XG4gICAgd2hpbGUgKGN1cnJlbnQgJiYgIXJlc3VsdCkge1xuICAgICAgaWYgKGZuKGN1cnJlbnQudmFsdWUpKSB7XG4gICAgICAgIHJlc3VsdCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY3VycmVudCA9IGN1cnJlbnQubmV4dDtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1hbnkqL1xuICBldmVyeShmbjogYW55KTogYm9vbGVhbiB7XG4gICAgbGV0IGN1cnJlbnQgPSB0aGlzLmhlYWQ7XG4gICAgbGV0IHJlc3VsdCA9IHRydWU7XG4gICAgd2hpbGUgKGN1cnJlbnQgJiYgcmVzdWx0KSB7XG4gICAgICBpZiAoIWZuKGN1cnJlbnQudmFsdWUpKSB7XG4gICAgICAgIHJlc3VsdCA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgY3VycmVudCA9IGN1cnJlbnQubmV4dDtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ1tMaW5rZWQgTGlzdF0nO1xuICB9XG5cbiAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1hbnkqL1xuICBmaW5kKGZuOiBhbnkpOiBUIHtcbiAgICBsZXQgY3VycmVudCA9IHRoaXMuaGVhZDtcbiAgICBsZXQgcmVzdWx0OiBUO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgaWYgKGZuKGN1cnJlbnQudmFsdWUsIGluZGV4KSkge1xuICAgICAgICByZXN1bHQgPSBjdXJyZW50LnZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55Ki9cbiAgZmluZEluZGV4KGZuOiBhbnkpOiBudW1iZXIge1xuICAgIGxldCBjdXJyZW50ID0gdGhpcy5oZWFkO1xuICAgIGxldCByZXN1bHQ6IG51bWJlcjtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGlmIChmbihjdXJyZW50LnZhbHVlLCBpbmRleCkpIHtcbiAgICAgICAgcmVzdWx0ID0gaW5kZXg7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY3VycmVudCA9IGN1cnJlbnQubmV4dDtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1hbnkqL1xuICBwcm90ZWN0ZWQgZ2V0Tm9kZShwb3NpdGlvbjogbnVtYmVyKTogYW55IHtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDAgfHwgcG9zaXRpb24gPCAwIHx8IHBvc2l0aW9uID49IHRoaXMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Bvc2l0aW9uIGlzIG91dCBvZiB0aGUgbGlzdCcpO1xuICAgIH1cblxuICAgIGxldCBjdXJyZW50ID0gdGhpcy5oZWFkO1xuXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHBvc2l0aW9uOyBpbmRleCsrKSB7XG4gICAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0O1xuICAgIH1cblxuICAgIHJldHVybiBjdXJyZW50O1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZUludGVybmFsQXJyYXlSZXByZXNlbnRhdGlvbigpOiB2b2lkIHtcbiAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWFueSovXG4gICAgY29uc3Qgb3V0QXJyYXk6IGFueVtdID0gW107XG4gICAgbGV0IGN1cnJlbnQgPSB0aGlzLmhlYWQ7XG5cbiAgICB3aGlsZSAoY3VycmVudCkge1xuICAgICAgb3V0QXJyYXkucHVzaChjdXJyZW50LnZhbHVlKTtcbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5leHQ7XG4gICAgfVxuICAgIHRoaXMuYXNBcnJheSA9IG91dEFycmF5O1xuICB9XG5cbiAgLy8gQXJyYXkgbWV0aG9kcyBvdmVycmlkaW5nIEVORFxufVxuIiwiLyp0c2xpbnQ6ZGlzYWJsZTpuby1pbnZhbGlkLXRoaXMgKi9cbi8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55ICovXG5leHBvcnQgZnVuY3Rpb24gT25DaGFuZ2UoZGVmYXVsdFZhbHVlPzogYW55KTogYW55IHtcbiAgY29uc3Qgc3VmaXggPSAnQ2hhbmdlJztcblxuICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWFueSAqL1xuICByZXR1cm4gZnVuY3Rpb24gT25DaGFuZ2VIYW5kbGVyKHRhcmdldDogYW55LCBwcm9wZXJ0eUtleTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgX2tleSA9IGAgX18ke3Byb3BlcnR5S2V5fVZhbHVlYDtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBwcm9wZXJ0eUtleSwge1xuICAgICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1hbnkgKi9cbiAgICAgIGdldCgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpc1tfa2V5XTtcbiAgICAgIH0sXG4gICAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWFueSAqL1xuICAgICAgc2V0KHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcHJldlZhbHVlID0gdGhpc1tfa2V5XTtcbiAgICAgICAgdGhpc1tfa2V5XSA9IHZhbHVlO1xuICAgICAgICBpZiAocHJldlZhbHVlICE9PSB2YWx1ZSAmJiB0aGlzW3Byb3BlcnR5S2V5ICsgc3VmaXhdKSB7XG4gICAgICAgICAgdGhpc1twcm9wZXJ0eUtleSArIHN1Zml4XS5lbWl0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9O1xufVxuLyogdHNsaW50OmVuYWJsZSAqL1xuIiwiaW1wb3J0IHsgd2luZG93IH0gZnJvbSAnLi9mYWNhZGUvYnJvd3Nlcic7XG5cbmV4cG9ydCBjbGFzcyBVdGlscyB7XG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55ICovXG4gIHN0YXRpYyByZWZsb3coZWxlbWVudDogYW55KTogdm9pZCB7XG4gICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1hbnkgKi9cbiAgICAoKGJzOiBhbnkpOiB2b2lkID0+IGJzKShlbGVtZW50Lm9mZnNldEhlaWdodCk7XG4gIH1cblxuICAvLyBzb3VyY2U6IGh0dHBzOi8vZ2l0aHViLmNvbS9qcXVlcnkvanF1ZXJ5L2Jsb2IvbWFzdGVyL3NyYy9jc3MvdmFyL2dldFN0eWxlcy5qc1xuICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWFueSAqL1xuICBzdGF0aWMgZ2V0U3R5bGVzKGVsZW06IGFueSk6IGFueSB7XG4gICAgLy8gU3VwcG9ydDogSUUgPD0xMSBvbmx5LCBGaXJlZm94IDw9MzAgKCMxNTA5OCwgIzE0MTUwKVxuICAgIC8vIElFIHRocm93cyBvbiBlbGVtZW50cyBjcmVhdGVkIGluIHBvcHVwc1xuICAgIC8vIEZGIG1lYW53aGlsZSB0aHJvd3Mgb24gZnJhbWUgZWxlbWVudHMgdGhyb3VnaCBcImRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGVcIlxuICAgIGxldCB2aWV3ID0gZWxlbS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3O1xuXG4gICAgaWYgKCF2aWV3IHx8ICF2aWV3Lm9wZW5lcikge1xuICAgICAgdmlldyA9IHdpbmRvdztcbiAgICB9XG5cbiAgICByZXR1cm4gdmlldy5nZXRDb21wdXRlZFN0eWxlKGVsZW0pO1xuICB9XG59XG4iLCJpbXBvcnQgeyBpc0Rldk1vZGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmNvbnN0IF9tZXNzYWdlc0hhc2g6IHsgW2tleTogc3RyaW5nXTogYm9vbGVhbiB9ID0ge307XG5jb25zdCBfaGlkZU1zZyA9IHR5cGVvZiBjb25zb2xlID09PSAndW5kZWZpbmVkJyB8fCAhKCd3YXJuJyBpbiBjb25zb2xlKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHdhcm5PbmNlKG1zZzogc3RyaW5nKTogdm9pZCB7XG4gIGlmICghaXNEZXZNb2RlKCkgfHwgX2hpZGVNc2cgfHwgbXNnIGluIF9tZXNzYWdlc0hhc2gpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBfbWVzc2FnZXNIYXNoW21zZ10gPSB0cnVlO1xuICAvKnRzbGludDpkaXNhYmxlLW5leHQtbGluZSovXG4gIGNvbnNvbGUud2Fybihtc2cpO1xufVxuIl0sIm5hbWVzIjpbImRvY3VtZW50Iiwid2luZG93IiwiaXNEZXZNb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUtBLFFBQUE7UUFJRSxpQkFBWSxJQUFZLEVBQUUsS0FBYztZQUN0QyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztZQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssSUFBSSxJQUFJLENBQUM7U0FDNUI7Ozs7UUFFRCwwQkFBUTs7O1lBQVI7Z0JBQ0Us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
792
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWJvb3RzdHJhcC11dGlscy51bWQuanMubWFwIiwic291cmNlcyI6WyJuZzovL25neC1ib290c3RyYXAvdXRpbHMvdHJpZ2dlci5jbGFzcy50cyIsIm5nOi8vbmd4LWJvb3RzdHJhcC91dGlscy90cmlnZ2Vycy50cyIsIm5nOi8vbmd4LWJvb3RzdHJhcC91dGlscy9mYWNhZGUvYnJvd3Nlci50cyIsIm5nOi8vbmd4LWJvb3RzdHJhcC91dGlscy90aGVtZS1wcm92aWRlci50cyIsIm5nOi8vbmd4LWJvb3RzdHJhcC91dGlscy9saW5rZWQtbGlzdC5jbGFzcy50cyIsIm5nOi8vbmd4LWJvb3RzdHJhcC91dGlscy9kZWNvcmF0b3JzLnRzIiwibmc6Ly9uZ3gtYm9vdHN0cmFwL3V0aWxzL3V0aWxzLmNsYXNzLnRzIiwibmc6Ly9uZ3gtYm9vdHN0cmFwL3V0aWxzL3dhcm4tb25jZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBjb3B5cmlnaHQgVmFsb3IgU29mdHdhcmVcbiAqIEBjb3B5cmlnaHQgQW5ndWxhciBuZy1ib290c3RyYXAgdGVhbVxuICovXG5cbmV4cG9ydCBjbGFzcyBUcmlnZ2VyIHtcbiAgb3Blbjogc3RyaW5nO1xuICBjbG9zZT86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihvcGVuOiBzdHJpbmcsIGNsb3NlPzogc3RyaW5nKSB7XG4gICAgdGhpcy5vcGVuID0gb3BlbjtcbiAgICB0aGlzLmNsb3NlID0gY2xvc2UgfHwgb3BlbjtcbiAgfVxuXG4gIGlzTWFudWFsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9wZW4gPT09ICdtYW51YWwnIHx8IHRoaXMuY2xvc2UgPT09ICdtYW51YWwnO1xuICB9XG59XG4iLCIvKipcbiAqIEBjb3B5cmlnaHQgVmFsb3IgU29mdHdhcmVcbiAqIEBjb3B5cmlnaHQgQW5ndWxhciBuZy1ib290c3RyYXAgdGVhbVxuICovXG5pbXBvcnQgeyBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyaWdnZXIgfSBmcm9tICcuL3RyaWdnZXIuY2xhc3MnO1xuXG4vKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWFueSAqL1xuZXhwb3J0IHR5cGUgQnNFdmVudENhbGxiYWNrID0gKGV2ZW50PzogYW55KSA9PiBib29sZWFuIHwgdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBMaXN0ZW5PcHRpb25zIHtcbiAgdGFyZ2V0PzogSFRNTEVsZW1lbnQ7XG4gIHRhcmdldHM/OiBIVE1MRWxlbWVudFtdO1xuICB0cmlnZ2Vycz86IHN0cmluZztcbiAgb3V0c2lkZUNsaWNrPzogYm9vbGVhbjtcbiAgb3V0c2lkZUVzYz86IGJvb2xlYW47XG4gIHNob3c/OiBCc0V2ZW50Q2FsbGJhY2s7XG4gIGhpZGU/OiBCc0V2ZW50Q2FsbGJhY2s7XG4gIHRvZ2dsZT86IEJzRXZlbnRDYWxsYmFjaztcbn1cblxuY29uc3QgREVGQVVMVF9BTElBU0VTID0ge1xuICBob3ZlcjogWydtb3VzZW92ZXInLCAnbW91c2VvdXQnXSxcbiAgZm9jdXM6IFsnZm9jdXNpbicsICdmb2N1c291dCddXG59O1xuXG4vKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWFueSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVHJpZ2dlcnModHJpZ2dlcnM6IHN0cmluZywgYWxpYXNlczogYW55ID0gREVGQVVMVF9BTElBU0VTKTogVHJpZ2dlcltdIHtcbiAgY29uc3QgdHJpbW1lZFRyaWdnZXJzID0gKHRyaWdnZXJzIHx8ICcnKS50cmltKCk7XG5cbiAgaWYgKHRyaW1tZWRUcmlnZ2Vycy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBjb25zdCBwYXJzZWRUcmlnZ2VycyA9IHRyaW1tZWRUcmlnZ2Vyc1xuICAgIC5zcGxpdCgvXFxzKy8pXG4gICAgLm1hcCgodHJpZ2dlcjogc3RyaW5nKSA9PiB0cmlnZ2VyLnNwbGl0KCc6JykpXG4gICAgLm1hcCgodHJpZ2dlclBhaXI6IHN0cmluZ1tdKSA9PiB7XG4gICAgICBjb25zdCBhbGlhcyA9IGFsaWFzZXNbdHJpZ2dlclBhaXJbMF1dIHx8IHRyaWdnZXJQYWlyO1xuXG4gICAgICByZXR1cm4gbmV3IFRyaWdnZXIoYWxpYXNbMF0sIGFsaWFzWzFdKTtcbiAgICB9KTtcblxuICBjb25zdCBtYW51YWxUcmlnZ2VycyA9IHBhcnNlZFRyaWdnZXJzLmZpbHRlcigodHJpZ2dlclBhaXI6IFRyaWdnZXIpID0+XG4gICAgdHJpZ2dlclBhaXIuaXNNYW51YWwoKVxuICApO1xuXG4gIGlmIChtYW51YWxUcmlnZ2Vycy5sZW5ndGggPiAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUcmlnZ2VycyBwYXJzZSBlcnJvcjogb25seSBvbmUgbWFudWFsIHRyaWdnZXIgaXMgYWxsb3dlZCcpO1xuICB9XG5cbiAgaWYgKG1hbnVhbFRyaWdnZXJzLmxlbmd0aCA9PT0gMSAmJiBwYXJzZWRUcmlnZ2Vycy5sZW5ndGggPiAxKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUcmlnZ2VycyBwYXJzZSBlcnJvcjogbWFudWFsIHRyaWdnZXIgY2FuXFwndCBiZSBtaXhlZCB3aXRoIG90aGVyIHRyaWdnZXJzJyk7XG4gIH1cblxuICByZXR1cm4gcGFyc2VkVHJpZ2dlcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBsaXN0ZW5Ub1RyaWdnZXJzKHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWFueSAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBhbnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2Vyczogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0ZuOiBCc0V2ZW50Q2FsbGJhY2ssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWRlRm46IEJzRXZlbnRDYWxsYmFjayxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUZuOiBCc0V2ZW50Q2FsbGJhY2spOiBGdW5jdGlvbiB7XG4gIGNvbnN0IHBhcnNlZFRyaWdnZXJzID0gcGFyc2VUcmlnZ2Vycyh0cmlnZ2Vycyk7XG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55ICovXG4gIGNvbnN0IGxpc3RlbmVyczogYW55W10gPSBbXTtcblxuICBpZiAocGFyc2VkVHJpZ2dlcnMubGVuZ3RoID09PSAxICYmIHBhcnNlZFRyaWdnZXJzWzBdLmlzTWFudWFsKCkpIHtcbiAgICByZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlO1xuICB9XG5cbiAgcGFyc2VkVHJpZ2dlcnMuZm9yRWFjaCgodHJpZ2dlcjogVHJpZ2dlcikgPT4ge1xuICAgIGlmICh0cmlnZ2VyLm9wZW4gPT09IHRyaWdnZXIuY2xvc2UpIHtcbiAgICAgIGxpc3RlbmVycy5wdXNoKHJlbmRlcmVyLmxpc3Rlbih0YXJnZXQsIHRyaWdnZXIub3BlbiwgdG9nZ2xlRm4pKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxpc3RlbmVycy5wdXNoKFxuICAgICAgcmVuZGVyZXIubGlzdGVuKHRhcmdldCwgdHJpZ2dlci5vcGVuLCBzaG93Rm4pLFxuICAgICAgcmVuZGVyZXIubGlzdGVuKHRhcmdldCwgdHJpZ2dlci5jbG9zZSwgaGlkZUZuKVxuICAgICk7XG4gIH0pO1xuXG4gIHJldHVybiAoKSA9PiB7XG4gICAgbGlzdGVuZXJzLmZvckVhY2goKHVuc3Vic2NyaWJlRm46IEZ1bmN0aW9uKSA9PiB1bnN1YnNjcmliZUZuKCkpO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbGlzdGVuVG9UcmlnZ2Vyc1YyKHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IExpc3Rlbk9wdGlvbnMpOiBGdW5jdGlvbiB7XG4gIGNvbnN0IHBhcnNlZFRyaWdnZXJzID0gcGFyc2VUcmlnZ2VycyhvcHRpb25zLnRyaWdnZXJzKTtcbiAgY29uc3QgdGFyZ2V0ID0gb3B0aW9ucy50YXJnZXQ7XG4gIC8vIGRvIG5vdGhpbmdcbiAgaWYgKHBhcnNlZFRyaWdnZXJzLmxlbmd0aCA9PT0gMSAmJiBwYXJzZWRUcmlnZ2Vyc1swXS5pc01hbnVhbCgpKSB7XG4gICAgcmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZTtcbiAgfVxuXG4gIC8vIGFsbCBsaXN0ZW5lcnNcbiAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1hbnkgKi9cbiAgY29uc3QgbGlzdGVuZXJzOiBhbnlbXSA9IFtdO1xuXG4gIC8vIGxhenkgbGlzdGVuZXJzIHJlZ2lzdHJhdGlvblxuICBjb25zdCBfcmVnaXN0ZXJIaWRlOiBGdW5jdGlvbltdID0gW107XG4gIGNvbnN0IHJlZ2lzdGVySGlkZSA9ICgpID0+IHtcbiAgICAvLyBhZGQgaGlkZSBsaXN0ZW5lcnMgdG8gdW5yZWdpc3RlciBhcnJheVxuICAgIF9yZWdpc3RlckhpZGUuZm9yRWFjaCgoZm46IEZ1bmN0aW9uKSA9PiBsaXN0ZW5lcnMucHVzaChmbigpKSk7XG4gICAgLy8gcmVnaXN0ZXIgaGlkZSBldmVudHMgb25seSBvbmNlXG4gICAgX3JlZ2lzdGVySGlkZS5sZW5ndGggPSAwO1xuICB9O1xuXG4gIC8vIHJlZ2lzdGVyIG9wZW5cXGNsb3NlXFx0b2dnbGUgbGlzdGVuZXJzXG4gIHBhcnNlZFRyaWdnZXJzLmZvckVhY2goKHRyaWdnZXI6IFRyaWdnZXIpID0+IHtcbiAgICBjb25zdCB1c2VUb2dnbGUgPSB0cmlnZ2VyLm9wZW4gPT09IHRyaWdnZXIuY2xvc2U7XG4gICAgY29uc3Qgc2hvd0ZuID0gdXNlVG9nZ2xlID8gb3B0aW9ucy50b2dnbGUgOiBvcHRpb25zLnNob3c7XG5cbiAgICBpZiAoIXVzZVRvZ2dsZSkge1xuICAgICAgX3JlZ2lzdGVySGlkZS5wdXNoKCgpID0+XG4gICAgICAgIHJlbmRlcmVyLmxpc3Rlbih0YXJnZXQsIHRyaWdnZXIuY2xvc2UsIG9wdGlvbnMuaGlkZSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGlzdGVuZXJzLnB1c2goXG4gICAgICByZW5kZXJlci5saXN0ZW4odGFyZ2V0LCB0cmlnZ2VyLm9wZW4sICgpID0+IHNob3dGbihyZWdpc3RlckhpZGUpKVxuICAgICk7XG4gIH0pO1xuXG4gIHJldHVybiAoKSA9PiB7XG4gICAgbGlzdGVuZXJzLmZvckVhY2goKHVuc3Vic2NyaWJlRm46IEZ1bmN0aW9uKSA9PiB1bnN1YnNjcmliZUZuKCkpO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJPdXRzaWRlQ2xpY2socmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBMaXN0ZW5PcHRpb25zKSB7XG4gIGlmICghb3B0aW9ucy5vdXRzaWRlQ2xpY2spIHtcbiAgICByZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlO1xuICB9XG5cbiAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1hbnkgKi9cbiAgcmV0dXJuIHJlbmRlcmVyLmxpc3RlbignZG9jdW1lbnQnLCAnY2xpY2snLCAoZXZlbnQ6IGFueSkgPT4ge1xuICAgIGlmIChvcHRpb25zLnRhcmdldCAmJiBvcHRpb25zLnRhcmdldC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBvcHRpb25zLnRhcmdldHMgJiZcbiAgICAgIG9wdGlvbnMudGFyZ2V0cy5zb21lKHRhcmdldCA9PiB0YXJnZXQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSlcbiAgICApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgb3B0aW9ucy5oaWRlKCk7XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJFc2NDbGljayhyZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogTGlzdGVuT3B0aW9ucykge1xuICBpZiAoIW9wdGlvbnMub3V0c2lkZUVzYykge1xuICAgIHJldHVybiBGdW5jdGlvbi5wcm90b3R5cGU7XG4gIH1cblxuICByZXR1cm4gcmVuZGVyZXIubGlzdGVuKCdkb2N1bWVudCcsICdrZXl1cC5lc2MnLCAoZXZlbnQ6IGFueSkgPT4ge1xuICAgIGlmIChvcHRpb25zLnRhcmdldCAmJiBvcHRpb25zLnRhcmdldC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBvcHRpb25zLnRhcmdldHMgJiZcbiAgICAgIG9wdGlvbnMudGFyZ2V0cy5zb21lKHRhcmdldCA9PiB0YXJnZXQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSlcbiAgICApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgb3B0aW9ucy5oaWRlKCk7XG4gIH0pO1xufVxuIiwiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vKipcbiAqIEpTIHZlcnNpb24gb2YgYnJvd3NlciBBUElzLiBUaGlzIGxpYnJhcnkgY2FuIG9ubHkgcnVuIGluIHRoZSBicm93c2VyLlxuICovXG5jb25zdCB3aW4gPSAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93KSB8fCB7fSBhcyBhbnk7XG5cbmV4cG9ydCB7IHdpbiBhcyB3aW5kb3cgfTtcbmV4cG9ydCBjb25zdCBkb2N1bWVudCA9IHdpbi5kb2N1bWVudDtcbmV4cG9ydCBjb25zdCBsb2NhdGlvbiA9IHdpbi5sb2NhdGlvbjtcbmV4cG9ydCBjb25zdCBnYyA9IHdpbi5nYyA/ICgpID0+IHdpbi5nYygpIDogKCk6IGFueSA9PiBudWxsO1xuZXhwb3J0IGNvbnN0IHBlcmZvcm1hbmNlID0gd2luLnBlcmZvcm1hbmNlID8gd2luLnBlcmZvcm1hbmNlIDogbnVsbDtcbmV4cG9ydCBjb25zdCBFdmVudCA9IHdpbi5FdmVudDtcbmV4cG9ydCBjb25zdCBNb3VzZUV2ZW50ID0gd2luLk1vdXNlRXZlbnQ7XG5leHBvcnQgY29uc3QgS2V5Ym9hcmRFdmVudCA9IHdpbi5LZXlib2FyZEV2ZW50O1xuZXhwb3J0IGNvbnN0IEV2ZW50VGFyZ2V0ID0gd2luLkV2ZW50VGFyZ2V0O1xuZXhwb3J0IGNvbnN0IEhpc3RvcnkgPSB3aW4uSGlzdG9yeTtcbmV4cG9ydCBjb25zdCBMb2NhdGlvbiA9IHdpbi5Mb2NhdGlvbjtcbmV4cG9ydCBjb25zdCBFdmVudExpc3RlbmVyID0gd2luLkV2ZW50TGlzdGVuZXI7XG4iLCJpbXBvcnQgeyB3aW5kb3cgfSBmcm9tICcuL2ZhY2FkZS9icm93c2VyJztcblxubGV0IGd1ZXNzZWRWZXJzaW9uOiAnYnMzJyB8ICdiczQnO1xuXG5mdW5jdGlvbiBfZ3Vlc3NCc1ZlcnNpb24oKTogJ2JzMycgfCAnYnM0JyB7XG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3Qgc3BhbkVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICBzcGFuRWwuaW5uZXJUZXh0ID0gJ3Rlc3QgYnMgdmVyc2lvbic7XG4gIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc3BhbkVsKTtcbiAgc3BhbkVsLmNsYXNzTGlzdC5hZGQoJ2Qtbm9uZScpO1xuICBjb25zdCByZWN0ID0gc3BhbkVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHNwYW5FbCk7XG4gIGlmICghcmVjdCkge1xuICAgIHJldHVybiAnYnMzJztcbiAgfVxuXG4gIHJldHVybiByZWN0LnRvcCA9PT0gMCA/ICdiczQnIDogJ2JzMyc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRUaGVtZSh0aGVtZTogJ2JzMycgfCAnYnM0Jyk6IHZvaWQge1xuICBndWVzc2VkVmVyc2lvbiA9IHRoZW1lO1xufVxuXG4vLyB0b2RvOiBpbiBuZ3gtYm9vdHN0cmFwLCBiczQgd2lsbCBiZWNhbWUgYSBkZWZhdWx0IG9uZVxuZXhwb3J0IGZ1bmN0aW9uIGlzQnMzKCk6IGJvb2xlYW4ge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygd2luZG93Ll9fdGhlbWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgaWYgKGd1ZXNzZWRWZXJzaW9uKSB7XG4gICAgICByZXR1cm4gZ3Vlc3NlZFZlcnNpb24gPT09ICdiczMnO1xuICAgIH1cbiAgICBndWVzc2VkVmVyc2lvbiA9IF9ndWVzc0JzVmVyc2lvbigpO1xuXG4gICAgcmV0dXJuIGd1ZXNzZWRWZXJzaW9uID09PSAnYnMzJztcbiAgfVxuXG4gIHJldHVybiB3aW5kb3cuX190aGVtZSAhPT0gJ2JzNCc7XG59XG4iLCJleHBvcnQgY2xhc3MgTGlua2VkTGlzdDxUPiB7XG4gIGxlbmd0aCA9IDA7XG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55Ki9cbiAgcHJvdGVjdGVkIGhlYWQ6IGFueTtcbiAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1hbnkqL1xuICBwcm90ZWN0ZWQgdGFpbDogYW55O1xuICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWFueSovXG4gIHByb3RlY3RlZCBjdXJyZW50OiBhbnk7XG4gIHByb3RlY3RlZCBhc0FycmF5OiBUW10gPSBbXTtcblxuICBnZXQocG9zaXRpb246IG51bWJlcik6IFQge1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCB8fCBwb3NpdGlvbiA8IDAgfHwgcG9zaXRpb24gPj0gdGhpcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB2b2lkIDA7XG4gICAgfVxuXG4gICAgbGV0IGN1cnJlbnQgPSB0aGlzLmhlYWQ7XG5cbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcG9zaXRpb247IGluZGV4KyspIHtcbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGN1cnJlbnQudmFsdWU7XG4gIH1cblxuICBhZGQodmFsdWU6IFQsIHBvc2l0aW9uOiBudW1iZXIgPSB0aGlzLmxlbmd0aCk6IHZvaWQge1xuICAgIGlmIChwb3NpdGlvbiA8IDAgfHwgcG9zaXRpb24gPiB0aGlzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQb3NpdGlvbiBpcyBvdXQgb2YgdGhlIGxpc3QnKTtcbiAgICB9XG5cbiAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWFueSovXG4gICAgY29uc3Qgbm9kZTogYW55ID0ge1xuICAgICAgdmFsdWUsXG4gICAgICBuZXh0OiB1bmRlZmluZWQsXG4gICAgICBwcmV2aW91czogdW5kZWZpbmVkXG4gICAgfTtcblxuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5oZWFkID0gbm9kZTtcbiAgICAgIHRoaXMudGFpbCA9IG5vZGU7XG4gICAgICB0aGlzLmN1cnJlbnQgPSBub2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocG9zaXRpb24gPT09IDApIHtcbiAgICAgICAgLy8gZmlyc3Qgbm9kZVxuICAgICAgICBub2RlLm5leHQgPSB0aGlzLmhlYWQ7XG4gICAgICAgIHRoaXMuaGVhZC5wcmV2aW91cyA9IG5vZGU7XG4gICAgICAgIHRoaXMuaGVhZCA9IG5vZGU7XG4gICAgICB9IGVsc2UgaWYgKHBvc2l0aW9uID09PSB0aGlzLmxlbmd0aCkge1xuICAgICAgICAvLyBsYXN0IG5vZGVcbiAgICAgICAgdGhpcy50YWlsLm5leHQgPSBub2RlO1xuICAgICAgICBub2RlLnByZXZpb3VzID0gdGhpcy50YWlsO1xuICAgICAgICB0aGlzLnRhaWwgPSBub2RlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gbm9kZSBpbiBtaWRkbGVcbiAgICAgICAgY29uc3QgY3VycmVudFByZXZpb3VzTm9kZSA9IHRoaXMuZ2V0Tm9kZShwb3NpdGlvbiAtIDEpO1xuICAgICAgICBjb25zdCBjdXJyZW50TmV4dE5vZGUgPSBjdXJyZW50UHJldmlvdXNOb2RlLm5leHQ7XG5cbiAgICAgICAgY3VycmVudFByZXZpb3VzTm9kZS5uZXh0ID0gbm9kZTtcbiAgICAgICAgY3VycmVudE5leHROb2RlLnByZXZpb3VzID0gbm9kZTtcblxuICAgICAgICBub2RlLnByZXZpb3VzID0gY3VycmVudFByZXZpb3VzTm9kZTtcbiAgICAgICAgbm9kZS5uZXh0ID0gY3VycmVudE5leHROb2RlO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmxlbmd0aCsrO1xuICAgIHRoaXMuY3JlYXRlSW50ZXJuYWxBcnJheVJlcHJlc2VudGF0aW9uKCk7XG4gIH1cblxuICByZW1vdmUocG9zaXRpb24gPSAwKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwIHx8IHBvc2l0aW9uIDwgMCB8fCBwb3NpdGlvbiA+PSB0aGlzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQb3NpdGlvbiBpcyBvdXQgb2YgdGhlIGxpc3QnKTtcbiAgICB9XG5cbiAgICBpZiAocG9zaXRpb24gPT09IDApIHtcbiAgICAgIC8vIGZpcnN0IG5vZGVcbiAgICAgIHRoaXMuaGVhZCA9IHRoaXMuaGVhZC5uZXh0O1xuXG4gICAgICBpZiAodGhpcy5oZWFkKSB7XG4gICAgICAgIC8vIHRoZXJlIGlzIG5vIHNlY29uZCBub2RlXG4gICAgICAgIHRoaXMuaGVhZC5wcmV2aW91cyA9IHVuZGVmaW5lZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIHRoZXJlIGlzIG5vIHNlY29uZCBub2RlXG4gICAgICAgIHRoaXMudGFpbCA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHBvc2l0aW9uID09PSB0aGlzLmxlbmd0aCAtIDEpIHtcbiAgICAgIC8vIGxhc3Qgbm9kZVxuICAgICAgdGhpcy50YWlsID0gdGhpcy50YWlsLnByZXZpb3VzO1xuICAgICAgdGhpcy50YWlsLm5leHQgPSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIG1pZGRsZSBub2RlXG4gICAgICBjb25zdCByZW1vdmVkTm9kZSA9IHRoaXMuZ2V0Tm9kZShwb3NpdGlvbik7XG4gICAgICByZW1vdmVkTm9kZS5uZXh0LnByZXZpb3VzID0gcmVtb3ZlZE5vZGUucHJldmlvdXM7XG4gICAgICByZW1vdmVkTm9kZS5wcmV2aW91cy5uZXh0ID0gcmVtb3ZlZE5vZGUubmV4dDtcbiAgICB9XG5cbiAgICB0aGlzLmxlbmd0aC0tO1xuICAgIHRoaXMuY3JlYXRlSW50ZXJuYWxBcnJheVJlcHJlc2VudGF0aW9uKCk7XG4gIH1cblxuICBzZXQocG9zaXRpb246IG51bWJlciwgdmFsdWU6IFQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDAgfHwgcG9zaXRpb24gPCAwIHx8IHBvc2l0aW9uID49IHRoaXMubGVuZ3RoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Bvc2l0aW9uIGlzIG91dCBvZiB0aGUgbGlzdCcpO1xuICAgIH1cblxuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmdldE5vZGUocG9zaXRpb24pO1xuICAgIG5vZGUudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmNyZWF0ZUludGVybmFsQXJyYXlSZXByZXNlbnRhdGlvbigpO1xuICB9XG5cbiAgdG9BcnJheSgpOiBUW10ge1xuICAgIHJldHVybiB0aGlzLmFzQXJyYXk7XG4gIH1cblxuICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWFueSovXG4gIGZpbmRBbGwoZm46IGFueSk6IGFueVtdIHtcbiAgICBsZXQgY3VycmVudCA9IHRoaXMuaGVhZDtcbiAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWFueSovXG4gICAgY29uc3QgcmVzdWx0OiBhbnlbXSA9IFtdO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgaWYgKGZuKGN1cnJlbnQudmFsdWUsIGluZGV4KSkge1xuICAgICAgICByZXN1bHQucHVzaCh7aW5kZXgsIHZhbHVlOiBjdXJyZW50LnZhbHVlfSk7XG4gICAgICB9XG4gICAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvLyBBcnJheSBtZXRob2RzIG92ZXJyaWRpbmcgc3RhcnRcbiAgcHVzaCguLi5hcmdzOiBUW10pOiBudW1iZXIge1xuICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55Ki9cbiAgICBhcmdzLmZvckVhY2goKGFyZzogYW55KSA9PiB7XG4gICAgICB0aGlzLmFkZChhcmcpO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMubGVuZ3RoO1xuICB9XG5cbiAgcG9wKCk6IFQge1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgbGFzdCA9IHRoaXMudGFpbDtcbiAgICB0aGlzLnJlbW92ZSh0aGlzLmxlbmd0aCAtIDEpO1xuXG4gICAgcmV0dXJuIGxhc3QudmFsdWU7XG4gIH1cblxuICB1bnNoaWZ0KC4uLmFyZ3M6IFRbXSk6IG51bWJlciB7XG4gICAgYXJncy5yZXZlcnNlKCk7XG4gICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1hbnkqL1xuICAgIGFyZ3MuZm9yRWFjaCgoYXJnOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuYWRkKGFyZywgMCk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5sZW5ndGg7XG4gIH1cblxuICBzaGlmdCgpOiBUIHtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGNvbnN0IGxhc3RJdGVtID0gdGhpcy5oZWFkLnZhbHVlO1xuICAgIHRoaXMucmVtb3ZlKCk7XG5cbiAgICByZXR1cm4gbGFzdEl0ZW07XG4gIH1cblxuICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWFueSovXG4gIGZvckVhY2goZm46IGFueSk6IHZvaWQge1xuICAgIGxldCBjdXJyZW50ID0gdGhpcy5oZWFkO1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgZm4oY3VycmVudC52YWx1ZSwgaW5kZXgpO1xuICAgICAgY3VycmVudCA9IGN1cnJlbnQubmV4dDtcbiAgICB9XG4gIH1cblxuICBpbmRleE9mKHZhbHVlOiBUKTogbnVtYmVyIHtcbiAgICBsZXQgY3VycmVudCA9IHRoaXMuaGVhZDtcbiAgICBsZXQgcG9zaXRpb24gPSAwO1xuXG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBpZiAoY3VycmVudC52YWx1ZSA9PT0gdmFsdWUpIHtcbiAgICAgICAgcG9zaXRpb24gPSBpbmRleDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0O1xuICAgIH1cblxuICAgIHJldHVybiBwb3NpdGlvbjtcbiAgfVxuXG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55Ki9cbiAgc29tZShmbjogYW55KTogYm9vbGVhbiB7XG4gICAgbGV0IGN1cnJlbnQgPSB0aGlzLmhlYWQ7XG4gICAgbGV0IHJlc3VsdCA9IGZhbHNlO1xuICAgIHdoaWxlIChjdXJyZW50ICYmICFyZXN1bHQpIHtcbiAgICAgIGlmIChmbihjdXJyZW50LnZhbHVlKSkge1xuICAgICAgICByZXN1bHQgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55Ki9cbiAgZXZlcnkoZm46IGFueSk6IGJvb2xlYW4ge1xuICAgIGxldCBjdXJyZW50ID0gdGhpcy5oZWFkO1xuICAgIGxldCByZXN1bHQgPSB0cnVlO1xuICAgIHdoaWxlIChjdXJyZW50ICYmIHJlc3VsdCkge1xuICAgICAgaWYgKCFmbihjdXJyZW50LnZhbHVlKSkge1xuICAgICAgICByZXN1bHQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdbTGlua2VkIExpc3RdJztcbiAgfVxuXG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55Ki9cbiAgZmluZChmbjogYW55KTogVCB7XG4gICAgbGV0IGN1cnJlbnQgPSB0aGlzLmhlYWQ7XG4gICAgbGV0IHJlc3VsdDogVDtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgIGlmIChmbihjdXJyZW50LnZhbHVlLCBpbmRleCkpIHtcbiAgICAgICAgcmVzdWx0ID0gY3VycmVudC52YWx1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0O1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWFueSovXG4gIGZpbmRJbmRleChmbjogYW55KTogbnVtYmVyIHtcbiAgICBsZXQgY3VycmVudCA9IHRoaXMuaGVhZDtcbiAgICBsZXQgcmVzdWx0OiBudW1iZXI7XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRoaXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBpZiAoZm4oY3VycmVudC52YWx1ZSwgaW5kZXgpKSB7XG4gICAgICAgIHJlc3VsdCA9IGluZGV4O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5leHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55Ki9cbiAgcHJvdGVjdGVkIGdldE5vZGUocG9zaXRpb246IG51bWJlcik6IGFueSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwIHx8IHBvc2l0aW9uIDwgMCB8fCBwb3NpdGlvbiA+PSB0aGlzLmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQb3NpdGlvbiBpcyBvdXQgb2YgdGhlIGxpc3QnKTtcbiAgICB9XG5cbiAgICBsZXQgY3VycmVudCA9IHRoaXMuaGVhZDtcblxuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBwb3NpdGlvbjsgaW5kZXgrKykge1xuICAgICAgY3VycmVudCA9IGN1cnJlbnQubmV4dDtcbiAgICB9XG5cbiAgICByZXR1cm4gY3VycmVudDtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVJbnRlcm5hbEFycmF5UmVwcmVzZW50YXRpb24oKTogdm9pZCB7XG4gICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1hbnkqL1xuICAgIGNvbnN0IG91dEFycmF5OiBhbnlbXSA9IFtdO1xuICAgIGxldCBjdXJyZW50ID0gdGhpcy5oZWFkO1xuXG4gICAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAgIG91dEFycmF5LnB1c2goY3VycmVudC52YWx1ZSk7XG4gICAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0O1xuICAgIH1cbiAgICB0aGlzLmFzQXJyYXkgPSBvdXRBcnJheTtcbiAgfVxuXG4gIC8vIEFycmF5IG1ldGhvZHMgb3ZlcnJpZGluZyBFTkRcbn1cbiIsIi8qdHNsaW50OmRpc2FibGU6bm8taW52YWxpZC10aGlzICovXG4vKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWFueSAqL1xuZXhwb3J0IGZ1bmN0aW9uIE9uQ2hhbmdlKGRlZmF1bHRWYWx1ZT86IGFueSk6IGFueSB7XG4gIGNvbnN0IHN1Zml4ID0gJ0NoYW5nZSc7XG5cbiAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1hbnkgKi9cbiAgcmV0dXJuIGZ1bmN0aW9uIE9uQ2hhbmdlSGFuZGxlcih0YXJnZXQ6IGFueSwgcHJvcGVydHlLZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IF9rZXkgPSBgIF9fJHtwcm9wZXJ0eUtleX1WYWx1ZWA7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgcHJvcGVydHlLZXksIHtcbiAgICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55ICovXG4gICAgICBnZXQoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXNbX2tleV07XG4gICAgICB9LFxuICAgICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1hbnkgKi9cbiAgICAgIHNldCh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHByZXZWYWx1ZSA9IHRoaXNbX2tleV07XG4gICAgICAgIHRoaXNbX2tleV0gPSB2YWx1ZTtcbiAgICAgICAgaWYgKHByZXZWYWx1ZSAhPT0gdmFsdWUgJiYgdGhpc1twcm9wZXJ0eUtleSArIHN1Zml4XSkge1xuICAgICAgICAgIHRoaXNbcHJvcGVydHlLZXkgKyBzdWZpeF0uZW1pdCh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcbn1cbi8qIHRzbGludDplbmFibGUgKi9cbiIsImltcG9ydCB7IHdpbmRvdyB9IGZyb20gJy4vZmFjYWRlL2Jyb3dzZXInO1xuXG5leHBvcnQgY2xhc3MgVXRpbHMge1xuICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWFueSAqL1xuICBzdGF0aWMgcmVmbG93KGVsZW1lbnQ6IGFueSk6IHZvaWQge1xuICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tYW55ICovXG4gICAgKChiczogYW55KTogdm9pZCA9PiBicykoZWxlbWVudC5vZmZzZXRIZWlnaHQpO1xuICB9XG5cbiAgLy8gc291cmNlOiBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L2pxdWVyeS9ibG9iL21hc3Rlci9zcmMvY3NzL3Zhci9nZXRTdHlsZXMuanNcbiAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1hbnkgKi9cbiAgc3RhdGljIGdldFN0eWxlcyhlbGVtOiBhbnkpOiBhbnkge1xuICAgIC8vIFN1cHBvcnQ6IElFIDw9MTEgb25seSwgRmlyZWZveCA8PTMwICgjMTUwOTgsICMxNDE1MClcbiAgICAvLyBJRSB0aHJvd3Mgb24gZWxlbWVudHMgY3JlYXRlZCBpbiBwb3B1cHNcbiAgICAvLyBGRiBtZWFud2hpbGUgdGhyb3dzIG9uIGZyYW1lIGVsZW1lbnRzIHRocm91Z2ggXCJkZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlXCJcbiAgICBsZXQgdmlldyA9IGVsZW0ub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldztcblxuICAgIGlmICghdmlldyB8fCAhdmlldy5vcGVuZXIpIHtcbiAgICAgIHZpZXcgPSB3aW5kb3c7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgaXNEZXZNb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5jb25zdCBfbWVzc2FnZXNIYXNoOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSA9IHt9O1xuY29uc3QgX2hpZGVNc2cgPSB0eXBlb2YgY29uc29sZSA9PT0gJ3VuZGVmaW5lZCcgfHwgISgnd2FybicgaW4gY29uc29sZSk7XG5cbmV4cG9ydCBmdW5jdGlvbiB3YXJuT25jZShtc2c6IHN0cmluZyk6IHZvaWQge1xuICBpZiAoIWlzRGV2TW9kZSgpIHx8IF9oaWRlTXNnIHx8IG1zZyBpbiBfbWVzc2FnZXNIYXNoKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgX21lc3NhZ2VzSGFzaFttc2ddID0gdHJ1ZTtcbiAgLyp0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmUqL1xuICBjb25zb2xlLndhcm4obXNnKTtcbn1cbiJdLCJuYW1lcyI6WyJkb2N1bWVudCIsIndpbmRvdyIsImlzRGV2TW9kZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFLQSxRQUFBO1FBSUUsaUJBQVksSUFBWSxFQUFFLEtBQWM7WUFDdEMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7WUFDakIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLElBQUksSUFBSSxDQUFDO1NBQzVCOzs7O1FBRUQsMEJBQVE7OztZQUFSO2dCQUNFLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxRQUFRLENBQUM7YUFDMUQ7c0JBaEJIO1FBaUJDOzs7Ozs7QUNaRCxJQWdCQSxxQkFBTSxlQUFlLEdBQUc7UUFDdEIsS0FBSyxFQUFFLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQztRQUNoQyxLQUFLLEVBQUUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDO0tBQy9CLENBQUM7Ozs7OztBQUdGLDJCQUE4QixRQUFnQixFQUFFLE9BQThCO1FBQTlCLHdCQUFBO1lBQUEseUJBQThCOztRQUM1RSxxQkFBTSxlQUFlLEdBQUcsQ0FBQyxRQUFRLElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxDQUFDO1FBRWhELElBQUksZUFBZSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7WUFDaEMsT0FBTyxF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
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-bootstrap-utils.umd.js.map","sources":["ng://ngx-bootstrap/utils/trigger.class.ts","ng://ngx-bootstrap/utils/triggers.ts","ng://ngx-bootstrap/utils/facade/browser.ts","ng://ngx-bootstrap/utils/theme-provider.ts","ng://ngx-bootstrap/utils/linked-list.class.ts","ng://ngx-bootstrap/utils/decorators.ts","ng://ngx-bootstrap/utils/utils.class.ts","ng://ngx-bootstrap/utils/warn-once.ts"],"sourcesContent":["/**\n * @copyright Valor Software\n * @copyright Angular ng-bootstrap team\n */\n\nexport class Trigger {\n open: string;\n close?: string;\n\n constructor(open: string, close?: string) {\n this.open = open;\n this.close = close || open;\n }\n\n isManual(): boolean {\n return this.open === 'manual' || this.close === 'manual';\n }\n}\n","/**\n * @copyright Valor Software\n * @copyright Angular ng-bootstrap team\n */\nimport { Renderer2 } from '@angular/core';\nimport { Trigger } from './trigger.class';\n\n/* tslint:disable-next-line: no-any */\nexport type BsEventCallback = (event?: any) => boolean | void;\n\nexport interface ListenOptions {\n target?: HTMLElement;\n targets?: HTMLElement[];\n triggers?: string;\n outsideClick?: boolean;\n show?: BsEventCallback;\n hide?: BsEventCallback;\n toggle?: BsEventCallback;\n}\n\nconst DEFAULT_ALIASES = {\n hover: ['mouseover', 'mouseout'],\n focus: ['focusin', 'focusout']\n};\n\n/* tslint:disable-next-line: no-any */\nexport function parseTriggers(triggers: string, aliases: any = DEFAULT_ALIASES): Trigger[] {\n const trimmedTriggers = (triggers || '').trim();\n\n if (trimmedTriggers.length === 0) {\n return [];\n }\n\n const parsedTriggers = trimmedTriggers\n .split(/\\s+/)\n .map((trigger: string) => trigger.split(':'))\n .map((triggerPair: string[]) => {\n const alias = aliases[triggerPair[0]] || triggerPair;\n\n return new Trigger(alias[0], alias[1]);\n });\n\n const manualTriggers = parsedTriggers.filter((triggerPair: Trigger) =>\n triggerPair.isManual()\n );\n\n if (manualTriggers.length > 1) {\n throw new Error('Triggers parse error: only one manual trigger is allowed');\n }\n\n if (manualTriggers.length === 1 && parsedTriggers.length > 1) {\n throw new Error('Triggers parse error: manual trigger can\\'t be mixed with other triggers');\n }\n\n return parsedTriggers;\n}\n\nexport function listenToTriggers(renderer: Renderer2,\n /* tslint:disable-next-line: no-any */\n target: any,\n triggers: string,\n showFn: BsEventCallback,\n hideFn: BsEventCallback,\n toggleFn: BsEventCallback): Function {\n const parsedTriggers = parseTriggers(triggers);\n /* tslint:disable-next-line: no-any */\n const listeners: any[] = [];\n\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return Function.prototype;\n }\n\n parsedTriggers.forEach((trigger: Trigger) => {\n if (trigger.open === trigger.close) {\n listeners.push(renderer.listen(target, trigger.open, toggleFn));\n\n return;\n }\n\n listeners.push(\n renderer.listen(target, trigger.open, showFn),\n renderer.listen(target, trigger.close, hideFn)\n );\n });\n\n return () => {\n listeners.forEach((unsubscribeFn: Function) => unsubscribeFn());\n };\n}\n\nexport function listenToTriggersV2(renderer: Renderer2,\n options: ListenOptions): Function {\n const parsedTriggers = parseTriggers(options.triggers);\n const target = options.target;\n // do nothing\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return Function.prototype;\n }\n\n // all listeners\n /* tslint:disable-next-line: no-any */\n const listeners: any[] = [];\n\n // lazy listeners registration\n const _registerHide: Function[] = [];\n const registerHide = () => {\n // add hide listeners to unregister array\n _registerHide.forEach((fn: Function) => listeners.push(fn()));\n // register hide events only once\n _registerHide.length = 0;\n };\n\n // register open\\close\\toggle listeners\n parsedTriggers.forEach((trigger: Trigger) => {\n const useToggle = trigger.open === trigger.close;\n const showFn = useToggle ? options.toggle : options.show;\n\n if (!useToggle) {\n _registerHide.push(() =>\n renderer.listen(target, trigger.close, options.hide)\n );\n }\n\n listeners.push(\n renderer.listen(target, trigger.open, () => showFn(registerHide))\n );\n });\n\n return () => {\n listeners.forEach((unsubscribeFn: Function) => unsubscribeFn());\n };\n}\n\nexport function registerOutsideClick(renderer: Renderer2,\n options: ListenOptions) {\n if (!options.outsideClick) {\n return Function.prototype;\n }\n\n /* tslint:disable-next-line: no-any */\n return renderer.listen('document', 'click', (event: any) => {\n if (options.target && options.target.contains(event.target)) {\n return undefined;\n }\n if (\n options.targets &&\n options.targets.some(target => target.contains(event.target))\n ) {\n return undefined;\n }\n\n options.hide();\n });\n}\n","/*tslint:disable */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * JS version of browser APIs. This library can only run in the browser.\n */\nvar win = (typeof window !== 'undefined' && window) || <any>{};\n\nexport { win as window };\nexport var document = win.document;\nexport var location = win.location;\nexport var gc = win['gc'] ? () => win['gc']() : (): any => null;\nexport var performance = win['performance'] ? win['performance'] : null;\nexport const Event = win['Event'];\nexport const MouseEvent = win['MouseEvent'];\nexport const KeyboardEvent = win['KeyboardEvent'];\nexport const EventTarget = win['EventTarget'];\nexport const History = win['History'];\nexport const Location = win['Location'];\nexport const EventListener = win['EventListener'];\n","import { window } from './facade/browser';\n\nlet guessedVersion: 'bs3' | 'bs4';\n\nfunction _guessBsVersion(): 'bs3' | 'bs4' {\n if (typeof document === 'undefined') {\n return null;\n }\n const spanEl = document.createElement('span');\n spanEl.innerText = 'test bs version';\n document.body.appendChild(spanEl);\n spanEl.classList.add('d-none');\n const rect = spanEl.getBoundingClientRect();\n document.body.removeChild(spanEl);\n if (!rect) {\n return 'bs3';\n }\n\n return rect.top === 0 ? 'bs4' : 'bs3';\n}\n\nexport function setTheme(theme: 'bs3' | 'bs4'): void {\n guessedVersion = theme;\n}\n\n// todo: in ngx-bootstrap, bs4 will became a default one\nexport function isBs3(): boolean {\n if (typeof window === 'undefined') {\n return true;\n }\n\n if (typeof window.__theme === 'undefined') {\n if (guessedVersion) {\n return guessedVersion === 'bs3';\n }\n guessedVersion = _guessBsVersion();\n\n return guessedVersion === 'bs3';\n }\n\n return window.__theme !== 'bs4';\n}\n","export class LinkedList<T> {\n length = 0;\n /* tslint:disable-next-line: no-any*/\n protected head: any;\n /* tslint:disable-next-line: no-any*/\n protected tail: any;\n /* tslint:disable-next-line: no-any*/\n protected current: any;\n protected asArray: T[] = [];\n\n get(position: number): T {\n if (this.length === 0 || position < 0 || position >= this.length) {\n return void 0;\n }\n\n let current = this.head;\n\n for (let index = 0; index < position; index++) {\n current = current.next;\n }\n\n return current.value;\n }\n\n add(value: T, position: number = this.length): void {\n if (position < 0 || position > this.length) {\n throw new Error('Position is out of the list');\n }\n\n /* tslint:disable-next-line: no-any*/\n const node: any = {\n value,\n next: undefined,\n previous: undefined\n };\n\n if (this.length === 0) {\n this.head = node;\n this.tail = node;\n this.current = node;\n } else {\n if (position === 0) {\n // first node\n node.next = this.head;\n this.head.previous = node;\n this.head = node;\n } else if (position === this.length) {\n // last node\n this.tail.next = node;\n node.previous = this.tail;\n this.tail = node;\n } else {\n // node in middle\n const currentPreviousNode = this.getNode(position - 1);\n const currentNextNode = currentPreviousNode.next;\n\n currentPreviousNode.next = node;\n currentNextNode.previous = node;\n\n node.previous = currentPreviousNode;\n node.next = currentNextNode;\n }\n }\n this.length++;\n this.createInternalArrayRepresentation();\n }\n\n remove(position = 0): void {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n\n if (position === 0) {\n // first node\n this.head = this.head.next;\n\n if (this.head) {\n // there is no second node\n this.head.previous = undefined;\n } else {\n // there is no second node\n this.tail = undefined;\n }\n } else if (position === this.length - 1) {\n // last node\n this.tail = this.tail.previous;\n this.tail.next = undefined;\n } else {\n // middle node\n const removedNode = this.getNode(position);\n removedNode.next.previous = removedNode.previous;\n removedNode.previous.next = removedNode.next;\n }\n\n this.length--;\n this.createInternalArrayRepresentation();\n }\n\n set(position: number, value: T): void {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n\n const node = this.getNode(position);\n node.value = value;\n this.createInternalArrayRepresentation();\n }\n\n toArray(): T[] {\n return this.asArray;\n }\n\n /* tslint:disable-next-line: no-any*/\n findAll(fn: any): any[] {\n let current = this.head;\n /* tslint:disable-next-line: no-any*/\n const result: any[] = [];\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result.push({index, value: current.value});\n }\n current = current.next;\n }\n\n return result;\n }\n\n // Array methods overriding start\n push(...args: T[]): number {\n /* tslint:disable-next-line: no-any*/\n args.forEach((arg: any) => {\n this.add(arg);\n });\n\n return this.length;\n }\n\n pop(): T {\n if (this.length === 0) {\n return undefined;\n }\n const last = this.tail;\n this.remove(this.length - 1);\n\n return last.value;\n }\n\n unshift(...args: T[]): number {\n args.reverse();\n /* tslint:disable-next-line: no-any*/\n args.forEach((arg: any) => {\n this.add(arg, 0);\n });\n\n return this.length;\n }\n\n shift(): T {\n if (this.length === 0) {\n return undefined;\n }\n const lastItem = this.head.value;\n this.remove();\n\n return lastItem;\n }\n\n /* tslint:disable-next-line: no-any*/\n forEach(fn: any): void {\n let current = this.head;\n for (let index = 0; index < this.length; index++) {\n fn(current.value, index);\n current = current.next;\n }\n }\n\n indexOf(value: T): number {\n let current = this.head;\n let position = 0;\n\n for (let index = 0; index < this.length; index++) {\n if (current.value === value) {\n position = index;\n break;\n }\n current = current.next;\n }\n\n return position;\n }\n\n /* tslint:disable-next-line: no-any*/\n some(fn: any): boolean {\n let current = this.head;\n let result = false;\n while (current && !result) {\n if (fn(current.value)) {\n result = true;\n break;\n }\n current = current.next;\n }\n\n return result;\n }\n\n /* tslint:disable-next-line: no-any*/\n every(fn: any): boolean {\n let current = this.head;\n let result = true;\n while (current && result) {\n if (!fn(current.value)) {\n result = false;\n }\n current = current.next;\n }\n\n return result;\n }\n\n toString(): string {\n return '[Linked List]';\n }\n\n /* tslint:disable-next-line: no-any*/\n find(fn: any): T {\n let current = this.head;\n let result: T;\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result = current.value;\n break;\n }\n current = current.next;\n }\n\n return result;\n }\n\n /* tslint:disable-next-line: no-any*/\n findIndex(fn: any): number {\n let current = this.head;\n let result: number;\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result = index;\n break;\n }\n current = current.next;\n }\n\n return result;\n }\n\n /* tslint:disable-next-line: no-any*/\n protected getNode(position: number): any {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n\n let current = this.head;\n\n for (let index = 0; index < position; index++) {\n current = current.next;\n }\n\n return current;\n }\n\n protected createInternalArrayRepresentation(): void {\n /* tslint:disable-next-line: no-any*/\n const outArray: any[] = [];\n let current = this.head;\n\n while (current) {\n outArray.push(current.value);\n current = current.next;\n }\n this.asArray = outArray;\n }\n\n // Array methods overriding END\n}\n","/*tslint:disable:no-invalid-this */\n/* tslint:disable-next-line: no-any */\nexport function OnChange(defaultValue?: any): any {\n const sufix = 'Change';\n\n /* tslint:disable-next-line: no-any */\n return function OnChangeHandler(target: any, propertyKey: string): void {\n const _key = ` __${propertyKey}Value`;\n Object.defineProperty(target, propertyKey, {\n /* tslint:disable-next-line: no-any */\n get(): any {\n return this[_key];\n },\n /* tslint:disable-next-line: no-any */\n set(value: any): void {\n const prevValue = this[_key];\n this[_key] = value;\n if (prevValue !== value && this[propertyKey + sufix]) {\n this[propertyKey + sufix].emit(value);\n }\n }\n });\n };\n}\n/* tslint:enable */\n","import { window } from './facade/browser';\n\nexport class Utils {\n /* tslint:disable-next-line: no-any */\n static reflow(element: any): void {\n /* tslint:disable-next-line: no-any */\n ((bs: any): void => bs)(element.offsetHeight);\n }\n\n // source: https://github.com/jquery/jquery/blob/master/src/css/var/getStyles.js\n /* tslint:disable-next-line: no-any */\n static getStyles(elem: any): any {\n // Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n // IE throws on elements created in popups\n // FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n let view = elem.ownerDocument.defaultView;\n\n if (!view || !view.opener) {\n view = window;\n }\n\n return view.getComputedStyle(elem);\n }\n}\n","import { isDevMode } from '@angular/core';\nconst _messagesHash: { [key: string]: boolean } = {};\nconst _hideMsg = typeof console === 'undefined' || !('warn' in console);\n\nexport function warnOnce(msg: string): void {\n if (!isDevMode() || _hideMsg || msg in _messagesHash) {\n return;\n }\n\n _messagesHash[msg] = true;\n /*tslint:disable-next-line*/\n console.warn(msg);\n}\n"],"names":["document","window","isDevMode"],"mappings":"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"}
1
+ {"version":3,"file":"ngx-bootstrap-utils.umd.js.map","sources":["ng://ngx-bootstrap/utils/trigger.class.ts","ng://ngx-bootstrap/utils/triggers.ts","ng://ngx-bootstrap/utils/facade/browser.ts","ng://ngx-bootstrap/utils/theme-provider.ts","ng://ngx-bootstrap/utils/linked-list.class.ts","ng://ngx-bootstrap/utils/decorators.ts","ng://ngx-bootstrap/utils/utils.class.ts","ng://ngx-bootstrap/utils/warn-once.ts"],"sourcesContent":["/**\n * @copyright Valor Software\n * @copyright Angular ng-bootstrap team\n */\n\nexport class Trigger {\n open: string;\n close?: string;\n\n constructor(open: string, close?: string) {\n this.open = open;\n this.close = close || open;\n }\n\n isManual(): boolean {\n return this.open === 'manual' || this.close === 'manual';\n }\n}\n","/**\n * @copyright Valor Software\n * @copyright Angular ng-bootstrap team\n */\nimport { Renderer2 } from '@angular/core';\nimport { Trigger } from './trigger.class';\n\n/* tslint:disable-next-line: no-any */\nexport type BsEventCallback = (event?: any) => boolean | void;\n\nexport interface ListenOptions {\n target?: HTMLElement;\n targets?: HTMLElement[];\n triggers?: string;\n outsideClick?: boolean;\n outsideEsc?: boolean;\n show?: BsEventCallback;\n hide?: BsEventCallback;\n toggle?: BsEventCallback;\n}\n\nconst DEFAULT_ALIASES = {\n hover: ['mouseover', 'mouseout'],\n focus: ['focusin', 'focusout']\n};\n\n/* tslint:disable-next-line: no-any */\nexport function parseTriggers(triggers: string, aliases: any = DEFAULT_ALIASES): Trigger[] {\n const trimmedTriggers = (triggers || '').trim();\n\n if (trimmedTriggers.length === 0) {\n return [];\n }\n\n const parsedTriggers = trimmedTriggers\n .split(/\\s+/)\n .map((trigger: string) => trigger.split(':'))\n .map((triggerPair: string[]) => {\n const alias = aliases[triggerPair[0]] || triggerPair;\n\n return new Trigger(alias[0], alias[1]);\n });\n\n const manualTriggers = parsedTriggers.filter((triggerPair: Trigger) =>\n triggerPair.isManual()\n );\n\n if (manualTriggers.length > 1) {\n throw new Error('Triggers parse error: only one manual trigger is allowed');\n }\n\n if (manualTriggers.length === 1 && parsedTriggers.length > 1) {\n throw new Error('Triggers parse error: manual trigger can\\'t be mixed with other triggers');\n }\n\n return parsedTriggers;\n}\n\nexport function listenToTriggers(renderer: Renderer2,\n /* tslint:disable-next-line: no-any */\n target: any,\n triggers: string,\n showFn: BsEventCallback,\n hideFn: BsEventCallback,\n toggleFn: BsEventCallback): Function {\n const parsedTriggers = parseTriggers(triggers);\n /* tslint:disable-next-line: no-any */\n const listeners: any[] = [];\n\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return Function.prototype;\n }\n\n parsedTriggers.forEach((trigger: Trigger) => {\n if (trigger.open === trigger.close) {\n listeners.push(renderer.listen(target, trigger.open, toggleFn));\n\n return;\n }\n\n listeners.push(\n renderer.listen(target, trigger.open, showFn),\n renderer.listen(target, trigger.close, hideFn)\n );\n });\n\n return () => {\n listeners.forEach((unsubscribeFn: Function) => unsubscribeFn());\n };\n}\n\nexport function listenToTriggersV2(renderer: Renderer2,\n options: ListenOptions): Function {\n const parsedTriggers = parseTriggers(options.triggers);\n const target = options.target;\n // do nothing\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return Function.prototype;\n }\n\n // all listeners\n /* tslint:disable-next-line: no-any */\n const listeners: any[] = [];\n\n // lazy listeners registration\n const _registerHide: Function[] = [];\n const registerHide = () => {\n // add hide listeners to unregister array\n _registerHide.forEach((fn: Function) => listeners.push(fn()));\n // register hide events only once\n _registerHide.length = 0;\n };\n\n // register open\\close\\toggle listeners\n parsedTriggers.forEach((trigger: Trigger) => {\n const useToggle = trigger.open === trigger.close;\n const showFn = useToggle ? options.toggle : options.show;\n\n if (!useToggle) {\n _registerHide.push(() =>\n renderer.listen(target, trigger.close, options.hide)\n );\n }\n\n listeners.push(\n renderer.listen(target, trigger.open, () => showFn(registerHide))\n );\n });\n\n return () => {\n listeners.forEach((unsubscribeFn: Function) => unsubscribeFn());\n };\n}\n\nexport function registerOutsideClick(renderer: Renderer2,\n options: ListenOptions) {\n if (!options.outsideClick) {\n return Function.prototype;\n }\n\n /* tslint:disable-next-line: no-any */\n return renderer.listen('document', 'click', (event: any) => {\n if (options.target && options.target.contains(event.target)) {\n return undefined;\n }\n if (\n options.targets &&\n options.targets.some(target => target.contains(event.target))\n ) {\n return undefined;\n }\n\n options.hide();\n });\n}\n\nexport function registerEscClick(renderer: Renderer2,\n options: ListenOptions) {\n if (!options.outsideEsc) {\n return Function.prototype;\n }\n\n return renderer.listen('document', 'keyup.esc', (event: any) => {\n if (options.target && options.target.contains(event.target)) {\n return undefined;\n }\n if (\n options.targets &&\n options.targets.some(target => target.contains(event.target))\n ) {\n return undefined;\n }\n\n options.hide();\n });\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * JS version of browser APIs. This library can only run in the browser.\n */\nconst win = (typeof window !== 'undefined' && window) || {} as any;\n\nexport { win as window };\nexport const document = win.document;\nexport const location = win.location;\nexport const gc = win.gc ? () => win.gc() : (): any => null;\nexport const performance = win.performance ? win.performance : null;\nexport const Event = win.Event;\nexport const MouseEvent = win.MouseEvent;\nexport const KeyboardEvent = win.KeyboardEvent;\nexport const EventTarget = win.EventTarget;\nexport const History = win.History;\nexport const Location = win.Location;\nexport const EventListener = win.EventListener;\n","import { window } from './facade/browser';\n\nlet guessedVersion: 'bs3' | 'bs4';\n\nfunction _guessBsVersion(): 'bs3' | 'bs4' {\n if (typeof document === 'undefined') {\n return null;\n }\n const spanEl = document.createElement('span');\n spanEl.innerText = 'test bs version';\n document.body.appendChild(spanEl);\n spanEl.classList.add('d-none');\n const rect = spanEl.getBoundingClientRect();\n document.body.removeChild(spanEl);\n if (!rect) {\n return 'bs3';\n }\n\n return rect.top === 0 ? 'bs4' : 'bs3';\n}\n\nexport function setTheme(theme: 'bs3' | 'bs4'): void {\n guessedVersion = theme;\n}\n\n// todo: in ngx-bootstrap, bs4 will became a default one\nexport function isBs3(): boolean {\n if (typeof window === 'undefined') {\n return true;\n }\n\n if (typeof window.__theme === 'undefined') {\n if (guessedVersion) {\n return guessedVersion === 'bs3';\n }\n guessedVersion = _guessBsVersion();\n\n return guessedVersion === 'bs3';\n }\n\n return window.__theme !== 'bs4';\n}\n","export class LinkedList<T> {\n length = 0;\n /* tslint:disable-next-line: no-any*/\n protected head: any;\n /* tslint:disable-next-line: no-any*/\n protected tail: any;\n /* tslint:disable-next-line: no-any*/\n protected current: any;\n protected asArray: T[] = [];\n\n get(position: number): T {\n if (this.length === 0 || position < 0 || position >= this.length) {\n return void 0;\n }\n\n let current = this.head;\n\n for (let index = 0; index < position; index++) {\n current = current.next;\n }\n\n return current.value;\n }\n\n add(value: T, position: number = this.length): void {\n if (position < 0 || position > this.length) {\n throw new Error('Position is out of the list');\n }\n\n /* tslint:disable-next-line: no-any*/\n const node: any = {\n value,\n next: undefined,\n previous: undefined\n };\n\n if (this.length === 0) {\n this.head = node;\n this.tail = node;\n this.current = node;\n } else {\n if (position === 0) {\n // first node\n node.next = this.head;\n this.head.previous = node;\n this.head = node;\n } else if (position === this.length) {\n // last node\n this.tail.next = node;\n node.previous = this.tail;\n this.tail = node;\n } else {\n // node in middle\n const currentPreviousNode = this.getNode(position - 1);\n const currentNextNode = currentPreviousNode.next;\n\n currentPreviousNode.next = node;\n currentNextNode.previous = node;\n\n node.previous = currentPreviousNode;\n node.next = currentNextNode;\n }\n }\n this.length++;\n this.createInternalArrayRepresentation();\n }\n\n remove(position = 0): void {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n\n if (position === 0) {\n // first node\n this.head = this.head.next;\n\n if (this.head) {\n // there is no second node\n this.head.previous = undefined;\n } else {\n // there is no second node\n this.tail = undefined;\n }\n } else if (position === this.length - 1) {\n // last node\n this.tail = this.tail.previous;\n this.tail.next = undefined;\n } else {\n // middle node\n const removedNode = this.getNode(position);\n removedNode.next.previous = removedNode.previous;\n removedNode.previous.next = removedNode.next;\n }\n\n this.length--;\n this.createInternalArrayRepresentation();\n }\n\n set(position: number, value: T): void {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n\n const node = this.getNode(position);\n node.value = value;\n this.createInternalArrayRepresentation();\n }\n\n toArray(): T[] {\n return this.asArray;\n }\n\n /* tslint:disable-next-line: no-any*/\n findAll(fn: any): any[] {\n let current = this.head;\n /* tslint:disable-next-line: no-any*/\n const result: any[] = [];\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result.push({index, value: current.value});\n }\n current = current.next;\n }\n\n return result;\n }\n\n // Array methods overriding start\n push(...args: T[]): number {\n /* tslint:disable-next-line: no-any*/\n args.forEach((arg: any) => {\n this.add(arg);\n });\n\n return this.length;\n }\n\n pop(): T {\n if (this.length === 0) {\n return undefined;\n }\n const last = this.tail;\n this.remove(this.length - 1);\n\n return last.value;\n }\n\n unshift(...args: T[]): number {\n args.reverse();\n /* tslint:disable-next-line: no-any*/\n args.forEach((arg: any) => {\n this.add(arg, 0);\n });\n\n return this.length;\n }\n\n shift(): T {\n if (this.length === 0) {\n return undefined;\n }\n const lastItem = this.head.value;\n this.remove();\n\n return lastItem;\n }\n\n /* tslint:disable-next-line: no-any*/\n forEach(fn: any): void {\n let current = this.head;\n for (let index = 0; index < this.length; index++) {\n fn(current.value, index);\n current = current.next;\n }\n }\n\n indexOf(value: T): number {\n let current = this.head;\n let position = 0;\n\n for (let index = 0; index < this.length; index++) {\n if (current.value === value) {\n position = index;\n break;\n }\n current = current.next;\n }\n\n return position;\n }\n\n /* tslint:disable-next-line: no-any*/\n some(fn: any): boolean {\n let current = this.head;\n let result = false;\n while (current && !result) {\n if (fn(current.value)) {\n result = true;\n break;\n }\n current = current.next;\n }\n\n return result;\n }\n\n /* tslint:disable-next-line: no-any*/\n every(fn: any): boolean {\n let current = this.head;\n let result = true;\n while (current && result) {\n if (!fn(current.value)) {\n result = false;\n }\n current = current.next;\n }\n\n return result;\n }\n\n toString(): string {\n return '[Linked List]';\n }\n\n /* tslint:disable-next-line: no-any*/\n find(fn: any): T {\n let current = this.head;\n let result: T;\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result = current.value;\n break;\n }\n current = current.next;\n }\n\n return result;\n }\n\n /* tslint:disable-next-line: no-any*/\n findIndex(fn: any): number {\n let current = this.head;\n let result: number;\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result = index;\n break;\n }\n current = current.next;\n }\n\n return result;\n }\n\n /* tslint:disable-next-line: no-any*/\n protected getNode(position: number): any {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n\n let current = this.head;\n\n for (let index = 0; index < position; index++) {\n current = current.next;\n }\n\n return current;\n }\n\n protected createInternalArrayRepresentation(): void {\n /* tslint:disable-next-line: no-any*/\n const outArray: any[] = [];\n let current = this.head;\n\n while (current) {\n outArray.push(current.value);\n current = current.next;\n }\n this.asArray = outArray;\n }\n\n // Array methods overriding END\n}\n","/*tslint:disable:no-invalid-this */\n/* tslint:disable-next-line: no-any */\nexport function OnChange(defaultValue?: any): any {\n const sufix = 'Change';\n\n /* tslint:disable-next-line: no-any */\n return function OnChangeHandler(target: any, propertyKey: string): void {\n const _key = ` __${propertyKey}Value`;\n Object.defineProperty(target, propertyKey, {\n /* tslint:disable-next-line: no-any */\n get(): any {\n return this[_key];\n },\n /* tslint:disable-next-line: no-any */\n set(value: any): void {\n const prevValue = this[_key];\n this[_key] = value;\n if (prevValue !== value && this[propertyKey + sufix]) {\n this[propertyKey + sufix].emit(value);\n }\n }\n });\n };\n}\n/* tslint:enable */\n","import { window } from './facade/browser';\n\nexport class Utils {\n /* tslint:disable-next-line: no-any */\n static reflow(element: any): void {\n /* tslint:disable-next-line: no-any */\n ((bs: any): void => bs)(element.offsetHeight);\n }\n\n // source: https://github.com/jquery/jquery/blob/master/src/css/var/getStyles.js\n /* tslint:disable-next-line: no-any */\n static getStyles(elem: any): any {\n // Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n // IE throws on elements created in popups\n // FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n let view = elem.ownerDocument.defaultView;\n\n if (!view || !view.opener) {\n view = window;\n }\n\n return view.getComputedStyle(elem);\n }\n}\n","import { isDevMode } from '@angular/core';\nconst _messagesHash: { [key: string]: boolean } = {};\nconst _hideMsg = typeof console === 'undefined' || !('warn' in console);\n\nexport function warnOnce(msg: string): void {\n if (!isDevMode() || _hideMsg || msg in _messagesHash) {\n return;\n }\n\n _messagesHash[msg] = true;\n /*tslint:disable-next-line*/\n console.warn(msg);\n}\n"],"names":["document","window","isDevMode"],"mappings":";;;;;;;;;;;;;;AAKA,QAAA;QAIE,iBAAY,IAAY,EAAE,KAAc;YACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;YACjB,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC;SAC5B;;;;QAED,0BAAQ;;;YAAR;gBACE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC;aAC1D;sBAhBH;QAiBC;;;;;;ACZD,IAgBA,qBAAM,eAAe,GAAG;QACtB,KAAK,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC;QAChC,KAAK,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;KAC/B,CAAC;;;;;;AAGF,2BAA8B,QAAgB,EAAE,OAA8B;QAA9B,wBAAA;YAAA,yBAA8B;;QAC5E,qBAAM,eAAe,GAAG,CAAC,QAAQ,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC;QAEhD,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;YAChC,OAAO,EAAE,CAAC;SACX;QAED,qBAAM,cAAc,GAAG,eAAe;aACnC,KAAK,CAAC,KAAK,CAAC;aACZ,GAAG,CAAC,UAAC,OAAe,IAAK,OAAA,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAA,CAAC;aAC5C,GAAG,CAAC,UAAC,WAAqB;YACzB,qBAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC;YAErD,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SACxC,CAAC,CAAC;QAEL,qBAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,UAAC,WAAoB;YAChE,OAAA,WAAW,CAAC,QAAQ,EAAE;SAAA,CACvB,CAAC;QAEF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;SAC7E;QAED,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5D,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;SAC7F;QAED,OAAO,cAAc,CAAC;KACvB;;;;;;;;;;AAED,8BAAiC,QAAmB;IACnB;IACA,MAAW,EACX,QAAgB,EAChB,MAAuB,EACvB,MAAuB,EACvB,QAAyB;QACxD,qBAAM,cAAc,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;;QAE/C,qBAAM,SAAS,GAAU,EAAE,CAAC;QAE5B,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC/D,OAAO,QAAQ,CAAC,SAAS,CAAC;SAC3B;QAED,cAAc,CAAC,OAAO,CAAC,UAAC,OAAgB;YACtC,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,EAAE;gBAClC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAEhE,OAAO;aACR;YAED,SAAS,CAAC,IAAI,CACZ,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EAC7C,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAC/C,CAAC;SACH,CAAC,CAAC;QAEH,OAAO;YACL,SAAS,CAAC,OAAO,CAAC,UAAC,aAAuB,IAAK,OAAA,aAAa,EAAE,GAAA,CAAC,CAAC;SACjE,CAAC;KACH;;;;;;AAED,gCAAmC,QAAmB,EACnB,OAAsB;QACvD,qBAAM,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvD,qBAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;;QAE9B,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC/D,OAAO,QAAQ,CAAC,SAAS,CAAC;SAC3B;;;QAID,qBAAM,SAAS,GAAU,EAAE,CAAC;;QAG5B,qBAAM,aAAa,GAAe,EAAE,CAAC;QACrC,qBAAM,YAAY,GAAG;;YAEnB,aAAa,CAAC,OAAO,CAAC,UAAC,EAAY,IAAK,OAAA,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAA,CAAC,CAAC;;YAE9D,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;SAC1B,CAAC;;QAGF,cAAc,CAAC,OAAO,CAAC,UAAC,OAAgB;YACtC,qBAAM,SAAS,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,CAAC;YACjD,qBAAM,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAEzD,IAAI,CAAC,SAAS,EAAE;gBACd,aAAa,CAAC,IAAI,CAAC;oBACjB,OAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC;iBAAA,CACrD,CAAC;aACH;YAED,SAAS,CAAC,IAAI,CACZ,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,cAAM,OAAA,MAAM,CAAC,YAAY,CAAC,GAAA,CAAC,CAClE,CAAC;SACH,CAAC,CAAC;QAEH,OAAO;YACL,SAAS,CAAC,OAAO,CAAC,UAAC,aAAuB,IAAK,OAAA,aAAa,EAAE,GAAA,CAAC,CAAC;SACjE,CAAC;KACH;;;;;;AAED,kCAAqC,QAAmB,EACnB,OAAsB;QACzD,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;YACzB,OAAO,QAAQ,CAAC,SAAS,CAAC;SAC3B;;QAGD,OAAO,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,UAAC,KAAU;YACrD,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;gBAC3D,OAAO,SAAS,CAAC;aAClB;YACD,IACE,OAAO,CAAC,OAAO;gBACf,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,GAAA,CAC9D,EAAE;gBACA,OAAO,SAAS,CAAC;aAClB;YAED,OAAO,CAAC,IAAI,EAAE,CAAC;SAChB,CAAC,CAAC;KACJ;;;;;;AAED,8BAAiC,QAAmB,EACnB,OAAsB;QACrD,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YACvB,OAAO,QAAQ,CAAC,SAAS,CAAC;SAC3B;QAED,OAAO,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,WAAW,EAAE,UAAC,KAAU;YACzD,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;gBAC3D,OAAO,SAAS,CAAC;aAClB;YACD,IACE,OAAO,CAAC,OAAO;gBACf,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,GAAA,CAC9D,EAAE;gBACA,OAAO,SAAS,CAAC;aAClB;YAED,OAAO,CAAC,IAAI,EAAE,CAAC;SAChB,CAAC,CAAC;KACJ;;;;;;;;;;;;;;;;ACpKD,yBAAM,GAAG,GAAG,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,uBAAK,EAAS,CAAA,CAAC;AAEnE,yBACaA,UAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;AACrC,IAAO,qBAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;AACrC,IAAO,qBAAM,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,cAAM,OAAA,GAAG,CAAC,EAAE,EAAE,GAAA,GAAG,cAAW,OAAA,IAAI,GAAA,CAAC;AAC5D,IAAO,qBAAM,WAAW,GAAG,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;AACpE,IAAO,qBAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;AAC/B,IAAO,qBAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;AACzC,IAAO,qBAAM,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC;AAC/C,IAAO,qBAAM,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;AAC3C,IAAO,qBAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AACnC,IAAO,qBAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;AACrC,IAAO,qBAAM,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC;;;;;;ACxB/C,IAEA,qBAAI,cAA6B,CAAC;;;;IAElC;QACE,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;YACnC,OAAO,IAAI,CAAC;SACb;QACD,qBAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,CAAC,SAAS,GAAG,iBAAiB,CAAC;QACrC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/B,qBAAM,IAAI,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;QAC5C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,KAAK,CAAC;SACd;QAED,OAAO,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;KACvC;;;;;AAED,sBAAyB,KAAoB;QAC3C,cAAc,GAAG,KAAK,CAAC;KACxB;;;;AAGD;QACE,IAAI,OAAOC,GAAM,KAAK,WAAW,EAAE;YACjC,OAAO,IAAI,CAAC;SACb;QAED,IAAI,OAAOA,GAAM,CAAC,OAAO,KAAK,WAAW,EAAE;YACzC,IAAI,cAAc,EAAE;gBAClB,OAAO,cAAc,KAAK,KAAK,CAAC;aACjC;YACD,cAAc,GAAG,eAAe,EAAE,CAAC;YAEnC,OAAO,cAAc,KAAK,KAAK,CAAC;SACjC;QAED,OAAOA,GAAM,CAAC,OAAO,KAAK,KAAK,CAAC;KACjC;;;;;;;;;ACzCD;;QAAA;;0BACW,CAAC;2BAOe,EAAE;;;;;;QAE3B,wBAAG;;;;YAAH,UAAI,QAAgB;gBAClB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;oBAChE,OAAO,KAAK,CAAC,CAAC;iBACf;gBAED,qBAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;gBAExB,KAAK,qBAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,EAAE,KAAK,EAAE,EAAE;oBAC7C,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;iBACxB;gBAED,OAAO,OAAO,CAAC,KAAK,CAAC;aACtB;;;;;;QAED,wBAAG;;;;;YAAH,UAAI,KAAQ,EAAE,QAA8B;gBAA9B,yBAAA;oBAAA,WAAmB,IAAI,CAAC,MAAM;;gBAC1C,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE;oBAC1C,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;iBAChD;;gBAGD,qBAAM,IAAI,GAAQ;oBAChB,KAAK,OAAA;oBACL,IAAI,EAAE,SAAS;oBACf,QAAQ,EAAE,SAAS;iBACpB,CAAC;gBAEF,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;oBACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;oBACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;oBACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;iBACrB;qBAAM;oBACL,IAAI,QAAQ,KAAK,CAAC,EAAE;;wBAElB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;wBACtB,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;wBAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;qBAClB;yBAAM,IAAI,QAAQ,KAAK,IAAI,CAAC,MAAM,EAAE;;wBAEnC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;wBACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;wBAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;qBAClB;yBAAM;;wBAEL,qBAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;wBACvD,qBAAM,eAAe,GAAG,mBAAmB,CAAC,IAAI,CAAC;wBAEjD,mBAAmB,CAAC,IAAI,GAAG,IAAI,CAAC;wBAChC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC;wBAEhC,IAAI,CAAC,QAAQ,GAAG,mBAAmB,CAAC;wBACpC,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;qBAC7B;iBACF;gBACD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACd,IAAI,CAAC,iCAAiC,EAAE,CAAC;aAC1C;;;;;QAED,2BAAM;;;;YAAN,UAAO,QAAY;gBAAZ,yBAAA;oBAAA,YAAY;;gBACjB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;oBAChE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;iBAChD;gBAED,IAAI,QAAQ,KAAK,CAAC,EAAE;;oBAElB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;oBAE3B,IAAI,IAAI,CAAC,IAAI,EAAE;;wBAEb,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;qBAChC;yBAAM;;wBAEL,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;qBACvB;iBACF;qBAAM,IAAI,QAAQ,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;;oBAEvC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;iBAC5B;qBAAM;;oBAEL,qBAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAC3C,WAAW,CAAC,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;oBACjD,WAAW,CAAC,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;iBAC9C;gBAED,IAAI,CAAC,MAAM,EAAE,CAAC;gBACd,IAAI,CAAC,iCAAiC,EAAE,CAAC;aAC1C;;;;;;QAED,wBAAG;;;;;YAAH,UAAI,QAAgB,EAAE,KAAQ;gBAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;oBAChE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;iBAChD;gBAED,qBAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACpC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gBACnB,IAAI,CAAC,iCAAiC,EAAE,CAAC;aAC1C;;;;QAED,4BAAO;;;YAAP;gBACE,OAAO,IAAI,CAAC,OAAO,CAAC;aACrB;;;;;;QAGD,4BAAO;;;;YAAP,UAAQ,EAAO;gBACb,qBAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;;gBAExB,qBAAM,MAAM,GAAU,EAAE,CAAC;gBACzB,KAAK,qBAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBAChD,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;wBAC5B,MAAM,CAAC,IAAI,CAAC,EAAC,KAAK,OAAA,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAC,CAAC,CAAC;qBAC5C;oBACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;iBACxB;gBAED,OAAO,MAAM,CAAC;aACf;;;;;;QAGD,yBAAI;;;;YAAJ;gBAAA,iBAOC;gBAPI,cAAY;qBAAZ,UAAY,EAAZ,qBAAY,EAAZ,IAAY;oBAAZ,yBAAY;;;gBAEf,IAAI,CAAC,OAAO,CAAC,UAAC,GAAQ;oBACpB,KAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBACf,CAAC,CAAC;gBAEH,OAAO,IAAI,CAAC,MAAM,CAAC;aACpB;;;;QAED,wBAAG;;;YAAH;gBACE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;oBACrB,OAAO,SAAS,CAAC;iBAClB;gBACD,qBAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAE7B,OAAO,IAAI,CAAC,KAAK,CAAC;aACnB;;;;;QAED,4BAAO;;;;YAAP;gBAAA,iBAQC;gBARO,cAAY;qBAAZ,UAAY,EAAZ,qBAAY,EAAZ,IAAY;oBAAZ,yBAAY;;gBAClB,IAAI,CAAC,OAAO,EAAE,CAAC;;gBAEf,IAAI,CAAC,OAAO,CAAC,UAAC,GAAQ;oBACpB,KAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;iBAClB,CAAC,CAAC;gBAEH,OAAO,IAAI,CAAC,MAAM,CAAC;aACpB;;;;QAED,0BAAK;;;YAAL;gBACE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;oBACrB,OAAO,SAAS,CAAC;iBAClB;gBACD,qBAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;gBACjC,IAAI,CAAC,MAAM,EAAE,CAAC;gBAEd,OAAO,QAAQ,CAAC;aACjB;;;;;;QAGD,4BAAO;;;;YAAP,UAAQ,EAAO;gBACb,qBAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;gBACxB,KAAK,qBAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBAChD,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;oBACzB,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;iBACxB;aACF;;;;;QAED,4BAAO;;;;YAAP,UAAQ,KAAQ;gBACd,qBAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;gBACxB,qBAAI,QAAQ,GAAG,CAAC,CAAC;gBAEjB,KAAK,qBAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBAChD,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,EAAE;wBAC3B,QAAQ,GAAG,KAAK,CAAC;wBACjB,MAAM;qBACP;oBACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;iBACxB;gBAED,OAAO,QAAQ,CAAC;aACjB;;;;;;QAGD,yBAAI;;;;YAAJ,UAAK,EAAO;gBACV,qBAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;gBACxB,qBAAI,MAAM,GAAG,KAAK,CAAC;gBACnB,OAAO,OAAO,IAAI,CAAC,MAAM,EAAE;oBACzB,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;wBACrB,MAAM,GAAG,IAAI,CAAC;wBACd,MAAM;qBACP;oBACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;iBACxB;gBAED,OAAO,MAAM,CAAC;aACf;;;;;;QAGD,0BAAK;;;;YAAL,UAAM,EAAO;gBACX,qBAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;gBACxB,qBAAI,MAAM,GAAG,IAAI,CAAC;gBAClB,OAAO,OAAO,IAAI,MAAM,EAAE;oBACxB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;wBACtB,MAAM,GAAG,KAAK,CAAC;qBAChB;oBACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;iBACxB;gBAED,OAAO,MAAM,CAAC;aACf;;;;QAED,6BAAQ;;;YAAR;gBACE,OAAO,eAAe,CAAC;aACxB;;;;;;QAGD,yBAAI;;;;YAAJ,UAAK,EAAO;gBACV,qBAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;gBACxB,qBAAI,MAAS,CAAC;gBACd,KAAK,qBAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBAChD,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;wBAC5B,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;wBACvB,MAAM;qBACP;oBACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;iBACxB;gBAED,OAAO,MAAM,CAAC;aACf;;;;;;QAGD,8BAAS;;;;YAAT,UAAU,EAAO;gBACf,qBAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;gBACxB,qBAAI,MAAc,CAAC;gBACnB,KAAK,qBAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;oBAChD,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;wBAC5B,MAAM,GAAG,KAAK,CAAC;wBACf,MAAM;qBACP;oBACD,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;iBACxB;gBAED,OAAO,MAAM,CAAC;aACf;;;;;;QAGS,4BAAO;;;;YAAjB,UAAkB,QAAgB;gBAChC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;oBAChE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;iBAChD;gBAED,qBAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;gBAExB,KAAK,qBAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,EAAE,KAAK,EAAE,EAAE;oBAC7C,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;iBACxB;gBAED,OAAO,OAAO,CAAC;aAChB;;;;QAES,sDAAiC;;;YAA3C;;gBAEE,qBAAM,QAAQ,GAAU,EAAE,CAAC;gBAC3B,qBAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;gBAExB,OAAO,OAAO,EAAE;oBACd,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;oBAC7B,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;iBACxB;gBACD,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;aACzB;yBAvRH;QA0RC;;;;;;;;;;ACxRD,sBAAyB,YAAkB;QACzC,qBAAM,KAAK,GAAG,QAAQ,CAAC;;QAGvB,OAAO,yBAAyB,MAAW,EAAE,WAAmB;YAC9D,qBAAM,IAAI,GAAG,QAAM,WAAW,UAAO,CAAC;YACtC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE;;gBAEzC,GAAG;;oBAAH;oBACE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;iBACnB;;gBAED,GAAG;;;oBAAH,UAAI,KAAU;oBACZ,qBAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC7B,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;oBACnB,IAAI,SAAS,KAAK,KAAK,IAAI,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,EAAE;wBACpD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBACvC;iBACF;aACF,CAAC,CAAC;SACJ,CAAC;KACH;;;;;;;ACvBD,QAEA;;;;;;;;QAES,YAAM;;;;YAAb,UAAc,OAAY;;gBAExB,CAAC,UAAC,EAAO,IAAW,OAAA,EAAE,GAAA,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;aAC/C;;;;;;;QAIM,eAAS;;;;YAAhB,UAAiB,IAAS;;;;gBAIxB,qBAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;gBAE1C,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;oBACzB,IAAI,GAAGA,GAAM,CAAC;iBACf;gBAED,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;aACpC;oBAtBH;QAuBC;;;;;;ACvBD,IACA,qBAAM,aAAa,GAA+B,EAAE,CAAC;IACrD,qBAAM,QAAQ,GAAG,OAAO,OAAO,KAAK,WAAW,IAAI,EAAE,MAAM,IAAI,OAAO,CAAC,CAAC;;;;;AAExE,sBAAyB,GAAW;QAClC,IAAI,CAACC,cAAS,EAAE,IAAI,QAAQ,IAAI,GAAG,IAAI,aAAa,EAAE;YACpD,OAAO;SACR;QAED,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;;QAE1B,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -6,5 +6,5 @@
6
6
  * Use of this source code is governed by an MIT-style license that can be
7
7
  * found in the LICENSE file at https://angular.io/license
8
8
  */
9
- var r,i="undefined"!=typeof window&&window||{},n=i.document;i.location,i.gc,i.performance&&i.performance,i.Event,i.MouseEvent,i.KeyboardEvent,i.EventTarget,i.History,i.Location,i.EventListener;var u=function(){function t(){this.length=0,this.asArray=[]}return t.prototype.get=function(t){if(!(0===this.length||t<0||t>=this.length)){for(var e=this.head,n=0;n<t;n++)e=e.next;return e.value}},t.prototype.add=function(t,e){if(void 0===e&&(e=this.length),e<0||e>this.length)throw new Error("Position is out of the list");var n={value:t,next:undefined,previous:undefined};if(0===this.length)this.head=n,this.tail=n,this.current=n;else if(0===e)n.next=this.head,this.head.previous=n,this.head=n;else if(e===this.length)(this.tail.next=n).previous=this.tail,this.tail=n;else{var r=this.getNode(e-1),i=r.next;r.next=n,(i.previous=n).previous=r,n.next=i}this.length++,this.createInternalArrayRepresentation()},t.prototype.remove=function(t){if(void 0===t&&(t=0),0===this.length||t<0||t>=this.length)throw new Error("Position is out of the list");if(0===t)this.head=this.head.next,this.head?this.head.previous=undefined:this.tail=undefined;else if(t===this.length-1)this.tail=this.tail.previous,this.tail.next=undefined;else{var e=this.getNode(t);e.next.previous=e.previous,e.previous.next=e.next}this.length--,this.createInternalArrayRepresentation()},t.prototype.set=function(t,e){if(0===this.length||t<0||t>=this.length)throw new Error("Position is out of the list");this.getNode(t).value=e,this.createInternalArrayRepresentation()},t.prototype.toArray=function(){return this.asArray},t.prototype.findAll=function(t){for(var e=this.head,n=[],r=0;r<this.length;r++)t(e.value,r)&&n.push({index:r,value:e.value}),e=e.next;return n},t.prototype.push=function(){for(var e=this,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return t.forEach(function(t){e.add(t)}),this.length},t.prototype.pop=function(){if(0===this.length)return undefined;var t=this.tail;return this.remove(this.length-1),t.value},t.prototype.unshift=function(){for(var e=this,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return t.reverse(),t.forEach(function(t){e.add(t,0)}),this.length},t.prototype.shift=function(){if(0===this.length)return undefined;var t=this.head.value;return this.remove(),t},t.prototype.forEach=function(t){for(var e=this.head,n=0;n<this.length;n++)t(e.value,n),e=e.next},t.prototype.indexOf=function(t){for(var e=this.head,n=0,r=0;r<this.length;r++){if(e.value===t){n=r;break}e=e.next}return n},t.prototype.some=function(t){for(var e=this.head,n=!1;e&&!n;){if(t(e.value)){n=!0;break}e=e.next}return n},t.prototype.every=function(t){for(var e=this.head,n=!0;e&&n;)t(e.value)||(n=!1),e=e.next;return n},t.prototype.toString=function(){return"[Linked List]"},t.prototype.find=function(t){for(var e,n=this.head,r=0;r<this.length;r++){if(t(n.value,r)){e=n.value;break}n=n.next}return e},t.prototype.findIndex=function(t){for(var e,n=this.head,r=0;r<this.length;r++){if(t(n.value,r)){e=r;break}n=n.next}return e},t.prototype.getNode=function(t){if(0===this.length||t<0||t>=this.length)throw new Error("Position is out of the list");for(var e=this.head,n=0;n<t;n++)e=e.next;return e},t.prototype.createInternalArrayRepresentation=function(){for(var t=[],e=this.head;e;)t.push(e.value),e=e.next;this.asArray=t},t}();var a=function(){function t(){}return t.reflow=function(t){t.offsetHeight},t.getStyles=function(t){var e=t.ownerDocument.defaultView;return e&&e.opener||(e=i),e.getComputedStyle(t)},t}(),f={},l="undefined"==typeof console||!("warn"in console);t.isBs3=function c(){return void 0===i||("undefined"==typeof i.__theme?r?"bs3"===r:"bs3"===(r=function n(){if("undefined"==typeof document)return null;var t=document.createElement("span");t.innerText="test bs version",document.body.appendChild(t),t.classList.add("d-none");var e=t.getBoundingClientRect();return document.body.removeChild(t),e&&0===e.top?"bs4":"bs3"}()):"bs4"!==i.__theme)},t.LinkedList=u,t.listenToTriggersV2=function p(r,i){var t=h(i.triggers),o=i.target;if(1===t.length&&t[0].isManual())return Function.prototype;var s=[],u=[],a=function(){u.forEach(function(t){return s.push(t())}),u.length=0};return t.forEach(function(t){var e=t.open===t.close,n=e?i.toggle:i.show;e||u.push(function(){return r.listen(o,t.close,i.hide)}),s.push(r.listen(o,t.open,function(){return n(a)}))}),function(){s.forEach(function(t){return t()})}},t.registerOutsideClick=function d(t,n){return n.outsideClick?t.listen("document","click",function(e){return n.target&&n.target.contains(e.target)?undefined:n.targets&&n.targets.some(function(t){return t.contains(e.target)})?undefined:void n.hide()}):Function.prototype},t.OnChange=function g(t){return function(t,e){var n=" __"+e+"Value";Object.defineProperty(t,e,{get:function(){return this[n]},set:function(t){this[n]!==(this[n]=t)&&this[e+"Change"]&&this[e+"Change"].emit(t)}})}},t.setTheme=function v(t){r=t},t.Trigger=o,t.Utils=a,t.window=i,t.document=n,t.warnOnce=function y(t){!e.isDevMode()||l||t in f||(f[t]=!0,console.warn(t))},t.parseTriggers=h,t.listenToTriggers=function m(e,n,t,r,i,o){var s=h(t),u=[];return 1===s.length&&s[0].isManual()?Function.prototype:(s.forEach(function(t){t.open!==t.close?u.push(e.listen(n,t.open,r),e.listen(n,t.close,i)):u.push(e.listen(n,t.open,o))}),function(){u.forEach(function(t){return t()})})},Object.defineProperty(t,"__esModule",{value:!0})});
9
+ var r,i="undefined"!=typeof window&&window||{},n=i.document;i.location,i.gc,i.performance&&i.performance,i.Event,i.MouseEvent,i.KeyboardEvent,i.EventTarget,i.History,i.Location,i.EventListener;var u=function(){function t(){this.length=0,this.asArray=[]}return t.prototype.get=function(t){if(!(0===this.length||t<0||t>=this.length)){for(var e=this.head,n=0;n<t;n++)e=e.next;return e.value}},t.prototype.add=function(t,e){if(void 0===e&&(e=this.length),e<0||e>this.length)throw new Error("Position is out of the list");var n={value:t,next:undefined,previous:undefined};if(0===this.length)this.head=n,this.tail=n,this.current=n;else if(0===e)n.next=this.head,this.head.previous=n,this.head=n;else if(e===this.length)(this.tail.next=n).previous=this.tail,this.tail=n;else{var r=this.getNode(e-1),i=r.next;r.next=n,(i.previous=n).previous=r,n.next=i}this.length++,this.createInternalArrayRepresentation()},t.prototype.remove=function(t){if(void 0===t&&(t=0),0===this.length||t<0||t>=this.length)throw new Error("Position is out of the list");if(0===t)this.head=this.head.next,this.head?this.head.previous=undefined:this.tail=undefined;else if(t===this.length-1)this.tail=this.tail.previous,this.tail.next=undefined;else{var e=this.getNode(t);e.next.previous=e.previous,e.previous.next=e.next}this.length--,this.createInternalArrayRepresentation()},t.prototype.set=function(t,e){if(0===this.length||t<0||t>=this.length)throw new Error("Position is out of the list");this.getNode(t).value=e,this.createInternalArrayRepresentation()},t.prototype.toArray=function(){return this.asArray},t.prototype.findAll=function(t){for(var e=this.head,n=[],r=0;r<this.length;r++)t(e.value,r)&&n.push({index:r,value:e.value}),e=e.next;return n},t.prototype.push=function(){for(var e=this,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return t.forEach(function(t){e.add(t)}),this.length},t.prototype.pop=function(){if(0===this.length)return undefined;var t=this.tail;return this.remove(this.length-1),t.value},t.prototype.unshift=function(){for(var e=this,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];return t.reverse(),t.forEach(function(t){e.add(t,0)}),this.length},t.prototype.shift=function(){if(0===this.length)return undefined;var t=this.head.value;return this.remove(),t},t.prototype.forEach=function(t){for(var e=this.head,n=0;n<this.length;n++)t(e.value,n),e=e.next},t.prototype.indexOf=function(t){for(var e=this.head,n=0,r=0;r<this.length;r++){if(e.value===t){n=r;break}e=e.next}return n},t.prototype.some=function(t){for(var e=this.head,n=!1;e&&!n;){if(t(e.value)){n=!0;break}e=e.next}return n},t.prototype.every=function(t){for(var e=this.head,n=!0;e&&n;)t(e.value)||(n=!1),e=e.next;return n},t.prototype.toString=function(){return"[Linked List]"},t.prototype.find=function(t){for(var e,n=this.head,r=0;r<this.length;r++){if(t(n.value,r)){e=n.value;break}n=n.next}return e},t.prototype.findIndex=function(t){for(var e,n=this.head,r=0;r<this.length;r++){if(t(n.value,r)){e=r;break}n=n.next}return e},t.prototype.getNode=function(t){if(0===this.length||t<0||t>=this.length)throw new Error("Position is out of the list");for(var e=this.head,n=0;n<t;n++)e=e.next;return e},t.prototype.createInternalArrayRepresentation=function(){for(var t=[],e=this.head;e;)t.push(e.value),e=e.next;this.asArray=t},t}();var a=function(){function t(){}return t.reflow=function(t){t.offsetHeight},t.getStyles=function(t){var e=t.ownerDocument.defaultView;return e&&e.opener||(e=i),e.getComputedStyle(t)},t}(),f={},l="undefined"==typeof console||!("warn"in console);t.isBs3=function c(){return void 0===i||("undefined"==typeof i.__theme?r?"bs3"===r:"bs3"===(r=function n(){if("undefined"==typeof document)return null;var t=document.createElement("span");t.innerText="test bs version",document.body.appendChild(t),t.classList.add("d-none");var e=t.getBoundingClientRect();return document.body.removeChild(t),e&&0===e.top?"bs4":"bs3"}()):"bs4"!==i.__theme)},t.LinkedList=u,t.listenToTriggersV2=function d(r,i){var t=h(i.triggers),o=i.target;if(1===t.length&&t[0].isManual())return Function.prototype;var s=[],u=[],a=function(){u.forEach(function(t){return s.push(t())}),u.length=0};return t.forEach(function(t){var e=t.open===t.close,n=e?i.toggle:i.show;e||u.push(function(){return r.listen(o,t.close,i.hide)}),s.push(r.listen(o,t.open,function(){return n(a)}))}),function(){s.forEach(function(t){return t()})}},t.registerOutsideClick=function p(t,n){return n.outsideClick?t.listen("document","click",function(e){return n.target&&n.target.contains(e.target)?undefined:n.targets&&n.targets.some(function(t){return t.contains(e.target)})?undefined:void n.hide()}):Function.prototype},t.registerEscClick=function g(t,n){return n.outsideEsc?t.listen("document","keyup.esc",function(e){return n.target&&n.target.contains(e.target)?undefined:n.targets&&n.targets.some(function(t){return t.contains(e.target)})?undefined:void n.hide()}):Function.prototype},t.OnChange=function v(t){return function(t,e){var n=" __"+e+"Value";Object.defineProperty(t,e,{get:function(){return this[n]},set:function(t){this[n]!==(this[n]=t)&&this[e+"Change"]&&this[e+"Change"].emit(t)}})}},t.setTheme=function y(t){r=t},t.Trigger=o,t.Utils=a,t.window=i,t.document=n,t.warnOnce=function m(t){!e.isDevMode()||l||t in f||(f[t]=!0,console.warn(t))},t.parseTriggers=h,t.listenToTriggers=function x(e,n,t,r,i,o){var s=h(t),u=[];return 1===s.length&&s[0].isManual()?Function.prototype:(s.forEach(function(t){t.open!==t.close?u.push(e.listen(n,t.open,r),e.listen(n,t.close,i)):u.push(e.listen(n,t.open,o))}),function(){u.forEach(function(t){return t()})})},Object.defineProperty(t,"__esModule",{value:!0})});
10
10
  //# sourceMappingURL=ngx-bootstrap-utils.umd.min.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["ng://ngx-bootstrap/utils/trigger.class.ts","ng://ngx-bootstrap/utils/triggers.ts","ng://ngx-bootstrap/utils/facade/browser.ts","ng://ngx-bootstrap/utils/theme-provider.ts","ng://ngx-bootstrap/utils/linked-list.class.ts","ng://ngx-bootstrap/utils/utils.class.ts","ng://ngx-bootstrap/utils/warn-once.ts","ng://ngx-bootstrap/utils/decorators.ts"],"names":["Trigger","open","close","this","prototype","isManual","DEFAULT_ALIASES","hover","focus","parseTriggers","triggers","aliases","trimmedTriggers","trim","length","parsedTriggers","split","map","trigger","triggerPair","alias","manualTriggers","filter","Error","guessedVersion","win","window","document","location","LinkedList","get","position","current","head","index","next","value","add","node","undefined","previous","tail","currentPreviousNode","getNode","currentNextNode","createInternalArrayRepresentation","remove","removedNode","set","toArray","asArray","findAll","fn","result","push","_this","args","_i","arguments","forEach","arg","pop","last","unshift","reverse","shift","lastItem","indexOf","some","every","toString","find","findIndex","outArray","Utils","reflow","element","offsetHeight","getStyles","elem","view","ownerDocument","defaultView","opener","getComputedStyle","_messagesHash","_hideMsg","console","isBs3","__theme","_guessBsVersion","spanEl","createElement","innerText","body","appendChild","classList","rect","getBoundingClientRect","removeChild","top","listenToTriggersV2","renderer","options","target","Function","listeners","_registerHide","registerHide","useToggle","showFn","toggle","show","listen","hide","unsubscribeFn","registerOutsideClick","outsideClick","event","contains","targets","OnChange","defaultValue","propertyKey","_key","Object","defineProperty","emit","setTheme","theme","warnOnce","msg","isDevMode","warn","listenToTriggers","hideFn","toggleFn"],"mappings":"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","sourcesContent":["/**\n * @copyright Valor Software\n * @copyright Angular ng-bootstrap team\n */\n\nexport class Trigger {\n open: string;\n close?: string;\n\n constructor(open: string, close?: string) {\n this.open = open;\n this.close = close || open;\n }\n\n isManual(): boolean {\n return this.open === 'manual' || this.close === 'manual';\n }\n}\n","/**\n * @copyright Valor Software\n * @copyright Angular ng-bootstrap team\n */\nimport { Renderer2 } from '@angular/core';\nimport { Trigger } from './trigger.class';\n\n/* tslint:disable-next-line: no-any */\nexport type BsEventCallback = (event?: any) => boolean | void;\n\nexport interface ListenOptions {\n target?: HTMLElement;\n targets?: HTMLElement[];\n triggers?: string;\n outsideClick?: boolean;\n show?: BsEventCallback;\n hide?: BsEventCallback;\n toggle?: BsEventCallback;\n}\n\nconst DEFAULT_ALIASES = {\n hover: ['mouseover', 'mouseout'],\n focus: ['focusin', 'focusout']\n};\n\n/* tslint:disable-next-line: no-any */\nexport function parseTriggers(triggers: string, aliases: any = DEFAULT_ALIASES): Trigger[] {\n const trimmedTriggers = (triggers || '').trim();\n\n if (trimmedTriggers.length === 0) {\n return [];\n }\n\n const parsedTriggers = trimmedTriggers\n .split(/\\s+/)\n .map((trigger: string) => trigger.split(':'))\n .map((triggerPair: string[]) => {\n const alias = aliases[triggerPair[0]] || triggerPair;\n\n return new Trigger(alias[0], alias[1]);\n });\n\n const manualTriggers = parsedTriggers.filter((triggerPair: Trigger) =>\n triggerPair.isManual()\n );\n\n if (manualTriggers.length > 1) {\n throw new Error('Triggers parse error: only one manual trigger is allowed');\n }\n\n if (manualTriggers.length === 1 && parsedTriggers.length > 1) {\n throw new Error('Triggers parse error: manual trigger can\\'t be mixed with other triggers');\n }\n\n return parsedTriggers;\n}\n\nexport function listenToTriggers(renderer: Renderer2,\n /* tslint:disable-next-line: no-any */\n target: any,\n triggers: string,\n showFn: BsEventCallback,\n hideFn: BsEventCallback,\n toggleFn: BsEventCallback): Function {\n const parsedTriggers = parseTriggers(triggers);\n /* tslint:disable-next-line: no-any */\n const listeners: any[] = [];\n\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return Function.prototype;\n }\n\n parsedTriggers.forEach((trigger: Trigger) => {\n if (trigger.open === trigger.close) {\n listeners.push(renderer.listen(target, trigger.open, toggleFn));\n\n return;\n }\n\n listeners.push(\n renderer.listen(target, trigger.open, showFn),\n renderer.listen(target, trigger.close, hideFn)\n );\n });\n\n return () => {\n listeners.forEach((unsubscribeFn: Function) => unsubscribeFn());\n };\n}\n\nexport function listenToTriggersV2(renderer: Renderer2,\n options: ListenOptions): Function {\n const parsedTriggers = parseTriggers(options.triggers);\n const target = options.target;\n // do nothing\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return Function.prototype;\n }\n\n // all listeners\n /* tslint:disable-next-line: no-any */\n const listeners: any[] = [];\n\n // lazy listeners registration\n const _registerHide: Function[] = [];\n const registerHide = () => {\n // add hide listeners to unregister array\n _registerHide.forEach((fn: Function) => listeners.push(fn()));\n // register hide events only once\n _registerHide.length = 0;\n };\n\n // register open\\close\\toggle listeners\n parsedTriggers.forEach((trigger: Trigger) => {\n const useToggle = trigger.open === trigger.close;\n const showFn = useToggle ? options.toggle : options.show;\n\n if (!useToggle) {\n _registerHide.push(() =>\n renderer.listen(target, trigger.close, options.hide)\n );\n }\n\n listeners.push(\n renderer.listen(target, trigger.open, () => showFn(registerHide))\n );\n });\n\n return () => {\n listeners.forEach((unsubscribeFn: Function) => unsubscribeFn());\n };\n}\n\nexport function registerOutsideClick(renderer: Renderer2,\n options: ListenOptions) {\n if (!options.outsideClick) {\n return Function.prototype;\n }\n\n /* tslint:disable-next-line: no-any */\n return renderer.listen('document', 'click', (event: any) => {\n if (options.target && options.target.contains(event.target)) {\n return undefined;\n }\n if (\n options.targets &&\n options.targets.some(target => target.contains(event.target))\n ) {\n return undefined;\n }\n\n options.hide();\n });\n}\n","/*tslint:disable */\n/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * JS version of browser APIs. This library can only run in the browser.\n */\nvar win = (typeof window !== 'undefined' && window) || <any>{};\n\nexport { win as window };\nexport var document = win.document;\nexport var location = win.location;\nexport var gc = win['gc'] ? () => win['gc']() : (): any => null;\nexport var performance = win['performance'] ? win['performance'] : null;\nexport const Event = win['Event'];\nexport const MouseEvent = win['MouseEvent'];\nexport const KeyboardEvent = win['KeyboardEvent'];\nexport const EventTarget = win['EventTarget'];\nexport const History = win['History'];\nexport const Location = win['Location'];\nexport const EventListener = win['EventListener'];\n","import { window } from './facade/browser';\n\nlet guessedVersion: 'bs3' | 'bs4';\n\nfunction _guessBsVersion(): 'bs3' | 'bs4' {\n if (typeof document === 'undefined') {\n return null;\n }\n const spanEl = document.createElement('span');\n spanEl.innerText = 'test bs version';\n document.body.appendChild(spanEl);\n spanEl.classList.add('d-none');\n const rect = spanEl.getBoundingClientRect();\n document.body.removeChild(spanEl);\n if (!rect) {\n return 'bs3';\n }\n\n return rect.top === 0 ? 'bs4' : 'bs3';\n}\n\nexport function setTheme(theme: 'bs3' | 'bs4'): void {\n guessedVersion = theme;\n}\n\n// todo: in ngx-bootstrap, bs4 will became a default one\nexport function isBs3(): boolean {\n if (typeof window === 'undefined') {\n return true;\n }\n\n if (typeof window.__theme === 'undefined') {\n if (guessedVersion) {\n return guessedVersion === 'bs3';\n }\n guessedVersion = _guessBsVersion();\n\n return guessedVersion === 'bs3';\n }\n\n return window.__theme !== 'bs4';\n}\n","export class LinkedList<T> {\n length = 0;\n /* tslint:disable-next-line: no-any*/\n protected head: any;\n /* tslint:disable-next-line: no-any*/\n protected tail: any;\n /* tslint:disable-next-line: no-any*/\n protected current: any;\n protected asArray: T[] = [];\n\n get(position: number): T {\n if (this.length === 0 || position < 0 || position >= this.length) {\n return void 0;\n }\n\n let current = this.head;\n\n for (let index = 0; index < position; index++) {\n current = current.next;\n }\n\n return current.value;\n }\n\n add(value: T, position: number = this.length): void {\n if (position < 0 || position > this.length) {\n throw new Error('Position is out of the list');\n }\n\n /* tslint:disable-next-line: no-any*/\n const node: any = {\n value,\n next: undefined,\n previous: undefined\n };\n\n if (this.length === 0) {\n this.head = node;\n this.tail = node;\n this.current = node;\n } else {\n if (position === 0) {\n // first node\n node.next = this.head;\n this.head.previous = node;\n this.head = node;\n } else if (position === this.length) {\n // last node\n this.tail.next = node;\n node.previous = this.tail;\n this.tail = node;\n } else {\n // node in middle\n const currentPreviousNode = this.getNode(position - 1);\n const currentNextNode = currentPreviousNode.next;\n\n currentPreviousNode.next = node;\n currentNextNode.previous = node;\n\n node.previous = currentPreviousNode;\n node.next = currentNextNode;\n }\n }\n this.length++;\n this.createInternalArrayRepresentation();\n }\n\n remove(position = 0): void {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n\n if (position === 0) {\n // first node\n this.head = this.head.next;\n\n if (this.head) {\n // there is no second node\n this.head.previous = undefined;\n } else {\n // there is no second node\n this.tail = undefined;\n }\n } else if (position === this.length - 1) {\n // last node\n this.tail = this.tail.previous;\n this.tail.next = undefined;\n } else {\n // middle node\n const removedNode = this.getNode(position);\n removedNode.next.previous = removedNode.previous;\n removedNode.previous.next = removedNode.next;\n }\n\n this.length--;\n this.createInternalArrayRepresentation();\n }\n\n set(position: number, value: T): void {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n\n const node = this.getNode(position);\n node.value = value;\n this.createInternalArrayRepresentation();\n }\n\n toArray(): T[] {\n return this.asArray;\n }\n\n /* tslint:disable-next-line: no-any*/\n findAll(fn: any): any[] {\n let current = this.head;\n /* tslint:disable-next-line: no-any*/\n const result: any[] = [];\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result.push({index, value: current.value});\n }\n current = current.next;\n }\n\n return result;\n }\n\n // Array methods overriding start\n push(...args: T[]): number {\n /* tslint:disable-next-line: no-any*/\n args.forEach((arg: any) => {\n this.add(arg);\n });\n\n return this.length;\n }\n\n pop(): T {\n if (this.length === 0) {\n return undefined;\n }\n const last = this.tail;\n this.remove(this.length - 1);\n\n return last.value;\n }\n\n unshift(...args: T[]): number {\n args.reverse();\n /* tslint:disable-next-line: no-any*/\n args.forEach((arg: any) => {\n this.add(arg, 0);\n });\n\n return this.length;\n }\n\n shift(): T {\n if (this.length === 0) {\n return undefined;\n }\n const lastItem = this.head.value;\n this.remove();\n\n return lastItem;\n }\n\n /* tslint:disable-next-line: no-any*/\n forEach(fn: any): void {\n let current = this.head;\n for (let index = 0; index < this.length; index++) {\n fn(current.value, index);\n current = current.next;\n }\n }\n\n indexOf(value: T): number {\n let current = this.head;\n let position = 0;\n\n for (let index = 0; index < this.length; index++) {\n if (current.value === value) {\n position = index;\n break;\n }\n current = current.next;\n }\n\n return position;\n }\n\n /* tslint:disable-next-line: no-any*/\n some(fn: any): boolean {\n let current = this.head;\n let result = false;\n while (current && !result) {\n if (fn(current.value)) {\n result = true;\n break;\n }\n current = current.next;\n }\n\n return result;\n }\n\n /* tslint:disable-next-line: no-any*/\n every(fn: any): boolean {\n let current = this.head;\n let result = true;\n while (current && result) {\n if (!fn(current.value)) {\n result = false;\n }\n current = current.next;\n }\n\n return result;\n }\n\n toString(): string {\n return '[Linked List]';\n }\n\n /* tslint:disable-next-line: no-any*/\n find(fn: any): T {\n let current = this.head;\n let result: T;\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result = current.value;\n break;\n }\n current = current.next;\n }\n\n return result;\n }\n\n /* tslint:disable-next-line: no-any*/\n findIndex(fn: any): number {\n let current = this.head;\n let result: number;\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result = index;\n break;\n }\n current = current.next;\n }\n\n return result;\n }\n\n /* tslint:disable-next-line: no-any*/\n protected getNode(position: number): any {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n\n let current = this.head;\n\n for (let index = 0; index < position; index++) {\n current = current.next;\n }\n\n return current;\n }\n\n protected createInternalArrayRepresentation(): void {\n /* tslint:disable-next-line: no-any*/\n const outArray: any[] = [];\n let current = this.head;\n\n while (current) {\n outArray.push(current.value);\n current = current.next;\n }\n this.asArray = outArray;\n }\n\n // Array methods overriding END\n}\n","import { window } from './facade/browser';\n\nexport class Utils {\n /* tslint:disable-next-line: no-any */\n static reflow(element: any): void {\n /* tslint:disable-next-line: no-any */\n ((bs: any): void => bs)(element.offsetHeight);\n }\n\n // source: https://github.com/jquery/jquery/blob/master/src/css/var/getStyles.js\n /* tslint:disable-next-line: no-any */\n static getStyles(elem: any): any {\n // Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n // IE throws on elements created in popups\n // FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n let view = elem.ownerDocument.defaultView;\n\n if (!view || !view.opener) {\n view = window;\n }\n\n return view.getComputedStyle(elem);\n }\n}\n","import { isDevMode } from '@angular/core';\nconst _messagesHash: { [key: string]: boolean } = {};\nconst _hideMsg = typeof console === 'undefined' || !('warn' in console);\n\nexport function warnOnce(msg: string): void {\n if (!isDevMode() || _hideMsg || msg in _messagesHash) {\n return;\n }\n\n _messagesHash[msg] = true;\n /*tslint:disable-next-line*/\n console.warn(msg);\n}\n","/*tslint:disable:no-invalid-this */\n/* tslint:disable-next-line: no-any */\nexport function OnChange(defaultValue?: any): any {\n const sufix = 'Change';\n\n /* tslint:disable-next-line: no-any */\n return function OnChangeHandler(target: any, propertyKey: string): void {\n const _key = ` __${propertyKey}Value`;\n Object.defineProperty(target, propertyKey, {\n /* tslint:disable-next-line: no-any */\n get(): any {\n return this[_key];\n },\n /* tslint:disable-next-line: no-any */\n set(value: any): void {\n const prevValue = this[_key];\n this[_key] = value;\n if (prevValue !== value && this[propertyKey + sufix]) {\n this[propertyKey + sufix].emit(value);\n }\n }\n });\n };\n}\n/* tslint:enable */\n"]}
1
+ {"version":3,"sources":["ng://ngx-bootstrap/utils/trigger.class.ts","ng://ngx-bootstrap/utils/triggers.ts","ng://ngx-bootstrap/utils/facade/browser.ts","ng://ngx-bootstrap/utils/theme-provider.ts","ng://ngx-bootstrap/utils/linked-list.class.ts","ng://ngx-bootstrap/utils/utils.class.ts","ng://ngx-bootstrap/utils/warn-once.ts","ng://ngx-bootstrap/utils/decorators.ts"],"names":["Trigger","open","close","this","prototype","isManual","DEFAULT_ALIASES","hover","focus","parseTriggers","triggers","aliases","trimmedTriggers","trim","length","parsedTriggers","split","map","trigger","triggerPair","alias","manualTriggers","filter","Error","guessedVersion","win","window","document","location","gc","performance","Event","MouseEvent","KeyboardEvent","EventTarget","History","Location","EventListener","LinkedList","get","position","current","head","index","next","value","add","node","undefined","previous","tail","currentPreviousNode","getNode","currentNextNode","createInternalArrayRepresentation","remove","removedNode","set","toArray","asArray","findAll","fn","result","push","_this","args","_i","arguments","forEach","arg","pop","last","unshift","reverse","shift","lastItem","indexOf","some","every","toString","find","findIndex","outArray","Utils","reflow","element","offsetHeight","getStyles","elem","view","ownerDocument","defaultView","opener","getComputedStyle","_messagesHash","_hideMsg","console","isBs3","__theme","_guessBsVersion","spanEl","createElement","innerText","body","appendChild","classList","rect","getBoundingClientRect","removeChild","top","listenToTriggersV2","renderer","options","target","Function","listeners","_registerHide","registerHide","useToggle","showFn","toggle","show","listen","hide","unsubscribeFn","registerOutsideClick","outsideClick","event","contains","targets","registerEscClick","outsideEsc","OnChange","defaultValue","propertyKey","_key","Object","defineProperty","emit","setTheme","theme","warnOnce","msg","isDevMode","warn","listenToTriggers","hideFn","toggleFn"],"mappings":"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","sourcesContent":["/**\n * @copyright Valor Software\n * @copyright Angular ng-bootstrap team\n */\n\nexport class Trigger {\n open: string;\n close?: string;\n\n constructor(open: string, close?: string) {\n this.open = open;\n this.close = close || open;\n }\n\n isManual(): boolean {\n return this.open === 'manual' || this.close === 'manual';\n }\n}\n","/**\n * @copyright Valor Software\n * @copyright Angular ng-bootstrap team\n */\nimport { Renderer2 } from '@angular/core';\nimport { Trigger } from './trigger.class';\n\n/* tslint:disable-next-line: no-any */\nexport type BsEventCallback = (event?: any) => boolean | void;\n\nexport interface ListenOptions {\n target?: HTMLElement;\n targets?: HTMLElement[];\n triggers?: string;\n outsideClick?: boolean;\n outsideEsc?: boolean;\n show?: BsEventCallback;\n hide?: BsEventCallback;\n toggle?: BsEventCallback;\n}\n\nconst DEFAULT_ALIASES = {\n hover: ['mouseover', 'mouseout'],\n focus: ['focusin', 'focusout']\n};\n\n/* tslint:disable-next-line: no-any */\nexport function parseTriggers(triggers: string, aliases: any = DEFAULT_ALIASES): Trigger[] {\n const trimmedTriggers = (triggers || '').trim();\n\n if (trimmedTriggers.length === 0) {\n return [];\n }\n\n const parsedTriggers = trimmedTriggers\n .split(/\\s+/)\n .map((trigger: string) => trigger.split(':'))\n .map((triggerPair: string[]) => {\n const alias = aliases[triggerPair[0]] || triggerPair;\n\n return new Trigger(alias[0], alias[1]);\n });\n\n const manualTriggers = parsedTriggers.filter((triggerPair: Trigger) =>\n triggerPair.isManual()\n );\n\n if (manualTriggers.length > 1) {\n throw new Error('Triggers parse error: only one manual trigger is allowed');\n }\n\n if (manualTriggers.length === 1 && parsedTriggers.length > 1) {\n throw new Error('Triggers parse error: manual trigger can\\'t be mixed with other triggers');\n }\n\n return parsedTriggers;\n}\n\nexport function listenToTriggers(renderer: Renderer2,\n /* tslint:disable-next-line: no-any */\n target: any,\n triggers: string,\n showFn: BsEventCallback,\n hideFn: BsEventCallback,\n toggleFn: BsEventCallback): Function {\n const parsedTriggers = parseTriggers(triggers);\n /* tslint:disable-next-line: no-any */\n const listeners: any[] = [];\n\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return Function.prototype;\n }\n\n parsedTriggers.forEach((trigger: Trigger) => {\n if (trigger.open === trigger.close) {\n listeners.push(renderer.listen(target, trigger.open, toggleFn));\n\n return;\n }\n\n listeners.push(\n renderer.listen(target, trigger.open, showFn),\n renderer.listen(target, trigger.close, hideFn)\n );\n });\n\n return () => {\n listeners.forEach((unsubscribeFn: Function) => unsubscribeFn());\n };\n}\n\nexport function listenToTriggersV2(renderer: Renderer2,\n options: ListenOptions): Function {\n const parsedTriggers = parseTriggers(options.triggers);\n const target = options.target;\n // do nothing\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\n return Function.prototype;\n }\n\n // all listeners\n /* tslint:disable-next-line: no-any */\n const listeners: any[] = [];\n\n // lazy listeners registration\n const _registerHide: Function[] = [];\n const registerHide = () => {\n // add hide listeners to unregister array\n _registerHide.forEach((fn: Function) => listeners.push(fn()));\n // register hide events only once\n _registerHide.length = 0;\n };\n\n // register open\\close\\toggle listeners\n parsedTriggers.forEach((trigger: Trigger) => {\n const useToggle = trigger.open === trigger.close;\n const showFn = useToggle ? options.toggle : options.show;\n\n if (!useToggle) {\n _registerHide.push(() =>\n renderer.listen(target, trigger.close, options.hide)\n );\n }\n\n listeners.push(\n renderer.listen(target, trigger.open, () => showFn(registerHide))\n );\n });\n\n return () => {\n listeners.forEach((unsubscribeFn: Function) => unsubscribeFn());\n };\n}\n\nexport function registerOutsideClick(renderer: Renderer2,\n options: ListenOptions) {\n if (!options.outsideClick) {\n return Function.prototype;\n }\n\n /* tslint:disable-next-line: no-any */\n return renderer.listen('document', 'click', (event: any) => {\n if (options.target && options.target.contains(event.target)) {\n return undefined;\n }\n if (\n options.targets &&\n options.targets.some(target => target.contains(event.target))\n ) {\n return undefined;\n }\n\n options.hide();\n });\n}\n\nexport function registerEscClick(renderer: Renderer2,\n options: ListenOptions) {\n if (!options.outsideEsc) {\n return Function.prototype;\n }\n\n return renderer.listen('document', 'keyup.esc', (event: any) => {\n if (options.target && options.target.contains(event.target)) {\n return undefined;\n }\n if (\n options.targets &&\n options.targets.some(target => target.contains(event.target))\n ) {\n return undefined;\n }\n\n options.hide();\n });\n}\n","/**\n * @license\n * Copyright Google Inc. All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.io/license\n */\n\n/**\n * JS version of browser APIs. This library can only run in the browser.\n */\nconst win = (typeof window !== 'undefined' && window) || {} as any;\n\nexport { win as window };\nexport const document = win.document;\nexport const location = win.location;\nexport const gc = win.gc ? () => win.gc() : (): any => null;\nexport const performance = win.performance ? win.performance : null;\nexport const Event = win.Event;\nexport const MouseEvent = win.MouseEvent;\nexport const KeyboardEvent = win.KeyboardEvent;\nexport const EventTarget = win.EventTarget;\nexport const History = win.History;\nexport const Location = win.Location;\nexport const EventListener = win.EventListener;\n","import { window } from './facade/browser';\n\nlet guessedVersion: 'bs3' | 'bs4';\n\nfunction _guessBsVersion(): 'bs3' | 'bs4' {\n if (typeof document === 'undefined') {\n return null;\n }\n const spanEl = document.createElement('span');\n spanEl.innerText = 'test bs version';\n document.body.appendChild(spanEl);\n spanEl.classList.add('d-none');\n const rect = spanEl.getBoundingClientRect();\n document.body.removeChild(spanEl);\n if (!rect) {\n return 'bs3';\n }\n\n return rect.top === 0 ? 'bs4' : 'bs3';\n}\n\nexport function setTheme(theme: 'bs3' | 'bs4'): void {\n guessedVersion = theme;\n}\n\n// todo: in ngx-bootstrap, bs4 will became a default one\nexport function isBs3(): boolean {\n if (typeof window === 'undefined') {\n return true;\n }\n\n if (typeof window.__theme === 'undefined') {\n if (guessedVersion) {\n return guessedVersion === 'bs3';\n }\n guessedVersion = _guessBsVersion();\n\n return guessedVersion === 'bs3';\n }\n\n return window.__theme !== 'bs4';\n}\n","export class LinkedList<T> {\n length = 0;\n /* tslint:disable-next-line: no-any*/\n protected head: any;\n /* tslint:disable-next-line: no-any*/\n protected tail: any;\n /* tslint:disable-next-line: no-any*/\n protected current: any;\n protected asArray: T[] = [];\n\n get(position: number): T {\n if (this.length === 0 || position < 0 || position >= this.length) {\n return void 0;\n }\n\n let current = this.head;\n\n for (let index = 0; index < position; index++) {\n current = current.next;\n }\n\n return current.value;\n }\n\n add(value: T, position: number = this.length): void {\n if (position < 0 || position > this.length) {\n throw new Error('Position is out of the list');\n }\n\n /* tslint:disable-next-line: no-any*/\n const node: any = {\n value,\n next: undefined,\n previous: undefined\n };\n\n if (this.length === 0) {\n this.head = node;\n this.tail = node;\n this.current = node;\n } else {\n if (position === 0) {\n // first node\n node.next = this.head;\n this.head.previous = node;\n this.head = node;\n } else if (position === this.length) {\n // last node\n this.tail.next = node;\n node.previous = this.tail;\n this.tail = node;\n } else {\n // node in middle\n const currentPreviousNode = this.getNode(position - 1);\n const currentNextNode = currentPreviousNode.next;\n\n currentPreviousNode.next = node;\n currentNextNode.previous = node;\n\n node.previous = currentPreviousNode;\n node.next = currentNextNode;\n }\n }\n this.length++;\n this.createInternalArrayRepresentation();\n }\n\n remove(position = 0): void {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n\n if (position === 0) {\n // first node\n this.head = this.head.next;\n\n if (this.head) {\n // there is no second node\n this.head.previous = undefined;\n } else {\n // there is no second node\n this.tail = undefined;\n }\n } else if (position === this.length - 1) {\n // last node\n this.tail = this.tail.previous;\n this.tail.next = undefined;\n } else {\n // middle node\n const removedNode = this.getNode(position);\n removedNode.next.previous = removedNode.previous;\n removedNode.previous.next = removedNode.next;\n }\n\n this.length--;\n this.createInternalArrayRepresentation();\n }\n\n set(position: number, value: T): void {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n\n const node = this.getNode(position);\n node.value = value;\n this.createInternalArrayRepresentation();\n }\n\n toArray(): T[] {\n return this.asArray;\n }\n\n /* tslint:disable-next-line: no-any*/\n findAll(fn: any): any[] {\n let current = this.head;\n /* tslint:disable-next-line: no-any*/\n const result: any[] = [];\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result.push({index, value: current.value});\n }\n current = current.next;\n }\n\n return result;\n }\n\n // Array methods overriding start\n push(...args: T[]): number {\n /* tslint:disable-next-line: no-any*/\n args.forEach((arg: any) => {\n this.add(arg);\n });\n\n return this.length;\n }\n\n pop(): T {\n if (this.length === 0) {\n return undefined;\n }\n const last = this.tail;\n this.remove(this.length - 1);\n\n return last.value;\n }\n\n unshift(...args: T[]): number {\n args.reverse();\n /* tslint:disable-next-line: no-any*/\n args.forEach((arg: any) => {\n this.add(arg, 0);\n });\n\n return this.length;\n }\n\n shift(): T {\n if (this.length === 0) {\n return undefined;\n }\n const lastItem = this.head.value;\n this.remove();\n\n return lastItem;\n }\n\n /* tslint:disable-next-line: no-any*/\n forEach(fn: any): void {\n let current = this.head;\n for (let index = 0; index < this.length; index++) {\n fn(current.value, index);\n current = current.next;\n }\n }\n\n indexOf(value: T): number {\n let current = this.head;\n let position = 0;\n\n for (let index = 0; index < this.length; index++) {\n if (current.value === value) {\n position = index;\n break;\n }\n current = current.next;\n }\n\n return position;\n }\n\n /* tslint:disable-next-line: no-any*/\n some(fn: any): boolean {\n let current = this.head;\n let result = false;\n while (current && !result) {\n if (fn(current.value)) {\n result = true;\n break;\n }\n current = current.next;\n }\n\n return result;\n }\n\n /* tslint:disable-next-line: no-any*/\n every(fn: any): boolean {\n let current = this.head;\n let result = true;\n while (current && result) {\n if (!fn(current.value)) {\n result = false;\n }\n current = current.next;\n }\n\n return result;\n }\n\n toString(): string {\n return '[Linked List]';\n }\n\n /* tslint:disable-next-line: no-any*/\n find(fn: any): T {\n let current = this.head;\n let result: T;\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result = current.value;\n break;\n }\n current = current.next;\n }\n\n return result;\n }\n\n /* tslint:disable-next-line: no-any*/\n findIndex(fn: any): number {\n let current = this.head;\n let result: number;\n for (let index = 0; index < this.length; index++) {\n if (fn(current.value, index)) {\n result = index;\n break;\n }\n current = current.next;\n }\n\n return result;\n }\n\n /* tslint:disable-next-line: no-any*/\n protected getNode(position: number): any {\n if (this.length === 0 || position < 0 || position >= this.length) {\n throw new Error('Position is out of the list');\n }\n\n let current = this.head;\n\n for (let index = 0; index < position; index++) {\n current = current.next;\n }\n\n return current;\n }\n\n protected createInternalArrayRepresentation(): void {\n /* tslint:disable-next-line: no-any*/\n const outArray: any[] = [];\n let current = this.head;\n\n while (current) {\n outArray.push(current.value);\n current = current.next;\n }\n this.asArray = outArray;\n }\n\n // Array methods overriding END\n}\n","import { window } from './facade/browser';\n\nexport class Utils {\n /* tslint:disable-next-line: no-any */\n static reflow(element: any): void {\n /* tslint:disable-next-line: no-any */\n ((bs: any): void => bs)(element.offsetHeight);\n }\n\n // source: https://github.com/jquery/jquery/blob/master/src/css/var/getStyles.js\n /* tslint:disable-next-line: no-any */\n static getStyles(elem: any): any {\n // Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n // IE throws on elements created in popups\n // FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n let view = elem.ownerDocument.defaultView;\n\n if (!view || !view.opener) {\n view = window;\n }\n\n return view.getComputedStyle(elem);\n }\n}\n","import { isDevMode } from '@angular/core';\nconst _messagesHash: { [key: string]: boolean } = {};\nconst _hideMsg = typeof console === 'undefined' || !('warn' in console);\n\nexport function warnOnce(msg: string): void {\n if (!isDevMode() || _hideMsg || msg in _messagesHash) {\n return;\n }\n\n _messagesHash[msg] = true;\n /*tslint:disable-next-line*/\n console.warn(msg);\n}\n","/*tslint:disable:no-invalid-this */\n/* tslint:disable-next-line: no-any */\nexport function OnChange(defaultValue?: any): any {\n const sufix = 'Change';\n\n /* tslint:disable-next-line: no-any */\n return function OnChangeHandler(target: any, propertyKey: string): void {\n const _key = ` __${propertyKey}Value`;\n Object.defineProperty(target, propertyKey, {\n /* tslint:disable-next-line: no-any */\n get(): any {\n return this[_key];\n },\n /* tslint:disable-next-line: no-any */\n set(value: any): void {\n const prevValue = this[_key];\n this[_key] = value;\n if (prevValue !== value && this[propertyKey + sufix]) {\n this[propertyKey + sufix].emit(value);\n }\n }\n });\n };\n}\n/* tslint:enable */\n"]}