@depz/sensor-sdk 0.2.1 → 0.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 (166) hide show
  1. package/README.md +13 -5
  2. package/dist/dataset.d.ts.map +1 -1
  3. package/dist/dataset.js +66 -2
  4. package/dist/dataset.js.map +1 -1
  5. package/dist/device/device.d.ts +6 -0
  6. package/dist/device/device.d.ts.map +1 -1
  7. package/dist/device/device.js +29 -6
  8. package/dist/device/device.js.map +1 -1
  9. package/dist/discovery.d.ts.map +1 -1
  10. package/dist/discovery.js +25 -2
  11. package/dist/discovery.js.map +1 -1
  12. package/dist/index.d.ts +21 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +16 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/protocol/bno055.d.ts +101 -0
  17. package/dist/protocol/bno055.d.ts.map +1 -0
  18. package/dist/protocol/bno055.js +105 -0
  19. package/dist/protocol/bno055.js.map +1 -0
  20. package/dist/protocol/identity.d.ts +1 -1
  21. package/dist/protocol/identity.d.ts.map +1 -1
  22. package/dist/protocol/identity.js +6 -0
  23. package/dist/protocol/identity.js.map +1 -1
  24. package/dist/protocol/vl53l7.d.ts +77 -0
  25. package/dist/protocol/vl53l7.d.ts.map +1 -0
  26. package/dist/protocol/vl53l7.js +99 -0
  27. package/dist/protocol/vl53l7.js.map +1 -0
  28. package/dist/protocol/vl53lx.d.ts +72 -0
  29. package/dist/protocol/vl53lx.d.ts.map +1 -0
  30. package/dist/protocol/vl53lx.js +87 -0
  31. package/dist/protocol/vl53lx.js.map +1 -0
  32. package/dist/sensors/bno055/bno055.d.ts +207 -0
  33. package/dist/sensors/bno055/bno055.d.ts.map +1 -0
  34. package/dist/sensors/bno055/bno055.js +547 -0
  35. package/dist/sensors/bno055/bno055.js.map +1 -0
  36. package/dist/sensors/bno055/regs.d.ts +271 -0
  37. package/dist/sensors/bno055/regs.d.ts.map +1 -0
  38. package/dist/sensors/bno055/regs.js +366 -0
  39. package/dist/sensors/bno055/regs.js.map +1 -0
  40. package/dist/sensors/bno086/bno086.d.ts +15 -0
  41. package/dist/sensors/bno086/bno086.d.ts.map +1 -1
  42. package/dist/sensors/bno086/bno086.js +43 -1
  43. package/dist/sensors/bno086/bno086.js.map +1 -1
  44. package/dist/sensors/bno086/sh2.d.ts.map +1 -1
  45. package/dist/sensors/bno086/sh2.js +5 -2
  46. package/dist/sensors/bno086/sh2.js.map +1 -1
  47. package/dist/sensors/reg-bridge.d.ts +35 -0
  48. package/dist/sensors/reg-bridge.d.ts.map +1 -0
  49. package/dist/sensors/reg-bridge.js +44 -0
  50. package/dist/sensors/reg-bridge.js.map +1 -0
  51. package/dist/sensors/vl53l4/vl53l4.d.ts.map +1 -1
  52. package/dist/sensors/vl53l4/vl53l4.js +18 -30
  53. package/dist/sensors/vl53l4/vl53l4.js.map +1 -1
  54. package/dist/sensors/vl53l7/vl53l7.d.ts +97 -0
  55. package/dist/sensors/vl53l7/vl53l7.d.ts.map +1 -0
  56. package/dist/sensors/vl53l7/vl53l7.js +138 -0
  57. package/dist/sensors/vl53l7/vl53l7.js.map +1 -0
  58. package/dist/sensors/vl53l8/assets/index.d.ts +5 -1
  59. package/dist/sensors/vl53l8/assets/index.d.ts.map +1 -1
  60. package/dist/sensors/vl53l8/assets/index.js +7 -1
  61. package/dist/sensors/vl53l8/assets/index.js.map +1 -1
  62. package/dist/sensors/vl53l8/assets/l7ch.d.ts +12 -0
  63. package/dist/sensors/vl53l8/assets/l7ch.d.ts.map +1 -0
  64. package/dist/sensors/vl53l8/assets/l7ch.js +18 -0
  65. package/dist/sensors/vl53l8/assets/l7ch.js.map +1 -0
  66. package/dist/sensors/vl53l8/assets/l7cx.d.ts +14 -0
  67. package/dist/sensors/vl53l8/assets/l7cx.d.ts.map +1 -0
  68. package/dist/sensors/vl53l8/assets/l7cx.js +20 -0
  69. package/dist/sensors/vl53l8/assets/l7cx.js.map +1 -0
  70. package/dist/sensors/vl53l8/cnh.d.ts +4 -3
  71. package/dist/sensors/vl53l8/cnh.d.ts.map +1 -1
  72. package/dist/sensors/vl53l8/cnh.js +4 -3
  73. package/dist/sensors/vl53l8/cnh.js.map +1 -1
  74. package/dist/sensors/vl53l8/uld.d.ts +50 -9
  75. package/dist/sensors/vl53l8/uld.d.ts.map +1 -1
  76. package/dist/sensors/vl53l8/uld.js +241 -35
  77. package/dist/sensors/vl53l8/uld.js.map +1 -1
  78. package/dist/sensors/vl53l8/vl53l8.d.ts +8 -3
  79. package/dist/sensors/vl53l8/vl53l8.d.ts.map +1 -1
  80. package/dist/sensors/vl53l8/vl53l8.js +41 -39
  81. package/dist/sensors/vl53l8/vl53l8.js.map +1 -1
  82. package/dist/sensors/vl53lx/decode.d.ts +70 -0
  83. package/dist/sensors/vl53lx/decode.d.ts.map +1 -0
  84. package/dist/sensors/vl53lx/decode.js +108 -0
  85. package/dist/sensors/vl53lx/decode.js.map +1 -0
  86. package/dist/sensors/vl53lx/uld/arith.d.ts +23 -0
  87. package/dist/sensors/vl53lx/uld/arith.d.ts.map +1 -0
  88. package/dist/sensors/vl53lx/uld/arith.js +42 -0
  89. package/dist/sensors/vl53lx/uld/arith.js.map +1 -0
  90. package/dist/sensors/vl53lx/uld/bare/core.d.ts +345 -0
  91. package/dist/sensors/vl53lx/uld/bare/core.d.ts.map +1 -0
  92. package/dist/sensors/vl53lx/uld/bare/core.js +1085 -0
  93. package/dist/sensors/vl53lx/uld/bare/core.js.map +1 -0
  94. package/dist/sensors/vl53lx/uld/bare/driver.d.ts +91 -0
  95. package/dist/sensors/vl53lx/uld/bare/driver.d.ts.map +1 -0
  96. package/dist/sensors/vl53lx/uld/bare/driver.js +206 -0
  97. package/dist/sensors/vl53lx/uld/bare/driver.js.map +1 -0
  98. package/dist/sensors/vl53lx/uld/bare/hist.d.ts +180 -0
  99. package/dist/sensors/vl53lx/uld/bare/hist.d.ts.map +1 -0
  100. package/dist/sensors/vl53lx/uld/bare/hist.js +949 -0
  101. package/dist/sensors/vl53lx/uld/bare/hist.js.map +1 -0
  102. package/dist/sensors/vl53lx/uld/bare/image.d.ts +53 -0
  103. package/dist/sensors/vl53lx/uld/bare/image.d.ts.map +1 -0
  104. package/dist/sensors/vl53lx/uld/bare/image.js +108 -0
  105. package/dist/sensors/vl53lx/uld/bare/image.js.map +1 -0
  106. package/dist/sensors/vl53lx/uld/bare/imath.d.ts +39 -0
  107. package/dist/sensors/vl53lx/uld/bare/imath.d.ts.map +1 -0
  108. package/dist/sensors/vl53lx/uld/bare/imath.js +99 -0
  109. package/dist/sensors/vl53lx/uld/bare/imath.js.map +1 -0
  110. package/dist/sensors/vl53lx/uld/bare/index.d.ts +22 -0
  111. package/dist/sensors/vl53lx/uld/bare/index.d.ts.map +1 -0
  112. package/dist/sensors/vl53lx/uld/bare/index.js +22 -0
  113. package/dist/sensors/vl53lx/uld/bare/index.js.map +1 -0
  114. package/dist/sensors/vl53lx/uld/bare/nvm.d.ts +85 -0
  115. package/dist/sensors/vl53lx/uld/bare/nvm.d.ts.map +1 -0
  116. package/dist/sensors/vl53lx/uld/bare/nvm.js +148 -0
  117. package/dist/sensors/vl53lx/uld/bare/nvm.js.map +1 -0
  118. package/dist/sensors/vl53lx/uld/bare/regs.d.ts +54 -0
  119. package/dist/sensors/vl53lx/uld/bare/regs.d.ts.map +1 -0
  120. package/dist/sensors/vl53lx/uld/bare/regs.js +496 -0
  121. package/dist/sensors/vl53lx/uld/bare/regs.js.map +1 -0
  122. package/dist/sensors/vl53lx/uld/bare/tuning.d.ts +15 -0
  123. package/dist/sensors/vl53lx/uld/bare/tuning.d.ts.map +1 -0
  124. package/dist/sensors/vl53lx/uld/bare/tuning.js +303 -0
  125. package/dist/sensors/vl53lx/uld/bare/tuning.js.map +1 -0
  126. package/dist/sensors/vl53lx/uld/base.d.ts +129 -0
  127. package/dist/sensors/vl53lx/uld/base.d.ts.map +1 -0
  128. package/dist/sensors/vl53lx/uld/base.js +166 -0
  129. package/dist/sensors/vl53lx/uld/base.js.map +1 -0
  130. package/dist/sensors/vl53lx/uld/l0x.d.ts +306 -0
  131. package/dist/sensors/vl53lx/uld/l0x.d.ts.map +1 -0
  132. package/dist/sensors/vl53lx/uld/l0x.js +1492 -0
  133. package/dist/sensors/vl53lx/uld/l0x.js.map +1 -0
  134. package/dist/sensors/vl53lx/uld/l1.d.ts +69 -0
  135. package/dist/sensors/vl53lx/uld/l1.d.ts.map +1 -0
  136. package/dist/sensors/vl53lx/uld/l1.js +262 -0
  137. package/dist/sensors/vl53lx/uld/l1.js.map +1 -0
  138. package/dist/sensors/vl53lx/uld/l3.d.ts +25 -0
  139. package/dist/sensors/vl53lx/uld/l3.d.ts.map +1 -0
  140. package/dist/sensors/vl53lx/uld/l3.js +51 -0
  141. package/dist/sensors/vl53lx/uld/l3.js.map +1 -0
  142. package/dist/sensors/vl53lx/uld/l4.d.ts +22 -0
  143. package/dist/sensors/vl53lx/uld/l4.d.ts.map +1 -0
  144. package/dist/sensors/vl53lx/uld/l4.js +99 -0
  145. package/dist/sensors/vl53lx/uld/l4.js.map +1 -0
  146. package/dist/sensors/vl53lx/uld/link.d.ts +42 -0
  147. package/dist/sensors/vl53lx/uld/link.d.ts.map +1 -0
  148. package/dist/sensors/vl53lx/uld/link.js +28 -0
  149. package/dist/sensors/vl53lx/uld/link.js.map +1 -0
  150. package/dist/sensors/vl53lx/uld/registry.d.ts +68 -0
  151. package/dist/sensors/vl53lx/uld/registry.d.ts.map +1 -0
  152. package/dist/sensors/vl53lx/uld/registry.js +139 -0
  153. package/dist/sensors/vl53lx/uld/registry.js.map +1 -0
  154. package/dist/sensors/vl53lx/uld/vl53l1-die.d.ts +172 -0
  155. package/dist/sensors/vl53lx/uld/vl53l1-die.d.ts.map +1 -0
  156. package/dist/sensors/vl53lx/uld/vl53l1-die.js +431 -0
  157. package/dist/sensors/vl53lx/uld/vl53l1-die.js.map +1 -0
  158. package/dist/sensors/vl53lx/vl53lx.d.ts +323 -0
  159. package/dist/sensors/vl53lx/vl53lx.d.ts.map +1 -0
  160. package/dist/sensors/vl53lx/vl53lx.js +688 -0
  161. package/dist/sensors/vl53lx/vl53lx.js.map +1 -0
  162. package/dist/transport/webserial.d.ts +4 -0
  163. package/dist/transport/webserial.d.ts.map +1 -1
  164. package/dist/transport/webserial.js +58 -12
  165. package/dist/transport/webserial.js.map +1 -1
  166. package/package.json +9 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../../../src/sensors/vl53lx/uld/bare/core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,EACL,SAAS,GAIV,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE/C,gFAAgF;AAChF,MAAM,CAAC,MAAM,iCAAiC,GAAG,MAAM,CAAC;AACxD,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AACvC,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAChD,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC;AAClC,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AACzC,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAC1C,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;AACtC,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEvC,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC,CAAC,2BAA2B;AAC/E,MAAM,CAAC,MAAM,yBAAyB,GAAG,MAAM,CAAC;AAChD,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AACjD,MAAM,CAAC,MAAM,gCAAgC,GAAG,MAAM,CAAC;AACvD,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC;AACnD,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAM,CAAC;AACrD,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAM,CAAC;AACrD,MAAM,CAAC,MAAM,iCAAiC,GAC5C,8BAA8B,GAAG,4BAA4B,GAAG,CAAC,CAAC;AAEpE,gFAAgF;AAChF,MAAM,CAAC,MAAM,gCAAgC,GAAG,IAAI,CAAC;AACrD,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAAC;AAChD,MAAM,CAAC,MAAM,+BAA+B,GAAG,IAAI,CAAC;AACpD,MAAM,CAAC,MAAM,+BAA+B,GAAG,IAAI,CAAC;AACpD,MAAM,CAAC,MAAM,6BAA6B,GAAG,IAAI,CAAC;AAClD,MAAM,CAAC,MAAM,6BAA6B,GAAG,IAAI,CAAC;AAClD,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,IAAI,CAAC,CAAC;AACrD,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,IAAI,CAAC,CAAC;AACnD,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAC;AACjD,MAAM,CAAC,MAAM,iCAAiC,GAAG,IAAI,CAAC;AACtD,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AACpC,MAAM,CAAC,MAAM,+BAA+B,GAAG,IAAI,CAAC;AAEpD,MAAM,CAAC,MAAM,kCAAkC,GAAG,IAAI,CAAC;AACvD,MAAM,CAAC,MAAM,gDAAgD,GAAG,IAAI,CAAC;AACrE,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAE5C,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AACpC,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC;AACzC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AACrC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AACrC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AACpC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AACpC,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAEtC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAC;AACnC,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AACpC,MAAM,CAAC,MAAM,8BAA8B,GAAG,MAAM,CAAC;AACrD,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAM,CAAC;AAElD,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAChD,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAC;AACjD,MAAM,CAAC,MAAM,0BAA0B,GACrC,4BAA4B,GAAG,4BAA4B,CAAC;AAC9D,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAExC,oEAAoE;AACpE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AAGnE,6EAA6E;AAC7E,sCAAsC;AACtC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC;AACpC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAChC,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAE/C,SAAS,EAAE,CAAC,GAAW;IACrB,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,IAAI,CAAC,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC;IACnE,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,IAAI,CAAC,GAAW;IACvB,MAAM,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IACxB,IAAI,CAAC,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;IACjE,OAAO,CAAC,CAAC;AACX,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,YAAY,CAAC,GAAW,EAAE,GAAW;IACnD,IAAI,GAAG,GAAG,CAAC;QAAE,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;IAC3D,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;AAC1C,CAAC;AAED,mBAAmB;AACnB,MAAM,UAAU,YAAY,CAAC,UAAkB;IAC7C,IAAI,UAAU,GAAG,GAAG;QAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACxF,OAAO,CAAC,UAAU,GAAG,IAAI,EAAE,CAAC,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,wBAAwB;AACxB,MAAM,UAAU,cAAc,CAAC,aAAqB;IAClD,OAAO,CAAC,aAAa,GAAG,IAAI,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,MAAc;IAC1D,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC;AACxC,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,gBAAgB,CAC9B,eAAuB,EACvB,aAAqB;IAErB,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;IACzD,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,CAAC;IACxD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,GAAG,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,GAAW,EAAE,GAAW;IACzD,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAClB,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IAClB,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,oBAAoB,CAClC,kBAA0B,EAC1B,gBAAwB,EACxB,iBAAyB,EACzB,eAAuB,EACvB,SAAqB,EACrB,mBAA2B;IAE3B,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,gBAAgB,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;IAC5F,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,gBAAgB,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;IACtF,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YAClC,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAChC,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;gBAAE,SAAS;YAC9D,MAAM,WAAW,GAAG,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC1C,CAAC,CAAC,mBAAmB;gBACrB,CAAC,CAAC,2BAA2B,CAAC;YAChC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK;gBAAE,KAAK,IAAI,WAAW,CAAC;;gBAC1E,KAAK,IAAI,WAAW,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACxB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAmB,EACnB,WAAmB,EACnB,kBAA0B,EAC1B,gBAAwB,EACxB,iBAAyB,EACzB,eAAuB,EACvB,OAAgC,EAChC,SAAqB,EACrB,mBAA2B;IAE3B,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,oBAAoB,CAC/C,kBAAkB,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,mBAAmB,CACjF,CAAC;IACF,IAAI,QAAQ,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAE/C,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,oBAAoB,CACzC,kBAAkB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,eAAe,EACxE,SAAS,EAAE,mBAAmB,CAC/B,CAAC;IAEF,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,2CAA2C,GAAG,KAAK,EAAE,QAAQ,CAAC,CAAC;IAChG,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,2CAA2C,GAAG,KAAK,EAAE,QAAQ,CAAC,CAAC;IAEhG,MAAM,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC;IAChC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC1B,wEAAwE;IACxE,MAAM,GAAG,GAAG,CAAC,WAAW,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAChE,OAAO,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,YAAY,CAAC,WAAqB;IAChD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;QAAE,GAAG,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,mCAAmC,CAAC,EAAE,CAAE,CAAC;IAC7F,OAAO,GAAG,CAAC;AACb,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,eAAe,CAAC,gBAAwB;IACtD,OAAO,gBAAgB,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,cAAsB;IACtD,OAAO,GAAG,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,gBAAwB,EAAE,cAAsB;IAChF,IAAI,KAAK,GAAG,0BAA0B,GAAG,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAC3E,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACtB,KAAK,IAAI,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAC3C,OAAO,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,SAAiB,EAAE,aAAqB;IACvE,IAAI,aAAa,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAClC,OAAO,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,YAAoB;IAChD,IAAI,YAAY,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IAChC,IAAI,MAAM,GAAG,YAAY,GAAG,CAAC,CAAC;IAC9B,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,sEAAsE;IACtE,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5C,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACxB,MAAM,IAAI,CAAC,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,OAAO,GAAG,CAAC,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAAiB,EAAE,aAAqB;IACzE,OAAO,aAAa,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,WAAmB,EACnB,cAAsB,EACtB,WAAmB,EACnB,YAAoB;IAEpB,IAAI,QAAQ,GAAG,GAAG,CAAC,WAAW,GAAG,WAAW,EAAE,EAAE,CAAC,CAAC;IAClD,QAAQ,IAAI,GAAG,CAAC,YAAY,GAAG,cAAc,EAAE,CAAC,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;AACjD,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,yBAAyB,CACvC,UAAkB,EAClB,IAAY,EACZ,OAAe,EACf,gBAAwB,EACxB,MAAgB,EAChB,MAAgB;IAEhB,IAAI,gBAAgB,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACtF,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IACnB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;IAEnB,IAAI,KAAK,GAAG,iBAAiB,CAAC,gBAAgB,EAAE,CAAC,CAAC,4BAA6B,CAAC,CAAC;IACjF,CAAC,CAAC,+BAA+B,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,gBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IAExF,IAAI,OAAO,GAAG,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC,8BAA8B,GAAG,OAAO,IAAI,CAAC,CAAC;IAChD,CAAC,CAAC,8BAA8B,GAAG,OAAO,GAAG,IAAI,CAAC;IAClD,OAAO,GAAG,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,iCAAiC,GAAG,OAAO,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC,iCAAiC,GAAG,OAAO,GAAG,IAAI,CAAC;IAErD,KAAK,GAAG,iBAAiB,CAAC,gBAAgB,EAAE,CAAC,CAAC,4BAA6B,CAAC,CAAC;IAC7E,OAAO,GAAG,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC,8BAA8B,GAAG,OAAO,IAAI,CAAC,CAAC;IAChD,CAAC,CAAC,8BAA8B,GAAG,OAAO,GAAG,IAAI,CAAC;IAClD,OAAO,GAAG,kBAAkB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC,CAAC,iCAAiC,GAAG,OAAO,IAAI,CAAC,CAAC;IACnD,CAAC,CAAC,iCAAiC,GAAG,OAAO,GAAG,IAAI,CAAC;AACvD,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,sBAAsB,EAAE,sBAAsB,EAAE,sBAAsB;IACtE,qBAAqB,EAAE,qBAAqB,EAAE,qBAAqB;IACnE,sBAAsB,EAAE,sBAAsB,EAAE,sBAAsB;IACtE,qBAAqB,EAAE,mBAAmB,EAAE,qBAAqB;IACjE,mBAAmB,EAAE,iBAAiB;IACtC,uBAAuB,EAAE,uBAAuB,EAAE,uBAAuB;IACzE,sBAAsB,EAAE,sBAAsB,EAAE,sBAAsB;IACtE,gBAAgB,EAAE,iBAAiB,EAAE,sBAAsB;CACnD,CAAC;AAEX;;;;GAIG;AACH,MAAM,OAAO,UAAU;IACrB,oBAAoB,GAAG,CAAC,CAAC;IACzB,oBAAoB,GAAG,CAAC,CAAC;IACzB,oBAAoB,GAAG,CAAC,CAAC;IACzB,mBAAmB,GAAG,CAAC,CAAC;IACxB,mBAAmB,GAAG,CAAC,CAAC;IACxB,mBAAmB,GAAG,CAAC,CAAC;IACxB,oBAAoB,GAAG,CAAC,CAAC;IACzB,oBAAoB,GAAG,CAAC,CAAC;IACzB,oBAAoB,GAAG,CAAC,CAAC;IACzB,mBAAmB,GAAG,CAAC,CAAC;IACxB,iBAAiB,GAAG,CAAC,CAAC;IACtB,mBAAmB,GAAG,CAAC,CAAC;IACxB,iBAAiB,GAAG,CAAC,CAAC;IACtB,eAAe,GAAG,CAAC,CAAC;IACpB,qBAAqB,GAAG,CAAC,CAAC;IAC1B,qBAAqB,GAAG,CAAC,CAAC;IAC1B,qBAAqB,GAAG,CAAC,CAAC;IAC1B,oBAAoB,GAAG,CAAC,CAAC;IACzB,oBAAoB,GAAG,CAAC,CAAC;IACzB,oBAAoB,GAAG,CAAC,CAAC;IACzB,cAAc,GAAG,CAAC,CAAC;IACnB,eAAe,GAAG,CAAC,CAAC;IACpB,oBAAoB,GAAG,CAAC,CAAC;IAEjB,GAAG,CAAC,IAAY;QACtB,OAAQ,IAA0C,CAAC,IAAI,CAAE,CAAC;IAC5D,CAAC;IAED;;;OAGG;IACH,cAAc,CAAC,IAAuB,EAAE,GAAsB;QAC5D,IAAI,CAAC,oBAAoB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACvD,IAAI,CAAC,oBAAoB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACvD,IAAI,CAAC,oBAAoB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC;QACvD,IAAI,CAAC,mBAAmB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QACpD,IAAI,CAAC,mBAAmB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QACpD,IAAI,CAAC,mBAAmB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QAEpD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACtD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACtD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACtD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACpD,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QACjC,IAAI,CAAC,mBAAmB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QACpD,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QACjC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAE5B,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACvD,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACvD,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACvD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACrD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACrD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAErD,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC;QAC9B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;IACnC,CAAC;IAED,4CAA4C;IAC5C,eAAe,CAAC,SAAmB,EAAE,MAAgB,EAAE,OAAiB;QACtE,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;QACtB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;QACnB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;QACpB,CAAC,CAAC,yCAAyC,GAAG,IAAI,CAAC,qBAAqB,CAAC;QACzE,CAAC,CAAC,2CAA2C,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAC3E,CAAC,CAAC,6BAA6B,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAC7D,CAAC,CAAC,4CAA4C,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAC3E,CAAC,CAAC,wCAAwC,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACvE,CAAC,CAAC,wCAAwC,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAEvE,CAAC,CAAC,iCAAiC;YACjC,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAChE,CAAC,CAAC,kCAAkC,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACjE,CAAC,CAAC,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAClD,CAAC,CAAC,kCAAkC,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC9D,CAAC,CAAC,wCAAwC,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACtE,CAAC,CAAC,2BAA2B,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACvD,CAAC,CAAC,2BAA2B,GAAG,IAAI,CAAC,eAAe,CAAC;QAErD,CAAC,CAAC,0BAA0B,GAAG,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAC7F,CAAC,CAAC,2CAA2C;YAC3C,GAAG,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAC/D,CAAC,CAAC,6BAA6B,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAC3D,CAAC,CAAC,8BAA8B,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAE5D,CAAC,CAAC,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC;QAC5C,CAAC,CAAC,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC;QAC5C,CAAC,CAAC,iCAAiC,GAAG,IAAI,CAAC,oBAAoB,CAAC;IAClE,CAAC;IAED;;;OAGG;IACH,WAAW,CAAC,WAAmB,EAAE,gBAAwB;QACvD,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAAC,eAAe;YAAE,KAAK,GAAG,MAAM,CAAC;QACnE,IAAI,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAAC,cAAc;YAAE,KAAK,GAAG,KAAK,CAAC;QAEjE,IAAI,MAAgB,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,GAAG;gBACP,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,mBAAmB,CAAC;gBACrC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,mBAAmB,CAAC;gBACrC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,mBAAmB,CAAC;aACtC,CAAC;QACJ,CAAC;aAAM,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;YAC3B,sDAAsD;YACtD,OAAO;gBACL,IAAI,CAAC,mBAAmB,GAAG,IAAI;gBAC/B,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;gBAChC,IAAI,CAAC,iBAAiB;gBACtB,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;gBAChC,IAAI,CAAC,mBAAmB,GAAG,IAAI;gBAC/B,IAAI,CAAC,iBAAiB,GAAG,IAAI;aAC9B,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,GAAG;gBACP,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,kBAAkB,CAAC;gBACpC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,kBAAkB,CAAC;gBACpC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,kBAAkB,CAAC;aACrC,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,KAAK,MAAM,IAAI,IAAI,MAAM;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/D,OAAO,GAAG,CAAC;IACb,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,qBAAqB;IAChC,gBAAgB,GAAG,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAC/D,iBAAiB,GAAG,IAAI,CAAC,sCAAsC,CAAC,CAAC;IACjE,WAAW,GAAG,IAAI,CAAC,sCAAsC,CAAC,CAAC;IAC3D,WAAW,GAAG,IAAI,CAAC,sCAAsC,CAAC,CAAC;IAC3D,mBAAmB,GAAG,IAAI,CAAC,wCAAwC,CAAC,CAAC;IACrE,qBAAqB,GAAG,IAAI,CAAC,4CAA4C,CAAC,CAAC;IAC3E,qBAAqB,GAAG,IAAI,CAAC,4CAA4C,CAAC,CAAC;IAC3E,4BAA4B,GAAG,IAAI,CAAC,2CAA2C,CAAC,CAAC;IACjF,yBAAyB,GAAG,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAClF,eAAe,GAAG,IAAI,CAAC,yCAAyC,CAAC,CAAC;IAClE,yBAAyB,GAAG,IAAI,CAAC,mDAAmD,CAAC,CAAC;IACtF,6BAA6B,GAAG,IAAI,CAAC,0CAA0C,CAAC,CAAC;IACjF,YAAY,GAAG,IAAI,CAAC,yCAAyC,CAAC,CAAC;IAC/D,eAAe,GAAG,CAAC,CAAC;IACpB,WAAW,GAAG,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAC1D,eAAe,GAAG,IAAI,CAAC;IACvB,gBAAgB,GAAG,IAAI,CAAC;IACxB,wCAAwC,GAAG,IAAI,CAC7C,qDAAqD,CACtD,CAAC;IACF,oCAAoC,GAAG,IAAI,CAAC,iDAAiD,CAAC,CAAC;IAC/F,6CAA6C,GAAG,IAAI,CAClD,gEAAgE,CACjE,CAAC;IACF,0CAA0C,GAAG,IAAI,CAC/C,0DAA0D,CAC3D,CAAC;IACF,mCAAmC,CAAS;IAC5C,yCAAyC,GAAG,IAAI,CAC9C,oDAAoD,CACrD,CAAC;IACF,yCAAyC,GAAG,IAAI,CAC9C,oDAAoD,CACrD,CAAC;IACF,0CAA0C,GAAG,IAAI,CAC/C,qDAAqD,CACtD,CAAC;IACF,mCAAmC,GAAG,IAAI,CAAC,8CAA8C,CAAC,CAAC;IAC3F,kCAAkC,GAAG,IAAI,CAAC,6CAA6C,CAAC,CAAC;IACzF,wCAAwC,GAAG,IAAI,CAC7C,mDAAmD,CACpD,CAAC;IACF,0DAA0D;IAC1D,8CAA8C,GAAG,CAAC,CAAC;IACnD,kDAAkD,GAAG,CAAC,CAAC;IACvD,kDAAkD,GAAG,CAAC,CAAC;IAEvD,YAAY,uBAAuB,GAAG,CAAC;QACrC,IAAI,CAAC,mCAAmC,GAAG,uBAAuB,CAAC;IACrE,CAAC;CACF;AAED,gFAAgF;AAChF;;;;GAIG;AACH,MAAM,OAAO,gBAAgB;IAC3B,wBAAwB,GAAG,CAAC,CAAC;IAC7B,oBAAoB,GAAG,CAAC,CAAC;IACzB,qBAAqB,GAAG,CAAC,CAAC;IAC1B,oBAAoB,GAAG,CAAC,CAAC;IACzB,kCAAkC,GAAG,CAAC,CAAC;IACvC,gCAAgC,GAAG,CAAC,CAAC;IACrC,4BAA4B,GAAG,CAAC,CAAC;IACjC,QAAQ,GAAa,IAAI,KAAK,CAAS,qBAAqB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtE,OAAO,GAAG,CAAC,CAAC;IACZ,SAAS,GAAG,CAAC,CAAC,CAAC,eAAe;IAC9B,cAAc,GAAG,qBAAqB,CAAC,CAAC,uBAAuB;IAC/D,YAAY,GAAG,qBAAqB,CAAC,CAAC,uBAAuB;IAC7D,uBAAuB,GAAG,CAAC,CAAC;IAC5B,WAAW,GAAG,CAAC,CAAC;IAChB,kBAAkB,GAAG,CAAC,CAAC,CAAC,eAAe;IACvC,YAAY,GAAG,CAAC,CAAC,CAAC,mCAAmC;IACrD,OAAO,GAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,OAAO,GAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,kCAAkC;IAC1E,aAAa,GAAG,CAAC,CAAC;IAClB,aAAa,GAAG,CAAC,CAAC;IAClB,sBAAsB,GAAG,CAAC,CAAC;IAC3B,yBAAyB,GAAG,CAAC,CAAC;IAC9B,kBAAkB,GAAG,CAAC,CAAC;IACvB,eAAe,GAAG,CAAC,CAAC,CAAC,eAAe;IACpC,qBAAqB,GAAG,CAAC,CAAC;IAC1B,gBAAgB,GAAG,CAAC,CAAC;IACrB,eAAe,GAAG,CAAC,CAAC;IACpB,mBAAmB,GAAG,CAAC,CAAC;IACxB,gCAAgC,GAAG,CAAC,CAAC;IACrC,6CAA6C,GAAG,CAAC,CAAC;IAElD,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,oBAAoB,GAAG,+BAA+B,CAAC;IACrE,CAAC;IAED,qEAAqE;IACrE,KAAK;QACH,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,gBAAgB,EAAE,EAAE,IAAI,CAAC,CAAC;QACtD,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACjC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACjC,OAAO,CAAC,CAAC;IACX,CAAC;CACF;AAED,gFAAgF;AAChF,+EAA+E;AAC/E,8EAA8E;AAC9E,gFAAgF;AAChF,MAAM,CAAC,MAAM,sBAAsB,GAAG,YAAY,CAAC;AACnD,MAAM,CAAC,MAAM,iCAAiC,GAAG,eAAe,CAAC;AACjE,MAAM,CAAC,MAAM,+BAA+B,GAAG,aAAa,CAAC;AAC7D,MAAM,CAAC,MAAM,4BAA4B,GAAG,UAAU,CAAC;AAEvD,MAAM,OAAO,OAAO;IAClB,gBAAgB,GAAG,sBAAsB,CAAC;IAC1C,gBAAgB,GAAG,CAAC,CAAC;IACrB,UAAU,GAAG,4BAA4B,CAAC;IAC1C,iBAAiB,GAAG,CAAC,CAAC;IACtB,eAAe,GAAG,sBAAsB,CAAC;IACzC,eAAe,GAAG,CAAC,CAAC;IACpB,SAAS,GAAG,4BAA4B,CAAC;IACzC,gBAAgB,GAAG,CAAC,CAAC;IAErB,KAAK;QACH,IAAI,CAAC,gBAAgB,GAAG,sBAAsB,CAAC;QAC/C,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,UAAU,GAAG,4BAA4B,CAAC;QAC/C,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,sBAAsB,CAAC;QAC9C,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,4BAA4B,CAAC;QAC9C,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,QAAQ,CAAC,SAAiB,EAAE,oBAA4B;QACtD,IAAI,CAAC,SAAS,GAAG,+BAA+B,CAAC,KAAK,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,eAAe,GAAG,sBAAsB,CAAC;YAC9C,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;YACzB,IAAI,CAAC,SAAS,GAAG,4BAA4B,CAAC;YAC9C,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QACvF,IAAI,CAAC,SAAS,IAAI,4BAA4B,CAAC;QAE/C,IAAI,IAAI,CAAC,eAAe,KAAK,sBAAsB,EAAE,CAAC;YACpD,IAAI,CAAC,eAAe;gBAClB,oBAAoB,GAAG,4BAA4B;oBACjD,CAAC,CAAC,iCAAiC;oBACnC,CAAC,CAAC,+BAA+B,CAAC;YACtC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;YACzB,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC5B,CAAC;aAAM,IAAI,IAAI,CAAC,eAAe,KAAK,iCAAiC,EAAE,CAAC;YACtE,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;YACzB,IAAI,CAAC,eAAe,GAAG,+BAA+B,CAAC;QACzD,CAAC;aAAM,IAAI,IAAI,CAAC,eAAe,KAAK,+BAA+B,EAAE,CAAC;YACpE,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;IACH,CAAC;IAED,SAAS,CAAC,SAAiB;QACzB,IAAI,CAAC,SAAS,GAAG,+BAA+B,CAAC,KAAK,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,gBAAgB,GAAG,sBAAsB,CAAC;YAC/C,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,UAAU,GAAG,4BAA4B,CAAC;YAC/C,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;QAC1F,IAAI,CAAC,UAAU,IAAI,4BAA4B,CAAC;QAEhD,IAAI,IAAI,CAAC,gBAAgB,KAAK,sBAAsB,EAAE,CAAC;YACrD,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC;YAC/B,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,gBAAgB,GAAG,4BAA4B,CAAC;QACvD,CAAC;aAAM,IAAI,IAAI,CAAC,gBAAgB,KAAK,4BAA4B,EAAE,CAAC;YAClE,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;IACH,CAAC;CACF;AAiCD,gFAAgF;AAChF,MAAM,WAAW,GAAqC;IACpD,IAAI,EAAE;QACJ,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACjD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;QACpD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI;QACzE,QAAQ,EAAE,6BAA6B,EAAE,QAAQ,EAAE,6BAA6B;KACjF;IACD,MAAM,EAAE;QACN,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACjD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;QACpD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI;QACzE,QAAQ,EAAE,4BAA4B,EAAE,QAAQ,EAAE,4BAA4B;KAC/E;IACD,KAAK,EAAE;QACL,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACjD,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;QACpD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI;QACzE,QAAQ,EAAE,8BAA8B,EAAE,QAAQ,EAAE,8BAA8B;QAClF,aAAa,EAAE,eAAe;KAC/B;CACF,CAAC;AAEF,MAAM,YAAY,GAAiC;IACjD,KAAK,EAAE,mCAAmC;IAC1C,MAAM,EAAE,iCAAiC;IACzC,IAAI,EAAE,kCAAkC;CACzC,CAAC;AAEF,SAAS,cAAc,CAAC,IAAY;IAClC,OAAQ,cAAoC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED,gFAAgF;AAChF;;;;;GAKG;AACH,MAAM,OAAO,UAAU;IA6BA;IA5BZ,GAAG,CAAc;IACjB,GAAG,CAAY;IACf,MAAM,GAA2B,EAAE,GAAG,MAAM,EAAE,CAAC;IAExD,OAAO,GAAG,IAAI,UAAU,EAAE,CAAC;IAC3B,GAAG,GAAG,IAAI,qBAAqB,EAAE,CAAC;IAElC,0DAA0D;IAC1D,YAAY,GAAe,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IAC9C,aAAa,GAAyB,IAAI,CAAC;IAC3C,cAAc,GAA0B,IAAI,CAAC;IAC7C,aAAa,GAAmC,IAAI,CAAC;IACrD,UAAU,GAAsB,IAAI,CAAC;IACrC,KAAK,GAAiB,IAAI,CAAC;IAC3B,yBAAyB,GAAG,CAAC,CAAC;IAE9B,UAAU,GAAiB,QAAQ,CAAC;IACpC,uBAAuB,GAAG,IAAI,CAAC;IAC/B,iBAAiB,GAAG,IAAI,CAAC;IACzB,oBAAoB,GAAG,KAAK,CAAC;IAC7B,wBAAwB,GAAG,GAAG,CAAC;IAC/B,eAAe,GAAG,CAAC,CAAC;IACX,KAAK,GAAG,IAAI,OAAO,EAAE,CAAC;IAC/B,0EAA0E;IAC1E,uEAAuE;IACvE,4CAA4C;IACpC,gBAAgB,GAAG,CAAC,CAAC;IAE7B,YAAqB,CAAiB;QAAjB,MAAC,GAAD,CAAC,CAAgB;QACpC,IAAI,CAAC,GAAG,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,CAAC,GAAG,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,6BAA6B;IAC7B,yEAAyE;IACzE,KAAK,CAAC,WAAW;QACf,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC1C,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC5C,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACrC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAEzD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,8CAA8C;YACrD,QAAQ,CAAC,8CAA+C,CAAC;QAC3D,IAAI,CAAC,GAAG,CAAC,kDAAkD;YACzD,QAAQ,CAAC,kDAAmD,CAAC;QAC/D,IAAI,CAAC,GAAG,CAAC,kDAAkD;YACzD,QAAQ,CAAC,kDAAmD,CAAC;QAE/D,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QACpD,IAAI,CAAC,cAAc,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QACtD,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,CAAC;QAE9D,oEAAoE;QACpE,qEAAqE;QACrE,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;QACzC,IACE,GAAG,CAAC,2CAA2C,KAAK,CAAC;YACrD,GAAG,CAAC,2CAA2C,KAAK,CAAC,EACrD,CAAC;YACD,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,oBAAoB,CACzC,OAAO,CAAC,gCAAiC,EACzC,OAAO,CAAC,4BAA6B,EACrC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,8BAA8B,CAC9D,CAAC;YACF,IAAI,CAAC,aAAa,GAAG;gBACnB,GAAG,GAAG;gBACN,2CAA2C,EAAE,MAAM;gBACnD,2CAA2C,EAAE,MAAM;gBACnD,uCAAuC,EAAE,KAAK;gBAC9C,uCAAuC,EAAE,KAAK;aAC/C,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QAC7C,IAAI,CAAC,UAAU,GAAG;YAChB,2BAA2B,EAAE,GAAG,CAAC,kCAAkC;YACnE,gCAAgC,EAAE,GAAG,CAAC,uCAAuC;YAC7E,gBAAgB,EAAE,GAAG,CAAC,oBAAoB;YAC1C,kBAAkB,EAAE,IAAI,CAAC,cAAc,CAAC,kBAAkB,IAAI,MAAM;YACpE,uBAAuB,EAAE,MAAM;SAChC,CAAC;QAEF,IAAI,CAAC,yBAAyB,GAAG,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;QAEhF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC9C,IAAI,OAAO,CAAC,iCAAkC,GAAG,MAAM,EAAE,CAAC;YACxD,OAAO,CAAC,iCAAiC,GAAG,MAAM,CAAC;QACrD,CAAC;QAED,iCAAiC;QACjC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,gCAAiC,CAAC,CAAC;QACvE,MAAM,MAAM,GAAG,OAAO,CAAC,4BAA6B,CAAC;QACrD,IAAI,CAAC,KAAK,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;QAErF,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YAC3E,IAAI,CAAC,aAAa,GAAG,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,2CAA2C;IAC3C;;;OAGG;IACH,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,GAAG,GAAG,IAAI,qBAAqB,EAAE,CAAC;QACvC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QACzB,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,qBAAqB;IACrB,sEAAsE;IACtE,aAAa,CACX,OAAe,QAAQ,EACvB,gBAA+B,IAAI,EACnC,2BAA0C,IAAI;QAE9C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,UAAU,CAAC,0BAA0B,IAAI,GAAG,CAAC,CAAC;QAEnF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,MAAM,GAAG,GAAG,aAAa,IAAI,IAAI,CAAC,MAAM,CAAC,wBAAyB,CAAC;QACnE,MAAM,GAAG,GAAG,wBAAwB,IAAI,IAAI,CAAC,wBAAwB,CAAC;QAEtE,6DAA6D;QAC7D,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,wBAAwB,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,2BAA2B,CAAC,CAAC;QAErD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAEnC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,kCAAkC,GAAG,GAAG,CAAC;QAClE,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAEO,EAAE,CAAC,GAAW;QACpB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC;QACnE,OAAO,CAAC,CAAC;IACX,CAAC;IAED;;;;OAIG;IACK,iBAAiB;QACvB,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI;YAAE,OAAO;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACjD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,oBAAoB,CAC7C,QAAQ,CAAC,0BAA2B,EACpC,QAAQ,CAAC,0BAA2B,EACpC,GAAG,CAAC,gCAAiC,EACrC,GAAG,CAAC,4BAA6B,EACjC,OAAO,CAAC,gCAAiC,EACzC,OAAO,CAAC,6CAA8C,EACtD,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,gCAAiC,CAC5D,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,eAAe,CAAC,IAAY;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,uBAAuB,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAC1C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,+EAA+E;IACvE,yBAAyB;QAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;QAEtC,CAAC,CAAC,kCAAkC,GAAG,MAAM,CAAC;QAC9C,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC;QACrB,CAAC,CAAC,eAAe,GAAG,IAAI,CAAC;QACzB,CAAC,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC1B,CAAC,CAAC,cAAc,GAAG,IAAI,CAAC;QACxB,CAAC,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACjC,CAAC,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACjC,CAAC,CAAC,eAAe,GAAG,IAAI,CAAC;QACzB,CAAC,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC5B,CAAC,CAAC,yBAAyB,GAAG,IAAI,CAAC;QACnC,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC3B,CAAC,CAAC,iBAAiB;YACjB,kCAAkC,GAAG,gDAAgD,CAAC;QACxF,CAAC,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAC7B,CAAC,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAC7B,CAAC,CAAC,4BAA4B,GAAG,IAAI,CAAC;QACtC,CAAC,CAAC,oCAAoC,GAAG,IAAI,CAAC;QAC9C,CAAC,CAAC,iCAAiC,GAAG,IAAI,CAAC;QAC3C,CAAC,CAAC,yCAAyC,GAAG,IAAI,CAAC,EAAE,CAAC,kCAAkC,CAAC,CAAC;QAC1F,CAAC,CAAC,2CAA2C,GAAG,IAAI,CAAC,EAAE,CAAC,gCAAgC,CAAC,CAAC;QAC1F,CAAC,CAAC,6BAA6B,GAAG,IAAI,CAAC,EAAE,CAAC,sBAAsB,CAAC,CAAC;QAClE,CAAC,CAAC,4CAA4C,GAAG,IAAI,CAAC;QACtD,CAAC,CAAC,wCAAwC,GAAG,IAAI,CAAC;QAClD,CAAC,CAAC,wCAAwC,GAAG,IAAI,CAAC;QAClD,CAAC,CAAC,iCAAiC,GAAG,MAAM,CAAC;QAC7C,CAAC,CAAC,kCAAkC,GAAG,IAAI,CAAC;QAC5C,CAAC,CAAC,oBAAoB,GAAG,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC;QACrD,CAAC,CAAC,kCAAkC,GAAG,IAAI,CAAC,EAAE,CAAC,qCAAqC,CAAC,CAAC;QACtF,CAAC,CAAC,wCAAwC,GAAG,IAAI,CAAC;QAClD,CAAC,CAAC,2BAA2B,GAAG,IAAI,CAAC;QACrC,CAAC,CAAC,2BAA2B,GAAG,IAAI,CAAC;QAErC,CAAC,CAAC,qCAAqC,GAAG,IAAI,CAAC;QAC/C,CAAC,CAAC,6BAA6B,GAAG,IAAI,CAAC;QACvC,CAAC,CAAC,6BAA6B,GAAG,iCAAiC,CAAC;QACpE,CAAC,CAAC,uBAAuB,GAAG,IAAI,CAAC;QACjC,CAAC,CAAC,uBAAuB,GAAG,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC;QAC1D,CAAC,CAAC,0BAA0B,GAAG,IAAI,CAAC;QACpC,CAAC,CAAC,+BAA+B,GAAG,IAAI,CAAC;QACzC,CAAC,CAAC,uBAAuB,GAAG,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC;QAC1D,CAAC,CAAC,yBAAyB,GAAG,IAAI,CAAC;QACnC,CAAC,CAAC,4BAA4B,GAAG,0BAA0B,CAAC;QAC5D,CAAC,CAAC,wBAAwB,GAAG,MAAM,CAAC;QACpC,CAAC,CAAC,uBAAuB,GAAG,MAAM,CAAC;QACnC,CAAC,CAAC,yCAAyC,GAAG,MAAM,CAAC;QACrD,CAAC,CAAC,+BAA+B,GAAG,IAAI,CAAC;QACzC,CAAC,CAAC,gCAAgC,GAAG,IAAI,CAAC;QAC1C,CAAC,CAAC,2BAA2B,GAAG,IAAI,CAAC;QACrC,CAAC,CAAC,2BAA2B,GAAG,IAAI,CAAC;QAErC,CAAC,CAAC,8BAA8B,GAAG,IAAI,CAAC;QACxC,CAAC,CAAC,8BAA8B,GAAG,IAAI,CAAC;QACxC,CAAC,CAAC,8BAA8B,GAAG,IAAI,CAAC;QACxC,CAAC,CAAC,8BAA8B,GAAG,IAAI,CAAC;QACxC,CAAC,CAAC,iCAAiC,GAAG,IAAI,CAAC;QAC3C,CAAC,CAAC,iCAAiC,GAAG,IAAI,CAAC;QAC3C,CAAC,CAAC,4BAA4B,GAAG,IAAI,CAAC;QACtC,CAAC,CAAC,iCAAiC,GAAG,IAAI,CAAC;QAC3C,CAAC,CAAC,iCAAiC,GAAG,IAAI,CAAC;QAC3C,CAAC,CAAC,4BAA4B,GAAG,IAAI,CAAC;QACtC,CAAC,CAAC,0BAA0B,GAAG,IAAI,CAAC,EAAE,CAAC,6BAA6B,CAAC,CAAC;QACtE,CAAC,CAAC,2CAA2C,GAAG,IAAI,CAAC,EAAE,CAAC,qCAAqC,CAAC,CAAC;QAC/F,CAAC,CAAC,6BAA6B,GAAG,IAAI,CAAC;QACvC,CAAC,CAAC,8BAA8B,GAAG,IAAI,CAAC;QACxC,CAAC,CAAC,+BAA+B,GAAG,UAAU,CAAC;QAC/C,CAAC,CAAC,yBAAyB,GAAG,IAAI,CAAC;QAEnC,uEAAuE;QACvE,uEAAuE;QACvE,0BAA0B;QAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACvB,CAAC,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAC9B,CAAC,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAC9B,CAAC,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAC9B,CAAC,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAC7B,CAAC,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAC7B,CAAC,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAC7B,CAAC,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAC9B,CAAC,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAC9B,CAAC,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAC9B,CAAC,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAC7B,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC3B,CAAC,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAC7B,CAAC,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC3B,CAAC,CAAC,eAAe,GAAG,IAAI,CAAC;QACzB,CAAC,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAC/B,CAAC,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAC/B,CAAC,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAC/B,CAAC,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAC9B,CAAC,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAC9B,CAAC,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAC9B,CAAC,CAAC,cAAc,GAAG,MAAM,CAAC;QAC1B,CAAC,CAAC,eAAe,GAAG,MAAM,CAAC;QAC3B,CAAC,CAAC,oBAAoB,GAAG,IAAI,CAAC;QAE9B,CAAC,CAAC,gCAAgC,GAAG,IAAI,CAAC;QAC1C,CAAC,CAAC,mBAAmB,GAAG,MAAM,CAAC;QAC/B,CAAC,CAAC,kBAAkB,GAAG,MAAM,CAAC;QAC9B,CAAC,CAAC,iCAAiC,GAAG,IAAI,CAAC;QAC3C,CAAC,CAAC,mBAAmB,GAAG,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC;QACpD,CAAC,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC5B,CAAC,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC5B,CAAC,CAAC,4BAA4B,GAAG,IAAI,CAAC,EAAE,CAAC,4BAA4B,CAAC,CAAC;QACvE,CAAC,CAAC,4BAA4B,GAAG,IAAI,CAAC,EAAE,CAAC,4BAA4B,CAAC,CAAC;QACvE,CAAC,CAAC,gCAAgC,GAAG,IAAI,CAAC;QAC1C,CAAC,CAAC,6BAA6B,GAAG,IAAI,CAAC,EAAE,CAAC,4BAA4B,CAAC,CAAC;QACxE,CAAC,CAAC,qBAAqB,GAAG,IAAI,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC;QACxD,CAAC,CAAC,gCAAgC,GAAG,IAAI,CAAC;QAC1C,CAAC,CAAC,6CAA6C,GAAG,IAAI,CAAC;QACvD,CAAC,CAAC,uBAAuB;YACvB,eAAe,GAAG,oBAAoB,GAAG,gBAAgB;gBACzD,gBAAgB,GAAG,eAAe,GAAG,iBAAiB,CAAC;QACzD,CAAC,CAAC,8BAA8B,GAAG,IAAI,CAAC;QAExC,GAAG,CAAC,yBAAyB,GAAG,IAAI,CAAC;QACrC,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC5B,GAAG,CAAC,uBAAuB,GAAG,eAAe,CAAC;QAC9C,GAAG,CAAC,kBAAkB;YACpB,6BAA6B,GAAG,2BAA2B;gBAC3D,gCAAgC,CAAC;IACrC,CAAC;IAED,gFAAgF;IACxE,0BAA0B;QAChC,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAEjC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,kCAAkC,GAAG,MAAM,CAAC;QACrE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAEpE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,4BAA4B,GAAG,IAAI,CAAC;QACtC,CAAC,CAAC,4BAA4B,GAAG,IAAI,CAAC;QACtC,CAAC,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC5B,CAAC,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC5B,CAAC,CAAC,8BAA8B,GAAG,IAAI,CAAC;QACxC,CAAC,CAAC,8BAA8B,GAAG,IAAI,CAAC;QACxC,CAAC,CAAC,8BAA8B,GAAG,IAAI,CAAC;QACxC,CAAC,CAAC,8BAA8B,GAAG,IAAI,CAAC;QACxC,CAAC,CAAC,iCAAiC,GAAG,IAAI,CAAC;QAC3C,CAAC,CAAC,iCAAiC,GAAG,IAAI,CAAC;QAC3C,CAAC,CAAC,iCAAiC,GAAG,IAAI,CAAC;QAC3C,CAAC,CAAC,iCAAiC,GAAG,IAAI,CAAC;QAC3C,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,+BAA+B,GAAG,IAAI,CAAC;QAEjE,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAEjC,IAAI,CAAC,OAAO,CAAC,eAAe,CAC1B,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,CACxE,CAAC;QACF,CAAC,CAAC,uBAAuB;YACvB,eAAe,GAAG,oBAAoB,GAAG,gBAAgB;gBACzD,gBAAgB,GAAG,iBAAiB,CAAC;QACvC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,kBAAkB;YAC1C,6BAA6B,GAAG,yBAAyB;gBACzD,gCAAgC,CAAC;IACrC,CAAC;IAED,0DAA0D;IAClD,UAAU,CAAC,CAAa;QAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;QAEpC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,eAAe,CAC1B,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,CACxE,CAAC;QAEF,CAAC,CAAC,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;QAC1C,CAAC,CAAC,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;QAC1C,CAAC,CAAC,8BAA8B,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAC9C,CAAC,CAAC,8BAA8B,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;QAChD,CAAC,CAAC,8BAA8B,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAC9C,CAAC,CAAC,8BAA8B,GAAG,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;QAChD,CAAC,CAAC,iCAAiC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;QACpD,CAAC,CAAC,iCAAiC,GAAG,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;QACtD,CAAC,CAAC,iCAAiC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;QACpD,CAAC,CAAC,iCAAiC,GAAG,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;QAEtD,CAAC,CAAC,uBAAuB,GAAG,CAAC,CAAC,aAAa,CAAC;QAC5C,CAAC,CAAC,+BAA+B,GAAG,IAAI,CAAC;QAEzC,CAAC,CAAC,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;QAChC,CAAC,CAAC,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;QAChC,CAAC,CAAC,4BAA4B,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACrD,CAAC,CAAC,4BAA4B,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACrD,CAAC,CAAC,uBAAuB;YACvB,eAAe,GAAG,oBAAoB,GAAG,gBAAgB;gBACzD,gBAAgB,GAAG,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,iBAAiB,CAAC;QAEhE,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,CAAC,cAAc,CAAC;QAE7C,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,kBAAkB;YAC1C,6BAA6B,GAAG,yBAAyB;gBACzD,gCAAgC,CAAC;IACrC,CAAC;IAED,iBAAiB;IACjB,aAAa,CAAC,UAAkB,EAAE,IAAY,EAAE,OAAe;QAC7D,IAAI,CAAC,uBAAuB,GAAG,UAAU,CAAC;QAC1C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC;QACpC,yBAAyB,CACvB,UAAU,EAAE,IAAI,EAAE,OAAO,EACzB,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,iCAAkC,EAChE,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,aAAa,CAChD,CAAC;IACJ,CAAC;IAED,2BAA2B,CAAC,QAAgB;QAC1C,IAAI,IAAI,CAAC,yBAAyB,KAAK,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,CAAC,wBAAwB,GAAG,QAAQ,CAAC;QACzC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,+BAA+B;YACtD,QAAQ,GAAG,IAAI,CAAC,yBAAyB,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,4BAA4B,CAAC,QAAgB;QAC3C,IAAI,CAAC,CAAC,eAAe,GAAG,QAAQ,IAAI,QAAQ,IAAI,QAAQ,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,UAAU,CAAC,iBAAiB,QAAQ,kBAAkB,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,GAAG,eAAe,EAAE,cAAc,CAAC,CAAC;QACrE,IAAI,OAAO,GAAG,cAAc,GAAG,wBAAwB,EAAE,CAAC;YACxD,MAAM,IAAI,UAAU,CAAC,iBAAiB,QAAQ,kBAAkB,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;IACpF,CAAC;IAED,kDAAkD;IAClD,6DAA6D;IAC7D,KAAK,CAAC,SAAS;QACb,MAAM,QAAQ,GAA2B,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;QAChF,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,IAAI,IAAI,CAAC;QACnE,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAC5C,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC9B,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QAC1F,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1F,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACpE,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACrE,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACvC,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAC5C,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/B,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACvC,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC5B,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,iCAAiC,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B;IACzD,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC7B,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,iCAAiC,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED,oCAAoC;IACpC;;;OAGG;IACH,KAAK,CAAC,iBAAiB,CAAC,SAA+B,kBAAkB;QACvE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;QAEzC,IAAI,CAAC,eAAe,GAAG,gCAAgC,CAAC;QACxD,MAAM,CAAC,kBAAkB;YACvB,CAAC,MAAM,CAAC,kBAAmB,GAAG,+BAA+B,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC;QACxF,MAAM,CAAC,uBAAuB,GAAG,eAAe,CAAC;QAEjD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;QACpC,OAAO,CAAC,gCAAgC,GAAG,KAAK,GAAG,IAAI,CAAC;QACxD,OAAO,CAAC,gCAAgC,GAAG,KAAK,GAAG,IAAI,CAAC;QACxD,OAAO,CAAC,8BAA8B,GAAG,KAAK,CAAC;QAE/C,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAEjC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC,8BAA8B,CAAC,CAAC;QACvF,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAClD,CAAC;IAED;;;OAGG;IACH,+BAA+B;QAC7B,OAAO,IAAI,CAAC,iBAAiB,CAAC;YAC5B,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB;SACtE,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,kBAAkB;YACvB,CAAC,MAAM,CAAC,kBAAmB,GAAG,+BAA+B,CAAC,GAAG,2BAA2B,CAAC;QAC/F,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACtC,MAAM,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,GAAG,+BAA+B,CAAC;QACxF,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,sCAAsC;IACtC;;;;OAIG;IACH,mBAAmB,CAAC,GAAe;QACjC,IAAI,GAAG,CAAC,MAAM,GAAG,iCAAiC,EAAE,CAAC;YACnD,MAAM,IAAI,UAAU,CAClB,sBAAsB,GAAG,CAAC,MAAM,gBAAgB,iCAAiC,EAAE,CACpF,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,4BAA4B,CAAC;QAEzC,MAAM,CAAC,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACjC,CAAC,CAAC,wBAAwB,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QACrC,CAAC,CAAC,oBAAoB,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QACjC,CAAC,CAAC,qBAAqB,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QAClC,CAAC,CAAC,oBAAoB,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QACjC,CAAC,CAAC,kCAAkC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAE,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;QAChE,MAAM,EAAE,GAAG,gCAAgC,GAAG,GAAG,CAAC;QAClD,CAAC,CAAC,gCAAgC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAE,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,CAAE,CAAC;QACpE,CAAC,CAAC,4BAA4B,GAAG,GAAG,CAAC,4BAA4B,GAAG,GAAG,CAAE,CAAC;QAE1E,uEAAuE;QACvE,sEAAsE;QACtE,GAAG,CAAC,0BAA0B,GAAG,GAAG,CAAC;YACnC,CAAC,CAAC,GAAG,CAAC,8BAA8B,GAAG,GAAG,CAAE,IAAI,CAAC,CAAC;gBAChD,GAAG,CAAC,8BAA8B,GAAG,GAAG,CAAE,CAAC,GAAG,IAAI,CAAC;QACvD,MAAM,IAAI,GAAG,yBAAyB,GAAG,GAAG,CAAC;QAC7C,CAAC,CAAC,QAAQ,GAAG,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,qBAAqB,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/C,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAE,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC;QACrE,CAAC;QAED,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;QACpC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;QAEtC,CAAC,CAAC,uBAAuB,GAAG,CAAC,CAAC,uBAAwB,CAAC;QACvD,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,0BAA2B,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,oCAAqC,CAAC;QAChG,CAAC,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,iCAAkC,CAAC;QACxF,CAAC,CAAC,gCAAgC,GAAG,GAAG,CAAC,gCAAiC,CAAC;QAC3E,CAAC,CAAC,6CAA6C;YAC7C,GAAG,CAAC,6CAA8C,CAAC;QAErD,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAExF,IAAI,OAAe,CAAC;QACpB,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,KAAK,CAAC,EAAE,CAAC;YACtC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,iCAAkC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,iCAAkC,CAAC;YAC9F,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,4BAA6B,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,iCAAkC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,iCAAkC,CAAC;YAC9F,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,4BAA6B,CAAC;QACnD,CAAC;QAED,CAAC,CAAC,sBAAsB,GAAG,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC;QACnF,CAAC,CAAC,qBAAqB,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC,CAAC,gBAAgB,GAAG,aAAa,CAChC,eAAe,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,WAAW,EACpD,4BAA4B,EAAE,CAAC,CAAC,qBAAqB,GAAG,CAAC,CAC1D,CAAC;QACF,CAAC,CAAC,eAAe,GAAG,CAAC,CAAC;QAEtB,uCAAuC;QACvC,MAAM,MAAM,GAAG,IAAI,GAAG,iBAAiB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QACxD,MAAM,KAAK,GACT,MAAM,GAAG,CAAC,CAAC,gCAAgC;YAC3C,IAAI,GAAG,CAAC,CAAC,4BAA4B,GAAG,IAAI,GAAG,CAAC,CAAC,uBAAuB,CAAC;QAC3E,CAAC,CAAC,mBAAmB,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE1D,iDAAiD;QACjD,IAAI,CAAC,CAAC,sBAAsB,GAAG,CAAC,EAAE,CAAC;YACjC,CAAC,CAAC,yBAAyB,GAAG,CAAC,CAAC,sBAAsB,CAAC;YACvD,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,sBAAsB,CAAC;gBAAE,GAAG,IAAI,CAAC,CAAC;YACxE,CAAC,CAAC,kBAAkB,GAAG,GAAG,CAAC;YAC3B,CAAC,CAAC,eAAe,GAAG,QAAQ,CAC1B,CAAC,CAAC,kBAAkB,GAAG,QAAQ,CAAC,CAAC,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAC5D,CAAC,CAAC,sBAAsB,CACzB,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,kBAAkB,CAAC;QAC7C,OAAO,CAAC,CAAC;IACX,CAAC;CACF"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * uld/bare/driver — the SensorDriver the device class talks to, on top of
3
+ * BareDriver. Mirror of the Python `depz_sensor_sdk.vl53lx.uld.bare.driver`.
4
+ *
5
+ * `core.BareDriver` configures the die and hands back a 24-bin histogram
6
+ * frame; `hist.ts` turns that frame into targets. This is the adapter between
7
+ * them and the family contract, so ranging, streaming and every UI work on
8
+ * the histogram products without a special case.
9
+ *
10
+ * What this driver gives that the light ones do not: several targets per
11
+ * frame. The first frame of a stream reports status 6 (no wrap-around check
12
+ * done): the checks that would upgrade it need the frame before.
13
+ *
14
+ * `binData(raw)` and `toMeasurement(bins)` are synchronous so the device class
15
+ * can decode streamed frames inside its report handler; both are stateful
16
+ * (A/B frame alternation, frame history) — decode every frame exactly once.
17
+ */
18
+ import { SensorDriver, type BridgePlatform, type Measurement } from "../base.js";
19
+ import { BareDriver, type HistogramBinData } from "./core.js";
20
+ export { HistogramBinData } from "./core.js";
21
+ export declare const GPIO_HV_MUX__CTRL = 48;
22
+ export declare const GPIO__TIO_HV_STATUS = 49;
23
+ export declare const SYSTEM__INTERRUPT_CLEAR = 134;
24
+ export declare const FIRMWARE__SYSTEM_STATUS = 229;
25
+ export declare const PAD_I2C_HV__CONFIG = 45;
26
+ /**
27
+ * Bits 2 and 5, the byte `VL53L4CD_I2C_FAST_MODE_PLUS` writes to this
28
+ * register in the C ULD. ST's histogram preset leaves the pad at 0x00; the pad
29
+ * is a property of the die, so it is set here and never cleared.
30
+ */
31
+ export declare const FMP_PAD_CONFIG = 18;
32
+ /** How far the 24 bins reach before the phase wraps, per preset mode. */
33
+ export declare const REACH_BY_MODE_MM: Readonly<Record<string, number>>;
34
+ export declare const DEFAULT_MODE = "medium";
35
+ /** VL53L1CX / L1CB / L3CX / L4CX in histogram mode: multi-target ranging. */
36
+ export declare class VL53LX extends SensorDriver {
37
+ static readonly ADDR_WIDTH = 2;
38
+ static readonly CLEAR_STEPS: ReadonlyArray<readonly [number, number]>;
39
+ static readonly MAX_KHZ = 1000;
40
+ static readonly SUPPORTS: ReadonlySet<string>;
41
+ static readonly MODES: readonly string[];
42
+ static readonly BUDGET_MS: readonly [number, number];
43
+ static readonly HISTOGRAM = true;
44
+ readonly bare: BareDriver;
45
+ private mode;
46
+ private budgetMs;
47
+ private interMs;
48
+ private lastStreamCount;
49
+ private readonly history;
50
+ constructor(platform: BridgePlatform, product: string);
51
+ modelId(): Promise<number>;
52
+ waitBoot(timeoutS?: number): Promise<void>;
53
+ /**
54
+ * Reset the part, configure it for histogram ranging and leave the bus at
55
+ * this die's ceiling. The bus is raised only after the FM+ pad byte has
56
+ * reached the device.
57
+ */
58
+ sensorInit(): Promise<void>;
59
+ /**
60
+ * short / medium / long — the device preset mode, which sets how far the 24
61
+ * bins reach before the phase wraps (1.6 / 2.4 / 4.0 m). Host-side only.
62
+ */
63
+ setMode(name: string): Promise<void>;
64
+ getMode(): Promise<string>;
65
+ reachMm(): number | null;
66
+ driverInfo(): Promise<Record<string, unknown>>;
67
+ startRanging(): Promise<void>;
68
+ stopRanging(): Promise<void>;
69
+ streamBlock(): [number, number];
70
+ decode(raw: Uint8Array): Measurement;
71
+ readMeasurement(): Promise<Measurement>;
72
+ /**
73
+ * The raw frame. `raw` is the streamed block when the bridge read it
74
+ * (synchronous); without it the block is read here (async).
75
+ */
76
+ binData(raw: Uint8Array): HistogramBinData;
77
+ binData(): Promise<HistogramBinData>;
78
+ private binDataFrom;
79
+ toMeasurement(bins: HistogramBinData): Measurement;
80
+ checkForDataReady(): Promise<boolean>;
81
+ clearInterrupt(): Promise<void>;
82
+ /**
83
+ * The budget covers the whole measurement, of which the range timeout is
84
+ * one sixth after a fixed guard comes off. 0 = continuous. Host-side only:
85
+ * the image reaches the sensor at startRanging().
86
+ */
87
+ setRangeTiming(timingBudgetMs: number, interMeasurementMs: number): Promise<void>;
88
+ /** → [timing budget ms, inter-measurement ms]. */
89
+ getRangeTiming(): Promise<[number, number]>;
90
+ }
91
+ //# sourceMappingURL=driver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver.d.ts","sourceRoot":"","sources":["../../../../../src/sensors/vl53lx/uld/bare/driver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,206 @@
1
+ /**
2
+ * uld/bare/driver — the SensorDriver the device class talks to, on top of
3
+ * BareDriver. Mirror of the Python `depz_sensor_sdk.vl53lx.uld.bare.driver`.
4
+ *
5
+ * `core.BareDriver` configures the die and hands back a 24-bin histogram
6
+ * frame; `hist.ts` turns that frame into targets. This is the adapter between
7
+ * them and the family contract, so ranging, streaming and every UI work on
8
+ * the histogram products without a special case.
9
+ *
10
+ * What this driver gives that the light ones do not: several targets per
11
+ * frame. The first frame of a stream reports status 6 (no wrap-around check
12
+ * done): the checks that would upgrade it need the frame before.
13
+ *
14
+ * `binData(raw)` and `toMeasurement(bins)` are synchronous so the device class
15
+ * can decode streamed frames inside its report handler; both are stateful
16
+ * (A/B frame alternation, frame history) — decode every frame exactly once.
17
+ */
18
+ import { SensorDriver } from "../base.js";
19
+ import { I2C_KHZ_BOOT, Vl53Error } from "../link.js";
20
+ import { BareDriver, CLEAR_RANGE_INT, DISTANCE_MODES, HISTOGRAM_BIN_DATA_I2C_INDEX, HISTOGRAM_BIN_DATA_I2C_SIZE_BYTES, TIMING_DIVISOR, TIMING_GUARD_US, } from "./core.js";
21
+ import { FrameHistory, processData, toMeasurement } from "./hist.js";
22
+ import { floorDiv } from "./imath.js";
23
+ export { HistogramBinData } from "./core.js";
24
+ // The VL53L1 die's own registers, the few this adapter needs by name.
25
+ export const GPIO_HV_MUX__CTRL = 0x0030;
26
+ export const GPIO__TIO_HV_STATUS = 0x0031;
27
+ export const SYSTEM__INTERRUPT_CLEAR = 0x0086;
28
+ export const FIRMWARE__SYSTEM_STATUS = 0x00e5;
29
+ export const PAD_I2C_HV__CONFIG = 0x002d;
30
+ /**
31
+ * Bits 2 and 5, the byte `VL53L4CD_I2C_FAST_MODE_PLUS` writes to this
32
+ * register in the C ULD. ST's histogram preset leaves the pad at 0x00; the pad
33
+ * is a property of the die, so it is set here and never cleared.
34
+ */
35
+ export const FMP_PAD_CONFIG = 0x12;
36
+ /** How far the 24 bins reach before the phase wraps, per preset mode. */
37
+ export const REACH_BY_MODE_MM = {
38
+ short: 1600,
39
+ medium: 2400,
40
+ long: 4000,
41
+ };
42
+ export const DEFAULT_MODE = "medium";
43
+ /** VL53L1CX / L1CB / L3CX / L4CX in histogram mode: multi-target ranging. */
44
+ export class VL53LX extends SensorDriver {
45
+ static ADDR_WIDTH = 2;
46
+ // One write clears the interrupt and lets the next frame run (measured
47
+ // over 40 frames on both dies: no misses, stream count unbroken).
48
+ static CLEAR_STEPS = [
49
+ [SYSTEM__INTERRUPT_CLEAR, CLEAR_RANGE_INT],
50
+ ];
51
+ static MAX_KHZ = 1000; // with Fast Mode Plus on the sensor pad
52
+ static SUPPORTS = new Set(["mode", "timing"]);
53
+ static MODES = DISTANCE_MODES;
54
+ // TIMING_GUARD_US comes off the budget before it is divided, and the range
55
+ // timeout is capped at FDA_MAX_TIMING_BUDGET_US: 2..551 ms, rounded inwards.
56
+ static BUDGET_MS = [2, 550];
57
+ static HISTOGRAM = true;
58
+ bare;
59
+ mode = DEFAULT_MODE;
60
+ budgetMs = 33;
61
+ interMs = 0;
62
+ // The A/B alternation rides on the ll-driver state; with the clear done by
63
+ // the bridge, the state is advanced when a frame arrives. Which frame that
64
+ // is comes from the device's own `result__stream_count`, not a call count.
65
+ lastStreamCount = null;
66
+ // The phase and event consistency checks read the frame before this one.
67
+ history = new FrameHistory();
68
+ constructor(platform, product) {
69
+ super(platform, product);
70
+ this.bare = new BareDriver(platform);
71
+ }
72
+ // ── identity ──
73
+ modelId() {
74
+ return this.p.rdWord(0x010f);
75
+ }
76
+ // ── lifecycle ──
77
+ async waitBoot(timeoutS = 1.0) {
78
+ const deadline = Date.now() + timeoutS * 1000;
79
+ for (;;) {
80
+ if ((await this.p.rdByte(FIRMWARE__SYSTEM_STATUS)) === 0x03)
81
+ return;
82
+ if (Date.now() > deadline) {
83
+ throw new Vl53Error("timeout waiting for FIRMWARE__SYSTEM_STATUS == 0x03");
84
+ }
85
+ await this.p.sleepMs(1);
86
+ }
87
+ }
88
+ /**
89
+ * Reset the part, configure it for histogram ranging and leave the bus at
90
+ * this die's ceiling. The bus is raised only after the FM+ pad byte has
91
+ * reached the device.
92
+ */
93
+ async sensorInit() {
94
+ await this.p.setAddrWidth(this.ADDR_WIDTH);
95
+ await this.p.setI2cSpeed(I2C_KHZ_BOOT);
96
+ await this.p.xshutReset();
97
+ await this.waitBoot();
98
+ await this.bare.dataInit();
99
+ await this.setMode(this.mode);
100
+ await this.p.wrByte(PAD_I2C_HV__CONFIG, FMP_PAD_CONFIG);
101
+ if (this.MAX_KHZ !== I2C_KHZ_BOOT)
102
+ await this.p.setI2cSpeed(this.MAX_KHZ);
103
+ }
104
+ /**
105
+ * short / medium / long — the device preset mode, which sets how far the 24
106
+ * bins reach before the phase wraps (1.6 / 2.4 / 4.0 m). Host-side only.
107
+ */
108
+ async setMode(name) {
109
+ if (!DISTANCE_MODES.includes(name)) {
110
+ throw new Vl53Error(`no such mode: ${name} (have ${this.MODES.join(", ")})`);
111
+ }
112
+ this.mode = name;
113
+ this.bare.setDistanceMode(name);
114
+ // The preset rewrites the whole static config, pad byte included; put FM+
115
+ // back or the first range-start write would switch the pad off at 1 MHz.
116
+ this.bare.img.static_config.v.pad_i2c_hv__config = FMP_PAD_CONFIG;
117
+ await this.setRangeTiming(this.budgetMs, this.interMs);
118
+ }
119
+ async getMode() {
120
+ return this.mode;
121
+ }
122
+ reachMm() {
123
+ return REACH_BY_MODE_MM[this.mode] ?? null;
124
+ }
125
+ // ── driver-specific readout ──
126
+ async driverInfo() {
127
+ return {
128
+ "range timeout us": this.bare.rangeConfigTimeoutUs,
129
+ "MM1/MM2 offset mm": this.bare.hpp.range_offset_mm / 4,
130
+ };
131
+ }
132
+ async startRanging() {
133
+ this.lastStreamCount = null;
134
+ this.history.reset();
135
+ await this.bare.loadPatch();
136
+ await this.bare.initAndStartRange();
137
+ // The interrupt line comes out of reset already asserted: one clear
138
+ // deasserts it (ST's ClearInterruptAndStartMeasurement).
139
+ await this.bare.clearInterruptAndStartNextRange();
140
+ }
141
+ async stopRanging() {
142
+ await this.bare.stopRange();
143
+ await this.bare.unloadPatch();
144
+ }
145
+ // ── data ──
146
+ streamBlock() {
147
+ return [HISTOGRAM_BIN_DATA_I2C_INDEX, HISTOGRAM_BIN_DATA_I2C_SIZE_BYTES];
148
+ }
149
+ decode(raw) {
150
+ return this.toMeasurement(this.binData(raw));
151
+ }
152
+ async readMeasurement() {
153
+ return this.toMeasurement(await this.binData());
154
+ }
155
+ binData(raw) {
156
+ if (raw === undefined) {
157
+ const [addr, length] = this.streamBlock();
158
+ return this.p.rdMulti(addr, length).then((r) => this.binDataFrom(r));
159
+ }
160
+ return this.binDataFrom(raw);
161
+ }
162
+ binDataFrom(raw) {
163
+ const streamCount = raw[3]; // result__stream_count
164
+ if (streamCount !== this.lastStreamCount) {
165
+ if (this.lastStreamCount !== null) {
166
+ // What clear_interrupt_and_start_next_range() does to the state
167
+ // machine, without the register writes: one frame further on.
168
+ this.bare.state.updateRd(this.bare.img.system_control.v.system__mode_start, this.bare.img.dynamic_config.v.system__grouped_parameter_hold);
169
+ }
170
+ this.lastStreamCount = streamCount;
171
+ }
172
+ return this.bare.getHistogramBinData(raw);
173
+ }
174
+ toMeasurement(bins) {
175
+ const results = processData(bins, this.bare.hpp);
176
+ // Once per frame, and only here: the history is a state machine.
177
+ this.history.apply(results, bins, this.bare.state.rd_device_state, this.bare.hpp);
178
+ return toMeasurement(results, bins);
179
+ }
180
+ // ── interrupt ──
181
+ async checkForDataReady() {
182
+ const intPol = ((await this.p.rdByte(GPIO_HV_MUX__CTRL)) & 0x10) >> 4 === 1 ? 0 : 1;
183
+ return ((await this.p.rdByte(GPIO__TIO_HV_STATUS)) & 1) === intPol;
184
+ }
185
+ async clearInterrupt() {
186
+ await this.p.wrByte(SYSTEM__INTERRUPT_CLEAR, CLEAR_RANGE_INT);
187
+ }
188
+ // ── timing ──
189
+ /**
190
+ * The budget covers the whole measurement, of which the range timeout is
191
+ * one sixth after a fixed guard comes off. 0 = continuous. Host-side only:
192
+ * the image reaches the sensor at startRanging().
193
+ */
194
+ async setRangeTiming(timingBudgetMs, interMeasurementMs) {
195
+ this.budgetMs = timingBudgetMs;
196
+ this.interMs = interMeasurementMs;
197
+ this.bare.setMeasurementTimingBudgetUs(timingBudgetMs * 1000);
198
+ this.bare.setInterMeasurementPeriodMs(interMeasurementMs);
199
+ }
200
+ /** → [timing budget ms, inter-measurement ms]. */
201
+ async getRangeTiming() {
202
+ const budgetUs = this.bare.rangeConfigTimeoutUs * TIMING_DIVISOR + TIMING_GUARD_US;
203
+ return [floorDiv(budgetUs, 1000), this.bare.interMeasurementPeriodMs];
204
+ }
205
+ }
206
+ //# sourceMappingURL=driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver.js","sourceRoot":"","sources":["../../../../../src/sensors/vl53lx/uld/bare/driver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,YAAY,EAAyC,MAAM,YAAY,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EACL,UAAU,EACV,eAAe,EACf,cAAc,EACd,4BAA4B,EAC5B,iCAAiC,EACjC,cAAc,EACd,eAAe,GAEhB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,sEAAsE;AACtE,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACxC,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAC1C,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAC9C,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAC9C,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAEzC;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC;AAEnC,yEAAyE;AACzE,MAAM,CAAC,MAAM,gBAAgB,GAAqC;IAChE,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,IAAI;CACX,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC;AAErC,6EAA6E;AAC7E,MAAM,OAAO,MAAO,SAAQ,YAAY;IACtC,MAAM,CAAmB,UAAU,GAAG,CAAC,CAAC;IACxC,uEAAuE;IACvE,kEAAkE;IAClE,MAAM,CAAmB,WAAW,GAA6C;QAC/E,CAAC,uBAAuB,EAAE,eAAe,CAAC;KAC3C,CAAC;IACF,MAAM,CAAmB,OAAO,GAAG,IAAI,CAAC,CAAC,wCAAwC;IACjF,MAAM,CAAmB,QAAQ,GAAwB,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACrF,MAAM,CAAmB,KAAK,GAAsB,cAAc,CAAC;IACnE,2EAA2E;IAC3E,6EAA6E;IAC7E,MAAM,CAAmB,SAAS,GAA8B,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACzE,MAAM,CAAmB,SAAS,GAAG,IAAI,CAAC;IAEjC,IAAI,CAAa;IAClB,IAAI,GAAW,YAAY,CAAC;IAC5B,QAAQ,GAAG,EAAE,CAAC;IACd,OAAO,GAAG,CAAC,CAAC;IACpB,2EAA2E;IAC3E,2EAA2E;IAC3E,2EAA2E;IACnE,eAAe,GAAkB,IAAI,CAAC;IAC9C,yEAAyE;IACxD,OAAO,GAAG,IAAI,YAAY,EAAE,CAAC;IAE9C,YAAY,QAAwB,EAAE,OAAe;QACnD,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,iBAAiB;IACjB,OAAO;QACL,OAAO,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAED,kBAAkB;IAClB,KAAK,CAAC,QAAQ,CAAC,QAAQ,GAAG,GAAG;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,GAAG,IAAI,CAAC;QAC9C,SAAS,CAAC;YACR,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,KAAK,IAAI;gBAAE,OAAO;YACpE,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;gBAC1B,MAAM,IAAI,SAAS,CAAC,qDAAqD,CAAC,CAAC;YAC7E,CAAC;YACD,MAAM,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACvC,MAAM,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;QAC1B,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEtB,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC3B,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;QACxD,IAAI,IAAI,CAAC,OAAO,KAAK,YAAY;YAAE,MAAM,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5E,CAAC;IAED;;;OAGG;IACM,KAAK,CAAC,OAAO,CAAC,IAAY;QACjC,IAAI,CAAE,cAAoC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1D,MAAM,IAAI,SAAS,CAAC,iBAAiB,IAAI,UAAU,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAChC,0EAA0E;QAC1E,yEAAyE;QACzE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,kBAAkB,GAAG,cAAc,CAAC;QAClE,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC;IAEQ,KAAK,CAAC,OAAO;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAEQ,OAAO;QACd,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAC7C,CAAC;IAED,gCAAgC;IACvB,KAAK,CAAC,UAAU;QACvB,OAAO;YACL,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,oBAAoB;YAClD,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC;SACvD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACpC,oEAAoE;QACpE,yDAAyD;QACzD,MAAM,IAAI,CAAC,IAAI,CAAC,+BAA+B,EAAE,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,WAAW;QACf,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAChC,CAAC;IAED,aAAa;IACb,WAAW;QACT,OAAO,CAAC,4BAA4B,EAAE,iCAAiC,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,CAAC,GAAe;QACpB,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC;IAEQ,KAAK,CAAC,eAAe;QAC5B,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAClD,CAAC;IAQD,OAAO,CAAC,GAAgB;QACtB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAEO,WAAW,CAAC,GAAe;QACjC,MAAM,WAAW,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC,CAAC,uBAAuB;QACpD,IAAI,WAAW,KAAK,IAAI,CAAC,eAAe,EAAE,CAAC;YACzC,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,EAAE,CAAC;gBAClC,gEAAgE;gBAChE,8DAA8D;gBAC9D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CACtB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,kBAAmB,EAClD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,8BAA+B,CAC/D,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,eAAe,GAAG,WAAW,CAAC;QACrC,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,aAAa,CAAC,IAAsB;QAClC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjD,iEAAiE;QACjE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClF,OAAO,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,kBAAkB;IAClB,KAAK,CAAC,iBAAiB;QACrB,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,OAAO,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,MAAM,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,uBAAuB,EAAE,eAAe,CAAC,CAAC;IAChE,CAAC;IAED,eAAe;IACf;;;;OAIG;IACH,KAAK,CAAC,cAAc,CAAC,cAAsB,EAAE,kBAA0B;QACrE,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,kBAAkB,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,kBAAkB,CAAC,CAAC;IAC5D,CAAC;IAED,kDAAkD;IAClD,KAAK,CAAC,cAAc;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,oBAAoB,GAAG,cAAc,GAAG,eAAe,CAAC;QACnF,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACxE,CAAC"}
@@ -0,0 +1,180 @@
1
+ /**
2
+ * uld/bare/hist — histogram post-processing: 24 bins → targets.
3
+ * Mirror of the Python `depz_sensor_sdk.vl53lx.uld.bare.hist` (a port of
4
+ * `VL53LX_hist_process_data()`; ST ships the C obfuscated, the C names are in
5
+ * the comments next to ours).
6
+ *
7
+ * In one paragraph: fold repeated bin codes together, estimate the ambient
8
+ * floor, drop the ambient-only bins, work out per-bin detection thresholds,
9
+ * and mark every bin above its threshold. Runs of marked bins are pulses.
10
+ * Each pulse is isolated, filtered with a three-tap window, and the zero
11
+ * crossing between the two halves is interpolated to a sub-bin phase. Phase
12
+ * converts to millimetres against `zero_distance_phase`; event sums convert
13
+ * to rates; the filter sums to sigma. `FrameHistory` compares consecutive
14
+ * frames (phase and event consistency), which is what turns "no wrap check
15
+ * done" into "valid" or "wrapped target".
16
+ *
17
+ * Not here (as in Python): crosstalk compensation, the ambient dmax estimate
18
+ * (a stub on purpose — our boards ship the FMT region blank) and the
19
+ * crosstalk-monitor consistency check.
20
+ *
21
+ * **Integers.** Python floors (`//`), C truncates (`cdiv`); both are kept
22
+ * exactly where the Python has them. Three places can leave 2^53 and run in
23
+ * BigInt: the sigma estimate (64-bit saturation ceilings), the phase
24
+ * interpolation (4096² scaling) and the per-SPAD / events-consistency maths.
25
+ */
26
+ import { type Measurement } from "../base.js";
27
+ import { type HistPostProcessConfig, type HistogramBinData } from "./core.js";
28
+ export declare const MAX_BIN_SEQUENCE_LENGTH = 6;
29
+ export declare const MAX_BIN_SEQUENCE_CODE = 15;
30
+ export declare const MAX_PULSES = 8;
31
+ export declare const MAX_RANGE_RESULTS = 4;
32
+ export declare const MAX_ALLOWED_PHASE = 65535;
33
+ export declare const SPAD_TOTAL_COUNT_MAX: number;
34
+ export declare const SPAD_TOTAL_COUNT_RES_THRES: number;
35
+ export declare const SPEED_OF_LIGHT_IN_AIR_DIV_8: number;
36
+ export declare const SIGMA_INVALID = 65535;
37
+ export declare const DEVICEERROR_NOUPDATE = 0;
38
+ export declare const DEVICEERROR_RANGEPHASECHECK = 5;
39
+ export declare const DEVICEERROR_SIGMATHRESHOLDCHECK = 6;
40
+ export declare const DEVICEERROR_PHASECONSISTENCY = 7;
41
+ export declare const DEVICEERROR_RANGECOMPLETE = 9;
42
+ export declare const DEVICEERROR_RANGECOMPLETE_NO_WRAP_CHECK = 19;
43
+ export declare const DEVICEERROR_EVENTCONSISTENCY = 20;
44
+ export declare const DEVICEERROR_RANGECOMPLETE_MERGED_PULSE = 22;
45
+ export declare const DEVICEERROR_PREV_RANGE_NO_TARGETS = 23;
46
+ export declare const HIST_TARGET_ORDER_STRONGEST_FIRST = 1;
47
+ export declare const HIST_TARGET_ORDER_CLOSEST_FIRST = 2;
48
+ export declare const RANGESTATUS_RANGE_VALID = 0;
49
+ export declare const RANGESTATUS_SIGMA_FAIL = 1;
50
+ export declare const RANGESTATUS_OUTOFBOUNDS_FAIL = 4;
51
+ export declare const RANGESTATUS_RANGE_VALID_NO_WRAP_CHECK = 6;
52
+ export declare const RANGESTATUS_WRAP_TARGET_FAIL = 7;
53
+ export declare const RANGESTATUS_RANGE_VALID_MERGED_PULSE = 11;
54
+ export declare const RANGESTATUS_TARGET_PRESENT_LACK_OF_SIGNAL = 12;
55
+ export declare const RANGESTATUS_NONE = 255;
56
+ /** VL53LX_isqrt() — floor of the square root, on a uint32 argument. */
57
+ export declare function isqrt(num: number): number;
58
+ /** VL53LX_calc_pll_period_mm(). */
59
+ export declare function calcPllPeriodMm(fastOscFrequency: number): number;
60
+ /** VL53LX_rate_maths(): events over a duration → count rate in 9.7 Mcps. */
61
+ export declare function rateMaths(events: number, timeUs: number): number;
62
+ /** VL53LX_rate_per_spad_maths(). */
63
+ export declare function ratePerSpadMaths(fracBits: number, peakCountRate: number, numSpads: number, maxOutputValue: number): number;
64
+ /** VL53LX_events_per_spad_maths() → kcps per SPAD (BigInt: `total << 11`). */
65
+ export declare function eventsPerSpadMaths(events: number, numSpads: number, duration: number): number;
66
+ /** VL53LX_range_maths(): phase → millimetres. */
67
+ export declare function rangeMaths(fastOscFrequency: number, phase: number, zeroDistancePhase: number, fractionalBits: number, gainFactor: number, rangeOffsetMm: number): number;
68
+ /** `VL53LX_range_data_t`: one target. C field names kept. */
69
+ export declare class RangeData {
70
+ range_id: number;
71
+ start_bin: number;
72
+ first_bin: number;
73
+ peak_bin: number;
74
+ last_bin: number;
75
+ end_bin: number;
76
+ width_bins: number;
77
+ window_bins: number;
78
+ vcsel_width: number;
79
+ fast_osc_frequency: number;
80
+ zero_distance_phase: number;
81
+ spads: number;
82
+ total_periods_elapsed: number;
83
+ peak_duration_us: number;
84
+ woi_duration_us: number;
85
+ ambient_events: number;
86
+ total_events: number;
87
+ signal_events: number;
88
+ peak_signal_count_rate_mcps: number;
89
+ avg_signal_count_rate_mcps: number;
90
+ ambient_count_rate_mcps: number;
91
+ total_rate_per_spad_mcps: number;
92
+ signal_events_per_spad_kcps: number;
93
+ sigma: number;
94
+ phase_start: number;
95
+ phase_mean: number;
96
+ phase_end: number;
97
+ min_range_mm: number;
98
+ median_range_mm: number;
99
+ max_range_mm: number;
100
+ range_status: number;
101
+ get sigma_mm(): number;
102
+ /** peak_signal_count_rate_mcps is 9.7 Mcps. */
103
+ get signal_kcps(): number;
104
+ get ambient_kcps(): number;
105
+ }
106
+ /** `VL53LX_range_results_t`, reduced to the single-zone case. */
107
+ export declare class RangeResults {
108
+ stream_count: number;
109
+ targets: RangeData[];
110
+ ambient_dmax_mm: number[];
111
+ wrap_dmax_mm: number;
112
+ }
113
+ /** `VL53LX_hist_pulse_data_t`: one run of bins above the threshold. */
114
+ export declare class PulseData {
115
+ start_bin: number;
116
+ first_bin: number;
117
+ peak_bin: number;
118
+ last_bin: number;
119
+ end_bin: number;
120
+ width_bins: number;
121
+ filter_woi: number;
122
+ ambient_events: number;
123
+ total_events: number;
124
+ signal_events: number;
125
+ phase_start: number;
126
+ phase_mean: number;
127
+ phase_end: number;
128
+ sigma: number;
129
+ }
130
+ /** VL53LX_f_031: fold the six bin-sequence codes together (repeats averaged). */
131
+ export declare function averageRepeatedBins(src: HistogramBinData): HistogramBinData;
132
+ /** VL53LX_hist_calc_zero_distance_phase */
133
+ export declare function calcZeroDistancePhase(bins: HistogramBinData): void;
134
+ /** VL53LX_hist_estimate_ambient_from_thresholded_bins() */
135
+ export declare function estimateAmbientFromThresholdedBins(ambientThresholdSigma: number, bins: HistogramBinData): void;
136
+ /** VL53LX_hist_estimate_ambient_from_ambient_bins() */
137
+ export declare function estimateAmbientFromAmbientBins(bins: HistogramBinData): void;
138
+ /** VL53LX_hist_remove_ambient_bins: drop the ambient-only bins off the front. */
139
+ export declare function removeAmbientBins(bins: HistogramBinData): void;
140
+ /**
141
+ * `VL53LX_hist_process_data()` + `VL53LX_f_025`, with crosstalk off.
142
+ * `binsInput` is what `BareDriver.getHistogramBinData()` returns; `hpp` is the
143
+ * driver's `HistPostProcessConfig`. Pure (does not modify `binsInput`).
144
+ */
145
+ export declare function processData(binsInput: HistogramBinData, hpp: HistPostProcessConfig, mergeNb?: number): RangeResults;
146
+ interface PrevTarget {
147
+ ambient_events: number;
148
+ total_events: number;
149
+ phase_mean: number;
150
+ range_status: number;
151
+ }
152
+ /**
153
+ * The frame before this one, reduced to what the consistency checks read
154
+ * (`VL53LX_zone_hist_info_t` / `VL53LX_zone_objects_t` for our single zone).
155
+ * The driver owns one and hands it every frame, exactly once.
156
+ */
157
+ export declare class FrameHistory {
158
+ rd_device_state: string | null;
159
+ total_periods_elapsed: number;
160
+ spads: number;
161
+ targets: PrevTarget[];
162
+ /** Forget the stream so far; the next `apply()` only remembers. */
163
+ reset(): void;
164
+ /** Check `results` against the remembered frame, then remember it (C order). */
165
+ apply(results: RangeResults, bins: HistogramBinData, rdDeviceState: string, hpp: HistPostProcessConfig): void;
166
+ /** `VL53LX_hist_phase_consistency_check()`. */
167
+ private phaseConsistencyCheck;
168
+ }
169
+ /** ConvertStatusHisto() (vl53lx_api.c), the cases the histogram path produces. */
170
+ export declare function convertStatus(deviceError: number): number;
171
+ /** UM2931 range status names, as uld/l4 spells them. */
172
+ export declare const STATUS_NAMES: Readonly<Record<number, string>>;
173
+ /**
174
+ * RangeResults → the family-wide Measurement. Every return goes into
175
+ * `targets`; the first one is also the measurement itself. `extra` keeps the
176
+ * Python key names (display only).
177
+ */
178
+ export declare function toMeasurement(results: RangeResults, bins: HistogramBinData): Measurement;
179
+ export {};
180
+ //# sourceMappingURL=hist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hist.d.ts","sourceRoot":"","sources":["../../../../../src/sensors/vl53lx/uld/bare/hist.ts"],"names":[],"mappings":"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"}