@lodestar/beacon-node 1.42.0-dev.8961934298 → 1.42.0-dev.89ddaaeed2

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 (149) hide show
  1. package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
  2. package/lib/api/impl/beacon/blocks/index.js +11 -11
  3. package/lib/api/impl/beacon/blocks/index.js.map +1 -1
  4. package/lib/api/impl/debug/index.js.map +1 -1
  5. package/lib/chain/ColumnReconstructionTracker.d.ts +2 -1
  6. package/lib/chain/ColumnReconstructionTracker.d.ts.map +1 -1
  7. package/lib/chain/ColumnReconstructionTracker.js +5 -5
  8. package/lib/chain/ColumnReconstructionTracker.js.map +1 -1
  9. package/lib/chain/GetBlobsTracker.d.ts +2 -1
  10. package/lib/chain/GetBlobsTracker.d.ts.map +1 -1
  11. package/lib/chain/GetBlobsTracker.js +14 -12
  12. package/lib/chain/GetBlobsTracker.js.map +1 -1
  13. package/lib/chain/blocks/blockInput/blockInput.d.ts +5 -5
  14. package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
  15. package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
  16. package/lib/chain/blocks/blockInput/types.d.ts +4 -4
  17. package/lib/chain/blocks/blockInput/types.d.ts.map +1 -1
  18. package/lib/chain/blocks/importBlock.d.ts.map +1 -1
  19. package/lib/chain/blocks/importBlock.js +13 -1
  20. package/lib/chain/blocks/importBlock.js.map +1 -1
  21. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts +14 -6
  22. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.d.ts.map +1 -1
  23. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js +33 -2
  24. package/lib/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js.map +1 -1
  25. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts +2 -1
  26. package/lib/chain/blocks/payloadEnvelopeInput/types.d.ts.map +1 -1
  27. package/lib/chain/chain.d.ts +3 -2
  28. package/lib/chain/chain.d.ts.map +1 -1
  29. package/lib/chain/chain.js +55 -20
  30. package/lib/chain/chain.js.map +1 -1
  31. package/lib/chain/emitter.d.ts +29 -7
  32. package/lib/chain/emitter.d.ts.map +1 -1
  33. package/lib/chain/emitter.js +12 -3
  34. package/lib/chain/emitter.js.map +1 -1
  35. package/lib/chain/errors/dataColumnSidecarError.d.ts +31 -1
  36. package/lib/chain/errors/dataColumnSidecarError.d.ts.map +1 -1
  37. package/lib/chain/errors/dataColumnSidecarError.js +7 -0
  38. package/lib/chain/errors/dataColumnSidecarError.js.map +1 -1
  39. package/lib/chain/interface.d.ts +4 -2
  40. package/lib/chain/interface.d.ts.map +1 -1
  41. package/lib/chain/seenCache/seenGossipBlockInput.d.ts +1 -1
  42. package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
  43. package/lib/chain/seenCache/seenGossipBlockInput.js +2 -2
  44. package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
  45. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts +1 -1
  46. package/lib/chain/seenCache/seenPayloadEnvelopeInput.d.ts.map +1 -1
  47. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js +2 -2
  48. package/lib/chain/seenCache/seenPayloadEnvelopeInput.js.map +1 -1
  49. package/lib/chain/validation/dataColumnSidecar.d.ts +11 -4
  50. package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
  51. package/lib/chain/validation/dataColumnSidecar.js +184 -5
  52. package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
  53. package/lib/db/buckets.d.ts +2 -2
  54. package/lib/db/buckets.d.ts.map +1 -1
  55. package/lib/db/buckets.js +2 -2
  56. package/lib/db/buckets.js.map +1 -1
  57. package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
  58. package/lib/db/repositories/blockArchiveIndex.d.ts.map +1 -1
  59. package/lib/db/repositories/dataColumnSidecar.d.ts.map +1 -1
  60. package/lib/db/repositories/dataColumnSidecar.js +4 -2
  61. package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
  62. package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -1
  63. package/lib/db/repositories/dataColumnSidecarArchive.js +4 -2
  64. package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
  65. package/lib/metrics/metrics/lodestar.d.ts +20 -0
  66. package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
  67. package/lib/metrics/metrics/lodestar.js +33 -0
  68. package/lib/metrics/metrics/lodestar.js.map +1 -1
  69. package/lib/network/interface.d.ts +3 -2
  70. package/lib/network/interface.d.ts.map +1 -1
  71. package/lib/network/network.d.ts +3 -2
  72. package/lib/network/network.d.ts.map +1 -1
  73. package/lib/network/network.js +3 -0
  74. package/lib/network/network.js.map +1 -1
  75. package/lib/network/processor/extractSlotRootFns.d.ts +1 -1
  76. package/lib/network/processor/extractSlotRootFns.d.ts.map +1 -1
  77. package/lib/network/processor/extractSlotRootFns.js +25 -5
  78. package/lib/network/processor/extractSlotRootFns.js.map +1 -1
  79. package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
  80. package/lib/network/processor/gossipHandlers.js +242 -66
  81. package/lib/network/processor/gossipHandlers.js.map +1 -1
  82. package/lib/network/processor/index.d.ts +11 -1
  83. package/lib/network/processor/index.d.ts.map +1 -1
  84. package/lib/network/processor/index.js +232 -22
  85. package/lib/network/processor/index.js.map +1 -1
  86. package/lib/network/reqresp/types.d.ts +3 -3
  87. package/lib/network/reqresp/types.d.ts.map +1 -1
  88. package/lib/network/reqresp/types.js +9 -3
  89. package/lib/network/reqresp/types.js.map +1 -1
  90. package/lib/sync/unknownBlock.js +2 -2
  91. package/lib/sync/unknownBlock.js.map +1 -1
  92. package/lib/sync/utils/downloadByRange.d.ts +3 -3
  93. package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
  94. package/lib/sync/utils/downloadByRange.js +4 -2
  95. package/lib/sync/utils/downloadByRange.js.map +1 -1
  96. package/lib/sync/utils/downloadByRoot.d.ts +3 -3
  97. package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
  98. package/lib/sync/utils/downloadByRoot.js +10 -5
  99. package/lib/sync/utils/downloadByRoot.js.map +1 -1
  100. package/lib/util/blobs.d.ts +3 -3
  101. package/lib/util/blobs.d.ts.map +1 -1
  102. package/lib/util/blobs.js +21 -10
  103. package/lib/util/blobs.js.map +1 -1
  104. package/lib/util/dataColumns.d.ts +18 -11
  105. package/lib/util/dataColumns.d.ts.map +1 -1
  106. package/lib/util/dataColumns.js +51 -17
  107. package/lib/util/dataColumns.js.map +1 -1
  108. package/lib/util/execution.d.ts +6 -2
  109. package/lib/util/execution.d.ts.map +1 -1
  110. package/lib/util/execution.js +49 -25
  111. package/lib/util/execution.js.map +1 -1
  112. package/lib/util/sszBytes.d.ts +25 -1
  113. package/lib/util/sszBytes.d.ts.map +1 -1
  114. package/lib/util/sszBytes.js +189 -2
  115. package/lib/util/sszBytes.js.map +1 -1
  116. package/package.json +15 -15
  117. package/src/api/impl/beacon/blocks/index.ts +17 -14
  118. package/src/api/impl/debug/index.ts +2 -2
  119. package/src/chain/ColumnReconstructionTracker.ts +6 -5
  120. package/src/chain/GetBlobsTracker.ts +14 -12
  121. package/src/chain/blocks/blockInput/blockInput.ts +8 -8
  122. package/src/chain/blocks/blockInput/types.ts +4 -4
  123. package/src/chain/blocks/importBlock.ts +18 -1
  124. package/src/chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.ts +53 -12
  125. package/src/chain/blocks/payloadEnvelopeInput/types.ts +2 -1
  126. package/src/chain/chain.ts +63 -24
  127. package/src/chain/emitter.ts +25 -7
  128. package/src/chain/errors/dataColumnSidecarError.ts +32 -1
  129. package/src/chain/interface.ts +4 -2
  130. package/src/chain/seenCache/seenGossipBlockInput.ts +2 -2
  131. package/src/chain/seenCache/seenPayloadEnvelopeInput.ts +2 -2
  132. package/src/chain/validation/dataColumnSidecar.ts +230 -7
  133. package/src/db/buckets.ts +2 -2
  134. package/src/db/repositories/dataColumnSidecar.ts +4 -2
  135. package/src/db/repositories/dataColumnSidecarArchive.ts +4 -2
  136. package/src/metrics/metrics/lodestar.ts +34 -0
  137. package/src/network/interface.ts +3 -2
  138. package/src/network/network.ts +7 -4
  139. package/src/network/processor/extractSlotRootFns.ts +32 -6
  140. package/src/network/processor/gossipHandlers.ts +305 -79
  141. package/src/network/processor/index.ts +302 -22
  142. package/src/network/reqresp/types.ts +13 -5
  143. package/src/sync/unknownBlock.ts +3 -3
  144. package/src/sync/utils/downloadByRange.ts +9 -7
  145. package/src/sync/utils/downloadByRoot.ts +16 -12
  146. package/src/util/blobs.ts +35 -15
  147. package/src/util/dataColumns.ts +69 -25
  148. package/src/util/execution.ts +49 -30
  149. package/src/util/sszBytes.ts +245 -3
@@ -1 +1 @@
1
- {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/network/network.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/network/network.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,oBAAoB,EAAC,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AAGrC,OAAO,EAAC,OAAO,EAAC,MAAM,kBAAkB,CAAC;AAEzC,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAkBL,wBAAwB,GAEzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAC,kBAAkB,EAAE,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EAAC,UAAU,EAAe,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAC,iCAAiC,EAAC,MAAM,0CAA0C,CAAC;AAE3F,OAAO,EAAU,qBAAqB,EAAC,MAAM,qBAAqB,CAAC;AAGnE,OAAO,EAAY,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAC,oBAAoB,EAAC,MAAM,qBAAqB,CAAC;AAOzD,OAAO,EAAe,WAAW,EAAE,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAmB,YAAY,EAAE,eAAe,EAAmB,MAAM,aAAa,CAAC;AAC9F,OAAO,EAAC,uBAAuB,EAAC,MAAM,YAAY,CAAC;AACnD,OAAO,EAAiC,UAAU,EAAgB,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAC,gBAAgB,EAAE,sCAAsC,EAAE,oBAAoB,EAAC,MAAM,mBAAmB,CAAC;AAKjH,OAAO,EAAC,iBAAiB,EAAC,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAC,gBAAgB,EAA0B,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAC,aAAa,EAAC,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAsB,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAC,MAAM,oBAAoB,CAAC;AACjH,OAAO,EACL,oBAAoB,EACpB,uBAAuB,EACvB,gCAAgC,GACjC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,8BAA8B,EAAC,MAAM,mDAAmD,CAAC;AAEjG,OAAO,EAAC,yBAAyB,EAAE,oBAAoB,EAAC,MAAM,WAAW,CAAC;AA4B1E;;;;;;;GAOG;AACH,MAAM,OAAO,OAAO;IACT,MAAM,CAAS;IACf,aAAa,CAAgB;IACtC,qBAAqB;IACZ,MAAM,CAAmB;IAEjB,MAAM,CAAa;IACnB,MAAM,CAAe;IACrB,KAAK,CAAS;IACd,KAAK,CAAe;IACrC,mCAAmC;IAClB,UAAU,CAAkB;IAE7C,eAAe;IACE,gBAAgB,CAAmB;IACnC,IAAI,CAAe;IACnB,iBAAiB,CAAoB;IAE9C,sBAAsB,GAAG,KAAK,CAAC;IAC/B,sBAAsB,GAAG,IAAI,GAAG,EAA2C,CAAC;IAEpF,YAAY,OAAuB,EAAE;QACnC,IAAI,CAAC,MAAM,GAAG,oBAAoB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC;QACjD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;QACtC,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QACjD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACzB,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;QAEnD,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACvE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,yBAAyB,EAAE,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE,CAClF,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,CACvC,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,2BAA2B,EAAE,CAAC,EAAC,IAAI,EAAC,EAAE,EAAE,CACpF,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,CACzC,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,6BAA6B,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAChG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,kBAAkB,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAChF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,mBAAmB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAClF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAAA,CACrE;IAED,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAChB,IAAI,EACJ,MAAM,EACN,MAAM,EACN,OAAO,EACP,KAAK,EACL,EAAE,EACF,cAAc,EACd,UAAU,EACV,YAAY,EACZ,iBAAiB,GACE,EAAoB;QACvC,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;QACrC,MAAM,iBAAiB,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAElD,MAAM,oBAAoB,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC,oBAAoB,CAAC;QACvE,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QACxC,MAAM,wBAAwB,GAAG,KAAK,CAAC,aAAa,CAAC,uBAAuB,CAAC;QAE7E,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS;YACzB,CAAC,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC;gBAC3B,IAAI,EAAE;oBACJ,GAAG,IAAI;oBACP,YAAY;oBACZ,cAAc,EAAE,OAAO,CAAC,OAAO,CAAC;oBAChC,oBAAoB;oBACpB,WAAW,EAAE,KAAK,CAAC,WAAW;oBAC9B,aAAa;oBACb,wBAAwB;iBACzB;gBACD,MAAM;gBACN,UAAU;gBACV,MAAM;gBACN,MAAM;gBACN,OAAO;gBACP,iBAAiB;aAClB,CAAC;YACJ,CAAC,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC;gBACrB,IAAI;gBACJ,MAAM;gBACN,UAAU;gBACV,YAAY;gBACZ,MAAM;gBACN,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM;gBACN,iBAAiB;gBACjB,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,qBAAqB,EAAE,CAAC,CAAC,CAAC,IAAI;gBAC7D,aAAa;gBACb,wBAAwB;gBACxB,oBAAoB;aACrB,CAAC,CAAC;QAEP,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CAC3C,EAAC,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,iBAAiB,EAAC,EACrF,IAAI,CACL,CAAC;QAEF,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,UAAU,cAAc,CAAC,MAAM,CAAC,gBAAgB,cAAc,EAAE,CAAC,CAAC;QAE9E,OAAO,IAAI,OAAO,CAAC;YACjB,IAAI;YACJ,UAAU;YACV,MAAM;YACN,MAAM;YACN,KAAK;YACL,eAAe,EAAE,MAAM;YACvB,iBAAiB;YACjB,gBAAgB;YAChB,IAAI;SACL,CAAC,CAAC;IAAA,CACJ;IAED,IAAI,MAAM,GAAY;QACpB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;IAAA,CACvC;IAED,sDAAsD;IACtD,KAAK,CAAC,KAAK,GAAkB;QAC3B,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QAExB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAClE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,gBAAgB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACxE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAClE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,yBAAyB,EAAE,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAC5G,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,2BAA2B,EAAE,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAChH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,6BAA6B,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACjG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,kBAAkB,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,mBAAmB,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACnF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACrE,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAExB,mCAAmC;QACnC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAAA,CAC1C;IAED,KAAK,CAAC,aAAa,GAAoB;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;IAAA,CAClC;IAED;;OAEG;IACH,KAAK,CAAC,6BAA6B,CAAC,aAAsC,EAAiB;QACzF,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACzC,IAAI,YAAY,CAAC,YAAY,EAAE,CAAC;gBAC9B,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC;QACD,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAE/B,OAAO,IAAI,CAAC,IAAI,CAAC,6BAA6B,CAAC,aAAa,CAAC,CAAC;IAAA,CAC/D;IAED,KAAK,CAAC,2BAA2B,CAAC,aAAsC,EAAiB;QACvF,OAAO,IAAI,CAAC,IAAI,CAAC,2BAA2B,CAAC,aAAa,CAAC,CAAC;IAAA,CAC7D;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CAAC,KAAkB,EAAiB;QACrD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAAA,CACvC;IAED,kBAAkB,CAAC,QAAqB,EAAE,MAAwB,EAAE,IAAgB,EAAQ;QAC1F,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAAA,CAClE;IAED,qBAAqB,CAAC,QAAqB,EAAE,MAAwB,EAAE,IAAgB,EAAQ;QAC7F,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAAA,CACrE;IAED,KAAK,CAAC,UAAU,CAAC,IAAe,EAAE,MAAkB,EAAE,UAAkB,EAAiB;QACvF,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAAA,CACvD;IAED,mBAAmB;IACnB,iBAAiB,GAAgB;QAC/B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC,CAAC;IAAA,CACvD;IAED,wBAAwB,CAAC,MAAiB,EAAgB;QACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,UAAU,oBAAoB,CAAC,MAAM,CAAC,+BAA+B,CAAC,CAAC;QACzF,CAAC;QACD,OAAO,EAAC,MAAM,EAAE,GAAG,QAAQ,EAAC,CAAC;IAAA,CAC9B;IAED,qBAAqB,GAAW;QAC9B,OAAO,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;IAAA,CACzC;IAED,KAAK,CAAC,kBAAkB,GAAyC;QAC/D,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAAA,CACvC;IAED;;OAEG;IACH,KAAK,CAAC,yBAAyB,GAAkB;QAC/C,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAC5C,gEAAgE;YAChE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACrC,CAAC;IAAA,CACF;IAED;;OAEG;IACH,KAAK,CAAC,2BAA2B,GAAkB;QACjD,wCAAwC;QACxC,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;QAEpC,MAAM,IAAI,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC;QAC9C,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;IAAA,CACrC;IAED,8BAA8B,GAAY;QACxC,OAAO,IAAI,CAAC,sBAAsB,CAAC;IAAA,CACpC;IAED,eAAe,CAAC,MAAgB,EAAE,IAAY,EAAW;QACvD,OAAO,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAAA,CAC7D;IAED,SAAS;IAET,KAAK,CAAC,kBAAkB,CAAC,WAA8B,EAAmB;QACxE,MAAM,KAAK,GAAG,kBAAkB,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAE3D,OAAO,IAAI,CAAC,aAAa,CAA0B,EAAC,IAAI,EAAE,UAAU,CAAC,YAAY,EAAE,QAAQ,EAAC,EAAE,WAAW,EAAE;YACzG,2BAA2B,EAAE,IAAI;SAClC,CAAC,CAAC;IAAA,CACJ;IAED,KAAK,CAAC,kBAAkB,CAAC,WAA8B,EAAmB;QACxE,MAAM,KAAK,GAAG,kBAAkB,CAAC,WAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAE3D,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC;QAEjC,OAAO,IAAI,CAAC,aAAa,CAA0B,EAAC,IAAI,EAAE,UAAU,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAC,EAAE,WAAW,EAAE;YACjH,2BAA2B,EAAE,IAAI;SAClC,CAAC,CAAC;IAAA,CACJ;IAED,KAAK,CAAC,wBAAwB,CAAC,iBAAoC,EAAmB;QACpF,MAAM,IAAI,GAAG,wBAAwB,CAAC,iBAAiB,CAAC;YACtD,CAAC,CAAC,iBAAiB,CAAC,IAAI;YACxB,CAAC,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC;QACrD,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAE3D,MAAM,MAAM,GAAG,iCAAiC,CAAC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QACjF,OAAO,IAAI,CAAC,aAAa,CACvB,EAAC,IAAI,EAAE,UAAU,CAAC,mBAAmB,EAAE,QAAQ,EAAE,MAAM,EAAC,EACxD,iBAAiB,EACjB;YACE,2BAA2B,EAAE,IAAI;YACjC,kEAAkE;YAClE,6GAA6G;YAC7G,iFAAiF;YACjF,6DAA6D;YAC7D,4BAA4B,EAAE,IAAI;SACnC,CACF,CAAC;IAAA,CACH;IAED,KAAK,CAAC,8BAA8B,CAAC,iBAA0C,EAAmB;QAChG,MAAM,KAAK,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChF,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAE3D,OAAO,IAAI,CAAC,aAAa,CACvB,EAAC,IAAI,EAAE,UAAU,CAAC,0BAA0B,EAAE,QAAQ,EAAC,EACvD,iBAAiB,EACjB,EAAC,2BAA2B,EAAE,IAAI,EAAC,CACpC,CAAC;IAAA,CACH;IAED,KAAK,CAAC,wBAAwB,CAAC,WAA8B,EAAE,MAAgB,EAAmB;QAChG,MAAM,KAAK,GAAG,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAE3D,OAAO,IAAI,CAAC,aAAa,CACvB,EAAC,IAAI,EAAE,UAAU,CAAC,kBAAkB,EAAE,QAAQ,EAAE,MAAM,EAAC,EACvD,WAAW,EACX,EAAC,2BAA2B,EAAE,IAAI,EAAC,CACpC,CAAC;IAAA,CACH;IAED,KAAK,CAAC,oBAAoB,CAAC,aAAyC,EAAmB;QACrF,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAE3D,OAAO,IAAI,CAAC,aAAa,CAA4B,EAAC,IAAI,EAAE,UAAU,CAAC,cAAc,EAAE,QAAQ,EAAC,EAAE,aAAa,EAAE;YAC/G,2BAA2B,EAAE,IAAI;SAClC,CAAC,CAAC;IAAA,CACJ;IAED,KAAK,CAAC,2BAA2B,CAAC,oBAAwD,EAAmB;QAC3G,MAAM,cAAc,GAAG,EAAE,CAAC;QAC1B,KAAK,MAAM,QAAQ,IAAI,uBAAuB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;YACrF,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAEpC,IAAI,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC5B,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CACvC,EAAC,IAAI,EAAE,UAAU,CAAC,uBAAuB,EAAE,QAAQ,EAAC,EACpD,oBAAoB,EACpB,EAAC,2BAA2B,EAAE,IAAI,EAAC,CACpC,CAAC;gBACF,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,KAAK,CAAC,6DAA6D,CAAC,CAAC;QAC7E,CAAC;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAAA,CACpC;IAED,KAAK,CAAC,uBAAuB,CAAC,gBAAyC,EAAmB;QACxF,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,OAAO,CAAC,IAAc,CAAC,CAAC,CAAC;QAChG,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAE3D,OAAO,IAAI,CAAC,aAAa,CACvB,EAAC,IAAI,EAAE,UAAU,CAAC,iBAAiB,EAAE,QAAQ,EAAC,EAC9C,gBAAgB,CACjB,CAAC;IAAA,CACH;IAED,KAAK,CAAC,uBAAuB,CAAC,gBAAkC,EAAmB;QACjF,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC,CAAC;QAC5F,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAE3D,OAAO,IAAI,CAAC,aAAa,CACvB,EAAC,IAAI,EAAE,UAAU,CAAC,iBAAiB,EAAE,QAAQ,EAAC,EAC9C,gBAAgB,CACjB,CAAC;IAAA,CACH;IAED,KAAK,CAAC,6BAA6B,CAAC,SAAsC,EAAE,MAAgB,EAAmB;QAC7G,MAAM,KAAK,GAAG,kBAAkB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAE3D,OAAO,IAAI,CAAC,aAAa,CACvB,EAAC,IAAI,EAAE,UAAU,CAAC,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAC,EACnD,SAAS,EACT;YACE,2BAA2B,EAAE,IAAI;SAClC,CACF,CAAC;IAAA,CACH;IAED,KAAK,CAAC,2BAA2B,CAAC,oBAAuD,EAAmB;QAC1G,MAAM,KAAK,GAAG,kBAAkB,CAAC,oBAAoB,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACjF,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAE3D,OAAO,IAAI,CAAC,aAAa,CACvB,EAAC,IAAI,EAAE,UAAU,CAAC,qCAAqC,EAAE,QAAQ,EAAC,EAClE,oBAAoB,EACpB,EAAC,2BAA2B,EAAE,IAAI,EAAC,CACpC,CAAC;IAAA,CACH;IAED,KAAK,CAAC,gCAAgC,CAAC,MAAiC,EAAmB;QACzF,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAE3D,OAAO,IAAI,CAAC,aAAa,CACvB,EAAC,IAAI,EAAE,UAAU,CAAC,4BAA4B,EAAE,QAAQ,EAAC,EACzD,MAAM,CACP,CAAC;IAAA,CACH;IAED,KAAK,CAAC,kCAAkC,CAAC,MAAmC,EAAmB;QAC7F,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAE3D,OAAO,IAAI,CAAC,aAAa,CACvB,EAAC,IAAI,EAAE,UAAU,CAAC,8BAA8B,EAAE,QAAQ,EAAC,EAC3D,MAAM,CACP,CAAC;IAAA,CACH;IAED,KAAK,CAAC,qCAAqC,CAAC,cAAoD,EAAmB;QACjH,MAAM,KAAK,GAAG,kBAAkB,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAE3D,OAAO,IAAI,CAAC,aAAa,CACvB,EAAC,IAAI,EAAE,UAAU,CAAC,iBAAiB,EAAE,QAAQ,EAAC,EAC9C,cAAc,EACd,EAAC,2BAA2B,EAAE,IAAI,EAAC,CACpC,CAAC;IAAA,CACH;IAEO,KAAK,CAAC,aAAa,CACzB,KAAwB,EACxB,MAAwB,EACxB,IAA8B,EACb;QACjB,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,WAAW,GAAI,OAAO,CAAC,SAA+D,CAAC,MAAM,CAAC,CAAC;QACrG,IAAI,GAAG;YACL,GAAG,IAAI;YACP,2BAA2B,EAAE,sCAAsC,CAAC,KAAK,CAAC,IAAI,CAAC;SAChF,CAAC;QACF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;QAE7E,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAC,CAAC,CAAC;QAC3G,OAAO,SAAS,CAAC;IAAA,CAClB;IAED,UAAU;IAEV,KAAK,CAAC,uBAAuB,CAC3B,MAAiB,EACjB,OAA0C,EACZ;QAC9B,OAAO,8BAA8B,CACnC,IAAI,CAAC,kBAAkB,CACrB,MAAM,EACN,aAAa,CAAC,mBAAmB;QACjC,6DAA6D;QAC7D,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,EAC1G,OAAO,CACR,EACD,OAAO,EACP,IAAI,CAAC,KAAK,CAAC,eAAe,CAC3B,CAAC;IAAA,CACH;IAED,KAAK,CAAC,sBAAsB,CAAC,MAAiB,EAAE,OAAkC,EAAgC;QAChH,OAAO,gCAAgC,CACrC,IAAI,CAAC,kBAAkB,CACrB,MAAM,EACN,aAAa,CAAC,kBAAkB;QAChC,6DAA6D;QAC7D,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,EAC1G,OAAO,CACR,EACD,OAAO,CAAC,MAAM,EACd,uBAAuB,CAAC,aAAa,CAAC,kBAAkB,CAAC,EACzD,IAAI,CAAC,KAAK,CAAC,eAAe,CAC3B,CAAC;IAAA,CACH;IAED,KAAK,CAAC,wBAAwB,CAAC,MAAiB,EAAE,OAAa,EAAiC;QAC9F,OAAO,oBAAoB,CACzB,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAC1F,uBAAuB,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAC5D,CAAC;IAAA,CACH;IAED,KAAK,CAAC,+BAA+B,CAAC,MAAiB,EAAwC;QAC7F,OAAO,oBAAoB,CACzB,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,2BAA2B,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAC9F,uBAAuB,CAAC,aAAa,CAAC,2BAA2B,CAAC,CACnE,CAAC;IAAA,CACH;IAED,KAAK,CAAC,6BAA6B,CAAC,MAAiB,EAAsC;QACzF,OAAO,oBAAoB,CACzB,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,yBAAyB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAC5F,uBAAuB,CAAC,aAAa,CAAC,yBAAyB,CAAC,CACjE,CAAC;IAAA,CACH;IAED,KAAK,CAAC,6BAA6B,CACjC,MAAiB,EACjB,OAAyC,EACX;QAC9B,OAAO,uBAAuB,CAC5B,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,yBAAyB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAC/F,OAAO,CAAC,KAAK,EACb,uBAAuB,CAAC,aAAa,CAAC,yBAAyB,CAAC,CACjE,CAAC;IAAA,CACH;IAED,KAAK,CAAC,uBAAuB,CAC3B,MAAiB,EACjB,OAAyC,EACX;QAC9B,MAAM,KAAK,GAAG,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpD,OAAO,uBAAuB,CAC5B,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,mBAAmB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;QACzF,wGAAwG;QACxG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,EACtD,uBAAuB,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAC3D,CAAC;IAAA,CACH;IAED,KAAK,CAAC,sBAAsB,CAAC,MAAiB,EAAE,OAAkC,EAAgC;QAChH,OAAO,uBAAuB,CAC5B,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EACxF,OAAO,CAAC,MAAM,EACd,uBAAuB,CAAC,aAAa,CAAC,kBAAkB,CAAC,EACzD,IAAI,CAAC,KAAK,CAAC,eAAe,CAC3B,CAAC;IAAA,CACH;IAED,KAAK,CAAC,6BAA6B,CACjC,MAAiB,EACjB,OAA8C,EAChB;QAC9B,OAAO,uBAAuB,CAC5B,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,yBAAyB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAC/F,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EACtC,uBAAuB,CAAC,aAAa,CAAC,yBAAyB,CAAC,CACjE,CAAC;IAAA,CACH;IAED,KAAK,CAAC,4BAA4B,CAChC,MAAiB,EACjB,OAAwC,EACV;QAC9B,OAAO,uBAAuB,CAC5B,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,wBAAwB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAC9F,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAC,OAAO,EAAC,EAAE,EAAE,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,EAC/D,uBAAuB,CAAC,aAAa,CAAC,wBAAwB,CAAC,EAC/D,IAAI,CAAC,KAAK,CAAC,eAAe,CAC3B,CAAC;IAAA,CACH;IAED,KAAK,CAAC,oCAAoC,CACxC,MAAiB,EACjB,OAAsD,EACL;QACjD,OAAO,uBAAuB,CAC5B,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,gCAAgC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EACtG,OAAO,CAAC,KAAK,EACb,uBAAuB,CAAC,aAAa,CAAC,gCAAgC,CAAC,CACxE,CAAC;IAAA,CACH;IAED,KAAK,CAAC,mCAAmC,CACvC,MAAiB,EACjB,OAA+C,EACE;QACjD,OAAO,uBAAuB,CAC5B,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,+BAA+B,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EACrG,OAAO,CAAC,MAAM,EACd,uBAAuB,CAAC,aAAa,CAAC,+BAA+B,CAAC,EACtE,IAAI,CAAC,KAAK,CAAC,eAAe,CAC3B,CAAC;IAAA,CACH;IAEO,kBAAkB,CACxB,MAAiB,EACjB,MAAqB,EACrB,QAAkB,EAClB,OAAY,EACqB;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC7D,MAAM,WAAW,GAAG,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;QACtE,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,OAAgB,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,EAAE,CAAC;QAE7F,4DAA4D;QAC5D,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAC,CAAC,CAAC;IAAA,CAC9E;IAED,QAAQ;IAER,aAAa,CAAC,IAAY,EAAE,SAAmB,EAAiB;QAC9D,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAAA,CACjD;IAED,cAAc,CAAC,IAAY,EAAiB;QAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAAA,CACvC;IAED,aAAa,CAAC,IAAgC,EAA0B;QACtE,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAAA,CACtC;IAED,gBAAgB,CAAC,MAAc,EAAoB;QACjD,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAAA,CAC3C;IAED,cAAc,GAAsB;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;IAAA,CACnC;IAED,QAAQ,CAAC,SAAiB,EAAyD;QACjF,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAAA,CACtC;IAED,SAAS,GAAgD;QACvD,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IAAA,CAC9B;IAED,kBAAkB,GAA4B;QAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAAA,CACvC;IAED,wBAAwB,GAAgC;QACtD,OAAO,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC;IAAA,CAC7C;IAED,mBAAmB,GAAsB;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAAA,CACxC;IAED,aAAa,GAAsC;QACjD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;IAAA,CAClC;IAED,KAAK,CAAC,eAAe,CAAC,UAAsB,EAAsC;QAChF,OAAO,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;IAAA,CAC1D;IAED,KAAK,CAAC,yBAAyB,CAAC,UAAkB,EAAE,OAAe,EAAmB;QACpF,OAAO,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAAA,CACjE;IAED,KAAK,CAAC,kBAAkB,CAAC,UAAkB,EAAE,OAAe,EAAmB;QAC7E,OAAO,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAAA,CAC1D;IAED,KAAK,CAAC,wBAAwB,CAAC,MAAc,EAAE,OAAe,EAAmB;QAC/E,OAAO,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAA,CAC5D;IAED,KAAK,CAAC,uBAAuB,CAAC,MAAc,EAAE,OAAe,EAAmB;QAC9E,OAAO,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAA,CAC3D;IAEO,2BAA2B,GAAG,KAAK,EAAE,cAAyC,EAAiB,EAAE,CAAC;QACxG,0EAA0E;QAE1E,IAAI,CAAC;YACH,iFAAiF;YACjF,oHAAoH;YACpH,MAAM,IAAI,CAAC,wBAAwB,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YAClE,MAAM,IAAI,CAAC,gCAAgC,CAAC,cAAc,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,mGAAmG;YACnG,0EAA0E;YAC1E,IAAI,CAAC,yBAAyB,CAAC,CAAU,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0DAA0D,EAAE,EAAE,EAAE,CAAU,CAAC,CAAC;YAChG,CAAC;QACH,CAAC;IAAA,CACF,CAAC;IAEM,6BAA6B,GAAG,KAAK,EAAE,gBAA6C,EAAiB,EAAE,CAAC;QAC9G,0EAA0E;QAE1E,IAAI,CAAC;YACH,iFAAiF;YACjF,oHAAoH;YACpH,MAAM,IAAI,CAAC,wBAAwB,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;YACpE,MAAM,IAAI,CAAC,kCAAkC,CAAC,gBAAgB,CAAC,CAAC;QAClE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,mGAAmG;YACnG,0EAA0E;YAC1E,IAAI,CAAC,yBAAyB,CAAC,CAAU,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4DAA4D,EAAE,EAAE,EAAE,CAAU,CAAC,CAAC;YAClG,CAAC;QACH,CAAC;IAAA,CACF,CAAC;IAEM,wBAAwB,GAAG,KAAK,EAAE,IAAY,EAAiB,EAAE,CAAC;QACxE,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACjG,MAAM,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAAA,CACrD,CAAC;IAEM,MAAM,GAAG,KAAK,IAAmB,EAAE,CAAC;QAC1C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;IAAA,CAC7B,CAAC;IAEM,eAAe,GAAG,CAAC,IAAkD,EAAQ,EAAE,CAAC;QACtF,MAAM,EAAC,IAAI,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAC,GAAG,IAAI,CAAC;QACzD,MAAM,qBAAqB,GAAI,MAAsB,CAAC,qBAAqB,CAAC;QAC5E,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,EAAE;YACrC,IAAI;YACJ,WAAW;YACX,cAAc,EAAE,kBAAkB,CAAC,cAAc,CAAC;YAClD,qBAAqB,EAAE,qBAAqB,IAAI,UAAU;SAC3D,CAAC,CAAC;QACH,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,IAAI,EAAE;YACpC,MAAM,EAAE,WAAW;YACnB,cAAc;YACd,qBAAqB,EAAE,4BAA4B;SACpD,CAAC,CAAC;IAAA,CACJ,CAAC;IAEM,kBAAkB,GAAG,CAAC,IAAqD,EAAQ,EAAE,CAAC;QAC5F,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAAA,CAC/C,CAAC;IAEM,yBAAyB,GAAG,CAAC,KAAa,EAAQ,EAAE,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAAA,CACtC,CAAC;IAEM,oBAAoB,GAAG,CAAC,QAA6B,EAAqB,EAAE,CAAC;QACnF,OAAO,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAAA,CACtG,CAAC;IAEM,qBAAqB,GAAG,CAAC,QAA6B,EAAqB,EAAE,CAAC;QACpF,OAAO,oBAAoB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAAA,CAChG,CAAC;IAEM,cAAc,GAAG,KAAK,IAAmB,EAAE,CAAC;QAClD,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IAAA,CACtD,CAAC;CACH"}
@@ -1,7 +1,7 @@
1
1
  import { ExtractSlotRootFns } from "./types.js";
2
2
  /**
3
3
  * Extract the slot and block root of a gossip message form serialized data.
4
- * Not applicable for all topics.
4
+ * Only do it for messages that have a slot and block root, and we want to await the block if the block root is not known.
5
5
  */
6
6
  export declare function createExtractBlockSlotRootFns(): ExtractSlotRootFns;
7
7
  //# sourceMappingURL=extractSlotRootFns.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extractSlotRootFns.d.ts","sourceRoot":"","sources":["../../../src/network/processor/extractSlotRootFns.ts"],"names":[],"mappings":"AAeA,OAAO,EAAC,kBAAkB,EAAC,MAAM,YAAY,CAAC;AAE9C;;;GAGG;AACH,wBAAgB,6BAA6B,IAAI,kBAAkB,CAuDlE"}
1
+ {"version":3,"file":"extractSlotRootFns.d.ts","sourceRoot":"","sources":["../../../src/network/processor/extractSlotRootFns.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAC,kBAAkB,EAAC,MAAM,YAAY,CAAC;AAE9C;;;GAGG;AACH,wBAAgB,6BAA6B,IAAI,kBAAkB,CA+ElE"}
@@ -1,9 +1,9 @@
1
- import { isForkPostGloas } from "@lodestar/params";
2
- import { getBeaconBlockRootFromDataColumnSidecarSerialized, getBeaconBlockRootFromExecutionPayloadEnvelopeSerialized, getBlockRootFromBeaconAttestationSerialized, getBlockRootFromSignedAggregateAndProofSerialized, getSlotFromBeaconAttestationSerialized, getSlotFromBlobSidecarSerialized, getSlotFromDataColumnSidecarSerialized, getSlotFromExecutionPayloadEnvelopeSerialized, getSlotFromSignedAggregateAndProofSerialized, getSlotFromSignedBeaconBlockSerialized, } from "../../util/sszBytes.js";
1
+ import { ForkSeq } from "@lodestar/params";
2
+ import { getBeaconBlockRootFromDataColumnSidecarSerialized, getBlockRootFromBeaconAttestationSerialized, getBlockRootFromPayloadAttestationMessageSerialized, getBlockRootFromSignedAggregateAndProofSerialized, getSlotFromBeaconAttestationSerialized, getSlotFromBlobSidecarSerialized, getSlotFromDataColumnSidecarSerialized, getSlotFromExecutionPayloadEnvelopeSerialized, getSlotFromPayloadAttestationMessageSerialized, getSlotFromSignedAggregateAndProofSerialized, getSlotFromSignedBeaconBlockSerialized, getSlotFromSignedExecutionPayloadBidSerialized, } from "../../util/sszBytes.js";
3
3
  import { GossipType } from "../gossip/index.js";
4
4
  /**
5
5
  * Extract the slot and block root of a gossip message form serialized data.
6
- * Not applicable for all topics.
6
+ * Only do it for messages that have a slot and block root, and we want to await the block if the block root is not known.
7
7
  */
8
8
  export function createExtractBlockSlotRootFns() {
9
9
  return {
@@ -42,17 +42,37 @@ export function createExtractBlockSlotRootFns() {
42
42
  if (slot === null) {
43
43
  return null;
44
44
  }
45
- const root = isForkPostGloas(fork) ? getBeaconBlockRootFromDataColumnSidecarSerialized(data) : null;
45
+ if (ForkSeq[fork] < ForkSeq.gloas) {
46
+ return { slot };
47
+ }
48
+ const root = getBeaconBlockRootFromDataColumnSidecarSerialized(data);
49
+ // null root means the message is invalid here and will be ignored in gossip handler later
50
+ // returning the slot here helps check the earliest permissable slot in the network processor
46
51
  return root !== null ? { slot, root } : { slot };
47
52
  },
48
53
  [GossipType.execution_payload]: (data) => {
49
54
  const slot = getSlotFromExecutionPayloadEnvelopeSerialized(data);
50
- const root = getBeaconBlockRootFromExecutionPayloadEnvelopeSerialized(data);
55
+ // Do not extract the root here; the network processor will extract it in the 2nd round to trigger block search without awaiting.
56
+ if (slot === null) {
57
+ return null;
58
+ }
59
+ return { slot };
60
+ },
61
+ [GossipType.payload_attestation_message]: (data) => {
62
+ const slot = getSlotFromPayloadAttestationMessageSerialized(data);
63
+ const root = getBlockRootFromPayloadAttestationMessageSerialized(data);
51
64
  if (slot === null || root === null) {
52
65
  return null;
53
66
  }
54
67
  return { slot, root };
55
68
  },
69
+ [GossipType.execution_payload_bid]: (data) => {
70
+ const slot = getSlotFromSignedExecutionPayloadBidSerialized(data);
71
+ if (slot === null) {
72
+ return null;
73
+ }
74
+ return { slot };
75
+ },
56
76
  };
57
77
  }
58
78
  //# sourceMappingURL=extractSlotRootFns.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extractSlotRootFns.js","sourceRoot":"","sources":["../../../src/network/processor/extractSlotRootFns.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extractSlotRootFns.js","sourceRoot":"","sources":["../../../src/network/processor/extractSlotRootFns.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gossipHandlers.d.ts","sourceRoot":"","sources":["../../../src/network/processor/gossipHandlers.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAkB,MAAM,kBAAkB,CAAC;AAW/D,OAAO,EACL,IAAI,EAGJ,IAAI,EAOL,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAW,MAAM,EAAgC,MAAM,iBAAiB,CAAC;AA2BhF,OAAO,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AAuBtD,OAAO,EAAC,OAAO,EAAC,MAAM,wBAAwB,CAAC;AAG/C,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAC7C,OAAO,EAGL,cAAc,EAGf,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAC,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AAEzC,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,wDAAwD;IACxD,sCAAsC,CAAC,EAAE,OAAO,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,eAAe,CAAC;IACxB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,IAAI,EAAE,YAAY,CAAC;CACpB,CAAC;AAKF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,iBAAiB,GAAG,cAAc,CAE1G;AAw4BD;;GAEG;AACH,wBAAsB,gCAAgC,CAAC,CAAC,EACtD,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,EAAE,QAAQ,EACjB,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,IAAI,GACd,OAAO,CAAC,CAAC,CAAC,CA6BZ"}
1
+ {"version":3,"file":"gossipHandlers.d.ts","sourceRoot":"","sources":["../../../src/network/processor/gossipHandlers.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,YAAY,EAAkB,MAAM,kBAAkB,CAAC;AAc/D,OAAO,EACL,IAAI,EAGJ,IAAI,EASL,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAW,MAAM,EAAgC,MAAM,iBAAiB,CAAC;AA2BhF,OAAO,EAAC,YAAY,EAAC,MAAM,0BAA0B,CAAC;AA0BtD,OAAO,EAAC,OAAO,EAAC,MAAM,wBAAwB,CAAC;AAG/C,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAC7C,OAAO,EAGL,cAAc,EAGf,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAC,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AAEzC,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AAEzD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,wDAAwD;IACxD,sCAAsC,CAAC,EAAE,OAAO,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,YAAY,CAAC;IACpB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,eAAe,CAAC;IACxB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,IAAI,EAAE,YAAY,CAAC;CACpB,CAAC;AAKF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,iBAAiB,GAAG,cAAc,CAE1G;AAkmCD;;GAEG;AACH,wBAAsB,gCAAgC,CAAC,CAAC,EACtD,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,EAAE,QAAQ,EACjB,KAAK,EAAE,YAAY,EACnB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,IAAI,GACd,OAAO,CAAC,CAAC,CAAC,CA6BZ"}
@@ -1,7 +1,8 @@
1
1
  import { routes } from "@lodestar/api";
2
- import { ForkSeq, NUMBER_OF_COLUMNS, isForkPostElectra, } from "@lodestar/params";
2
+ import { PayloadStatus } from "@lodestar/fork-choice";
3
+ import { ForkSeq, NUMBER_OF_COLUMNS, isForkPostElectra, isForkPostGloas, } from "@lodestar/params";
3
4
  import { computeTimeAtSlot } from "@lodestar/state-transition";
4
- import { ssz, sszTypesFor, } from "@lodestar/types";
5
+ import { isGloasDataColumnSidecar, ssz, sszTypesFor, } from "@lodestar/types";
5
6
  import { LogLevel, prettyBytes, toHex, toRootHex } from "@lodestar/utils";
6
7
  import { BlockInputSource, isBlockInputColumns, } from "../../chain/blocks/blockInput/index.js";
7
8
  import { PayloadEnvelopeInputSource } from "../../chain/blocks/payloadEnvelopeInput/index.js";
@@ -9,7 +10,7 @@ import { BlobSidecarValidation } from "../../chain/blocks/types.js";
9
10
  import { ChainEvent } from "../../chain/emitter.js";
10
11
  import { AttestationError, AttestationErrorCode, BlobSidecarErrorCode, BlobSidecarGossipError, BlockError, BlockErrorCode, BlockGossipError, DataColumnSidecarErrorCode, DataColumnSidecarGossipError, ExecutionPayloadEnvelopeError, ExecutionPayloadEnvelopeErrorCode, GossipAction, GossipActionError, SyncCommitteeError, } from "../../chain/errors/index.js";
11
12
  import { validateGossipBlobSidecar } from "../../chain/validation/blobSidecar.js";
12
- import { validateGossipDataColumnSidecar } from "../../chain/validation/dataColumnSidecar.js";
13
+ import { validateGossipFuluDataColumnSidecar, validateGossipGloasDataColumnSidecar, } from "../../chain/validation/dataColumnSidecar.js";
13
14
  import { validateGossipExecutionPayloadBid } from "../../chain/validation/executionPayloadBid.js";
14
15
  import { validateGossipExecutionPayloadEnvelope } from "../../chain/validation/executionPayloadEnvelope.js";
15
16
  import { toElectraSingleAttestation, validateGossipAggregateAndProof, validateGossipAttestationsSameAttData, validateGossipAttesterSlashing, validateGossipBlock, validateGossipBlsToExecutionChange, validateGossipProposerSlashing, validateGossipSyncCommittee, validateGossipVoluntaryExit, validateSyncCommitteeGossipContributionAndProof, } from "../../chain/validation/index.js";
@@ -18,7 +19,7 @@ import { validateLightClientOptimisticUpdate } from "../../chain/validation/ligh
18
19
  import { validateGossipPayloadAttestationMessage } from "../../chain/validation/payloadAttestationMessage.js";
19
20
  import { OpSource } from "../../chain/validatorMonitor.js";
20
21
  import { kzgCommitmentToVersionedHash } from "../../util/blobs.js";
21
- import { getBlobKzgCommitments } from "../../util/dataColumns.js";
22
+ import { getBlobKzgCommitments, getDataColumnSidecarSlot } from "../../util/dataColumns.js";
22
23
  import { GossipType, } from "../gossip/interface.js";
23
24
  import { sszDeserialize } from "../gossip/topic.js";
24
25
  import { PeerAction } from "../peers/index.js";
@@ -64,16 +65,19 @@ function getSequentialHandlers(modules, options) {
64
65
  recvToValLatency,
65
66
  };
66
67
  logger.debug("Received gossip block", { ...logCtx });
67
- let blockInput;
68
+ // optimistically add gossip block to the seen cache
69
+ // if validation fails, we will NOT forward this gossip block to peers
70
+ // - if PARENT_UNKNOWN error, blockInput will then be queued inside BlockInputSync. If the gossip block is really invalid, it will be pruned there
71
+ // - if other validator errors, blockInput will stay in the seen cache and will be pruned on finalization
72
+ const blockInput = chain.seenBlockInputCache.getByBlock({
73
+ block: signedBlock,
74
+ blockRootHex,
75
+ source: BlockInputSource.gossip,
76
+ seenTimestampSec,
77
+ peerIdStr,
78
+ });
68
79
  try {
69
80
  await validateGossipBlock(config, chain, signedBlock, fork);
70
- blockInput = chain.seenBlockInputCache.getByBlock({
71
- block: signedBlock,
72
- blockRootHex,
73
- source: BlockInputSource.gossip,
74
- seenTimestampSec,
75
- peerIdStr,
76
- });
77
81
  const blockInputMeta = blockInput.getLogMeta();
78
82
  const recvToValidation = Date.now() / 1000 - seenTimestampSec;
79
83
  const validationTime = recvToValidation - recvToValLatency;
@@ -85,9 +89,9 @@ function getSequentialHandlers(modules, options) {
85
89
  }
86
90
  catch (e) {
87
91
  if (e instanceof BlockGossipError) {
92
+ logger.debug("Gossip block has error", { slot, root: blockShortHex, code: e.type.code });
88
93
  if (e.type.code === BlockErrorCode.PARENT_UNKNOWN && blockInput) {
89
- logger.debug("Gossip block has error", { slot, root: blockShortHex, code: e.type.code });
90
- chain.emitter.emit(ChainEvent.unknownParent, {
94
+ chain.emitter.emit(ChainEvent.blockUnknownParent, {
91
95
  blockInput,
92
96
  peer: peerIdStr,
93
97
  source: BlockInputSource.gossip,
@@ -196,7 +200,7 @@ function getSequentialHandlers(modules, options) {
196
200
  const blockInput = chain.seenBlockInputCache.get(blockRootHex);
197
201
  if (blockInput && isBlockInputColumns(blockInput) && blockInput.hasColumn(dataColumnSidecar.index)) {
198
202
  metrics?.peerDas.dataColumnSidecarProcessingSkip.inc();
199
- logger.debug("Already have column sidecar, skipping processing", {
203
+ logger.debug("Already have column sidecar in BlockInput, skipping processing", {
200
204
  ...blockInput.getLogMeta(),
201
205
  index: dataColumnSidecar.index,
202
206
  });
@@ -209,9 +213,10 @@ function getSequentialHandlers(modules, options) {
209
213
  }
210
214
  const verificationTimer = metrics?.peerDas.dataColumnSidecarGossipVerificationTime.startTimer();
211
215
  const delaySec = chain.clock.secFromSlot(slot, seenTimestampSec);
216
+ const secFromSlot = chain.clock.secFromSlot(slot);
212
217
  const recvToValLatency = Date.now() / 1000 - seenTimestampSec;
213
218
  try {
214
- await validateGossipDataColumnSidecar(chain, dataColumnSidecar, gossipSubnet, metrics);
219
+ await validateGossipFuluDataColumnSidecar(chain, dataColumnSidecar, gossipSubnet, metrics);
215
220
  const blockInput = chain.seenBlockInputCache.getByColumn({
216
221
  blockRootHex,
217
222
  columnSidecar: dataColumnSidecar,
@@ -237,6 +242,7 @@ function getSequentialHandlers(modules, options) {
237
242
  currentSlot: chain.clock.currentSlot,
238
243
  peerId: peerIdStr,
239
244
  delaySec,
245
+ secFromSlot,
240
246
  gossipSubnet,
241
247
  columnIndex: dataColumnSidecar.index,
242
248
  recvToValLatency,
@@ -261,6 +267,108 @@ function getSequentialHandlers(modules, options) {
261
267
  verificationTimer?.();
262
268
  }
263
269
  }
270
+ async function validatePayloadDataColumn(dataColumnSidecar, gossipSubnet, peerIdStr, seenTimestampSec) {
271
+ metrics?.peerDas.dataColumnSidecarProcessingRequests.inc();
272
+ const slot = dataColumnSidecar.slot;
273
+ const blockRootHex = toRootHex(dataColumnSidecar.beaconBlockRoot);
274
+ // check to see if payload has already been processed and PayloadEnvelopeInput has been deleted (column received via reqresp or other means)
275
+ if (chain.forkChoice.getBlockHex(blockRootHex, PayloadStatus.FULL) !== null) {
276
+ metrics?.peerDas.dataColumnSidecarProcessingSkip.inc();
277
+ logger.debug("Already processed payload for column sidecar, skipping processing", {
278
+ slot,
279
+ blockRoot: blockRootHex,
280
+ index: dataColumnSidecar.index,
281
+ });
282
+ throw new DataColumnSidecarGossipError(GossipAction.IGNORE, {
283
+ code: DataColumnSidecarErrorCode.ALREADY_KNOWN,
284
+ columnIndex: dataColumnSidecar.index,
285
+ slot,
286
+ });
287
+ }
288
+ const payloadInput = chain.seenPayloadEnvelopeInputCache.get(blockRootHex);
289
+ if (!payloadInput) {
290
+ // This should not happen for gossip because the network processor queues `data_column_sidecar`
291
+ // until block import creates the corresponding PayloadEnvelopeInput.
292
+ throw new DataColumnSidecarGossipError(GossipAction.IGNORE, {
293
+ code: DataColumnSidecarErrorCode.PAYLOAD_ENVELOPE_INPUT_MISSING,
294
+ slot,
295
+ blockRoot: blockRootHex,
296
+ });
297
+ }
298
+ // [IGNORE] The sidecar is the first sidecar for the tuple
299
+ // (sidecar.beacon_block_root, sidecar.index) with valid kzg proof.
300
+ if (payloadInput.hasColumn(dataColumnSidecar.index)) {
301
+ metrics?.peerDas.dataColumnSidecarProcessingSkip.inc();
302
+ logger.debug("Already have column sidecar in PayloadEnvelopeInput, skipping processing", {
303
+ ...payloadInput.getLogMeta(),
304
+ index: dataColumnSidecar.index,
305
+ });
306
+ throw new DataColumnSidecarGossipError(GossipAction.IGNORE, {
307
+ code: DataColumnSidecarErrorCode.ALREADY_KNOWN,
308
+ columnIndex: dataColumnSidecar.index,
309
+ slot,
310
+ });
311
+ }
312
+ const verificationTimer = metrics?.peerDas.dataColumnSidecarGossipVerificationTime.startTimer();
313
+ const delaySec = chain.clock.secFromSlot(slot, seenTimestampSec);
314
+ const secFromSlot = chain.clock.secFromSlot(slot);
315
+ const recvToValLatency = Date.now() / 1000 - seenTimestampSec;
316
+ try {
317
+ await validateGossipGloasDataColumnSidecar(chain, payloadInput, dataColumnSidecar, gossipSubnet, metrics);
318
+ const addedColumn = payloadInput.addColumn({
319
+ columnSidecar: dataColumnSidecar,
320
+ source: PayloadEnvelopeInputSource.gossip,
321
+ seenTimestampSec,
322
+ peerIdStr,
323
+ });
324
+ if (!addedColumn) {
325
+ metrics?.peerDas.dataColumnSidecarProcessingSkip.inc();
326
+ logger.debug("Already have column sidecar in PayloadEnvelopeInput, skipping processing", {
327
+ ...payloadInput.getLogMeta(),
328
+ index: dataColumnSidecar.index,
329
+ });
330
+ throw new DataColumnSidecarGossipError(GossipAction.IGNORE, {
331
+ code: DataColumnSidecarErrorCode.ALREADY_KNOWN,
332
+ columnIndex: dataColumnSidecar.index,
333
+ slot,
334
+ });
335
+ }
336
+ const recvToValidation = Date.now() / 1000 - seenTimestampSec;
337
+ const validationTime = recvToValidation - recvToValLatency;
338
+ metrics?.peerDas.dataColumnSidecarProcessingSuccesses.inc();
339
+ metrics?.gossipBlob.recvToValidation.observe(recvToValidation);
340
+ metrics?.gossipBlob.validationTime.observe(validationTime);
341
+ if (chain.emitter.listenerCount(routes.events.EventType.dataColumnSidecar)) {
342
+ chain.emitter.emit(routes.events.EventType.dataColumnSidecar, {
343
+ blockRoot: blockRootHex,
344
+ slot,
345
+ index: dataColumnSidecar.index,
346
+ });
347
+ }
348
+ logger.debug("Received gossip dataColumn", {
349
+ ...payloadInput.getLogMeta(),
350
+ currentSlot: chain.clock.currentSlot,
351
+ peerId: peerIdStr,
352
+ delaySec,
353
+ secFromSlot,
354
+ gossipSubnet,
355
+ columnIndex: dataColumnSidecar.index,
356
+ recvToValLatency,
357
+ recvToValidation,
358
+ validationTime,
359
+ });
360
+ return payloadInput;
361
+ }
362
+ catch (e) {
363
+ if (e instanceof DataColumnSidecarGossipError && e.action === GossipAction.REJECT) {
364
+ chain.persistInvalidSszValue(sszTypesFor(payloadInput.forkName).DataColumnSidecar, dataColumnSidecar, `gossip_reject_slot_${slot}_index_${dataColumnSidecar.index}`);
365
+ }
366
+ throw e;
367
+ }
368
+ finally {
369
+ verificationTimer?.();
370
+ }
371
+ }
264
372
  function handleValidBeaconBlock(blockInput, peerIdStr, seenTimestampSec) {
265
373
  const signedBlock = blockInput.getBlock();
266
374
  const slot = signedBlock.message.slot;
@@ -382,65 +490,110 @@ function getSequentialHandlers(modules, options) {
382
490
  }
383
491
  },
384
492
  [GossipType.data_column_sidecar]: async ({ gossipData, topic, peerIdStr, seenTimestampSec, }) => {
493
+ const { fork } = topic.boundary;
385
494
  const { serializedData } = gossipData;
386
- // TODO GLOAS: handle gloas.DataColumnSidecar
387
495
  const dataColumnSidecar = sszDeserialize(topic, serializedData);
388
- const dataColumnSlot = dataColumnSidecar.signedBlockHeader.message.slot;
496
+ const dataColumnSlot = getDataColumnSidecarSlot(dataColumnSidecar);
389
497
  const index = dataColumnSidecar.index;
390
- if (config.getForkSeq(dataColumnSlot) < ForkSeq.fulu) {
391
- throw new GossipActionError(GossipAction.REJECT, { code: "PRE_FULU_BLOCK" });
392
- }
393
498
  const delaySec = chain.clock.secFromSlot(dataColumnSlot, seenTimestampSec);
394
- const blockInput = await validateBeaconDataColumn(dataColumnSidecar, serializedData, topic.subnet, peerIdStr, seenTimestampSec);
395
- chain.serializedCache.set(dataColumnSidecar, serializedData);
396
- const blockInputMeta = blockInput.getLogMeta();
397
- const { receivedColumns } = blockInputMeta;
398
- // it's not helpful to track every single column received
399
- // instead of that, track 1st, 8th, 16th 32th, 64th, and 128th column
400
- switch (receivedColumns) {
401
- case 1:
402
- case config.SAMPLES_PER_SLOT:
403
- case 2 * config.SAMPLES_PER_SLOT:
404
- case NUMBER_OF_COLUMNS / 4:
405
- case NUMBER_OF_COLUMNS / 2:
406
- case NUMBER_OF_COLUMNS:
407
- metrics?.dataColumns.elapsedTimeTillReceived.observe({ receivedOrder: receivedColumns }, delaySec);
408
- break;
409
- }
410
- if (!blockInput.hasComputedAllData()) {
411
- // immediately attempt fetch of data columns from execution engine
412
- chain.getBlobsTracker.triggerGetBlobs(blockInput);
413
- // if we've received at least half of the columns, trigger reconstruction of the rest
414
- if (blockInput.columnCount >= NUMBER_OF_COLUMNS / 2) {
415
- chain.columnReconstructionTracker.triggerColumnReconstruction(blockInput);
499
+ if (isForkPostGloas(fork)) {
500
+ if (!isGloasDataColumnSidecar(dataColumnSidecar)) {
501
+ throw new DataColumnSidecarGossipError(GossipAction.REJECT, {
502
+ code: DataColumnSidecarErrorCode.INCORRECT_TYPE,
503
+ slot: dataColumnSlot,
504
+ columnIndex: index,
505
+ fork,
506
+ });
416
507
  }
417
- }
418
- if (!blockInput.hasBlockAndAllData()) {
419
- const cutoffTimeMs = getCutoffTimeMs(chain, dataColumnSlot, BLOCK_AVAILABILITY_CUTOFF_MS);
420
- chain.logger.debug("Received gossip data column, waiting for full data availability", {
421
- msToWait: cutoffTimeMs,
422
- dataColumnIndex: index,
423
- ...blockInputMeta,
508
+ // After gloas, data columns are tracked in PayloadEnvelopeInput
509
+ const payloadInput = await validatePayloadDataColumn(dataColumnSidecar, topic.subnet, peerIdStr, seenTimestampSec);
510
+ chain.serializedCache.set(dataColumnSidecar, serializedData);
511
+ const payloadInputMeta = payloadInput.getLogMeta();
512
+ const { receivedColumns } = payloadInputMeta;
513
+ // it's not helpful to track every single column received
514
+ // instead of that, track 1st, 8th, 16th 32th, 64th, and 128th column
515
+ switch (receivedColumns) {
516
+ case 1:
517
+ case config.SAMPLES_PER_SLOT:
518
+ case 2 * config.SAMPLES_PER_SLOT:
519
+ case NUMBER_OF_COLUMNS / 4:
520
+ case NUMBER_OF_COLUMNS / 2:
521
+ case NUMBER_OF_COLUMNS:
522
+ metrics?.dataColumns.elapsedTimeTillReceived.observe({ receivedOrder: receivedColumns }, delaySec);
523
+ break;
524
+ }
525
+ if (!payloadInput.hasComputedAllData()) {
526
+ // if we've received at least half of the columns, trigger reconstruction of the rest
527
+ if (receivedColumns >= NUMBER_OF_COLUMNS / 2) {
528
+ chain.columnReconstructionTracker.triggerColumnReconstruction(payloadInput);
529
+ }
530
+ chain.logger.debug("Received gossip data column, payload envelope input not yet complete", {
531
+ dataColumnIndex: index,
532
+ ...payloadInputMeta,
533
+ });
534
+ }
535
+ chain.processExecutionPayload(payloadInput, { validSignature: true }).catch((e) => {
536
+ chain.logger.debug("Error processing execution payload from gossip data column", { slot: dataColumnSlot, root: payloadInput.blockRootHex }, e);
424
537
  });
425
- // do not await here to not delay gossip validation
426
- blockInput.waitForBlockAndAllData(cutoffTimeMs).catch((_e) => {
427
- chain.logger.debug("Waited for data after receiving gossip column. Cut-off reached so attempting to fetch remainder of BlockInput", {
538
+ }
539
+ else {
540
+ if (config.getForkSeq(dataColumnSlot) < ForkSeq.fulu) {
541
+ throw new GossipActionError(GossipAction.REJECT, { code: "PRE_FULU_BLOCK" });
542
+ }
543
+ if (isGloasDataColumnSidecar(dataColumnSidecar)) {
544
+ throw new DataColumnSidecarGossipError(GossipAction.REJECT, {
545
+ code: DataColumnSidecarErrorCode.INCORRECT_TYPE,
546
+ slot: dataColumnSlot,
547
+ columnIndex: index,
548
+ fork,
549
+ });
550
+ }
551
+ // Before gloas, data columns are tracked in BlockInput
552
+ const blockInput = await validateBeaconDataColumn(dataColumnSidecar, serializedData, topic.subnet, peerIdStr, seenTimestampSec);
553
+ chain.serializedCache.set(dataColumnSidecar, serializedData);
554
+ const blockInputMeta = blockInput.getLogMeta();
555
+ const { receivedColumns } = blockInputMeta;
556
+ // it's not helpful to track every single column received
557
+ // instead of that, track 1st, 8th, 16th 32th, 64th, and 128th column
558
+ switch (receivedColumns) {
559
+ case 1:
560
+ case config.SAMPLES_PER_SLOT:
561
+ case 2 * config.SAMPLES_PER_SLOT:
562
+ case NUMBER_OF_COLUMNS / 4:
563
+ case NUMBER_OF_COLUMNS / 2:
564
+ case NUMBER_OF_COLUMNS:
565
+ metrics?.dataColumns.elapsedTimeTillReceived.observe({ receivedOrder: receivedColumns }, delaySec);
566
+ break;
567
+ }
568
+ if (!blockInput.hasComputedAllData()) {
569
+ // immediately attempt fetch of data columns from execution engine
570
+ chain.getBlobsTracker.triggerGetBlobs(blockInput);
571
+ // if we've received at least half of the columns, trigger reconstruction of the rest
572
+ if (blockInput.columnCount >= NUMBER_OF_COLUMNS / 2) {
573
+ chain.columnReconstructionTracker.triggerColumnReconstruction(blockInput);
574
+ }
575
+ }
576
+ if (!blockInput.hasBlockAndAllData()) {
577
+ const cutoffTimeMs = getCutoffTimeMs(chain, dataColumnSlot, BLOCK_AVAILABILITY_CUTOFF_MS);
578
+ chain.logger.debug("Received gossip data column, waiting for full data availability", {
579
+ msToWait: cutoffTimeMs,
428
580
  dataColumnIndex: index,
429
581
  ...blockInputMeta,
430
582
  });
431
- chain.emitter.emit(ChainEvent.incompleteBlockInput, {
432
- blockInput,
433
- peer: peerIdStr,
434
- source: BlockInputSource.gossip,
583
+ // do not await here to not delay gossip validation
584
+ blockInput.waitForBlockAndAllData(cutoffTimeMs).catch((_e) => {
585
+ chain.logger.debug("Waited for data after receiving gossip column. Cut-off reached so attempting to fetch remainder of BlockInput", {
586
+ dataColumnIndex: index,
587
+ ...blockInputMeta,
588
+ });
589
+ chain.emitter.emit(ChainEvent.incompleteBlockInput, {
590
+ blockInput,
591
+ peer: peerIdStr,
592
+ source: BlockInputSource.gossip,
593
+ });
435
594
  });
436
- });
595
+ }
437
596
  }
438
- // TODO GLOAS: In Gloas, also add column to PayloadEnvelopeInput and notify the payload processor:
439
- // const payloadInput = chain.seenPayloadEnvelopeInput.get(blockRootHex);
440
- // if (payloadInput) {
441
- // payloadInput.addColumn({columnSidecar, source: BlockInputSource.gossip, seenTimestampSec, peerIdStr});
442
- // chain.processExecutionPayload(payloadInput, {validSignature: true});
443
- // }
444
597
  },
445
598
  [GossipType.beacon_aggregate_and_proof]: async ({ gossipData, topic, seenTimestampSec, }) => {
446
599
  const { serializedData } = gossipData;
@@ -586,8 +739,31 @@ function getSequentialHandlers(modules, options) {
586
739
  const { serializedData } = gossipData;
587
740
  const signedEnvelope = sszDeserialize(topic, serializedData);
588
741
  const envelope = signedEnvelope.message;
589
- // TODO GLOAS: handle BLOCK_ROOT_UNKNOWN error to trigger sync
590
- await validateGossipExecutionPayloadEnvelope(chain, signedEnvelope);
742
+ // TODO GLOAS: consider optimistically create PayloadEnvelopeInput here similar to how we do that for beacon_block
743
+ // so that UnknownBlockSync can handle backward sync
744
+ // the problem now is we cannot create a PayloadEnvelopeInput without the beacon block being known, we need at least the proposer index
745
+ // we can achieve that by looking into the EpochCache
746
+ try {
747
+ await validateGossipExecutionPayloadEnvelope(chain, signedEnvelope);
748
+ }
749
+ catch (e) {
750
+ if (e instanceof ExecutionPayloadEnvelopeError) {
751
+ const { slot, beaconBlockRoot } = signedEnvelope.message;
752
+ logger.debug("Gossip envelope has error", { slot, root: toRootHex(beaconBlockRoot), code: e.type.code });
753
+ if (e.type.code === ExecutionPayloadEnvelopeErrorCode.BLOCK_ROOT_UNKNOWN) {
754
+ // TODO GLOAS: UnknownBlockSync to handle this
755
+ chain.emitter.emit(ChainEvent.envelopeUnknownBlock, {
756
+ envelope: signedEnvelope,
757
+ peer: peerIdStr,
758
+ source: BlockInputSource.gossip,
759
+ });
760
+ }
761
+ if (e.action === GossipAction.REJECT) {
762
+ chain.persistInvalidSszValue(ssz.gloas.SignedExecutionPayloadEnvelope, signedEnvelope, `gossip_reject_slot_${slot}`);
763
+ }
764
+ }
765
+ throw e;
766
+ }
591
767
  const slot = envelope.slot;
592
768
  const delaySec = seenTimestampSec - computeTimeAtSlot(config, slot, chain.genesisTime);
593
769
  metrics?.gossipExecutionPayloadEnvelope.elapsedTimeTillReceived.observe({ source: OpSource.gossip }, delaySec);