homebridge 2.0.0-beta.35 → 2.0.0-beta.36

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 (280) hide show
  1. package/dist/api.d.ts +74 -32
  2. package/dist/api.d.ts.map +1 -1
  3. package/dist/api.js +48 -46
  4. package/dist/api.js.map +1 -1
  5. package/dist/api.spec.d.ts +2 -0
  6. package/dist/api.spec.d.ts.map +1 -0
  7. package/dist/api.spec.js +413 -0
  8. package/dist/api.spec.js.map +1 -0
  9. package/dist/childBridgeFork.d.ts +1 -18
  10. package/dist/childBridgeFork.d.ts.map +1 -1
  11. package/dist/childBridgeFork.js +21 -258
  12. package/dist/childBridgeFork.js.map +1 -1
  13. package/dist/index.d.ts +10 -10
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +3 -3
  16. package/dist/index.js.map +1 -1
  17. package/dist/logger.spec.d.ts +2 -0
  18. package/dist/logger.spec.d.ts.map +1 -0
  19. package/dist/logger.spec.js +95 -0
  20. package/dist/logger.spec.js.map +1 -0
  21. package/dist/matter/ChildBridgeMatterManager.d.ts +96 -0
  22. package/dist/matter/ChildBridgeMatterManager.d.ts.map +1 -0
  23. package/dist/matter/ChildBridgeMatterManager.js +397 -0
  24. package/dist/matter/ChildBridgeMatterManager.js.map +1 -0
  25. package/dist/matter/ExternalMatterAccessoryPublisher.d.ts +48 -0
  26. package/dist/matter/ExternalMatterAccessoryPublisher.d.ts.map +1 -0
  27. package/dist/matter/ExternalMatterAccessoryPublisher.js +73 -0
  28. package/dist/matter/ExternalMatterAccessoryPublisher.js.map +1 -0
  29. package/dist/matter/ExternalMatterAccessoryPublisher.spec.d.ts +2 -0
  30. package/dist/matter/ExternalMatterAccessoryPublisher.spec.d.ts.map +1 -0
  31. package/dist/matter/ExternalMatterAccessoryPublisher.spec.js +293 -0
  32. package/dist/matter/ExternalMatterAccessoryPublisher.spec.js.map +1 -0
  33. package/dist/matter/{matterServer.d.ts → MatterAPIImpl.d.ts} +203 -367
  34. package/dist/matter/MatterAPIImpl.d.ts.map +1 -0
  35. package/dist/matter/MatterAPIImpl.js +305 -0
  36. package/dist/matter/MatterAPIImpl.js.map +1 -0
  37. package/dist/matter/MatterBridgeManager.d.ts +91 -0
  38. package/dist/matter/MatterBridgeManager.d.ts.map +1 -0
  39. package/dist/matter/MatterBridgeManager.js +426 -0
  40. package/dist/matter/MatterBridgeManager.js.map +1 -0
  41. package/dist/matter/MatterConfigCollector.d.ts +26 -0
  42. package/dist/matter/MatterConfigCollector.d.ts.map +1 -0
  43. package/dist/matter/MatterConfigCollector.js +78 -0
  44. package/dist/matter/MatterConfigCollector.js.map +1 -0
  45. package/dist/matter/{matterAccessoryCache.d.ts → accessoryCache.d.ts} +12 -3
  46. package/dist/matter/accessoryCache.d.ts.map +1 -0
  47. package/dist/matter/{matterAccessoryCache.js → accessoryCache.js} +32 -10
  48. package/dist/matter/accessoryCache.js.map +1 -0
  49. package/dist/matter/accessoryCache.spec.d.ts +2 -0
  50. package/dist/matter/accessoryCache.spec.d.ts.map +1 -0
  51. package/dist/matter/accessoryCache.spec.js +452 -0
  52. package/dist/matter/accessoryCache.spec.js.map +1 -0
  53. package/dist/matter/behaviors/BehaviorRegistry.d.ts +65 -0
  54. package/dist/matter/behaviors/BehaviorRegistry.d.ts.map +1 -0
  55. package/dist/matter/behaviors/BehaviorRegistry.js +139 -0
  56. package/dist/matter/behaviors/BehaviorRegistry.js.map +1 -0
  57. package/dist/matter/behaviors/BehaviorRegistry.spec.d.ts +2 -0
  58. package/dist/matter/behaviors/BehaviorRegistry.spec.d.ts.map +1 -0
  59. package/dist/matter/behaviors/BehaviorRegistry.spec.js +307 -0
  60. package/dist/matter/behaviors/BehaviorRegistry.spec.js.map +1 -0
  61. package/dist/matter/behaviors/ColorControlBehavior.d.ts +64 -0
  62. package/dist/matter/behaviors/ColorControlBehavior.d.ts.map +1 -0
  63. package/dist/matter/behaviors/ColorControlBehavior.js +160 -0
  64. package/dist/matter/behaviors/ColorControlBehavior.js.map +1 -0
  65. package/dist/matter/behaviors/ColorControlBehavior.spec.d.ts +2 -0
  66. package/dist/matter/behaviors/ColorControlBehavior.spec.d.ts.map +1 -0
  67. package/dist/matter/behaviors/ColorControlBehavior.spec.js +29 -0
  68. package/dist/matter/behaviors/ColorControlBehavior.spec.js.map +1 -0
  69. package/dist/matter/behaviors/DoorLockBehavior.d.ts +21 -0
  70. package/dist/matter/behaviors/DoorLockBehavior.d.ts.map +1 -0
  71. package/dist/matter/behaviors/DoorLockBehavior.js +49 -0
  72. package/dist/matter/behaviors/DoorLockBehavior.js.map +1 -0
  73. package/dist/matter/behaviors/DoorLockBehavior.spec.d.ts +2 -0
  74. package/dist/matter/behaviors/DoorLockBehavior.spec.d.ts.map +1 -0
  75. package/dist/matter/behaviors/DoorLockBehavior.spec.js +108 -0
  76. package/dist/matter/behaviors/DoorLockBehavior.spec.js.map +1 -0
  77. package/dist/matter/behaviors/FanControlBehavior.d.ts +20 -0
  78. package/dist/matter/behaviors/FanControlBehavior.d.ts.map +1 -0
  79. package/dist/matter/behaviors/FanControlBehavior.js +45 -0
  80. package/dist/matter/behaviors/FanControlBehavior.js.map +1 -0
  81. package/dist/matter/behaviors/FanControlBehavior.spec.d.ts +2 -0
  82. package/dist/matter/behaviors/FanControlBehavior.spec.d.ts.map +1 -0
  83. package/dist/matter/behaviors/FanControlBehavior.spec.js +23 -0
  84. package/dist/matter/behaviors/FanControlBehavior.spec.js.map +1 -0
  85. package/dist/matter/behaviors/IdentifyBehavior.d.ts +21 -0
  86. package/dist/matter/behaviors/IdentifyBehavior.d.ts.map +1 -0
  87. package/dist/matter/behaviors/IdentifyBehavior.js +27 -0
  88. package/dist/matter/behaviors/IdentifyBehavior.js.map +1 -0
  89. package/dist/matter/behaviors/IdentifyBehavior.spec.d.ts +2 -0
  90. package/dist/matter/behaviors/IdentifyBehavior.spec.d.ts.map +1 -0
  91. package/dist/matter/behaviors/IdentifyBehavior.spec.js +64 -0
  92. package/dist/matter/behaviors/IdentifyBehavior.spec.js.map +1 -0
  93. package/dist/matter/behaviors/LevelControlBehavior.d.ts +34 -0
  94. package/dist/matter/behaviors/LevelControlBehavior.d.ts.map +1 -0
  95. package/dist/matter/behaviors/LevelControlBehavior.js +75 -0
  96. package/dist/matter/behaviors/LevelControlBehavior.js.map +1 -0
  97. package/dist/matter/behaviors/LevelControlBehavior.spec.d.ts +2 -0
  98. package/dist/matter/behaviors/LevelControlBehavior.spec.d.ts.map +1 -0
  99. package/dist/matter/behaviors/LevelControlBehavior.spec.js +140 -0
  100. package/dist/matter/behaviors/LevelControlBehavior.spec.js.map +1 -0
  101. package/dist/matter/behaviors/OnOffBehavior.d.ts +28 -0
  102. package/dist/matter/behaviors/OnOffBehavior.d.ts.map +1 -0
  103. package/dist/matter/behaviors/OnOffBehavior.js +63 -0
  104. package/dist/matter/behaviors/OnOffBehavior.js.map +1 -0
  105. package/dist/matter/behaviors/OnOffBehavior.spec.d.ts +2 -0
  106. package/dist/matter/behaviors/OnOffBehavior.spec.d.ts.map +1 -0
  107. package/dist/matter/behaviors/OnOffBehavior.spec.js +116 -0
  108. package/dist/matter/behaviors/OnOffBehavior.spec.js.map +1 -0
  109. package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts +19 -0
  110. package/dist/matter/behaviors/RvcCleanModeBehavior.d.ts.map +1 -0
  111. package/dist/matter/behaviors/RvcCleanModeBehavior.js +27 -0
  112. package/dist/matter/behaviors/RvcCleanModeBehavior.js.map +1 -0
  113. package/dist/matter/behaviors/RvcCleanModeBehavior.spec.d.ts +2 -0
  114. package/dist/matter/behaviors/RvcCleanModeBehavior.spec.d.ts.map +1 -0
  115. package/dist/matter/behaviors/RvcCleanModeBehavior.spec.js +56 -0
  116. package/dist/matter/behaviors/RvcCleanModeBehavior.spec.js.map +1 -0
  117. package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts +23 -0
  118. package/dist/matter/behaviors/RvcOperationalStateBehavior.d.ts.map +1 -0
  119. package/dist/matter/behaviors/RvcOperationalStateBehavior.js +49 -0
  120. package/dist/matter/behaviors/RvcOperationalStateBehavior.js.map +1 -0
  121. package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.d.ts +2 -0
  122. package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.d.ts.map +1 -0
  123. package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.js +55 -0
  124. package/dist/matter/behaviors/RvcOperationalStateBehavior.spec.js.map +1 -0
  125. package/dist/matter/behaviors/RvcRunModeBehavior.d.ts +19 -0
  126. package/dist/matter/behaviors/RvcRunModeBehavior.d.ts.map +1 -0
  127. package/dist/matter/behaviors/RvcRunModeBehavior.js +27 -0
  128. package/dist/matter/behaviors/RvcRunModeBehavior.js.map +1 -0
  129. package/dist/matter/behaviors/RvcRunModeBehavior.spec.d.ts +2 -0
  130. package/dist/matter/behaviors/RvcRunModeBehavior.spec.d.ts.map +1 -0
  131. package/dist/matter/behaviors/RvcRunModeBehavior.spec.js +56 -0
  132. package/dist/matter/behaviors/RvcRunModeBehavior.spec.js.map +1 -0
  133. package/dist/matter/behaviors/ServiceAreaBehavior.d.ts +22 -0
  134. package/dist/matter/behaviors/ServiceAreaBehavior.d.ts.map +1 -0
  135. package/dist/matter/behaviors/ServiceAreaBehavior.js +35 -0
  136. package/dist/matter/behaviors/ServiceAreaBehavior.js.map +1 -0
  137. package/dist/matter/behaviors/ServiceAreaBehavior.spec.d.ts +2 -0
  138. package/dist/matter/behaviors/ServiceAreaBehavior.spec.d.ts.map +1 -0
  139. package/dist/matter/behaviors/ServiceAreaBehavior.spec.js +52 -0
  140. package/dist/matter/behaviors/ServiceAreaBehavior.spec.js.map +1 -0
  141. package/dist/matter/behaviors/ThermostatBehavior.d.ts +23 -0
  142. package/dist/matter/behaviors/ThermostatBehavior.d.ts.map +1 -0
  143. package/dist/matter/behaviors/ThermostatBehavior.js +79 -0
  144. package/dist/matter/behaviors/ThermostatBehavior.js.map +1 -0
  145. package/dist/matter/behaviors/ThermostatBehavior.spec.d.ts +2 -0
  146. package/dist/matter/behaviors/ThermostatBehavior.spec.d.ts.map +1 -0
  147. package/dist/matter/behaviors/ThermostatBehavior.spec.js +23 -0
  148. package/dist/matter/behaviors/ThermostatBehavior.spec.js.map +1 -0
  149. package/dist/matter/behaviors/WindowCoveringBehavior.d.ts +32 -0
  150. package/dist/matter/behaviors/WindowCoveringBehavior.d.ts.map +1 -0
  151. package/dist/matter/behaviors/WindowCoveringBehavior.js +106 -0
  152. package/dist/matter/behaviors/WindowCoveringBehavior.js.map +1 -0
  153. package/dist/matter/behaviors/WindowCoveringBehavior.spec.d.ts +2 -0
  154. package/dist/matter/behaviors/WindowCoveringBehavior.spec.d.ts.map +1 -0
  155. package/dist/matter/behaviors/WindowCoveringBehavior.spec.js +27 -0
  156. package/dist/matter/behaviors/WindowCoveringBehavior.spec.js.map +1 -0
  157. package/dist/matter/behaviors/index.d.ts +20 -0
  158. package/dist/matter/behaviors/index.d.ts.map +1 -0
  159. package/dist/matter/behaviors/index.js +21 -0
  160. package/dist/matter/behaviors/index.js.map +1 -0
  161. package/dist/matter/{matterConfigValidator.d.ts → configValidator.d.ts} +1 -1
  162. package/dist/matter/configValidator.d.ts.map +1 -0
  163. package/dist/matter/{matterConfigValidator.js → configValidator.js} +1 -1
  164. package/dist/matter/configValidator.js.map +1 -0
  165. package/dist/matter/configValidator.spec.d.ts +2 -0
  166. package/dist/matter/configValidator.spec.d.ts.map +1 -0
  167. package/dist/matter/configValidator.spec.js +390 -0
  168. package/dist/matter/configValidator.spec.js.map +1 -0
  169. package/dist/matter/errorHandler.d.ts +33 -0
  170. package/dist/matter/errorHandler.d.ts.map +1 -0
  171. package/dist/matter/errorHandler.js +113 -0
  172. package/dist/matter/errorHandler.js.map +1 -0
  173. package/dist/matter/errorHandler.spec.d.ts +2 -0
  174. package/dist/matter/errorHandler.spec.d.ts.map +1 -0
  175. package/dist/matter/errorHandler.spec.js +159 -0
  176. package/dist/matter/errorHandler.spec.js.map +1 -0
  177. package/dist/matter/index.d.ts +7 -4
  178. package/dist/matter/index.d.ts.map +1 -1
  179. package/dist/matter/index.js +7 -4
  180. package/dist/matter/index.js.map +1 -1
  181. package/dist/matter/{matterLogFormatter.d.ts → logFormatter.d.ts} +1 -1
  182. package/dist/matter/logFormatter.d.ts.map +1 -0
  183. package/dist/matter/{matterLogFormatter.js → logFormatter.js} +33 -6
  184. package/dist/matter/logFormatter.js.map +1 -0
  185. package/dist/matter/logFormatter.spec.d.ts +2 -0
  186. package/dist/matter/logFormatter.spec.d.ts.map +1 -0
  187. package/dist/matter/logFormatter.spec.js +284 -0
  188. package/dist/matter/logFormatter.spec.js.map +1 -0
  189. package/dist/matter/server.d.ts +350 -0
  190. package/dist/matter/server.d.ts.map +1 -0
  191. package/dist/matter/{matterServer.js → server.js} +533 -352
  192. package/dist/matter/server.js.map +1 -0
  193. package/dist/matter/{matterServerHelpers.d.ts → serverHelpers.d.ts} +2 -2
  194. package/dist/matter/serverHelpers.d.ts.map +1 -0
  195. package/dist/matter/{matterServerHelpers.js → serverHelpers.js} +11 -8
  196. package/dist/matter/serverHelpers.js.map +1 -0
  197. package/dist/matter/serverHelpers.spec.d.ts +2 -0
  198. package/dist/matter/serverHelpers.spec.d.ts.map +1 -0
  199. package/dist/matter/serverHelpers.spec.js +521 -0
  200. package/dist/matter/serverHelpers.spec.js.map +1 -0
  201. package/dist/matter/{matterSharedTypes.d.ts → sharedTypes.d.ts} +4 -10
  202. package/dist/matter/sharedTypes.d.ts.map +1 -0
  203. package/dist/matter/{matterSharedTypes.js → sharedTypes.js} +4 -10
  204. package/dist/matter/sharedTypes.js.map +1 -0
  205. package/dist/matter/{matterStorage.d.ts → storage.d.ts} +9 -2
  206. package/dist/matter/storage.d.ts.map +1 -0
  207. package/dist/matter/{matterStorage.js → storage.js} +14 -5
  208. package/dist/matter/{matterStorage.js.map → storage.js.map} +1 -1
  209. package/dist/matter/storage.spec.d.ts +2 -0
  210. package/dist/matter/storage.spec.d.ts.map +1 -0
  211. package/dist/matter/storage.spec.js +570 -0
  212. package/dist/matter/storage.spec.js.map +1 -0
  213. package/dist/matter/typeHelpers.d.ts +45 -0
  214. package/dist/matter/typeHelpers.d.ts.map +1 -0
  215. package/dist/matter/typeHelpers.js +57 -0
  216. package/dist/matter/typeHelpers.js.map +1 -0
  217. package/dist/matter/typeHelpers.spec.d.ts +2 -0
  218. package/dist/matter/typeHelpers.spec.d.ts.map +1 -0
  219. package/dist/matter/typeHelpers.spec.js +127 -0
  220. package/dist/matter/typeHelpers.spec.js.map +1 -0
  221. package/dist/matter/{matterTypes.d.ts → types.d.ts} +2 -2
  222. package/dist/matter/types.d.ts.map +1 -0
  223. package/dist/matter/{matterTypes.js → types.js} +1 -2
  224. package/dist/matter/types.js.map +1 -0
  225. package/dist/platformAccessory.spec.d.ts +2 -0
  226. package/dist/platformAccessory.spec.d.ts.map +1 -0
  227. package/dist/platformAccessory.spec.js +126 -0
  228. package/dist/platformAccessory.spec.js.map +1 -0
  229. package/dist/pluginManager.spec.d.ts +2 -0
  230. package/dist/pluginManager.spec.d.ts.map +1 -0
  231. package/dist/pluginManager.spec.js +43 -0
  232. package/dist/pluginManager.spec.js.map +1 -0
  233. package/dist/server.d.ts +4 -13
  234. package/dist/server.d.ts.map +1 -1
  235. package/dist/server.js +43 -346
  236. package/dist/server.js.map +1 -1
  237. package/dist/server.spec.d.ts +2 -0
  238. package/dist/server.spec.d.ts.map +1 -0
  239. package/dist/server.spec.js +57 -0
  240. package/dist/server.spec.js.map +1 -0
  241. package/dist/user.spec.d.ts +2 -0
  242. package/dist/user.spec.d.ts.map +1 -0
  243. package/dist/user.spec.js +31 -0
  244. package/dist/user.spec.js.map +1 -0
  245. package/dist/util/mac.spec.d.ts +2 -0
  246. package/dist/util/mac.spec.d.ts.map +1 -0
  247. package/dist/util/mac.spec.js +36 -0
  248. package/dist/util/mac.spec.js.map +1 -0
  249. package/dist/version.spec.d.ts +2 -0
  250. package/dist/version.spec.d.ts.map +1 -0
  251. package/dist/version.spec.js +20 -0
  252. package/dist/version.spec.js.map +1 -0
  253. package/package.json +4 -4
  254. package/dist/matter/matterAccessoryCache.d.ts.map +0 -1
  255. package/dist/matter/matterAccessoryCache.js.map +0 -1
  256. package/dist/matter/matterBehaviors.d.ts +0 -194
  257. package/dist/matter/matterBehaviors.d.ts.map +0 -1
  258. package/dist/matter/matterBehaviors.js +0 -665
  259. package/dist/matter/matterBehaviors.js.map +0 -1
  260. package/dist/matter/matterConfigValidator.d.ts.map +0 -1
  261. package/dist/matter/matterConfigValidator.js.map +0 -1
  262. package/dist/matter/matterErrorHandler.d.ts +0 -106
  263. package/dist/matter/matterErrorHandler.d.ts.map +0 -1
  264. package/dist/matter/matterErrorHandler.js +0 -495
  265. package/dist/matter/matterErrorHandler.js.map +0 -1
  266. package/dist/matter/matterLogFormatter.d.ts.map +0 -1
  267. package/dist/matter/matterLogFormatter.js.map +0 -1
  268. package/dist/matter/matterNetworkMonitor.d.ts +0 -68
  269. package/dist/matter/matterNetworkMonitor.d.ts.map +0 -1
  270. package/dist/matter/matterNetworkMonitor.js +0 -249
  271. package/dist/matter/matterNetworkMonitor.js.map +0 -1
  272. package/dist/matter/matterServer.d.ts.map +0 -1
  273. package/dist/matter/matterServer.js.map +0 -1
  274. package/dist/matter/matterServerHelpers.d.ts.map +0 -1
  275. package/dist/matter/matterServerHelpers.js.map +0 -1
  276. package/dist/matter/matterSharedTypes.d.ts.map +0 -1
  277. package/dist/matter/matterSharedTypes.js.map +0 -1
  278. package/dist/matter/matterStorage.d.ts.map +0 -1
  279. package/dist/matter/matterTypes.d.ts.map +0 -1
  280. package/dist/matter/matterTypes.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MatterAPIImpl.d.ts","sourceRoot":"","sources":["../../src/matter/MatterAPIImpl.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAKzF,OAAO,EAAgB,QAAQ,EAAe,eAAe,EAA6B,MAAM,YAAY,CAAA;AA8B5G;;;;GAIG;AACH,qBAAa,aAAc,YAAW,SAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,aAAa;IAE/C;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IA4CzB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAoB3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAW3B;;OAEG;IACH,IAAI,IAAI,sDAEP;IAED;;OAEG;IACH,IAAI,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uFA+PkiC,uBAAuB;;4EAAmL,uBAAuB;;;;;;;;;;4EAAkpB,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;yFAAyxC,uBAAuB;;8EAAuL,uBAAuB;;;oFAAwO,uBAAuB;;;;;;;;;;;;;wFAAm3B,uBAAuB;;;;;;;;;;8EAAymB,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA7PjsK;IAED;;OAEG;IACH,IAAI,QAAQ,oBAEX;IAED;;OAEG;IACH,IAAI,YAAY;;;;;;;;;;;;;;;;;;;;;;MAEf;IAED;;OAEG;IACH,IAAI,KAAK,oBAER;IAED;;;;;OAKG;IACG,2BAA2B,CAC/B,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,eAAe,EAAE,GAC7B,OAAO,CAAC,IAAI,CAAC;IA8EhB;;;OAGG;IACG,yBAAyB,CAAC,WAAW,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAY9E;;;OAGG;IACG,6BAA6B,CACjC,gBAAgB,EAAE,gBAAgB,EAClC,YAAY,EAAE,YAAY,EAC1B,WAAW,EAAE,eAAe,EAAE,GAC7B,OAAO,CAAC,IAAI,CAAC;IAmChB;;;OAGG;IACG,oBAAoB,CACxB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC;IA2BhB;;;;OAIG;IACG,iBAAiB,CACrB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAqChD"}
@@ -0,0 +1,305 @@
1
+ /**
2
+ * Matter API Implementation
3
+ *
4
+ * This class implements the Matter API facade, keeping Matter-specific logic
5
+ * separate from the core HomebridgeAPI class.
6
+ *
7
+ * Benefits:
8
+ * - Reduces changes to core api.ts file
9
+ * - Lazy-loads Matter code only when used
10
+ * - Clear separation between HAP and Matter
11
+ * - Easier to test in isolation
12
+ * - Validates accessories before registration
13
+ * - Provides detailed error messages for debugging
14
+ */
15
+ import { Logger } from '../logger.js';
16
+ import { clusterNames, clusters, deviceTypes, MatterTypes } from './index.js';
17
+ const log = Logger.internal;
18
+ /**
19
+ * Device types that require dedicated external bridges
20
+ * These devices must be published on their own bridge (not added to main/child bridge)
21
+ */
22
+ const EXTERNAL_DEVICE_TYPES = [
23
+ deviceTypes.RoboticVacuumCleaner,
24
+ ];
25
+ /**
26
+ * Check if a device type requires external bridge publishing
27
+ */
28
+ function requiresExternalBridge(deviceType) {
29
+ // Compare device type IDs for exact match
30
+ return EXTERNAL_DEVICE_TYPES.some(externalType => externalType.deviceType === deviceType.deviceType);
31
+ }
32
+ /**
33
+ * Validation error for Matter accessories
34
+ */
35
+ class MatterAccessoryValidationError extends Error {
36
+ accessory;
37
+ constructor(message, accessory) {
38
+ super(message);
39
+ this.accessory = accessory;
40
+ this.name = 'MatterAccessoryValidationError';
41
+ }
42
+ }
43
+ /**
44
+ * Implementation of the Matter API
45
+ * Delegates to the HomebridgeAPI instance for event emission and server access
46
+ * Provides validation and coordination for Matter accessory operations
47
+ */
48
+ export class MatterAPIImpl {
49
+ api;
50
+ constructor(api) {
51
+ this.api = api;
52
+ }
53
+ /**
54
+ * Validate a Matter accessory has required fields
55
+ * @throws MatterAccessoryValidationError if validation fails
56
+ */
57
+ validateAccessory(accessory, context) {
58
+ if (!accessory.uuid) {
59
+ throw new MatterAccessoryValidationError(`${context}: Matter accessory missing required 'uuid' field`, accessory);
60
+ }
61
+ if (!accessory.displayName) {
62
+ throw new MatterAccessoryValidationError(`${context}: Matter accessory '${accessory.uuid}' missing required 'displayName' field`, accessory);
63
+ }
64
+ if (!accessory.deviceType) {
65
+ throw new MatterAccessoryValidationError(`${context}: Matter accessory '${accessory.displayName}' (${accessory.uuid}) missing required 'deviceType' field`, accessory);
66
+ }
67
+ if (!accessory.manufacturer) {
68
+ throw new MatterAccessoryValidationError(`${context}: Matter accessory '${accessory.displayName}' (${accessory.uuid}) missing required 'manufacturer' field`, accessory);
69
+ }
70
+ if (!accessory.model) {
71
+ throw new MatterAccessoryValidationError(`${context}: Matter accessory '${accessory.displayName}' (${accessory.uuid}) missing required 'model' field`, accessory);
72
+ }
73
+ if (!accessory.serialNumber) {
74
+ throw new MatterAccessoryValidationError(`${context}: Matter accessory '${accessory.displayName}' (${accessory.uuid}) missing required 'serialNumber' field`, accessory);
75
+ }
76
+ }
77
+ /**
78
+ * Validate an array of accessories, logging errors for invalid ones
79
+ * @returns Array of valid accessories only
80
+ */
81
+ validateAccessories(accessories, context) {
82
+ const validAccessories = [];
83
+ for (const accessory of accessories) {
84
+ try {
85
+ this.validateAccessory(accessory, context);
86
+ validAccessories.push(accessory);
87
+ }
88
+ catch (error) {
89
+ if (error instanceof MatterAccessoryValidationError) {
90
+ log.error(error.message);
91
+ log.error('This accessory will not be registered. Please fix the issue in your plugin.');
92
+ }
93
+ else {
94
+ log.error(`${context}: Unexpected error validating accessory:`, error);
95
+ }
96
+ }
97
+ }
98
+ return validAccessories;
99
+ }
100
+ /**
101
+ * Validate cluster name is valid
102
+ */
103
+ validateClusterName(clusterName, context) {
104
+ // Check if cluster name is in the known cluster names
105
+ const validClusterNames = Object.values(clusterNames);
106
+ if (!validClusterNames.includes(clusterName)) {
107
+ log.warn(`${context}: Unknown cluster name '${clusterName}'. This might cause issues. `
108
+ + `Valid clusters: ${validClusterNames.join(', ')}`);
109
+ }
110
+ }
111
+ /**
112
+ * UUID generator (alias of api.hap.uuid for convenience)
113
+ */
114
+ get uuid() {
115
+ return this.api.hap.uuid;
116
+ }
117
+ /**
118
+ * Matter device types for creating accessories
119
+ */
120
+ get deviceTypes() {
121
+ return deviceTypes;
122
+ }
123
+ /**
124
+ * Matter clusters - Direct access to Matter.js cluster definitions
125
+ */
126
+ get clusters() {
127
+ return clusters;
128
+ }
129
+ /**
130
+ * Matter cluster names for type safety and autocomplete
131
+ */
132
+ get clusterNames() {
133
+ return clusterNames;
134
+ }
135
+ /**
136
+ * Matter types - Access to Matter.js cluster type definitions and enums
137
+ */
138
+ get types() {
139
+ return MatterTypes;
140
+ }
141
+ /**
142
+ * Register Matter platform accessories
143
+ * Automatically handles external accessories (e.g., RoboticVacuumCleaner) that need dedicated bridges
144
+ * Validates accessories before registration
145
+ * Returns a promise that resolves when all accessories are fully registered
146
+ */
147
+ async registerPlatformAccessories(pluginIdentifier, platformName, accessories) {
148
+ if (accessories.length === 0) {
149
+ log.warn(`${pluginIdentifier}: Attempted to register 0 Matter accessories`);
150
+ return;
151
+ }
152
+ // Validate all accessories before registration
153
+ const validAccessories = this.validateAccessories(accessories, `registerPlatformAccessories (${pluginIdentifier}/${platformName})`);
154
+ if (validAccessories.length === 0) {
155
+ log.error(`${pluginIdentifier}: All ${accessories.length} Matter accessories failed validation`);
156
+ return;
157
+ }
158
+ if (validAccessories.length < accessories.length) {
159
+ log.warn(`${pluginIdentifier}: ${accessories.length - validAccessories.length} of ${accessories.length} Matter accessories failed validation`);
160
+ }
161
+ // Split accessories into normal (bridge) and external (standalone) based on device type
162
+ const normalAccessories = [];
163
+ const externalAccessories = [];
164
+ for (const accessory of validAccessories) {
165
+ if (requiresExternalBridge(accessory.deviceType)) {
166
+ externalAccessories.push(accessory);
167
+ }
168
+ else {
169
+ normalAccessories.push(accessory);
170
+ }
171
+ }
172
+ // Handle normal accessories (added to bridge)
173
+ if (normalAccessories.length > 0) {
174
+ // Add plugin/platform association
175
+ normalAccessories.forEach((accessory) => {
176
+ const internal = accessory;
177
+ internal._associatedPlugin = pluginIdentifier;
178
+ internal._associatedPlatform = platformName;
179
+ });
180
+ log.debug(`${pluginIdentifier}: Registering ${normalAccessories.length} Matter accessor${normalAccessories.length === 1 ? 'y' : 'ies'} for platform '${platformName}'`);
181
+ this.api.emit("registerMatterPlatformAccessories" /* InternalAPIEvent.REGISTER_MATTER_PLATFORM_ACCESSORIES */, pluginIdentifier, platformName, normalAccessories);
182
+ }
183
+ // Handle external accessories (standalone bridges)
184
+ if (externalAccessories.length > 0) {
185
+ // Add plugin association (no platform for external)
186
+ externalAccessories.forEach((accessory) => {
187
+ const internal = accessory;
188
+ internal._associatedPlugin = pluginIdentifier;
189
+ });
190
+ log.debug(`${pluginIdentifier}: Publishing ${externalAccessories.length} external Matter accessor${externalAccessories.length === 1 ? 'y' : 'ies'} (${externalAccessories.map(a => a.displayName).join(', ')})`);
191
+ // Create a promise to track when external publishing completes
192
+ const registrationId = `${pluginIdentifier}-${Date.now()}-${Math.random()}`;
193
+ const registrationPromise = new Promise((resolve) => {
194
+ // Store the resolve function so it can be called when publishing completes
195
+ this.api._pendingExternalRegistrations.set(registrationId, resolve);
196
+ });
197
+ // Emit event with registration ID
198
+ this.api.emit("publishExternalMatterAccessories" /* InternalAPIEvent.PUBLISH_EXTERNAL_MATTER_ACCESSORIES */, externalAccessories, registrationId);
199
+ // Wait for external publishing to complete
200
+ await registrationPromise;
201
+ }
202
+ }
203
+ /**
204
+ * Update Matter platform accessories in the cache
205
+ * Similar to api.updatePlatformAccessories() for HAP accessories
206
+ */
207
+ async updatePlatformAccessories(accessories) {
208
+ if (accessories.length === 0) {
209
+ log.warn('Attempted to update 0 Matter platform accessories');
210
+ return;
211
+ }
212
+ log.debug(`Updating ${accessories.length} Matter platform accessor${accessories.length === 1 ? 'y' : 'ies'} in cache`);
213
+ // Emit event for Server/ChildBridgeFork to handle
214
+ this.api.emit("updateMatterPlatformAccessories" /* InternalAPIEvent.UPDATE_MATTER_PLATFORM_ACCESSORIES */, accessories);
215
+ }
216
+ /**
217
+ * Unregister Matter platform accessories
218
+ * Automatically handles external accessories (e.g., RoboticVacuumCleaner) that have dedicated bridges
219
+ */
220
+ async unregisterPlatformAccessories(pluginIdentifier, platformName, accessories) {
221
+ if (accessories.length === 0) {
222
+ log.warn(`${pluginIdentifier}: Attempted to unregister 0 Matter accessories`);
223
+ return;
224
+ }
225
+ // Split accessories into normal (bridge) and external (standalone) based on device type
226
+ const normalAccessories = [];
227
+ const externalAccessories = [];
228
+ for (const accessory of accessories) {
229
+ if (requiresExternalBridge(accessory.deviceType)) {
230
+ externalAccessories.push(accessory);
231
+ }
232
+ else {
233
+ normalAccessories.push(accessory);
234
+ }
235
+ }
236
+ // Handle normal accessories (on bridge)
237
+ if (normalAccessories.length > 0) {
238
+ log.debug(`${pluginIdentifier}: Unregistering ${normalAccessories.length} Matter accessor${normalAccessories.length === 1 ? 'y' : 'ies'} from platform '${platformName}'`);
239
+ this.api.emit("unregisterMatterPlatformAccessories" /* InternalAPIEvent.UNREGISTER_MATTER_PLATFORM_ACCESSORIES */, pluginIdentifier, platformName, normalAccessories);
240
+ }
241
+ // Handle external accessories (standalone bridges)
242
+ if (externalAccessories.length > 0) {
243
+ log.debug(`${pluginIdentifier}: Unregistering ${externalAccessories.length} external Matter accessor${externalAccessories.length === 1 ? 'y' : 'ies'} (${externalAccessories.map(a => a.displayName).join(', ')})`);
244
+ this.api.emit("unregisterExternalMatterAccessories" /* InternalAPIEvent.UNREGISTER_EXTERNAL_MATTER_ACCESSORIES */, externalAccessories);
245
+ }
246
+ }
247
+ /**
248
+ * Update a Matter accessory's cluster state
249
+ * Validates inputs before updating
250
+ */
251
+ async updateAccessoryState(uuid, cluster, attributes, partId) {
252
+ // Validate inputs
253
+ if (!uuid) {
254
+ log.error('updateAccessoryState: uuid parameter is required');
255
+ return;
256
+ }
257
+ if (!cluster) {
258
+ log.error(`updateAccessoryState: cluster parameter is required for accessory ${uuid}`);
259
+ return;
260
+ }
261
+ if (!attributes || Object.keys(attributes).length === 0) {
262
+ log.warn(`updateAccessoryState: No attributes provided for accessory ${uuid}, cluster ${cluster}`);
263
+ return;
264
+ }
265
+ // Validate cluster name (warning only, don't block)
266
+ this.validateClusterName(cluster, `updateAccessoryState (${uuid})`);
267
+ log.debug(`Updating Matter accessory state: uuid=${uuid}, cluster=${cluster}, attributes=${Object.keys(attributes).join(', ')}${partId ? `, partId=${partId}` : ''}`);
268
+ this.api.emit("updateMatterAccessoryState" /* InternalAPIEvent.UPDATE_MATTER_ACCESSORY_STATE */, uuid, cluster, attributes, partId);
269
+ }
270
+ /**
271
+ * Get a Matter accessory's current cluster state
272
+ * Checks both external servers and main bridge server
273
+ * Validates inputs before retrieving state
274
+ */
275
+ async getAccessoryState(uuid, cluster, partId) {
276
+ // Validate inputs
277
+ if (!uuid) {
278
+ log.error('getAccessoryState: uuid parameter is required');
279
+ return undefined;
280
+ }
281
+ if (!cluster) {
282
+ log.error(`getAccessoryState: cluster parameter is required for accessory ${uuid}`);
283
+ return undefined;
284
+ }
285
+ // Validate cluster name (warning only, don't block)
286
+ this.validateClusterName(cluster, `getAccessoryState (${uuid})`);
287
+ log.debug(`Getting Matter accessory state: uuid=${uuid}, cluster=${cluster}${partId ? `, partId=${partId}` : ''}`);
288
+ // Check external servers first (for accessories like robot vacuums)
289
+ const matterManager = this.api._matterManager;
290
+ if (matterManager?.externalMatterServers) {
291
+ const externalServer = matterManager.externalMatterServers.get(uuid);
292
+ if (externalServer) {
293
+ return externalServer.getAccessoryState(uuid, cluster, partId);
294
+ }
295
+ }
296
+ // Otherwise, try the main bridge server
297
+ const matterServer = this.api._matterServer;
298
+ if (!matterServer) {
299
+ log.debug(`getAccessoryState: Matter server not available for accessory ${uuid}`);
300
+ return undefined;
301
+ }
302
+ return matterServer.getAccessoryState(uuid, cluster, partId);
303
+ }
304
+ }
305
+ //# sourceMappingURL=MatterAPIImpl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MatterAPIImpl.js","sourceRoot":"","sources":["../../src/matter/MatterAPIImpl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Matter Bridge Manager
3
+ *
4
+ * Manages Matter server lifecycle and accessories for the main Homebridge bridge.
5
+ * This class extracts Matter-specific logic from server.ts to minimize changes to core files.
6
+ */
7
+ import type { HomebridgeAPI } from '../api.js';
8
+ import type { HomebridgeConfig } from '../bridgeService.js';
9
+ import type { ExternalPortService } from '../externalPortService.js';
10
+ import type { HomebridgeOptions } from '../server.js';
11
+ import type { InternalMatterAccessory } from './types.js';
12
+ import { PluginManager } from '../pluginManager.js';
13
+ /**
14
+ * Matter server status information for IPC communication
15
+ */
16
+ export interface MatterStatusInfo {
17
+ enabled: boolean;
18
+ port?: number;
19
+ setupUri?: string;
20
+ pin?: string;
21
+ serialNumber?: string;
22
+ commissioned?: boolean;
23
+ deviceCount?: number;
24
+ }
25
+ /**
26
+ * Manages Matter server and accessories for the main bridge
27
+ */
28
+ export declare class MatterBridgeManager {
29
+ private readonly config;
30
+ private readonly api;
31
+ private readonly externalPortService;
32
+ private readonly pluginManager;
33
+ private readonly options;
34
+ private matterServer?;
35
+ private readonly externalMatterServers;
36
+ constructor(config: HomebridgeConfig, api: HomebridgeAPI, externalPortService: ExternalPortService, pluginManager: PluginManager, options: HomebridgeOptions);
37
+ /**
38
+ * Collect all configured Matter ports from config to avoid conflicts
39
+ */
40
+ static collectConfiguredMatterPorts(config: HomebridgeConfig): number[];
41
+ /**
42
+ * Initialize Matter server for main bridge if enabled
43
+ */
44
+ initialize(): Promise<void>;
45
+ /**
46
+ * Handle external Matter accessories - each gets its own dedicated Matter server
47
+ * This is required for devices like Robotic Vacuum Cleaners that Apple Home
48
+ * requires to be on their own bridge.
49
+ */
50
+ handlePublishExternalAccessories(accessories: InternalMatterAccessory[], registrationId: string): Promise<void>;
51
+ /**
52
+ * Handle registration of Matter platform accessories
53
+ */
54
+ handleRegisterPlatformAccessories(pluginIdentifier: string, platformName: string, accessories: InternalMatterAccessory[]): Promise<void>;
55
+ /**
56
+ * Handle unregistration of Matter platform accessories
57
+ */
58
+ handleUnregisterPlatformAccessories(pluginIdentifier: string, platformName: string, accessories: InternalMatterAccessory[]): Promise<void>;
59
+ /**
60
+ * Handle unregistration of external Matter accessories
61
+ * Stops dedicated servers and cleans up storage
62
+ */
63
+ handleUnregisterExternalAccessories(accessories: InternalMatterAccessory[]): Promise<void>;
64
+ /**
65
+ * Handle updating Matter platform accessories in the cache
66
+ * Checks both external servers and main bridge server
67
+ */
68
+ handleUpdatePlatformAccessories(accessories: InternalMatterAccessory[]): Promise<void>;
69
+ /**
70
+ * Handle Matter accessory state updates
71
+ * Checks both external servers and main bridge server
72
+ */
73
+ handleUpdateAccessoryState(uuid: string, cluster: string, attributes: Record<string, unknown>, partId?: string): Promise<void>;
74
+ /**
75
+ * Restore cached Matter accessories (matching HAP pattern)
76
+ */
77
+ restoreCachedAccessories(keepOrphaned: boolean): void;
78
+ /**
79
+ * Get Matter server status information for IPC communication
80
+ */
81
+ getMatterStatus(): MatterStatusInfo;
82
+ /**
83
+ * Trigger Matter status update (called when commissioning changes)
84
+ */
85
+ onCommissioningChanged(callback: () => void): void;
86
+ /**
87
+ * Teardown Matter servers
88
+ */
89
+ teardown(): Promise<void>;
90
+ }
91
+ //# sourceMappingURL=MatterBridgeManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MatterBridgeManager.d.ts","sourceRoot":"","sources":["../../src/matter/MatterBridgeManager.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AAMzD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAQnD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAS5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAX1B,OAAO,CAAC,YAAY,CAAC,CAAc;IAInC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAuC;gBAG1D,MAAM,EAAE,gBAAgB,EACxB,GAAG,EAAE,aAAa,EAClB,mBAAmB,EAAE,mBAAmB,EACxC,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,iBAAiB;IAG7C;;OAEG;IACH,MAAM,CAAC,4BAA4B,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,EAAE;IAsBvE;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA0GjC;;;;OAIG;IACG,gCAAgC,CAAC,WAAW,EAAE,uBAAuB,EAAE,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyDrH;;OAEG;IACG,iCAAiC,CAAC,gBAAgB,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,uBAAuB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ9I;;OAEG;IACG,mCAAmC,CAAC,gBAAgB,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,uBAAuB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAQhJ;;;OAGG;IACG,mCAAmC,CAAC,WAAW,EAAE,uBAAuB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAyChG;;;OAGG;IACG,+BAA+B,CAAC,WAAW,EAAE,uBAAuB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB5F;;;OAGG;IACG,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBpI;;OAEG;IACH,wBAAwB,CAAC,YAAY,EAAE,OAAO,GAAG,IAAI;IAmDrD;;OAEG;IACH,eAAe,IAAI,gBAAgB;IA0BnC;;OAEG;IACH,sBAAsB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAMlD;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAuBhC"}