@atomicfinance/types 3.6.0 → 4.0.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 (370) hide show
  1. package/.turbo/turbo-build.log +1 -0
  2. package/.turbo/turbo-test.log +0 -0
  3. package/.yalc/@node-dlc/messaging/.nyc_output/2cf48009-1094-4275-bb91-c164c932feb6.json +1 -0
  4. package/.yalc/@node-dlc/messaging/.nyc_output/processinfo/2cf48009-1094-4275-bb91-c164c932feb6.json +1 -0
  5. package/.yalc/@node-dlc/messaging/.nyc_output/processinfo/index.json +1 -0
  6. package/.yalc/@node-dlc/messaging/README.md +24 -0
  7. package/.yalc/@node-dlc/messaging/__tests__/_test-utils.ts +12 -0
  8. package/.yalc/@node-dlc/messaging/__tests__/chain/ChainManager.spec.ts +178 -0
  9. package/.yalc/@node-dlc/messaging/__tests__/compatibility/dlcspecs-compatibility.spec.ts +473 -0
  10. package/.yalc/@node-dlc/messaging/__tests__/compatibility/rust-dlc-cross-language.spec.ts +342 -0
  11. package/.yalc/@node-dlc/messaging/__tests__/compatibility/true-serialization-compatibility.spec.ts +611 -0
  12. package/.yalc/@node-dlc/messaging/__tests__/dlc_message_test.json +155 -0
  13. package/.yalc/@node-dlc/messaging/__tests__/irc/IrcMessage.spec.ts +94 -0
  14. package/.yalc/@node-dlc/messaging/__tests__/messages/AddressCache.spec.ts +79 -0
  15. package/.yalc/@node-dlc/messaging/__tests__/messages/BatchFundingGroup.spec.ts +72 -0
  16. package/.yalc/@node-dlc/messaging/__tests__/messages/CetAdaptorSignatures.spec.ts +57 -0
  17. package/.yalc/@node-dlc/messaging/__tests__/messages/ContractDescriptor.spec.ts +264 -0
  18. package/.yalc/@node-dlc/messaging/__tests__/messages/ContractInfo.spec.ts +419 -0
  19. package/.yalc/@node-dlc/messaging/__tests__/messages/DigitDecompositionEventDescriptor.spec.ts +59 -0
  20. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcAccept.spec.ts +242 -0
  21. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcCancel.spec.ts +42 -0
  22. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcClose.spec.ts +315 -0
  23. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcOffer.spec.ts +527 -0
  24. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcSign.spec.ts +118 -0
  25. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcTransactions.spec.ts +157 -0
  26. package/.yalc/@node-dlc/messaging/__tests__/messages/EnumEventDescriptor.spec.ts +50 -0
  27. package/.yalc/@node-dlc/messaging/__tests__/messages/EventDescriptor.spec.ts +93 -0
  28. package/.yalc/@node-dlc/messaging/__tests__/messages/FundingInput.spec.ts +84 -0
  29. package/.yalc/@node-dlc/messaging/__tests__/messages/FundingSignatures.spec.ts +83 -0
  30. package/.yalc/@node-dlc/messaging/__tests__/messages/NegotiationFields.spec.ts +328 -0
  31. package/.yalc/@node-dlc/messaging/__tests__/messages/NodeAnnouncementMessage.spec.ts +115 -0
  32. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleAnnouncement.spec.ts +415 -0
  33. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleAttestation.spec.ts +326 -0
  34. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleEvent.spec.ts +143 -0
  35. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleEventContainer.spec.ts +95 -0
  36. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleIdentifier.spec.ts +48 -0
  37. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleInfo.spec.ts +116 -0
  38. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderAccept.spec.ts +77 -0
  39. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderNegotiationFields.spec.ts +216 -0
  40. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderOffer.spec.ts +121 -0
  41. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderPositionInfo.spec.ts +75 -0
  42. package/.yalc/@node-dlc/messaging/__tests__/messages/PayoutCurvePiece.spec.ts +220 -0
  43. package/.yalc/@node-dlc/messaging/__tests__/messages/PayoutFunction.spec.ts +101 -0
  44. package/.yalc/@node-dlc/messaging/__tests__/messages/RoundingIntervals.spec.ts +75 -0
  45. package/.yalc/@node-dlc/messaging/__tests__/serialize/F64.spec.ts +260 -0
  46. package/.yalc/@node-dlc/messaging/__tests__/tsconfig.json +8 -0
  47. package/.yalc/@node-dlc/messaging/coverage/lcov-report/base.css +224 -0
  48. package/.yalc/@node-dlc/messaging/coverage/lcov-report/block-navigation.js +79 -0
  49. package/.yalc/@node-dlc/messaging/coverage/lcov-report/favicon.png +0 -0
  50. package/.yalc/@node-dlc/messaging/coverage/lcov-report/index.html +201 -0
  51. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/MessageType.ts.html +494 -0
  52. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/ChainManager.ts.html +1058 -0
  53. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/ChainMemoryStore.ts.html +182 -0
  54. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/index.html +126 -0
  55. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/domain/Address.ts.html +272 -0
  56. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/domain/index.html +111 -0
  57. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/index.html +141 -0
  58. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/index.ts.html +212 -0
  59. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/irc/IrcMessage.ts.html +563 -0
  60. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/irc/index.html +111 -0
  61. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/AddressCache.ts.html +302 -0
  62. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/BatchFundingGroup.ts.html +503 -0
  63. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/CetAdaptorSignatures.ts.html +347 -0
  64. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/CetAdaptorSignaturesV0.ts.html +347 -0
  65. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ContractDescriptor.ts.html +1040 -0
  66. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ContractInfo.ts.html +1382 -0
  67. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcAccept.ts.html +1865 -0
  68. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcCancel.ts.html +251 -0
  69. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcClose.ts.html +986 -0
  70. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcCloseMetadata.ts.html +443 -0
  71. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcIds.ts.html +281 -0
  72. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcInfo.ts.html +323 -0
  73. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcMessage.ts.html +341 -0
  74. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcOffer.ts.html +1895 -0
  75. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcSign.ts.html +1142 -0
  76. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcTransactions.ts.html +719 -0
  77. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/EventDescriptor.ts.html +947 -0
  78. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingInput.ts.html +728 -0
  79. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingSignatures.ts.html +374 -0
  80. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingSignaturesV0.ts.html +374 -0
  81. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/NegotiationFields.ts.html +836 -0
  82. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/NodeAnnouncementMessage.ts.html +515 -0
  83. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAnnouncement.ts.html +608 -0
  84. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAnnouncementV0.ts.html +605 -0
  85. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAttestation.ts.html +956 -0
  86. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAttestationV0.ts.html +770 -0
  87. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEvent.ts.html +830 -0
  88. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventContainer.ts.html +347 -0
  89. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventContainerV0.ts.html +347 -0
  90. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventV0.ts.html +827 -0
  91. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleIdentifier.ts.html +314 -0
  92. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleIdentifierV0.ts.html +314 -0
  93. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleInfo.ts.html +1637 -0
  94. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleInfoV0.ts.html +1631 -0
  95. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderAccept.ts.html +557 -0
  96. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderIrcInfo.ts.html +380 -0
  97. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderMetadata.ts.html +437 -0
  98. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderNegotiationFields.ts.html +551 -0
  99. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderOffer.ts.html +1337 -0
  100. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderPositionInfo.ts.html +590 -0
  101. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/PayoutCurvePiece.ts.html +1427 -0
  102. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/PayoutFunction.ts.html +800 -0
  103. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/RoundingIntervals.ts.html +461 -0
  104. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/RoundingIntervalsV0.ts.html +482 -0
  105. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ScriptWitnessV0.ts.html +269 -0
  106. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/index.html +636 -0
  107. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serde/SerdeUtils.ts.html +1394 -0
  108. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serde/index.html +111 -0
  109. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/F64.ts.html +1136 -0
  110. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/deserializeTlv.ts.html +125 -0
  111. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/getTlv.ts.html +143 -0
  112. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/index.html +141 -0
  113. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/util.ts.html +179 -0
  114. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/validation/index.html +111 -0
  115. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/validation/validate.ts.html +182 -0
  116. package/.yalc/@node-dlc/messaging/coverage/lcov-report/prettify.css +1 -0
  117. package/.yalc/@node-dlc/messaging/coverage/lcov-report/prettify.js +2 -0
  118. package/.yalc/@node-dlc/messaging/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  119. package/.yalc/@node-dlc/messaging/coverage/lcov-report/sorter.js +170 -0
  120. package/.yalc/@node-dlc/messaging/coverage/lcov.info +5394 -0
  121. package/.yalc/@node-dlc/messaging/dist/MessageType.d.ts +100 -0
  122. package/.yalc/@node-dlc/messaging/dist/MessageType.js +117 -0
  123. package/.yalc/@node-dlc/messaging/dist/MessageType.js.map +1 -0
  124. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.d.ts +50 -0
  125. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.js +211 -0
  126. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.js.map +1 -0
  127. package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.d.ts +14 -0
  128. package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.js +28 -0
  129. package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.js.map +1 -0
  130. package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.d.ts +11 -0
  131. package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.js +3 -0
  132. package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.js.map +1 -0
  133. package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.d.ts +48 -0
  134. package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.js +3 -0
  135. package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.js.map +1 -0
  136. package/.yalc/@node-dlc/messaging/dist/domain/Address.d.ts +24 -0
  137. package/.yalc/@node-dlc/messaging/dist/domain/Address.js +46 -0
  138. package/.yalc/@node-dlc/messaging/dist/domain/Address.js.map +1 -0
  139. package/.yalc/@node-dlc/messaging/dist/index.d.ts +44 -0
  140. package/.yalc/@node-dlc/messaging/dist/index.js +63 -0
  141. package/.yalc/@node-dlc/messaging/dist/index.js.map +1 -0
  142. package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.d.ts +43 -0
  143. package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.js +116 -0
  144. package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.js.map +1 -0
  145. package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.d.ts +15 -0
  146. package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.js +51 -0
  147. package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.js.map +1 -0
  148. package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.d.ts +61 -0
  149. package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.js +113 -0
  150. package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.js.map +1 -0
  151. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.d.ts +40 -0
  152. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.js +67 -0
  153. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.js.map +1 -0
  154. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.d.ts +122 -0
  155. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.js +222 -0
  156. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.js.map +1 -0
  157. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.d.ts +135 -0
  158. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.js +304 -0
  159. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.js.map +1 -0
  160. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.d.ts +145 -0
  161. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.js +428 -0
  162. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.js.map +1 -0
  163. package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.d.ts +31 -0
  164. package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.js +51 -0
  165. package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.js.map +1 -0
  166. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.d.ts +68 -0
  167. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.js +210 -0
  168. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.js.map +1 -0
  169. package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.d.ts +44 -0
  170. package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.js +74 -0
  171. package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.js.map +1 -0
  172. package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.d.ts +26 -0
  173. package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.js +58 -0
  174. package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.js.map +1 -0
  175. package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.d.ts +31 -0
  176. package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.js +61 -0
  177. package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.js.map +1 -0
  178. package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.d.ts +23 -0
  179. package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.js +54 -0
  180. package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.js.map +1 -0
  181. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.d.ts +131 -0
  182. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.js +418 -0
  183. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.js.map +1 -0
  184. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.d.ts +96 -0
  185. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.js +267 -0
  186. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.js.map +1 -0
  187. package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.d.ts +69 -0
  188. package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.js +149 -0
  189. package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.js.map +1 -0
  190. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.d.ts +106 -0
  191. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.js +209 -0
  192. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.js.map +1 -0
  193. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.d.ts +62 -0
  194. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.js +163 -0
  195. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.js.map +1 -0
  196. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.d.ts +36 -0
  197. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.js +78 -0
  198. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.js.map +1 -0
  199. package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.d.ts +6 -0
  200. package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.js +3 -0
  201. package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.js.map +1 -0
  202. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.d.ts +86 -0
  203. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.js +185 -0
  204. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.js.map +1 -0
  205. package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.d.ts +57 -0
  206. package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.js +127 -0
  207. package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.js.map +1 -0
  208. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.d.ts +76 -0
  209. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.js +131 -0
  210. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.js.map +1 -0
  211. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.d.ts +68 -0
  212. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.js +239 -0
  213. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.js.map +1 -0
  214. package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.d.ts +90 -0
  215. package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.js +189 -0
  216. package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.js.map +1 -0
  217. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.d.ts +32 -0
  218. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.js +67 -0
  219. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.js.map +1 -0
  220. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.d.ts +32 -0
  221. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.js +58 -0
  222. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.js.map +1 -0
  223. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.d.ts +32 -0
  224. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.js +58 -0
  225. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.js.map +1 -0
  226. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.d.ts +161 -0
  227. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.js +390 -0
  228. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.js.map +1 -0
  229. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.d.ts +161 -0
  230. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.js +387 -0
  231. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.js.map +1 -0
  232. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.d.ts +65 -0
  233. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.js +125 -0
  234. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.js.map +1 -0
  235. package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.d.ts +42 -0
  236. package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.js +74 -0
  237. package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.js.map +1 -0
  238. package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.d.ts +56 -0
  239. package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.js +87 -0
  240. package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.js.map +1 -0
  241. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.d.ts +69 -0
  242. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.js +114 -0
  243. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.js.map +1 -0
  244. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.d.ts +97 -0
  245. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.js +296 -0
  246. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.js.map +1 -0
  247. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.d.ts +50 -0
  248. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.js +125 -0
  249. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.js.map +1 -0
  250. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.d.ts +129 -0
  251. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.js +327 -0
  252. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.js.map +1 -0
  253. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.d.ts +66 -0
  254. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.js +170 -0
  255. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.js.map +1 -0
  256. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.d.ts +52 -0
  257. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.js +95 -0
  258. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.js.map +1 -0
  259. package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.d.ts +29 -0
  260. package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.js +50 -0
  261. package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.js.map +1 -0
  262. package/.yalc/@node-dlc/messaging/dist/messages/Tlv.d.ts +15 -0
  263. package/.yalc/@node-dlc/messaging/dist/messages/Tlv.js +32 -0
  264. package/.yalc/@node-dlc/messaging/dist/messages/Tlv.js.map +1 -0
  265. package/.yalc/@node-dlc/messaging/dist/serialize/F64.d.ts +154 -0
  266. package/.yalc/@node-dlc/messaging/dist/serialize/F64.js +307 -0
  267. package/.yalc/@node-dlc/messaging/dist/serialize/F64.js.map +1 -0
  268. package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.d.ts +9 -0
  269. package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.js +11 -0
  270. package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.js.map +1 -0
  271. package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.d.ts +4 -0
  272. package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.js +23 -0
  273. package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.js.map +1 -0
  274. package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.d.ts +8 -0
  275. package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.js +33 -0
  276. package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.js.map +1 -0
  277. package/.yalc/@node-dlc/messaging/dist/util.d.ts +13 -0
  278. package/.yalc/@node-dlc/messaging/dist/util.js +40 -0
  279. package/.yalc/@node-dlc/messaging/dist/util.js.map +1 -0
  280. package/.yalc/@node-dlc/messaging/dist/validation/validate.d.ts +4 -0
  281. package/.yalc/@node-dlc/messaging/dist/validation/validate.js +31 -0
  282. package/.yalc/@node-dlc/messaging/dist/validation/validate.js.map +1 -0
  283. package/.yalc/@node-dlc/messaging/lib/MessageType.ts +138 -0
  284. package/.yalc/@node-dlc/messaging/lib/chain/ChainManager.ts +326 -0
  285. package/.yalc/@node-dlc/messaging/lib/chain/ChainMemoryStore.ts +34 -0
  286. package/.yalc/@node-dlc/messaging/lib/chain/DlcStore.ts +11 -0
  287. package/.yalc/@node-dlc/messaging/lib/chain/IChainFilterChainClient.ts +57 -0
  288. package/.yalc/@node-dlc/messaging/lib/domain/Address.ts +64 -0
  289. package/.yalc/@node-dlc/messaging/lib/index.ts +44 -0
  290. package/.yalc/@node-dlc/messaging/lib/irc/IrcMessage.ts +161 -0
  291. package/.yalc/@node-dlc/messaging/lib/messages/AddressCache.ts +74 -0
  292. package/.yalc/@node-dlc/messaging/lib/messages/BatchFundingGroup.ts +141 -0
  293. package/.yalc/@node-dlc/messaging/lib/messages/CetAdaptorSignatures.ts +89 -0
  294. package/.yalc/@node-dlc/messaging/lib/messages/ContractDescriptor.ts +318 -0
  295. package/.yalc/@node-dlc/messaging/lib/messages/ContractInfo.ts +434 -0
  296. package/.yalc/@node-dlc/messaging/lib/messages/DlcAccept.ts +595 -0
  297. package/.yalc/@node-dlc/messaging/lib/messages/DlcCancel.ts +57 -0
  298. package/.yalc/@node-dlc/messaging/lib/messages/DlcClose.ts +302 -0
  299. package/.yalc/@node-dlc/messaging/lib/messages/DlcCloseMetadata.ts +121 -0
  300. package/.yalc/@node-dlc/messaging/lib/messages/DlcIds.ts +67 -0
  301. package/.yalc/@node-dlc/messaging/lib/messages/DlcInfo.ts +81 -0
  302. package/.yalc/@node-dlc/messaging/lib/messages/DlcMessage.ts +87 -0
  303. package/.yalc/@node-dlc/messaging/lib/messages/DlcOffer.ts +605 -0
  304. package/.yalc/@node-dlc/messaging/lib/messages/DlcSign.ts +354 -0
  305. package/.yalc/@node-dlc/messaging/lib/messages/DlcTransactions.ts +213 -0
  306. package/.yalc/@node-dlc/messaging/lib/messages/EventDescriptor.ts +289 -0
  307. package/.yalc/@node-dlc/messaging/lib/messages/FundingInput.ts +216 -0
  308. package/.yalc/@node-dlc/messaging/lib/messages/FundingSignatures.ts +98 -0
  309. package/.yalc/@node-dlc/messaging/lib/messages/IWireMessage.ts +6 -0
  310. package/.yalc/@node-dlc/messaging/lib/messages/NegotiationFields.ts +252 -0
  311. package/.yalc/@node-dlc/messaging/lib/messages/NodeAnnouncementMessage.ts +145 -0
  312. package/.yalc/@node-dlc/messaging/lib/messages/OracleAnnouncement.ts +176 -0
  313. package/.yalc/@node-dlc/messaging/lib/messages/OracleAttestation.ts +292 -0
  314. package/.yalc/@node-dlc/messaging/lib/messages/OracleEvent.ts +250 -0
  315. package/.yalc/@node-dlc/messaging/lib/messages/OracleEventContainer.ts +89 -0
  316. package/.yalc/@node-dlc/messaging/lib/messages/OracleIdentifier.ts +78 -0
  317. package/.yalc/@node-dlc/messaging/lib/messages/OracleInfo.ts +519 -0
  318. package/.yalc/@node-dlc/messaging/lib/messages/OrderAccept.ts +159 -0
  319. package/.yalc/@node-dlc/messaging/lib/messages/OrderIrcInfo.ts +100 -0
  320. package/.yalc/@node-dlc/messaging/lib/messages/OrderMetadata.ts +119 -0
  321. package/.yalc/@node-dlc/messaging/lib/messages/OrderNegotiationFields.ts +157 -0
  322. package/.yalc/@node-dlc/messaging/lib/messages/OrderOffer.ts +419 -0
  323. package/.yalc/@node-dlc/messaging/lib/messages/OrderPositionInfo.ts +170 -0
  324. package/.yalc/@node-dlc/messaging/lib/messages/PayoutCurvePiece.ts +449 -0
  325. package/.yalc/@node-dlc/messaging/lib/messages/PayoutFunction.ts +240 -0
  326. package/.yalc/@node-dlc/messaging/lib/messages/RoundingIntervals.ts +127 -0
  327. package/.yalc/@node-dlc/messaging/lib/messages/ScriptWitnessV0.ts +63 -0
  328. package/.yalc/@node-dlc/messaging/lib/messages/Tlv.ts +40 -0
  329. package/.yalc/@node-dlc/messaging/lib/serialize/F64.ts +352 -0
  330. package/.yalc/@node-dlc/messaging/lib/serialize/deserializeTlv.ts +15 -0
  331. package/.yalc/@node-dlc/messaging/lib/serialize/getTlv.ts +21 -0
  332. package/.yalc/@node-dlc/messaging/lib/serialize/readTlvs.ts +37 -0
  333. package/.yalc/@node-dlc/messaging/lib/util.ts +33 -0
  334. package/.yalc/@node-dlc/messaging/lib/validation/validate.ts +34 -0
  335. package/.yalc/@node-dlc/messaging/package.json +42 -0
  336. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_3_of_3_test.json +210 -0
  337. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_3_of_5_test.json +468 -0
  338. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_3_of_5_test.json +1517 -0
  339. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_5_of_5_test.json +545 -0
  340. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_with_diff_3_of_5_test.json +4761 -0
  341. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_with_diff_5_of_5_test.json +2169 -0
  342. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_single_oracle_test.json +164 -0
  343. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/single_oracle_numerical_hyperbola_test.json +502 -0
  344. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/single_oracle_numerical_test.json +262 -0
  345. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_five_oracle_numerical_with_diff_test.json +4382 -0
  346. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_three_oracle_numerical_test.json +324 -0
  347. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_three_oracle_numerical_with_diff_test.json +652 -0
  348. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/two_of_five_oracle_numerical_test.json +1138 -0
  349. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/two_of_five_oracle_numerical_with_diff_test.json +2222 -0
  350. package/.yalc/@node-dlc/messaging/test_vectors/oracle/external_oracle_announcements.json +0 -0
  351. package/.yalc/@node-dlc/messaging/test_vectors/oracle/oracle_message_test_vectors.json +115 -0
  352. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/accept_msg.json +1465 -0
  353. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_fee_test.json +12362 -0
  354. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_fee_test_scripts.json +57 -0
  355. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_test.json +2766 -0
  356. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_tx_test.json +2899 -0
  357. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/offer_msg.json +163 -0
  358. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/offer_msg_disjoint.json +352 -0
  359. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/segment_chunk_msg.json +12635 -0
  360. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/segment_start_msg.json +4022 -0
  361. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/sign_msg.json +383 -0
  362. package/.yalc/@node-dlc/messaging/tsconfig.json +7 -0
  363. package/.yalc/@node-dlc/messaging/yalc.sig +1 -0
  364. package/CHANGELOG.md +70 -0
  365. package/dist/dlc.d.ts +3 -3
  366. package/dist/models/Output.js.map +1 -1
  367. package/lib/dlc.ts +4 -14
  368. package/lib/models/Output.ts +4 -1
  369. package/package.json +4 -4
  370. package/yalc.lock +10 -0
@@ -0,0 +1,1637 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for lib/messages/OracleInfo.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../prettify.css" />
9
+ <link rel="stylesheet" href="../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../index.html">All files</a> / <a href="index.html">lib/messages</a> OracleInfo.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">55.62% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>94/169</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">40% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>26/65</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">61.76% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>21/34</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">56.02% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>93/166</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ </div>
58
+ <div class='status-line medium'></div>
59
+ <pre><table class="coverage">
60
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
61
+ <a name='L2'></a><a href='#L2'>2</a>
62
+ <a name='L3'></a><a href='#L3'>3</a>
63
+ <a name='L4'></a><a href='#L4'>4</a>
64
+ <a name='L5'></a><a href='#L5'>5</a>
65
+ <a name='L6'></a><a href='#L6'>6</a>
66
+ <a name='L7'></a><a href='#L7'>7</a>
67
+ <a name='L8'></a><a href='#L8'>8</a>
68
+ <a name='L9'></a><a href='#L9'>9</a>
69
+ <a name='L10'></a><a href='#L10'>10</a>
70
+ <a name='L11'></a><a href='#L11'>11</a>
71
+ <a name='L12'></a><a href='#L12'>12</a>
72
+ <a name='L13'></a><a href='#L13'>13</a>
73
+ <a name='L14'></a><a href='#L14'>14</a>
74
+ <a name='L15'></a><a href='#L15'>15</a>
75
+ <a name='L16'></a><a href='#L16'>16</a>
76
+ <a name='L17'></a><a href='#L17'>17</a>
77
+ <a name='L18'></a><a href='#L18'>18</a>
78
+ <a name='L19'></a><a href='#L19'>19</a>
79
+ <a name='L20'></a><a href='#L20'>20</a>
80
+ <a name='L21'></a><a href='#L21'>21</a>
81
+ <a name='L22'></a><a href='#L22'>22</a>
82
+ <a name='L23'></a><a href='#L23'>23</a>
83
+ <a name='L24'></a><a href='#L24'>24</a>
84
+ <a name='L25'></a><a href='#L25'>25</a>
85
+ <a name='L26'></a><a href='#L26'>26</a>
86
+ <a name='L27'></a><a href='#L27'>27</a>
87
+ <a name='L28'></a><a href='#L28'>28</a>
88
+ <a name='L29'></a><a href='#L29'>29</a>
89
+ <a name='L30'></a><a href='#L30'>30</a>
90
+ <a name='L31'></a><a href='#L31'>31</a>
91
+ <a name='L32'></a><a href='#L32'>32</a>
92
+ <a name='L33'></a><a href='#L33'>33</a>
93
+ <a name='L34'></a><a href='#L34'>34</a>
94
+ <a name='L35'></a><a href='#L35'>35</a>
95
+ <a name='L36'></a><a href='#L36'>36</a>
96
+ <a name='L37'></a><a href='#L37'>37</a>
97
+ <a name='L38'></a><a href='#L38'>38</a>
98
+ <a name='L39'></a><a href='#L39'>39</a>
99
+ <a name='L40'></a><a href='#L40'>40</a>
100
+ <a name='L41'></a><a href='#L41'>41</a>
101
+ <a name='L42'></a><a href='#L42'>42</a>
102
+ <a name='L43'></a><a href='#L43'>43</a>
103
+ <a name='L44'></a><a href='#L44'>44</a>
104
+ <a name='L45'></a><a href='#L45'>45</a>
105
+ <a name='L46'></a><a href='#L46'>46</a>
106
+ <a name='L47'></a><a href='#L47'>47</a>
107
+ <a name='L48'></a><a href='#L48'>48</a>
108
+ <a name='L49'></a><a href='#L49'>49</a>
109
+ <a name='L50'></a><a href='#L50'>50</a>
110
+ <a name='L51'></a><a href='#L51'>51</a>
111
+ <a name='L52'></a><a href='#L52'>52</a>
112
+ <a name='L53'></a><a href='#L53'>53</a>
113
+ <a name='L54'></a><a href='#L54'>54</a>
114
+ <a name='L55'></a><a href='#L55'>55</a>
115
+ <a name='L56'></a><a href='#L56'>56</a>
116
+ <a name='L57'></a><a href='#L57'>57</a>
117
+ <a name='L58'></a><a href='#L58'>58</a>
118
+ <a name='L59'></a><a href='#L59'>59</a>
119
+ <a name='L60'></a><a href='#L60'>60</a>
120
+ <a name='L61'></a><a href='#L61'>61</a>
121
+ <a name='L62'></a><a href='#L62'>62</a>
122
+ <a name='L63'></a><a href='#L63'>63</a>
123
+ <a name='L64'></a><a href='#L64'>64</a>
124
+ <a name='L65'></a><a href='#L65'>65</a>
125
+ <a name='L66'></a><a href='#L66'>66</a>
126
+ <a name='L67'></a><a href='#L67'>67</a>
127
+ <a name='L68'></a><a href='#L68'>68</a>
128
+ <a name='L69'></a><a href='#L69'>69</a>
129
+ <a name='L70'></a><a href='#L70'>70</a>
130
+ <a name='L71'></a><a href='#L71'>71</a>
131
+ <a name='L72'></a><a href='#L72'>72</a>
132
+ <a name='L73'></a><a href='#L73'>73</a>
133
+ <a name='L74'></a><a href='#L74'>74</a>
134
+ <a name='L75'></a><a href='#L75'>75</a>
135
+ <a name='L76'></a><a href='#L76'>76</a>
136
+ <a name='L77'></a><a href='#L77'>77</a>
137
+ <a name='L78'></a><a href='#L78'>78</a>
138
+ <a name='L79'></a><a href='#L79'>79</a>
139
+ <a name='L80'></a><a href='#L80'>80</a>
140
+ <a name='L81'></a><a href='#L81'>81</a>
141
+ <a name='L82'></a><a href='#L82'>82</a>
142
+ <a name='L83'></a><a href='#L83'>83</a>
143
+ <a name='L84'></a><a href='#L84'>84</a>
144
+ <a name='L85'></a><a href='#L85'>85</a>
145
+ <a name='L86'></a><a href='#L86'>86</a>
146
+ <a name='L87'></a><a href='#L87'>87</a>
147
+ <a name='L88'></a><a href='#L88'>88</a>
148
+ <a name='L89'></a><a href='#L89'>89</a>
149
+ <a name='L90'></a><a href='#L90'>90</a>
150
+ <a name='L91'></a><a href='#L91'>91</a>
151
+ <a name='L92'></a><a href='#L92'>92</a>
152
+ <a name='L93'></a><a href='#L93'>93</a>
153
+ <a name='L94'></a><a href='#L94'>94</a>
154
+ <a name='L95'></a><a href='#L95'>95</a>
155
+ <a name='L96'></a><a href='#L96'>96</a>
156
+ <a name='L97'></a><a href='#L97'>97</a>
157
+ <a name='L98'></a><a href='#L98'>98</a>
158
+ <a name='L99'></a><a href='#L99'>99</a>
159
+ <a name='L100'></a><a href='#L100'>100</a>
160
+ <a name='L101'></a><a href='#L101'>101</a>
161
+ <a name='L102'></a><a href='#L102'>102</a>
162
+ <a name='L103'></a><a href='#L103'>103</a>
163
+ <a name='L104'></a><a href='#L104'>104</a>
164
+ <a name='L105'></a><a href='#L105'>105</a>
165
+ <a name='L106'></a><a href='#L106'>106</a>
166
+ <a name='L107'></a><a href='#L107'>107</a>
167
+ <a name='L108'></a><a href='#L108'>108</a>
168
+ <a name='L109'></a><a href='#L109'>109</a>
169
+ <a name='L110'></a><a href='#L110'>110</a>
170
+ <a name='L111'></a><a href='#L111'>111</a>
171
+ <a name='L112'></a><a href='#L112'>112</a>
172
+ <a name='L113'></a><a href='#L113'>113</a>
173
+ <a name='L114'></a><a href='#L114'>114</a>
174
+ <a name='L115'></a><a href='#L115'>115</a>
175
+ <a name='L116'></a><a href='#L116'>116</a>
176
+ <a name='L117'></a><a href='#L117'>117</a>
177
+ <a name='L118'></a><a href='#L118'>118</a>
178
+ <a name='L119'></a><a href='#L119'>119</a>
179
+ <a name='L120'></a><a href='#L120'>120</a>
180
+ <a name='L121'></a><a href='#L121'>121</a>
181
+ <a name='L122'></a><a href='#L122'>122</a>
182
+ <a name='L123'></a><a href='#L123'>123</a>
183
+ <a name='L124'></a><a href='#L124'>124</a>
184
+ <a name='L125'></a><a href='#L125'>125</a>
185
+ <a name='L126'></a><a href='#L126'>126</a>
186
+ <a name='L127'></a><a href='#L127'>127</a>
187
+ <a name='L128'></a><a href='#L128'>128</a>
188
+ <a name='L129'></a><a href='#L129'>129</a>
189
+ <a name='L130'></a><a href='#L130'>130</a>
190
+ <a name='L131'></a><a href='#L131'>131</a>
191
+ <a name='L132'></a><a href='#L132'>132</a>
192
+ <a name='L133'></a><a href='#L133'>133</a>
193
+ <a name='L134'></a><a href='#L134'>134</a>
194
+ <a name='L135'></a><a href='#L135'>135</a>
195
+ <a name='L136'></a><a href='#L136'>136</a>
196
+ <a name='L137'></a><a href='#L137'>137</a>
197
+ <a name='L138'></a><a href='#L138'>138</a>
198
+ <a name='L139'></a><a href='#L139'>139</a>
199
+ <a name='L140'></a><a href='#L140'>140</a>
200
+ <a name='L141'></a><a href='#L141'>141</a>
201
+ <a name='L142'></a><a href='#L142'>142</a>
202
+ <a name='L143'></a><a href='#L143'>143</a>
203
+ <a name='L144'></a><a href='#L144'>144</a>
204
+ <a name='L145'></a><a href='#L145'>145</a>
205
+ <a name='L146'></a><a href='#L146'>146</a>
206
+ <a name='L147'></a><a href='#L147'>147</a>
207
+ <a name='L148'></a><a href='#L148'>148</a>
208
+ <a name='L149'></a><a href='#L149'>149</a>
209
+ <a name='L150'></a><a href='#L150'>150</a>
210
+ <a name='L151'></a><a href='#L151'>151</a>
211
+ <a name='L152'></a><a href='#L152'>152</a>
212
+ <a name='L153'></a><a href='#L153'>153</a>
213
+ <a name='L154'></a><a href='#L154'>154</a>
214
+ <a name='L155'></a><a href='#L155'>155</a>
215
+ <a name='L156'></a><a href='#L156'>156</a>
216
+ <a name='L157'></a><a href='#L157'>157</a>
217
+ <a name='L158'></a><a href='#L158'>158</a>
218
+ <a name='L159'></a><a href='#L159'>159</a>
219
+ <a name='L160'></a><a href='#L160'>160</a>
220
+ <a name='L161'></a><a href='#L161'>161</a>
221
+ <a name='L162'></a><a href='#L162'>162</a>
222
+ <a name='L163'></a><a href='#L163'>163</a>
223
+ <a name='L164'></a><a href='#L164'>164</a>
224
+ <a name='L165'></a><a href='#L165'>165</a>
225
+ <a name='L166'></a><a href='#L166'>166</a>
226
+ <a name='L167'></a><a href='#L167'>167</a>
227
+ <a name='L168'></a><a href='#L168'>168</a>
228
+ <a name='L169'></a><a href='#L169'>169</a>
229
+ <a name='L170'></a><a href='#L170'>170</a>
230
+ <a name='L171'></a><a href='#L171'>171</a>
231
+ <a name='L172'></a><a href='#L172'>172</a>
232
+ <a name='L173'></a><a href='#L173'>173</a>
233
+ <a name='L174'></a><a href='#L174'>174</a>
234
+ <a name='L175'></a><a href='#L175'>175</a>
235
+ <a name='L176'></a><a href='#L176'>176</a>
236
+ <a name='L177'></a><a href='#L177'>177</a>
237
+ <a name='L178'></a><a href='#L178'>178</a>
238
+ <a name='L179'></a><a href='#L179'>179</a>
239
+ <a name='L180'></a><a href='#L180'>180</a>
240
+ <a name='L181'></a><a href='#L181'>181</a>
241
+ <a name='L182'></a><a href='#L182'>182</a>
242
+ <a name='L183'></a><a href='#L183'>183</a>
243
+ <a name='L184'></a><a href='#L184'>184</a>
244
+ <a name='L185'></a><a href='#L185'>185</a>
245
+ <a name='L186'></a><a href='#L186'>186</a>
246
+ <a name='L187'></a><a href='#L187'>187</a>
247
+ <a name='L188'></a><a href='#L188'>188</a>
248
+ <a name='L189'></a><a href='#L189'>189</a>
249
+ <a name='L190'></a><a href='#L190'>190</a>
250
+ <a name='L191'></a><a href='#L191'>191</a>
251
+ <a name='L192'></a><a href='#L192'>192</a>
252
+ <a name='L193'></a><a href='#L193'>193</a>
253
+ <a name='L194'></a><a href='#L194'>194</a>
254
+ <a name='L195'></a><a href='#L195'>195</a>
255
+ <a name='L196'></a><a href='#L196'>196</a>
256
+ <a name='L197'></a><a href='#L197'>197</a>
257
+ <a name='L198'></a><a href='#L198'>198</a>
258
+ <a name='L199'></a><a href='#L199'>199</a>
259
+ <a name='L200'></a><a href='#L200'>200</a>
260
+ <a name='L201'></a><a href='#L201'>201</a>
261
+ <a name='L202'></a><a href='#L202'>202</a>
262
+ <a name='L203'></a><a href='#L203'>203</a>
263
+ <a name='L204'></a><a href='#L204'>204</a>
264
+ <a name='L205'></a><a href='#L205'>205</a>
265
+ <a name='L206'></a><a href='#L206'>206</a>
266
+ <a name='L207'></a><a href='#L207'>207</a>
267
+ <a name='L208'></a><a href='#L208'>208</a>
268
+ <a name='L209'></a><a href='#L209'>209</a>
269
+ <a name='L210'></a><a href='#L210'>210</a>
270
+ <a name='L211'></a><a href='#L211'>211</a>
271
+ <a name='L212'></a><a href='#L212'>212</a>
272
+ <a name='L213'></a><a href='#L213'>213</a>
273
+ <a name='L214'></a><a href='#L214'>214</a>
274
+ <a name='L215'></a><a href='#L215'>215</a>
275
+ <a name='L216'></a><a href='#L216'>216</a>
276
+ <a name='L217'></a><a href='#L217'>217</a>
277
+ <a name='L218'></a><a href='#L218'>218</a>
278
+ <a name='L219'></a><a href='#L219'>219</a>
279
+ <a name='L220'></a><a href='#L220'>220</a>
280
+ <a name='L221'></a><a href='#L221'>221</a>
281
+ <a name='L222'></a><a href='#L222'>222</a>
282
+ <a name='L223'></a><a href='#L223'>223</a>
283
+ <a name='L224'></a><a href='#L224'>224</a>
284
+ <a name='L225'></a><a href='#L225'>225</a>
285
+ <a name='L226'></a><a href='#L226'>226</a>
286
+ <a name='L227'></a><a href='#L227'>227</a>
287
+ <a name='L228'></a><a href='#L228'>228</a>
288
+ <a name='L229'></a><a href='#L229'>229</a>
289
+ <a name='L230'></a><a href='#L230'>230</a>
290
+ <a name='L231'></a><a href='#L231'>231</a>
291
+ <a name='L232'></a><a href='#L232'>232</a>
292
+ <a name='L233'></a><a href='#L233'>233</a>
293
+ <a name='L234'></a><a href='#L234'>234</a>
294
+ <a name='L235'></a><a href='#L235'>235</a>
295
+ <a name='L236'></a><a href='#L236'>236</a>
296
+ <a name='L237'></a><a href='#L237'>237</a>
297
+ <a name='L238'></a><a href='#L238'>238</a>
298
+ <a name='L239'></a><a href='#L239'>239</a>
299
+ <a name='L240'></a><a href='#L240'>240</a>
300
+ <a name='L241'></a><a href='#L241'>241</a>
301
+ <a name='L242'></a><a href='#L242'>242</a>
302
+ <a name='L243'></a><a href='#L243'>243</a>
303
+ <a name='L244'></a><a href='#L244'>244</a>
304
+ <a name='L245'></a><a href='#L245'>245</a>
305
+ <a name='L246'></a><a href='#L246'>246</a>
306
+ <a name='L247'></a><a href='#L247'>247</a>
307
+ <a name='L248'></a><a href='#L248'>248</a>
308
+ <a name='L249'></a><a href='#L249'>249</a>
309
+ <a name='L250'></a><a href='#L250'>250</a>
310
+ <a name='L251'></a><a href='#L251'>251</a>
311
+ <a name='L252'></a><a href='#L252'>252</a>
312
+ <a name='L253'></a><a href='#L253'>253</a>
313
+ <a name='L254'></a><a href='#L254'>254</a>
314
+ <a name='L255'></a><a href='#L255'>255</a>
315
+ <a name='L256'></a><a href='#L256'>256</a>
316
+ <a name='L257'></a><a href='#L257'>257</a>
317
+ <a name='L258'></a><a href='#L258'>258</a>
318
+ <a name='L259'></a><a href='#L259'>259</a>
319
+ <a name='L260'></a><a href='#L260'>260</a>
320
+ <a name='L261'></a><a href='#L261'>261</a>
321
+ <a name='L262'></a><a href='#L262'>262</a>
322
+ <a name='L263'></a><a href='#L263'>263</a>
323
+ <a name='L264'></a><a href='#L264'>264</a>
324
+ <a name='L265'></a><a href='#L265'>265</a>
325
+ <a name='L266'></a><a href='#L266'>266</a>
326
+ <a name='L267'></a><a href='#L267'>267</a>
327
+ <a name='L268'></a><a href='#L268'>268</a>
328
+ <a name='L269'></a><a href='#L269'>269</a>
329
+ <a name='L270'></a><a href='#L270'>270</a>
330
+ <a name='L271'></a><a href='#L271'>271</a>
331
+ <a name='L272'></a><a href='#L272'>272</a>
332
+ <a name='L273'></a><a href='#L273'>273</a>
333
+ <a name='L274'></a><a href='#L274'>274</a>
334
+ <a name='L275'></a><a href='#L275'>275</a>
335
+ <a name='L276'></a><a href='#L276'>276</a>
336
+ <a name='L277'></a><a href='#L277'>277</a>
337
+ <a name='L278'></a><a href='#L278'>278</a>
338
+ <a name='L279'></a><a href='#L279'>279</a>
339
+ <a name='L280'></a><a href='#L280'>280</a>
340
+ <a name='L281'></a><a href='#L281'>281</a>
341
+ <a name='L282'></a><a href='#L282'>282</a>
342
+ <a name='L283'></a><a href='#L283'>283</a>
343
+ <a name='L284'></a><a href='#L284'>284</a>
344
+ <a name='L285'></a><a href='#L285'>285</a>
345
+ <a name='L286'></a><a href='#L286'>286</a>
346
+ <a name='L287'></a><a href='#L287'>287</a>
347
+ <a name='L288'></a><a href='#L288'>288</a>
348
+ <a name='L289'></a><a href='#L289'>289</a>
349
+ <a name='L290'></a><a href='#L290'>290</a>
350
+ <a name='L291'></a><a href='#L291'>291</a>
351
+ <a name='L292'></a><a href='#L292'>292</a>
352
+ <a name='L293'></a><a href='#L293'>293</a>
353
+ <a name='L294'></a><a href='#L294'>294</a>
354
+ <a name='L295'></a><a href='#L295'>295</a>
355
+ <a name='L296'></a><a href='#L296'>296</a>
356
+ <a name='L297'></a><a href='#L297'>297</a>
357
+ <a name='L298'></a><a href='#L298'>298</a>
358
+ <a name='L299'></a><a href='#L299'>299</a>
359
+ <a name='L300'></a><a href='#L300'>300</a>
360
+ <a name='L301'></a><a href='#L301'>301</a>
361
+ <a name='L302'></a><a href='#L302'>302</a>
362
+ <a name='L303'></a><a href='#L303'>303</a>
363
+ <a name='L304'></a><a href='#L304'>304</a>
364
+ <a name='L305'></a><a href='#L305'>305</a>
365
+ <a name='L306'></a><a href='#L306'>306</a>
366
+ <a name='L307'></a><a href='#L307'>307</a>
367
+ <a name='L308'></a><a href='#L308'>308</a>
368
+ <a name='L309'></a><a href='#L309'>309</a>
369
+ <a name='L310'></a><a href='#L310'>310</a>
370
+ <a name='L311'></a><a href='#L311'>311</a>
371
+ <a name='L312'></a><a href='#L312'>312</a>
372
+ <a name='L313'></a><a href='#L313'>313</a>
373
+ <a name='L314'></a><a href='#L314'>314</a>
374
+ <a name='L315'></a><a href='#L315'>315</a>
375
+ <a name='L316'></a><a href='#L316'>316</a>
376
+ <a name='L317'></a><a href='#L317'>317</a>
377
+ <a name='L318'></a><a href='#L318'>318</a>
378
+ <a name='L319'></a><a href='#L319'>319</a>
379
+ <a name='L320'></a><a href='#L320'>320</a>
380
+ <a name='L321'></a><a href='#L321'>321</a>
381
+ <a name='L322'></a><a href='#L322'>322</a>
382
+ <a name='L323'></a><a href='#L323'>323</a>
383
+ <a name='L324'></a><a href='#L324'>324</a>
384
+ <a name='L325'></a><a href='#L325'>325</a>
385
+ <a name='L326'></a><a href='#L326'>326</a>
386
+ <a name='L327'></a><a href='#L327'>327</a>
387
+ <a name='L328'></a><a href='#L328'>328</a>
388
+ <a name='L329'></a><a href='#L329'>329</a>
389
+ <a name='L330'></a><a href='#L330'>330</a>
390
+ <a name='L331'></a><a href='#L331'>331</a>
391
+ <a name='L332'></a><a href='#L332'>332</a>
392
+ <a name='L333'></a><a href='#L333'>333</a>
393
+ <a name='L334'></a><a href='#L334'>334</a>
394
+ <a name='L335'></a><a href='#L335'>335</a>
395
+ <a name='L336'></a><a href='#L336'>336</a>
396
+ <a name='L337'></a><a href='#L337'>337</a>
397
+ <a name='L338'></a><a href='#L338'>338</a>
398
+ <a name='L339'></a><a href='#L339'>339</a>
399
+ <a name='L340'></a><a href='#L340'>340</a>
400
+ <a name='L341'></a><a href='#L341'>341</a>
401
+ <a name='L342'></a><a href='#L342'>342</a>
402
+ <a name='L343'></a><a href='#L343'>343</a>
403
+ <a name='L344'></a><a href='#L344'>344</a>
404
+ <a name='L345'></a><a href='#L345'>345</a>
405
+ <a name='L346'></a><a href='#L346'>346</a>
406
+ <a name='L347'></a><a href='#L347'>347</a>
407
+ <a name='L348'></a><a href='#L348'>348</a>
408
+ <a name='L349'></a><a href='#L349'>349</a>
409
+ <a name='L350'></a><a href='#L350'>350</a>
410
+ <a name='L351'></a><a href='#L351'>351</a>
411
+ <a name='L352'></a><a href='#L352'>352</a>
412
+ <a name='L353'></a><a href='#L353'>353</a>
413
+ <a name='L354'></a><a href='#L354'>354</a>
414
+ <a name='L355'></a><a href='#L355'>355</a>
415
+ <a name='L356'></a><a href='#L356'>356</a>
416
+ <a name='L357'></a><a href='#L357'>357</a>
417
+ <a name='L358'></a><a href='#L358'>358</a>
418
+ <a name='L359'></a><a href='#L359'>359</a>
419
+ <a name='L360'></a><a href='#L360'>360</a>
420
+ <a name='L361'></a><a href='#L361'>361</a>
421
+ <a name='L362'></a><a href='#L362'>362</a>
422
+ <a name='L363'></a><a href='#L363'>363</a>
423
+ <a name='L364'></a><a href='#L364'>364</a>
424
+ <a name='L365'></a><a href='#L365'>365</a>
425
+ <a name='L366'></a><a href='#L366'>366</a>
426
+ <a name='L367'></a><a href='#L367'>367</a>
427
+ <a name='L368'></a><a href='#L368'>368</a>
428
+ <a name='L369'></a><a href='#L369'>369</a>
429
+ <a name='L370'></a><a href='#L370'>370</a>
430
+ <a name='L371'></a><a href='#L371'>371</a>
431
+ <a name='L372'></a><a href='#L372'>372</a>
432
+ <a name='L373'></a><a href='#L373'>373</a>
433
+ <a name='L374'></a><a href='#L374'>374</a>
434
+ <a name='L375'></a><a href='#L375'>375</a>
435
+ <a name='L376'></a><a href='#L376'>376</a>
436
+ <a name='L377'></a><a href='#L377'>377</a>
437
+ <a name='L378'></a><a href='#L378'>378</a>
438
+ <a name='L379'></a><a href='#L379'>379</a>
439
+ <a name='L380'></a><a href='#L380'>380</a>
440
+ <a name='L381'></a><a href='#L381'>381</a>
441
+ <a name='L382'></a><a href='#L382'>382</a>
442
+ <a name='L383'></a><a href='#L383'>383</a>
443
+ <a name='L384'></a><a href='#L384'>384</a>
444
+ <a name='L385'></a><a href='#L385'>385</a>
445
+ <a name='L386'></a><a href='#L386'>386</a>
446
+ <a name='L387'></a><a href='#L387'>387</a>
447
+ <a name='L388'></a><a href='#L388'>388</a>
448
+ <a name='L389'></a><a href='#L389'>389</a>
449
+ <a name='L390'></a><a href='#L390'>390</a>
450
+ <a name='L391'></a><a href='#L391'>391</a>
451
+ <a name='L392'></a><a href='#L392'>392</a>
452
+ <a name='L393'></a><a href='#L393'>393</a>
453
+ <a name='L394'></a><a href='#L394'>394</a>
454
+ <a name='L395'></a><a href='#L395'>395</a>
455
+ <a name='L396'></a><a href='#L396'>396</a>
456
+ <a name='L397'></a><a href='#L397'>397</a>
457
+ <a name='L398'></a><a href='#L398'>398</a>
458
+ <a name='L399'></a><a href='#L399'>399</a>
459
+ <a name='L400'></a><a href='#L400'>400</a>
460
+ <a name='L401'></a><a href='#L401'>401</a>
461
+ <a name='L402'></a><a href='#L402'>402</a>
462
+ <a name='L403'></a><a href='#L403'>403</a>
463
+ <a name='L404'></a><a href='#L404'>404</a>
464
+ <a name='L405'></a><a href='#L405'>405</a>
465
+ <a name='L406'></a><a href='#L406'>406</a>
466
+ <a name='L407'></a><a href='#L407'>407</a>
467
+ <a name='L408'></a><a href='#L408'>408</a>
468
+ <a name='L409'></a><a href='#L409'>409</a>
469
+ <a name='L410'></a><a href='#L410'>410</a>
470
+ <a name='L411'></a><a href='#L411'>411</a>
471
+ <a name='L412'></a><a href='#L412'>412</a>
472
+ <a name='L413'></a><a href='#L413'>413</a>
473
+ <a name='L414'></a><a href='#L414'>414</a>
474
+ <a name='L415'></a><a href='#L415'>415</a>
475
+ <a name='L416'></a><a href='#L416'>416</a>
476
+ <a name='L417'></a><a href='#L417'>417</a>
477
+ <a name='L418'></a><a href='#L418'>418</a>
478
+ <a name='L419'></a><a href='#L419'>419</a>
479
+ <a name='L420'></a><a href='#L420'>420</a>
480
+ <a name='L421'></a><a href='#L421'>421</a>
481
+ <a name='L422'></a><a href='#L422'>422</a>
482
+ <a name='L423'></a><a href='#L423'>423</a>
483
+ <a name='L424'></a><a href='#L424'>424</a>
484
+ <a name='L425'></a><a href='#L425'>425</a>
485
+ <a name='L426'></a><a href='#L426'>426</a>
486
+ <a name='L427'></a><a href='#L427'>427</a>
487
+ <a name='L428'></a><a href='#L428'>428</a>
488
+ <a name='L429'></a><a href='#L429'>429</a>
489
+ <a name='L430'></a><a href='#L430'>430</a>
490
+ <a name='L431'></a><a href='#L431'>431</a>
491
+ <a name='L432'></a><a href='#L432'>432</a>
492
+ <a name='L433'></a><a href='#L433'>433</a>
493
+ <a name='L434'></a><a href='#L434'>434</a>
494
+ <a name='L435'></a><a href='#L435'>435</a>
495
+ <a name='L436'></a><a href='#L436'>436</a>
496
+ <a name='L437'></a><a href='#L437'>437</a>
497
+ <a name='L438'></a><a href='#L438'>438</a>
498
+ <a name='L439'></a><a href='#L439'>439</a>
499
+ <a name='L440'></a><a href='#L440'>440</a>
500
+ <a name='L441'></a><a href='#L441'>441</a>
501
+ <a name='L442'></a><a href='#L442'>442</a>
502
+ <a name='L443'></a><a href='#L443'>443</a>
503
+ <a name='L444'></a><a href='#L444'>444</a>
504
+ <a name='L445'></a><a href='#L445'>445</a>
505
+ <a name='L446'></a><a href='#L446'>446</a>
506
+ <a name='L447'></a><a href='#L447'>447</a>
507
+ <a name='L448'></a><a href='#L448'>448</a>
508
+ <a name='L449'></a><a href='#L449'>449</a>
509
+ <a name='L450'></a><a href='#L450'>450</a>
510
+ <a name='L451'></a><a href='#L451'>451</a>
511
+ <a name='L452'></a><a href='#L452'>452</a>
512
+ <a name='L453'></a><a href='#L453'>453</a>
513
+ <a name='L454'></a><a href='#L454'>454</a>
514
+ <a name='L455'></a><a href='#L455'>455</a>
515
+ <a name='L456'></a><a href='#L456'>456</a>
516
+ <a name='L457'></a><a href='#L457'>457</a>
517
+ <a name='L458'></a><a href='#L458'>458</a>
518
+ <a name='L459'></a><a href='#L459'>459</a>
519
+ <a name='L460'></a><a href='#L460'>460</a>
520
+ <a name='L461'></a><a href='#L461'>461</a>
521
+ <a name='L462'></a><a href='#L462'>462</a>
522
+ <a name='L463'></a><a href='#L463'>463</a>
523
+ <a name='L464'></a><a href='#L464'>464</a>
524
+ <a name='L465'></a><a href='#L465'>465</a>
525
+ <a name='L466'></a><a href='#L466'>466</a>
526
+ <a name='L467'></a><a href='#L467'>467</a>
527
+ <a name='L468'></a><a href='#L468'>468</a>
528
+ <a name='L469'></a><a href='#L469'>469</a>
529
+ <a name='L470'></a><a href='#L470'>470</a>
530
+ <a name='L471'></a><a href='#L471'>471</a>
531
+ <a name='L472'></a><a href='#L472'>472</a>
532
+ <a name='L473'></a><a href='#L473'>473</a>
533
+ <a name='L474'></a><a href='#L474'>474</a>
534
+ <a name='L475'></a><a href='#L475'>475</a>
535
+ <a name='L476'></a><a href='#L476'>476</a>
536
+ <a name='L477'></a><a href='#L477'>477</a>
537
+ <a name='L478'></a><a href='#L478'>478</a>
538
+ <a name='L479'></a><a href='#L479'>479</a>
539
+ <a name='L480'></a><a href='#L480'>480</a>
540
+ <a name='L481'></a><a href='#L481'>481</a>
541
+ <a name='L482'></a><a href='#L482'>482</a>
542
+ <a name='L483'></a><a href='#L483'>483</a>
543
+ <a name='L484'></a><a href='#L484'>484</a>
544
+ <a name='L485'></a><a href='#L485'>485</a>
545
+ <a name='L486'></a><a href='#L486'>486</a>
546
+ <a name='L487'></a><a href='#L487'>487</a>
547
+ <a name='L488'></a><a href='#L488'>488</a>
548
+ <a name='L489'></a><a href='#L489'>489</a>
549
+ <a name='L490'></a><a href='#L490'>490</a>
550
+ <a name='L491'></a><a href='#L491'>491</a>
551
+ <a name='L492'></a><a href='#L492'>492</a>
552
+ <a name='L493'></a><a href='#L493'>493</a>
553
+ <a name='L494'></a><a href='#L494'>494</a>
554
+ <a name='L495'></a><a href='#L495'>495</a>
555
+ <a name='L496'></a><a href='#L496'>496</a>
556
+ <a name='L497'></a><a href='#L497'>497</a>
557
+ <a name='L498'></a><a href='#L498'>498</a>
558
+ <a name='L499'></a><a href='#L499'>499</a>
559
+ <a name='L500'></a><a href='#L500'>500</a>
560
+ <a name='L501'></a><a href='#L501'>501</a>
561
+ <a name='L502'></a><a href='#L502'>502</a>
562
+ <a name='L503'></a><a href='#L503'>503</a>
563
+ <a name='L504'></a><a href='#L504'>504</a>
564
+ <a name='L505'></a><a href='#L505'>505</a>
565
+ <a name='L506'></a><a href='#L506'>506</a>
566
+ <a name='L507'></a><a href='#L507'>507</a>
567
+ <a name='L508'></a><a href='#L508'>508</a>
568
+ <a name='L509'></a><a href='#L509'>509</a>
569
+ <a name='L510'></a><a href='#L510'>510</a>
570
+ <a name='L511'></a><a href='#L511'>511</a>
571
+ <a name='L512'></a><a href='#L512'>512</a>
572
+ <a name='L513'></a><a href='#L513'>513</a>
573
+ <a name='L514'></a><a href='#L514'>514</a>
574
+ <a name='L515'></a><a href='#L515'>515</a>
575
+ <a name='L516'></a><a href='#L516'>516</a>
576
+ <a name='L517'></a><a href='#L517'>517</a>
577
+ <a name='L518'></a><a href='#L518'>518</a>
578
+ <a name='L519'></a><a href='#L519'>519</a>
579
+ <a name='L520'></a><a href='#L520'>520</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
580
+ <span class="cline-any cline-neutral">&nbsp;</span>
581
+ <span class="cline-any cline-yes">1x</span>
582
+ <span class="cline-any cline-yes">1x</span>
583
+ <span class="cline-any cline-neutral">&nbsp;</span>
584
+ <span class="cline-any cline-yes">1x</span>
585
+ <span class="cline-any cline-neutral">&nbsp;</span>
586
+ <span class="cline-any cline-neutral">&nbsp;</span>
587
+ <span class="cline-any cline-neutral">&nbsp;</span>
588
+ <span class="cline-any cline-neutral">&nbsp;</span>
589
+ <span class="cline-any cline-neutral">&nbsp;</span>
590
+ <span class="cline-any cline-neutral">&nbsp;</span>
591
+ <span class="cline-any cline-neutral">&nbsp;</span>
592
+ <span class="cline-any cline-neutral">&nbsp;</span>
593
+ <span class="cline-any cline-yes">1x</span>
594
+ <span class="cline-any cline-yes">1x</span>
595
+ <span class="cline-any cline-neutral">&nbsp;</span>
596
+ <span class="cline-any cline-neutral">&nbsp;</span>
597
+ <span class="cline-any cline-neutral">&nbsp;</span>
598
+ <span class="cline-any cline-neutral">&nbsp;</span>
599
+ <span class="cline-any cline-neutral">&nbsp;</span>
600
+ <span class="cline-any cline-neutral">&nbsp;</span>
601
+ <span class="cline-any cline-neutral">&nbsp;</span>
602
+ <span class="cline-any cline-yes">10x</span>
603
+ <span class="cline-any cline-yes">10x</span>
604
+ <span class="cline-any cline-yes">10x</span>
605
+ <span class="cline-any cline-yes">10x</span>
606
+ <span class="cline-any cline-neutral">&nbsp;</span>
607
+ <span class="cline-any cline-yes">10x</span>
608
+ <span class="cline-any cline-neutral">&nbsp;</span>
609
+ <span class="cline-any cline-neutral">&nbsp;</span>
610
+ <span class="cline-any cline-neutral">&nbsp;</span>
611
+ <span class="cline-any cline-neutral">&nbsp;</span>
612
+ <span class="cline-any cline-neutral">&nbsp;</span>
613
+ <span class="cline-any cline-neutral">&nbsp;</span>
614
+ <span class="cline-any cline-no">&nbsp;</span>
615
+ <span class="cline-any cline-no">&nbsp;</span>
616
+ <span class="cline-any cline-neutral">&nbsp;</span>
617
+ <span class="cline-any cline-no">&nbsp;</span>
618
+ <span class="cline-any cline-no">&nbsp;</span>
619
+ <span class="cline-any cline-no">&nbsp;</span>
620
+ <span class="cline-any cline-no">&nbsp;</span>
621
+ <span class="cline-any cline-no">&nbsp;</span>
622
+ <span class="cline-any cline-neutral">&nbsp;</span>
623
+ <span class="cline-any cline-no">&nbsp;</span>
624
+ <span class="cline-any cline-neutral">&nbsp;</span>
625
+ <span class="cline-any cline-neutral">&nbsp;</span>
626
+ <span class="cline-any cline-neutral">&nbsp;</span>
627
+ <span class="cline-any cline-neutral">&nbsp;</span>
628
+ <span class="cline-any cline-neutral">&nbsp;</span>
629
+ <span class="cline-any cline-neutral">&nbsp;</span>
630
+ <span class="cline-any cline-yes">15x</span>
631
+ <span class="cline-any cline-yes">15x</span>
632
+ <span class="cline-any cline-neutral">&nbsp;</span>
633
+ <span class="cline-any cline-neutral">&nbsp;</span>
634
+ <span class="cline-any cline-yes">15x</span>
635
+ <span class="cline-any cline-yes">15x</span>
636
+ <span class="cline-any cline-yes">15x</span>
637
+ <span class="cline-any cline-neutral">&nbsp;</span>
638
+ <span class="cline-any cline-yes">15x</span>
639
+ <span class="cline-any cline-neutral">&nbsp;</span>
640
+ <span class="cline-any cline-neutral">&nbsp;</span>
641
+ <span class="cline-any cline-yes">25x</span>
642
+ <span class="cline-any cline-neutral">&nbsp;</span>
643
+ <span class="cline-any cline-neutral">&nbsp;</span>
644
+ <span class="cline-any cline-neutral">&nbsp;</span>
645
+ <span class="cline-any cline-neutral">&nbsp;</span>
646
+ <span class="cline-any cline-neutral">&nbsp;</span>
647
+ <span class="cline-any cline-neutral">&nbsp;</span>
648
+ <span class="cline-any cline-neutral">&nbsp;</span>
649
+ <span class="cline-any cline-neutral">&nbsp;</span>
650
+ <span class="cline-any cline-neutral">&nbsp;</span>
651
+ <span class="cline-any cline-neutral">&nbsp;</span>
652
+ <span class="cline-any cline-neutral">&nbsp;</span>
653
+ <span class="cline-any cline-neutral">&nbsp;</span>
654
+ <span class="cline-any cline-no">&nbsp;</span>
655
+ <span class="cline-any cline-no">&nbsp;</span>
656
+ <span class="cline-any cline-neutral">&nbsp;</span>
657
+ <span class="cline-any cline-no">&nbsp;</span>
658
+ <span class="cline-any cline-no">&nbsp;</span>
659
+ <span class="cline-any cline-neutral">&nbsp;</span>
660
+ <span class="cline-any cline-no">&nbsp;</span>
661
+ <span class="cline-any cline-no">&nbsp;</span>
662
+ <span class="cline-any cline-neutral">&nbsp;</span>
663
+ <span class="cline-any cline-neutral">&nbsp;</span>
664
+ <span class="cline-any cline-neutral">&nbsp;</span>
665
+ <span class="cline-any cline-neutral">&nbsp;</span>
666
+ <span class="cline-any cline-yes">5x</span>
667
+ <span class="cline-any cline-neutral">&nbsp;</span>
668
+ <span class="cline-any cline-neutral">&nbsp;</span>
669
+ <span class="cline-any cline-neutral">&nbsp;</span>
670
+ <span class="cline-any cline-neutral">&nbsp;</span>
671
+ <span class="cline-any cline-neutral">&nbsp;</span>
672
+ <span class="cline-any cline-neutral">&nbsp;</span>
673
+ <span class="cline-any cline-neutral">&nbsp;</span>
674
+ <span class="cline-any cline-no">&nbsp;</span>
675
+ <span class="cline-any cline-no">&nbsp;</span>
676
+ <span class="cline-any cline-neutral">&nbsp;</span>
677
+ <span class="cline-any cline-no">&nbsp;</span>
678
+ <span class="cline-any cline-no">&nbsp;</span>
679
+ <span class="cline-any cline-no">&nbsp;</span>
680
+ <span class="cline-any cline-no">&nbsp;</span>
681
+ <span class="cline-any cline-neutral">&nbsp;</span>
682
+ <span class="cline-any cline-no">&nbsp;</span>
683
+ <span class="cline-any cline-no">&nbsp;</span>
684
+ <span class="cline-any cline-neutral">&nbsp;</span>
685
+ <span class="cline-any cline-no">&nbsp;</span>
686
+ <span class="cline-any cline-neutral">&nbsp;</span>
687
+ <span class="cline-any cline-neutral">&nbsp;</span>
688
+ <span class="cline-any cline-neutral">&nbsp;</span>
689
+ <span class="cline-any cline-neutral">&nbsp;</span>
690
+ <span class="cline-any cline-neutral">&nbsp;</span>
691
+ <span class="cline-any cline-neutral">&nbsp;</span>
692
+ <span class="cline-any cline-yes">41x</span>
693
+ <span class="cline-any cline-yes">41x</span>
694
+ <span class="cline-any cline-yes">41x</span>
695
+ <span class="cline-any cline-yes">41x</span>
696
+ <span class="cline-any cline-yes">41x</span>
697
+ <span class="cline-any cline-neutral">&nbsp;</span>
698
+ <span class="cline-any cline-neutral">&nbsp;</span>
699
+ <span class="cline-any cline-neutral">&nbsp;</span>
700
+ <span class="cline-any cline-neutral">&nbsp;</span>
701
+ <span class="cline-any cline-neutral">&nbsp;</span>
702
+ <span class="cline-any cline-neutral">&nbsp;</span>
703
+ <span class="cline-any cline-yes">1x</span>
704
+ <span class="cline-any cline-yes">1x</span>
705
+ <span class="cline-any cline-neutral">&nbsp;</span>
706
+ <span class="cline-any cline-neutral">&nbsp;</span>
707
+ <span class="cline-any cline-neutral">&nbsp;</span>
708
+ <span class="cline-any cline-neutral">&nbsp;</span>
709
+ <span class="cline-any cline-neutral">&nbsp;</span>
710
+ <span class="cline-any cline-neutral">&nbsp;</span>
711
+ <span class="cline-any cline-neutral">&nbsp;</span>
712
+ <span class="cline-any cline-yes">6x</span>
713
+ <span class="cline-any cline-neutral">&nbsp;</span>
714
+ <span class="cline-any cline-yes">6x</span>
715
+ <span class="cline-any cline-yes">6x</span>
716
+ <span class="cline-any cline-no">&nbsp;</span>
717
+ <span class="cline-any cline-neutral">&nbsp;</span>
718
+ <span class="cline-any cline-neutral">&nbsp;</span>
719
+ <span class="cline-any cline-neutral">&nbsp;</span>
720
+ <span class="cline-any cline-neutral">&nbsp;</span>
721
+ <span class="cline-any cline-neutral">&nbsp;</span>
722
+ <span class="cline-any cline-yes">6x</span>
723
+ <span class="cline-any cline-neutral">&nbsp;</span>
724
+ <span class="cline-any cline-yes">6x</span>
725
+ <span class="cline-any cline-neutral">&nbsp;</span>
726
+ <span class="cline-any cline-neutral">&nbsp;</span>
727
+ <span class="cline-any cline-neutral">&nbsp;</span>
728
+ <span class="cline-any cline-neutral">&nbsp;</span>
729
+ <span class="cline-any cline-neutral">&nbsp;</span>
730
+ <span class="cline-any cline-neutral">&nbsp;</span>
731
+ <span class="cline-any cline-yes">1x</span>
732
+ <span class="cline-any cline-yes">1x</span>
733
+ <span class="cline-any cline-neutral">&nbsp;</span>
734
+ <span class="cline-any cline-neutral">&nbsp;</span>
735
+ <span class="cline-any cline-yes">1x</span>
736
+ <span class="cline-any cline-yes">1x</span>
737
+ <span class="cline-any cline-neutral">&nbsp;</span>
738
+ <span class="cline-any cline-neutral">&nbsp;</span>
739
+ <span class="cline-any cline-yes">1x</span>
740
+ <span class="cline-any cline-neutral">&nbsp;</span>
741
+ <span class="cline-any cline-neutral">&nbsp;</span>
742
+ <span class="cline-any cline-neutral">&nbsp;</span>
743
+ <span class="cline-any cline-yes">1x</span>
744
+ <span class="cline-any cline-neutral">&nbsp;</span>
745
+ <span class="cline-any cline-neutral">&nbsp;</span>
746
+ <span class="cline-any cline-yes">70x</span>
747
+ <span class="cline-any cline-neutral">&nbsp;</span>
748
+ <span class="cline-any cline-neutral">&nbsp;</span>
749
+ <span class="cline-any cline-neutral">&nbsp;</span>
750
+ <span class="cline-any cline-neutral">&nbsp;</span>
751
+ <span class="cline-any cline-neutral">&nbsp;</span>
752
+ <span class="cline-any cline-neutral">&nbsp;</span>
753
+ <span class="cline-any cline-neutral">&nbsp;</span>
754
+ <span class="cline-any cline-neutral">&nbsp;</span>
755
+ <span class="cline-any cline-neutral">&nbsp;</span>
756
+ <span class="cline-any cline-no">&nbsp;</span>
757
+ <span class="cline-any cline-neutral">&nbsp;</span>
758
+ <span class="cline-any cline-neutral">&nbsp;</span>
759
+ <span class="cline-any cline-neutral">&nbsp;</span>
760
+ <span class="cline-any cline-yes">8x</span>
761
+ <span class="cline-any cline-neutral">&nbsp;</span>
762
+ <span class="cline-any cline-neutral">&nbsp;</span>
763
+ <span class="cline-any cline-neutral">&nbsp;</span>
764
+ <span class="cline-any cline-neutral">&nbsp;</span>
765
+ <span class="cline-any cline-yes">7x</span>
766
+ <span class="cline-any cline-neutral">&nbsp;</span>
767
+ <span class="cline-any cline-neutral">&nbsp;</span>
768
+ <span class="cline-any cline-neutral">&nbsp;</span>
769
+ <span class="cline-any cline-neutral">&nbsp;</span>
770
+ <span class="cline-any cline-neutral">&nbsp;</span>
771
+ <span class="cline-any cline-neutral">&nbsp;</span>
772
+ <span class="cline-any cline-neutral">&nbsp;</span>
773
+ <span class="cline-any cline-yes">1x</span>
774
+ <span class="cline-any cline-yes">1x</span>
775
+ <span class="cline-any cline-neutral">&nbsp;</span>
776
+ <span class="cline-any cline-yes">1x</span>
777
+ <span class="cline-any cline-yes">1x</span>
778
+ <span class="cline-any cline-neutral">&nbsp;</span>
779
+ <span class="cline-any cline-yes">1x</span>
780
+ <span class="cline-any cline-yes">1x</span>
781
+ <span class="cline-any cline-neutral">&nbsp;</span>
782
+ <span class="cline-any cline-yes">1x</span>
783
+ <span class="cline-any cline-neutral">&nbsp;</span>
784
+ <span class="cline-any cline-neutral">&nbsp;</span>
785
+ <span class="cline-any cline-neutral">&nbsp;</span>
786
+ <span class="cline-any cline-neutral">&nbsp;</span>
787
+ <span class="cline-any cline-neutral">&nbsp;</span>
788
+ <span class="cline-any cline-neutral">&nbsp;</span>
789
+ <span class="cline-any cline-neutral">&nbsp;</span>
790
+ <span class="cline-any cline-yes">55x</span>
791
+ <span class="cline-any cline-neutral">&nbsp;</span>
792
+ <span class="cline-any cline-neutral">&nbsp;</span>
793
+ <span class="cline-any cline-neutral">&nbsp;</span>
794
+ <span class="cline-any cline-neutral">&nbsp;</span>
795
+ <span class="cline-any cline-neutral">&nbsp;</span>
796
+ <span class="cline-any cline-neutral">&nbsp;</span>
797
+ <span class="cline-any cline-neutral">&nbsp;</span>
798
+ <span class="cline-any cline-yes">20x</span>
799
+ <span class="cline-any cline-neutral">&nbsp;</span>
800
+ <span class="cline-any cline-yes">20x</span>
801
+ <span class="cline-any cline-yes">20x</span>
802
+ <span class="cline-any cline-neutral">&nbsp;</span>
803
+ <span class="cline-any cline-neutral">&nbsp;</span>
804
+ <span class="cline-any cline-neutral">&nbsp;</span>
805
+ <span class="cline-any cline-neutral">&nbsp;</span>
806
+ <span class="cline-any cline-neutral">&nbsp;</span>
807
+ <span class="cline-any cline-neutral">&nbsp;</span>
808
+ <span class="cline-any cline-yes">1x</span>
809
+ <span class="cline-any cline-yes">1x</span>
810
+ <span class="cline-any cline-neutral">&nbsp;</span>
811
+ <span class="cline-any cline-neutral">&nbsp;</span>
812
+ <span class="cline-any cline-neutral">&nbsp;</span>
813
+ <span class="cline-any cline-neutral">&nbsp;</span>
814
+ <span class="cline-any cline-neutral">&nbsp;</span>
815
+ <span class="cline-any cline-neutral">&nbsp;</span>
816
+ <span class="cline-any cline-neutral">&nbsp;</span>
817
+ <span class="cline-any cline-yes">31x</span>
818
+ <span class="cline-any cline-neutral">&nbsp;</span>
819
+ <span class="cline-any cline-yes">31x</span>
820
+ <span class="cline-any cline-neutral">&nbsp;</span>
821
+ <span class="cline-any cline-neutral">&nbsp;</span>
822
+ <span class="cline-any cline-neutral">&nbsp;</span>
823
+ <span class="cline-any cline-yes">31x</span>
824
+ <span class="cline-any cline-yes">31x</span>
825
+ <span class="cline-any cline-yes">141x</span>
826
+ <span class="cline-any cline-neutral">&nbsp;</span>
827
+ <span class="cline-any cline-neutral">&nbsp;</span>
828
+ <span class="cline-any cline-neutral">&nbsp;</span>
829
+ <span class="cline-any cline-yes">31x</span>
830
+ <span class="cline-any cline-yes">31x</span>
831
+ <span class="cline-any cline-neutral">&nbsp;</span>
832
+ <span class="cline-any cline-yes">10x</span>
833
+ <span class="cline-any cline-neutral">&nbsp;</span>
834
+ <span class="cline-any cline-neutral">&nbsp;</span>
835
+ <span class="cline-any cline-yes">21x</span>
836
+ <span class="cline-any cline-neutral">&nbsp;</span>
837
+ <span class="cline-any cline-neutral">&nbsp;</span>
838
+ <span class="cline-any cline-yes">31x</span>
839
+ <span class="cline-any cline-neutral">&nbsp;</span>
840
+ <span class="cline-any cline-neutral">&nbsp;</span>
841
+ <span class="cline-any cline-neutral">&nbsp;</span>
842
+ <span class="cline-any cline-neutral">&nbsp;</span>
843
+ <span class="cline-any cline-neutral">&nbsp;</span>
844
+ <span class="cline-any cline-neutral">&nbsp;</span>
845
+ <span class="cline-any cline-no">&nbsp;</span>
846
+ <span class="cline-any cline-no">&nbsp;</span>
847
+ <span class="cline-any cline-neutral">&nbsp;</span>
848
+ <span class="cline-any cline-neutral">&nbsp;</span>
849
+ <span class="cline-any cline-no">&nbsp;</span>
850
+ <span class="cline-any cline-no">&nbsp;</span>
851
+ <span class="cline-any cline-neutral">&nbsp;</span>
852
+ <span class="cline-any cline-neutral">&nbsp;</span>
853
+ <span class="cline-any cline-no">&nbsp;</span>
854
+ <span class="cline-any cline-neutral">&nbsp;</span>
855
+ <span class="cline-any cline-no">&nbsp;</span>
856
+ <span class="cline-any cline-no">&nbsp;</span>
857
+ <span class="cline-any cline-no">&nbsp;</span>
858
+ <span class="cline-any cline-neutral">&nbsp;</span>
859
+ <span class="cline-any cline-neutral">&nbsp;</span>
860
+ <span class="cline-any cline-neutral">&nbsp;</span>
861
+ <span class="cline-any cline-neutral">&nbsp;</span>
862
+ <span class="cline-any cline-neutral">&nbsp;</span>
863
+ <span class="cline-any cline-no">&nbsp;</span>
864
+ <span class="cline-any cline-no">&nbsp;</span>
865
+ <span class="cline-any cline-no">&nbsp;</span>
866
+ <span class="cline-any cline-neutral">&nbsp;</span>
867
+ <span class="cline-any cline-neutral">&nbsp;</span>
868
+ <span class="cline-any cline-no">&nbsp;</span>
869
+ <span class="cline-any cline-neutral">&nbsp;</span>
870
+ <span class="cline-any cline-neutral">&nbsp;</span>
871
+ <span class="cline-any cline-yes">76x</span>
872
+ <span class="cline-any cline-neutral">&nbsp;</span>
873
+ <span class="cline-any cline-neutral">&nbsp;</span>
874
+ <span class="cline-any cline-neutral">&nbsp;</span>
875
+ <span class="cline-any cline-neutral">&nbsp;</span>
876
+ <span class="cline-any cline-neutral">&nbsp;</span>
877
+ <span class="cline-any cline-neutral">&nbsp;</span>
878
+ <span class="cline-any cline-yes">76x</span>
879
+ <span class="cline-any cline-neutral">&nbsp;</span>
880
+ <span class="cline-any cline-neutral">&nbsp;</span>
881
+ <span class="cline-any cline-neutral">&nbsp;</span>
882
+ <span class="cline-any cline-neutral">&nbsp;</span>
883
+ <span class="cline-any cline-neutral">&nbsp;</span>
884
+ <span class="cline-any cline-no">&nbsp;</span>
885
+ <span class="cline-any cline-no">&nbsp;</span>
886
+ <span class="cline-any cline-neutral">&nbsp;</span>
887
+ <span class="cline-any cline-no">&nbsp;</span>
888
+ <span class="cline-any cline-no">&nbsp;</span>
889
+ <span class="cline-any cline-neutral">&nbsp;</span>
890
+ <span class="cline-any cline-neutral">&nbsp;</span>
891
+ <span class="cline-any cline-neutral">&nbsp;</span>
892
+ <span class="cline-any cline-no">&nbsp;</span>
893
+ <span class="cline-any cline-no">&nbsp;</span>
894
+ <span class="cline-any cline-neutral">&nbsp;</span>
895
+ <span class="cline-any cline-neutral">&nbsp;</span>
896
+ <span class="cline-any cline-neutral">&nbsp;</span>
897
+ <span class="cline-any cline-no">&nbsp;</span>
898
+ <span class="cline-any cline-neutral">&nbsp;</span>
899
+ <span class="cline-any cline-neutral">&nbsp;</span>
900
+ <span class="cline-any cline-no">&nbsp;</span>
901
+ <span class="cline-any cline-no">&nbsp;</span>
902
+ <span class="cline-any cline-neutral">&nbsp;</span>
903
+ <span class="cline-any cline-neutral">&nbsp;</span>
904
+ <span class="cline-any cline-neutral">&nbsp;</span>
905
+ <span class="cline-any cline-neutral">&nbsp;</span>
906
+ <span class="cline-any cline-neutral">&nbsp;</span>
907
+ <span class="cline-any cline-neutral">&nbsp;</span>
908
+ <span class="cline-any cline-neutral">&nbsp;</span>
909
+ <span class="cline-any cline-no">&nbsp;</span>
910
+ <span class="cline-any cline-no">&nbsp;</span>
911
+ <span class="cline-any cline-neutral">&nbsp;</span>
912
+ <span class="cline-any cline-neutral">&nbsp;</span>
913
+ <span class="cline-any cline-neutral">&nbsp;</span>
914
+ <span class="cline-any cline-neutral">&nbsp;</span>
915
+ <span class="cline-any cline-neutral">&nbsp;</span>
916
+ <span class="cline-any cline-yes">16x</span>
917
+ <span class="cline-any cline-neutral">&nbsp;</span>
918
+ <span class="cline-any cline-neutral">&nbsp;</span>
919
+ <span class="cline-any cline-yes">72x</span>
920
+ <span class="cline-any cline-neutral">&nbsp;</span>
921
+ <span class="cline-any cline-neutral">&nbsp;</span>
922
+ <span class="cline-any cline-neutral">&nbsp;</span>
923
+ <span class="cline-any cline-neutral">&nbsp;</span>
924
+ <span class="cline-any cline-neutral">&nbsp;</span>
925
+ <span class="cline-any cline-neutral">&nbsp;</span>
926
+ <span class="cline-any cline-no">&nbsp;</span>
927
+ <span class="cline-any cline-neutral">&nbsp;</span>
928
+ <span class="cline-any cline-neutral">&nbsp;</span>
929
+ <span class="cline-any cline-no">&nbsp;</span>
930
+ <span class="cline-any cline-no">&nbsp;</span>
931
+ <span class="cline-any cline-no">&nbsp;</span>
932
+ <span class="cline-any cline-neutral">&nbsp;</span>
933
+ <span class="cline-any cline-no">&nbsp;</span>
934
+ <span class="cline-any cline-no">&nbsp;</span>
935
+ <span class="cline-any cline-neutral">&nbsp;</span>
936
+ <span class="cline-any cline-neutral">&nbsp;</span>
937
+ <span class="cline-any cline-neutral">&nbsp;</span>
938
+ <span class="cline-any cline-no">&nbsp;</span>
939
+ <span class="cline-any cline-neutral">&nbsp;</span>
940
+ <span class="cline-any cline-neutral">&nbsp;</span>
941
+ <span class="cline-any cline-no">&nbsp;</span>
942
+ <span class="cline-any cline-neutral">&nbsp;</span>
943
+ <span class="cline-any cline-neutral">&nbsp;</span>
944
+ <span class="cline-any cline-no">&nbsp;</span>
945
+ <span class="cline-any cline-neutral">&nbsp;</span>
946
+ <span class="cline-any cline-no">&nbsp;</span>
947
+ <span class="cline-any cline-neutral">&nbsp;</span>
948
+ <span class="cline-any cline-neutral">&nbsp;</span>
949
+ <span class="cline-any cline-neutral">&nbsp;</span>
950
+ <span class="cline-any cline-neutral">&nbsp;</span>
951
+ <span class="cline-any cline-neutral">&nbsp;</span>
952
+ <span class="cline-any cline-neutral">&nbsp;</span>
953
+ <span class="cline-any cline-neutral">&nbsp;</span>
954
+ <span class="cline-any cline-yes">130x</span>
955
+ <span class="cline-any cline-yes">130x</span>
956
+ <span class="cline-any cline-yes">130x</span>
957
+ <span class="cline-any cline-neutral">&nbsp;</span>
958
+ <span class="cline-any cline-yes">130x</span>
959
+ <span class="cline-any cline-yes">606x</span>
960
+ <span class="cline-any cline-neutral">&nbsp;</span>
961
+ <span class="cline-any cline-neutral">&nbsp;</span>
962
+ <span class="cline-any cline-neutral">&nbsp;</span>
963
+ <span class="cline-any cline-yes">130x</span>
964
+ <span class="cline-any cline-neutral">&nbsp;</span>
965
+ <span class="cline-any cline-neutral">&nbsp;</span>
966
+ <span class="cline-any cline-yes">130x</span>
967
+ <span class="cline-any cline-neutral">&nbsp;</span>
968
+ <span class="cline-any cline-yes">130x</span>
969
+ <span class="cline-any cline-neutral">&nbsp;</span>
970
+ <span class="cline-any cline-neutral">&nbsp;</span>
971
+ <span class="cline-any cline-neutral">&nbsp;</span>
972
+ <span class="cline-any cline-neutral">&nbsp;</span>
973
+ <span class="cline-any cline-neutral">&nbsp;</span>
974
+ <span class="cline-any cline-neutral">&nbsp;</span>
975
+ <span class="cline-any cline-neutral">&nbsp;</span>
976
+ <span class="cline-any cline-yes">45x</span>
977
+ <span class="cline-any cline-yes">45x</span>
978
+ <span class="cline-any cline-neutral">&nbsp;</span>
979
+ <span class="cline-any cline-neutral">&nbsp;</span>
980
+ <span class="cline-any cline-yes">45x</span>
981
+ <span class="cline-any cline-neutral">&nbsp;</span>
982
+ <span class="cline-any cline-yes">45x</span>
983
+ <span class="cline-any cline-yes">45x</span>
984
+ <span class="cline-any cline-yes">207x</span>
985
+ <span class="cline-any cline-neutral">&nbsp;</span>
986
+ <span class="cline-any cline-neutral">&nbsp;</span>
987
+ <span class="cline-any cline-neutral">&nbsp;</span>
988
+ <span class="cline-any cline-neutral">&nbsp;</span>
989
+ <span class="cline-any cline-neutral">&nbsp;</span>
990
+ <span class="cline-any cline-yes">45x</span>
991
+ <span class="cline-any cline-yes">45x</span>
992
+ <span class="cline-any cline-yes">15x</span>
993
+ <span class="cline-any cline-neutral">&nbsp;</span>
994
+ <span class="cline-any cline-neutral">&nbsp;</span>
995
+ <span class="cline-any cline-yes">45x</span>
996
+ <span class="cline-any cline-neutral">&nbsp;</span>
997
+ <span class="cline-any cline-neutral">&nbsp;</span>
998
+ <span class="cline-any cline-neutral">&nbsp;</span>
999
+ <span class="cline-any cline-neutral">&nbsp;</span>
1000
+ <span class="cline-any cline-neutral">&nbsp;</span>
1001
+ <span class="cline-any cline-neutral">&nbsp;</span>
1002
+ <span class="cline-any cline-neutral">&nbsp;</span>
1003
+ <span class="cline-any cline-neutral">&nbsp;</span>
1004
+ <span class="cline-any cline-yes">1x</span>
1005
+ <span class="cline-any cline-neutral">&nbsp;</span>
1006
+ <span class="cline-any cline-no">&nbsp;</span>
1007
+ <span class="cline-any cline-no">&nbsp;</span>
1008
+ <span class="cline-any cline-neutral">&nbsp;</span>
1009
+ <span class="cline-any cline-no">&nbsp;</span>
1010
+ <span class="cline-any cline-neutral">&nbsp;</span>
1011
+ <span class="cline-any cline-no">&nbsp;</span>
1012
+ <span class="cline-any cline-neutral">&nbsp;</span>
1013
+ <span class="cline-any cline-no">&nbsp;</span>
1014
+ <span class="cline-any cline-neutral">&nbsp;</span>
1015
+ <span class="cline-any cline-no">&nbsp;</span>
1016
+ <span class="cline-any cline-neutral">&nbsp;</span>
1017
+ <span class="cline-any cline-neutral">&nbsp;</span>
1018
+ <span class="cline-any cline-neutral">&nbsp;</span>
1019
+ <span class="cline-any cline-neutral">&nbsp;</span>
1020
+ <span class="cline-any cline-neutral">&nbsp;</span>
1021
+ <span class="cline-any cline-neutral">&nbsp;</span>
1022
+ <span class="cline-any cline-neutral">&nbsp;</span>
1023
+ <span class="cline-any cline-neutral">&nbsp;</span>
1024
+ <span class="cline-any cline-yes">37x</span>
1025
+ <span class="cline-any cline-no">&nbsp;</span>
1026
+ <span class="cline-any cline-neutral">&nbsp;</span>
1027
+ <span class="cline-any cline-neutral">&nbsp;</span>
1028
+ <span class="cline-any cline-neutral">&nbsp;</span>
1029
+ <span class="cline-any cline-yes">37x</span>
1030
+ <span class="cline-any cline-no">&nbsp;</span>
1031
+ <span class="cline-any cline-neutral">&nbsp;</span>
1032
+ <span class="cline-any cline-neutral">&nbsp;</span>
1033
+ <span class="cline-any cline-yes">37x</span>
1034
+ <span class="cline-any cline-yes">6x</span>
1035
+ <span class="cline-any cline-neutral">&nbsp;</span>
1036
+ <span class="cline-any cline-neutral">&nbsp;</span>
1037
+ <span class="cline-any cline-yes">31x</span>
1038
+ <span class="cline-any cline-yes">31x</span>
1039
+ <span class="cline-any cline-neutral">&nbsp;</span>
1040
+ <span class="cline-any cline-no">&nbsp;</span>
1041
+ <span class="cline-any cline-neutral">&nbsp;</span>
1042
+ <span class="cline-any cline-neutral">&nbsp;</span>
1043
+ <span class="cline-any cline-neutral">&nbsp;</span>
1044
+ <span class="cline-any cline-neutral">&nbsp;</span>
1045
+ <span class="cline-any cline-neutral">&nbsp;</span>
1046
+ <span class="cline-any cline-neutral">&nbsp;</span>
1047
+ <span class="cline-any cline-neutral">&nbsp;</span>
1048
+ <span class="cline-any cline-neutral">&nbsp;</span>
1049
+ <span class="cline-any cline-neutral">&nbsp;</span>
1050
+ <span class="cline-any cline-neutral">&nbsp;</span>
1051
+ <span class="cline-any cline-neutral">&nbsp;</span>
1052
+ <span class="cline-any cline-neutral">&nbsp;</span>
1053
+ <span class="cline-any cline-neutral">&nbsp;</span>
1054
+ <span class="cline-any cline-neutral">&nbsp;</span>
1055
+ <span class="cline-any cline-neutral">&nbsp;</span>
1056
+ <span class="cline-any cline-no">&nbsp;</span>
1057
+ <span class="cline-any cline-no">&nbsp;</span>
1058
+ <span class="cline-any cline-no">&nbsp;</span>
1059
+ <span class="cline-any cline-no">&nbsp;</span>
1060
+ <span class="cline-any cline-neutral">&nbsp;</span>
1061
+ <span class="cline-any cline-no">&nbsp;</span>
1062
+ <span class="cline-any cline-neutral">&nbsp;</span>
1063
+ <span class="cline-any cline-neutral">&nbsp;</span>
1064
+ <span class="cline-any cline-neutral">&nbsp;</span>
1065
+ <span class="cline-any cline-neutral">&nbsp;</span>
1066
+ <span class="cline-any cline-yes">1x</span>
1067
+ <span class="cline-any cline-neutral">&nbsp;</span>
1068
+ <span class="cline-any cline-neutral">&nbsp;</span>
1069
+ <span class="cline-any cline-neutral">&nbsp;</span>
1070
+ <span class="cline-any cline-neutral">&nbsp;</span>
1071
+ <span class="cline-any cline-neutral">&nbsp;</span>
1072
+ <span class="cline-any cline-no">&nbsp;</span>
1073
+ <span class="cline-any cline-neutral">&nbsp;</span>
1074
+ <span class="cline-any cline-neutral">&nbsp;</span>
1075
+ <span class="cline-any cline-neutral">&nbsp;</span>
1076
+ <span class="cline-any cline-neutral">&nbsp;</span>
1077
+ <span class="cline-any cline-neutral">&nbsp;</span>
1078
+ <span class="cline-any cline-neutral">&nbsp;</span>
1079
+ <span class="cline-any cline-neutral">&nbsp;</span>
1080
+ <span class="cline-any cline-neutral">&nbsp;</span>
1081
+ <span class="cline-any cline-neutral">&nbsp;</span>
1082
+ <span class="cline-any cline-neutral">&nbsp;</span>
1083
+ <span class="cline-any cline-neutral">&nbsp;</span>
1084
+ <span class="cline-any cline-neutral">&nbsp;</span>
1085
+ <span class="cline-any cline-neutral">&nbsp;</span>
1086
+ <span class="cline-any cline-neutral">&nbsp;</span>
1087
+ <span class="cline-any cline-neutral">&nbsp;</span>
1088
+ <span class="cline-any cline-neutral">&nbsp;</span>
1089
+ <span class="cline-any cline-neutral">&nbsp;</span>
1090
+ <span class="cline-any cline-neutral">&nbsp;</span>
1091
+ <span class="cline-any cline-neutral">&nbsp;</span>
1092
+ <span class="cline-any cline-neutral">&nbsp;</span>
1093
+ <span class="cline-any cline-neutral">&nbsp;</span>
1094
+ <span class="cline-any cline-neutral">&nbsp;</span>
1095
+ <span class="cline-any cline-neutral">&nbsp;</span>
1096
+ <span class="cline-any cline-neutral">&nbsp;</span>
1097
+ <span class="cline-any cline-neutral">&nbsp;</span>
1098
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { BufferReader, BufferWriter } from '@node-dlc/bufio';
1099
+ &nbsp;
1100
+ import { MessageType } from '../MessageType';
1101
+ import { getTlv } from '../serialize/getTlv';
1102
+ import { IDlcMessage } from './DlcMessage';
1103
+ import {
1104
+ OracleAnnouncement,
1105
+ OracleAnnouncementJSON,
1106
+ } from './OracleAnnouncement';
1107
+ &nbsp;
1108
+ /**
1109
+ * OracleParams describe allowed differences between oracles in
1110
+ * numerical outcome contracts, as per rust-dlc specification.
1111
+ */
1112
+ export class OracleParams implements IDlcMessage {
1113
+ public static type = MessageType.OracleParamsV0;
1114
+ &nbsp;
1115
+ /**
1116
+ * Creates an OracleParams from JSON data
1117
+ * @param json JSON object representing oracle params
1118
+ */
1119
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any
1120
+ public static fromJSON(json: any): OracleParams {
1121
+ const instance = new OracleParams();
1122
+ instance.maxErrorExp = json.maxErrorExp || <span class="branch-1 cbranch-no" title="branch not covered" >json.max_error_exp </span>|| <span class="branch-2 cbranch-no" title="branch not covered" >0;</span>
1123
+ instance.minFailExp = json.minFailExp || <span class="branch-1 cbranch-no" title="branch not covered" >json.min_fail_exp </span>|| <span class="branch-2 cbranch-no" title="branch not covered" >0;</span>
1124
+ instance.maximizeCoverage =
1125
+ json.maximizeCoverage || json.maximize_coverage || false;
1126
+ return instance;
1127
+ }
1128
+ &nbsp;
1129
+ /**
1130
+ * Deserializes oracle_params_v0 message
1131
+ */
1132
+ public <span class="fstat-no" title="function not covered" >static </span>deserialize(buf: Buffer): OracleParams {
1133
+ const instance = <span class="cstat-no" title="statement not covered" >new OracleParams();</span>
1134
+ const reader = <span class="cstat-no" title="statement not covered" >new BufferReader(buf);</span>
1135
+ &nbsp;
1136
+ <span class="cstat-no" title="statement not covered" > reader.readBigSize(); </span>// read type
1137
+ <span class="cstat-no" title="statement not covered" > instance.length = reader.readBigSize();</span>
1138
+ <span class="cstat-no" title="statement not covered" > instance.maxErrorExp = reader.readUInt16BE();</span>
1139
+ <span class="cstat-no" title="statement not covered" > instance.minFailExp = reader.readUInt16BE();</span>
1140
+ <span class="cstat-no" title="statement not covered" > instance.maximizeCoverage = reader.readUInt8() === 1;</span>
1141
+ &nbsp;
1142
+ <span class="cstat-no" title="statement not covered" > return instance;</span>
1143
+ }
1144
+ &nbsp;
1145
+ /**
1146
+ * Deserializes oracle params body without TLV wrapper (for optional deserialization)
1147
+ */
1148
+ public static deserializeBody(buf: Buffer): OracleParams {
1149
+ const instance = new OracleParams();
1150
+ const reader = new BufferReader(buf);
1151
+ &nbsp;
1152
+ // No type/length to read - just the body content
1153
+ instance.maxErrorExp = reader.readUInt16BE();
1154
+ instance.minFailExp = reader.readUInt16BE();
1155
+ instance.maximizeCoverage = reader.readUInt8() === 1;
1156
+ &nbsp;
1157
+ return instance;
1158
+ }
1159
+ &nbsp;
1160
+ public type = OracleParams.type;
1161
+ public length: bigint;
1162
+ &nbsp;
1163
+ /** The maximum allowed difference between oracle expressed as a power of 2. */
1164
+ public maxErrorExp: number;
1165
+ &nbsp;
1166
+ /** The minimum allowed difference that should be supported by the contract expressed as a power of 2. */
1167
+ public minFailExp: number;
1168
+ &nbsp;
1169
+ /** Whether to maximize coverage of the interval between maxErrorExp and minFailExp. */
1170
+ public maximizeCoverage: boolean;
1171
+ &nbsp;
1172
+ public <span class="fstat-no" title="function not covered" >validate(</span>): void {
1173
+ <span class="cstat-no" title="statement not covered" > if (this.maxErrorExp &lt; 0) {</span>
1174
+ <span class="cstat-no" title="statement not covered" > throw new Error('maxErrorExp must be greater than or equal to 0');</span>
1175
+ }
1176
+ <span class="cstat-no" title="statement not covered" > if (this.minFailExp &lt; 0) {</span>
1177
+ <span class="cstat-no" title="statement not covered" > throw new Error('minFailExp must be greater than or equal to 0');</span>
1178
+ }
1179
+ <span class="cstat-no" title="statement not covered" > if (this.maxErrorExp &gt;= this.minFailExp) {</span>
1180
+ <span class="cstat-no" title="statement not covered" > throw new Error('maxErrorExp must be less than minFailExp');</span>
1181
+ }
1182
+ }
1183
+ &nbsp;
1184
+ public toJSON(): OracleParamsJSON {
1185
+ return {
1186
+ maxErrorExp: this.maxErrorExp,
1187
+ minFailExp: this.minFailExp,
1188
+ maximizeCoverage: this.maximizeCoverage,
1189
+ };
1190
+ }
1191
+ &nbsp;
1192
+ public <span class="fstat-no" title="function not covered" >serialize(</span>): Buffer {
1193
+ const writer = <span class="cstat-no" title="statement not covered" >new BufferWriter();</span>
1194
+ <span class="cstat-no" title="statement not covered" > writer.writeBigSize(this.type);</span>
1195
+ &nbsp;
1196
+ const dataWriter = <span class="cstat-no" title="statement not covered" >new BufferWriter();</span>
1197
+ <span class="cstat-no" title="statement not covered" > dataWriter.writeUInt16BE(this.maxErrorExp);</span>
1198
+ <span class="cstat-no" title="statement not covered" > dataWriter.writeUInt16BE(this.minFailExp);</span>
1199
+ <span class="cstat-no" title="statement not covered" > dataWriter.writeUInt8(this.maximizeCoverage ? 1 : 0);</span>
1200
+ &nbsp;
1201
+ <span class="cstat-no" title="statement not covered" > writer.writeBigSize(dataWriter.size);</span>
1202
+ <span class="cstat-no" title="statement not covered" > writer.writeBytes(dataWriter.toBuffer());</span>
1203
+ &nbsp;
1204
+ <span class="cstat-no" title="statement not covered" > return writer.toBuffer();</span>
1205
+ }
1206
+ &nbsp;
1207
+ /**
1208
+ * Serializes the oracle params body without TLV wrapper (for optional serialization)
1209
+ */
1210
+ public serializeBody(): Buffer {
1211
+ const writer = new BufferWriter();
1212
+ writer.writeUInt16BE(this.maxErrorExp);
1213
+ writer.writeUInt16BE(this.minFailExp);
1214
+ writer.writeUInt8(this.maximizeCoverage ? <span class="branch-0 cbranch-no" title="branch not covered" >1 </span>: 0);
1215
+ return writer.toBuffer();
1216
+ }
1217
+ }
1218
+ &nbsp;
1219
+ /**
1220
+ * SingleOracleInfo contains information about a single oracle.
1221
+ */
1222
+ export class SingleOracleInfo implements IDlcMessage {
1223
+ public static type = MessageType.SingleOracleInfo;
1224
+ &nbsp;
1225
+ /**
1226
+ * Creates a SingleOracleInfo from JSON data
1227
+ * @param json JSON object representing single oracle info
1228
+ */
1229
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any
1230
+ public static fromJSON(json: any): SingleOracleInfo {
1231
+ const instance = new SingleOracleInfo();
1232
+ &nbsp;
1233
+ const announcementData = json.announcement || json.oracleAnnouncement;
1234
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!announcementData) {
1235
+ <span class="cstat-no" title="statement not covered" > throw new Error(</span>
1236
+ 'announcement or oracleAnnouncement is required for single oracle info',
1237
+ );
1238
+ }
1239
+ &nbsp;
1240
+ // Parse announcement using proper fromJSON method
1241
+ instance.announcement = OracleAnnouncement.fromJSON(announcementData);
1242
+ &nbsp;
1243
+ return instance;
1244
+ }
1245
+ &nbsp;
1246
+ /**
1247
+ * Deserializes single oracle info
1248
+ */
1249
+ public static deserialize(buf: Buffer): SingleOracleInfo {
1250
+ const instance = new SingleOracleInfo();
1251
+ const reader = new BufferReader(buf);
1252
+ &nbsp;
1253
+ // Read the type and length that serialize() writes
1254
+ reader.readBigSize(); // read type
1255
+ instance.length = reader.readBigSize(); // read length
1256
+ &nbsp;
1257
+ // Read the announcement data
1258
+ instance.announcement = OracleAnnouncement.deserialize(
1259
+ reader.readBytes(Number(instance.length)),
1260
+ );
1261
+ &nbsp;
1262
+ return instance;
1263
+ }
1264
+ &nbsp;
1265
+ public type = SingleOracleInfo.type;
1266
+ public length: bigint;
1267
+ &nbsp;
1268
+ /** The oracle announcement from the oracle. */
1269
+ public announcement: OracleAnnouncement;
1270
+ &nbsp;
1271
+ /**
1272
+ * Returns the closest maturity date amongst all events
1273
+ */
1274
+ public <span class="fstat-no" title="function not covered" >getClosestMaturityDate(</span>): number {
1275
+ <span class="cstat-no" title="statement not covered" > return this.announcement.oracleEvent.eventMaturityEpoch;</span>
1276
+ }
1277
+ &nbsp;
1278
+ public validate(): void {
1279
+ this.announcement.validate();
1280
+ }
1281
+ &nbsp;
1282
+ public toJSON(): SingleOracleInfoJSON {
1283
+ // Return enum variant format for Rust compatibility
1284
+ return {
1285
+ single: {
1286
+ oracleAnnouncement: this.announcement.toJSON(),
1287
+ },
1288
+ } as any;
1289
+ }
1290
+ &nbsp;
1291
+ public serialize(): Buffer {
1292
+ const writer = new BufferWriter();
1293
+ writer.writeBigSize(this.type);
1294
+ &nbsp;
1295
+ const dataWriter = new BufferWriter();
1296
+ dataWriter.writeBytes(this.announcement.serialize());
1297
+ &nbsp;
1298
+ writer.writeBigSize(dataWriter.size);
1299
+ writer.writeBytes(dataWriter.toBuffer());
1300
+ &nbsp;
1301
+ return writer.toBuffer();
1302
+ }
1303
+ &nbsp;
1304
+ /**
1305
+ * Serializes the body without TLV wrapper (for embedding in ContractInfo)
1306
+ * This matches rust-dlc behavior where OracleInfo.write() doesn't add type_id
1307
+ */
1308
+ public serializeBody(): Buffer {
1309
+ return this.announcement.serialize();
1310
+ }
1311
+ &nbsp;
1312
+ /**
1313
+ * Deserializes the body without TLV wrapper (for embedding in ContractInfo)
1314
+ * This matches rust-dlc behavior where OracleInfo is read without type_id
1315
+ */
1316
+ public static deserializeBody(buf: Buffer): SingleOracleInfo {
1317
+ const instance = new SingleOracleInfo();
1318
+ // No type/length to read - just the announcement data directly
1319
+ instance.announcement = OracleAnnouncement.deserialize(buf);
1320
+ return instance;
1321
+ }
1322
+ }
1323
+ &nbsp;
1324
+ /**
1325
+ * MultiOracleInfo contains information about multiple oracles used in multi-oracle based contracts.
1326
+ */
1327
+ export class MultiOracleInfo implements IDlcMessage {
1328
+ public static type = MessageType.MultiOracleInfo;
1329
+ &nbsp;
1330
+ /**
1331
+ * Creates a MultiOracleInfo from JSON data
1332
+ * @param json JSON object representing multi oracle info
1333
+ */
1334
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any
1335
+ public static fromJSON(json: any): MultiOracleInfo {
1336
+ const instance = new MultiOracleInfo();
1337
+ &nbsp;
1338
+ instance.threshold = json.threshold || <span class="branch-1 cbranch-no" title="branch not covered" >1;</span>
1339
+ &nbsp;
1340
+ // Parse oracle announcements using proper fromJSON method
1341
+ const announcements =
1342
+ json.oracleAnnouncements || <span class="branch-1 cbranch-no" title="branch not covered" >json.oracle_announcements </span>|| <span class="branch-2 cbranch-no" title="branch not covered" >[];</span>
1343
+ instance.announcements = announcements.map((announcementJson: any) =&gt;
1344
+ OracleAnnouncement.fromJSON(announcementJson),
1345
+ );
1346
+ &nbsp;
1347
+ // Parse oracle params if present (null means explicitly absent)
1348
+ const oracleParamsData = json.oracleParams || json.oracle_params;
1349
+ if (oracleParamsData !== null &amp;&amp; oracleParamsData !== undefined) {
1350
+ // Create OracleParams from JSON data using the fromJSON method
1351
+ instance.oracleParams = OracleParams.fromJSON(oracleParamsData);
1352
+ } else {
1353
+ // Explicitly null/undefined - will serialize as 00 (not present)
1354
+ instance.oracleParams = undefined;
1355
+ }
1356
+ &nbsp;
1357
+ return instance;
1358
+ }
1359
+ &nbsp;
1360
+ /**
1361
+ * Deserializes multi oracle info
1362
+ */
1363
+ public <span class="fstat-no" title="function not covered" >static </span>deserialize(buf: Buffer): MultiOracleInfo {
1364
+ const instance = <span class="cstat-no" title="statement not covered" >new MultiOracleInfo();</span>
1365
+ const reader = <span class="cstat-no" title="statement not covered" >new BufferReader(buf);</span>
1366
+ &nbsp;
1367
+ // Read the type and length that serialize() writes
1368
+ <span class="cstat-no" title="statement not covered" > reader.readBigSize(); </span>// read type
1369
+ <span class="cstat-no" title="statement not covered" > instance.length = reader.readBigSize(); </span>// read length
1370
+ &nbsp;
1371
+ // In rust-dlc format, MultiOracleInfo body is: threshold + announcements + optional oracle params
1372
+ <span class="cstat-no" title="statement not covered" > instance.threshold = reader.readUInt16BE();</span>
1373
+ &nbsp;
1374
+ const numAnnouncements = <span class="cstat-no" title="statement not covered" >Number(reader.readBigSize());</span> // Changed from readUInt16BE to readBigSize to match rust-dlc vec_cb
1375
+ <span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0;</span> i &lt; numAnnouncements; i++) {</span>
1376
+ <span class="cstat-no" title="statement not covered" > instance.announcements.push(</span>
1377
+ OracleAnnouncement.deserialize(getTlv(reader)),
1378
+ );
1379
+ }
1380
+ &nbsp;
1381
+ // Optional oracle params using Optional sub-type format
1382
+ const oracleParamsData = <span class="cstat-no" title="statement not covered" >reader.readOptional();</span>
1383
+ <span class="cstat-no" title="statement not covered" > if (oracleParamsData) {</span>
1384
+ <span class="cstat-no" title="statement not covered" > instance.oracleParams = OracleParams.deserializeBody(oracleParamsData);</span>
1385
+ }
1386
+ &nbsp;
1387
+ <span class="cstat-no" title="statement not covered" > return instance;</span>
1388
+ }
1389
+ &nbsp;
1390
+ public type = MultiOracleInfo.type;
1391
+ public length: bigint;
1392
+ &nbsp;
1393
+ /** The threshold to be used for the contract (e.g. 2 of 3). */
1394
+ public threshold: number;
1395
+ &nbsp;
1396
+ /** The set of oracle announcements. */
1397
+ public announcements: OracleAnnouncement[] = [];
1398
+ &nbsp;
1399
+ /** The parameters to be used when allowing differences between oracle outcomes in numerical outcome contracts. */
1400
+ public oracleParams?: OracleParams;
1401
+ &nbsp;
1402
+ public <span class="fstat-no" title="function not covered" >validate(</span>): void {
1403
+ <span class="cstat-no" title="statement not covered" > if (this.threshold &lt;= 0) {</span>
1404
+ <span class="cstat-no" title="statement not covered" > throw new Error('threshold must be greater than 0');</span>
1405
+ }
1406
+ <span class="cstat-no" title="statement not covered" > if (this.threshold &gt; this.announcements.length) {</span>
1407
+ <span class="cstat-no" title="statement not covered" > throw new Error(</span>
1408
+ 'threshold cannot be greater than number of announcements',
1409
+ );
1410
+ }
1411
+ <span class="cstat-no" title="statement not covered" > if (this.announcements.length === 0) {</span>
1412
+ <span class="cstat-no" title="statement not covered" > throw new Error('must have at least one announcement');</span>
1413
+ }
1414
+ &nbsp;
1415
+ // Validate all announcements
1416
+ <span class="cstat-no" title="statement not covered" > this.announcements.forEach(<span class="fstat-no" title="function not covered" >(a</span>nnouncement) =&gt; <span class="cstat-no" title="statement not covered" >announcement.validate())</span>;</span>
1417
+ &nbsp;
1418
+ // Validate oracle params if present
1419
+ <span class="cstat-no" title="statement not covered" > if (this.oracleParams) {</span>
1420
+ <span class="cstat-no" title="statement not covered" > this.oracleParams.validate();</span>
1421
+ }
1422
+ }
1423
+ &nbsp;
1424
+ /**
1425
+ * Returns the closest maturity date amongst all events
1426
+ */
1427
+ public <span class="fstat-no" title="function not covered" >getClosestMaturityDate(</span>): number {
1428
+ <span class="cstat-no" title="statement not covered" > return Math.min(</span>
1429
+ ...this.announcements.map(<span class="fstat-no" title="function not covered" >(a</span>) =&gt; <span class="cstat-no" title="statement not covered" >a.oracleEvent.eventMaturityEpoch)</span>,
1430
+ );
1431
+ }
1432
+ &nbsp;
1433
+ public toJSON(): MultiOracleInfoJSON {
1434
+ // Return enum variant format for Rust compatibility
1435
+ return {
1436
+ multi: {
1437
+ threshold: this.threshold,
1438
+ oracleAnnouncements: this.announcements.map((a) =&gt; a.toJSON()),
1439
+ oracleParams: this.oracleParams?.toJSON(),
1440
+ },
1441
+ } as any;
1442
+ }
1443
+ &nbsp;
1444
+ public <span class="fstat-no" title="function not covered" >serialize(</span>): Buffer {
1445
+ const writer = <span class="cstat-no" title="statement not covered" >new BufferWriter();</span>
1446
+ // writer.writeBigSize(this.type);
1447
+ &nbsp;
1448
+ const dataWriter = <span class="cstat-no" title="statement not covered" >new BufferWriter();</span>
1449
+ <span class="cstat-no" title="statement not covered" > dataWriter.writeUInt16BE(this.threshold);</span>
1450
+ <span class="cstat-no" title="statement not covered" > dataWriter.writeBigSize(this.announcements.length); </span>// Changed from writeUInt16BE to writeBigSize to match rust-dlc vec_cb
1451
+ &nbsp;
1452
+ <span class="cstat-no" title="statement not covered" > for (const announcement of this.announcements) {</span>
1453
+ <span class="cstat-no" title="statement not covered" > dataWriter.writeBytes(announcement.serialize());</span>
1454
+ }
1455
+ &nbsp;
1456
+ // Use Optional serialization for oracle params (body content only, not TLV wrapped)
1457
+ const oracleParamsData = <span class="cstat-no" title="statement not covered" >this.oracleParams</span>
1458
+ ? this.oracleParams.serializeBody()
1459
+ : null;
1460
+ <span class="cstat-no" title="statement not covered" > dataWriter.writeOptional(oracleParamsData);</span>
1461
+ &nbsp;
1462
+ // writer.writeBigSize(dataWriter.size);
1463
+ <span class="cstat-no" title="statement not covered" > writer.writeBytes(dataWriter.toBuffer());</span>
1464
+ &nbsp;
1465
+ <span class="cstat-no" title="statement not covered" > return writer.toBuffer();</span>
1466
+ }
1467
+ &nbsp;
1468
+ /**
1469
+ * Serializes the body without TLV wrapper (for embedding in ContractInfo)
1470
+ * This matches rust-dlc behavior where OracleInfo.write() doesn't add type_id
1471
+ */
1472
+ public serializeBody(): Buffer {
1473
+ const writer = new BufferWriter();
1474
+ writer.writeUInt16BE(this.threshold);
1475
+ writer.writeBigSize(this.announcements.length); // Changed from writeUInt16BE to writeBigSize to match rust-dlc vec_cb
1476
+ &nbsp;
1477
+ for (const announcement of this.announcements) {
1478
+ writer.writeBytes(announcement.serialize());
1479
+ }
1480
+ &nbsp;
1481
+ // Use Optional serialization for oracle params (body content only, not TLV wrapped)
1482
+ const oracleParamsData = this.oracleParams
1483
+ ? this.oracleParams.serializeBody()
1484
+ : null;
1485
+ writer.writeOptional(oracleParamsData);
1486
+ &nbsp;
1487
+ return writer.toBuffer();
1488
+ }
1489
+ &nbsp;
1490
+ /**
1491
+ * Deserializes the body without TLV wrapper (for embedding in ContractInfo)
1492
+ * This matches rust-dlc behavior where OracleInfo is read without type_id
1493
+ */
1494
+ public static deserializeBody(buf: Buffer): MultiOracleInfo {
1495
+ const instance = new MultiOracleInfo();
1496
+ const reader = new BufferReader(buf);
1497
+ &nbsp;
1498
+ // No type/length to read - directly read the multi-oracle body
1499
+ instance.threshold = reader.readUInt16BE();
1500
+ &nbsp;
1501
+ const numAnnouncements = Number(reader.readBigSize()); // BigSize for announcements count
1502
+ for (let i = 0; i &lt; numAnnouncements; i++) {
1503
+ instance.announcements.push(
1504
+ OracleAnnouncement.deserialize(getTlv(reader)),
1505
+ );
1506
+ }
1507
+ &nbsp;
1508
+ // Optional oracle params using Optional sub-type format
1509
+ const oracleParamsData = reader.readOptional();
1510
+ if (oracleParamsData) {
1511
+ instance.oracleParams = OracleParams.deserializeBody(oracleParamsData);
1512
+ }
1513
+ &nbsp;
1514
+ return instance;
1515
+ }
1516
+ }
1517
+ &nbsp;
1518
+ /**
1519
+ * OracleInfo contains information about the oracles to be used in
1520
+ * executing a DLC. Updated to support both single and multi-oracle
1521
+ * patterns as per rust-dlc specification.
1522
+ */
1523
+ export abstract class OracleInfo implements IDlcMessage {
1524
+ public <span class="fstat-no" title="function not covered" >static </span>deserialize(buf: Buffer): SingleOracleInfo | MultiOracleInfo {
1525
+ const reader = <span class="cstat-no" title="statement not covered" >new BufferReader(buf);</span>
1526
+ const type = <span class="cstat-no" title="statement not covered" >Number(reader.readBigSize());</span>
1527
+ &nbsp;
1528
+ <span class="cstat-no" title="statement not covered" > switch (type) {</span>
1529
+ case MessageType.SingleOracleInfo:
1530
+ <span class="cstat-no" title="statement not covered" > return SingleOracleInfo.deserialize(buf);</span>
1531
+ case MessageType.MultiOracleInfo:
1532
+ <span class="cstat-no" title="statement not covered" > return MultiOracleInfo.deserialize(buf);</span>
1533
+ default:
1534
+ <span class="cstat-no" title="statement not covered" > throw new Error(`Unknown oracle info type: ${type}`);</span>
1535
+ }
1536
+ }
1537
+ &nbsp;
1538
+ /**
1539
+ * Creates an OracleInfo from JSON data (e.g., from test vectors)
1540
+ * @param json JSON object representing oracle info
1541
+ */
1542
+ public static fromJSON(json: any): OracleInfo {
1543
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (!json) {
1544
+ <span class="cstat-no" title="statement not covered" > throw new Error('oracleInfo is required');</span>
1545
+ }
1546
+ &nbsp;
1547
+ // Handle direct single oracle (legacy format)
1548
+ <span class="missing-if-branch" title="if path not taken" >I</span>if (json.announcement) {
1549
+ <span class="cstat-no" title="statement not covered" > return SingleOracleInfo.fromJSON(json);</span>
1550
+ }
1551
+ // Handle wrapped single oracle
1552
+ else if (json.single) {
1553
+ return SingleOracleInfo.fromJSON(json.single);
1554
+ }
1555
+ // Handle multi oracle
1556
+ else <span class="missing-if-branch" title="else path not taken" >E</span>if (json.multi) {
1557
+ return MultiOracleInfo.fromJSON(json.multi);
1558
+ } else {
1559
+ <span class="cstat-no" title="statement not covered" > throw new Error(</span>
1560
+ 'oracleInfo must have either announcement, single, or multi',
1561
+ );
1562
+ }
1563
+ }
1564
+ &nbsp;
1565
+ public abstract type: number;
1566
+ public abstract validate(): void;
1567
+ public abstract toJSON(): SingleOracleInfoJSON | MultiOracleInfoJSON;
1568
+ public abstract serialize(): Buffer;
1569
+ public abstract serializeBody(): Buffer;
1570
+ &nbsp;
1571
+ /**
1572
+ * Returns the closest maturity date amongst all events
1573
+ */
1574
+ public <span class="fstat-no" title="function not covered" >getClosestMaturityDate(</span>): number {
1575
+ <span class="cstat-no" title="statement not covered" > if (this instanceof SingleOracleInfo) {</span>
1576
+ <span class="cstat-no" title="statement not covered" > return this.announcement.oracleEvent.eventMaturityEpoch;</span>
1577
+ } else <span class="cstat-no" title="statement not covered" >if (this instanceof MultiOracleInfo) {</span>
1578
+ <span class="cstat-no" title="statement not covered" > return this.getClosestMaturityDate();</span>
1579
+ }
1580
+ <span class="cstat-no" title="statement not covered" > throw new Error('Unknown oracle info type');</span>
1581
+ }
1582
+ }
1583
+ &nbsp;
1584
+ // For backward compatibility, keep the V0 class as alias to SingleOracleInfo
1585
+ export class OracleInfoV0 extends SingleOracleInfo {
1586
+ /**
1587
+ * Creates an OracleInfoV0 from JSON data (alias for SingleOracleInfo.fromJSON)
1588
+ * @param json JSON object representing oracle info
1589
+ */
1590
+ public <span class="fstat-no" title="function not covered" >static </span>fromJSON(json: any): OracleInfoV0 {
1591
+ <span class="cstat-no" title="statement not covered" > return SingleOracleInfo.fromJSON(json) as OracleInfoV0;</span>
1592
+ }
1593
+ }
1594
+ &nbsp;
1595
+ // JSON interfaces
1596
+ export interface OracleParamsJSON {
1597
+ type?: number; // Made optional for rust-dlc compatibility
1598
+ maxErrorExp: number;
1599
+ minFailExp: number;
1600
+ maximizeCoverage: boolean;
1601
+ }
1602
+ &nbsp;
1603
+ export interface SingleOracleInfoJSON {
1604
+ type?: number; // Made optional for rust-dlc compatibility
1605
+ announcement: OracleAnnouncementJSON;
1606
+ }
1607
+ &nbsp;
1608
+ export interface MultiOracleInfoJSON {
1609
+ type?: number; // Made optional for rust-dlc compatibility
1610
+ threshold: number;
1611
+ announcements: OracleAnnouncementJSON[];
1612
+ oracleParams?: OracleParamsJSON;
1613
+ }
1614
+ &nbsp;
1615
+ // Backward compatibility type alias
1616
+ export type OracleInfoV0JSON = SingleOracleInfoJSON;
1617
+ &nbsp;</pre></td></tr></table></pre>
1618
+
1619
+ <div class='push'></div><!-- for sticky footer -->
1620
+ </div><!-- /wrapper -->
1621
+ <div class='footer quiet pad2 space-top1 center small'>
1622
+ Code coverage generated by
1623
+ <a href="https://istanbul.js.org/" target="_blank">istanbul</a>
1624
+ at Thu Jun 26 2025 23:34:07 GMT-0700 (Pacific Daylight Saving Time)
1625
+ </div>
1626
+ </div>
1627
+ <script src="../../prettify.js"></script>
1628
+ <script>
1629
+ window.onload = function () {
1630
+ prettyPrint();
1631
+ };
1632
+ </script>
1633
+ <script src="../../sorter.js"></script>
1634
+ <script src="../../block-navigation.js"></script>
1635
+ </body>
1636
+ </html>
1637
+